leiting-bim 2.1.50 → 2.1.53
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/leiting-bim.es.js +1 -1
- package/leiting-bim.umd.js +2 -2
- package/leitingbim.css +1 -1
- package/package.json +1 -1
- package/plugins/cesium-core/dist/cesium-core.mjs +587 -535
- package/plugins/cesium-core/dist/cesium-core.mjs.map +1 -0
- package/plugins/cesium-core/dist/cesium-core.umd.js +19 -18
- package/plugins/cesium-core/dist/cesium-core.umd.js.map +1 -0
- package/plugins/cesium-core/dist/components/BufferedHierarchicalAggregator.d.ts +76 -73
- package/plugins/cesium-vue/dist/_commonjsHelpers-DaMA6jEr.js +1 -0
- package/plugins/cesium-vue/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
- package/plugins/cesium-vue/dist/components/basic-audio.js +3 -2
- package/plugins/cesium-vue/dist/components/basic-audio.js.map +1 -0
- package/plugins/cesium-vue/dist/components/basic-video.js +3 -2
- package/plugins/cesium-vue/dist/components/basic-video.js.map +1 -0
- package/plugins/cesium-vue/dist/components/card-carousel.js +2 -1
- package/plugins/cesium-vue/dist/components/card-carousel.js.map +1 -0
- package/plugins/cesium-vue/dist/components/card-content.js +13 -12
- package/plugins/cesium-vue/dist/components/card-content.js.map +1 -0
- package/plugins/cesium-vue/dist/components/card-page.js +2 -1
- package/plugins/cesium-vue/dist/components/card-page.js.map +1 -0
- package/plugins/cesium-vue/dist/components/carousel-img.js +6 -5
- package/plugins/cesium-vue/dist/components/carousel-img.js.map +1 -0
- package/plugins/cesium-vue/dist/components/echarts-pro.js +2 -1
- package/plugins/cesium-vue/dist/components/echarts-pro.js.map +1 -0
- package/plugins/cesium-vue/dist/components/marker-bubble.js +5 -4
- package/plugins/cesium-vue/dist/components/marker-bubble.js.map +1 -0
- package/plugins/cesium-vue/dist/components/marker-default.js +6 -5
- package/plugins/cesium-vue/dist/components/marker-default.js.map +1 -0
- package/plugins/cesium-vue/dist/components/marker-html.js +6 -5
- package/plugins/cesium-vue/dist/components/marker-html.js.map +1 -0
- package/plugins/cesium-vue/dist/components/marker-manage.js +112 -94
- package/plugins/cesium-vue/dist/components/marker-manage.js.map +1 -0
- package/plugins/cesium-vue/dist/components/marker-text.js +6 -5
- package/plugins/cesium-vue/dist/components/marker-text.js.map +1 -0
- package/plugins/cesium-vue/dist/components/measurement.js +4 -3
- package/plugins/cesium-vue/dist/components/measurement.js.map +1 -0
- package/plugins/cesium-vue/dist/components/position-picker/index.d.ts +58 -0
- package/plugins/cesium-vue/dist/components/position-picker.d.ts +6 -0
- package/plugins/cesium-vue/dist/components/position-picker.js +243 -0
- package/plugins/cesium-vue/dist/components/position-picker.js.map +1 -0
- package/plugins/cesium-vue/dist/create-DynflqE1.js +1 -0
- package/plugins/cesium-vue/dist/create-DynflqE1.js.map +1 -0
- package/plugins/cesium-vue/dist/{index-B03tSn8_.js → index-C0pspk3x.js} +3 -2
- package/plugins/cesium-vue/dist/index-C0pspk3x.js.map +1 -0
- package/plugins/cesium-vue/dist/index-CUs_hd1V.js +1 -0
- package/plugins/cesium-vue/dist/index-CUs_hd1V.js.map +1 -0
- package/plugins/cesium-vue/dist/index.d.ts +3 -1
- package/plugins/cesium-vue/dist/index.js +31 -27
- package/plugins/cesium-vue/dist/index.js.map +1 -0
- package/plugins/cesium-vue/package.json +4 -0
- package/plugins/theme-chalk/dist/debug.log +1 -0
- package/plugins/.gitmodules +0 -4
- package/plugins/README.md +0 -2
- package/plugins/build.cjs +0 -63
- package/plugins/cesium-core/pnpm-lock.yaml +0 -872
- package/plugins/cesium-core/src/components/BufferedHierarchicalAggregator.ts +0 -546
- package/plugins/cesium-core/src/components/HtmlOverlayLabelPool.ts +0 -489
- package/plugins/cesium-core/src/components/MarkerEvent.ts +0 -92
- package/plugins/cesium-core/src/components/Material/MaterialManager.ts +0 -129
- package/plugins/cesium-core/src/components/Material/help/PolylineFlowMaterialProperty.ts +0 -116
- package/plugins/cesium-core/src/components/Material/help/dynamicImgMaterial.ts +0 -236
- package/plugins/cesium-core/src/components/Material/index.ts +0 -3
- package/plugins/cesium-core/src/components/TooltipManager.ts +0 -52
- package/plugins/cesium-core/src/components/draw/DrawTool.ts +0 -55
- package/plugins/cesium-core/src/components/draw/handlers/CircleDrawer.ts +0 -159
- package/plugins/cesium-core/src/components/draw/handlers/LineDrawer.ts +0 -113
- package/plugins/cesium-core/src/components/draw/handlers/PointDrawer.ts +0 -70
- package/plugins/cesium-core/src/components/draw/handlers/PolygonDrawer.ts +0 -112
- package/plugins/cesium-core/src/components/draw/handlers/RectangleDrawer.ts +0 -115
- package/plugins/cesium-core/src/components/draw/types.ts +0 -28
- package/plugins/cesium-core/src/components/entity/EntityLayer.ts +0 -453
- package/plugins/cesium-core/src/components/gltf/GLTFManage.ts +0 -799
- package/plugins/cesium-core/src/components/gltf/index.ts +0 -1
- package/plugins/cesium-core/src/components/measurement/MeasurementTool.ts +0 -416
- package/plugins/cesium-core/src/components/measurement/handlers/AreaMeasure.ts +0 -552
- package/plugins/cesium-core/src/components/measurement/handlers/CircleMeasure.ts +0 -289
- package/plugins/cesium-core/src/components/measurement/handlers/CoordinateMeasure.ts +0 -139
- package/plugins/cesium-core/src/components/measurement/handlers/HorizontalMeasure.ts +0 -427
- package/plugins/cesium-core/src/components/measurement/handlers/PolylineDistanceMeasure.ts +0 -356
- package/plugins/cesium-core/src/components/measurement/handlers/RectangleMeasure.ts +0 -516
- package/plugins/cesium-core/src/components/measurement/handlers/RegularPolygonMeasure.ts +0 -472
- package/plugins/cesium-core/src/components/measurement/handlers/SpaceMeasure.ts +0 -250
- package/plugins/cesium-core/src/components/measurement/handlers/TerrainHeightMeasure.ts +0 -185
- package/plugins/cesium-core/src/components/measurement/handlers/TriangleMeasure.ts +0 -561
- package/plugins/cesium-core/src/components/measurement/handlers/VerticalMeasure.ts +0 -361
- package/plugins/cesium-core/src/components/measurement/index.ts +0 -13
- package/plugins/cesium-core/src/components/measurement/types.ts +0 -57
- package/plugins/cesium-core/src/components/primitive/PrimitiveManager.ts +0 -556
- package/plugins/cesium-core/src/components/roaming/CameraRoamTool.ts +0 -286
- package/plugins/cesium-core/src/components/roaming/PathRoamTool.ts +0 -174
- package/plugins/cesium-core/src/components/roaming/index.ts +0 -3
- package/plugins/cesium-core/src/components/roaming/types.ts +0 -71
- package/plugins/cesium-core/src/components/utils/convertGeoJsonToEntityData.ts +0 -98
- package/plugins/cesium-core/src/components/utils/uuid.ts +0 -7
- package/plugins/cesium-core/src/index.ts +0 -17
- package/plugins/cesium-core/src/test/measurement/index.html +0 -166
- package/plugins/cesium-core/src/test/roaming/c.gltf +0 -1
- package/plugins/cesium-core/src/test/roaming/f87cc3ea918a4b76bff2c88a3655eb1f.bin +0 -0
- package/plugins/cesium-core/src/test/roaming/index.html +0 -51
- package/plugins/cesium-core/src/test/roaming/path.html +0 -448
- package/plugins/cesium-core/src/test/roaming/view.html +0 -520
- package/plugins/cesium-core/stats.html +0 -4949
- package/plugins/cesium-core/tsconfig.json +0 -14
- package/plugins/cesium-core/vite.config.ts +0 -35
- package/plugins/cesium-vue/src/assets/icons/icon-001.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-002.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-003.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-004.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-005.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-006.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-007.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-008.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-009.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-010.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-011.png +0 -0
- package/plugins/cesium-vue/src/assets/icons/icon-012.png +0 -0
- package/plugins/cesium-vue/src/assets/img/Card3-BG.png +0 -0
- package/plugins/cesium-vue/src/assets/img/card_bg3.png +0 -0
- package/plugins/cesium-vue/src/components/basic-audio/index.ts +0 -6
- package/plugins/cesium-vue/src/components/basic-audio/src/BasicAudio.vue +0 -119
- package/plugins/cesium-vue/src/components/basic-audio/src/basicAudio.ts +0 -6
- package/plugins/cesium-vue/src/components/basic-video/index.ts +0 -7
- package/plugins/cesium-vue/src/components/basic-video/src/BasicVideo.vue +0 -58
- package/plugins/cesium-vue/src/components/basic-video/src/basicVideo.ts +0 -14
- package/plugins/cesium-vue/src/components/card-carousel/index.ts +0 -7
- package/plugins/cesium-vue/src/components/card-carousel/src/CardCarousel.vue +0 -124
- package/plugins/cesium-vue/src/components/card-carousel/src/cardCarousel.ts +0 -60
- package/plugins/cesium-vue/src/components/card-content/index.ts +0 -7
- package/plugins/cesium-vue/src/components/card-content/src/CardContent.vue +0 -41
- package/plugins/cesium-vue/src/components/card-content/src/cardContent.ts +0 -22
- package/plugins/cesium-vue/src/components/card-page/index.ts +0 -7
- package/plugins/cesium-vue/src/components/card-page/src/CardPage.vue +0 -102
- package/plugins/cesium-vue/src/components/card-page/src/cardPage.ts +0 -37
- package/plugins/cesium-vue/src/components/carousel-img/index.ts +0 -7
- package/plugins/cesium-vue/src/components/carousel-img/src/CarouselImg.vue +0 -84
- package/plugins/cesium-vue/src/components/carousel-img/src/carouselImg.ts +0 -8
- package/plugins/cesium-vue/src/components/echarts-pro/index.ts +0 -7
- package/plugins/cesium-vue/src/components/echarts-pro/src/EchartsPro.vue +0 -107
- package/plugins/cesium-vue/src/components/echarts-pro/src/echartsPro.ts +0 -12
- package/plugins/cesium-vue/src/components/echarts-pro/src/hook/useECharts.ts +0 -55
- package/plugins/cesium-vue/src/components/marker-bubble/index.ts +0 -7
- package/plugins/cesium-vue/src/components/marker-bubble/src/MarkerBubble.vue +0 -235
- package/plugins/cesium-vue/src/components/marker-bubble/src/markerBubble.ts +0 -35
- package/plugins/cesium-vue/src/components/marker-default/index.ts +0 -7
- package/plugins/cesium-vue/src/components/marker-default/src/MarkerDefault.vue +0 -19
- package/plugins/cesium-vue/src/components/marker-default/src/markerDefault.ts +0 -12
- package/plugins/cesium-vue/src/components/marker-html/index.ts +0 -7
- package/plugins/cesium-vue/src/components/marker-html/src/MarkerHtml.vue +0 -21
- package/plugins/cesium-vue/src/components/marker-html/src/markerHtml.ts +0 -12
- package/plugins/cesium-vue/src/components/marker-manage/index.ts +0 -9
- package/plugins/cesium-vue/src/components/marker-manage/src/components/MarkerManage.vue +0 -106
- package/plugins/cesium-vue/src/components/marker-manage/src/config/theme.ts +0 -8
- package/plugins/cesium-vue/src/components/marker-manage/src/core/MarkerManage.ts +0 -466
- package/plugins/cesium-vue/src/components/marker-manage/src/core/MarkerManagerCore.ts +0 -148
- package/plugins/cesium-vue/src/components/marker-manage/src/hook/useMarkerManage.ts +0 -45
- package/plugins/cesium-vue/src/components/marker-manage/src/type/markerManage.ts +0 -75
- package/plugins/cesium-vue/src/components/marker-manage/src/utils/themeTool.ts +0 -154
- package/plugins/cesium-vue/src/components/marker-text/index.ts +0 -7
- package/plugins/cesium-vue/src/components/marker-text/src/MarkerText.vue +0 -14
- package/plugins/cesium-vue/src/components/marker-text/src/markerText.ts +0 -10
- package/plugins/cesium-vue/src/components/measurement/index.ts +0 -7
- package/plugins/cesium-vue/src/components/measurement/src/Measurement.vue +0 -183
- package/plugins/cesium-vue/src/components/measurement/src/measurement.ts +0 -20
- package/plugins/cesium-vue/src/index.ts +0 -89
- package/plugins/cesium-vue/stats.html +0 -4949
- package/plugins/cesium-vue/tsconfig.json +0 -18
- package/plugins/cesium-vue/vite.config.ts +0 -62
- package/plugins/plugins/README.md +0 -2
- package/plugins/plugins/build.cjs +0 -63
- package/plugins/plugins/cesium-core/dist/cesium-core.mjs +0 -5881
- package/plugins/plugins/cesium-core/dist/cesium-core.mjs.map +0 -1
- package/plugins/plugins/cesium-core/dist/cesium-core.umd.js +0 -77
- package/plugins/plugins/cesium-core/dist/cesium-core.umd.js.map +0 -1
- package/plugins/plugins/cesium-core/dist/components/BufferedHierarchicalAggregator.d.ts +0 -73
- package/plugins/plugins/cesium-core/dist/components/HtmlOverlayLabelPool.d.ts +0 -152
- package/plugins/plugins/cesium-core/dist/components/MarkerEvent.d.ts +0 -38
- package/plugins/plugins/cesium-core/dist/components/Material/MaterialManager.d.ts +0 -49
- package/plugins/plugins/cesium-core/dist/components/Material/help/PolylineFlowMaterialProperty.d.ts +0 -10
- package/plugins/plugins/cesium-core/dist/components/Material/help/dynamicImgMaterial.d.ts +0 -16
- package/plugins/plugins/cesium-core/dist/components/Material/index.d.ts +0 -3
- package/plugins/plugins/cesium-core/dist/components/TooltipManager.d.ts +0 -11
- package/plugins/plugins/cesium-core/dist/components/draw/DrawTool.d.ts +0 -10
- package/plugins/plugins/cesium-core/dist/components/draw/handlers/CircleDrawer.d.ts +0 -16
- package/plugins/plugins/cesium-core/dist/components/draw/handlers/LineDrawer.d.ts +0 -14
- package/plugins/plugins/cesium-core/dist/components/draw/handlers/PointDrawer.d.ts +0 -12
- package/plugins/plugins/cesium-core/dist/components/draw/handlers/PolygonDrawer.d.ts +0 -14
- package/plugins/plugins/cesium-core/dist/components/draw/handlers/RectangleDrawer.d.ts +0 -13
- package/plugins/plugins/cesium-core/dist/components/draw/types.d.ts +0 -29
- package/plugins/plugins/cesium-core/dist/components/entity/EntityLayer.d.ts +0 -65
- package/plugins/plugins/cesium-core/dist/components/gltf/GLTFManage.d.ts +0 -141
- package/plugins/plugins/cesium-core/dist/components/gltf/index.d.ts +0 -1
- package/plugins/plugins/cesium-core/dist/components/measurement/MeasurementTool.d.ts +0 -34
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/AreaMeasure.d.ts +0 -23
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/CircleMeasure.d.ts +0 -21
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/CoordinateMeasure.d.ts +0 -16
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/HorizontalMeasure.d.ts +0 -25
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/PolylineDistanceMeasure.d.ts +0 -24
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/RectangleMeasure.d.ts +0 -22
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/RegularPolygonMeasure.d.ts +0 -23
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/SpaceMeasure.d.ts +0 -20
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/TerrainHeightMeasure.d.ts +0 -18
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/TriangleMeasure.d.ts +0 -24
- package/plugins/plugins/cesium-core/dist/components/measurement/handlers/VerticalMeasure.d.ts +0 -23
- package/plugins/plugins/cesium-core/dist/components/measurement/index.d.ts +0 -13
- package/plugins/plugins/cesium-core/dist/components/measurement/types.d.ts +0 -42
- package/plugins/plugins/cesium-core/dist/components/primitive/PrimitiveManager.d.ts +0 -50
- package/plugins/plugins/cesium-core/dist/components/roaming/CameraRoamTool.d.ts +0 -27
- package/plugins/plugins/cesium-core/dist/components/roaming/PathRoamTool.d.ts +0 -23
- package/plugins/plugins/cesium-core/dist/components/roaming/index.d.ts +0 -3
- package/plugins/plugins/cesium-core/dist/components/roaming/types.d.ts +0 -66
- package/plugins/plugins/cesium-core/dist/components/utils/convertGeoJsonToEntityData.d.ts +0 -1
- package/plugins/plugins/cesium-core/dist/components/utils/uuid.d.ts +0 -1
- package/plugins/plugins/cesium-core/dist/index.d.ts +0 -12
- package/plugins/plugins/cesium-core/package.json +0 -26
- package/plugins/plugins/cesium-core/pnpm-lock.yaml +0 -872
- package/plugins/plugins/cesium-core/src/components/BufferedHierarchicalAggregator.ts +0 -546
- package/plugins/plugins/cesium-core/src/components/HtmlOverlayLabelPool.ts +0 -489
- package/plugins/plugins/cesium-core/src/components/MarkerEvent.ts +0 -92
- package/plugins/plugins/cesium-core/src/components/Material/MaterialManager.ts +0 -129
- package/plugins/plugins/cesium-core/src/components/Material/help/PolylineFlowMaterialProperty.ts +0 -116
- package/plugins/plugins/cesium-core/src/components/Material/help/dynamicImgMaterial.ts +0 -236
- package/plugins/plugins/cesium-core/src/components/Material/index.ts +0 -3
- package/plugins/plugins/cesium-core/src/components/TooltipManager.ts +0 -52
- package/plugins/plugins/cesium-core/src/components/draw/DrawTool.ts +0 -55
- package/plugins/plugins/cesium-core/src/components/draw/handlers/CircleDrawer.ts +0 -159
- package/plugins/plugins/cesium-core/src/components/draw/handlers/LineDrawer.ts +0 -113
- package/plugins/plugins/cesium-core/src/components/draw/handlers/PointDrawer.ts +0 -70
- package/plugins/plugins/cesium-core/src/components/draw/handlers/PolygonDrawer.ts +0 -112
- package/plugins/plugins/cesium-core/src/components/draw/handlers/RectangleDrawer.ts +0 -115
- package/plugins/plugins/cesium-core/src/components/draw/types.ts +0 -28
- package/plugins/plugins/cesium-core/src/components/entity/EntityLayer.ts +0 -453
- package/plugins/plugins/cesium-core/src/components/gltf/GLTFManage.ts +0 -799
- package/plugins/plugins/cesium-core/src/components/gltf/index.ts +0 -1
- package/plugins/plugins/cesium-core/src/components/measurement/MeasurementTool.ts +0 -416
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/AreaMeasure.ts +0 -451
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/CircleMeasure.ts +0 -267
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/CoordinateMeasure.ts +0 -139
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/HorizontalMeasure.ts +0 -418
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/PolylineDistanceMeasure.ts +0 -352
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/RectangleMeasure.ts +0 -388
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/RegularPolygonMeasure.ts +0 -379
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/SpaceMeasure.ts +0 -246
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/TerrainHeightMeasure.ts +0 -185
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/TriangleMeasure.ts +0 -541
- package/plugins/plugins/cesium-core/src/components/measurement/handlers/VerticalMeasure.ts +0 -360
- package/plugins/plugins/cesium-core/src/components/measurement/index.ts +0 -13
- package/plugins/plugins/cesium-core/src/components/measurement/types.ts +0 -57
- package/plugins/plugins/cesium-core/src/components/primitive/PrimitiveManager.ts +0 -556
- package/plugins/plugins/cesium-core/src/components/roaming/CameraRoamTool.ts +0 -286
- package/plugins/plugins/cesium-core/src/components/roaming/PathRoamTool.ts +0 -174
- package/plugins/plugins/cesium-core/src/components/roaming/index.ts +0 -3
- package/plugins/plugins/cesium-core/src/components/roaming/types.ts +0 -71
- package/plugins/plugins/cesium-core/src/components/utils/convertGeoJsonToEntityData.ts +0 -98
- package/plugins/plugins/cesium-core/src/components/utils/uuid.ts +0 -7
- package/plugins/plugins/cesium-core/src/index.ts +0 -17
- package/plugins/plugins/cesium-core/src/test/measurement/index.html +0 -166
- package/plugins/plugins/cesium-core/src/test/roaming/c.gltf +0 -1
- package/plugins/plugins/cesium-core/src/test/roaming/f87cc3ea918a4b76bff2c88a3655eb1f.bin +0 -0
- package/plugins/plugins/cesium-core/src/test/roaming/index.html +0 -51
- package/plugins/plugins/cesium-core/src/test/roaming/path.html +0 -448
- package/plugins/plugins/cesium-core/src/test/roaming/view.html +0 -520
- package/plugins/plugins/cesium-core/stats.html +0 -4949
- package/plugins/plugins/cesium-core/tsconfig.json +0 -14
- package/plugins/plugins/cesium-core/vite.config.ts +0 -35
- package/plugins/plugins/cesium-vue/dist/components/basic-audio/index.d.ts +0 -18
- package/plugins/plugins/cesium-vue/dist/components/basic-audio/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/basic-video/index.d.ts +0 -92
- package/plugins/plugins/cesium-vue/dist/components/basic-video/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/camera-roam/index.d.ts +0 -82
- package/plugins/plugins/cesium-vue/dist/components/camera-roam/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/card-carousel/index.d.ts +0 -152
- package/plugins/plugins/cesium-vue/dist/components/card-carousel/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/card-content/index.d.ts +0 -21
- package/plugins/plugins/cesium-vue/dist/components/card-content/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/card-page/index.d.ts +0 -69
- package/plugins/plugins/cesium-vue/dist/components/card-page/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/carousel-img/index.d.ts +0 -21
- package/plugins/plugins/cesium-vue/dist/components/carousel-img/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/echarts-pro/index.d.ts +0 -68
- package/plugins/plugins/cesium-vue/dist/components/echarts-pro/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/marker-bubble/index.d.ts +0 -78
- package/plugins/plugins/cesium-vue/dist/components/marker-bubble/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/marker-default/index.d.ts +0 -48
- package/plugins/plugins/cesium-vue/dist/components/marker-default/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/marker-html/index.d.ts +0 -48
- package/plugins/plugins/cesium-vue/dist/components/marker-html/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/marker-manage/index.d.ts +0 -164
- package/plugins/plugins/cesium-vue/dist/components/marker-manage/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/marker-text/index.d.ts +0 -30
- package/plugins/plugins/cesium-vue/dist/components/marker-text/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/measurement/index.d.ts +0 -78
- package/plugins/plugins/cesium-vue/dist/components/measurement/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/path-roam/index.d.ts +0 -82
- package/plugins/plugins/cesium-vue/dist/components/path-roam/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/components/test/index.d.ts +0 -67
- package/plugins/plugins/cesium-vue/dist/components/test/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/index.css +0 -1
- package/plugins/plugins/cesium-vue/dist/index.d.ts +0 -30
- package/plugins/plugins/cesium-vue/dist/index.d.ts.map +0 -1
- package/plugins/plugins/cesium-vue/dist/index.js +0 -10087
- package/plugins/plugins/cesium-vue/dist/index.js.map +0 -1
- package/plugins/plugins/cesium-vue/dist/index.umd.cjs +0 -46
- package/plugins/plugins/cesium-vue/dist/index.umd.cjs.map +0 -1
- package/plugins/plugins/cesium-vue/package.json +0 -48
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-001.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-002.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-003.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-004.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-005.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-006.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-007.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-008.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-009.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-010.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-011.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/icons/icon-012.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/img/Card3-BG.png +0 -0
- package/plugins/plugins/cesium-vue/src/assets/img/card_bg3.png +0 -0
- package/plugins/plugins/cesium-vue/src/components/basic-audio/index.ts +0 -11
- package/plugins/plugins/cesium-vue/src/components/basic-audio/src/BasicAudio.vue +0 -110
- package/plugins/plugins/cesium-vue/src/components/basic-audio/src/basicAudio.ts +0 -6
- package/plugins/plugins/cesium-vue/src/components/basic-video/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/basic-video/src/BasicVideo.vue +0 -99
- package/plugins/plugins/cesium-vue/src/components/basic-video/src/basicVideo.ts +0 -13
- package/plugins/plugins/cesium-vue/src/components/camera-roam/index.ts +0 -4
- package/plugins/plugins/cesium-vue/src/components/camera-roam/src/CameraRoam.vue +0 -434
- package/plugins/plugins/cesium-vue/src/components/camera-roam/src/cameraRoam.ts +0 -28
- package/plugins/plugins/cesium-vue/src/components/card-carousel/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/card-carousel/src/CardCarousel.vue +0 -124
- package/plugins/plugins/cesium-vue/src/components/card-carousel/src/cardCarousel.ts +0 -60
- package/plugins/plugins/cesium-vue/src/components/card-content/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/card-content/src/CardContent.vue +0 -41
- package/plugins/plugins/cesium-vue/src/components/card-content/src/cardContent.ts +0 -22
- package/plugins/plugins/cesium-vue/src/components/card-page/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/card-page/src/CardPage.vue +0 -102
- package/plugins/plugins/cesium-vue/src/components/card-page/src/cardPage.ts +0 -37
- package/plugins/plugins/cesium-vue/src/components/carousel-img/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/carousel-img/src/CarouselImg.vue +0 -15
- package/plugins/plugins/cesium-vue/src/components/carousel-img/src/carouselImg.ts +0 -6
- package/plugins/plugins/cesium-vue/src/components/echarts-pro/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/echarts-pro/src/EchartsPro.vue +0 -107
- package/plugins/plugins/cesium-vue/src/components/echarts-pro/src/echartsPro.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/echarts-pro/src/hook/useECharts.ts +0 -55
- package/plugins/plugins/cesium-vue/src/components/marker-bubble/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/marker-bubble/src/MarkerBubble.vue +0 -235
- package/plugins/plugins/cesium-vue/src/components/marker-bubble/src/markerBubble.ts +0 -35
- package/plugins/plugins/cesium-vue/src/components/marker-default/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/marker-default/src/MarkerDefault.vue +0 -19
- package/plugins/plugins/cesium-vue/src/components/marker-default/src/markerDefault.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/marker-html/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/marker-html/src/MarkerHtml.vue +0 -21
- package/plugins/plugins/cesium-vue/src/components/marker-html/src/markerHtml.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/marker-manage/index.ts +0 -14
- package/plugins/plugins/cesium-vue/src/components/marker-manage/src/components/MarkerManage.vue +0 -106
- package/plugins/plugins/cesium-vue/src/components/marker-manage/src/config/theme.ts +0 -8
- package/plugins/plugins/cesium-vue/src/components/marker-manage/src/core/MarkerManage.ts +0 -466
- package/plugins/plugins/cesium-vue/src/components/marker-manage/src/core/MarkerManagerCore.ts +0 -148
- package/plugins/plugins/cesium-vue/src/components/marker-manage/src/hook/useMarkerManage.ts +0 -45
- package/plugins/plugins/cesium-vue/src/components/marker-manage/src/type/markerManage.ts +0 -75
- package/plugins/plugins/cesium-vue/src/components/marker-manage/src/utils/themeTool.ts +0 -154
- package/plugins/plugins/cesium-vue/src/components/marker-text/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/marker-text/src/MarkerText.vue +0 -14
- package/plugins/plugins/cesium-vue/src/components/marker-text/src/markerText.ts +0 -10
- package/plugins/plugins/cesium-vue/src/components/measurement/index.ts +0 -12
- package/plugins/plugins/cesium-vue/src/components/measurement/src/Measurement.vue +0 -183
- package/plugins/plugins/cesium-vue/src/components/measurement/src/measurement.ts +0 -20
- package/plugins/plugins/cesium-vue/src/components/path-roam/index.ts +0 -4
- package/plugins/plugins/cesium-vue/src/components/path-roam/src/PathRoam.vue +0 -429
- package/plugins/plugins/cesium-vue/src/components/path-roam/src/pathRoam.ts +0 -28
- package/plugins/plugins/cesium-vue/src/components/test/CardMarker.vue +0 -150
- package/plugins/plugins/cesium-vue/src/components/test/CesiumMarker.vue +0 -34
- package/plugins/plugins/cesium-vue/src/components/test/CesiumViewer.vue +0 -77
- package/plugins/plugins/cesium-vue/src/components/test/MyLabel.vue +0 -25
- package/plugins/plugins/cesium-vue/src/components/test/index.ts +0 -28
- package/plugins/plugins/cesium-vue/src/index.ts +0 -83
- package/plugins/plugins/cesium-vue/stats.html +0 -4949
- package/plugins/plugins/cesium-vue/tsconfig.json +0 -18
- package/plugins/plugins/cesium-vue/vite.config.ts +0 -56
- package/plugins/plugins/theme-chalk/dist/theme-chalk.css +0 -819
- package/plugins/plugins/theme-chalk/index.less +0 -11
- package/plugins/plugins/theme-chalk/package.json +0 -27
- package/plugins/plugins/theme-chalk/src/basicAudio.less +0 -41
- package/plugins/plugins/theme-chalk/src/basicVideo.less +0 -17
- package/plugins/plugins/theme-chalk/src/cameraRoam.less +0 -239
- package/plugins/plugins/theme-chalk/src/cardCarousel.less +0 -71
- package/plugins/plugins/theme-chalk/src/cardContent.less +0 -73
- package/plugins/plugins/theme-chalk/src/cardPage.less +0 -61
- package/plugins/plugins/theme-chalk/src/carouselImg.less +0 -34
- package/plugins/plugins/theme-chalk/src/marker.less +0 -107
- package/plugins/plugins/theme-chalk/src/markerManage.less +0 -25
- package/plugins/plugins/theme-chalk/src/measurement.less +0 -106
- package/plugins/plugins/theme-chalk/src/mixins/config.less +0 -4
- package/plugins/plugins/theme-chalk/src/mixins/mixins.less +0 -64
- package/plugins/plugins/theme-chalk/src/pathRoam.less +0 -198
- package/plugins/plugins/utils/create.ts +0 -45
- package/plugins/plugins/utils/package.json +0 -12
- package/plugins/plugins/utils/uuid.ts +0 -43
- package/plugins/plugins/utils/with-install.ts +0 -10
- package/plugins/theme-chalk/index.less +0 -11
- package/plugins/theme-chalk/src/basicAudio.less +0 -44
- package/plugins/theme-chalk/src/basicVideo.less +0 -17
- package/plugins/theme-chalk/src/cameraRoam.less +0 -239
- package/plugins/theme-chalk/src/cardCarousel.less +0 -71
- package/plugins/theme-chalk/src/cardContent.less +0 -73
- package/plugins/theme-chalk/src/cardPage.less +0 -61
- package/plugins/theme-chalk/src/carouselImg.less +0 -66
- package/plugins/theme-chalk/src/marker.less +0 -107
- package/plugins/theme-chalk/src/markerManage.less +0 -25
- package/plugins/theme-chalk/src/measurement.less +0 -106
- package/plugins/theme-chalk/src/mixins/config.less +0 -4
- package/plugins/theme-chalk/src/mixins/mixins.less +0 -64
- package/plugins/theme-chalk/src/pathRoam.less +0 -198
package/leiting-bim.umd.js
CHANGED
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
from { transform: rotate(0deg); }
|
|
79
79
|
to { transform: rotate(360deg); }
|
|
80
80
|
}
|
|
81
|
-
`;pi=document.createElement("style"),pi.textContent=n,document.head.appendChild(pi)}function xg(){if(Da)return;Ig(),Te=document.createElement("div"),Te.className="tech-alert-wrapper",document.body.appendChild(Te);const n={setup(){return()=>Ee.visible?d.h(me.Alert,{class:`tech-alert tech-alert-${Ee.type}`,message:Ee.title,description:Ee.description,showIcon:Ee.showIcon,closable:Ee.closable,onClose:()=>{Ee.visible=!1}},{icon:()=>Ee.type==="loading"?d.h(pn.LoadingOutlined):Ee.type==="success"?d.h(pn.CheckCircleOutlined):Ee.type==="error"?d.h(pn.CloseCircleOutlined):Ee.type==="warning"?d.h(pn.ExclamationCircleOutlined):d.h(pn.InfoCircleOutlined)}):null}};Ta=d.createVNode(n),d.render(Ta,Te),Da=!0}function Bn(n){xg(),Ls&&clearTimeout(Ls),Ee.type=n.type||"info",Ee.title=n.title||"",Ee.description=n.description||"",Ee.closable=n.closable??!1,Ee.showIcon=n.showIcon??!0,Ee.visible=!0,Te&&(n.container?(Te.parentNode!==n.container&&n.container.appendChild(Te),Te.style.position="absolute",Te.style.top="20px",Te.style.left="50%",Te.style.transform="translateX(-50%)"):(Te.parentNode!==document.body&&document.body.appendChild(Te),Te.style.position="fixed",Te.style.top="20px",Te.style.left="50%",Te.style.transform="translateX(-50%)"));const e=n.duration??(Ee.type==="loading"?0:3);e>0&&(Ls=setTimeout(()=>{Ee.visible=!1},e*1e3))}const ge={info:(n,e,t,i)=>Bn({type:"info",title:n,description:e,duration:t,container:i}),success:(n,e,t,i)=>Bn({type:"success",title:n,description:e,duration:t,container:i}),error:(n,e,t,i)=>Bn({type:"error",title:n,description:e,duration:t,container:i}),warning:(n,e,t,i)=>Bn({type:"warning",title:n,description:e,duration:t,container:i}),loading:(n,e,t)=>Bn({type:"loading",title:n,description:e,duration:0,container:t}),close:()=>{Ee.visible=!1}},Bg="E84#E3C4!8C4&A1";async function mt(n){try{const e=await fetch(n);if(!e.ok)return ge.error("[loadModelFile] 加载失败",`${n} ${e.status}`),!1;const t=await e.blob();try{const i=new wa(new Ts(t),{password:Bg}),o=(await i.getEntries()).find(l=>!l.directory&&l.filename.endsWith(".json"));if(!o)return await i.close(),!1;const r=await o.getData(new Sp);return await i.close(),JSON.parse(r.trim())}catch{const i=await t.text();try{return JSON.parse(i.trim())}catch(s){throw console.error(`[loadModelFile] JSON parse error: ${n}`,s),s}}}catch(e){return ge.error("[loadModelFile] 加载失败",`${n} ${e}`),!1}}async function Sg(n){if(!n)return null;try{const e=`/st/modelComponentTree/list?dbName=${encodeURIComponent(n)}`,t=await fetch(e);if(!t.ok)return console.warn(`[loadTreeFromApi] API 请求失败: ${e} ${t.status}`),null;const i=await t.json();return Array.isArray(i)?Mg(i):(console.warn("[loadTreeFromApi] API 返回格式错误: 期望数组",i),null)}catch(e){return console.error("[loadTreeFromApi] 加载异常:",e),null}}function Mg(n){const e={},t=[];return n.forEach(i=>{i.id&&(e[i.id]={...i,children:[]})}),n.forEach(i=>{if(!i.id)return;const s=e[i.id];if(!s)return;const o=i.parentId;o&&e[o]?e[o].children?.push(s):t.push(s)}),t}async function Tg(n){if(!n||n.length===0)return null;try{const e=await fetch("/bim/modelComponent/listByDbNameAndElementId",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});return e.ok?await e.json():(console.warn(`[fetchComponentDetails] API 请求失败: ${e.status}`),null)}catch(e){return console.error("[fetchComponentDetails] 加载异常:",e),null}}function Dg(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){const e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}class gi{events={};on(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t)}emit(e,...t){this.events[e]&&this.events[e].forEach(i=>i(...t))}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(i=>i!==t))}}class ka{cesium;viewer;modelList=[];hasLoaded3dTiles={};mapRecordModelId={};mapTileset={};BIMmodelId="";lazyLoadingCount=0;events=new gi;options={flyTo:!0,flyToDuration:0,loadTreeNodeDetails:!0,loadTreeNodeDetailsUrl:"/elementInfo.zip",loadTree:!0,loadTreeUrl:"/allElementsInfo.zip",boxRegionUrl:"/BoundingBoxInfo.zip",regionUrl:"/region.zip",batchIDInfoUrl:"/batchIDInfo.zip",enabledSection:!0,delay:0,tilesetOptions:{cullWithChildrenBounds:!0,cullRequestsWhileMoving:!0,cullRequestsWhileMovingMultiplier:10,backFaceCulling:!0,colorBlendAmount:0,minimumPixelSize:128,maximumScreenSpaceError:32,skipLevelOfDetail:!0,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:128,skipLevels:5,immediatelyLoadDesiredLevelOfDetail:!1,loadSiblings:!1,maximumMemoryUsage:4096*10,preloadWhenHidden:!0,preferLeaves:!0,progressiveResolutionHeightFraction:.5,dynamicScreenSpaceErrorDensity:.002,dynamicScreenSpaceErrorFactor:4,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorHeightFalloff:.25,foveatedConeSize:0,foveatedTimeDelay:10,foveatedMinimumScreenSpaceErrorRelaxation:0}};constructor(e){this.cesium=e.cesium,this.viewer=e.viewer,this.options.tilesetOptions&&(this.options.tilesetOptions.colorBlendMode=this.cesium.Cesium3DTileColorBlendMode.REPLACE)}deleteAllModels(){const e=[];return Object.keys(this.mapTileset).forEach(t=>{const i=this.mapTileset[t];i&&(this.viewer.scene.primitives.remove(i),e.push(t)),delete this.mapTileset[t],delete this.hasLoaded3dTiles[t],delete this.mapRecordModelId[t]}),this.modelList=[],this.viewer.scene.requestRender(),this.events.emit("mountAll3Dtiles",{modelList:[],mapTileset:{}}),e}deleteModels(e){const t=[];return e.forEach(({modelId:i})=>{const s=this.mapTileset[i];s&&(this.viewer.scene.primitives.remove(s),t.push(i)),delete this.mapTileset[i],delete this.hasLoaded3dTiles[i],delete this.mapRecordModelId[i]}),this.modelList=this.modelList.filter(i=>!t.includes(i.modelId)),this.viewer.scene.requestRender(),this.events.emit("mountAll3Dtiles",{modelList:this.modelList,mapTileset:this.mapTileset}),t}showModels(e){const t=[];return e.forEach(i=>{const s=`${i.modelId}`,o=this.mapTileset[s];o&&(o.show=!!i.show,t.push(s))}),t.length&&this.viewer.scene.requestRender(),t}async addModels({files:e,fileNames:t,options:i}){const s=e||t||[];s.length>0&&await this.add3DTilesModel(s,i)}async add3DTilesModel(e,t){const i=t?Kh({},this.options,t):{...this.options};if(e?.length){for(const s of e){const o=`${s.modelId}`;if(this.mapRecordModelId[o])continue;const r=`${s.outPutPath}${s.dbName}/tileset.json`;this.modelList.push({...s,url:r,state:Kt.NotLoaded}),this.mapRecordModelId[o]=!1}await this.load3DTilesModel(i)}}async load3DTilesModel(e){const t=this.modelList.filter(r=>r.state===Kt.NotLoaded);if(!t.length)return;const i=t.length;this.events.emit("loadingStatus",`正在加载 ${i} 个模型`);let s=0,o=!1;for(const r of t){s++;try{r.state=Kt.Loading;const l=r.url,a=this.getBaseUrlPath(l);e.loadTreeNodeDetails=!1,e.loadTreeNodeDetails&&this.events.emit("loadingStatus",`正在加载第 ${s}/${i} 个模型: 加载${r.modelName}构件信息`);let c=e.loadTreeNodeDetails?await mt(`${a}${e.loadTreeNodeDetailsUrl}`):!1;e.loadTree=!1,e.loadTree&&this.events.emit("loadingStatus",`正在加载第 ${s}/${i} 个模型: 加载${r.modelName}目录树`);const u=e.loadTree?await mt(`${a}${e.loadTreeUrl}`):!1;this.events.emit("loadingStatus",`正在加载第 ${s}/${i} 个模型: 加载${r.modelName}模型数据`);const h=e.boxRegionUrl?await mt(`${a}${e.boxRegionUrl}`):!1,f=e.batchIDInfoUrl?await mt(`${a}${e.batchIDInfoUrl}`):!1;f&&(c||(c=f));const p=await this.loadTilesetWithZipSupport(l,r.modelId,e.tilesetOptions||{},this.cesium);this.viewer.scene.primitives.add(p),await p.readyPromise;const A=`${p?.asset?.tilesetVersion??r.modelId}`;this.mapTileset[`${r.modelId}`]=p;const C={versionId:A,selectedFn:e.selectedFn,model:{modelId:r.modelId,modelName:r.modelName,dbName:r.dbName,fileType:r.fileType,outPutPath:r.outPutPath,url:r.url,treeUrl:`${a}${e.loadTreeUrl}`,nodeUrl:`${a}${e.loadTreeNodeDetailsUrl}`,formData:r.formData,type:"BIM"},node:c||null,tree:u||null,box:null};if(h?.min&&h?.max){const m={x:h.min.X,y:h.min.Y,z:h.min.Z},y={x:h.max.X,y:h.max.Y,z:h.max.Z},E={x:(m.x+y.x)/2,y:(m.y+y.y)/2,z:(m.z+y.z)/2};C.box={min:m,max:y,center:E}}if(!r.formData){const m=await mt(`${r.outPutPath}${r.dbName}${e.regionUrl}`);if(m)r.formData={modelId:r.modelId.toString(),longitude:m.Longitude,latitude:m.Latitude,distance:1e-6,rotation:30,totalRotation:m.DAngle||0,height:m.MinHeight,lonlat:1e-5,heightDistance:1,modelOptions:[{value:r.modelId.toString(),label:r.modelName}],X:m?.X||0,Y:m?.Y||0,Z:m?.Z||0};else{const y=t.indexOf(r);r.formData={modelId:r.modelId.toString(),longitude:118.12548706388897,latitude:24.596796919444404,distance:1e-5,rotation:0,totalRotation:0,heightDistance:1,height:0,lonlat:1e-5,modelOptions:[{value:y+1,label:r.modelName}],X:0,Y:0,Z:0}}}r.formData&&(r.formData.heightDistance=r.formData.heightDistance??1,C.model.formData=r.formData),p.leiting=C,dr({Cesium:this.cesium,tileset:p}),r.state=Kt.Loaded,this.mapRecordModelId[r.modelId]=!0,this.events.emit("tilesetLoaded",p),e.tilesLoad3dTiles&&e.tilesLoad3dTiles(p),!o&&e.flyTo&&(this.BIMmodelId=r.modelId,this.flyToTileset({modelId:this.BIMmodelId,options:{duration:e.flyToDuration??0}}),o=!0),e.delay&&await new Promise(m=>setTimeout(m,e.delay))}catch(l){console.error(`模型 ${r.modelName} 加载失败:`,l),this.events.emit("loadingStatus",`模型 ${r.modelName} 加载失败`),r.state=Kt.Error}}e.mountAll3Dtiles&&e.mountAll3Dtiles(this.modelList),e.onMountAll3Dtiles&&e.onMountAll3Dtiles(this.modelList),this.events.emit("loadingStatus",""),this.events.emit("mountAll3Dtiles",{modelList:this.modelList,mapTileset:this.mapTileset})}async addOSGB({files:e,options:t}){const i=this.cesium;if(!e?.length)return;this.events.emit("loadingStatus",`正在加载 ${e.length} 个倾斜摄影模型`);let s=!1,o=0;for(const r of e){o++,this.events.emit("loadingStatus",`正在加载第 ${o}/${e.length} 个模型: 加载${r.modelName}`);try{const{outPutPath:l,dbName:a,modelId:c}=r,u=`${l}${a}/tileset.json`,h=await i.Cesium3DTileset.fromUrl(u,{maximumScreenSpaceError:16,preferLeaves:!0,cullWithChildrenBounds:!0,...t?.tilesetOptions});if(this.viewer.scene.primitives.add(h),await h.readyPromise,this.mapTileset[`${c}`]=h,this.hasLoaded3dTiles[`${c}`]=(this.hasLoaded3dTiles[`${c}`]||0)+1,this.mapRecordModelId[`${c}`]=!0,!r?.formData){const f=h.root.computedTransform;if(f){const p=i.Matrix4.fromColumnMajorArray(f),A=i.Matrix4.getTranslation(p,new i.Cartesian3),C=i.Ellipsoid.WGS84.cartesianToCartographic(A),m=i.Math.toDegrees(C.longitude),y=i.Math.toDegrees(C.latitude),E=C.height;r.formData={modelId:r.modelId.toString(),longitude:m,latitude:y,distance:1e-5,rotation:0,totalRotation:0,heightDistance:1,height:E,lonlat:1e-5,modelOptions:[{value:r.modelId.toString(),label:r.modelName}],X:0,Y:0,Z:0}}else console.warn(`OSGB模型 ${c} 无法获取初始位置信息`)}r.formData&&(r.formData.heightDistance=r.formData.heightDistance??1),h.leiting={versionId:`${h?.asset?.tilesetVersion??c}`,selectedFn:t?.selectedFn,model:{modelId:r.modelId,modelName:r.modelName,dbName:r.dbName,fileType:r.fileType,outPutPath:r.outPutPath,url:u,formData:r.formData,type:"OSGB"},box:null},this.modelList.push({...r,url:u,state:Kt.Loaded}),!s&&t?.flyTo&&(this.viewer.zoomTo(h),s=!0)}catch(l){console.error(`OSGB模型 ${r.dbName} 加载失败:`,l);continue}}this.events.emit("loadingStatus",""),this.events.emit("onMountAllOsgb3Dtiles",{modelList:this.modelList,mapTileset:this.mapTileset})}updateOSGBMatrix(e){const{X:t,Y:i,Z:s,modelId:o}=e,r=this.cesium,l=this.mapTileset[o];if(!l){console.warn("tileSet not found for modelId:",o);return}let a=t||0,c=i||0,u=s||0;const h=l.boundingSphere.center,f=r.Transforms.eastNorthUpToFixedFrame(h),p=new r.Cartesian3(a,c,u),A=r.Matrix4.multiplyByPoint(f,p,new r.Cartesian3(0,0,0)),C=r.Cartesian3.subtract(A,h,new r.Cartesian3);l.modelMatrix=r.Matrix4.fromTranslation(C)}flyToTileset({modelId:e=this.BIMmodelId,options:t={}}={}){const s=this.getMapTileset()[e];if(!s||!this.viewer)return;const{complete:o,cancel:r,...l}=t,a={duration:0,...l};this.viewer.flyTo(s,a).then(c=>{c?o&&o():r&&r()}).catch(c=>{r&&r(),console.error("FlyTo error",c)})}getMapTileset(){return this.mapTileset}getBIMmodelId(){return this.BIMmodelId}getModelList(){return this.modelList}setMapTileset(e){this.mapTileset=e}setBIMmodelId(e){this.BIMmodelId=e}setModelList(e){this.modelList=e}getBaseUrlPath(e){const t=e.lastIndexOf("/");return t===-1?".":e.substr(0,t)}async loadTilesetWithZipSupport(e,t,i,s){const o=`${this.getBaseUrlPath(e)}/tileset.zip`;if((await fetch(o)).status===200){const a=await mt(o);if(a){const c=new Blob([JSON.stringify(a)],{type:"application/json"}),u=URL.createObjectURL(c),h=s.Proxy,f=this.getBaseUrlPath(e);h.getURL=A=>A.includes("blob://")?A.replace(/blob:\/\//g,f):A;const p=new s.Resource({url:u,proxy:h});try{return await s.Cesium3DTileset.fromUrl(p,{id:t,...i})}catch{return await s.Cesium3DTileset.fromUrl(e,{url:e,id:t,...i})}}}return await s.Cesium3DTileset.fromUrl(e,{url:e,id:t,...i})}async loadTreeForModel(e){const t=this.mapTileset[e];if(!t||!t.leiting)return null;if(t.leiting.tree)return t.leiting.tree;const i=t.leiting.model?.modelName||e,s=t.leiting.model?.treeUrl,o=t.leiting.model?.dbName;if(!o&&!s)return null;this.lazyLoadingCount++,this.events.emit("loadingStatus",`正在加载 ${i} 目录树...`);try{if(o){const r=await Sg(o);if(r&&r.length>0)return t.leiting.tree=r,r}if(s){const r=await mt(s);if(r)return t.leiting.tree=r,r}}catch(r){console.error(`Failed to load tree for model ${e}:`,r)}finally{this.lazyLoadingCount--,this.lazyLoadingCount<=0&&(this.lazyLoadingCount=0,this.events.emit("loadingStatus",""))}return null}async loadNodeDetailsForModel(e){const t=this.mapTileset[e];if(!t||!t.leiting)return null;if(t.leiting?.node?.nodeExtras)return t.leiting.node;const i=t.leiting.model?.nodeUrl,s=t.leiting.model?.modelName||e;if(!i)return null;this.lazyLoadingCount++,this.events.emit("loadingStatus",`正在加载 ${s} 构件详情...`);try{const o=await mt(i);if(o)return o.batchIdEIDInfos||(o.batchIdEIDInfos=t.leiting.node.batchIdEIDInfos),t.leiting.node=o,o}catch(o){console.error(`Failed to load node details for model ${e}:`,o)}finally{this.lazyLoadingCount--,this.lazyLoadingCount<=0&&(this.lazyLoadingCount=0,this.events.emit("loadingStatus",""))}return null}}const Pa={normal:0,process:2},kg={color:1};function Fa(n){return n===1||n==="exist"?1:n===2||n==="process"?2:0}function en(n){return Number.isNaN(n)?0:n<=1?Math.min(Math.max(n,0),1):Math.min(Math.max(n/255,0),1)}function Ra(n){return Number.isNaN(n)?1:n<=1?Math.min(Math.max(n,0),1):1}function Ns(n){if(!n)return null;const e=Number(n.r),t=Number(n.g),i=Number(n.b),s=n.a===void 0?1:Number(n.a);if([e,t,i,s].some(a=>Number.isNaN(a)))return null;const o=Math.round(e*255),r=Math.round(t*255),l=Math.round(i*255);return`rgba(${o},${r},${l},${s})`}function Pg(n){if(!n||typeof n!="string")return null;const t=n.replace(/\s+/g,"").match(/^rgba?\((\d+),(\d+),(\d+)(?:,([0-9.]+))?\)$/i);if(!t)return null;const i=Number(t[1]),s=Number(t[2]),o=Number(t[3]),r=t[4]===void 0?1:Number(t[4]);return[i,s,o,r].some(l=>Number.isNaN(l))?null:{r:Math.min(Math.max(i/255,0),1),g:Math.min(Math.max(s/255,0),1),b:Math.min(Math.max(o/255,0),1),a:Math.min(Math.max(r,0),1)}}function Fg(n){if(n==null)return null;const e=Number(n);return Number.isNaN(e)?null:e}function Rg(n){const e=n.lastIndexOf("-"),t=n.substring(0,e),i=n.substring(e+1);return[t,i]}function Us(n){if(!n)return null;const e=n.Min??n.min,t=n.Max??n.max;if(!e||!t)return null;const i=Number(e.x??e.X),s=Number(e.y??e.Y),o=Number(e.z??e.Z),r=Number(t.x??t.X),l=Number(t.y??t.Y),a=Number(t.z??t.Z);return[i,s,o,r,l,a].some(c=>Number.isNaN(c))?null:{min:{x:i,y:s,z:o},max:{x:r,y:l,z:a}}}function Sn(n,e){if(e)return`${e}`;const t=n?.leiting?.model?.modelId??n?.modelId??n?.id;return t==null?null:`${t}`}function Og(n,e){if(e==null)return null;const t=n?.leiting?.node;if(!t)return null;const i=`${e}`,s=t?.[i],o=Us(s?.box3??s?.box);if(o)return o;const r=t?.element?.[i]??t?.elements?.[i]??t?.nodeExtras?.element?.[i]??t?.nodeExtras?.elements?.[i];return Us(r?.box3??r?.box)}function Lg(n){const e=n?.leiting?.box;return e?Us({min:e.min,max:e.max}):null}class Ng{base;constructor(e){this.base=e}initTime(){const t=this.base.cesium.JulianDate.fromDate(new Date(2023,3,21,10,0));this.base.viewer.clock.currentTime=t,this.base.start=this.base.viewer.clock.currentTime.secondsOfDay*1e3}processAnimation(e,t,i,s=null){if(this.base.start==null)return;const o=this.base.start+(e?.delay??0),r=this.base.start+(e?.playtime??0)+(e?.delay??0);t<=o&&(e.cash=!0,e.groupData.forEach(l=>{const{batchIds:a,modelId:c,rgba:u}=l;if(Array.isArray(a)&&a[0]){a[0][1]=u;const h=i[c];h?h.push(a[0]):i[c]=[a[0]]}})),t>=o&&t<r&&(s!==null&&(this.base.viewer.scene.ambientLightIntensity=s),e.cash=!1,e.playCash=!0,e.groupData.forEach(l=>{const{batchIds:a,playTimeColor:c,modelId:u}=l;if(Array.isArray(a)&&a[0]){a[0][1]=c;const h=i[u];h?h.push(a[0]):i[u]=[a[0]]}})),t>=r&&(e.finished=!0)}onTick=e=>{if(!this.base.cesium||!this.base.viewer)return;const t=e?.currentTime?.secondsOfDay?e.currentTime.secondsOfDay*1e3:this.base.viewer.clock.currentTime.secondsOfDay*1e3,i={};Array.isArray(this.base.data)&&this.base.data.forEach(o=>{this.processAnimation(o,t,i,.1)});const s=Object.entries(i);if(s.forEach(([o,r])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:o,batchIds:r})}),Object.keys(this.base.mapAnimations).forEach(o=>{const r=this.base.mapAnimations[o];r.length&&r.every(l=>l.finished)&&!this.base.clearedModelIds.has(o)&&(this.base.setTileSyltByConstructionProcessTracking({modelId:o,batchIds:[]}),this.base.clearedModelIds.add(o))}),this.base.recoverStaus){s.length&&(this.base.recoverStaus=!1);return}s.length===0&&Array.isArray(this.base.data)&&this.base.data.forEach(o=>{o.groupData.forEach(r=>{const{modelId:l}=r;this.base.setTileSyltByConstructionProcessTracking({modelId:l,batchIds:[]})}),this.base.recoverStaus=!0})};enableConstructionProgressTracking(){this.base.clearedModelIds.clear(),this.initTime(),this.base.groupBatchIds={},Array.isArray(this.base.data)&&(this.base.data.forEach(e=>{e.cash=!1,e.playCash=!1,e.groupData.forEach(t=>{const{batchIds:i,modelId:s,rgba:o}=t;if(Array.isArray(i)&&i[0]){i[0][1]=o;const r=this.base.groupBatchIds[s];r?r.push(i[0]):this.base.groupBatchIds[s]=[i[0]]}})}),Object.entries(this.base.groupBatchIds).forEach(([e,t])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:e,batchIds:t})})),this.base.viewer.clock.onTick.addEventListener(this.onTick)}disableConstructionProgressTracking(){this.base.viewer.clock.onTick.removeEventListener(this.onTick),this.base.viewer.scene.ambientLightIntensity=1,Array.isArray(this.base.data)&&this.base.data.forEach(e=>{e.cash=!0,e.playCash=!0,e.groupData.forEach(t=>{const{modelId:i}=t,s=[];this.base.setTileSyltByConstructionProcessTracking({modelId:i,batchIds:s})})}),this.base.start=null}freshConstructionProgressTracking(){const e=this.base.viewer.clock.currentTime.secondsOfDay*1e3,t={};Array.isArray(this.base.data)&&this.base.data.forEach(s=>{s.playCash=!1,this.processAnimation(s,e,t)});const i=Object.entries(t);i.forEach(([s,o])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:s,batchIds:o})}),i.length===0&&Array.isArray(this.base.data)&&this.base.data.forEach(s=>{s.groupData.forEach(o=>{const{modelId:r}=o;this.base.setTileSyltByConstructionProcessTracking({modelId:r,batchIds:[]})})})}reStartAnimation(){let e={};this.base.clearedModelIds.clear(),Array.isArray(this.base.data)&&this.base.data.forEach(t=>{t.cash=!1,t.playCash=!1,t.groupData.forEach(i=>{const{batchIds:s,modelId:o,rgba:r}=i;if(Array.isArray(s)&&s[0]){s[0][1]=r;const l=e[o];l?l.push(s[0]):e[o]=[s[0]]}})}),Object.entries(e).forEach(([t,i])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:t,batchIds:i})}),this.initTime()}setAllConstructionProgressTracking(e){this.base.data=e,Array.isArray(this.base.data)&&this.base.data.forEach(t=>{t.cash=!1,t.playCash=!1,t.groupData=[],t.finished=!1,t.mergeCpts.forEach(i=>{const s=[];i.cpts.forEach(a=>{s.push({dbName:i.linkModelId,modelId:i.modelId,elementId:`${a}`,show:!0,rgba:t.rgba??{r:.4,g:.4,b:.4,a:.1}})});const o=Pa.process,r=kg.color,{allElements:l}=this.base.groupByModelId(s);this.base.mapAnimations[i.modelId]=this.base.mapAnimations[i.modelId]||[],this.base.mapAnimations[i.modelId].push(t),Object.entries(l).forEach(([a,c])=>{const[u,h]=Rg(a),f=this.base.getTileSyltByConstructionProcessTracking({elementIds:c,modelId:u,color:h,colorRank:o,show:!0,selectionRank:r}),p=t?.playTimeColor?.r??1,A=t?.playTimeColor?.g??1,C=t?.playTimeColor?.b??0,m=t?.playTimeColor?.a??.1,y=this.base.setColor({r:p,g:A,b:C,a:m}),E=this.base.setColor(t.rgba??{r:.4,g:.4,b:.4,a:.1});t.groupData.push({modelId:u,batchIds:f,playTimeColor:y,rgba:E})})})})}}class Ug{base;constructor(e){this.base=e}attachTileset(e,t,i){const s=this.base.cesium;this.base.handler||(this.base.handler=new s.ScreenSpaceEventHandler(this.base.viewer.scene.canvas));const o=Sn(e,i);o&&(this.base.tilesetMap[o]=e),t&&(this.base.selectedColor=t),this.bindInputs()}bindInputs(){if(!this.base.handler)return;const e=this.base.cesium;this.base.handler.setInputAction(t=>{let i;try{i=this.base.viewer.scene.pick(t.position)}catch{}if(e.defined(i)&&i instanceof e.Cesium3DTileFeature){this.base.clearSelection();const s=Sn(i.tileset);if(!s||!this.base.tilesetMap[s])return;const o=this.base.getFeatureId(i);if(o==="-1")return;let r;const l=this.base.viewer.scene.pickPosition(t.position);if(e.defined(l)){const u=e.Cartographic.fromCartesian(l),h=e.Math.toDegrees(u.longitude),f=e.Math.toDegrees(u.latitude),p=u.height;r=[h,f,p]}const c=(this.base.hasSelectedFeaturesMap[s]||[]).filter(u=>u.rank!==0);this.base.hasSelectedFeaturesMap[s]=[...c,{batchId:o,selectedColor:this.base.selectedColor,rank:0,point:r}],this.base.setBaseStyle(s),this.base.triggerSelectionChange(),i.tileset.leiting?.selectedFn&&i.tileset.leiting.selectedFn(i.tileset)}else this.base.clearSelection()},e.ScreenSpaceEventType.LEFT_CLICK),this.base.handler.setInputAction(t=>{let i;try{i=this.base.viewer.scene.pick(t.position)}catch{}if(e.defined(i)&&i instanceof e.Cesium3DTileFeature){const s=Sn(i.tileset);if(!s||!this.base.tilesetMap[s])return;const o=this.base.getFeatureId(i);if(o==="-1")return;let r;const l=this.base.viewer.scene.pickPosition(t.position);if(e.defined(l)){const a=e.Cartographic.fromCartesian(l),c=e.Math.toDegrees(a.longitude),u=e.Math.toDegrees(a.latitude),h=a.height;r=[c,u,h]}this.base.toggleMultiSelect(s,o,this.base.selectedColor,r)}},e.ScreenSpaceEventType.LEFT_CLICK,e.KeyboardEventModifier.CTRL),this.base.handler.setInputAction(t=>{this.base.ensureSelectionDiv();const i=this.base.viewer?.scene?.screenSpaceCameraController;i&&this.base.cameraControllerState===null&&(this.base.cameraControllerState={enableRotate:i.enableRotate,enableTilt:i.enableTilt,enableLook:i.enableLook},i.enableRotate=!1,i.enableTilt=!1,i.enableLook=!1),this.base.selectStart=this.base.cesium.Cartesian2.clone(t.position),this.base.selectEnd=null,this.base.selectionDiv&&this.base.selectStart&&(this.base.selectionDiv.style.left=`${this.base.selectStart.x}px`,this.base.selectionDiv.style.top=`${this.base.selectStart.y}px`,this.base.selectionDiv.style.width="0px",this.base.selectionDiv.style.height="0px",this.base.selectionDiv.style.display="block")},e.ScreenSpaceEventType.LEFT_DOWN,e.KeyboardEventModifier.CTRL),this.base.handler.setInputAction(t=>{if(!this.base.selectStart||!this.base.selectionDiv)return;const i=performance.now();if(i-this.base.lastDrawTime<20)return;this.base.lastDrawTime=i,this.base.selectEnd=this.base.cesium.Cartesian2.clone(t.endPosition);const s=Math.min(this.base.selectStart.x,this.base.selectEnd.x),o=Math.min(this.base.selectStart.y,this.base.selectEnd.y),r=Math.abs(this.base.selectStart.x-this.base.selectEnd.x),l=Math.abs(this.base.selectStart.y-this.base.selectEnd.y);this.base.selectionDiv.style.left=`${s}px`,this.base.selectionDiv.style.top=`${o}px`,this.base.selectionDiv.style.width=`${r}px`,this.base.selectionDiv.style.height=`${l}px`,this.base.selectionDiv.style.backgroundColor="rgba(0, 255, 255, 0.5)",this.base.selectionDiv.style.position="absolute",this.base.selectionDiv.style.zIndex="2"},e.ScreenSpaceEventType.MOUSE_MOVE,e.KeyboardEventModifier.CTRL),this.base.handler.setInputAction(()=>{if(!this.base.selectStart||!this.base.selectionDiv)return;if(!this.base.selectStart||!this.base.selectEnd){this.base.selectionDiv.style.display="none";const i=this.base.viewer?.scene?.screenSpaceCameraController;i&&this.base.cameraControllerState!==null&&(i.enableRotate=this.base.cameraControllerState.enableRotate,i.enableTilt=this.base.cameraControllerState.enableTilt,i.enableLook=this.base.cameraControllerState.enableLook,this.base.cameraControllerState=null);return}this.base.selectionDiv.style.display="none",this.base.selectTilesInRectangle(this.base.selectStart,this.base.selectEnd,this.base.selectedColor),this.base.viewer.scene.requestRender(),this.base.selectStart=null,this.base.selectEnd=null;const t=this.base.viewer?.scene?.screenSpaceCameraController;t&&this.base.cameraControllerState!==null&&(t.enableRotate=this.base.cameraControllerState.enableRotate,t.enableTilt=this.base.cameraControllerState.enableTilt,t.enableLook=this.base.cameraControllerState.enableLook,this.base.cameraControllerState=null)},e.ScreenSpaceEventType.LEFT_UP,e.KeyboardEventModifier.CTRL)}unbindInputs(){if(!this.base.handler)return;const e=this.base.cesium;this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_CLICK),this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_CLICK,e.KeyboardEventModifier.CTRL),this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_DOWN,e.KeyboardEventModifier.CTRL),this.base.handler.removeInputAction(e.ScreenSpaceEventType.MOUSE_MOVE,e.KeyboardEventModifier.CTRL),this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_UP,e.KeyboardEventModifier.CTRL)}}class _g{cesium;viewer;data;handler;selectedColor="rgba(255,0,0,1.0)";tilesetMap={};hasSelectedFeaturesMap={};colorRankColor=[];showStateMap={};selectedPosition={x:null,y:null};selectionDiv=null;lastDrawTime=0;selectStart=null;selectEnd=null;cameraControllerState=null;start=null;groupBatchIds={};recoverStaus=!1;mapAnimations={};clearedModelIds=new Set;eidToBatchIdMap={};batchIdToElementIdMap={};animationModule;selectionModule;onSelectionChangeCallbacks=[];loadNodeDetailsForModel;loadNodeDetailsCallback;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer,this.animationModule=new Ng(this),this.selectionModule=new Ug(this)}attachTileset(e,t,i){this.selectionModule.attachTileset(e,t,i)}setLoadNodeDetailsCallback(e){this.loadNodeDetailsCallback=e}selectionChange(e){e&&typeof e=="function"&&this.onSelectionChangeCallbacks.push(e)}removeSelectionChange(e){this.onSelectionChangeCallbacks=this.onSelectionChangeCallbacks.filter(t=>t!==e)}triggerSelectionChange(){if(this.onSelectionChangeCallbacks.length>0){const e=this.getSelected({rank:0});this.onSelectionChangeCallbacks.forEach(t=>{try{t(e)}catch(i){console.error("Selection callback error:",i)}})}}enableSelection(){this.selectionModule.bindInputs()}disableSelection(){this.selectionModule.unbindInputs()}clearSelection(e){this.getTargetModelIds(e).forEach(i=>{const s=this.hasSelectedFeaturesMap[i];if(!s?.length)return;const o=s.filter(r=>r.rank!==0);o.length?(this.hasSelectedFeaturesMap[i]=o,this.setBaseStyle(i)):(delete this.hasSelectedFeaturesMap[i],this.applyShowStyleOnly(i))}),this.viewer.scene.requestRender(),this.triggerSelectionChange()}clearExist(e){this.getTargetModelIds(e).forEach(i=>{const s=this.hasSelectedFeaturesMap[i];if(!s?.length)return;const o=s.filter(r=>r.rank!==1);o.length?(this.hasSelectedFeaturesMap[i]=o,this.setBaseStyle(i)):(delete this.hasSelectedFeaturesMap[i],this.applyShowStyleOnly(i))}),this.viewer.scene.requestRender()}clearProcess(e){this.getTargetModelIds(e).forEach(i=>{const s=this.hasSelectedFeaturesMap[i];if(!s?.length)return;const o=s.filter(r=>r.rank!==2);o.length?(this.hasSelectedFeaturesMap[i]=o,this.setBaseStyle(i)):(delete this.hasSelectedFeaturesMap[i],this.applyShowStyleOnly(i))}),this.viewer.scene.requestRender()}clearAllHaveSelected(){this.getTargetModelIds().forEach(t=>{this.hasSelectedFeaturesMap[t]&&(delete this.hasSelectedFeaturesMap[t],this.applyShowStyleOnly(t))}),this.viewer.scene.requestRender(),this.triggerSelectionChange()}getSelected(e){const t=e&&typeof e=="object"&&"rank"in e?e.rank:e,i=Fa(t),s=[];return Object.keys(this.hasSelectedFeaturesMap).forEach(o=>{(this.hasSelectedFeaturesMap[o]||[]).forEach(async l=>{if(l.rank!==i)return;const a=Pg(l.selectedColor);let c=await this.getElementId(l.batchId,o);c===null&&(c=l.batchId),s.push({elementId:c,modelId:o,rgba:a||void 0,point:l?.point||void 0})})}),s}setAllConstructionProgressTracking(e){this.animationModule.setAllConstructionProgressTracking(e)}initTime(){this.animationModule.initTime()}processAnimation(e,t,i,s=null){this.animationModule.processAnimation(e,t,i,s)}onTick=e=>{this.animationModule.onTick(e)};enableConstructionProgressTracking(){this.animationModule.enableConstructionProgressTracking()}disableConstructionProgressTracking(){this.animationModule.disableConstructionProgressTracking()}freshConstructionProgressTracking(){this.animationModule.freshConstructionProgressTracking()}reStartAnimation(){this.animationModule.reStartAnimation()}setTileSyltByConstructionProcessTracking({modelId:e,batchIds:t}){const i=this.tilesetMap[e];if(!i)return;const s=i?.style?.show?.conditionsExpression?.conditions;Array.isArray(t)&&t.length?s?i.style=new this.cesium.Cesium3DTileStyle({show:{conditions:s},color:{conditions:t}}):i.style=new this.cesium.Cesium3DTileStyle({color:{conditions:t}}):this.applyShowStyleOnly(e),this.viewer.scene.requestRender()}resumeFlyTo(){this.viewer.clock.shouldAnimate=!0}pauseFlyTo(){this.viewer.clock.shouldAnimate=!1}flyToObjects({selectCpts:e,options:t}){if(!Array.isArray(e)||e.length===0)return;this.clearSelection(),this.setSelectColorUserModelCpt(e,{rank:0});const i=this.cesium,s=t?.scale??1,o=[];if(e.forEach(r=>{const l=r?.modelId,a=r?.elementId;if(l==null)return;const c=this.tilesetMap[`${l}`];if(!c)return;const h=Og(c,a)||Lg(c);if(!h)return;const f=new i.Cartesian3(h.min.x,h.min.y,h.min.z),p=new i.Cartesian3(h.max.x,h.max.y,h.max.z),A=c?.root?.computedTransform??c?.modelMatrix;if(A){const C=i.Matrix4.multiplyByPoint(A,f,new i.Cartesian3),m=i.Matrix4.multiplyByPoint(A,p,new i.Cartesian3);o.push(C,m)}else o.push(f,p)}),o.length){const r=i.BoundingSphere.fromPoints(o);r.radius=r.radius*s;const l=this.viewer.scene.camera,a=new i.HeadingPitchRange(l.heading,l.pitch,0);l.flyToBoundingSphere(r,{duration:t?.duration??0,complete:t?.complete,offset:a})}else{const r=e[0]?.modelId,l=r?this.tilesetMap[`${r}`]:null;l&&this.viewer.flyTo(l,{duration:t?.duration??0,complete:t?.complete})}}setBaseStyle(e){this.getTargetModelIds(e).forEach(i=>{this.setColorStyle(i)})}setColorStyle(e){this.updateTilesetStyle(e)}buildColorConditions(e){const t=this.tilesetMap[e],i=this.hasSelectedFeaturesMap[e];if(!t||!i?.length)return;const s=new Map;i.forEach(a=>{const c=s.get(a.batchId);(!c||a.rank>=c.rank)&&s.set(a.batchId,a)});const o=new Map;if(s.forEach(({batchId:a,selectedColor:c})=>{o.has(c)||o.set(c,new Set),o.get(c)?.add(a)}),this.colorRankColor.length){const a=new Set;this.colorRankColor.forEach(c=>{const u=o.get(c);u&&u.forEach(h=>a.add(h))}),o.forEach((c,u)=>{if(this.colorRankColor.includes(u))return;const h=new Set;c.forEach(f=>{a.has(f)||h.add(f)}),o.set(u,h)})}const r=[...this.colorRankColor.filter(a=>o.has(a)),...Array.from(o.keys()).filter(a=>!this.colorRankColor.includes(a))],l=[];return r.forEach(a=>{const c=o.get(a);if(!c||!c.size)return;const u=Array.from(c).join("|");u&&l.push([`(regExp('^(${u})$').test(\${id}))`,a])}),l.length?l:void 0}updateTilesetStyle(e){const t=this.tilesetMap[e];if(!t)return;const i=this.showStateMap[e],s=i?this.buildShowConditions(i.batchIds,i.mode):void 0,o=this.buildColorConditions(e);s||o?t.style=new this.cesium.Cesium3DTileStyle({show:s?{conditions:s}:void 0,color:o?{conditions:o}:void 0}):t.style=void 0,this.viewer.scene.requestRender()}setShowStyle(e){this.getTargetModelIds(e?.modelId).forEach(i=>{const s=this.showStateMap[i]||{batchIds:[],mode:"include"};this.showStateMap[i]={batchIds:e?.batchIds??s.batchIds,mode:e?.mode??s.mode},this.updateTilesetStyle(i)})}setColor(e){if(!e)return this.selectedColor;if(typeof e=="string")return e;const t=en(Number(e.r)),i=en(Number(e.g)),s=en(Number(e.b)),o=Ra(e.a===void 0?1:Number(e.a));return Ns({r:t,g:i,b:s,a:o})||this.selectedColor}groupByModelId(e){const t={};return e.forEach(i=>{const s=i?.modelId,o=i?.elementId;if(s==null||o===void 0||o===null)return;const r=i?.color??i?.rgba,l=this.setColor(r??{r:.4,g:.4,b:.4,a:.1}),a=`${s}-${l}`;t[a]||(t[a]=[]),t[a].push(`${o}`)}),{allElements:t,transform:null,box:null}}getBatchId(e,t){const i=`${t}`,s=`${e}`;if(this.eidToBatchIdMap[i]){const a=this.eidToBatchIdMap[i].get(s);if(a!==void 0)return a}const r=this.tilesetMap[i]?.leiting?.node?.batchIdEIDInfos;if(r&&Array.isArray(r)){const a=new Map;r.forEach(u=>{a.set(`${u.elementID}`,`${u.batchId}`)}),this.eidToBatchIdMap[i]=a;const c=a.get(s);if(c!==void 0)return c}const l=Fg(e);return l!=null?String(l):null}loadingModels=new Set;async getElementId(e,t){if(this.batchIdToElementIdMap[t]){const o=this.batchIdToElementIdMap[t].get(e);if(o!==void 0)return o}const i=this.tilesetMap[t];i.leiting?.node?.batchIdEIDInfos||await this.loadNodeDetailsForModel(t);const s=i?.leiting?.node?.batchIdEIDInfos;if(s&&Array.isArray(s)){const o=new Map;s.forEach(l=>{l&&l.elementID&&o.set(`${l.batchId}`,`${l.elementID}`)}),this.batchIdToElementIdMap[t]=o;const r=o.get(e);if(r!==void 0)return r}return i&&i.leiting&&!i.leiting.node&&i.leiting.model?.nodeUrl&&(this.loadingModels.has(t)||(this.loadingModels.add(t),this.loadNodeDetailsCallback&&this.loadNodeDetailsCallback(t).then(()=>{this.loadingModels.delete(t),this.triggerSelectionChange()}).catch(()=>{this.loadingModels.delete(t)}))),null}setComponentVisibility(e){if(!Array.isArray(e))return;const t=new Set;e.forEach(i=>{const s=`${i.modelId}`,o=this.getBatchId(i.elementId,s);if(o===null)return;t.add(s);const r=this.showStateMap[s]||{batchIds:[],mode:"exclude"},l=new Set(r.batchIds);r.mode==="exclude"?i.show?l.delete(o):l.add(o):i.show?l.add(o):l.delete(o),r.batchIds=Array.from(l),this.showStateMap[s]=r}),t.forEach(i=>this.updateTilesetStyle(i))}setAllComponentsVisibility(e){this.getTargetModelIds().forEach(i=>{e?this.setShowStyle({modelId:i,batchIds:[],mode:"exclude"}):this.setShowStyle({modelId:i,batchIds:[],mode:"include"})})}getComponentsByVisibility(e){const t=[];return Object.keys(this.showStateMap).forEach(i=>{const s=this.showStateMap[i],o=this.tilesetMap[i];if(!o?.leiting?.node?.batchIdEIDInfos)return;const r=o.leiting.node.batchIdEIDInfos,l=new Set(s?.batchIds??[]);r.forEach(a=>{const c=l.has(`${a.batchId}`);(s?.mode==="include"?c:!c)===e&&t.push({elementId:`${a.elementID}`,modelId:i})})}),t}getTileSyltByConstructionProcessTracking({elementIds:e,modelId:t,color:i,colorRank:s,show:o,selectionRank:r}){const l=this.tilesetMap[t];if(!Array.isArray(e))return[];const a=l.leiting.node,c=new Set(e),u=a.batchIdEIDInfos.filter(f=>c.has(`${f.elementID}`)).map(f=>String(f.batchId));return u.length?(s===Pa.normal&&!this.colorRankColor.includes(i)&&(this.colorRankColor=[i]),[[`(regExp('^(${u.join("|")})$').test(\${id}))`,i]]):[]}setSelectColorUserModelCpt(e,t){if(!Array.isArray(e))return;const i=new Map,s=t?.rank===void 0?"exist":t?.rank,o=Fa(s);e.forEach(r=>{const l=r?.modelId;if(l==null)return;const a=`${l}`,c=Array.isArray(r?.elementIds)?r.elementIds:r?.elementId?[r.elementId]:[];if(!c.length)return;const u=Ns(r?.rgba)||this.selectedColor;c.forEach(h=>{const f=this.getBatchId(h,a);f!==null&&(i.has(a)||i.set(a,[]),i.get(a)?.push({batchId:f,selectedColor:u,rank:o}))})}),i.forEach((r,l)=>{const a=this.mergeSelections(l,r);this.hasSelectedFeaturesMap[l]=a,this.setBaseStyle(l)}),this.triggerSelectionChange()}setAllSelectColorUserModelCpt({modelId:e,rgba:t}){if(!e)return;const i=String(e),s=this.tilesetMap[i];if(!s)return;const o=s?.leiting?.node?.batchIdEIDInfos;if(!o||!Array.isArray(o))return;const r=[];o.forEach(l=>{l&&l.elementID!==void 0&&r.push(l.elementID)}),r.length!==0&&this.setSelectColorUserModelCpt([{modelId:i,elementIds:r,rgba:t}],{rank:0})}getFeatureId(e){if(this.cesium.defined(e)&&this.cesium.defined(e.getProperty)){const t=e.getProperty("id");return t!=null?String(t):"-1"}return"-1"}getTargetModelIds(e){return e?[e]:Object.keys(this.tilesetMap)}buildShowConditions(e,t){const i=e.join("|");return i?t==="include"?[[`(regExp('^(${i})$').test(\${id}))`,"true"],["true","false"]]:[[`(regExp('^(${i})$').test(\${id}))`,"false"],["true","true"]]:t==="include"?[["true","false"]]:void 0}applyShowStyleOnly(e){const t=this.tilesetMap[e];if(!t)return;const i=this.showStateMap[e],s=i?this.buildShowConditions(i.batchIds,i.mode):void 0;s?t.style=new this.cesium.Cesium3DTileStyle({show:{conditions:s}}):t.style=void 0}setSelectedColorRgba(e,t,i,s=1){const o=en(e),r=en(t),l=en(i),a=Ra(s),c=Ns({r:o,g:r,b:l,a});c&&(this.selectedColor=c)}mergeSelections(e,t){const i=new Map;return(this.hasSelectedFeaturesMap[e]||[]).forEach(o=>i.set(o.batchId,o)),t.forEach(o=>{const r=i.get(o.batchId);(!r||o.rank>r.rank||o.rank===r.rank)&&i.set(o.batchId,o)}),Array.from(i.values())}toggleMultiSelect(e,t,i,s){const o=this.hasSelectedFeaturesMap[e]||[],r=o.filter(h=>h.rank!==0),l=o.filter(h=>h.rank===0),c=l.some(h=>h.batchId===t)?l.filter(h=>h.batchId!==t):[...l,{batchId:t,selectedColor:i,rank:0,point:s}],u=[...r,...c];u.length?(this.hasSelectedFeaturesMap[e]=u,this.setBaseStyle(e)):(delete this.hasSelectedFeaturesMap[e],this.applyShowStyleOnly(e)),this.triggerSelectionChange()}ensureSelectionDiv(){if(this.selectionDiv)return;const e=document.createElement("div");e.style.display="none",e.style.pointerEvents="none",e.style.border="1px solid rgba(0, 255, 255, 0.8)",this.viewer.container.appendChild(e),this.selectionDiv=e}isRepeatedClick(e){const t=e?.position;return!t||typeof t.x!="number"||typeof t.y!="number"?!1:this.selectedPosition.x===t.x&&this.selectedPosition.y===t.y?!0:(this.selectedPosition.x=t.x,this.selectedPosition.y=t.y,!1)}selectTilesInRectangle(e,t,i){const s=Math.min(e.x,t.x),o=Math.max(e.x,t.x),r=Math.min(e.y,t.y),l=Math.max(e.y,t.y),a=o-s,c=l-r;if(Math.abs(a)<15||Math.abs(c)<15)return;const u=s+a/2,h=r+c/2,f=new this.cesium.Cartesian2(u,h),p=this.viewer.scene.drillPick(f,void 0,a,c);if(!Array.isArray(p))return;const A=new Map;p.forEach(C=>{if(!(C instanceof this.cesium.Cesium3DTileFeature))return;const m=Sn(C.tileset);if(!m||!this.tilesetMap[m])return;const y=this.getFeatureId(C);y!=="-1"&&(A.has(m)||A.set(m,new Set),A.get(m)?.add(y))}),A.forEach((C,m)=>{const y=this.hasSelectedFeaturesMap[m]||[],E=y.filter(S=>S.rank!==0),I=new Set(y.filter(S=>S.rank===0).map(S=>S.batchId)),M=[];C.forEach(S=>{I.has(S)||M.push({batchId:S,selectedColor:i,rank:0})});const k=y.filter(S=>S.rank===0);this.hasSelectedFeaturesMap[m]=[...E,...k,...M],this.setBaseStyle(m)}),this.triggerSelectionChange()}}class Qg{cesium;viewer;tilesetMap={};planeEntities=[];clippingPlanesMap={};activeModelIds=new Set;boxMatrix=null;boxInverseMatrix=null;boxCenter=null;boxOrientation=null;targetZPlus=0;targetZMinus=0;targetXPlus=0;targetXMinus=0;targetYPlus=0;targetYMinus=0;currentPlaneType="";selectedPlane=null;hoveredPlane=null;dragStartPoint=null;moveCallBack=null;downHandler=null;upHandler=null;moveHandler=null;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer}attachTileset(e,t){this.tilesetMap[t]=e}open(e,t){!this.tilesetMap[e]||this.activeModelIds.has(e)||(this.activeModelIds.add(e),this.moveCallBack=t?.moveCallBack,this.fitToModels(),this.activeModelIds.size===1&&(this.createPlaneEntities(),this.initEventHandlers()))}setupClippingPlanes(e){const t=this.cesium,i=this.tilesetMap[e];if(!i||!this.boxMatrix)return;const s=new t.ClippingPlaneCollection({planes:[new t.ClippingPlane(new t.Cartesian3(1,0,0),this.targetXMinus),new t.ClippingPlane(new t.Cartesian3(-1,0,0),this.targetXPlus),new t.ClippingPlane(new t.Cartesian3(0,1,0),this.targetYMinus),new t.ClippingPlane(new t.Cartesian3(0,-1,0),this.targetYPlus),new t.ClippingPlane(new t.Cartesian3(0,0,1),this.targetZMinus),new t.ClippingPlane(new t.Cartesian3(0,0,-1),this.targetZPlus)],edgeWidth:2,edgeColor:t.Color.WHITE,enabled:!0,unionClippingRegions:!0}),o=t.Matrix4.inverse(i.root.transform,new t.Matrix4);s.modelMatrix=t.Matrix4.multiply(o,this.boxMatrix,new t.Matrix4),i.clippingPlanes=s,this.clippingPlanesMap[e]=s}createPlaneEntities(){const e=this.cesium,t=this.viewer;this.planeEntities.forEach(s=>t.entities.remove(s)),this.planeEntities=[];const i=["left","right","behind","front","top","down"];for(const s of i){const o=t.entities.add({name:s,position:new e.CallbackProperty(()=>{if(!this.boxMatrix)return e.Cartesian3.ZERO;const r=this.getPlaneOffsetCartesian(s);return e.Matrix4.multiplyByPoint(this.boxMatrix,r,new e.Cartesian3)},!1),orientation:new e.CallbackProperty(()=>this.boxOrientation||e.Quaternion.IDENTITY,!1),plane:{dimensions:new e.CallbackProperty(()=>{if(this.activeModelIds.size===0)return new e.Cartesian2(0,0);const r=.1,l=Math.max(r,this.targetXMinus+this.targetXPlus),a=Math.max(r,this.targetYPlus+this.targetYMinus),c=Math.max(r,this.targetZPlus+this.targetZMinus);return s==="top"||s==="down"?new e.Cartesian2(l,a):s==="left"||s==="right"?new e.Cartesian2(a,c):new e.Cartesian2(l,c)},!1),material:e.Color.WHITE.withAlpha(.1),outline:!0,outlineColor:e.Color.YELLOW,plane:new e.CallbackProperty(()=>new e.Plane(this.getNormalByType(s),0),!1)}});this.planeEntities.push(o)}}getPlaneOffsetCartesian(e){const t=(this.targetXPlus-this.targetXMinus)/2,i=(this.targetYPlus-this.targetYMinus)/2,s=(this.targetZPlus-this.targetZMinus)/2;switch(e){case"left":return new this.cesium.Cartesian3(-this.targetXMinus,i,s);case"right":return new this.cesium.Cartesian3(this.targetXPlus,i,s);case"behind":return new this.cesium.Cartesian3(t,-this.targetYMinus,s);case"front":return new this.cesium.Cartesian3(t,this.targetYPlus,s);case"top":return new this.cesium.Cartesian3(t,i,this.targetZPlus);case"down":return new this.cesium.Cartesian3(t,i,-this.targetZMinus);default:return this.cesium.Cartesian3.ZERO}}getNormalByType(e){const t=this.cesium;switch(e){case"left":return new t.Cartesian3(1,0,0);case"right":return new t.Cartesian3(-1,0,0);case"behind":return new t.Cartesian3(0,1,0);case"front":return new t.Cartesian3(0,-1,0);case"top":return new t.Cartesian3(0,0,-1);case"down":return new t.Cartesian3(0,0,1);default:return t.Cartesian3.UNIT_X}}getPlaneByType(e){const t=this.cesium,i=this.getNormalByType(e),s=t.Cartesian3.negate(i,new t.Cartesian3);let o=0;switch(e){case"left":o=this.targetXMinus;break;case"right":o=this.targetXPlus;break;case"behind":o=this.targetYMinus;break;case"front":o=this.targetYPlus;break;case"top":o=this.targetZPlus;break;case"down":o=this.targetZMinus;break}return new t.Plane(s,-o)}initEventHandlers(){const e=this.cesium,t=this.viewer.scene.canvas,i=this.viewer.scene;this.downHandler=new e.ScreenSpaceEventHandler(t),this.upHandler=new e.ScreenSpaceEventHandler(t),this.moveHandler=new e.ScreenSpaceEventHandler(t),this.moveHandler.setInputAction(s=>{if(this.selectedPlane)return;let o;try{o=i.pick(s.endPosition)}catch{}e.defined(o)&&o.id&&o.id.plane?this.hoveredPlane!==o.id.plane&&(this.hoveredPlane&&(this.hoveredPlane.material=e.Color.WHITE.withAlpha(.1)),this.hoveredPlane=o.id.plane,this.hoveredPlane.material=e.Color.YELLOW.withAlpha(.3),t.style.cursor="pointer"):this.hoveredPlane&&(this.hoveredPlane.material=e.Color.WHITE.withAlpha(.1),this.hoveredPlane=null,t.style.cursor="default")},e.ScreenSpaceEventType.MOUSE_MOVE),this.downHandler.setInputAction(s=>{let o;try{o=i.pick(s.position)}catch{}if(e.defined(o)&&o.id&&o.id.plane){this.currentPlaneType=o.id.name,this.selectedPlane=o.id.plane,this.selectedPlane.material=e.Color.RED.withAlpha(.4),i.screenSpaceCameraController.enableInputs=!1;const r=i.camera.getPickRay(s.position),l=this.boxInverseMatrix,a=e.Matrix4.multiplyByPoint(l,r.origin,new e.Cartesian3),c=e.Matrix4.multiplyByPointAsVector(l,r.direction,new e.Cartesian3);e.Cartesian3.normalize(c,c);const u=new e.Ray(a,c),h=this.getPlaneByType(this.currentPlaneType);this.dragStartPoint=e.IntersectionTests.rayPlane(u,h,new e.Cartesian3),this.dragStartPoint||(this.dragStartPoint=this.getPlaneOffsetCartesian(this.currentPlaneType))}},e.ScreenSpaceEventType.LEFT_DOWN),this.moveHandler.setInputAction(s=>{if(!this.selectedPlane||!this.dragStartPoint)return;const o=i.camera.getPickRay(s.endPosition),r=this.boxInverseMatrix,l=e.Matrix4.multiplyByPoint(r,o.origin,new e.Cartesian3),a=e.Matrix4.multiplyByPointAsVector(r,o.direction,new e.Cartesian3);e.Cartesian3.normalize(a,a);const c=new e.Ray(l,a);let u=new e.Cartesian3;this.currentPlaneType==="top"||this.currentPlaneType==="down"?u=Math.abs(a.x)>Math.abs(a.y)?e.Cartesian3.UNIT_X:e.Cartesian3.UNIT_Y:this.currentPlaneType==="left"||this.currentPlaneType==="right"?u=Math.abs(a.y)>Math.abs(a.z)?e.Cartesian3.UNIT_Y:e.Cartesian3.UNIT_Z:u=Math.abs(a.x)>Math.abs(a.z)?e.Cartesian3.UNIT_X:e.Cartesian3.UNIT_Z;const h=-e.Cartesian3.dot(this.dragStartPoint,u),f=new e.Plane(u,h);let p=e.IntersectionTests.rayPlane(c,f,new e.Cartesian3);if(!p){const C=u===e.Cartesian3.UNIT_X?e.Cartesian3.UNIT_Y:u===e.Cartesian3.UNIT_Y&&(this.currentPlaneType==="top"||this.currentPlaneType==="down")?e.Cartesian3.UNIT_X:e.Cartesian3.UNIT_Z,m=-e.Cartesian3.dot(this.dragStartPoint,C);p=e.IntersectionTests.rayPlane(c,new e.Plane(C,m),new e.Cartesian3)}if(!p)return;const A=.01;switch(this.currentPlaneType){case"left":this.targetXMinus=Math.max(-this.targetXPlus+A,-p.x);break;case"right":this.targetXPlus=Math.max(-this.targetXMinus+A,p.x);break;case"behind":this.targetYMinus=Math.max(-this.targetYPlus+A,-p.y);break;case"front":this.targetYPlus=Math.max(-this.targetYMinus+A,p.y);break;case"top":this.targetZPlus=Math.max(-this.targetZMinus+A,p.z);break;case"down":this.targetZMinus=Math.max(-this.targetZPlus+A,-p.z);break}this.syncClippingPlanes(),this.moveCallBack&&this.moveCallBack(this.getRangeParams())},e.ScreenSpaceEventType.MOUSE_MOVE),this.upHandler.setInputAction(()=>{this.selectedPlane&&(this.selectedPlane.material=e.Color.WHITE.withAlpha(.1),this.selectedPlane=null,this.currentPlaneType="",this.dragStartPoint=null),i.screenSpaceCameraController.enableInputs=!0,t.style.cursor="default"},e.ScreenSpaceEventType.LEFT_UP)}syncClippingPlanes(){this.activeModelIds.size!==0&&Object.keys(this.clippingPlanesMap).forEach(e=>{const t=this.clippingPlanesMap[e],i=this.tilesetMap[e];if(t&&i&&!t.isDestroyed()){const s=this.cesium;t.get(0).distance=this.targetXMinus,t.get(1).distance=this.targetXPlus,t.get(2).distance=this.targetYMinus,t.get(3).distance=this.targetYPlus,t.get(4).distance=this.targetZMinus,t.get(5).distance=this.targetZPlus;const o=s.Matrix4.inverse(i.root.transform,new s.Matrix4);t.modelMatrix=s.Matrix4.multiply(o,this.boxMatrix,new s.Matrix4)}})}fitToModels(){const e=this.cesium;if(this.activeModelIds.size===0)return;let t=[];if(this.activeModelIds.forEach(h=>{const f=this.tilesetMap[h];f&&f.boundingSphere&&t.push(f.boundingSphere.center)}),t.length===0)return;const i=new e.Cartesian3;t.forEach(h=>e.Cartesian3.add(i,h,i)),this.boxCenter=e.Cartesian3.divideByScalar(i,t.length,new e.Cartesian3),this.boxMatrix=e.Transforms.eastNorthUpToFixedFrame(this.boxCenter),this.boxInverseMatrix=e.Matrix4.inverse(this.boxMatrix,new e.Matrix4),this.boxOrientation=e.Quaternion.fromRotationMatrix(e.Matrix4.getMatrix3(this.boxMatrix,new e.Matrix3));let s=1/0,o=-1/0,r=1/0,l=-1/0,a=1/0,c=-1/0;this.activeModelIds.forEach(h=>{const f=this.tilesetMap[h];if(!f)return;const p=[],A=f.leiting?.box,C=f.root?.boundingVolume?.boundingVolume;if(A&&A.min&&A.max){const{min:m,max:y}=A,E=[new e.Cartesian3(m.x,m.y,m.z),new e.Cartesian3(y.x,m.y,m.z),new e.Cartesian3(m.x,y.y,m.z),new e.Cartesian3(y.x,y.y,m.z),new e.Cartesian3(m.x,m.y,y.z),new e.Cartesian3(y.x,m.y,y.z),new e.Cartesian3(m.x,y.y,y.z),new e.Cartesian3(y.x,y.y,y.z)],I=f.root.transform;E.forEach(M=>{p.push(e.Matrix4.multiplyByPoint(I,M,new e.Cartesian3))})}else if(C&&C.halfAxes){const m=C.center,y=C.halfAxes,E=e.Matrix3.getColumn(y,0,new e.Cartesian3),I=e.Matrix3.getColumn(y,1,new e.Cartesian3),M=e.Matrix3.getColumn(y,2,new e.Cartesian3);for(let k=0;k<8;k++){const S=e.Cartesian3.clone(m,new e.Cartesian3);e.Cartesian3.add(S,e.Cartesian3.multiplyByScalar(E,k&1?1:-1,new e.Cartesian3),S),e.Cartesian3.add(S,e.Cartesian3.multiplyByScalar(I,k&2?1:-1,new e.Cartesian3),S),e.Cartesian3.add(S,e.Cartesian3.multiplyByScalar(M,k&4?1:-1,new e.Cartesian3),S),p.push(S)}}else if(f.boundingSphere){const m=f.boundingSphere,y=m.center,E=m.radius,I=e.Matrix4.multiplyByPoint(this.boxInverseMatrix,y,new e.Cartesian3);s=Math.min(s,I.x-E),o=Math.max(o,I.x+E),r=Math.min(r,I.y-E),l=Math.max(l,I.y+E),a=Math.min(a,I.z-E),c=Math.max(c,I.z+E)}p.forEach(m=>{const y=e.Matrix4.multiplyByPoint(this.boxInverseMatrix,m,new e.Cartesian3);s=Math.min(s,y.x),o=Math.max(o,y.x),r=Math.min(r,y.y),l=Math.max(l,y.y),a=Math.min(a,y.z),c=Math.max(c,y.z)})});const u=1.01;this.targetXMinus=Math.abs(s)*u,this.targetXPlus=Math.abs(o)*u,this.targetYMinus=Math.abs(r)*u,this.targetYPlus=Math.abs(l)*u,this.targetZMinus=Math.abs(a)*u,this.targetZPlus=Math.abs(c)*u,this.activeModelIds.forEach(h=>{this.setupClippingPlanes(h)}),this.viewer.scene.requestRender()}getRangeParams(){const e=this.cesium;return{targetZPlus:this.targetZPlus,targetZMinus:this.targetZMinus,targetXPlus:this.targetXPlus,targetXMinus:this.targetXMinus,targetYPlus:this.targetYPlus,targetYMinus:this.targetYMinus,maxBox:new e.Cartesian3(this.targetXPlus,this.targetYPlus,this.targetZPlus),minBox:new e.Cartesian3(-this.targetXMinus,-this.targetYMinus,-this.targetZMinus)}}updateRange(e){if(!this.boxMatrix)return;e.targetXMinus!==void 0&&(this.targetXMinus=e.targetXMinus),e.targetXPlus!==void 0&&(this.targetXPlus=e.targetXPlus),e.targetYMinus!==void 0&&(this.targetYMinus=e.targetYMinus),e.targetYPlus!==void 0&&(this.targetYPlus=e.targetYPlus),e.targetZPlus!==void 0&&(this.targetZPlus=e.targetZPlus),e.targetZMinus!==void 0&&(this.targetZMinus=e.targetZMinus);const t=.1;this.targetXMinus+this.targetXPlus<t&&(this.targetXPlus=t-this.targetXMinus),this.targetYPlus+this.targetYMinus<t&&(this.targetYPlus=t-this.targetYMinus),this.targetZPlus+this.targetZMinus<t&&(this.targetZPlus=t-this.targetZMinus),this.syncClippingPlanes(),this.viewer.scene.requestRender()}getRange(){return this.getRangeParams()}setBoxVisibility(e){this.planeEntities.forEach(t=>{t.show=e}),this.viewer.scene.requestRender()}close(e){if(e){const t=this.tilesetMap[e];t&&(t.clippingPlanes&&(t.clippingPlanes.enabled=!1),t.clippingPlanes=void 0),delete this.clippingPlanesMap[e],this.activeModelIds.delete(e),this.activeModelIds.size>0&&this.fitToModels()}else Object.keys(this.clippingPlanesMap).forEach(t=>{const i=this.tilesetMap[t];i&&(i.clippingPlanes&&(i.clippingPlanes.enabled=!1),i.clippingPlanes=void 0)}),this.clippingPlanesMap={},this.activeModelIds.clear();this.activeModelIds.size===0&&(this.planeEntities.forEach(t=>{this.viewer.entities.remove(t)}),this.planeEntities=[],this.destroyEventHandlers(),this.boxMatrix=null,this.boxInverseMatrix=null),this.viewer.scene.requestRender()}destroyEventHandlers(){this.downHandler?.destroy(),this.upHandler?.destroy(),this.moveHandler?.destroy(),this.downHandler=this.upHandler=this.moveHandler=null}}let _s=performance.now();const Hg=10;class Gg{cesium;viewer;modelInfo={modelName:"Person",modelId:"player_111",url:"person/model.glb",scale:.0032};startTime=0;radian=0;speed=.1;speedVector;position;hpRoll;cameralHpRoll;fixedFrameTransforms;model;transparentTest=!0;gravityTestByMove=!1;gravityTest=!0;lastMoveTime=0;moveInterval=.01;collisionTest=!0;wheelCount=2;isLeftDragging=!1;lastScreenY=0;lastScreenX=0;pauseAnimationFn;resumeAnimationFn;selectedColor;selectedColorRecover;handler;moveState={moveFront:!1,moveBack:!1,moveLeft:!1,moveRight:!1,moveUp:!1,moveDown:!1};onLoading=null;onSuccess=null;onError=null;constructor({cesium:e,viewer:t,modelInfo:i,callbacks:s}){this.cesium=e,this.viewer=t,this.radian=this.cesium.Math.toRadians(4),this.speedVector=new this.cesium.Cartesian3,this.position=new this.cesium.Cartesian3,this.hpRoll=new this.cesium.HeadingPitchRoll,this.cameralHpRoll=new this.cesium.HeadingPitchRoll,this.fixedFrameTransforms=new this.cesium.Transforms.localFrameToFixedFrameGenerator("north","west"),i&&(this.modelInfo=Object.assign(this.modelInfo,i)),s&&(this.onLoading=s.onLoading||null,this.onSuccess=s.onSuccess||null,this.onError=s.onError||null),this.selectedColor=new this.cesium.Color(1,1,1,.4),this.selectedColorRecover=new this.cesium.Color(1,1,1,1);const o=this.viewer.scene.canvas;this.handler=new this.cesium.ScreenSpaceEventHandler(o)}getModel(){return this.model}setPauseAnimation(e){this.pauseAnimationFn=e}setResumeAnimationFn(e){this.resumeAnimationFn=e}async setPersonPosition(e){e&&(this.position=e),this.getModel()?(this.model.modelMatrix=this.cesium.Transforms.headingPitchRollToFixedFrame(e,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms),this.model.show=!0,this.initKeyBoard()):await this.openPlayer(),this.setCameralDefault(!1)}setModelInfo(e){e&&(this.modelInfo=Object.assign(this.modelInfo,e))}async openPlayer(){if(this.enablePositionSelection(),this.model){this.model.show=!0,this.initKeyBoard(),this.setCameralDefault(!1);return}this.position&&!(this.position.x===0&&this.position.y===0&&this.position.z===0)?(await this.loadModel(),this.initKeyBoard(),this.setCameralDefault(!1)):this.onLoading&&this.onLoading("请按住 Ctrl + 左键点击场景选择初始位置...")}enablePositionSelection(){this._positionHandler&&(this._positionHandler.destroy(),this._positionHandler=null);const e=new this.cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);e.setInputAction(async t=>{const i=this.viewer.scene;let s;try{s=i.pickPosition(t.position)}catch(o){console.warn("pickPosition failed:",o)}s&&(this.position=s,this.model?(this.model.modelMatrix=this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms),this.updatedCamera(),this.onSuccess&&this.onSuccess("已更新漫游位置")):(this.onSuccess&&this.onSuccess("位置已选择,正在加载模型..."),await this.loadModel(),this.initKeyBoard(),this.setCameralDefault(!1)))},this.cesium.ScreenSpaceEventType.LEFT_CLICK,this.cesium.KeyboardEventModifier.CTRL),this._positionHandler=e}_positionHandler;setDefaultPosition(){const e=this.viewer.scene,t=this.viewer.camera,i=new this.cesium.Cartesian2(e.canvas.clientWidth/2,e.canvas.clientHeight/2);let s;try{s=e.pickPosition(i)}catch(o){console.warn("pickPosition failed:",o)}if(s)this.position=s;else{const o=t.direction,l=this.cesium.Cartesian3.add(t.positionWC,this.cesium.Cartesian3.multiplyByScalar(o,10,new this.cesium.Cartesian3),new this.cesium.Cartesian3);this.position=l}}async loadModel(){let e;try{this.onLoading&&this.onLoading("正在加载漫游人物...");const t=await this.cesium.Model.fromGltfAsync({id:this.modelInfo.modelId,url:this.modelInfo.url,modelMatrix:this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms),scale:this.modelInfo.scale,allowPicking:!1,debugShowBoundingVolume:!1,debugWireframe:!1,cull:!1,gltfCallback:s=>{e=s.animations},backFaceCulling:!1}),i=()=>{if(e&&e.length>0){console.log("Model has animations:",e.length);try{t.activeAnimations.add({index:0,loop:this.cesium.ModelAnimationLoop.REPEAT,multiplier:1})}catch(s){console.error("Failed to add animation:",s)}this.pauseAnimationFn=()=>{this.viewer.clock.shouldAnimate=!1},this.resumeAnimationFn=()=>{this.viewer.clock.shouldAnimate=!0},this.viewer.clock.shouldAnimate=!1}else console.warn("No animations found in the model.")};t.ready?i():t.readyEvent.addEventListener(i),this.model=await this.viewer.scene.primitives.add(t),this.updatedCamera(),this.onLoading&&this.onLoading(""),this.onSuccess&&this.onSuccess("漫游模型加载完成")}catch(t){console.error("Failed to load model:",t),this.onLoading&&this.onLoading(""),this.onError&&this.onError("漫游模型加载失败")}}initKeyBoard(){const e=this.handler,t=this.cesium;_s=performance.now();const i=(o,r)=>{const l=o.code,a=o.keyCode;l==="KeyA"||a===65?this.moveState.moveLeft=r:l==="KeyW"||a===87?this.moveState.moveFront=r:l==="KeyD"||a===68?this.moveState.moveRight=r:l==="KeyS"||a===83?this.moveState.moveBack=r:l==="KeyQ"||a===81?this.moveState.moveUp=r:(l==="KeyE"||a===69)&&(this.moveState.moveDown=r)};e.setInputAction(o=>{this.wheelCount-=o*.001,this.wheelCount<.1&&(this.wheelCount=.1),this.updatedCamera()},t.ScreenSpaceEventType.WHEEL),this._keydownHandler=o=>{o.target.tagName==="INPUT"||o.target.tagName==="TEXTAREA"||(i(o,!0),this.resumeAnimationFn&&this.resumeAnimationFn())},this._keyupHandler=o=>{o.target.tagName==="INPUT"||o.target.tagName==="TEXTAREA"||(i(o,!1),Object.keys(this.moveState).every(r=>this.moveState[r]==!1)&&this.pauseAnimationFn&&this.pauseAnimationFn())},document.addEventListener("keydown",this._keydownHandler),document.addEventListener("keyup",this._keyupHandler),e.setInputAction(o=>{this.isLeftDragging=!0,this.lastScreenY=o.position.y,this.lastScreenX=o.position.x},this.cesium.ScreenSpaceEventType.LEFT_DOWN),e.setInputAction(o=>{if(!this.isLeftDragging)return;const r=o.endPosition.x,l=o.endPosition.y,a=l-this.lastScreenY,c=r-this.lastScreenX;Math.abs(a)<Math.abs(c)&&(c>0?(this.cameralHpRoll.heading+=this.radian,this.hpRoll.heading+=this.radian):(this.cameralHpRoll.heading-=this.radian,this.hpRoll.heading-=this.radian),s(0),this.lastScreenX=r),this.lastScreenY=l;const u=this.viewer.camera;this.cameralHpRoll.pitch=u.pitch+this.cesium.Math.toRadians(-a*.1),this.updatedCamera()},t.ScreenSpaceEventType.MOUSE_MOVE),e.setInputAction(()=>{this.isLeftDragging&&(this.isLeftDragging=!1)},t.ScreenSpaceEventType.LEFT_UP);const s=o=>{const r=performance.now();if(r-_s<Hg)return;_s=r;const l=1.75;if(o===1?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_X,this.speed,this.speedVector),this.gravityTestByMove=!0):o===-1?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_X,-this.speed,this.speedVector),this.gravityTestByMove=!0):o===0?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_X,0,this.speedVector),this.gravityTestByMove=!1):o===2?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_Z,.05,this.speedVector),this.gravityTestByMove=!1):o===-2&&(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_Z,-.05,this.speedVector),this.gravityTestByMove=!1),!this.viewer||!this.model)return;const a=(u,h)=>new this.cesium.Ray(u,h),c=new this.cesium.Cartesian3;if(this.cesium.Matrix4.getColumn(this.model.modelMatrix,0,c),this.cesium.Cartesian3.normalize(c,c),Math.abs(o)!=2&&this.collisionTest){const u=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),h=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,l),u),f=a(h,c),p=this.viewer.scene.pickFromRay(f,[this.model],1);if(p&&p.position&&this.cesium.Cartesian3.distance(h,p.position)<.9&&o===1)return}if(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,this.speedVector,this.position),this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms,this.model.modelMatrix),this.gravityTest){const u=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),h=.5,f=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,h),u),p=new this.cesium.Cartesian3;this.cesium.Cartesian3.subtract(this.position,f,p),this.cesium.Cartesian3.normalize(p,p);const A=a(f,p),C=this.viewer.scene.pickFromRay(A,[this.model],1),m=l,y=this.cesium.Cartesian3.add(f,this.cesium.Cartesian3.multiplyByScalar(c,m,new this.cesium.Cartesian3),new this.cesium.Cartesian3);if(t.defined(C)){const E=t.Cartesian3.distance(f,C.position);E-h>.2&&(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,-.2),this.position)),E-h<-.1&&E<2&&(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,.2),this.position))}if(!C&&this.gravityTestByMove){const E=a(this.position,p),I=this.viewer.scene.pickFromRay(E,[this.model],1);if(I){const M=this.cesium.Cartesian3.distance(this.position,I.position);Math.abs(M-1)>.05&&M<2&&(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,-.2),this.position))}}if(C&&this.gravityTestByMove&&this.gravityTest){const E=this.cesium.Cartesian3.distance(y,C.position);Math.abs(E-l)>.1&&(this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms,this.model.modelMatrix),this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,(l-E)/Math.abs(l-E)*.05),this.position))}}if(this.transparentTest){const u=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),h=1.75,f=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,h),u),p=this.viewer.camera.positionWC,A=f,C=t.Cartesian3.subtract(A,p,new t.Cartesian3),m=t.Cartesian3.distance(f,p),y=t.Cartesian3.normalize(C,new t.Cartesian3),E=new t.Ray(p,y);let I;try{I=this.viewer.scene.pickFromRay(E,void 0,1)}catch{}t.defined(I)&&I.primitive!==this.model&&I.position&&t.Cartesian3.distance(p,I.position)<m&&(this.wheelCount-=.1,this.wheelCount<.1&&(this.wheelCount=.1))}this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms,this.model.modelMatrix),this.updatedCamera()};this._tickHandler=()=>{const o=performance.now()/1e3;(o-this.lastMoveTime>=this.moveInterval||this.lastMoveTime==0)&&(this.moveState.moveFront?(this.moveState.moveLeft&&(this.hpRoll.heading-=this.radian,this.cameralHpRoll.heading-=this.radian),this.moveState.moveRight&&(this.hpRoll.heading+=this.radian,this.cameralHpRoll.heading+=this.radian),s(1)):this.moveState.moveBack?(this.moveState.moveLeft&&(this.hpRoll.heading-=this.radian,this.cameralHpRoll.heading-=this.radian),this.moveState.moveRight&&(this.hpRoll.heading+=this.radian,this.cameralHpRoll.heading+=this.radian),s(-1)):(this.moveState.moveUp&&s(2),this.moveState.moveDown&&s(-2),this.moveState.moveLeft&&(this.hpRoll.heading-=this.radian,this.cameralHpRoll.heading-=this.radian,s(0)),this.moveState.moveRight&&(this.hpRoll.heading+=this.radian,this.cameralHpRoll.heading+=this.radian,s(0))),this.lastMoveTime=o)},this.viewer.clock.onTick.addEventListener(this._tickHandler)}updatedCamera(){if(!this.model)return;const e=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),t=1.75,i=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,t),e);this.viewer.camera.viewBoundingSphere(new this.cesium.BoundingSphere(i,this.wheelCount),this.cameralHpRoll)}_keydownHandler;_keyupHandler;_tickHandler;_uiEventListeners=[];bindUiKeys(e){this.unbindUiKeys(),Object.entries(e).forEach(([t,i])=>{if(!i)return;const s=()=>this.setMoveState(t,!0),o=()=>this.setMoveState(t,!1);i.addEventListener("mousedown",s),i.addEventListener("mouseup",o),i.addEventListener("mouseleave",o),i.addEventListener("touchstart",r=>{r.preventDefault(),s()}),i.addEventListener("touchend",r=>{r.preventDefault(),o()}),this._uiEventListeners.push(()=>{i.removeEventListener("mousedown",s),i.removeEventListener("mouseup",o),i.removeEventListener("mouseleave",o),i.removeEventListener("touchstart",s),i.removeEventListener("touchend",o)})})}unbindUiKeys(){this._uiEventListeners.forEach(e=>e()),this._uiEventListeners=[]}closePlayer(){const e=this.cesium;this.model&&(this.model.show=!1),this.setCameralDefault(!0),this.handler&&(this.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_DOWN),this.handler.removeInputAction(e.ScreenSpaceEventType.MOUSE_MOVE),this.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_UP),this.handler.removeInputAction(e.ScreenSpaceEventType.WHEEL)),this._positionHandler&&(this._positionHandler.destroy(),this._positionHandler=null),this._keydownHandler&&document.removeEventListener("keydown",this._keydownHandler),this._keyupHandler&&document.removeEventListener("keyup",this._keyupHandler),this._tickHandler&&this.viewer.clock.onTick.removeEventListener(this._tickHandler),this.unbindUiKeys(),this.viewer.camera.lookAtTransform(e.Matrix4.IDENTITY),this.onLoading&&this.onLoading("")}setSpeed({speed:e}){this.speed=e/50}setParams({gravityTest:e,collisionTest:t,transparentTest:i}){e!==void 0&&(this.gravityTest=e),t!==void 0&&(this.collisionTest=t),i!==void 0&&(this.transparentTest=i)}setMoveState(e,t){this.moveState.hasOwnProperty(e)&&(this.moveState[e]=t,t?this.resumeAnimationFn&&this.resumeAnimationFn():Object.keys(this.moveState).every(i=>this.moveState[i]==!1)&&this.pauseAnimationFn&&this.pauseAnimationFn())}setCameralDefault(e){const t=this.viewer;t.scene.screenSpaceCameraController.enableRotate=e,t.scene.screenSpaceCameraController.enableTranslate=e,t.scene.screenSpaceCameraController.enableZoom=e,t.scene.screenSpaceCameraController.enableLook=e,t.scene.screenSpaceCameraController.enableTilt=e}}class Yg{cesium;viewer;baseCesium;baseTiles;baseCompt;baseSection;basePlayer;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer,this.baseCesium=new cd(e),this.baseTiles=new ka(e),this.baseCompt=new _g(e),this.baseSection=new Qg(e),this.basePlayer=new Gg({cesium:e.cesium,viewer:e.viewer,modelInfo:{url:e.options?.playerUrl,modelName:e.options?.playerModelName,modelId:e.options?.playerModelId,scale:e.options?.playerScale},callbacks:e.callbacks})}getCesium(){return this.cesium}getViewer(){return this.viewer}setSceneOptions(...e){this.baseCesium.setSceneOptions(...e)}getSnapDomSImageBase64(...e){return this.baseCesium.getSnapDomSImageBase64(...e)}clearBackground(){this.baseCesium.clearBackground()}enableTestLabel(){this.baseCesium.enableTestLabel()}enableCesiumFXAA(e){this.baseCesium.enableCesiumFXAA(e)}updateModelEffect(e){this.baseCesium.updateModelEffect(e)}addModels(...e){return this.baseTiles.addModels(...e)}}class Vg{cesium;viewer;mapLayers={};renderGen={};renderGenAll=0;renderGenByModel={};modelId="default";options={flyTo:!0};dxfModelsList=[];open=!1;events=new gi;showGlobal=!0;constructor({viewer:e,cesium:t}){this.viewer=e,this.cesium=t}getMapLayers(e){const t=typeof e=="object"?e?.modelId:e;return t?this.mapLayers[t]||{}:this.mapLayers}setModelId(e){this.modelId=e}getModelId(){return this.modelId}flyToCadModel(e={}){const t=e.modelId||this.modelId,i=this.dxfModelsList.find(s=>s.modelId===t);i&&this.flyToBounds(i)}setDxfOpen(e){this.open=e}getDxfOpen(){return this.open}getDxfModelsList(){return this.dxfModelsList}getDxfModels(e){const t=typeof e=="object"?e?.modelId:e;return t?this.dxfModelsList.find(i=>i.modelId===t):this.dxfModelsList}showJson({modelId:e,show:t}){this.mapLayers[e]&&Object.values(this.mapLayers[e]).forEach(s=>{s.forEach(o=>{o.primitive&&(o.primitive.show=t)})});const i=this.dxfModelsList.find(s=>s.modelId===e);i&&(i.show=t)}showJsonByLayer({modelId:e,show:t,layers:i}){const s=this.dxfModelsList.find(r=>r.modelId===e);if(!s){console.error("Tileset not found for modelId:",e);return}s.hiddenBatchIds||(s.hiddenBatchIds=new Set),s.layerMap&&Array.isArray(i)&&i.forEach(r=>{const l=s.layerMap[r];l!==void 0&&(t?s.hiddenBatchIds.delete(l):s.hiddenBatchIds.add(l))});const o=Array.from(s.hiddenBatchIds);if(o.length>0){const r=o.map(l=>`\${_BATCHID} !== ${l}`).join(" && ");s.style=new this.cesium.Cesium3DTileStyle({show:r})}else s.style=new this.cesium.Cesium3DTileStyle({show:!0});s.hasVisibilityListener||(s.hasVisibilityListener=!0,s.tileVisible.addEventListener(r=>{const l=r.content,a=l.featuresLength;if(a>0&&s.hiddenBatchIds)for(let c=0;c<a;c++)s.hiddenBatchIds.has(c)?l.getFeature(c).show=!1:l.getFeature(c).show=!0}))}flyToBounds(e,t){const i=this.cesium,s=e.boundingSphere?.radius||1e3,o={offset:new i.HeadingPitchRange(0,i.Math.toRadians(-90),s*.5),...t},r=o.duration??0;this.viewer.flyTo(e,{duration:r,offset:o.offset})}async loadModelFile(e){try{if(!e||typeof e!="string")return!1;const t=await fetch(e,{cache:"no-store"});if(!t.ok)throw new Error(`HTTP ${t.status} for ${e}`);if(e.endsWith(".json")||t.headers.get("content-type")?.includes("application/json"))return await t.json();const i=await t.blob(),s=new wa(new Ts(i),{password:"abc!?123",useWebWorkers:!1}),r=(await s.getEntries()).find(c=>!c.directory&&c.filename.endsWith(".json"));if(!r)return console.error("未找到 JSON 文件"),await s.close(),!1;const l=await r.arrayBuffer({useWebWorkers:!1});await s.close();const a=new TextDecoder().decode(l);return JSON.parse(a.trim())}catch(t){return console.error("解压或获取失败:",t),!1}}async addDxfModel({fileNames:e,options:t}){const i=this.renderGenAll;if(e?.length){for(const s of e){if(this.renderGenAll!==i)return;const o=this.renderGenByModel[s.modelId]||0;if((this.renderGenByModel[s.modelId]||0)!==o)return;const r=`${s.outPutPath}${s.dbName}/tileset.json`,l={...this.options,...t};try{const a=`${s.outPutPath}${s.dbName}/layerInfo.zip`,c=await this.loadModelFile(a);if(this.renderGenAll!==i||(this.renderGenByModel[s.modelId]||0)!==o)return;const u=await this.cesium.Cesium3DTileset.fromUrl(r);if(u.maximumScreenSpaceError=0,this.renderGenAll!==i||(this.renderGenByModel[s.modelId]||0)!==o)return;if(Object.assign(u,{modelId:s.modelId,modelName:s.modelName,deltaLatitude:s.deltaLatitude||0,deltaLongitude:s.deltaLongitude||0,relocated:!0,dbName:s.dbName,outPutPath:s.outPutPath,totalRotation:s.totalRotation||0,layerInfo:c}),s.formData?u.formData=s.formData:u.formData={modelId:u.modelId,longitude:u.deltaLongitude,latitude:u.deltaLatitude,distance:1e-6,rotation:0,totalRotation:u.totalRotation,heightDistance:1,height:0,lonlat:1e-6,modelOptions:[{value:u.modelId,label:u.modelName}],selectPoint:{longitude:0,latitude:0,height:0},selectedMode:!1,X:0,Y:0,Z:0},this.adjustingModelByCad({...u.formData,tileset:u}),Array.isArray(c)){const h=c;u.layerMap={};let f=this.mapLayers[s.modelId];f||(f={},this.mapLayers[s.modelId]=f),h.forEach(p=>{u.layerMap[p.layerName]=p.batchId,f[p.layerName]||(f[p.layerName]=[]),f[p.layerName].push({batchId:p.batchId,color:p.layerColor})})}if(this.dxfModelsList.push(u),this.setModelId(s.modelId),this.viewer.scene.primitives.add(u),this.renderGenAll!==i||(this.renderGenByModel[s.modelId]||0)!==o)return;l.flyTo&&this.flyToBounds(u),l.onSuccess&&l.onSuccess(u)}catch(a){console.error(`Failed to load tileset or layer info: ${r}`,a)}}this.events.emit("mountAllCad",this.dxfModelsList)}}adjustingModelByCad(e){const t=this.cesium,i=t.Quaternion.fromAxisAngle(t.Cartesian3.UNIT_Z,t.Math.toRadians(e.totalRotation)),s=t.Matrix4.fromRotationTranslation(t.Matrix3.fromQuaternion(i),new t.Cartesian3(0,0,0)),o=t.Cartesian3.fromDegrees(e.longitude,e.latitude,e.height),r=t.Transforms.eastNorthUpToFixedFrame(o);t.Matrix4.multiply(r,s,r),e.tileset?._root&&(e.tileset._root.transform=r)}deleteCad({modelId:e}){this.mapLayers[e]&&(Object.values(this.mapLayers[e]).forEach(i=>{i.forEach(s=>{this.viewer.scene.primitives.remove(s.primitive),s.primitive?.destroy()})}),delete this.mapLayers[e]),this.renderGen[e]=(this.renderGen[e]||0)+1,this.renderGenByModel[e]=(this.renderGenByModel[e]||0)+1;const t=this.dxfModelsList.findIndex(i=>i.modelId===e);if(t>-1){const i=this.dxfModelsList[t];this.viewer.scene.primitives.remove(i),i.destroy&&!i.isDestroyed()&&i.destroy(),this.dxfModelsList.splice(t,1)}}deleteAllCad(){Object.keys(this.mapLayers).forEach(e=>{this.deleteCad({modelId:e})}),[...this.dxfModelsList].forEach(e=>{e.modelId&&this.deleteCad({modelId:e.modelId})})}}class At{constructor(e,t){if(this.viewer=e,!this.viewer)return;this.type="prompt",t=t||{};const i=t.type==null?1:t.type;let s={id:new Date().getTime()+""+Math.floor(Math.random()*1e4),type:i,anchor:i==2,closeBtn:i==2,offset:i==2?{x:0,y:-20}:{x:10,y:10},content:"",show:!0,style:{background:"rgba(0,0,0,0.5)",color:"white"}};this.opt=Object.assign(s,t),this.attr=this.opt;const o=this.viewer.container.id;this.isShow=this.opt.show==null?!0:this.opt.show;let r="",l="";const a=this.opt.style.background,c=this.opt.style.color;this.opt.anchor&&(r+=`
|
|
81
|
+
`;pi=document.createElement("style"),pi.textContent=n,document.head.appendChild(pi)}function xg(){if(Da)return;Ig(),Te=document.createElement("div"),Te.className="tech-alert-wrapper",document.body.appendChild(Te);const n={setup(){return()=>Ee.visible?d.h(me.Alert,{class:`tech-alert tech-alert-${Ee.type}`,message:Ee.title,description:Ee.description,showIcon:Ee.showIcon,closable:Ee.closable,onClose:()=>{Ee.visible=!1}},{icon:()=>Ee.type==="loading"?d.h(pn.LoadingOutlined):Ee.type==="success"?d.h(pn.CheckCircleOutlined):Ee.type==="error"?d.h(pn.CloseCircleOutlined):Ee.type==="warning"?d.h(pn.ExclamationCircleOutlined):d.h(pn.InfoCircleOutlined)}):null}};Ta=d.createVNode(n),d.render(Ta,Te),Da=!0}function Bn(n){xg(),Ls&&clearTimeout(Ls),Ee.type=n.type||"info",Ee.title=n.title||"",Ee.description=n.description||"",Ee.closable=n.closable??!1,Ee.showIcon=n.showIcon??!0,Ee.visible=!0,Te&&(n.container?(Te.parentNode!==n.container&&n.container.appendChild(Te),Te.style.position="absolute",Te.style.top="20px",Te.style.left="50%",Te.style.transform="translateX(-50%)"):(Te.parentNode!==document.body&&document.body.appendChild(Te),Te.style.position="fixed",Te.style.top="20px",Te.style.left="50%",Te.style.transform="translateX(-50%)"));const e=n.duration??(Ee.type==="loading"?0:3);e>0&&(Ls=setTimeout(()=>{Ee.visible=!1},e*1e3))}const ge={info:(n,e,t,i)=>Bn({type:"info",title:n,description:e,duration:t,container:i}),success:(n,e,t,i)=>Bn({type:"success",title:n,description:e,duration:t,container:i}),error:(n,e,t,i)=>Bn({type:"error",title:n,description:e,duration:t,container:i}),warning:(n,e,t,i)=>Bn({type:"warning",title:n,description:e,duration:t,container:i}),loading:(n,e,t)=>Bn({type:"loading",title:n,description:e,duration:0,container:t}),close:()=>{Ee.visible=!1}},Bg="E84#E3C4!8C4&A1";async function mt(n){try{const e=await fetch(n);if(!e.ok)return ge.error("[loadModelFile] 加载失败",`${n} ${e.status}`),!1;const t=await e.blob();try{const i=new wa(new Ts(t),{password:Bg}),o=(await i.getEntries()).find(l=>!l.directory&&l.filename.endsWith(".json"));if(!o)return await i.close(),!1;const r=await o.getData(new Sp);return await i.close(),JSON.parse(r.trim())}catch{const i=await t.text();try{return JSON.parse(i.trim())}catch(s){throw console.error(`[loadModelFile] JSON parse error: ${n}`,s),s}}}catch(e){return ge.error("[loadModelFile] 加载失败",`${n} ${e}`),!1}}async function Sg(n){if(!n)return null;try{const e=`/cx_dzpt/bim/modelComponentTree/list?dbName=${encodeURIComponent(n)}`,t=await fetch(e);if(!t.ok)return console.warn(`[loadTreeFromApi] API 请求失败: ${e} ${t.status}`),null;const i=await t.json();return Array.isArray(i)?Mg(i):(console.warn("[loadTreeFromApi] API 返回格式错误: 期望数组",i),null)}catch(e){return console.error("[loadTreeFromApi] 加载异常:",e),null}}function Mg(n){const e={},t=[];return n.forEach(i=>{i.id&&(e[i.id]={...i,children:[]})}),n.forEach(i=>{if(!i.id)return;const s=e[i.id];if(!s)return;const o=i.parentId;o&&e[o]?e[o].children?.push(s):t.push(s)}),t}async function Tg(n){if(!n||n.length===0)return null;try{const e=await fetch("/cx_dzpt/bim/modelComponent/listByDbNameAndElementId",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});return e.ok?await e.json():(console.warn(`[fetchComponentDetails] API 请求失败: ${e.status}`),null)}catch(e){return console.error("[fetchComponentDetails] 加载异常:",e),null}}function Dg(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){const e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}class gi{events={};on(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t)}emit(e,...t){this.events[e]&&this.events[e].forEach(i=>i(...t))}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(i=>i!==t))}}class ka{cesium;viewer;modelList=[];hasLoaded3dTiles={};mapRecordModelId={};mapTileset={};BIMmodelId="";lazyLoadingCount=0;events=new gi;options={flyTo:!0,flyToDuration:0,loadTreeNodeDetails:!0,loadTreeNodeDetailsUrl:"/elementInfo.zip",loadTree:!0,loadTreeUrl:"/allElementsInfo.zip",boxRegionUrl:"/BoundingBoxInfo.zip",regionUrl:"/region.zip",batchIDInfoUrl:"/batchIDInfo.zip",enabledSection:!0,delay:0,tilesetOptions:{cullWithChildrenBounds:!0,cullRequestsWhileMoving:!0,cullRequestsWhileMovingMultiplier:10,backFaceCulling:!0,colorBlendAmount:0,minimumPixelSize:128,maximumScreenSpaceError:32,skipLevelOfDetail:!0,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:128,skipLevels:5,immediatelyLoadDesiredLevelOfDetail:!1,loadSiblings:!1,maximumMemoryUsage:4096*10,preloadWhenHidden:!0,preferLeaves:!0,progressiveResolutionHeightFraction:.5,dynamicScreenSpaceErrorDensity:.002,dynamicScreenSpaceErrorFactor:4,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorHeightFalloff:.25,foveatedConeSize:0,foveatedTimeDelay:10,foveatedMinimumScreenSpaceErrorRelaxation:0}};constructor(e){this.cesium=e.cesium,this.viewer=e.viewer,this.options.tilesetOptions&&(this.options.tilesetOptions.colorBlendMode=this.cesium.Cesium3DTileColorBlendMode.REPLACE)}deleteAllModels(){const e=[];return Object.keys(this.mapTileset).forEach(t=>{const i=this.mapTileset[t];i&&(this.viewer.scene.primitives.remove(i),e.push(t)),delete this.mapTileset[t],delete this.hasLoaded3dTiles[t],delete this.mapRecordModelId[t]}),this.modelList=[],this.viewer.scene.requestRender(),this.events.emit("mountAll3Dtiles",{modelList:[],mapTileset:{}}),e}deleteModels(e){const t=[];return e.forEach(({modelId:i})=>{const s=this.mapTileset[i];s&&(this.viewer.scene.primitives.remove(s),t.push(i)),delete this.mapTileset[i],delete this.hasLoaded3dTiles[i],delete this.mapRecordModelId[i]}),this.modelList=this.modelList.filter(i=>!t.includes(i.modelId)),this.viewer.scene.requestRender(),this.events.emit("mountAll3Dtiles",{modelList:this.modelList,mapTileset:this.mapTileset}),t}showModels(e){const t=[];return e.forEach(i=>{const s=`${i.modelId}`,o=this.mapTileset[s];o&&(o.show=!!i.show,t.push(s))}),t.length&&this.viewer.scene.requestRender(),t}async addModels({files:e,fileNames:t,options:i}){const s=e||t||[];s.length>0&&await this.add3DTilesModel(s,i)}async add3DTilesModel(e,t){const i=t?Kh({},this.options,t):{...this.options};if(e?.length){for(const s of e){const o=`${s.modelId}`;if(this.mapRecordModelId[o])continue;const r=`${s.outPutPath}${s.dbName}/tileset.json`;this.modelList.push({...s,url:r,state:Kt.NotLoaded}),this.mapRecordModelId[o]=!1}await this.load3DTilesModel(i)}}async load3DTilesModel(e){const t=this.modelList.filter(r=>r.state===Kt.NotLoaded);if(!t.length)return;const i=t.length;this.events.emit("loadingStatus",`正在加载 ${i} 个模型`);let s=0,o=!1;for(const r of t){s++;try{r.state=Kt.Loading;const l=r.url,a=this.getBaseUrlPath(l);e.loadTreeNodeDetails=!1,e.loadTreeNodeDetails&&this.events.emit("loadingStatus",`正在加载第 ${s}/${i} 个模型: 加载${r.modelName}构件信息`);let c=e.loadTreeNodeDetails?await mt(`${a}${e.loadTreeNodeDetailsUrl}`):!1;e.loadTree=!1,e.loadTree&&this.events.emit("loadingStatus",`正在加载第 ${s}/${i} 个模型: 加载${r.modelName}目录树`);const u=e.loadTree?await mt(`${a}${e.loadTreeUrl}`):!1;this.events.emit("loadingStatus",`正在加载第 ${s}/${i} 个模型: 加载${r.modelName}模型数据`);const h=e.boxRegionUrl?await mt(`${a}${e.boxRegionUrl}`):!1,f=e.batchIDInfoUrl?await mt(`${a}${e.batchIDInfoUrl}`):!1;f&&(c||(c=f));const p=await this.loadTilesetWithZipSupport(l,r.modelId,e.tilesetOptions||{},this.cesium);this.viewer.scene.primitives.add(p),await p.readyPromise;const A=`${p?.asset?.tilesetVersion??r.modelId}`;this.mapTileset[`${r.modelId}`]=p;const C={versionId:A,selectedFn:e.selectedFn,model:{modelId:r.modelId,modelName:r.modelName,dbName:r.dbName,fileType:r.fileType,outPutPath:r.outPutPath,url:r.url,treeUrl:`${a}${e.loadTreeUrl}`,nodeUrl:`${a}${e.loadTreeNodeDetailsUrl}`,formData:r.formData,type:"BIM"},node:c||null,tree:u||null,box:null};if(h?.min&&h?.max){const m={x:h.min.X,y:h.min.Y,z:h.min.Z},y={x:h.max.X,y:h.max.Y,z:h.max.Z},E={x:(m.x+y.x)/2,y:(m.y+y.y)/2,z:(m.z+y.z)/2};C.box={min:m,max:y,center:E}}if(!r.formData){const m=await mt(`${r.outPutPath}${r.dbName}${e.regionUrl}`);if(m)r.formData={modelId:r.modelId.toString(),longitude:m.Longitude,latitude:m.Latitude,distance:1e-6,rotation:30,totalRotation:m.DAngle||0,height:m.MinHeight,lonlat:1e-5,heightDistance:1,modelOptions:[{value:r.modelId.toString(),label:r.modelName}],X:m?.X||0,Y:m?.Y||0,Z:m?.Z||0};else{const y=t.indexOf(r);r.formData={modelId:r.modelId.toString(),longitude:118.12548706388897,latitude:24.596796919444404,distance:1e-5,rotation:0,totalRotation:0,heightDistance:1,height:0,lonlat:1e-5,modelOptions:[{value:y+1,label:r.modelName}],X:0,Y:0,Z:0}}}r.formData&&(r.formData.heightDistance=r.formData.heightDistance??1,C.model.formData=r.formData),p.leiting=C,dr({Cesium:this.cesium,tileset:p}),r.state=Kt.Loaded,this.mapRecordModelId[r.modelId]=!0,this.events.emit("tilesetLoaded",p),e.tilesLoad3dTiles&&e.tilesLoad3dTiles(p),!o&&e.flyTo&&(this.BIMmodelId=r.modelId,this.flyToTileset({modelId:this.BIMmodelId,options:{duration:e.flyToDuration??0}}),o=!0),e.delay&&await new Promise(m=>setTimeout(m,e.delay))}catch(l){console.error(`模型 ${r.modelName} 加载失败:`,l),this.events.emit("loadingStatus",`模型 ${r.modelName} 加载失败`),r.state=Kt.Error}}e.mountAll3Dtiles&&e.mountAll3Dtiles(this.modelList),e.onMountAll3Dtiles&&e.onMountAll3Dtiles(this.modelList),this.events.emit("loadingStatus",""),this.events.emit("mountAll3Dtiles",{modelList:this.modelList,mapTileset:this.mapTileset})}async addOSGB({files:e,options:t}){const i=this.cesium;if(!e?.length)return;this.events.emit("loadingStatus",`正在加载 ${e.length} 个倾斜摄影模型`);let s=!1,o=0;for(const r of e){o++,this.events.emit("loadingStatus",`正在加载第 ${o}/${e.length} 个模型: 加载${r.modelName}`);try{const{outPutPath:l,dbName:a,modelId:c}=r,u=`${l}${a}/tileset.json`,h=await i.Cesium3DTileset.fromUrl(u,{maximumScreenSpaceError:16,preferLeaves:!0,cullWithChildrenBounds:!0,...t?.tilesetOptions});if(this.viewer.scene.primitives.add(h),await h.readyPromise,this.mapTileset[`${c}`]=h,this.hasLoaded3dTiles[`${c}`]=(this.hasLoaded3dTiles[`${c}`]||0)+1,this.mapRecordModelId[`${c}`]=!0,!r?.formData){const f=h.root.computedTransform;if(f){const p=i.Matrix4.fromColumnMajorArray(f),A=i.Matrix4.getTranslation(p,new i.Cartesian3),C=i.Ellipsoid.WGS84.cartesianToCartographic(A),m=i.Math.toDegrees(C.longitude),y=i.Math.toDegrees(C.latitude),E=C.height;r.formData={modelId:r.modelId.toString(),longitude:m,latitude:y,distance:1e-5,rotation:0,totalRotation:0,heightDistance:1,height:E,lonlat:1e-5,modelOptions:[{value:r.modelId.toString(),label:r.modelName}],X:0,Y:0,Z:0}}else console.warn(`OSGB模型 ${c} 无法获取初始位置信息`)}r.formData&&(r.formData.heightDistance=r.formData.heightDistance??1),h.leiting={versionId:`${h?.asset?.tilesetVersion??c}`,selectedFn:t?.selectedFn,model:{modelId:r.modelId,modelName:r.modelName,dbName:r.dbName,fileType:r.fileType,outPutPath:r.outPutPath,url:u,formData:r.formData,type:"OSGB"},box:null},this.modelList.push({...r,url:u,state:Kt.Loaded}),!s&&t?.flyTo&&(this.viewer.zoomTo(h),s=!0)}catch(l){console.error(`OSGB模型 ${r.dbName} 加载失败:`,l);continue}}this.events.emit("loadingStatus",""),this.events.emit("onMountAllOsgb3Dtiles",{modelList:this.modelList,mapTileset:this.mapTileset})}updateOSGBMatrix(e){const{X:t,Y:i,Z:s,modelId:o}=e,r=this.cesium,l=this.mapTileset[o];if(!l){console.warn("tileSet not found for modelId:",o);return}let a=t||0,c=i||0,u=s||0;const h=l.boundingSphere.center,f=r.Transforms.eastNorthUpToFixedFrame(h),p=new r.Cartesian3(a,c,u),A=r.Matrix4.multiplyByPoint(f,p,new r.Cartesian3(0,0,0)),C=r.Cartesian3.subtract(A,h,new r.Cartesian3);l.modelMatrix=r.Matrix4.fromTranslation(C)}flyToTileset({modelId:e=this.BIMmodelId,options:t={}}={}){const s=this.getMapTileset()[e];if(!s||!this.viewer)return;const{complete:o,cancel:r,...l}=t,a={duration:0,...l};this.viewer.flyTo(s,a).then(c=>{c?o&&o():r&&r()}).catch(c=>{r&&r(),console.error("FlyTo error",c)})}getMapTileset(){return this.mapTileset}getBIMmodelId(){return this.BIMmodelId}getModelList(){return this.modelList}setMapTileset(e){this.mapTileset=e}setBIMmodelId(e){this.BIMmodelId=e}setModelList(e){this.modelList=e}getBaseUrlPath(e){const t=e.lastIndexOf("/");return t===-1?".":e.substr(0,t)}async loadTilesetWithZipSupport(e,t,i,s){const o=`${this.getBaseUrlPath(e)}/tileset.zip`;if((await fetch(o)).status===200){const a=await mt(o);if(a){const c=new Blob([JSON.stringify(a)],{type:"application/json"}),u=URL.createObjectURL(c),h=s.Proxy,f=this.getBaseUrlPath(e);h.getURL=A=>A.includes("blob://")?A.replace(/blob:\/\//g,f):A;const p=new s.Resource({url:u,proxy:h});try{return await s.Cesium3DTileset.fromUrl(p,{id:t,...i})}catch{return await s.Cesium3DTileset.fromUrl(e,{url:e,id:t,...i})}}}return await s.Cesium3DTileset.fromUrl(e,{url:e,id:t,...i})}async loadTreeForModel(e){const t=this.mapTileset[e];if(!t||!t.leiting)return null;if(t.leiting.tree)return t.leiting.tree;const i=t.leiting.model?.modelName||e,s=t.leiting.model?.treeUrl,o=t.leiting.model?.dbName;if(!o&&!s)return null;this.lazyLoadingCount++,this.events.emit("loadingStatus",`正在加载 ${i} 目录树...`);try{if(o){const r=await Sg(o);if(r&&r.length>0)return t.leiting.tree=r,r}if(s){const r=await mt(s);if(r)return t.leiting.tree=r,r}}catch(r){console.error(`Failed to load tree for model ${e}:`,r)}finally{this.lazyLoadingCount--,this.lazyLoadingCount<=0&&(this.lazyLoadingCount=0,this.events.emit("loadingStatus",""))}return null}async loadNodeDetailsForModel(e){const t=this.mapTileset[e];if(!t||!t.leiting)return null;if(t.leiting?.node?.nodeExtras)return t.leiting.node;const i=t.leiting.model?.nodeUrl,s=t.leiting.model?.modelName||e;if(!i)return null;this.lazyLoadingCount++,this.events.emit("loadingStatus",`正在加载 ${s} 构件详情...`);try{const o=await mt(i);if(o)return o.batchIdEIDInfos||(o.batchIdEIDInfos=t.leiting.node.batchIdEIDInfos),t.leiting.node=o,o}catch(o){console.error(`Failed to load node details for model ${e}:`,o)}finally{this.lazyLoadingCount--,this.lazyLoadingCount<=0&&(this.lazyLoadingCount=0,this.events.emit("loadingStatus",""))}return null}}const Pa={normal:0,process:2},kg={color:1};function Fa(n){return n===1||n==="exist"?1:n===2||n==="process"?2:0}function en(n){return Number.isNaN(n)?0:n<=1?Math.min(Math.max(n,0),1):Math.min(Math.max(n/255,0),1)}function Ra(n){return Number.isNaN(n)?1:n<=1?Math.min(Math.max(n,0),1):1}function Ns(n){if(!n)return null;const e=Number(n.r),t=Number(n.g),i=Number(n.b),s=n.a===void 0?1:Number(n.a);if([e,t,i,s].some(a=>Number.isNaN(a)))return null;const o=Math.round(e*255),r=Math.round(t*255),l=Math.round(i*255);return`rgba(${o},${r},${l},${s})`}function Pg(n){if(!n||typeof n!="string")return null;const t=n.replace(/\s+/g,"").match(/^rgba?\((\d+),(\d+),(\d+)(?:,([0-9.]+))?\)$/i);if(!t)return null;const i=Number(t[1]),s=Number(t[2]),o=Number(t[3]),r=t[4]===void 0?1:Number(t[4]);return[i,s,o,r].some(l=>Number.isNaN(l))?null:{r:Math.min(Math.max(i/255,0),1),g:Math.min(Math.max(s/255,0),1),b:Math.min(Math.max(o/255,0),1),a:Math.min(Math.max(r,0),1)}}function Fg(n){if(n==null)return null;const e=Number(n);return Number.isNaN(e)?null:e}function Rg(n){const e=n.lastIndexOf("-"),t=n.substring(0,e),i=n.substring(e+1);return[t,i]}function Us(n){if(!n)return null;const e=n.Min??n.min,t=n.Max??n.max;if(!e||!t)return null;const i=Number(e.x??e.X),s=Number(e.y??e.Y),o=Number(e.z??e.Z),r=Number(t.x??t.X),l=Number(t.y??t.Y),a=Number(t.z??t.Z);return[i,s,o,r,l,a].some(c=>Number.isNaN(c))?null:{min:{x:i,y:s,z:o},max:{x:r,y:l,z:a}}}function Sn(n,e){if(e)return`${e}`;const t=n?.leiting?.model?.modelId??n?.modelId??n?.id;return t==null?null:`${t}`}function Og(n,e){if(e==null)return null;const t=n?.leiting?.node;if(!t)return null;const i=`${e}`,s=t?.[i],o=Us(s?.box3??s?.box);if(o)return o;const r=t?.element?.[i]??t?.elements?.[i]??t?.nodeExtras?.element?.[i]??t?.nodeExtras?.elements?.[i];return Us(r?.box3??r?.box)}function Lg(n){const e=n?.leiting?.box;return e?Us({min:e.min,max:e.max}):null}class Ng{base;constructor(e){this.base=e}initTime(){const t=this.base.cesium.JulianDate.fromDate(new Date(2023,3,21,10,0));this.base.viewer.clock.currentTime=t,this.base.start=this.base.viewer.clock.currentTime.secondsOfDay*1e3}processAnimation(e,t,i,s=null){if(this.base.start==null)return;const o=this.base.start+(e?.delay??0),r=this.base.start+(e?.playtime??0)+(e?.delay??0);t<=o&&(e.cash=!0,e.groupData.forEach(l=>{const{batchIds:a,modelId:c,rgba:u}=l;if(Array.isArray(a)&&a[0]){a[0][1]=u;const h=i[c];h?h.push(a[0]):i[c]=[a[0]]}})),t>=o&&t<r&&(s!==null&&(this.base.viewer.scene.ambientLightIntensity=s),e.cash=!1,e.playCash=!0,e.groupData.forEach(l=>{const{batchIds:a,playTimeColor:c,modelId:u}=l;if(Array.isArray(a)&&a[0]){a[0][1]=c;const h=i[u];h?h.push(a[0]):i[u]=[a[0]]}})),t>=r&&(e.finished=!0)}onTick=e=>{if(!this.base.cesium||!this.base.viewer)return;const t=e?.currentTime?.secondsOfDay?e.currentTime.secondsOfDay*1e3:this.base.viewer.clock.currentTime.secondsOfDay*1e3,i={};Array.isArray(this.base.data)&&this.base.data.forEach(o=>{this.processAnimation(o,t,i,.1)});const s=Object.entries(i);if(s.forEach(([o,r])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:o,batchIds:r})}),Object.keys(this.base.mapAnimations).forEach(o=>{const r=this.base.mapAnimations[o];r.length&&r.every(l=>l.finished)&&!this.base.clearedModelIds.has(o)&&(this.base.setTileSyltByConstructionProcessTracking({modelId:o,batchIds:[]}),this.base.clearedModelIds.add(o))}),this.base.recoverStaus){s.length&&(this.base.recoverStaus=!1);return}s.length===0&&Array.isArray(this.base.data)&&this.base.data.forEach(o=>{o.groupData.forEach(r=>{const{modelId:l}=r;this.base.setTileSyltByConstructionProcessTracking({modelId:l,batchIds:[]})}),this.base.recoverStaus=!0})};enableConstructionProgressTracking(){this.base.clearedModelIds.clear(),this.initTime(),this.base.groupBatchIds={},Array.isArray(this.base.data)&&(this.base.data.forEach(e=>{e.cash=!1,e.playCash=!1,e.groupData.forEach(t=>{const{batchIds:i,modelId:s,rgba:o}=t;if(Array.isArray(i)&&i[0]){i[0][1]=o;const r=this.base.groupBatchIds[s];r?r.push(i[0]):this.base.groupBatchIds[s]=[i[0]]}})}),Object.entries(this.base.groupBatchIds).forEach(([e,t])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:e,batchIds:t})})),this.base.viewer.clock.onTick.addEventListener(this.onTick)}disableConstructionProgressTracking(){this.base.viewer.clock.onTick.removeEventListener(this.onTick),this.base.viewer.scene.ambientLightIntensity=1,Array.isArray(this.base.data)&&this.base.data.forEach(e=>{e.cash=!0,e.playCash=!0,e.groupData.forEach(t=>{const{modelId:i}=t,s=[];this.base.setTileSyltByConstructionProcessTracking({modelId:i,batchIds:s})})}),this.base.start=null}freshConstructionProgressTracking(){const e=this.base.viewer.clock.currentTime.secondsOfDay*1e3,t={};Array.isArray(this.base.data)&&this.base.data.forEach(s=>{s.playCash=!1,this.processAnimation(s,e,t)});const i=Object.entries(t);i.forEach(([s,o])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:s,batchIds:o})}),i.length===0&&Array.isArray(this.base.data)&&this.base.data.forEach(s=>{s.groupData.forEach(o=>{const{modelId:r}=o;this.base.setTileSyltByConstructionProcessTracking({modelId:r,batchIds:[]})})})}reStartAnimation(){let e={};this.base.clearedModelIds.clear(),Array.isArray(this.base.data)&&this.base.data.forEach(t=>{t.cash=!1,t.playCash=!1,t.groupData.forEach(i=>{const{batchIds:s,modelId:o,rgba:r}=i;if(Array.isArray(s)&&s[0]){s[0][1]=r;const l=e[o];l?l.push(s[0]):e[o]=[s[0]]}})}),Object.entries(e).forEach(([t,i])=>{this.base.setTileSyltByConstructionProcessTracking({modelId:t,batchIds:i})}),this.initTime()}setAllConstructionProgressTracking(e){this.base.data=e,Array.isArray(this.base.data)&&this.base.data.forEach(t=>{t.cash=!1,t.playCash=!1,t.groupData=[],t.finished=!1,t.mergeCpts.forEach(i=>{const s=[];i.cpts.forEach(a=>{s.push({dbName:i.linkModelId,modelId:i.modelId,elementId:`${a}`,show:!0,rgba:t.rgba??{r:.4,g:.4,b:.4,a:.1}})});const o=Pa.process,r=kg.color,{allElements:l}=this.base.groupByModelId(s);this.base.mapAnimations[i.modelId]=this.base.mapAnimations[i.modelId]||[],this.base.mapAnimations[i.modelId].push(t),Object.entries(l).forEach(([a,c])=>{const[u,h]=Rg(a),f=this.base.getTileSyltByConstructionProcessTracking({elementIds:c,modelId:u,color:h,colorRank:o,show:!0,selectionRank:r}),p=t?.playTimeColor?.r??1,A=t?.playTimeColor?.g??1,C=t?.playTimeColor?.b??0,m=t?.playTimeColor?.a??.1,y=this.base.setColor({r:p,g:A,b:C,a:m}),E=this.base.setColor(t.rgba??{r:.4,g:.4,b:.4,a:.1});t.groupData.push({modelId:u,batchIds:f,playTimeColor:y,rgba:E})})})})}}class Ug{base;constructor(e){this.base=e}attachTileset(e,t,i){const s=this.base.cesium;this.base.handler||(this.base.handler=new s.ScreenSpaceEventHandler(this.base.viewer.scene.canvas));const o=Sn(e,i);o&&(this.base.tilesetMap[o]=e),t&&(this.base.selectedColor=t),this.bindInputs()}bindInputs(){if(!this.base.handler)return;const e=this.base.cesium;this.base.handler.setInputAction(t=>{let i;try{i=this.base.viewer.scene.pick(t.position)}catch{}if(e.defined(i)&&i instanceof e.Cesium3DTileFeature){this.base.clearSelection();const s=Sn(i.tileset);if(!s||!this.base.tilesetMap[s])return;const o=this.base.getFeatureId(i);if(o==="-1")return;let r;const l=this.base.viewer.scene.pickPosition(t.position);if(e.defined(l)){const u=e.Cartographic.fromCartesian(l),h=e.Math.toDegrees(u.longitude),f=e.Math.toDegrees(u.latitude),p=u.height;r=[h,f,p]}const c=(this.base.hasSelectedFeaturesMap[s]||[]).filter(u=>u.rank!==0);this.base.hasSelectedFeaturesMap[s]=[...c,{batchId:o,selectedColor:this.base.selectedColor,rank:0,point:r}],this.base.setBaseStyle(s),this.base.triggerSelectionChange(),i.tileset.leiting?.selectedFn&&i.tileset.leiting.selectedFn(i.tileset)}else this.base.clearSelection()},e.ScreenSpaceEventType.LEFT_CLICK),this.base.handler.setInputAction(t=>{let i;try{i=this.base.viewer.scene.pick(t.position)}catch{}if(e.defined(i)&&i instanceof e.Cesium3DTileFeature){const s=Sn(i.tileset);if(!s||!this.base.tilesetMap[s])return;const o=this.base.getFeatureId(i);if(o==="-1")return;let r;const l=this.base.viewer.scene.pickPosition(t.position);if(e.defined(l)){const a=e.Cartographic.fromCartesian(l),c=e.Math.toDegrees(a.longitude),u=e.Math.toDegrees(a.latitude),h=a.height;r=[c,u,h]}this.base.toggleMultiSelect(s,o,this.base.selectedColor,r)}},e.ScreenSpaceEventType.LEFT_CLICK,e.KeyboardEventModifier.CTRL),this.base.handler.setInputAction(t=>{this.base.ensureSelectionDiv();const i=this.base.viewer?.scene?.screenSpaceCameraController;i&&this.base.cameraControllerState===null&&(this.base.cameraControllerState={enableRotate:i.enableRotate,enableTilt:i.enableTilt,enableLook:i.enableLook},i.enableRotate=!1,i.enableTilt=!1,i.enableLook=!1),this.base.selectStart=this.base.cesium.Cartesian2.clone(t.position),this.base.selectEnd=null,this.base.selectionDiv&&this.base.selectStart&&(this.base.selectionDiv.style.left=`${this.base.selectStart.x}px`,this.base.selectionDiv.style.top=`${this.base.selectStart.y}px`,this.base.selectionDiv.style.width="0px",this.base.selectionDiv.style.height="0px",this.base.selectionDiv.style.display="block")},e.ScreenSpaceEventType.LEFT_DOWN,e.KeyboardEventModifier.CTRL),this.base.handler.setInputAction(t=>{if(!this.base.selectStart||!this.base.selectionDiv)return;const i=performance.now();if(i-this.base.lastDrawTime<20)return;this.base.lastDrawTime=i,this.base.selectEnd=this.base.cesium.Cartesian2.clone(t.endPosition);const s=Math.min(this.base.selectStart.x,this.base.selectEnd.x),o=Math.min(this.base.selectStart.y,this.base.selectEnd.y),r=Math.abs(this.base.selectStart.x-this.base.selectEnd.x),l=Math.abs(this.base.selectStart.y-this.base.selectEnd.y);this.base.selectionDiv.style.left=`${s}px`,this.base.selectionDiv.style.top=`${o}px`,this.base.selectionDiv.style.width=`${r}px`,this.base.selectionDiv.style.height=`${l}px`,this.base.selectionDiv.style.backgroundColor="rgba(0, 255, 255, 0.5)",this.base.selectionDiv.style.position="absolute",this.base.selectionDiv.style.zIndex="2"},e.ScreenSpaceEventType.MOUSE_MOVE,e.KeyboardEventModifier.CTRL),this.base.handler.setInputAction(()=>{if(!this.base.selectStart||!this.base.selectionDiv)return;if(!this.base.selectStart||!this.base.selectEnd){this.base.selectionDiv.style.display="none";const i=this.base.viewer?.scene?.screenSpaceCameraController;i&&this.base.cameraControllerState!==null&&(i.enableRotate=this.base.cameraControllerState.enableRotate,i.enableTilt=this.base.cameraControllerState.enableTilt,i.enableLook=this.base.cameraControllerState.enableLook,this.base.cameraControllerState=null);return}this.base.selectionDiv.style.display="none",this.base.selectTilesInRectangle(this.base.selectStart,this.base.selectEnd,this.base.selectedColor),this.base.viewer.scene.requestRender(),this.base.selectStart=null,this.base.selectEnd=null;const t=this.base.viewer?.scene?.screenSpaceCameraController;t&&this.base.cameraControllerState!==null&&(t.enableRotate=this.base.cameraControllerState.enableRotate,t.enableTilt=this.base.cameraControllerState.enableTilt,t.enableLook=this.base.cameraControllerState.enableLook,this.base.cameraControllerState=null)},e.ScreenSpaceEventType.LEFT_UP,e.KeyboardEventModifier.CTRL)}unbindInputs(){if(!this.base.handler)return;const e=this.base.cesium;this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_CLICK),this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_CLICK,e.KeyboardEventModifier.CTRL),this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_DOWN,e.KeyboardEventModifier.CTRL),this.base.handler.removeInputAction(e.ScreenSpaceEventType.MOUSE_MOVE,e.KeyboardEventModifier.CTRL),this.base.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_UP,e.KeyboardEventModifier.CTRL)}}class _g{cesium;viewer;data;handler;selectedColor="rgba(255,0,0,1.0)";tilesetMap={};hasSelectedFeaturesMap={};colorRankColor=[];showStateMap={};selectedPosition={x:null,y:null};selectionDiv=null;lastDrawTime=0;selectStart=null;selectEnd=null;cameraControllerState=null;start=null;groupBatchIds={};recoverStaus=!1;mapAnimations={};clearedModelIds=new Set;eidToBatchIdMap={};batchIdToElementIdMap={};animationModule;selectionModule;onSelectionChangeCallbacks=[];loadNodeDetailsForModel;loadNodeDetailsCallback;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer,this.animationModule=new Ng(this),this.selectionModule=new Ug(this)}attachTileset(e,t,i){this.selectionModule.attachTileset(e,t,i)}setLoadNodeDetailsCallback(e){this.loadNodeDetailsCallback=e}selectionChange(e){e&&typeof e=="function"&&this.onSelectionChangeCallbacks.push(e)}removeSelectionChange(e){this.onSelectionChangeCallbacks=this.onSelectionChangeCallbacks.filter(t=>t!==e)}triggerSelectionChange(){if(this.onSelectionChangeCallbacks.length>0){const e=this.getSelected({rank:0});this.onSelectionChangeCallbacks.forEach(t=>{try{t(e)}catch(i){console.error("Selection callback error:",i)}})}}enableSelection(){this.selectionModule.bindInputs()}disableSelection(){this.selectionModule.unbindInputs()}clearSelection(e){this.getTargetModelIds(e).forEach(i=>{const s=this.hasSelectedFeaturesMap[i];if(!s?.length)return;const o=s.filter(r=>r.rank!==0);o.length?(this.hasSelectedFeaturesMap[i]=o,this.setBaseStyle(i)):(delete this.hasSelectedFeaturesMap[i],this.applyShowStyleOnly(i))}),this.viewer.scene.requestRender(),this.triggerSelectionChange()}clearExist(e){this.getTargetModelIds(e).forEach(i=>{const s=this.hasSelectedFeaturesMap[i];if(!s?.length)return;const o=s.filter(r=>r.rank!==1);o.length?(this.hasSelectedFeaturesMap[i]=o,this.setBaseStyle(i)):(delete this.hasSelectedFeaturesMap[i],this.applyShowStyleOnly(i))}),this.viewer.scene.requestRender()}clearProcess(e){this.getTargetModelIds(e).forEach(i=>{const s=this.hasSelectedFeaturesMap[i];if(!s?.length)return;const o=s.filter(r=>r.rank!==2);o.length?(this.hasSelectedFeaturesMap[i]=o,this.setBaseStyle(i)):(delete this.hasSelectedFeaturesMap[i],this.applyShowStyleOnly(i))}),this.viewer.scene.requestRender()}clearAllHaveSelected(){this.getTargetModelIds().forEach(t=>{this.hasSelectedFeaturesMap[t]&&(delete this.hasSelectedFeaturesMap[t],this.applyShowStyleOnly(t))}),this.viewer.scene.requestRender(),this.triggerSelectionChange()}getSelected(e){const t=e&&typeof e=="object"&&"rank"in e?e.rank:e,i=Fa(t),s=[];return Object.keys(this.hasSelectedFeaturesMap).forEach(o=>{(this.hasSelectedFeaturesMap[o]||[]).forEach(l=>{if(l.rank!==i)return;const a=Pg(l.selectedColor);let c=this.getBatchIdToElementIdSync(l.batchId,o);c===null&&(c=l.batchId),s.push({elementId:c,modelId:o,rgba:a||void 0,point:l?.point||void 0})})}),s}getBatchIdToElementIdSync(e,t){if(this.batchIdToElementIdMap[t])return this.batchIdToElementIdMap[t].get(e)??null;const s=this.tilesetMap[t]?.leiting?.node?.batchIdEIDInfos;if(s&&Array.isArray(s)){const o=new Map;return s.forEach(r=>{r&&r.elementID&&o.set(`${r.batchId}`,`${r.elementID}`)}),this.batchIdToElementIdMap[t]=o,o.get(e)??null}return null}setAllConstructionProgressTracking(e){this.animationModule.setAllConstructionProgressTracking(e)}initTime(){this.animationModule.initTime()}processAnimation(e,t,i,s=null){this.animationModule.processAnimation(e,t,i,s)}onTick=e=>{this.animationModule.onTick(e)};enableConstructionProgressTracking(){this.animationModule.enableConstructionProgressTracking()}disableConstructionProgressTracking(){this.animationModule.disableConstructionProgressTracking()}freshConstructionProgressTracking(){this.animationModule.freshConstructionProgressTracking()}reStartAnimation(){this.animationModule.reStartAnimation()}setTileSyltByConstructionProcessTracking({modelId:e,batchIds:t}){const i=this.tilesetMap[e];if(!i)return;const s=i?.style?.show?.conditionsExpression?.conditions;Array.isArray(t)&&t.length?s?i.style=new this.cesium.Cesium3DTileStyle({show:{conditions:s},color:{conditions:t}}):i.style=new this.cesium.Cesium3DTileStyle({color:{conditions:t}}):this.applyShowStyleOnly(e),this.viewer.scene.requestRender()}resumeFlyTo(){this.viewer.clock.shouldAnimate=!0}pauseFlyTo(){this.viewer.clock.shouldAnimate=!1}flyToObjects({selectCpts:e,options:t}){if(!Array.isArray(e)||e.length===0)return;this.clearSelection(),this.setSelectColorUserModelCpt(e,{rank:0});const i=this.cesium,s=t?.scale??1,o=[];if(e.forEach(r=>{const l=r?.modelId,a=r?.elementId;if(l==null)return;const c=this.tilesetMap[`${l}`];if(!c)return;const h=Og(c,a)||Lg(c);if(!h)return;const f=new i.Cartesian3(h.min.x,h.min.y,h.min.z),p=new i.Cartesian3(h.max.x,h.max.y,h.max.z),A=c?.root?.computedTransform??c?.modelMatrix;if(A){const C=i.Matrix4.multiplyByPoint(A,f,new i.Cartesian3),m=i.Matrix4.multiplyByPoint(A,p,new i.Cartesian3);o.push(C,m)}else o.push(f,p)}),o.length){const r=i.BoundingSphere.fromPoints(o);r.radius=r.radius*s;const l=this.viewer.scene.camera,a=new i.HeadingPitchRange(l.heading,l.pitch,0);l.flyToBoundingSphere(r,{duration:t?.duration??0,complete:t?.complete,offset:a})}else{const r=e[0]?.modelId,l=r?this.tilesetMap[`${r}`]:null;l&&this.viewer.flyTo(l,{duration:t?.duration??0,complete:t?.complete})}}setBaseStyle(e){this.getTargetModelIds(e).forEach(i=>{this.setColorStyle(i)})}setColorStyle(e){this.updateTilesetStyle(e)}buildColorConditions(e){const t=this.tilesetMap[e],i=this.hasSelectedFeaturesMap[e];if(!t||!i?.length)return;const s=new Map;i.forEach(a=>{const c=s.get(a.batchId);(!c||a.rank>=c.rank)&&s.set(a.batchId,a)});const o=new Map;if(s.forEach(({batchId:a,selectedColor:c})=>{o.has(c)||o.set(c,new Set),o.get(c)?.add(a)}),this.colorRankColor.length){const a=new Set;this.colorRankColor.forEach(c=>{const u=o.get(c);u&&u.forEach(h=>a.add(h))}),o.forEach((c,u)=>{if(this.colorRankColor.includes(u))return;const h=new Set;c.forEach(f=>{a.has(f)||h.add(f)}),o.set(u,h)})}const r=[...this.colorRankColor.filter(a=>o.has(a)),...Array.from(o.keys()).filter(a=>!this.colorRankColor.includes(a))],l=[];return r.forEach(a=>{const c=o.get(a);if(!c||!c.size)return;const u=Array.from(c).join("|");u&&l.push([`(regExp('^(${u})$').test(\${id}))`,a])}),l.length?l:void 0}updateTilesetStyle(e){const t=this.tilesetMap[e];if(!t)return;const i=this.showStateMap[e],s=i?this.buildShowConditions(i.batchIds,i.mode):void 0,o=this.buildColorConditions(e);s||o?t.style=new this.cesium.Cesium3DTileStyle({show:s?{conditions:s}:void 0,color:o?{conditions:o}:void 0}):t.style=void 0,this.viewer.scene.requestRender()}setShowStyle(e){this.getTargetModelIds(e?.modelId).forEach(i=>{const s=this.showStateMap[i]||{batchIds:[],mode:"include"};this.showStateMap[i]={batchIds:e?.batchIds??s.batchIds,mode:e?.mode??s.mode},this.updateTilesetStyle(i)})}setColor(e){if(!e)return this.selectedColor;if(typeof e=="string")return e;const t=en(Number(e.r)),i=en(Number(e.g)),s=en(Number(e.b)),o=Ra(e.a===void 0?1:Number(e.a));return Ns({r:t,g:i,b:s,a:o})||this.selectedColor}groupByModelId(e){const t={};return e.forEach(i=>{const s=i?.modelId,o=i?.elementId;if(s==null||o===void 0||o===null)return;const r=i?.color??i?.rgba,l=this.setColor(r??{r:.4,g:.4,b:.4,a:.1}),a=`${s}-${l}`;t[a]||(t[a]=[]),t[a].push(`${o}`)}),{allElements:t,transform:null,box:null}}getBatchId(e,t){const i=`${t}`,s=`${e}`;if(this.eidToBatchIdMap[i]){const a=this.eidToBatchIdMap[i].get(s);if(a!==void 0)return a}const r=this.tilesetMap[i]?.leiting?.node?.batchIdEIDInfos;if(r&&Array.isArray(r)){const a=new Map;r.forEach(u=>{a.set(`${u.elementID}`,`${u.batchId}`)}),this.eidToBatchIdMap[i]=a;const c=a.get(s);if(c!==void 0)return c}const l=Fg(e);return l!=null?String(l):null}setComponentVisibility(e){if(!Array.isArray(e))return;const t=new Set;e.forEach(i=>{const s=`${i.modelId}`,o=this.getBatchId(i.elementId,s);if(o===null)return;t.add(s);const r=this.showStateMap[s]||{batchIds:[],mode:"exclude"},l=new Set(r.batchIds);r.mode==="exclude"?i.show?l.delete(o):l.add(o):i.show?l.add(o):l.delete(o),r.batchIds=Array.from(l),this.showStateMap[s]=r}),t.forEach(i=>this.updateTilesetStyle(i))}setAllComponentsVisibility(e){this.getTargetModelIds().forEach(i=>{e?this.setShowStyle({modelId:i,batchIds:[],mode:"exclude"}):this.setShowStyle({modelId:i,batchIds:[],mode:"include"})})}getComponentsByVisibility(e){const t=[];return Object.keys(this.showStateMap).forEach(i=>{const s=this.showStateMap[i],o=this.tilesetMap[i];if(!o?.leiting?.node?.batchIdEIDInfos)return;const r=o.leiting.node.batchIdEIDInfos,l=new Set(s?.batchIds??[]);r.forEach(a=>{const c=l.has(`${a.batchId}`);(s?.mode==="include"?c:!c)===e&&t.push({elementId:`${a.elementID}`,modelId:i})})}),t}getTileSyltByConstructionProcessTracking({elementIds:e,modelId:t,color:i,colorRank:s,show:o,selectionRank:r}){const l=this.tilesetMap[t];if(!Array.isArray(e))return[];const a=l.leiting.node,c=new Set(e),u=a.batchIdEIDInfos.filter(f=>c.has(`${f.elementID}`)).map(f=>String(f.batchId));return u.length?(s===Pa.normal&&!this.colorRankColor.includes(i)&&(this.colorRankColor=[i]),[[`(regExp('^(${u.join("|")})$').test(\${id}))`,i]]):[]}setSelectColorUserModelCpt(e,t){if(!Array.isArray(e))return;const i=new Map,s=t?.rank===void 0?"exist":t?.rank,o=Fa(s);e.forEach(r=>{const l=r?.modelId;if(l==null)return;const a=`${l}`,c=Array.isArray(r?.elementIds)?r.elementIds:r?.elementId?[r.elementId]:[];if(!c.length)return;const u=Ns(r?.rgba)||this.selectedColor;c.forEach(h=>{const f=this.getBatchId(h,a);f!==null&&(i.has(a)||i.set(a,[]),i.get(a)?.push({batchId:f,selectedColor:u,rank:o}))})}),i.forEach((r,l)=>{const a=this.mergeSelections(l,r);this.hasSelectedFeaturesMap[l]=a,this.setBaseStyle(l)}),this.triggerSelectionChange()}setAllSelectColorUserModelCpt({modelId:e,rgba:t}){if(!e)return;const i=String(e),s=this.tilesetMap[i];if(!s)return;const o=s?.leiting?.node?.batchIdEIDInfos;if(!o||!Array.isArray(o))return;const r=[];o.forEach(l=>{l&&l.elementID!==void 0&&r.push(l.elementID)}),r.length!==0&&this.setSelectColorUserModelCpt([{modelId:i,elementIds:r,rgba:t}],{rank:0})}getFeatureId(e){if(this.cesium.defined(e)&&this.cesium.defined(e.getProperty)){const t=e.getProperty("id");return t!=null?String(t):"-1"}return"-1"}getTargetModelIds(e){return e?[e]:Object.keys(this.tilesetMap)}buildShowConditions(e,t){const i=e.join("|");return i?t==="include"?[[`(regExp('^(${i})$').test(\${id}))`,"true"],["true","false"]]:[[`(regExp('^(${i})$').test(\${id}))`,"false"],["true","true"]]:t==="include"?[["true","false"]]:void 0}applyShowStyleOnly(e){const t=this.tilesetMap[e];if(!t)return;const i=this.showStateMap[e],s=i?this.buildShowConditions(i.batchIds,i.mode):void 0;s?t.style=new this.cesium.Cesium3DTileStyle({show:{conditions:s}}):t.style=void 0}setSelectedColorRgba(e,t,i,s=1){const o=en(e),r=en(t),l=en(i),a=Ra(s),c=Ns({r:o,g:r,b:l,a});c&&(this.selectedColor=c)}mergeSelections(e,t){const i=new Map;return(this.hasSelectedFeaturesMap[e]||[]).forEach(o=>i.set(o.batchId,o)),t.forEach(o=>{const r=i.get(o.batchId);(!r||o.rank>r.rank||o.rank===r.rank)&&i.set(o.batchId,o)}),Array.from(i.values())}toggleMultiSelect(e,t,i,s){const o=this.hasSelectedFeaturesMap[e]||[],r=o.filter(h=>h.rank!==0),l=o.filter(h=>h.rank===0),c=l.some(h=>h.batchId===t)?l.filter(h=>h.batchId!==t):[...l,{batchId:t,selectedColor:i,rank:0,point:s}],u=[...r,...c];u.length?(this.hasSelectedFeaturesMap[e]=u,this.setBaseStyle(e)):(delete this.hasSelectedFeaturesMap[e],this.applyShowStyleOnly(e)),this.triggerSelectionChange()}ensureSelectionDiv(){if(this.selectionDiv)return;const e=document.createElement("div");e.style.display="none",e.style.pointerEvents="none",e.style.border="1px solid rgba(0, 255, 255, 0.8)",this.viewer.container.appendChild(e),this.selectionDiv=e}isRepeatedClick(e){const t=e?.position;return!t||typeof t.x!="number"||typeof t.y!="number"?!1:this.selectedPosition.x===t.x&&this.selectedPosition.y===t.y?!0:(this.selectedPosition.x=t.x,this.selectedPosition.y=t.y,!1)}selectTilesInRectangle(e,t,i){const s=Math.min(e.x,t.x),o=Math.max(e.x,t.x),r=Math.min(e.y,t.y),l=Math.max(e.y,t.y),a=o-s,c=l-r;if(Math.abs(a)<15||Math.abs(c)<15)return;const u=s+a/2,h=r+c/2,f=new this.cesium.Cartesian2(u,h),p=this.viewer.scene.drillPick(f,void 0,a,c);if(!Array.isArray(p))return;const A=new Map;p.forEach(C=>{if(!(C instanceof this.cesium.Cesium3DTileFeature))return;const m=Sn(C.tileset);if(!m||!this.tilesetMap[m])return;const y=this.getFeatureId(C);y!=="-1"&&(A.has(m)||A.set(m,new Set),A.get(m)?.add(y))}),A.forEach((C,m)=>{const y=this.hasSelectedFeaturesMap[m]||[],E=y.filter(S=>S.rank!==0),I=new Set(y.filter(S=>S.rank===0).map(S=>S.batchId)),M=[];C.forEach(S=>{I.has(S)||M.push({batchId:S,selectedColor:i,rank:0})});const k=y.filter(S=>S.rank===0);this.hasSelectedFeaturesMap[m]=[...E,...k,...M],this.setBaseStyle(m)}),this.triggerSelectionChange()}}class Qg{cesium;viewer;tilesetMap={};planeEntities=[];clippingPlanesMap={};activeModelIds=new Set;boxMatrix=null;boxInverseMatrix=null;boxCenter=null;boxOrientation=null;targetZPlus=0;targetZMinus=0;targetXPlus=0;targetXMinus=0;targetYPlus=0;targetYMinus=0;currentPlaneType="";selectedPlane=null;hoveredPlane=null;dragStartPoint=null;moveCallBack=null;downHandler=null;upHandler=null;moveHandler=null;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer}attachTileset(e,t){this.tilesetMap[t]=e}open(e,t){!this.tilesetMap[e]||this.activeModelIds.has(e)||(this.activeModelIds.add(e),this.moveCallBack=t?.moveCallBack,this.fitToModels(),this.activeModelIds.size===1&&(this.createPlaneEntities(),this.initEventHandlers()))}setupClippingPlanes(e){const t=this.cesium,i=this.tilesetMap[e];if(!i||!this.boxMatrix)return;const s=new t.ClippingPlaneCollection({planes:[new t.ClippingPlane(new t.Cartesian3(1,0,0),this.targetXMinus),new t.ClippingPlane(new t.Cartesian3(-1,0,0),this.targetXPlus),new t.ClippingPlane(new t.Cartesian3(0,1,0),this.targetYMinus),new t.ClippingPlane(new t.Cartesian3(0,-1,0),this.targetYPlus),new t.ClippingPlane(new t.Cartesian3(0,0,1),this.targetZMinus),new t.ClippingPlane(new t.Cartesian3(0,0,-1),this.targetZPlus)],edgeWidth:2,edgeColor:t.Color.WHITE,enabled:!0,unionClippingRegions:!0}),o=t.Matrix4.inverse(i.root.transform,new t.Matrix4);s.modelMatrix=t.Matrix4.multiply(o,this.boxMatrix,new t.Matrix4),i.clippingPlanes=s,this.clippingPlanesMap[e]=s}createPlaneEntities(){const e=this.cesium,t=this.viewer;this.planeEntities.forEach(s=>t.entities.remove(s)),this.planeEntities=[];const i=["left","right","behind","front","top","down"];for(const s of i){const o=t.entities.add({name:s,position:new e.CallbackProperty(()=>{if(!this.boxMatrix)return e.Cartesian3.ZERO;const r=this.getPlaneOffsetCartesian(s);return e.Matrix4.multiplyByPoint(this.boxMatrix,r,new e.Cartesian3)},!1),orientation:new e.CallbackProperty(()=>this.boxOrientation||e.Quaternion.IDENTITY,!1),plane:{dimensions:new e.CallbackProperty(()=>{if(this.activeModelIds.size===0)return new e.Cartesian2(0,0);const r=.1,l=Math.max(r,this.targetXMinus+this.targetXPlus),a=Math.max(r,this.targetYPlus+this.targetYMinus),c=Math.max(r,this.targetZPlus+this.targetZMinus);return s==="top"||s==="down"?new e.Cartesian2(l,a):s==="left"||s==="right"?new e.Cartesian2(a,c):new e.Cartesian2(l,c)},!1),material:e.Color.WHITE.withAlpha(.1),outline:!0,outlineColor:e.Color.YELLOW,plane:new e.CallbackProperty(()=>new e.Plane(this.getNormalByType(s),0),!1)}});this.planeEntities.push(o)}}getPlaneOffsetCartesian(e){const t=(this.targetXPlus-this.targetXMinus)/2,i=(this.targetYPlus-this.targetYMinus)/2,s=(this.targetZPlus-this.targetZMinus)/2;switch(e){case"left":return new this.cesium.Cartesian3(-this.targetXMinus,i,s);case"right":return new this.cesium.Cartesian3(this.targetXPlus,i,s);case"behind":return new this.cesium.Cartesian3(t,-this.targetYMinus,s);case"front":return new this.cesium.Cartesian3(t,this.targetYPlus,s);case"top":return new this.cesium.Cartesian3(t,i,this.targetZPlus);case"down":return new this.cesium.Cartesian3(t,i,-this.targetZMinus);default:return this.cesium.Cartesian3.ZERO}}getNormalByType(e){const t=this.cesium;switch(e){case"left":return new t.Cartesian3(1,0,0);case"right":return new t.Cartesian3(-1,0,0);case"behind":return new t.Cartesian3(0,1,0);case"front":return new t.Cartesian3(0,-1,0);case"top":return new t.Cartesian3(0,0,-1);case"down":return new t.Cartesian3(0,0,1);default:return t.Cartesian3.UNIT_X}}getPlaneByType(e){const t=this.cesium,i=this.getNormalByType(e),s=t.Cartesian3.negate(i,new t.Cartesian3);let o=0;switch(e){case"left":o=this.targetXMinus;break;case"right":o=this.targetXPlus;break;case"behind":o=this.targetYMinus;break;case"front":o=this.targetYPlus;break;case"top":o=this.targetZPlus;break;case"down":o=this.targetZMinus;break}return new t.Plane(s,-o)}initEventHandlers(){const e=this.cesium,t=this.viewer.scene.canvas,i=this.viewer.scene;this.downHandler=new e.ScreenSpaceEventHandler(t),this.upHandler=new e.ScreenSpaceEventHandler(t),this.moveHandler=new e.ScreenSpaceEventHandler(t),this.moveHandler.setInputAction(s=>{if(this.selectedPlane)return;let o;try{o=i.pick(s.endPosition)}catch{}e.defined(o)&&o.id&&o.id.plane?this.hoveredPlane!==o.id.plane&&(this.hoveredPlane&&(this.hoveredPlane.material=e.Color.WHITE.withAlpha(.1)),this.hoveredPlane=o.id.plane,this.hoveredPlane.material=e.Color.YELLOW.withAlpha(.3),t.style.cursor="pointer"):this.hoveredPlane&&(this.hoveredPlane.material=e.Color.WHITE.withAlpha(.1),this.hoveredPlane=null,t.style.cursor="default")},e.ScreenSpaceEventType.MOUSE_MOVE),this.downHandler.setInputAction(s=>{let o;try{o=i.pick(s.position)}catch{}if(e.defined(o)&&o.id&&o.id.plane){this.currentPlaneType=o.id.name,this.selectedPlane=o.id.plane,this.selectedPlane.material=e.Color.RED.withAlpha(.4),i.screenSpaceCameraController.enableInputs=!1;const r=i.camera.getPickRay(s.position),l=this.boxInverseMatrix,a=e.Matrix4.multiplyByPoint(l,r.origin,new e.Cartesian3),c=e.Matrix4.multiplyByPointAsVector(l,r.direction,new e.Cartesian3);e.Cartesian3.normalize(c,c);const u=new e.Ray(a,c),h=this.getPlaneByType(this.currentPlaneType);this.dragStartPoint=e.IntersectionTests.rayPlane(u,h,new e.Cartesian3),this.dragStartPoint||(this.dragStartPoint=this.getPlaneOffsetCartesian(this.currentPlaneType))}},e.ScreenSpaceEventType.LEFT_DOWN),this.moveHandler.setInputAction(s=>{if(!this.selectedPlane||!this.dragStartPoint)return;const o=i.camera.getPickRay(s.endPosition),r=this.boxInverseMatrix,l=e.Matrix4.multiplyByPoint(r,o.origin,new e.Cartesian3),a=e.Matrix4.multiplyByPointAsVector(r,o.direction,new e.Cartesian3);e.Cartesian3.normalize(a,a);const c=new e.Ray(l,a);let u=new e.Cartesian3;this.currentPlaneType==="top"||this.currentPlaneType==="down"?u=Math.abs(a.x)>Math.abs(a.y)?e.Cartesian3.UNIT_X:e.Cartesian3.UNIT_Y:this.currentPlaneType==="left"||this.currentPlaneType==="right"?u=Math.abs(a.y)>Math.abs(a.z)?e.Cartesian3.UNIT_Y:e.Cartesian3.UNIT_Z:u=Math.abs(a.x)>Math.abs(a.z)?e.Cartesian3.UNIT_X:e.Cartesian3.UNIT_Z;const h=-e.Cartesian3.dot(this.dragStartPoint,u),f=new e.Plane(u,h);let p=e.IntersectionTests.rayPlane(c,f,new e.Cartesian3);if(!p){const C=u===e.Cartesian3.UNIT_X?e.Cartesian3.UNIT_Y:u===e.Cartesian3.UNIT_Y&&(this.currentPlaneType==="top"||this.currentPlaneType==="down")?e.Cartesian3.UNIT_X:e.Cartesian3.UNIT_Z,m=-e.Cartesian3.dot(this.dragStartPoint,C);p=e.IntersectionTests.rayPlane(c,new e.Plane(C,m),new e.Cartesian3)}if(!p)return;const A=.01;switch(this.currentPlaneType){case"left":this.targetXMinus=Math.max(-this.targetXPlus+A,-p.x);break;case"right":this.targetXPlus=Math.max(-this.targetXMinus+A,p.x);break;case"behind":this.targetYMinus=Math.max(-this.targetYPlus+A,-p.y);break;case"front":this.targetYPlus=Math.max(-this.targetYMinus+A,p.y);break;case"top":this.targetZPlus=Math.max(-this.targetZMinus+A,p.z);break;case"down":this.targetZMinus=Math.max(-this.targetZPlus+A,-p.z);break}this.syncClippingPlanes(),this.moveCallBack&&this.moveCallBack(this.getRangeParams())},e.ScreenSpaceEventType.MOUSE_MOVE),this.upHandler.setInputAction(()=>{this.selectedPlane&&(this.selectedPlane.material=e.Color.WHITE.withAlpha(.1),this.selectedPlane=null,this.currentPlaneType="",this.dragStartPoint=null),i.screenSpaceCameraController.enableInputs=!0,t.style.cursor="default"},e.ScreenSpaceEventType.LEFT_UP)}syncClippingPlanes(){this.activeModelIds.size!==0&&Object.keys(this.clippingPlanesMap).forEach(e=>{const t=this.clippingPlanesMap[e],i=this.tilesetMap[e];if(t&&i&&!t.isDestroyed()){const s=this.cesium;t.get(0).distance=this.targetXMinus,t.get(1).distance=this.targetXPlus,t.get(2).distance=this.targetYMinus,t.get(3).distance=this.targetYPlus,t.get(4).distance=this.targetZMinus,t.get(5).distance=this.targetZPlus;const o=s.Matrix4.inverse(i.root.transform,new s.Matrix4);t.modelMatrix=s.Matrix4.multiply(o,this.boxMatrix,new s.Matrix4)}})}fitToModels(){const e=this.cesium;if(this.activeModelIds.size===0)return;let t=[];if(this.activeModelIds.forEach(h=>{const f=this.tilesetMap[h];f&&f.boundingSphere&&t.push(f.boundingSphere.center)}),t.length===0)return;const i=new e.Cartesian3;t.forEach(h=>e.Cartesian3.add(i,h,i)),this.boxCenter=e.Cartesian3.divideByScalar(i,t.length,new e.Cartesian3),this.boxMatrix=e.Transforms.eastNorthUpToFixedFrame(this.boxCenter),this.boxInverseMatrix=e.Matrix4.inverse(this.boxMatrix,new e.Matrix4),this.boxOrientation=e.Quaternion.fromRotationMatrix(e.Matrix4.getMatrix3(this.boxMatrix,new e.Matrix3));let s=1/0,o=-1/0,r=1/0,l=-1/0,a=1/0,c=-1/0;this.activeModelIds.forEach(h=>{const f=this.tilesetMap[h];if(!f)return;const p=[],A=f.leiting?.box,C=f.root?.boundingVolume?.boundingVolume;if(A&&A.min&&A.max){const{min:m,max:y}=A,E=[new e.Cartesian3(m.x,m.y,m.z),new e.Cartesian3(y.x,m.y,m.z),new e.Cartesian3(m.x,y.y,m.z),new e.Cartesian3(y.x,y.y,m.z),new e.Cartesian3(m.x,m.y,y.z),new e.Cartesian3(y.x,m.y,y.z),new e.Cartesian3(m.x,y.y,y.z),new e.Cartesian3(y.x,y.y,y.z)],I=f.root.transform;E.forEach(M=>{p.push(e.Matrix4.multiplyByPoint(I,M,new e.Cartesian3))})}else if(C&&C.halfAxes){const m=C.center,y=C.halfAxes,E=e.Matrix3.getColumn(y,0,new e.Cartesian3),I=e.Matrix3.getColumn(y,1,new e.Cartesian3),M=e.Matrix3.getColumn(y,2,new e.Cartesian3);for(let k=0;k<8;k++){const S=e.Cartesian3.clone(m,new e.Cartesian3);e.Cartesian3.add(S,e.Cartesian3.multiplyByScalar(E,k&1?1:-1,new e.Cartesian3),S),e.Cartesian3.add(S,e.Cartesian3.multiplyByScalar(I,k&2?1:-1,new e.Cartesian3),S),e.Cartesian3.add(S,e.Cartesian3.multiplyByScalar(M,k&4?1:-1,new e.Cartesian3),S),p.push(S)}}else if(f.boundingSphere){const m=f.boundingSphere,y=m.center,E=m.radius,I=e.Matrix4.multiplyByPoint(this.boxInverseMatrix,y,new e.Cartesian3);s=Math.min(s,I.x-E),o=Math.max(o,I.x+E),r=Math.min(r,I.y-E),l=Math.max(l,I.y+E),a=Math.min(a,I.z-E),c=Math.max(c,I.z+E)}p.forEach(m=>{const y=e.Matrix4.multiplyByPoint(this.boxInverseMatrix,m,new e.Cartesian3);s=Math.min(s,y.x),o=Math.max(o,y.x),r=Math.min(r,y.y),l=Math.max(l,y.y),a=Math.min(a,y.z),c=Math.max(c,y.z)})});const u=1.01;this.targetXMinus=Math.abs(s)*u,this.targetXPlus=Math.abs(o)*u,this.targetYMinus=Math.abs(r)*u,this.targetYPlus=Math.abs(l)*u,this.targetZMinus=Math.abs(a)*u,this.targetZPlus=Math.abs(c)*u,this.activeModelIds.forEach(h=>{this.setupClippingPlanes(h)}),this.viewer.scene.requestRender()}getRangeParams(){const e=this.cesium;return{targetZPlus:this.targetZPlus,targetZMinus:this.targetZMinus,targetXPlus:this.targetXPlus,targetXMinus:this.targetXMinus,targetYPlus:this.targetYPlus,targetYMinus:this.targetYMinus,maxBox:new e.Cartesian3(this.targetXPlus,this.targetYPlus,this.targetZPlus),minBox:new e.Cartesian3(-this.targetXMinus,-this.targetYMinus,-this.targetZMinus)}}updateRange(e){if(!this.boxMatrix)return;e.targetXMinus!==void 0&&(this.targetXMinus=e.targetXMinus),e.targetXPlus!==void 0&&(this.targetXPlus=e.targetXPlus),e.targetYMinus!==void 0&&(this.targetYMinus=e.targetYMinus),e.targetYPlus!==void 0&&(this.targetYPlus=e.targetYPlus),e.targetZPlus!==void 0&&(this.targetZPlus=e.targetZPlus),e.targetZMinus!==void 0&&(this.targetZMinus=e.targetZMinus);const t=.1;this.targetXMinus+this.targetXPlus<t&&(this.targetXPlus=t-this.targetXMinus),this.targetYPlus+this.targetYMinus<t&&(this.targetYPlus=t-this.targetYMinus),this.targetZPlus+this.targetZMinus<t&&(this.targetZPlus=t-this.targetZMinus),this.syncClippingPlanes(),this.viewer.scene.requestRender()}getRange(){return this.getRangeParams()}setBoxVisibility(e){this.planeEntities.forEach(t=>{t.show=e}),this.viewer.scene.requestRender()}close(e){if(e){const t=this.tilesetMap[e];t&&(t.clippingPlanes&&(t.clippingPlanes.enabled=!1),t.clippingPlanes=void 0),delete this.clippingPlanesMap[e],this.activeModelIds.delete(e),this.activeModelIds.size>0&&this.fitToModels()}else Object.keys(this.clippingPlanesMap).forEach(t=>{const i=this.tilesetMap[t];i&&(i.clippingPlanes&&(i.clippingPlanes.enabled=!1),i.clippingPlanes=void 0)}),this.clippingPlanesMap={},this.activeModelIds.clear();this.activeModelIds.size===0&&(this.planeEntities.forEach(t=>{this.viewer.entities.remove(t)}),this.planeEntities=[],this.destroyEventHandlers(),this.boxMatrix=null,this.boxInverseMatrix=null),this.viewer.scene.requestRender()}destroyEventHandlers(){this.downHandler?.destroy(),this.upHandler?.destroy(),this.moveHandler?.destroy(),this.downHandler=this.upHandler=this.moveHandler=null}}let _s=performance.now();const Hg=10;class Gg{cesium;viewer;modelInfo={modelName:"Person",modelId:"player_111",url:"person/model.glb",scale:.0032};startTime=0;radian=0;speed=.1;speedVector;position;hpRoll;cameralHpRoll;fixedFrameTransforms;model;transparentTest=!0;gravityTestByMove=!1;gravityTest=!0;lastMoveTime=0;moveInterval=.01;collisionTest=!0;wheelCount=2;isLeftDragging=!1;lastScreenY=0;lastScreenX=0;pauseAnimationFn;resumeAnimationFn;selectedColor;selectedColorRecover;handler;moveState={moveFront:!1,moveBack:!1,moveLeft:!1,moveRight:!1,moveUp:!1,moveDown:!1};onLoading=null;onSuccess=null;onError=null;constructor({cesium:e,viewer:t,modelInfo:i,callbacks:s}){this.cesium=e,this.viewer=t,this.radian=this.cesium.Math.toRadians(4),this.speedVector=new this.cesium.Cartesian3,this.position=new this.cesium.Cartesian3,this.hpRoll=new this.cesium.HeadingPitchRoll,this.cameralHpRoll=new this.cesium.HeadingPitchRoll,this.fixedFrameTransforms=new this.cesium.Transforms.localFrameToFixedFrameGenerator("north","west"),i&&(this.modelInfo=Object.assign(this.modelInfo,i)),s&&(this.onLoading=s.onLoading||null,this.onSuccess=s.onSuccess||null,this.onError=s.onError||null),this.selectedColor=new this.cesium.Color(1,1,1,.4),this.selectedColorRecover=new this.cesium.Color(1,1,1,1);const o=this.viewer.scene.canvas;this.handler=new this.cesium.ScreenSpaceEventHandler(o)}getModel(){return this.model}setPauseAnimation(e){this.pauseAnimationFn=e}setResumeAnimationFn(e){this.resumeAnimationFn=e}async setPersonPosition(e){e&&(this.position=e),this.getModel()?(this.model.modelMatrix=this.cesium.Transforms.headingPitchRollToFixedFrame(e,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms),this.model.show=!0,this.initKeyBoard()):await this.openPlayer(),this.setCameralDefault(!1)}setModelInfo(e){e&&(this.modelInfo=Object.assign(this.modelInfo,e))}async openPlayer(){if(this.enablePositionSelection(),this.model){this.model.show=!0,this.initKeyBoard(),this.setCameralDefault(!1);return}this.position&&!(this.position.x===0&&this.position.y===0&&this.position.z===0)?(await this.loadModel(),this.initKeyBoard(),this.setCameralDefault(!1)):this.onLoading&&this.onLoading("请按住 Ctrl + 左键点击场景选择初始位置...")}enablePositionSelection(){this._positionHandler&&(this._positionHandler.destroy(),this._positionHandler=null);const e=new this.cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);e.setInputAction(async t=>{const i=this.viewer.scene;let s;try{s=i.pickPosition(t.position)}catch(o){console.warn("pickPosition failed:",o)}s&&(this.position=s,this.model?(this.model.modelMatrix=this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms),this.updatedCamera(),this.onSuccess&&this.onSuccess("已更新漫游位置")):(this.onSuccess&&this.onSuccess("位置已选择,正在加载模型..."),await this.loadModel(),this.initKeyBoard(),this.setCameralDefault(!1)))},this.cesium.ScreenSpaceEventType.LEFT_CLICK,this.cesium.KeyboardEventModifier.CTRL),this._positionHandler=e}_positionHandler;setDefaultPosition(){const e=this.viewer.scene,t=this.viewer.camera,i=new this.cesium.Cartesian2(e.canvas.clientWidth/2,e.canvas.clientHeight/2);let s;try{s=e.pickPosition(i)}catch(o){console.warn("pickPosition failed:",o)}if(s)this.position=s;else{const o=t.direction,l=this.cesium.Cartesian3.add(t.positionWC,this.cesium.Cartesian3.multiplyByScalar(o,10,new this.cesium.Cartesian3),new this.cesium.Cartesian3);this.position=l}}async loadModel(){let e;try{this.onLoading&&this.onLoading("正在加载漫游人物...");const t=await this.cesium.Model.fromGltfAsync({id:this.modelInfo.modelId,url:this.modelInfo.url,modelMatrix:this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms),scale:this.modelInfo.scale,allowPicking:!1,debugShowBoundingVolume:!1,debugWireframe:!1,cull:!1,gltfCallback:s=>{e=s.animations},backFaceCulling:!1}),i=()=>{if(e&&e.length>0){console.log("Model has animations:",e.length);try{t.activeAnimations.add({index:0,loop:this.cesium.ModelAnimationLoop.REPEAT,multiplier:1})}catch(s){console.error("Failed to add animation:",s)}this.pauseAnimationFn=()=>{this.viewer.clock.shouldAnimate=!1},this.resumeAnimationFn=()=>{this.viewer.clock.shouldAnimate=!0},this.viewer.clock.shouldAnimate=!1}else console.warn("No animations found in the model.")};t.ready?i():t.readyEvent.addEventListener(i),this.model=await this.viewer.scene.primitives.add(t),this.updatedCamera(),this.onLoading&&this.onLoading(""),this.onSuccess&&this.onSuccess("漫游模型加载完成")}catch(t){console.error("Failed to load model:",t),this.onLoading&&this.onLoading(""),this.onError&&this.onError("漫游模型加载失败")}}initKeyBoard(){const e=this.handler,t=this.cesium;_s=performance.now();const i=(o,r)=>{const l=o.code,a=o.keyCode;l==="KeyA"||a===65?this.moveState.moveLeft=r:l==="KeyW"||a===87?this.moveState.moveFront=r:l==="KeyD"||a===68?this.moveState.moveRight=r:l==="KeyS"||a===83?this.moveState.moveBack=r:l==="KeyQ"||a===81?this.moveState.moveUp=r:(l==="KeyE"||a===69)&&(this.moveState.moveDown=r)};e.setInputAction(o=>{this.wheelCount-=o*.001,this.wheelCount<.1&&(this.wheelCount=.1),this.updatedCamera()},t.ScreenSpaceEventType.WHEEL),this._keydownHandler=o=>{o.target.tagName==="INPUT"||o.target.tagName==="TEXTAREA"||(i(o,!0),this.resumeAnimationFn&&this.resumeAnimationFn())},this._keyupHandler=o=>{o.target.tagName==="INPUT"||o.target.tagName==="TEXTAREA"||(i(o,!1),Object.keys(this.moveState).every(r=>this.moveState[r]==!1)&&this.pauseAnimationFn&&this.pauseAnimationFn())},document.addEventListener("keydown",this._keydownHandler),document.addEventListener("keyup",this._keyupHandler),e.setInputAction(o=>{this.isLeftDragging=!0,this.lastScreenY=o.position.y,this.lastScreenX=o.position.x},this.cesium.ScreenSpaceEventType.LEFT_DOWN),e.setInputAction(o=>{if(!this.isLeftDragging)return;const r=o.endPosition.x,l=o.endPosition.y,a=l-this.lastScreenY,c=r-this.lastScreenX;Math.abs(a)<Math.abs(c)&&(c>0?(this.cameralHpRoll.heading+=this.radian,this.hpRoll.heading+=this.radian):(this.cameralHpRoll.heading-=this.radian,this.hpRoll.heading-=this.radian),s(0),this.lastScreenX=r),this.lastScreenY=l;const u=this.viewer.camera;this.cameralHpRoll.pitch=u.pitch+this.cesium.Math.toRadians(-a*.1),this.updatedCamera()},t.ScreenSpaceEventType.MOUSE_MOVE),e.setInputAction(()=>{this.isLeftDragging&&(this.isLeftDragging=!1)},t.ScreenSpaceEventType.LEFT_UP);const s=o=>{const r=performance.now();if(r-_s<Hg)return;_s=r;const l=1.75;if(o===1?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_X,this.speed,this.speedVector),this.gravityTestByMove=!0):o===-1?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_X,-this.speed,this.speedVector),this.gravityTestByMove=!0):o===0?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_X,0,this.speedVector),this.gravityTestByMove=!1):o===2?(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_Z,.05,this.speedVector),this.gravityTestByMove=!1):o===-2&&(this.speedVector=this.cesium.Cartesian3.multiplyByScalar(this.cesium.Cartesian3.UNIT_Z,-.05,this.speedVector),this.gravityTestByMove=!1),!this.viewer||!this.model)return;const a=(u,h)=>new this.cesium.Ray(u,h),c=new this.cesium.Cartesian3;if(this.cesium.Matrix4.getColumn(this.model.modelMatrix,0,c),this.cesium.Cartesian3.normalize(c,c),Math.abs(o)!=2&&this.collisionTest){const u=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),h=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,l),u),f=a(h,c),p=this.viewer.scene.pickFromRay(f,[this.model],1);if(p&&p.position&&this.cesium.Cartesian3.distance(h,p.position)<.9&&o===1)return}if(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,this.speedVector,this.position),this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms,this.model.modelMatrix),this.gravityTest){const u=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),h=.5,f=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,h),u),p=new this.cesium.Cartesian3;this.cesium.Cartesian3.subtract(this.position,f,p),this.cesium.Cartesian3.normalize(p,p);const A=a(f,p),C=this.viewer.scene.pickFromRay(A,[this.model],1),m=l,y=this.cesium.Cartesian3.add(f,this.cesium.Cartesian3.multiplyByScalar(c,m,new this.cesium.Cartesian3),new this.cesium.Cartesian3);if(t.defined(C)){const E=t.Cartesian3.distance(f,C.position);E-h>.2&&(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,-.2),this.position)),E-h<-.1&&E<2&&(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,.2),this.position))}if(!C&&this.gravityTestByMove){const E=a(this.position,p),I=this.viewer.scene.pickFromRay(E,[this.model],1);if(I){const M=this.cesium.Cartesian3.distance(this.position,I.position);Math.abs(M-1)>.05&&M<2&&(this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,-.2),this.position))}}if(C&&this.gravityTestByMove&&this.gravityTest){const E=this.cesium.Cartesian3.distance(y,C.position);Math.abs(E-l)>.1&&(this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms,this.model.modelMatrix),this.position=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,(l-E)/Math.abs(l-E)*.05),this.position))}}if(this.transparentTest){const u=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),h=1.75,f=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,h),u),p=this.viewer.camera.positionWC,A=f,C=t.Cartesian3.subtract(A,p,new t.Cartesian3),m=t.Cartesian3.distance(f,p),y=t.Cartesian3.normalize(C,new t.Cartesian3),E=new t.Ray(p,y);let I;try{I=this.viewer.scene.pickFromRay(E,void 0,1)}catch{}t.defined(I)&&I.primitive!==this.model&&I.position&&t.Cartesian3.distance(p,I.position)<m&&(this.wheelCount-=.1,this.wheelCount<.1&&(this.wheelCount=.1))}this.cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpRoll,this.cesium.Ellipsoid.WGS84,this.fixedFrameTransforms,this.model.modelMatrix),this.updatedCamera()};this._tickHandler=()=>{const o=performance.now()/1e3;(o-this.lastMoveTime>=this.moveInterval||this.lastMoveTime==0)&&(this.moveState.moveFront?(this.moveState.moveLeft&&(this.hpRoll.heading-=this.radian,this.cameralHpRoll.heading-=this.radian),this.moveState.moveRight&&(this.hpRoll.heading+=this.radian,this.cameralHpRoll.heading+=this.radian),s(1)):this.moveState.moveBack?(this.moveState.moveLeft&&(this.hpRoll.heading-=this.radian,this.cameralHpRoll.heading-=this.radian),this.moveState.moveRight&&(this.hpRoll.heading+=this.radian,this.cameralHpRoll.heading+=this.radian),s(-1)):(this.moveState.moveUp&&s(2),this.moveState.moveDown&&s(-2),this.moveState.moveLeft&&(this.hpRoll.heading-=this.radian,this.cameralHpRoll.heading-=this.radian,s(0)),this.moveState.moveRight&&(this.hpRoll.heading+=this.radian,this.cameralHpRoll.heading+=this.radian,s(0))),this.lastMoveTime=o)},this.viewer.clock.onTick.addEventListener(this._tickHandler)}updatedCamera(){if(!this.model)return;const e=new this.cesium.Cartesian3(this.position.x,this.position.y,this.position.z),t=1.75,i=this.cesium.Matrix4.multiplyByPoint(this.model.modelMatrix,new this.cesium.Cartesian3(0,0,t),e);this.viewer.camera.viewBoundingSphere(new this.cesium.BoundingSphere(i,this.wheelCount),this.cameralHpRoll)}_keydownHandler;_keyupHandler;_tickHandler;_uiEventListeners=[];bindUiKeys(e){this.unbindUiKeys(),Object.entries(e).forEach(([t,i])=>{if(!i)return;const s=()=>this.setMoveState(t,!0),o=()=>this.setMoveState(t,!1);i.addEventListener("mousedown",s),i.addEventListener("mouseup",o),i.addEventListener("mouseleave",o),i.addEventListener("touchstart",r=>{r.preventDefault(),s()}),i.addEventListener("touchend",r=>{r.preventDefault(),o()}),this._uiEventListeners.push(()=>{i.removeEventListener("mousedown",s),i.removeEventListener("mouseup",o),i.removeEventListener("mouseleave",o),i.removeEventListener("touchstart",s),i.removeEventListener("touchend",o)})})}unbindUiKeys(){this._uiEventListeners.forEach(e=>e()),this._uiEventListeners=[]}closePlayer(){const e=this.cesium;this.model&&(this.model.show=!1),this.setCameralDefault(!0),this.handler&&(this.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_DOWN),this.handler.removeInputAction(e.ScreenSpaceEventType.MOUSE_MOVE),this.handler.removeInputAction(e.ScreenSpaceEventType.LEFT_UP),this.handler.removeInputAction(e.ScreenSpaceEventType.WHEEL)),this._positionHandler&&(this._positionHandler.destroy(),this._positionHandler=null),this._keydownHandler&&document.removeEventListener("keydown",this._keydownHandler),this._keyupHandler&&document.removeEventListener("keyup",this._keyupHandler),this._tickHandler&&this.viewer.clock.onTick.removeEventListener(this._tickHandler),this.unbindUiKeys(),this.viewer.camera.lookAtTransform(e.Matrix4.IDENTITY),this.onLoading&&this.onLoading("")}setSpeed({speed:e}){this.speed=e/50}setParams({gravityTest:e,collisionTest:t,transparentTest:i}){e!==void 0&&(this.gravityTest=e),t!==void 0&&(this.collisionTest=t),i!==void 0&&(this.transparentTest=i)}setMoveState(e,t){this.moveState.hasOwnProperty(e)&&(this.moveState[e]=t,t?this.resumeAnimationFn&&this.resumeAnimationFn():Object.keys(this.moveState).every(i=>this.moveState[i]==!1)&&this.pauseAnimationFn&&this.pauseAnimationFn())}setCameralDefault(e){const t=this.viewer;t.scene.screenSpaceCameraController.enableRotate=e,t.scene.screenSpaceCameraController.enableTranslate=e,t.scene.screenSpaceCameraController.enableZoom=e,t.scene.screenSpaceCameraController.enableLook=e,t.scene.screenSpaceCameraController.enableTilt=e}}class Yg{cesium;viewer;baseCesium;baseTiles;baseCompt;baseSection;basePlayer;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer,this.baseCesium=new cd(e),this.baseTiles=new ka(e),this.baseCompt=new _g(e),this.baseSection=new Qg(e),this.basePlayer=new Gg({cesium:e.cesium,viewer:e.viewer,modelInfo:{url:e.options?.playerUrl,modelName:e.options?.playerModelName,modelId:e.options?.playerModelId,scale:e.options?.playerScale},callbacks:e.callbacks})}getCesium(){return this.cesium}getViewer(){return this.viewer}setSceneOptions(...e){this.baseCesium.setSceneOptions(...e)}getSnapDomSImageBase64(...e){return this.baseCesium.getSnapDomSImageBase64(...e)}clearBackground(){this.baseCesium.clearBackground()}enableTestLabel(){this.baseCesium.enableTestLabel()}enableCesiumFXAA(e){this.baseCesium.enableCesiumFXAA(e)}updateModelEffect(e){this.baseCesium.updateModelEffect(e)}addModels(...e){return this.baseTiles.addModels(...e)}}class Vg{cesium;viewer;mapLayers={};renderGen={};renderGenAll=0;renderGenByModel={};modelId="default";options={flyTo:!0};dxfModelsList=[];open=!1;events=new gi;showGlobal=!0;constructor({viewer:e,cesium:t}){this.viewer=e,this.cesium=t}getMapLayers(e){const t=typeof e=="object"?e?.modelId:e;return t?this.mapLayers[t]||{}:this.mapLayers}setModelId(e){this.modelId=e}getModelId(){return this.modelId}flyToCadModel(e={}){const t=e.modelId||this.modelId,i=this.dxfModelsList.find(s=>s.modelId===t);i&&this.flyToBounds(i)}setDxfOpen(e){this.open=e}getDxfOpen(){return this.open}getDxfModelsList(){return this.dxfModelsList}getDxfModels(e){const t=typeof e=="object"?e?.modelId:e;return t?this.dxfModelsList.find(i=>i.modelId===t):this.dxfModelsList}showJson({modelId:e,show:t}){this.mapLayers[e]&&Object.values(this.mapLayers[e]).forEach(s=>{s.forEach(o=>{o.primitive&&(o.primitive.show=t)})});const i=this.dxfModelsList.find(s=>s.modelId===e);i&&(i.show=t)}showJsonByLayer({modelId:e,show:t,layers:i}){const s=this.dxfModelsList.find(r=>r.modelId===e);if(!s){console.error("Tileset not found for modelId:",e);return}s.hiddenBatchIds||(s.hiddenBatchIds=new Set),s.layerMap&&Array.isArray(i)&&i.forEach(r=>{const l=s.layerMap[r];l!==void 0&&(t?s.hiddenBatchIds.delete(l):s.hiddenBatchIds.add(l))});const o=Array.from(s.hiddenBatchIds);if(o.length>0){const r=o.map(l=>`\${_BATCHID} !== ${l}`).join(" && ");s.style=new this.cesium.Cesium3DTileStyle({show:r})}else s.style=new this.cesium.Cesium3DTileStyle({show:!0});s.hasVisibilityListener||(s.hasVisibilityListener=!0,s.tileVisible.addEventListener(r=>{const l=r.content,a=l.featuresLength;if(a>0&&s.hiddenBatchIds)for(let c=0;c<a;c++)s.hiddenBatchIds.has(c)?l.getFeature(c).show=!1:l.getFeature(c).show=!0}))}flyToBounds(e,t){const i=this.cesium,s=e.boundingSphere?.radius||1e3,o={offset:new i.HeadingPitchRange(0,i.Math.toRadians(-90),s*.5),...t},r=o.duration??0;this.viewer.flyTo(e,{duration:r,offset:o.offset})}async loadModelFile(e){try{if(!e||typeof e!="string")return!1;const t=await fetch(e,{cache:"no-store"});if(!t.ok)throw new Error(`HTTP ${t.status} for ${e}`);if(e.endsWith(".json")||t.headers.get("content-type")?.includes("application/json"))return await t.json();const i=await t.blob(),s=new wa(new Ts(i),{password:"abc!?123",useWebWorkers:!1}),r=(await s.getEntries()).find(c=>!c.directory&&c.filename.endsWith(".json"));if(!r)return console.error("未找到 JSON 文件"),await s.close(),!1;const l=await r.arrayBuffer({useWebWorkers:!1});await s.close();const a=new TextDecoder().decode(l);return JSON.parse(a.trim())}catch(t){return console.error("解压或获取失败:",t),!1}}async addDxfModel({fileNames:e,options:t}){const i=this.renderGenAll;if(e?.length){for(const s of e){if(this.renderGenAll!==i)return;const o=this.renderGenByModel[s.modelId]||0;if((this.renderGenByModel[s.modelId]||0)!==o)return;const r=`${s.outPutPath}${s.dbName}/tileset.json`,l={...this.options,...t};try{const a=`${s.outPutPath}${s.dbName}/layerInfo.zip`,c=await this.loadModelFile(a);if(this.renderGenAll!==i||(this.renderGenByModel[s.modelId]||0)!==o)return;const u=await this.cesium.Cesium3DTileset.fromUrl(r);if(u.maximumScreenSpaceError=0,this.renderGenAll!==i||(this.renderGenByModel[s.modelId]||0)!==o)return;if(Object.assign(u,{modelId:s.modelId,modelName:s.modelName,deltaLatitude:s.deltaLatitude||0,deltaLongitude:s.deltaLongitude||0,relocated:!0,dbName:s.dbName,outPutPath:s.outPutPath,totalRotation:s.totalRotation||0,layerInfo:c}),s.formData?u.formData=s.formData:u.formData={modelId:u.modelId,longitude:u.deltaLongitude,latitude:u.deltaLatitude,distance:1e-6,rotation:0,totalRotation:u.totalRotation,heightDistance:1,height:0,lonlat:1e-6,modelOptions:[{value:u.modelId,label:u.modelName}],selectPoint:{longitude:0,latitude:0,height:0},selectedMode:!1,X:0,Y:0,Z:0},this.adjustingModelByCad({...u.formData,tileset:u}),Array.isArray(c)){const h=c;u.layerMap={};let f=this.mapLayers[s.modelId];f||(f={},this.mapLayers[s.modelId]=f),h.forEach(p=>{u.layerMap[p.layerName]=p.batchId,f[p.layerName]||(f[p.layerName]=[]),f[p.layerName].push({batchId:p.batchId,color:p.layerColor})})}if(this.dxfModelsList.push(u),this.setModelId(s.modelId),this.viewer.scene.primitives.add(u),this.renderGenAll!==i||(this.renderGenByModel[s.modelId]||0)!==o)return;l.flyTo&&this.flyToBounds(u),l.onSuccess&&l.onSuccess(u)}catch(a){console.error(`Failed to load tileset or layer info: ${r}`,a)}}this.events.emit("mountAllCad",this.dxfModelsList)}}adjustingModelByCad(e){const t=this.cesium,i=t.Quaternion.fromAxisAngle(t.Cartesian3.UNIT_Z,t.Math.toRadians(e.totalRotation)),s=t.Matrix4.fromRotationTranslation(t.Matrix3.fromQuaternion(i),new t.Cartesian3(0,0,0)),o=t.Cartesian3.fromDegrees(e.longitude,e.latitude,e.height),r=t.Transforms.eastNorthUpToFixedFrame(o);t.Matrix4.multiply(r,s,r),e.tileset?._root&&(e.tileset._root.transform=r)}deleteCad({modelId:e}){this.mapLayers[e]&&(Object.values(this.mapLayers[e]).forEach(i=>{i.forEach(s=>{this.viewer.scene.primitives.remove(s.primitive),s.primitive?.destroy()})}),delete this.mapLayers[e]),this.renderGen[e]=(this.renderGen[e]||0)+1,this.renderGenByModel[e]=(this.renderGenByModel[e]||0)+1;const t=this.dxfModelsList.findIndex(i=>i.modelId===e);if(t>-1){const i=this.dxfModelsList[t];this.viewer.scene.primitives.remove(i),i.destroy&&!i.isDestroyed()&&i.destroy(),this.dxfModelsList.splice(t,1)}}deleteAllCad(){Object.keys(this.mapLayers).forEach(e=>{this.deleteCad({modelId:e})}),[...this.dxfModelsList].forEach(e=>{e.modelId&&this.deleteCad({modelId:e.modelId})})}}class At{constructor(e,t){if(this.viewer=e,!this.viewer)return;this.type="prompt",t=t||{};const i=t.type==null?1:t.type;let s={id:new Date().getTime()+""+Math.floor(Math.random()*1e4),type:i,anchor:i==2,closeBtn:i==2,offset:i==2?{x:0,y:-20}:{x:10,y:10},content:"",show:!0,style:{background:"rgba(0,0,0,0.5)",color:"white"}};this.opt=Object.assign(s,t),this.attr=this.opt;const o=this.viewer.container.id;this.isShow=this.opt.show==null?!0:this.opt.show;let r="",l="";const a=this.opt.style.background,c=this.opt.style.color;this.opt.anchor&&(r+=`
|
|
82
82
|
<div class="prompt-anchor-container">
|
|
83
83
|
<div class="prompt-anchor" style="background:${a} !important;">
|
|
84
84
|
</div>
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
// 通常不需要 clamp,除非开启 HDR 后期望超亮,但负值需要避免
|
|
115
115
|
material.diffuse = max(material.diffuse, vec3(0.0));
|
|
116
116
|
}
|
|
117
|
-
`});f.isModelAdjustment=!0,h.customShader=f}else e.brightness!==void 0&&e.brightness!==1&&!h.style&&(h.style=new i.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 i=t.postProcessStages.ambientOcclusion;i.enabled=e,e&&(i.uniforms.ambientOcclusionOnly=!1,i.uniforms.intensity=3,i.uniforms.bias=.1,i.uniforms.lengthCap=.03,i.uniforms.stepSize=1,i.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)}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 R0{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},orientation:{heading:e.heading,pitch:e.pitch,roll:e.roll},duration:1}}flyToCameraView(e){const{position:t,orientation:i,duration:s}=e,o=new this.cesium.Cartesian3(t.x,t.y,t.z),r=new this.cesium.HeadingPitchRoll(i.heading,i.pitch,i.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||{};this.flyToCameraView({position:{x:Number(e.position.x),y:Number(e.position.y),z:Number(e.position.z)},orientation:{heading:Number(t.heading||0),pitch:Number(t.pitch||0),roll:Number(t.roll||0)},duration:e.duration})}}function O0(n){const{container:e,appContext:t,methods:i,viewerOptions:s,options:o,callbacks:r}=n,l=new gi,a=window.Cesium;if(!a)throw new Error("Cesium is not loaded");e.id=`cesium-container-${Dg()}`;const c={animation:!1,timeline:!1,infoBox:!1,homeButton:!1,fullscreenButton:!1,sceneModePicker:!1,navigationHelpButton:!1,geocoder:!1,baseLayerPicker:!1,selectionIndicator:!1,creditContainer:document.createElement("div"),contextOptions:{webgl:{alpha:!0}}},u=t?.config?.globalProperties?.$leitingBimOptions,h={...c,...u?.viewerOptions??{},...s??{}},f=new a.Viewer(e,h);f.camera.setView({destination:a.Cartesian3.fromDegrees(108,32,1e7),orientation:{heading:a.Math.toRadians(0),pitch:a.Math.toRadians(-90),roll:0}});let p=i;if(!p&&u&&(u.methods||(u.methods={}),p=u.methods),p){const A=new Yg({cesium:a,viewer:f,options:o,callbacks:r}),C=new ka({cesium:a,viewer:f}),m=new F0({cesium:a,viewer:f}),y=new Vg({cesium:a,viewer:f}),E=new R0({cesium:a,viewer:f});let I;const M=new tc({cesium:a,viewer:f});o&&(o.globe!==void 0&&m.setGlobeEnvironmentVisible(o.globe),o.terrain!==void 0&&m.setTerrainEnable(o.terrain),o.depthTest!==void 0&&m.setDepthTestEnable(o.depthTest),o.mapProvider&&o.mode!=="2d"&&m.changeBaseMap(o.mapProvider,{token:o.tiandituToken,layerType:o.tiandituLayerType,showAnnotation:o.tiandituShowLabel,url:o.arcgisUrl}),o.shadows!==void 0&&m.setShadowsEnable(o.shadows),o.environmentMap!==void 0&&m.setEnvironmentMapEnable(o.environmentMap),o.ambientOcclusion!==void 0&&m.setAmbientOcclusion(o.ambientOcclusion),o.time!==void 0&&m.setTime(o.time),o.brightness!==void 0&&m.setModelBrightness(o.brightness),o.backgroundColor!==void 0&&m.setBackgroundColor(o.backgroundColor),o.collision!==void 0&&m.setCollisionDetection(o.collision),o.mouseHabit!==void 0&&m.setMouseHabit(o.mouseHabit)),o&&o.mode==="2d"&&(console.log("InitMap: Setting CAD Mode 2D"),m.setCadMode("2d"),I=new lo({cesium:a,viewer:f})),C.events.on("tilesetLoaded",g=>{A.baseCompt.attachTileset(g,A.baseCompt.selectedColor),A.baseSection.attachTileset(g,g.leiting?.model?.modelId),p&&p.tilesLoad3dTiles&&p.tilesLoad3dTiles(g),o?.tilesLoad3dTiles&&o.tilesLoad3dTiles(g.leiting)}),C.events.on("loadingStatus",g=>{p&&p.onLoadingStatus&&p.onLoadingStatus(g)}),C.events.on("mountAll3Dtiles",({modelList:g,mapTileset:F})=>{o?.mountAll3Dtiles&&o.mountAll3Dtiles(g),p?.mountAll3Dtiles&&p.mountAll3Dtiles(F)}),y.events.on("mountAllCad",g=>{o?.mountAllCad&&o.mountAllCad(g),p?.mountAllCad&&p.mountAllCad(g)}),A.baseCompt.loadNodeDetailsForModel=g=>C.loadNodeDetailsForModel(g),A.baseCompt.selectionChange(g=>{g.length!==0&&(o?.selectionChange&&o.selectionChange(g),p?.selectionChange&&p.selectionChange(g))}),p.onSearchComponent=g=>{o?.searchComponent&&o.searchComponent(g),p?.searchComponent&&p.searchComponent(g)};const k=p.saveRegion;p.saveRegion=g=>{o?.saveRegion&&o.saveRegion(g),k&&k!==o?.saveRegion&&k(g)};const S=p.saveCadCalibration;p.saveCadCalibration=g=>{o?.saveCadCalibration&&o.saveCadCalibration(g),S&&S!==o?.saveCadCalibration&&S(g)};const x=p.saveCadRegion;p.saveCadRegion=g=>{o?.saveCadRegion&&o.saveCadRegion(g),x&&x!==o?.saveCadRegion&&x(g)},p.getCesium=()=>a,p.getViewer=()=>f,p.getAnnotationInstance=()=>I,p.getMeasureInstance=()=>M,p.flyTo=g=>{E.setCameraView(g)},p.addPoint=(g,F,D=0)=>{f.entities.add({position:a.Cartesian3.fromDegrees(g,F,D),point:{pixelSize:10,color:a.Color.RED}})},p.enableTestLabel=()=>A.enableTestLabel(),p.setBackgroundColor=g=>m.setBackgroundColor(g),p.enableCesiumFXAA=g=>A.enableCesiumFXAA(g),p.setSceneOptions=g=>A.setSceneOptions(g),p.getCameraInfo=()=>E.getCameraView(),p.flyToCameraView=g=>E.flyToCameraView(g),p.getCurrentCameraPositionAndTarget=()=>E.getCurrentCameraPositionAndTarget(),p.setCameraView=g=>E.setCameraView(g),p.getImageBase64=()=>{const g=f.scene.canvas;return f.render(),g.toDataURL("image/png")},p.getSnapDomSImageBase64=(g,F)=>A.getSnapDomSImageBase64(g,F),p.addModels=g=>C.addModels(g),p.add3DtilesModel=g=>C.addModels(g),p.addOSGB=g=>C.addOSGB(g),p.updateOSGBMatrix=g=>C.updateOSGBMatrix(g),p.showModels=g=>C.showModels(g),p.showTileset=g=>C.showModels(g),p.deleteModels=g=>C.deleteModels(g),p.deleteAllModelList=()=>{C.deleteAllModels(),l.emit("deleteAllModels")},p.deleteAllModels=()=>{C.deleteAllModels(),l.emit("deleteAllModels")},p.flyToTileset=g=>C.flyToTileset(g),p.flyToByModelId=g=>C.flyToTileset(g),p.updateModelEffect=g=>A.updateModelEffect(g),p.getMapTileset=()=>C.getMapTileset(),p.getBIMmodelId=()=>C.getBIMmodelId(),p.getModelList=()=>C.getModelList(),p.loadTreeForModel=g=>C.loadTreeForModel(g),p.loadNodeDetailsForModel=g=>C.loadNodeDetailsForModel(g),p.setMapTileset=g=>C.setMapTileset(g),p.setBIMmodelId=g=>C.setBIMmodelId(g),p.setModelList=g=>C.setModelList(g),p.setSelectColorUserModelCpt=(g,F={})=>A.baseCompt.setSelectColorUserModelCpt(g,F),A.baseCompt.setLoadNodeDetailsCallback(g=>C.loadNodeDetailsForModel(g)),p.setAllSelectColorUserModelCpt=g=>A.baseCompt.setAllSelectColorUserModelCpt(g),p.setSelectColorUserModelCptByClear=()=>A.baseCompt.clearAllHaveSelected(),p.clearSelectColorUserModelCpt=()=>A.baseCompt.clearAllHaveSelected(),p.setSelecteds=(g,F)=>A.baseCompt.setSelectColorUserModelCpt(g,F??{rank:0}),p.setSelectedColor=(g,F,D,P)=>A.baseCompt.setSelectedColorRgba(g,F,D,P),p.clearAllHaveSelected=()=>A.baseCompt.clearAllHaveSelected(),p.getSelected=g=>A.baseCompt.getSelected(g),p.selectionChange=g=>{A.baseCompt.selectionChange(g)},p.flyToObjects=g=>A.baseCompt.flyToObjects(g),p.setAllConstructionProgressTracking=g=>A.baseCompt.setAllConstructionProgressTracking(g),p.enableAllConstructionProgressTracking=()=>A.baseCompt.enableConstructionProgressTracking(),p.disableConstructionProgressTracking=()=>A.baseCompt.disableConstructionProgressTracking(),p.disableAllConstructionProgressTracking=()=>A.baseCompt.disableConstructionProgressTracking(),p.freshConstructionProgressTracking=()=>A.baseCompt.freshConstructionProgressTracking(),p.reStartAnimation=()=>A.baseCompt.reStartAnimation(),p.resumeFlyTo=()=>A.baseCompt.resumeFlyTo(),p.pauseFlyTo=()=>A.baseCompt.pauseFlyTo(),p.pauseAnimation=()=>A.baseCompt.pauseFlyTo(),p.resumeAnimation=()=>A.baseCompt.resumeFlyTo(),p.setElementsListVisible=g=>A.baseCompt.setComponentVisibility(g),p.setAllElementsVisible=g=>A.baseCompt.setAllComponentsVisibility(g),p.getElementsVisible=g=>A.baseCompt.getComponentsByVisibility(g),p.setComponentVisibility=g=>A.baseCompt.setComponentVisibility(g),p.setAllComponentsVisibility=g=>A.baseCompt.setAllComponentsVisibility(g),p.getComponentsByVisibility=g=>A.baseCompt.getComponentsByVisibility(g),p.openSection=(g,F)=>A.baseSection.open(g,F),p.closeSection=g=>A.baseSection.close(g),p.updateSectionRange=g=>A.baseSection.updateRange(g),p.getSectionRange=()=>A.baseSection.getRange(),p.fitToModels=()=>A.baseSection.fitToModels(),p.setSectionBoxVisibility=g=>A.baseSection.setBoxVisibility(g),p.openPlayer=()=>{A.baseCompt.disableSelection(),A.basePlayer.openPlayer()},p.closePlayer=()=>{A.basePlayer.closePlayer(),A.baseCompt.enableSelection()},p.setPersonPosition=g=>A.basePlayer.setPersonPosition(g),p.setPlayerSpeed=g=>A.basePlayer.setSpeed({speed:g}),p.setPlayerParams=g=>A.basePlayer.setParams(g),p.setPlayerMoveState=(g,F)=>A.basePlayer.setMoveState(g,F),p.bindPlayerUiKeys=g=>A.basePlayer.bindUiKeys(g),p.setGlobeEnvironmentVisible=g=>m.setGlobeEnvironmentVisible(g),p.setGlobeColor=g=>m.setGlobeColor(g),p.setCadMode=g=>m.setCadMode(g),p.setTerrainEnable=g=>m.setTerrainEnable(g),p.setDepthTestEnable=g=>m.setDepthTestEnable(g),p.changeBaseMap=(g,F)=>m.changeBaseMap(g,F),p.searchLocation=(g,F)=>m.searchLocation(g,F),p.setShadowsEnable=g=>m.setShadowsEnable(g),p.setShadowDarkness=g=>{m.setShadowDarkness?m.setShadowDarkness(g):console.warn("baseSetting.setShadowDarkness is not available. Please reload the page.")},p.setTime=g=>m.setTime(g),p.setModelBrightness=g=>m.setModelBrightness(g),p.setModelColorAdjustment=g=>m.setModelColorAdjustment(g),p.setEnvironmentMapEnable=g=>m.setEnvironmentMapEnable(g),p.setAmbientOcclusion=g=>m.setAmbientOcclusion(g),p.setCollisionDetection=g=>m.setCollisionDetection(g),p.setMouseHabit=g=>m.setMouseHabit(g),p.is2dMode=()=>m.is2d,p.setSceneMode=g=>{const F=g?"2d":"3d";m.setCadMode(F),g&&!I&&(I=new lo({cesium:a,viewer:f})),l.emit("setMode",F)},p.setGisOptions=g=>{g.globe!==void 0&&m.setGlobeEnvironmentVisible(g.globe),g.elevation!==void 0&&m.setTerrainEnable(g.elevation),g.depthTestAgainstTerrain!==void 0&&m.setDepthTestEnable(g.depthTestAgainstTerrain),g.rendering!==void 0&&m.setAmbientOcclusion(g.rendering)},p.getConfigure=()=>(console.warn("getConfigure is not initialized. Please ensure LeitingSetting component is mounted."),{}),p.setConfigure=g=>{console.warn("setConfigure is not initialized. Please ensure LeitingSetting component is mounted.",g)},p.addDxfModel=g=>{const F={...g};return F.files&&!F.fileNames&&(F.fileNames=F.files),F.fileNames||(F.fileNames=[]),y.addDxfModel(F)},p.deleteCad=g=>y.deleteCad(g),p.deleteAllCad=()=>y.deleteAllCad(),p.showDxfModel=g=>y.showJson(g),p.showDxfLayer=g=>y.showJsonByLayer(g),p.flyToCadModel=(g={})=>y.flyToCadModel(g),p.getDxfModels=g=>y.getDxfModels(g),p.getDxfLayers=g=>y.getMapLayers(g),p.getCadModelId=()=>y.getModelId(),p.setDxfOpen=g=>y.setDxfOpen(g),p.getDxfOpen=()=>y.getDxfOpen(),p.adjustingModelByCad=g=>y.adjustingModelByCad(g),p.saveAnnotations=()=>{let g=null;return I&&(g=I.saveAnnotations()),o?.saveAnnotations&&o.saveAnnotations(g),g},p.loadAnnotations=g=>I?I.loadAnnotations(g):!1,p.set2d=g=>{const F=g?"2d":"3d";m.setCadMode(F),g&&!I&&(I=new lo({cesium:a,viewer:f})),l.emit("setMode",F)},p.flyToTopView=()=>{y.flyToCadModel()},p.menuEvents=l,p.insertMenu=g=>{l.emit("insertMenu",g)},p.setMenuListFilter=g=>{l.emit("setMenuListFilter",g)},p.showMenu=g=>{l.emit("showMenu",g)},p.setMenuActive=(g,F)=>{l.emit("setMenuActive",g,F)},p.insertContextMenu=g=>{console.warn("insertContextMenu is not initialized yet. Please wait for LeitingBIM component to mount.",g)},p.deleteContextMenu=g=>{console.warn("deleteContextMenu is not initialized yet.",g)},p.hideContextMenu=()=>{console.warn("hideContextMenu is not initialized yet.")},p.baseCompt=A.baseCompt,p.getTree=()=>{const g=[],F=C.getMapTileset();return Object.keys(F).forEach(D=>{const P=F[D];if(P&&P.leiting&&P.leiting.tree){const L=P.leiting.tree;Array.isArray(L)?g.push(...L):g.push(L)}}),g},p.getAllComponents=()=>{const g=C.getMapTileset(),F={},D=[];try{Object.keys(g).forEach(P=>{const L=g[P];if(!L||!L.leiting)return;const G=L.leiting,N=G.node,b=G.model.formData,w=G.box;if(!N||!N.nodeExtras)return;const v=G.model.modelId;F[v]=N.nodeExtras;const B=N.nodeExtras.element;if(!B)return;const R=w?w.center:{x:0,y:0,z:0};Object.values(B).forEach(U=>{if(U.box3)try{const O=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,a.Math.toRadians(b.totalRotation||0)),T=a.Matrix4.fromRotationTranslation(a.Matrix3.fromQuaternion(O),new a.Cartesian3(0,0,0)),_=a.Cartesian3.fromDegrees(b.longitude,b.latitude,b.height),Y=a.Transforms.eastNorthUpToFixedFrame(_);a.Matrix4.multiply(Y,T,Y);const $=new a.Cartesian3(R.x,R.y,0),J=new a.Cartesian3;a.Matrix4.multiplyByPoint(Y,$,J);const ne=a.Cartographic.fromCartesian(J),re=U.box3?.Center?.x||0,V=U.box3?.Center?.y||0,j=U.box3?.Center?.z||0,X=new a.Cartesian3(-R.x+re,-R.y+V,0+j),se=a.Matrix4.fromTranslation(X),oe=a.Matrix4.clone(se);a.Matrix4.multiply(T,oe,oe);const ae=a.Cartesian3.fromDegrees(ne.longitude/Math.PI*180,ne.latitude/Math.PI*180,b.height),Ce=a.Transforms.eastNorthUpToFixedFrame(ae);a.Matrix4.multiply(Ce,oe,Ce);const le=a.Cartographic.fromCartesian(new a.Cartesian3(Ce[12],Ce[13],Ce[14]));U.box3.cartographic={longitude:le.longitude/Math.PI*180,latitude:le.latitude/Math.PI*180,height:le.height};const Pe={id:U.uniqueId,billboard:[{theme:"Tag9999",position:[U.box3.cartographic.longitude,U.box3.cartographic.latitude,U.box3.cartographic.height],options:{text:U.name}}]};D.push(Pe)}catch(O){console.warn("Error calculating component position:",O)}})})}catch(P){console.error("getAllComponents error:",P)}return F},p.getCptInfos=g=>{if(!Array.isArray(g))return[];const F=C.getMapTileset(),D=[],P={};g.forEach(L=>{!L.modelId||!L.elementId||(P[L.modelId]||(P[L.modelId]=[]),P[L.modelId]?.push(L.elementId))});try{Object.keys(P).forEach(L=>{const G=F[L];if(!G||!G.leiting)return;const N=G.leiting,b=N.node,w=N.model.formData,v=N.box;if(!b||!b.nodeExtras)return;const B=b.nodeExtras.element;if(!B)return;const R=v?v.center:{x:0,y:0,z:0};P[L]?.forEach(U=>{const O=B[U];if(O&&O.box3)try{const T=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,a.Math.toRadians(w.totalRotation||0)),_=a.Matrix4.fromRotationTranslation(a.Matrix3.fromQuaternion(T),new a.Cartesian3(0,0,0)),Y=a.Cartesian3.fromDegrees(w.longitude,w.latitude,w.height),$=a.Transforms.eastNorthUpToFixedFrame(Y);a.Matrix4.multiply($,_,$);const J=new a.Cartesian3(R.x,R.y,0),ne=new a.Cartesian3;a.Matrix4.multiplyByPoint($,J,ne);const re=a.Cartographic.fromCartesian(ne),V=O.box3?.Center?.x||0,j=O.box3?.Center?.y||0,X=O.box3?.Center?.z||0,se=new a.Cartesian3(-R.x+V,-R.y+j,0+X),oe=a.Matrix4.fromTranslation(se),ae=a.Matrix4.clone(oe);a.Matrix4.multiply(_,ae,ae);const Ce=a.Cartesian3.fromDegrees(re.longitude/Math.PI*180,re.latitude/Math.PI*180,w.height),le=a.Transforms.eastNorthUpToFixedFrame(Ce);a.Matrix4.multiply(le,ae,le);const Pe=a.Cartographic.fromCartesian(new a.Cartesian3(le[12],le[13],le[14]));O.box3.cartographic={longitude:Pe.longitude/Math.PI*180,latitude:Pe.latitude/Math.PI*180,height:Pe.height},D.push(O)}catch(T){console.warn("Error calculating component position:",T)}})})}catch(L){console.error("getCptInfos error:",L)}return D},window.Methods=p}return console.log("methods",p),{Cesium:a,viewer:f,methods:p,menuEvents:l}}function co(n){return d.getCurrentScope()?(d.onScopeDispose(n),!0):!1}function uo(n){return typeof n=="function"?n():d.unref(n)}const L0=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const N0=Object.prototype.toString,U0=n=>N0.call(n)==="[object Object]",_0=()=>{};function Q0(n){return d.getCurrentInstance()}function nc(n,e=!0,t){Q0()?d.onMounted(n,t):e?n():d.nextTick(n)}function Nt(n){var e;const t=uo(n);return(e=t?.$el)!=null?e:t}const Ln=L0?window:void 0;function H0(...n){let e,t,i,s;if(typeof n[0]=="string"||Array.isArray(n[0])?([t,i,s]=n,e=Ln):[e,t,i,s]=n,!e)return _0;Array.isArray(t)||(t=[t]),Array.isArray(i)||(i=[i]);const o=[],r=()=>{o.forEach(u=>u()),o.length=0},l=(u,h,f,p)=>(u.addEventListener(h,f,p),()=>u.removeEventListener(h,f,p)),a=d.watch(()=>[Nt(e),uo(s)],([u,h])=>{if(r(),!u)return;const f=U0(h)?{...h}:h;o.push(...t.flatMap(p=>i.map(A=>l(u,p,A,f))))},{immediate:!0,flush:"post"}),c=()=>{a(),r()};return co(c),c}function G0(){const n=d.ref(!1),e=d.getCurrentInstance();return e&&d.onMounted(()=>{n.value=!0},e),n}function ic(n){const e=G0();return d.computed(()=>(e.value,!!n()))}function Y0(n,e={}){const{window:t=Ln}=e,i=ic(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let s;const o=d.ref(!1),r=c=>{o.value=c.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",r):s.removeListener(r))},a=d.watchEffect(()=>{i.value&&(l(),s=t.matchMedia(uo(n)),"addEventListener"in s?s.addEventListener("change",r):s.addListener(r),o.value=s.matches)});return co(()=>{a(),l(),s=void 0}),o}function V0(n,e,t={}){const{window:i=Ln,...s}=t;let o;const r=ic(()=>i&&"ResizeObserver"in i),l=()=>{o&&(o.disconnect(),o=void 0)},a=d.computed(()=>Array.isArray(n)?n.map(h=>Nt(h)):[Nt(n)]),c=d.watch(a,h=>{if(l(),r.value&&i){o=new ResizeObserver(e);for(const f of h)f&&o.observe(f,s)}},{immediate:!0,flush:"post"}),u=()=>{l(),c()};return co(u),{isSupported:r,stop:u}}function W0(n,e={width:0,height:0},t={}){const{window:i=Ln,box:s="content-box"}=t,o=d.computed(()=>{var h,f;return(f=(h=Nt(n))==null?void 0:h.namespaceURI)==null?void 0:f.includes("svg")}),r=d.ref(e.width),l=d.ref(e.height),{stop:a}=V0(n,([h])=>{const f=s==="border-box"?h.borderBoxSize:s==="content-box"?h.contentBoxSize:h.devicePixelContentBoxSize;if(i&&o.value){const p=Nt(n);if(p){const A=p.getBoundingClientRect();r.value=A.width,l.value=A.height}}else if(f){const p=Array.isArray(f)?f:[f];r.value=p.reduce((A,{inlineSize:C})=>A+C,0),l.value=p.reduce((A,{blockSize:C})=>A+C,0)}else r.value=h.contentRect.width,l.value=h.contentRect.height},t);nc(()=>{const h=Nt(n);h&&(r.value="offsetWidth"in h?h.offsetWidth:e.width,l.value="offsetHeight"in h?h.offsetHeight:e.height)});const c=d.watch(()=>Nt(n),h=>{r.value=h?e.width:0,l.value=h?e.height:0});function u(){a(),c()}return{width:r,height:l,stop:u}}function z0(n={}){const{window:e=Ln,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:i=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=n,r=d.ref(t),l=d.ref(i),a=()=>{e&&(o?(r.value=e.innerWidth,l.value=e.innerHeight):(r.value=e.document.documentElement.clientWidth,l.value=e.document.documentElement.clientHeight))};if(a(),nc(a),H0("resize",a,{passive:!0}),s){const c=Y0("(orientation: portrait)");d.watch(c,()=>a())}return{width:r,height:l}}const j0={class:"title"},$0={class:"actions"},K0={class:"card-body"},X0=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(n,{emit:e}){const t=n,i=d.inject("leiting-theme",d.ref("dark")),s=e,o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:M=>{s("update:visible",M),s("update:open",M)}}),r=d.ref(null),l=d.ref(t.initialPosition?.x||0),a=d.ref(t.initialPosition?.y||0),c=d.ref(t.width),u=d.ref(t.fullHeight?"100%":"600px");d.watch(()=>t.fullHeight,M=>{M?u.value="100%":u.value==="100%"&&(u.value="600px")});const{height:h}=z0();d.watch(h,()=>{t.fullHeight&&(u.value="100%")});const f=d.ref(!1),p=M=>{f.value=!0,M.preventDefault(),M.stopPropagation();const k=M.clientX,S=M.clientY,x=typeof c.value=="number"?c.value:r.value?.offsetWidth||0,g=typeof u.value=="number"?u.value:r.value?.offsetHeight||0,F=P=>{if(!f.value)return;P.preventDefault();const L=P.clientX-k,G=P.clientY-S,N=x+L,b=g+G;N>100&&(c.value=N),b>100&&(u.value=b)},D=()=>{f.value=!1,document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",D)};document.addEventListener("mousemove",F),document.addEventListener("mouseup",D)},A=d.computed(()=>({left:`${l.value}px`,top:`${a.value}px`,width:typeof c.value=="number"?`${c.value}px`:c.value,height:typeof u.value=="number"?`${u.value}px`:u.value,position:"absolute",zIndex:2e3})),C=()=>{d.nextTick(()=>{if(r.value){const M=r.value.offsetParent||document.body,k=M.clientWidth,S=M.clientHeight,x=typeof c.value=="number"?c.value:r.value.offsetWidth||350,g=typeof u.value=="number"?u.value:r.value.offsetHeight||600;l.value+x>k&&(l.value=Math.max(0,k-x-20)),a.value+g>S&&(a.value=Math.max(0,S-g-20)),l.value<0&&(l.value=0),a.value<0&&(a.value=0)}})},m=d.ref(!1),y=M=>{if(M.target.closest(".close-btn")||M.target.closest(".actions"))return;m.value=!0,M.preventDefault(),M.stopPropagation();const k=M.clientX,S=M.clientY,x=l.value,g=a.value,F=P=>{if(!m.value)return;P.preventDefault();const L=P.clientX-k,G=P.clientY-S;l.value=x+L,a.value=g+G},D=()=>{m.value=!1,document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",D),C()};document.addEventListener("mousemove",F),document.addEventListener("mouseup",D)},E=()=>{d.nextTick(()=>{if(t.align&&r.value){const M=r.value.offsetParent||document.body,k=typeof c.value=="number"?c.value:r.value.offsetWidth||350;t.align==="right"?l.value=Math.max(0,M.clientWidth-k-20):t.align==="center"&&(l.value=Math.max(0,(M.clientWidth-k)/2))}C()})};d.onMounted(()=>{t.align?E():C()}),d.watch(o,M=>{M&&(t.align?E():C())});const I=()=>{o.value=!1,s("close")};return(M,k)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{ref_key:"cardRef",ref:r,class:d.normalizeClass(["draggable-card leiting-scroll",["leiting-theme-"+d.unref(i)]]),style:d.normalizeStyle(A.value)},[d.createElementVNode("div",{ref:"headerRef",class:"card-header",onMousedown:y},[d.createElementVNode("span",j0,d.toDisplayString(n.title),1),d.createElementVNode("div",$0,[d.renderSlot(M.$slots,"header-extra",{},void 0,!0),d.createElementVNode("span",{class:"close-btn",onClick:I},"×")])],544),d.createElementVNode("div",K0,[d.renderSlot(M.$slots,"default",{},void 0,!0)]),d.createElementVNode("div",{class:"resize-handle",onMousedown:p},[...k[0]||(k[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,o.value]])}}),Ue=(n,e)=>{const t=n.__vccOpts||n;for(const[i,s]of e)t[i]=s;return t},Re=Ue(X0,[["__scopeId","data-v-50bf6126"]]);function q0(n){const e=d.ref([]),t=d.ref([]),i=d.ref([]),s=d.ref(""),o=d.ref(!0);d.watch(()=>d.unref(n),h=>{if(!h||h.length===0)return;const f=[],p=(m,y)=>{m.forEach(E=>{const I=E.id||E.key||E.$id,M=E.modelId||y;M&&(E.modelId=M),I&&f.push(I),E.children&&E.children.length>0&&p(E.children,M)})};p(h);const A=new Set(i.value);let C=!1;f.forEach(m=>{A.has(m)||(A.add(m),C=!0)}),C&&(i.value=Array.from(A))},{immediate:!0,deep:!0});const r=d.computed(()=>{const h=d.unref(n);if(!h)return[];const f=[],p=(A,C)=>{A.forEach(m=>{const y=m.id||m.key||m.$id,E=m.name||m.title;f.push({key:y,title:E,parentKey:C}),m.children&&m.children.length>0&&p(m.children,y)})};return p(h),f}),l=h=>{e.value=h,o.value=!1},a=h=>{i.value=h},c=h=>{t.value=h},u=h=>r.value.find(p=>p.key===h)?.parentKey;return d.watch(s,h=>{if(!h)return;const p=r.value.filter(C=>C.title&&C.title.toLowerCase().includes(h.toLowerCase())).map(C=>C.parentKey),A=new Set;p.forEach(C=>{let m=C;for(;m;)A.add(m),m=u(m)}),e.value=[...A],o.value=!0}),{expandedKeys:e,selectedKeys:t,checkedKeys:i,searchValue:s,autoExpandParent:o,onExpand:l,onCheck:a,onSelect:c}}const J0={class:"search-box"},Z0={key:0},eC={style:{color:"#f50"}},tC={key:1},nC={key:1,class:"empty-tip"},Pi=Ue(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(n,{emit:e}){const t=me.Input.Search,i=me.Tree,s=n,o=e,r=d.inject("leiting-theme",d.ref("dark")),l=d.inject("leitingMethods"),a=g=>{l?.value?.onSearchComponent&&l.value.onSearchComponent(g)},c=d.computed({get:()=>s.open!==void 0?s.open:s.visible,set:g=>{o("update:visible",g),o("update:open",g)}}),u=d.ref(null),{height:h}=W0(u),f=d.computed(()=>h.value||300),p=d.ref({children:"children",title:"name",key:"id"}),{expandedKeys:A,selectedKeys:C,checkedKeys:m,searchValue:y,autoExpandParent:E}=q0(d.toRef(s,"treeData")),I=g=>{A.value=g,E.value=!1},M=g=>{const F=[],D=P=>{if(!P.children||P.children.length===0){const G=P.element_Id;P.modelId&&G&&F.push({modelId:P.modelId,elementId:G})}else P.children.forEach(D)};return D(g),F},k=(g,F)=>{m.value=g,o("check",g,F);const D=M(F.node).map(P=>({...P,show:F.checked}));l?.value?.setComponentVisibility&&l.value.setComponentVisibility(D),l?.value?.onTreeCheck&&l.value.onTreeCheck(g,F)},S=(g,F)=>{if(C.value=g,o("select",g,F),F.selected){const D=M(F.node);D.length>0&&l?.value?.flyToObjects&&l.value.flyToObjects({selectCpts:D})}l?.value?.onTreeSelect&&l.value.onTreeSelect(g,F)},x=()=>{o("update:visible",!1),o("close")};return(g,F)=>(d.openBlock(),d.createBlock(Re,{visible:c.value,"onUpdate:visible":F[1]||(F[1]=D=>c.value=D),title:n.title,"initial-position":n.initialPosition,"full-height":n.fullHeight,onClose:x},{default:d.withCtx(()=>[d.createElementVNode("div",{class:d.normalizeClass(["leiting-tree-container",[`theme-${d.unref(r)}`]])},[d.createElementVNode("div",J0,[d.createVNode(d.unref(t),{value:d.unref(y),"onUpdate:value":F[0]||(F[0]=D=>d.isRef(y)?y.value=D:null),placeholder:"搜索构件","allow-clear":"","enter-button":"",onSearch:a},null,8,["value"])]),d.createElementVNode("div",{class:"tree-wrapper",ref_key:"treeWrapperRef",ref:u},[n.treeData&&n.treeData.length?(d.openBlock(),d.createBlock(d.unref(i),{key:0,"tree-data":n.treeData,"field-names":p.value,height:f.value,"expanded-keys":d.unref(A),"auto-expand-parent":d.unref(E),"selected-keys":d.unref(C),"checked-keys":d.unref(m),checkable:"","block-node":"",onExpand:I,onSelect:S,onCheck:k},{title:d.withCtx(({name:D,title:P})=>[(D||P)&&d.unref(y)&&(D||P).toLowerCase().indexOf(d.unref(y).toLowerCase())>-1?(d.openBlock(),d.createElementBlock("span",Z0,[d.createTextVNode(d.toDisplayString((D||P).substr(0,(D||P).toLowerCase().indexOf(d.unref(y).toLowerCase())))+" ",1),d.createElementVNode("span",eC,d.toDisplayString(d.unref(y)),1),d.createTextVNode(" "+d.toDisplayString((D||P).substr((D||P).toLowerCase().indexOf(d.unref(y).toLowerCase())+d.unref(y).length)),1)])):(d.openBlock(),d.createElementBlock("span",tC,d.toDisplayString(D||P),1))]),_:1},8,["tree-data","field-names","height","expanded-keys","auto-expand-parent","selected-keys","checked-keys"])):(d.openBlock(),d.createElementBlock("div",nC,"暂无数据"))],512)],2)]),_:1},8,["visible","title","initial-position","full-height"]))}}),[["__scopeId","data-v-749af6eb"]]),iC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",sc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAERSURBVDhPvZTrEYIwEISTCrQD6EA7gA60AylBK1Aq0A7ECrQDoQPsADrACuLuTMJkIiHxjzezgyR7H3d5KJVSqRAigcaQUjYYX2JgZY/P/O4lEgYYFo7pgPcc2kSCBoIUzDeo0klPPEsNYlX7AKzA/M6ASrRzYoIGG5DAOCvzBvzMOxqQazSgLLI1QdAW5jWpUAPV0AVKIc7FRCuNy7RkWozJtj1BED7ANbpDXHhffFXUwUnZwRYp7qw7Rx8/lLkV9R4QD2w1A8pjW3sA4h5au+pXEBS76P8D6Ut9/nXXaiRQdnBXqBfEC+4GdzSxW5v6F7CTeHnbCVCBsWIE+RYVrdF4DSz6OwgiADDexbmT3X0A4fSDfDjUugcAAAAASUVORK5CYII=",sC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFESURBVDhPlZMNEcIwDIVXBQwFgAJAAcMBDgAFIGE4wAHgABSwOdgcIAEUjPd6aS/rfhi7y12bJl9f0sxEf3xVVV0RPoetjTFvnWqGcgSylfgihA0CKcgJgBfsAqMiKiM0+gkKlCyZCN8uhPWCFOSBxARWORU4W2CdeV9XjxSEJcwkjokTqBpzjxjCn7CyVRECzjg8wHLYCmabK7CplBcLhMr2DZCqP0dCovYZ9hYGXx1izLUGUkkfxI/sTQiCf4N1zLWAWCKV2nP6PEhB2Ngd7B4GC4SJnCcP8SAFoc/Ph/TqjVvTPogFKUiJ/VGU+GdmUAA5ObA7cyC+iPt/MjUfKRL4emyuK+cGH8tufFRUHywZ+RYlnRDdIwfzLzVUibtQv1oNhoAExtfpVdIAiQIOWiY9o2sQxJemOydTS1jR1di2Zn8B8f27apou9kMAAAAASUVORK5CYII=",oC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAHDSURBVDhPlZOxL0NRFIe9ECubhehoIIjJ1HYwCkIiJpUQEkN1YZBobU0kFKNI3iTGYrDRv0BIhLXCYpCwiO35fs25zWva98JNvpz37j33d8+551yvLWIEQXDG0izMe55XjvJz816MUJG1LVuvYJcQrEb5xwkV2JSHGfAhgBJiu63E4oSUzpRtusa+wBooKkWnKOujQYh7SbCShQx0m9cpds4iOseOw7BFmUPwU341IQT2MaOQgi9QND+wiqNnBxT4X7SIbrAqhNI9wiUvJ+W8A99wDEWdwrw25iVkkenAEb5LkIQPuIMJWJGQoriFd+iBCkhc8zUhfJSm7mva5l3aadubDgtpMgGKpB/eoBfuQZFoPNhBj9gTaC3kKkEEGXPswF7Y5rLro1AW8UI6GmelmAzfkUWlNaWt6/iT0DOOA5bqoSuzHfIvofATqSJQb8KoiJbtPi6x2dA9FPjXE1F/uZKrv3IwCFcNqVmoPlal7QJ9q/wZCbk7Ioo9/tehE9q1r0nIxNQbG4YEXdkVjQ5J2OZXbB88gVrgQIJNj9aaT4LboPK7J6O0Ktb1KYtc/aYxGff6h3AYY6Nvzk2GQ1WQTVj4BST70jYaqceXAAAAAElFTkSuQmCC",rC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADhSURBVHgBvVOBEYIwDEw9B2ADO4IjuIEjwAa6Aa7ABMAEuIIjOIFsUDao37vgxVZbBI+/+0tI0+fJBaIIrLUFaMAHmNNcsMAIE+vdJLQykQ+0wFHBrsyiT/sL2I1DDTac/+4Klzobov7WHxt29qGmaYaQnlhLCmUTa2l4C2ljvamFlEvY0xpCW/kA924GblfGWciZaJyXQvSmlOoDITSdXQBbcA8eKfy/nHDFeY470FIX8tzUIu84FmLWuTzz7yhRLPm54dKJ4+A5uoJ3HgHBUfUmxGIa4QDuKA4n3kLk9ZInw0qu5b1R1aYAAAAASUVORK5CYII=",aC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAADFSURBVDhPxVPBDYMwDIwnKJu0G9ANYJMyQrsBbNIRGAE2gEnSO6mpIMJxkBC1lEds52zfOeK9b51zV5wte4lIr8RWbgGQh2fGmaIHJe4EetKPtDpRcA5AvwcB7FtgCcTOH0p3YzaQNd75QBiVXJG3LRtCRyQ6Jvsekd3gTsJVoDcihZLQQjXGTRMzIzPhOCCQyNYvSuEue7Qdm02yK0u1nM2m/FQyKb8JZHH+l81Ofdpdm82tvikjThyNlbSEBvIPFj+MfwA76qSYUG3g9QAAAABJRU5ErkJggg==",lC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEcSURBVDhPrZSNDYIwEIXpBOIGjMAIOIE4AbgBGwAbOIJu4Aa4gW4gI+gE9b3mjjSmibSR5ALX3H33W4y1Ns+yrIe0EH7HPC8YnyGjAegkEB5cYyiwrdWXIEc1xnSREGcuiTQEWeg7gG4+CMcl9ALnLkvogwScv+wq6FMQJJCJDgBtBcSAI3QClwe2YZAHcY2Ho4kGAVLA6U5/CEvdp4KYhesFhBPpCZIAz6jStHhproJcHyAHbb5nF+6RZ8CsGslIQaHp/gSxRzlApU4GugPxNuDN/eNarAJxapUPgm8rQ9C1SAI9AOGiHhGApSdnRN8FshbEiLwiLI1rMUM6zSQ0tX9c2lp/Iw0iMIPU38iFIN1mTmOjKa98vyWB4QM5XQnvsbFsyAAAAABJRU5ErkJggg==",cC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGPSURBVDhPrZT9UQIxEMUvFSgViBUoFQgVABV4VqBW4FmBUIFQgZRwVqBU4HUAVHC+X2aXycQw/sPOvLncZvdlv5JQFaTv+1upp8IyhLDHRLpLfe6FrXRt7hZShYyH+n8RauGAv/AkQNYIHICshFcRdu6fE/kGRN/mQGTIpzAzMoh6EV2fIsJ5IwNOj2IpVZ6i6difSecRVnlELZHIgHROisgXRCa78Z+IrMBf2pjLYJNENGSd1kO2pPghjKQniyqY8lFr2NfaqC18wn7nZCMlWg7xLq70TxfRLyHqtABN2lbp40mSSCzBcSebif1TPyKjDBcQ0eJJRkIUpHkMPUlnkBU+pnlWItL6ERgw8o1iqRHtgzAUGNRD2qmkvgMvNnneUQcZ4ggR6VGXG+OOA1koNvrFcY7+af++VJe0hucfyKQu+RWJc+SDZ3aNvlPpRl7T0qXdafNZYPDehLEZt/rOBR9U8QSaEKX0jHAaE4tshVrgLeJ+Xdl6rS8D3BWJXKnCEwWXEuco9grQ3bb0sP0Cn8/nPm/SMRQAAAAASUVORK5CYII=",dC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACDSURBVHgB1ZFhDYAgEIWfzgBGIIINpIEViGAkG2gEbWADjWADfMw/iDgUfji/7e3gxt3uHsDXZFrrlrFBHJNpsPAgEEmORArn3lFroEZQCjcTbAhzepPsgbuCgn8FBWvsUAMfFR5OIPGS5G80JkrG2sopHKbO1BCoHy8ZNhRUT5X4BTu6qyNSwwCiMAAAAABJRU5ErkJggg==",uC={class:"menu-container"},hC=["onClick","title"],fC={class:"menu-icon"},pC=["src","alt"],gC={key:3,style:{"font-size":"12px"}},mC={key:0,class:"sub-menu"},AC=["onClick"],Nn=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(n,{emit:e}){const t=n,i=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(()=>i.value||i),l=d.computed(()=>s.value||s),a=d.ref([{ID:"home",title:"主视角",src:iC,key:"homeView"},{ID:"tree",title:"目录树",src:sc,key:"componentTree"},{ID:"cadLayer",title:"图层",src:sc,key:"cadLayer"},{ID:"measure",title:"量算",src:sC,key:"measurement"},{ID:"section",title:"剖切",src:oC,key:"section"},{ID:"roam",title:"人物漫游",src:rC,key:"roam"},{ID:"info",title:"构件信息",src:aC,key:"componentInfo"},{ID:"cadPosition",title:"调整位置",src:lC,key:"cadPosition"},{ID:"annotation",title:"标注",src:dC,key:"annotation"},{ID:"setting",title:"设置",src:cC,key:"setting"}]),c=d.ref([]),u=d.ref([...t.activeIds]);d.watch(()=>t.activeIds,k=>{u.value=[...k]},{deep:!0});const h=d.computed(()=>t.visible);o.value&&o.value.menuEvents&&(o.value.menuEvents.on("setMenuListFilter",k=>{c.value=k}),o.value.menuEvents.on("setMenuActive",(k,S)=>{S?u.value.includes(k)||u.value.push(k):u.value=u.value.filter(x=>x!==k)}));const f=d.computed(()=>{let k=a.value;if(t.is2d){const S=["homeView","measurement","cadLayer","annotation"];k=k.filter(x=>x.key&&S.includes(x.key))}else{const S=["cadLayer","cadPosition","annotation"];k=k.filter(x=>!x.key||!S.includes(x.key))}if(c.value.length>0&&(k=k.filter(S=>!S.key||!c.value.includes(S.key))),t.customItems&&t.customItems.length>0){const S=t.customItems.map(x=>({...x,key:x.ID,src:x.src||x.icon}));return[...k,...S]}return k}),p=e,A=k=>{const S=["homeView"];if(k.key&&S.includes(k.key))u.value.includes(k.ID)||(u.value.push(k.ID),setTimeout(()=>{const g=u.value.indexOf(k.ID);g>-1&&u.value.splice(g,1)},1e3));else{const g=u.value.indexOf(k.ID);g>-1?u.value.splice(g,1):u.value.push(k.ID)}const x=u.value.includes(k.ID);k.func&&k.func(k),k.key&&p("action",k.key,x)},C=k=>{a.value=[...a.value,...k]},m=k=>{c.value=k},y=k=>{console.log("LeitingMenu received showMenu event:",k)},E=(k,S)=>{const x=a.value.find(g=>g.ID===k||g.key===k);if(x){const g=u.value.indexOf(x.ID);S&&g===-1?u.value.push(x.ID):!S&&g>-1&&u.value.splice(g,1)}};let I=null;const M=()=>{o.value?.menuEvents&&(I&&(I.off("insertMenu",C),I.off("setMenuListFilter",m),I.off("showMenu",y),I.off("setMenuActive",E)),I=o.value.menuEvents,I.on("insertMenu",C),I.on("setMenuListFilter",m),I.on("showMenu",y),I.on("setMenuActive",E))};return d.onMounted(()=>{M()}),d.onUnmounted(()=>{I&&(I.off("insertMenu",C),I.off("setMenuListFilter",m),I.off("showMenu",y),I.off("setMenuActive",E))}),d.watch(o,()=>{M()},{deep:!0}),(k,S)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-menu-wrapper",["leiting-theme-"+r.value,"size-"+l.value]])},[d.createElementVNode("div",uC,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(f.value,x=>(d.openBlock(),d.createElementBlock("div",{key:x.ID,class:d.normalizeClass(["menu-item",{active:u.value.includes(x.ID)}]),onClick:g=>A(x),title:x.title},[d.createElementVNode("div",fC,[x.src?(d.openBlock(),d.createElementBlock("img",{key:0,src:x.src,alt:x.title},null,8,pC)):typeof x.icon=="object"?(d.openBlock(),d.createBlock(d.resolveDynamicComponent(x.icon),{key:1})):typeof x.icon=="string"?(d.openBlock(),d.createElementBlock("i",{key:2,class:d.normalizeClass(["iconfont",`icon-${x.icon}`])},null,2)):(d.openBlock(),d.createElementBlock("span",gC,d.toDisplayString(x.title.substring(0,2)),1))]),x.children&&x.children.length>0?(d.openBlock(),d.createElementBlock("div",mC,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(x.children,g=>(d.openBlock(),d.createElementBlock("div",{key:g.ID,class:d.normalizeClass(["sub-menu-item",{active:u.value.includes(g.ID)}]),onClick:d.withModifiers(F=>A(g),["stop"])},d.toDisplayString(g.title),11,AC))),128))])):d.createCommentVNode("",!0)],10,hC))),128))])],2)),[[d.vShow,h.value]])}}),yC={class:"leiting-section-content"},CC={class:"section-form-item"},EC={class:"radio-group"},wC={class:"section-form-item"},bC={class:"switch-container"},vC={class:"switch"},IC={class:"status-text"},xC={class:"section-form-item slider-item"},BC={class:"slider-wrapper"},SC={class:"section-form-item slider-item"},MC={class:"slider-wrapper"},TC={class:"section-form-item slider-item"},DC={class:"slider-wrapper"},kC={class:"section-form-item table-item"},PC={class:"model-table-container"},FC={class:"model-table"},RC={width:"40"},OC=["checked"],LC=["onClick"],NC=["value"],UC={class:"model-name"},Un=Ue(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(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:N=>{i("update:visible",N),i("update:open",N)}}),r=d.ref("Box"),l=d.ref(!1),a=d.ref([]),c=d.ref([]),u=d.computed(()=>c.value.length===0?!1:c.value.every(N=>a.value.includes(N.modelId))),h=N=>{N.target.checked?a.value=c.value.map(w=>w.modelId):a.value=[],F()},f=d.ref([-10,10]),p=d.ref([-10,10]),A=d.ref([-10,10]),C=d.ref([-100,100]),m=d.ref([-100,100]),y=d.ref([-100,100]);let E=!1;const I=N=>{E=!0;const{targetZPlus:b,targetZMinus:w,targetXPlus:v,targetXMinus:B,targetYPlus:R,targetYMinus:U}=N;A.value=[-w,b],f.value=[-B,v],p.value=[-U,R],setTimeout(()=>{E=!1},100)},M=()=>{E||a.value.length===0||!s?.value?.updateSectionRange||s.value.updateSectionRange({targetZPlus:A.value[1],targetZMinus:-A.value[0],targetXPlus:f.value[1],targetXMinus:-f.value[0],targetYPlus:p.value[1],targetYMinus:-p.value[0]})},k=()=>{s?.value?.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(l.value)},S=N=>{if(!s?.value?.getMapTileset||!s?.value?.openSection)return;const w=s.value.getMapTileset()[N];if(w&&w.leiting?.box){const{min:v,max:B}=w.leiting.box,R=(B.x-v.x)/2,U=(B.y-v.y)/2,O=(B.z-v.z)/2;a.value.length<=1&&(C.value=[-R*2,R*2],m.value=[-U*2,U*2],y.value=[-O*2,O*2],f.value=[-R,R],p.value=[-U,U],A.value=[-O,O],s.value.updateSectionRange&&s.value.updateSectionRange({targetZPlus:O,targetZMinus:O,targetXPlus:R,targetXMinus:R,targetYPlus:U,targetYMinus:U})),s.value.openSection(N,{moveCallBack:I}),s.value.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(l.value)}},x=N=>{const b=a.value.indexOf(N);b>-1?a.value.splice(b,1):a.value.push(N),F()};let g=[];const F=()=>{const N=a.value.filter(w=>!g.includes(w)),b=g.filter(w=>!a.value.includes(w));N.forEach(w=>S(w)),b.forEach(w=>{s?.value?.closeSection&&s.value.closeSection(w)}),g=[...a.value]},D=()=>{},P=()=>{o.value=!1,i("close")},L=()=>{l.value=!1,a.value=[],g=[],f.value=[-10,10],p.value=[-10,10],A.value=[-10,10],C.value=[-100,100],m.value=[-100,100],y.value=[-100,100]};d.watch(()=>t.visible,N=>{N?G():(s?.value?.closeSection&&s.value.closeSection(),L())});const G=()=>{s?.value&&typeof s.value.getModelList=="function"&&(c.value=s.value.getModelList()||[],c.value.length>0&&a.value.length===0&&(a.value=[c.value[0].modelId],g=[...a.value]),t.visible&&a.value.length>0&&(l.value=!0,a.value.forEach(N=>S(N))))};return d.watch(()=>s?.value,()=>{G()},{immediate:!0,deep:!0}),d.onMounted(()=>{G()}),(N,b)=>(d.openBlock(),d.createBlock(Re,{visible:o.value,title:"剖切分析","full-height":n.fullHeight,"onUpdate:visible":P},{default:d.withCtx(()=>[d.createElementVNode("div",yC,[d.createElementVNode("div",CC,[b[8]||(b[8]=d.createElementVNode("span",{class:"label"},"模式",-1)),d.createElementVNode("div",EC,[d.createElementVNode("label",{class:d.normalizeClass(["radio-item",{active:r.value==="Box"}])},[d.withDirectives(d.createElementVNode("input",{type:"radio",value:"Box","onUpdate:modelValue":b[0]||(b[0]=w=>r.value=w),onChange:D},null,544),[[d.vModelRadio,r.value]]),b[7]||(b[7]=d.createTextVNode(" 剖切盒 ",-1))],2)])]),d.createElementVNode("div",wC,[b[10]||(b[10]=d.createElementVNode("span",{class:"label"},"显示",-1)),d.createElementVNode("div",bC,[d.createElementVNode("label",vC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":b[1]||(b[1]=w=>l.value=w),onChange:k},null,544),[[d.vModelCheckbox,l.value]]),b[9]||(b[9]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",IC,d.toDisplayString(l.value?"显示":"隐藏"),1)])]),d.createElementVNode("div",xC,[b[11]||(b[11]=d.createElementVNode("span",{class:"label"},"X 轴",-1)),d.createElementVNode("div",BC,[d.createVNode(d.unref(me.Slider),{value:f.value,"onUpdate:value":b[2]||(b[2]=w=>f.value=w),range:"",min:C.value[0],max:C.value[1],step:.1,onChange:M},null,8,["value","min","max"])])]),d.createElementVNode("div",SC,[b[12]||(b[12]=d.createElementVNode("span",{class:"label"},"Y 轴",-1)),d.createElementVNode("div",MC,[d.createVNode(d.unref(me.Slider),{value:p.value,"onUpdate:value":b[3]||(b[3]=w=>p.value=w),range:"",min:m.value[0],max:m.value[1],step:.1,onChange:M},null,8,["value","min","max"])])]),d.createElementVNode("div",TC,[b[13]||(b[13]=d.createElementVNode("span",{class:"label"},"Z 轴",-1)),d.createElementVNode("div",DC,[d.createVNode(d.unref(me.Slider),{value:A.value,"onUpdate:value":b[4]||(b[4]=w=>A.value=w),range:"",min:y.value[0],max:y.value[1],step:.1,onChange:M},null,8,["value","min","max"])])]),d.createElementVNode("div",kC,[b[15]||(b[15]=d.createElementVNode("span",{class:"label"},"模型",-1)),d.createElementVNode("div",PC,[d.createElementVNode("table",FC,[d.createElementVNode("thead",null,[d.createElementVNode("tr",null,[d.createElementVNode("th",RC,[d.createElementVNode("input",{type:"checkbox",checked:u.value,onChange:h},null,40,OC)]),b[14]||(b[14]=d.createElementVNode("th",null,"名称",-1))])]),d.createElementVNode("tbody",null,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,w=>(d.openBlock(),d.createElementBlock("tr",{key:w.modelId,class:d.normalizeClass({selected:a.value.includes(w.modelId)}),onClick:v=>x(w.modelId)},[d.createElementVNode("td",null,[d.withDirectives(d.createElementVNode("input",{type:"checkbox",value:w.modelId,"onUpdate:modelValue":b[5]||(b[5]=v=>a.value=v),onClick:b[6]||(b[6]=d.withModifiers(()=>{},["stop"])),onChange:F},null,40,NC),[[d.vModelCheckbox,a.value]])]),d.createElementVNode("td",UC,d.toDisplayString(w.modelName),1)],10,LC))),128))])])])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-ee4d9a12"]]),_C={class:"leiting-player-content"},QC={class:"player-form-item"},HC={class:"switch-container"},GC={class:"switch"},YC={class:"status-text"},VC={class:"player-form-item"},WC={class:"switch-container"},zC={class:"switch"},jC={class:"status-text"},$C={class:"player-form-item"},KC={class:"switch-container"},XC={class:"switch"},qC={class:"status-text"},JC={class:"player-form-item slider-item"},ZC={class:"slider-wrapper"},eE={class:"value-text"},tE={class:"instructions"},nE={class:"key-map"},iE={class:"key-row"},sE={class:"key-row"},oE={class:"key-row"},rE={class:"key-row"},aE={class:"key-row"},lE={class:"key-row"},_n=Ue(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(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.ref(!1),r=d.ref(!1),l=d.ref(!0),a=d.ref(5),c=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:S=>{i("update:visible",S),i("update:open",S)}}),u=d.ref(null),h=d.ref(null),f=d.ref(null),p=d.ref(null),A=d.ref(null),C=d.ref(null),m=()=>{o.value?E():I()},y=()=>{s?.value?.setPlayerParams&&s.value.setPlayerParams({gravityTest:r.value,collisionTest:l.value})},E=async()=>{s?.value?.openPlayer&&(await s.value.openPlayer(),s.value.setPlayerSpeed&&s.value.setPlayerSpeed(a.value),y(),s.value.bindPlayerUiKeys&&(await d.nextTick(),s.value.bindPlayerUiKeys({moveFront:u.value,moveBack:h.value,moveLeft:f.value,moveRight:p.value,moveUp:A.value,moveDown:C.value})))},I=()=>{s?.value?.closePlayer&&s.value.closePlayer()},M=()=>{s?.value?.setPlayerSpeed&&s.value.setPlayerSpeed(a.value)},k=()=>{c.value=!1,i("close")};return d.watch(()=>t.visible,S=>{S?(o.value=!0,s?.value?E():setTimeout(()=>{s?.value&&E()},100)):o.value&&(o.value=!1,I())},{immediate:!0}),(S,x)=>(d.openBlock(),d.createBlock(Re,{title:n.title,visible:c.value,"full-height":n.fullHeight,"onUpdate:visible":k},{default:d.withCtx(()=>[d.createElementVNode("div",_C,[d.createElementVNode("div",QC,[x[5]||(x[5]=d.createElementVNode("span",{class:"label"},"启用",-1)),d.createElementVNode("div",HC,[d.createElementVNode("label",GC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[0]||(x[0]=g=>o.value=g),onChange:m},null,544),[[d.vModelCheckbox,o.value]]),x[4]||(x[4]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",YC,d.toDisplayString(o.value?"开启":"关闭"),1)])]),d.createElementVNode("div",VC,[x[7]||(x[7]=d.createElementVNode("span",{class:"label"},"重力",-1)),d.createElementVNode("div",WC,[d.createElementVNode("label",zC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[1]||(x[1]=g=>r.value=g),onChange:y},null,544),[[d.vModelCheckbox,r.value]]),x[6]||(x[6]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",jC,d.toDisplayString(r.value?"开启":"关闭"),1)])]),d.createElementVNode("div",$C,[x[9]||(x[9]=d.createElementVNode("span",{class:"label"},"碰撞",-1)),d.createElementVNode("div",KC,[d.createElementVNode("label",XC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[2]||(x[2]=g=>l.value=g),onChange:y},null,544),[[d.vModelCheckbox,l.value]]),x[8]||(x[8]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",qC,d.toDisplayString(l.value?"开启":"关闭"),1)])]),d.createElementVNode("div",JC,[x[10]||(x[10]=d.createElementVNode("span",{class:"label"},"速度",-1)),d.createElementVNode("div",ZC,[d.createVNode(d.unref(me.Slider),{value:a.value,"onUpdate:value":x[3]||(x[3]=g=>a.value=g),min:1,max:10,step:1,onChange:M},null,8,["value"])]),d.createElementVNode("span",eE,d.toDisplayString(a.value),1)]),x[19]||(x[19]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",tE,[x[18]||(x[18]=d.createElementVNode("div",{class:"instruction-title"},"操作说明",-1)),d.createElementVNode("div",nE,[d.createElementVNode("div",iE,[d.createElementVNode("span",{class:"key",ref_key:"btnFront",ref:u},"W",512),x[11]||(x[11]=d.createTextVNode(" 前进 ",-1))]),d.createElementVNode("div",sE,[d.createElementVNode("span",{class:"key",ref_key:"btnBack",ref:h},"S",512),x[12]||(x[12]=d.createTextVNode(" 后退 ",-1))]),d.createElementVNode("div",oE,[d.createElementVNode("span",{class:"key",ref_key:"btnLeft",ref:f},"A",512),x[13]||(x[13]=d.createTextVNode(" 左移 ",-1))]),d.createElementVNode("div",rE,[d.createElementVNode("span",{class:"key",ref_key:"btnRight",ref:p},"D",512),x[14]||(x[14]=d.createTextVNode(" 右移 ",-1))]),d.createElementVNode("div",aE,[d.createElementVNode("span",{class:"key",ref_key:"btnUp",ref:A},"Q",512),x[15]||(x[15]=d.createTextVNode(" 上升 ",-1))]),d.createElementVNode("div",lE,[d.createElementVNode("span",{class:"key",ref_key:"btnDown",ref:C},"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"]]),cE={class:"info-content"},dE={key:0,class:"component-title"},Qn=Ue(d.defineComponent({__name:"LeitingInfo",props:{visible:{type:Boolean},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean}},emits:["update:visible","update:open","close"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.ref([]),r=d.ref(!1),l=d.ref([]),a=d.ref([]),c=d.ref(0),u=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:y=>{i("update:visible",y),i("update:open",y)}}),h=()=>{u.value=!1},f=y=>({elementID:"构件ID",elementName:"构件名",categoryName:"类别",familySymbolName:"族类型",levelName:"标高",modelName:"文件名",length:"长",width:"宽",height:"高"})[y]||y,p=["elementName","elementID","modelName","length","width","height","levelName","categoryName","familySymbolName"],A=async y=>{const E=++c.value;if(a.value=y,!y||y.length===0){o.value=[];return}if(!u.value)return;let I=y;y.length>10&&(ge.warning(`选中构件数量过多(${y.length}个),仅显示前10个`),I=y.slice(0,10));const M=s?.value;let k=M?.getMapTileset?M.getMapTileset():{};r.value=!0;const S=[],x={};if(I.forEach(D=>{const L=k[D.modelId]?.leiting?.model?.dbName;L&&D.elementId&&S.push({dbName:L,elementId:D.elementId,modelId:D.modelId})}),S.length>0)try{const D=S.map(L=>({dbName:L.dbName,elementId:L.elementId})),P=await Tg(D);P&&Array.isArray(P)&&P.forEach(L=>{const G=S.find(N=>N.dbName===L.dbName&&N.elementId===L.elementId);if(G){const N=`${G.modelId}_${L.elementId}`;x[N]=L}})}catch(D){console.warn("API fetch component details failed, falling back to local data",D)}const g=new Set;if(I.forEach(D=>{const P=k[D.modelId],L=`${D.modelId}_${D.elementId}`;x[L]||P&&P.leiting&&!P.leiting?.node?.nodeExtras&&P.leiting.model?.nodeUrl&&g.add(D.modelId)}),g.size>0&&M?.loadNodeDetailsForModel)try{const D=Array.from(g).map(P=>M.loadNodeDetailsForModel(P));await Promise.all(D)}catch(D){console.error("Failed to load node details",D)}if(E!==c.value)return;k=M?.getMapTileset?M.getMapTileset():{};const F=[];I.forEach((D,P)=>{const G=k[D.modelId]?.leiting||{},N=x[`${D.modelId}_${D.elementId}`];let b={modelName:G.model?.modelId||D.modelId};b.elementID||(b.elementID=D.elementId);let w=null;if(N)w=N;else{const R=G.node?.nodeExtras?.element||G.node?.nodeExtras;if(R){const U=b.elementID;R[U]&&(w=R[U])}}w&&w.box3&&(b.length=`${w.box3.length?.toFixed(2)||0}米`,b.width=`${w.box3.width?.toFixed(2)||0}米`,b.height=`${w.box3.height?.toFixed(2)||0}米`);const v=[];w&&(w.name&&(b.elementName=w.name),w.categoryName&&(b.categoryName=w.categoryName),w.familySymbolName&&(b.familySymbolName=w.familySymbolName),w.levelName&&(b.levelName=w.levelName));const B={};if(p.forEach(R=>{b[R]!==void 0&&(B[R]=b[R])}),v.push({name:"基础信息",params:B}),w){const R=Array.isArray(w)?w:Array.isArray(w?.parameters)?w.parameters:null;if(R){if(R.flat().forEach(O=>{if(O&&O.GroupName&&Array.isArray(O.Parameters)){const T={};O.Parameters.forEach(_=>{_.name&&(T[_.name]=_.value??"")}),Object.keys(T).length>0&&v.push({name:O.GroupName,params:T})}}),!Array.isArray(w)){const{parameters:O,...T}=w,_={};Object.keys(T).forEach(Y=>{!p.includes(Y)&&Y!=="uniqueId"&&typeof T[Y]!="object"&&(_[Y]=T[Y])}),Object.keys(_).length>0&&v.push({name:"其他属性",params:_})}}else{let U=!1;if(Object.keys(w).forEach(O=>{w[O]&&typeof w[O]=="object"&&!Array.isArray(w[O])&&(U=!0,v.push({name:O,params:w[O]}))}),!U){const O={};Object.keys(w).forEach(T=>{if(!p.includes(T)&&T!=="batchId"){const _=w[T];typeof _=="string"&&_.length>500?O[T]=_.substring(0,500)+"...":O[T]=_}}),Object.keys(O).length>0&&v.push({name:"属性",params:O})}}}F.push({id:P,title:`${b.modelName}${b.elementName?` - ${b.elementName}`:""}`,groups:v})}),o.value=F,E===c.value&&(r.value=!1),F.length>0?l.value=[`${F[0].id}-基础信息`]:l.value=[]};let C=!1;const m=()=>{if(C)return;const y=s?.value;y&&y.selectionChange&&(y.selectionChange(A),C=!0)};return d.watch(()=>s?.value,()=>{m()},{deep:!0,immediate:!0}),d.watch(u,y=>{y&&a.value.length>0&&A(a.value)}),d.onMounted(()=>{m()}),(y,E)=>(d.openBlock(),d.createBlock(Re,{visible:u.value,title:"构件详情",width:350,align:"right","initial-position":{x:0,y:0},"full-height":n.fullHeight,onClose:h,"onUpdate:visible":E[1]||(E[1]=I=>u.value=I),class:"base-info-card"},{default:d.withCtx(()=>[d.createElementVNode("div",cE,[d.createVNode(d.unref(me.Spin),{spinning:r.value},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(o.value,I=>(d.openBlock(),d.createElementBlock("div",{key:I.id,class:"component-block"},[o.value.length>1?(d.openBlock(),d.createElementBlock("div",dE,d.toDisplayString(I.title),1)):d.createCommentVNode("",!0),d.createVNode(d.unref(me.Collapse),{activeKey:l.value,"onUpdate:activeKey":E[0]||(E[0]=M=>l.value=M),ghost:"","expand-icon-position":"end"},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(I.groups,M=>(d.openBlock(),d.createBlock(d.unref(me.CollapsePanel),{key:`${I.id}-${M.name}`,header:M.name},{default:d.withCtx(()=>[d.createVNode(d.unref(me.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(M.params,(k,S)=>(d.openBlock(),d.createBlock(d.unref(me.DescriptionsItem),{key:S,label:f(String(S))},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(k),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-3b43a977"]]);class oc{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 i=`adjust-marker-${e}-${Date.now()}`;e==="BIM"?this.bimEntityId=i:this.mapEntityId=i,this.viewer.entities.add({id:i,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 i;try{i=this.viewer.scene.pickPosition(t.position)}catch(s){console.warn("pickPosition failed:",s)}if(!i){const s=this.viewer.camera.getPickRay(t.position);i=this.viewer.scene.globe.pick(s,this.viewer.scene)}if(i||(i=this.viewer.camera.pickEllipsoid(t.position,this.viewer.scene.globe.ellipsoid)),i){const s=this.Cesium.Cartographic.fromCartesian(i),o=this.Cesium.Math.toDegrees(s.longitude),r=this.Cesium.Math.toDegrees(s.latitude),l=s.height;e({longitude:o,latitude:r,height:l})}},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 uE={class:"adjust-panel"},hE={class:"control-panel"},fE={class:"form-item"},pE={class:"radio-group"},gE={class:"form-item"},mE={class:"radio-group"},AE={class:"form-item"},yE={class:"value"},CE={class:"param-row"},EE={class:"param-row"},wE={class:"param-row"},bE={class:"param-row"},vE={class:"param-row"},IE={class:"param-row"},xE={class:"param-row"},BE={class:"button-grid"},SE={key:1,class:"pick-mode-ui"},ME={class:"form-item",style:{display:"block","margin-bottom":"15px"}},TE={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},DE=["checked"],kE={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},PE={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},FE={class:"form-item",style:{display:"block","margin-bottom":"15px"}},RE={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},OE=["checked"],LE={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},NE={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},UE={class:"list-panel"},_E={class:"list-header"},QE={class:"col-check"},HE=["checked"],GE={class:"list-body"},YE={class:"col-check"},VE=["onUpdate:modelValue"],WE={class:"col-index"},zE=["title"],jE={class:"col-main"},$E=["checked","onChange"],Hn=Ue(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(n,{expose:e,emit:t}){const i=n,s=t,o=d.computed({get:()=>i.open!==void 0?i.open:i.visible,set:O=>{s("update:visible",O),s("update:open",O)}}),r=d.inject("leitingMethods"),l=d.ref("BIM"),a=d.ref("param"),c=d.ref(""),u=d.ref([]),h=d.ref("BIM"),f=d.ref(null),p=d.ref(null),A=d.ref(null),C=()=>(!A.value&&r?.value?.getViewer&&r?.value?.getCesium&&(A.value=new oc(r.value.getViewer(),r.value.getCesium())),A.value),m=()=>{C()?.clearMarkers(),f.value=null,p.value=null},y=(O,T)=>{O==="BIM"?f.value=T:p.value=T,C()?.addMarker(O,T),ge.success(`${O==="BIM"?"BIM":"地图"}标记点已添加`)},E=()=>{C()?.registerPickHandler(O=>{y(h.value,O)})},I=()=>{C()?.destroyPickHandler()},M=()=>{if(!f.value||!p.value){ge.warning("请先选择BIM标记点和地图标记点");return}if(!c.value){ge.warning("请先选择主模型");return}const O=C();let T=0,_=0,Y=0;if(O){const{dLon:$,dLat:J,dHeight:ne}=O.calculateOffset(f.value,p.value);T=$,_=J,Y=ne}else T=p.value.longitude-f.value.longitude,_=p.value.latitude-f.value.latitude,Y=p.value.height-f.value.height;S.value.longitude+=T,S.value.latitude+=_,S.value.height+=Y,w(c.value,{longitude:S.value.longitude,latitude:S.value.latitude,height:S.value.height}),ge.success("位置已调整")};d.watch(()=>a.value,O=>{O==="pick"?E():I()}),e({addMarker:y,setModelType:O=>{(O==="BIM"||O==="OSGB")&&(l.value=O)}});const S=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 O=u.value.find(T=>T.modelId===c.value);return O?O.modelName:""}),g=d.computed(()=>D.value.length>0&&D.value.every(O=>O.selected)),F=()=>{o.value=!1,s("close")},D=d.computed(()=>u.value.filter(O=>O.type===l.value)),P=O=>{const T=O.target.checked;D.value.forEach(_=>_.selected=T)},L=()=>{if(!r?.value)return;const O=r.value,T=O.getMapTileset?O.getMapTileset():{},_=[];if(Object.keys(T).forEach(Y=>{const J=T[Y].leiting||{};J.model&&_.push({modelId:J.model.modelId,modelName:J.model.modelName,selected:!1,formData:J.model.formData||{},dbName:J.model.dbName,url:J.model.url,type:J.model.type||"BIM"})}),u.value=_,_.length>0){const Y=O.getBIMmodelId?O.getBIMmodelId():"";Y&&_.find($=>$.modelId===Y)?N(Y):N(_[0].modelId),_.forEach($=>$.selected=!0)}},G=()=>{ge.info("拖动右下角标,可显示模型列表",void 0,2)},N=O=>{c.value=O;const T=u.value.find(_=>_.modelId===O);T&&T.formData&&Object.keys(S.value).forEach(_=>{T.formData[_]!==void 0&&(S.value[_]=T.formData[_])})},b=O=>r?.value?.getMapTileset?r.value.getMapTileset()[O]:null,w=(O,T)=>{const _=b(O),Y=r.value.getCesium();if(_&&Y){if(_.leiting?.model){_.leiting.model.formData={..._.leiting.model.formData,...T};const $=u.value.find(J=>J.modelId===O);$&&($.formData=_.leiting.model.formData)}dr({Cesium:Y,tileset:_})}},v=O=>{if(!c.value)return;const T=S.value[O];w(c.value,{[O]:T})},B=O=>{const T=D.value.filter(J=>J.selected);if(T.length===0){ge.warning("请先选择要调整的模型");return}const{lonlat:_,heightDistance:Y,rotation:$}=S.value;T.forEach(J=>{const ne={...J.formData};switch(O){case"north":ne.latitude+=_;break;case"south":ne.latitude-=_;break;case"east":ne.longitude+=_;break;case"west":ne.longitude-=_;break;case"up":ne.height+=Y;break;case"down":ne.height-=Y;break;case"rotateLeft":ne.totalRotation=(ne.totalRotation||0)+$;break;case"rotateRight":ne.totalRotation=(ne.totalRotation||0)-$;break}J.modelId===c.value&&(ne.lonlat=_,ne.heightDistance=Y,ne.rotation=$,Object.assign(S.value,ne)),w(J.modelId,ne)})},R=()=>{if(!c.value){ge.warning("请先选择主模型");return}const O=b(c.value);if(!O||!r?.value?.getViewer)return;const T=r.value.getViewer(),_=r.value.getCesium(),Y=O.boundingSphere;T.camera.flyToBoundingSphere(Y,{offset:new _.HeadingPitchRange(0,_.Math.toRadians(-90),Y.radius*2),duration:1.5})},U=()=>{r?.value?.saveRegion?(r.value.saveRegion(u.value),s("save",d.unref(u))):(console.log("Save models:",u.value),ge.warning("未找到保存接口,数据已打印控制台"))};return d.watch(()=>i.visible,O=>{O?(L(),G(),a.value==="pick"&&E()):(I(),m())}),d.onMounted(()=>{i.visible&&(L(),G(),a.value==="pick"&&E())}),(O,T)=>(d.openBlock(),d.createBlock(Re,{visible:o.value,title:"调整位置(调整前可选择正北俯视)","full-height":n.fullHeight,"onUpdate:visible":T[25]||(T[25]=_=>o.value=_),onClose:F,onSave:U},{default:d.withCtx(()=>[d.createElementVNode("div",uE,[d.createElementVNode("div",hE,[d.createElementVNode("div",fE,[T[26]||(T[26]=d.createElementVNode("label",null,"模型类型:",-1)),d.createElementVNode("div",pE,[d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="BIM"}),onClick:T[0]||(T[0]=_=>l.value="BIM")},"BIM模型",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="OSGB"}),onClick:T[1]||(T[1]=_=>l.value="OSGB")},"倾斜摄影",2)])]),d.createElementVNode("div",gE,[T[27]||(T[27]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",mE,[d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="param"}),onClick:T[2]||(T[2]=_=>a.value="param")},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="pick"}),onClick:T[3]||(T[3]=_=>a.value="pick")},"地图点选",2)])]),d.createElementVNode("div",AE,[T[28]||(T[28]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",yE,d.toDisplayString(x.value||"未选择"),1)]),T[42]||(T[42]=d.createElementVNode("div",{class:"separator"},null,-1)),a.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[T[36]||(T[36]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",CE,[T[29]||(T[29]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[4]||(T[4]=_=>S.value.longitude=_),onChange:T[5]||(T[5]=_=>v("longitude")),step:"0.000001"},null,544),[[d.vModelText,S.value.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",EE,[T[30]||(T[30]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[6]||(T[6]=_=>S.value.latitude=_),onChange:T[7]||(T[7]=_=>v("latitude")),step:"0.000001"},null,544),[[d.vModelText,S.value.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",wE,[T[31]||(T[31]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[8]||(T[8]=_=>S.value.height=_),onChange:T[9]||(T[9]=_=>v("height")),step:"0.1"},null,544),[[d.vModelText,S.value.height,void 0,{number:!0}]])]),d.createElementVNode("div",bE,[T[32]||(T[32]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[10]||(T[10]=_=>S.value.totalRotation=_),onChange:T[11]||(T[11]=_=>v("totalRotation")),step:"1"},null,544),[[d.vModelText,S.value.totalRotation,void 0,{number:!0}]])]),T[37]||(T[37]=d.createElementVNode("div",{class:"separator"},null,-1)),T[38]||(T[38]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",vE,[T[33]||(T[33]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[12]||(T[12]=_=>S.value.lonlat=_),step:"0.000001"},null,512),[[d.vModelText,S.value.lonlat,void 0,{number:!0}]])]),d.createElementVNode("div",IE,[T[34]||(T[34]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[13]||(T[13]=_=>S.value.heightDistance=_),step:"0.1"},null,512),[[d.vModelText,S.value.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",xE,[T[35]||(T[35]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[14]||(T[14]=_=>S.value.rotation=_),step:"1"},null,512),[[d.vModelText,S.value.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",BE,[d.createElementVNode("button",{onClick:T[15]||(T[15]=_=>B("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:T[16]||(T[16]=_=>B("north"))},"北移"),d.createElementVNode("button",{onClick:T[17]||(T[17]=_=>B("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:T[18]||(T[18]=_=>B("west"))},"西移"),d.createElementVNode("button",{onClick:T[19]||(T[19]=_=>B("south"))},"南移"),d.createElementVNode("button",{onClick:T[20]||(T[20]=_=>B("east"))},"东移"),d.createElementVNode("button",{onClick:T[21]||(T[21]=_=>B("up"))},"上移"),d.createElementVNode("button",{onClick:T[22]||(T[22]=_=>B("down"))},"下移"),d.createElementVNode("button",{onClick:R,class:"primary-btn"},"正北俯视"),d.createElementVNode("button",{onClick:U,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):a.value==="pick"?(d.openBlock(),d.createElementBlock("div",SE,[d.createElementVNode("div",ME,[d.createElementVNode("div",TE,[d.createElementVNode("div",{onClick:T[23]||(T[23]=_=>h.value="BIM"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:h.value==="BIM",style:{"margin-right":"5px"}},null,8,DE),T[39]||(T[39]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"BIM标记点:",-1))]),f.value?(d.openBlock(),d.createElementBlock("div",kE,[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",PE,"未选择"))])]),d.createElementVNode("div",FE,[d.createElementVNode("div",RE,[d.createElementVNode("div",{onClick:T[24]||(T[24]=_=>h.value="MAP"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:h.value==="MAP",style:{"margin-right":"5px"}},null,8,OE),T[40]||(T[40]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"地图标记点:",-1))]),p.value?(d.openBlock(),d.createElementBlock("div",LE,[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",NE,"未选择"))])]),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:M},"调整位置"),d.createElementVNode("button",{onClick:U},"保存")]),T[41]||(T[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",UE,[d.createElementVNode("div",_E,[d.createElementVNode("div",QE,[d.createElementVNode("input",{type:"checkbox",checked:g.value,onChange:P},null,40,HE)]),T[43]||(T[43]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),T[44]||(T[44]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),T[45]||(T[45]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",GE,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(D.value,(_,Y)=>(d.openBlock(),d.createElementBlock("div",{key:_.modelId,class:d.normalizeClass(["list-item",{active:_.modelId===c.value}])},[d.createElementVNode("div",YE,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":$=>_.selected=$},null,8,VE),[[d.vModelCheckbox,_.selected]])]),d.createElementVNode("div",WE,d.toDisplayString(Y+1),1),d.createElementVNode("div",{class:"col-name",title:_.modelName},d.toDisplayString(_.modelName),9,zE),d.createElementVNode("div",jE,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:_.modelId===c.value,onChange:$=>N(_.modelId)},null,40,$E)])],2))),128))])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-3bfda484"]]);function Fi(){return Fi=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var i in t)({}).hasOwnProperty.call(t,i)&&(n[i]=t[i])}return n},Fi.apply(null,arguments)}const KE={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:"下一世纪"},XE={placeholder:"请选择时间",rangePlaceholder:["开始时间","结束时间"]},rc={lang:Fi({placeholder:"请选择日期",yearPlaceholder:"请选择年份",quarterPlaceholder:"请选择季度",monthPlaceholder:"请选择月份",weekPlaceholder:"请选择周",rangePlaceholder:["开始日期","结束日期"],rangeYearPlaceholder:["开始年份","结束年份"],rangeMonthPlaceholder:["开始月份","结束月份"],rangeQuarterPlaceholder:["开始季度","结束季度"],rangeWeekPlaceholder:["开始周","结束周"]},KE),timePickerLocale:Fi({},XE)};rc.lang.ok="确定";var Ri={exports:{}},qE=Ri.exports,ac;function lc(){return ac||(ac=1,(function(n,e){(function(t,i){n.exports=i()})(qE,(function(){var t=1e3,i=6e4,s=36e5,o="millisecond",r="second",l="minute",a="hour",c="day",u="week",h="month",f="quarter",p="year",A="date",C="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|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,E={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 b=["th","st","nd","rd"],w=N%100;return"["+N+(b[(w-20)%10]||b[w]||b[0])+"]"}},I=function(N,b,w){var v=String(N);return!v||v.length>=b?N:""+Array(b+1-v.length).join(w)+N},M={s:I,z:function(N){var b=-N.utcOffset(),w=Math.abs(b),v=Math.floor(w/60),B=w%60;return(b<=0?"+":"-")+I(v,2,"0")+":"+I(B,2,"0")},m:function N(b,w){if(b.date()<w.date())return-N(w,b);var v=12*(w.year()-b.year())+(w.month()-b.month()),B=b.clone().add(v,h),R=w-B<0,U=b.clone().add(v+(R?-1:1),h);return+(-(v+(w-B)/(R?B-U:U-B))||0)},a:function(N){return N<0?Math.ceil(N)||0:Math.floor(N)},p:function(N){return{M:h,y:p,w:u,d:c,D:A,h:a,m:l,s:r,ms:o,Q:f}[N]||String(N||"").toLowerCase().replace(/s$/,"")},u:function(N){return N===void 0}},k="en",S={};S[k]=E;var x="$isDayjsObject",g=function(N){return N instanceof L||!(!N||!N[x])},F=function N(b,w,v){var B;if(!b)return k;if(typeof b=="string"){var R=b.toLowerCase();S[R]&&(B=R),w&&(S[R]=w,B=R);var U=b.split("-");if(!B&&U.length>1)return N(U[0])}else{var O=b.name;S[O]=b,B=O}return!v&&B&&(k=B),B||!v&&k},D=function(N,b){if(g(N))return N.clone();var w=typeof b=="object"?b:{};return w.date=N,w.args=arguments,new L(w)},P=M;P.l=F,P.i=g,P.w=function(N,b){return D(N,{locale:b.$L,utc:b.$u,x:b.$x,$offset:b.$offset})};var L=(function(){function N(w){this.$L=F(w.locale,null,!0),this.parse(w),this.$x=this.$x||w.x||{},this[x]=!0}var b=N.prototype;return b.parse=function(w){this.$d=(function(v){var B=v.date,R=v.utc;if(B===null)return new Date(NaN);if(P.u(B))return new Date;if(B instanceof Date)return new Date(B);if(typeof B=="string"&&!/Z$/i.test(B)){var U=B.match(m);if(U){var O=U[2]-1||0,T=(U[7]||"0").substring(0,3);return R?new Date(Date.UTC(U[1],O,U[3]||1,U[4]||0,U[5]||0,U[6]||0,T)):new Date(U[1],O,U[3]||1,U[4]||0,U[5]||0,U[6]||0,T)}}return new Date(B)})(w),this.init()},b.init=function(){var w=this.$d;this.$y=w.getFullYear(),this.$M=w.getMonth(),this.$D=w.getDate(),this.$W=w.getDay(),this.$H=w.getHours(),this.$m=w.getMinutes(),this.$s=w.getSeconds(),this.$ms=w.getMilliseconds()},b.$utils=function(){return P},b.isValid=function(){return this.$d.toString()!==C},b.isSame=function(w,v){var B=D(w);return this.startOf(v)<=B&&B<=this.endOf(v)},b.isAfter=function(w,v){return D(w)<this.startOf(v)},b.isBefore=function(w,v){return this.endOf(v)<D(w)},b.$g=function(w,v,B){return P.u(w)?this[v]:this.set(B,w)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(w,v){var B=this,R=!!P.u(v)||v,U=P.p(w),O=function(V,j){var X=P.w(B.$u?Date.UTC(B.$y,j,V):new Date(B.$y,j,V),B);return R?X:X.endOf(c)},T=function(V,j){return P.w(B.toDate()[V].apply(B.toDate("s"),(R?[0,0,0,0]:[23,59,59,999]).slice(j)),B)},_=this.$W,Y=this.$M,$=this.$D,J="set"+(this.$u?"UTC":"");switch(U){case p:return R?O(1,0):O(31,11);case h:return R?O(1,Y):O(0,Y+1);case u:var ne=this.$locale().weekStart||0,re=(_<ne?_+7:_)-ne;return O(R?$-re:$+(6-re),Y);case c:case A:return T(J+"Hours",0);case a:return T(J+"Minutes",1);case l:return T(J+"Seconds",2);case r:return T(J+"Milliseconds",3);default:return this.clone()}},b.endOf=function(w){return this.startOf(w,!1)},b.$set=function(w,v){var B,R=P.p(w),U="set"+(this.$u?"UTC":""),O=(B={},B[c]=U+"Date",B[A]=U+"Date",B[h]=U+"Month",B[p]=U+"FullYear",B[a]=U+"Hours",B[l]=U+"Minutes",B[r]=U+"Seconds",B[o]=U+"Milliseconds",B)[R],T=R===c?this.$D+(v-this.$W):v;if(R===h||R===p){var _=this.clone().set(A,1);_.$d[O](T),_.init(),this.$d=_.set(A,Math.min(this.$D,_.daysInMonth())).$d}else O&&this.$d[O](T);return this.init(),this},b.set=function(w,v){return this.clone().$set(w,v)},b.get=function(w){return this[P.p(w)]()},b.add=function(w,v){var B,R=this;w=Number(w);var U=P.p(v),O=function(Y){var $=D(R);return P.w($.date($.date()+Math.round(Y*w)),R)};if(U===h)return this.set(h,this.$M+w);if(U===p)return this.set(p,this.$y+w);if(U===c)return O(1);if(U===u)return O(7);var T=(B={},B[l]=i,B[a]=s,B[r]=t,B)[U]||1,_=this.$d.getTime()+w*T;return P.w(_,this)},b.subtract=function(w,v){return this.add(-1*w,v)},b.format=function(w){var v=this,B=this.$locale();if(!this.isValid())return B.invalidDate||C;var R=w||"YYYY-MM-DDTHH:mm:ssZ",U=P.z(this),O=this.$H,T=this.$m,_=this.$M,Y=B.weekdays,$=B.months,J=B.meridiem,ne=function(j,X,se,oe){return j&&(j[X]||j(v,R))||se[X].slice(0,oe)},re=function(j){return P.s(O%12||12,j,"0")},V=J||function(j,X,se){var oe=j<12?"AM":"PM";return se?oe.toLowerCase():oe};return R.replace(y,(function(j,X){return X||(function(se){switch(se){case"YY":return String(v.$y).slice(-2);case"YYYY":return P.s(v.$y,4,"0");case"M":return _+1;case"MM":return P.s(_+1,2,"0");case"MMM":return ne(B.monthsShort,_,$,3);case"MMMM":return ne($,_);case"D":return v.$D;case"DD":return P.s(v.$D,2,"0");case"d":return String(v.$W);case"dd":return ne(B.weekdaysMin,v.$W,Y,2);case"ddd":return ne(B.weekdaysShort,v.$W,Y,3);case"dddd":return Y[v.$W];case"H":return String(O);case"HH":return P.s(O,2,"0");case"h":return re(1);case"hh":return re(2);case"a":return V(O,T,!0);case"A":return V(O,T,!1);case"m":return String(T);case"mm":return P.s(T,2,"0");case"s":return String(v.$s);case"ss":return P.s(v.$s,2,"0");case"SSS":return P.s(v.$ms,3,"0");case"Z":return U}return null})(j)||U.replace(":","")}))},b.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},b.diff=function(w,v,B){var R,U=this,O=P.p(v),T=D(w),_=(T.utcOffset()-this.utcOffset())*i,Y=this-T,$=function(){return P.m(U,T)};switch(O){case p:R=$()/12;break;case h:R=$();break;case f:R=$()/3;break;case u:R=(Y-_)/6048e5;break;case c:R=(Y-_)/864e5;break;case a:R=Y/s;break;case l:R=Y/i;break;case r:R=Y/t;break;default:R=Y}return B?R:P.a(R)},b.daysInMonth=function(){return this.endOf(h).$D},b.$locale=function(){return S[this.$L]},b.locale=function(w,v){if(!w)return this.$L;var B=this.clone(),R=F(w,v,!0);return R&&(B.$L=R),B},b.clone=function(){return P.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},N})(),G=L.prototype;return D.prototype=G,[["$ms",o],["$s",r],["$m",l],["$H",a],["$W",c],["$M",h],["$y",p],["$D",A]].forEach((function(N){G[N[1]]=function(b){return this.$g(b,N[0],N[1])}})),D.extend=function(N,b){return N.$i||(N(b,L,D),N.$i=!0),D},D.locale=F,D.isDayjs=g,D.unix=function(N){return D(1e3*N)},D.en=S[k],D.Ls=S,D.p={},D}))})(Ri)),Ri.exports}var JE=lc();const ze=tn(JE);var Oi={exports:{}},ZE=Oi.exports,cc;function ew(){return cc||(cc=1,(function(n,e){(function(t,i){n.exports=i(lc())})(ZE,(function(t){function i(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var s=i(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,l){return l==="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,l){var a=100*r+l;return a<600?"凌晨":a<900?"早上":a<1100?"上午":a<1300?"中午":a<1800?"下午":"晚上"}};return s.default.locale(o,null,!0),o}))})(Oi)),Oi.exports}ew();var Li={exports:{}},tw=Li.exports,dc;function nw(){return dc||(dc=1,(function(n,e){(function(t,i){n.exports=i()})(tw,(function(){return function(t,i,s){var o=i.prototype,r=function(h){return h&&(h.indexOf?h:h.s)},l=function(h,f,p,A,C){var m=h.name?h:h.$locale(),y=r(m[f]),E=r(m[p]),I=y||E.map((function(k){return k.slice(0,A)}));if(!C)return I;var M=m.weekStart;return I.map((function(k,S){return I[(S+(M||0))%7]}))},a=function(){return s.Ls[s.locale()]},c=function(h,f){return h.formats[f]||(function(p){return p.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(A,C,m){return C||m.slice(1)}))})(h.formats[f.toUpperCase()])},u=function(){var h=this;return{months:function(f){return f?f.format("MMMM"):l(h,"months")},monthsShort:function(f){return f?f.format("MMM"):l(h,"monthsShort","months",3)},firstDayOfWeek:function(){return h.$locale().weekStart||0},weekdays:function(f){return f?f.format("dddd"):l(h,"weekdays")},weekdaysMin:function(f){return f?f.format("dd"):l(h,"weekdaysMin","weekdays",2)},weekdaysShort:function(f){return f?f.format("ddd"):l(h,"weekdaysShort","weekdays",3)},longDateFormat:function(f){return c(h.$locale(),f)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};o.localeData=function(){return u.bind(this)()},s.localeData=function(){var h=a();return{firstDayOfWeek:function(){return h.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(f){return c(h,f)},meridiem:h.meridiem,ordinal:h.ordinal}},s.months=function(){return l(a(),"months")},s.monthsShort=function(){return l(a(),"monthsShort","months",3)},s.weekdays=function(h){return l(a(),"weekdays",null,null,h)},s.weekdaysShort=function(h){return l(a(),"weekdaysShort","weekdays",3,h)},s.weekdaysMin=function(h){return l(a(),"weekdaysMin","weekdays",2,h)}}}))})(Li)),Li.exports}var iw=nw();const sw=tn(iw);var Ni={exports:{}},ow=Ni.exports,uc;function rw(){return uc||(uc=1,(function(n,e){(function(t,i){n.exports=i()})(ow,(function(){return function(t,i){i.prototype.weekday=function(s){var o=this.$locale().weekStart||0,r=this.$W,l=(r<o?r+7:r)-o;return this.$utils().u(s)?l:this.subtract(l,"day").add(s,"day")}}}))})(Ni)),Ni.exports}var aw=rw();const lw=tn(aw);var Ui={exports:{}},cw=Ui.exports,hc;function dw(){return hc||(hc=1,(function(n,e){(function(t,i){n.exports=i()})(cw,(function(){var t="week",i="year";return function(s,o,r){var l=o.prototype;l.week=function(a){if(a===void 0&&(a=null),a!==null)return this.add(7*(a-this.week()),"day");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var u=r(this).startOf(i).add(1,i).date(c),h=r(this).endOf(t);if(u.isBefore(h))return 1}var f=r(this).startOf(i).date(c).startOf(t).subtract(1,"millisecond"),p=this.diff(f,t,!0);return p<0?r(this).startOf("week").week():Math.ceil(p)},l.weeks=function(a){return a===void 0&&(a=null),this.week(a)}}}))})(Ui)),Ui.exports}var uw=dw();const hw=tn(uw);var _i={exports:{}},fw=_i.exports,fc;function pw(){return fc||(fc=1,(function(n,e){(function(t,i){n.exports=i()})(fw,(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"},i=/(\[[^[]*\])|([-_:/.,()\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?/,l=/\d*[^-_:/,()\s\d]+/,a={},c=function(m){return(m=+m)+(m>68?1900:2e3)},u=function(m){return function(y){this[m]=+y}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var E=y.match(/([+-]|\d\d)/g),I=60*E[1]+(+E[2]||0);return I===0?0:E[0]==="+"?-I:I})(m)}],f=function(m){var y=a[m];return y&&(y.indexOf?y:y.s.concat(y.f))},p=function(m,y){var E,I=a.meridiem;if(I){for(var M=1;M<=24;M+=1)if(m.indexOf(I(M,0,y))>-1){E=M>12;break}}else E=m===(y?"pm":"PM");return E},A={A:[l,function(m){this.afternoon=p(m,!1)}],a:[l,function(m){this.afternoon=p(m,!0)}],Q:[s,function(m){this.month=3*(m-1)+1}],S:[s,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[r,u("seconds")],ss:[r,u("seconds")],m:[r,u("minutes")],mm:[r,u("minutes")],H:[r,u("hours")],h:[r,u("hours")],HH:[r,u("hours")],hh:[r,u("hours")],D:[r,u("day")],DD:[o,u("day")],Do:[l,function(m){var y=a.ordinal,E=m.match(/\d+/);if(this.day=E[0],y)for(var I=1;I<=31;I+=1)y(I).replace(/\[|\]/g,"")===m&&(this.day=I)}],w:[r,u("week")],ww:[o,u("week")],M:[r,u("month")],MM:[o,u("month")],MMM:[l,function(m){var y=f("months"),E=(f("monthsShort")||y.map((function(I){return I.slice(0,3)}))).indexOf(m)+1;if(E<1)throw new Error;this.month=E%12||E}],MMMM:[l,function(m){var y=f("months").indexOf(m)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[o,function(m){this.year=c(m)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function C(m){var y,E;y=m,E=a&&a.formats;for(var I=(m=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(D,P,L){var G=L&&L.toUpperCase();return P||E[L]||t[L]||E[G].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(N,b,w){return b||w.slice(1)}))}))).match(i),M=I.length,k=0;k<M;k+=1){var S=I[k],x=A[S],g=x&&x[0],F=x&&x[1];I[k]=F?{regex:g,parser:F}:S.replace(/^\[|\]$/g,"")}return function(D){for(var P={},L=0,G=0;L<M;L+=1){var N=I[L];if(typeof N=="string")G+=N.length;else{var b=N.regex,w=N.parser,v=D.slice(G),B=b.exec(v)[0];w.call(P,B),D=D.replace(B,"")}}return(function(R){var U=R.afternoon;if(U!==void 0){var O=R.hours;U?O<12&&(R.hours+=12):O===12&&(R.hours=0),delete R.afternoon}})(P),P}}return function(m,y,E){E.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(c=m.parseTwoDigitYear);var I=y.prototype,M=I.parse;I.parse=function(k){var S=k.date,x=k.utc,g=k.args;this.$u=x;var F=g[1];if(typeof F=="string"){var D=g[2]===!0,P=g[3]===!0,L=D||P,G=g[2];P&&(G=g[2]),a=this.$locale(),!D&&G&&(a=E.Ls[G]),this.$d=(function(v,B,R,U){try{if(["x","X"].indexOf(B)>-1)return new Date((B==="X"?1e3:1)*v);var O=C(B)(v),T=O.year,_=O.month,Y=O.day,$=O.hours,J=O.minutes,ne=O.seconds,re=O.milliseconds,V=O.zone,j=O.week,X=new Date,se=Y||(T||_?1:X.getDate()),oe=T||X.getFullYear(),ae=0;T&&!_||(ae=_>0?_-1:X.getMonth());var Ce,le=$||0,Pe=J||0,ct=ne||0,$e=re||0;return V?new Date(Date.UTC(oe,ae,se,le,Pe,ct,$e+60*V.offset*1e3)):R?new Date(Date.UTC(oe,ae,se,le,Pe,ct,$e)):(Ce=new Date(oe,ae,se,le,Pe,ct,$e),j&&(Ce=U(Ce).week(j).toDate()),Ce)}catch{return new Date("")}})(S,F,x,E),this.init(),G&&G!==!0&&(this.$L=this.locale(G).$L),L&&S!=this.format(F)&&(this.$d=new Date("")),a={}}else if(F instanceof Array)for(var N=F.length,b=1;b<=N;b+=1){g[1]=F[b-1];var w=E.apply(this,g);if(w.isValid()){this.$d=w.$d,this.$L=w.$L,this.init();break}b===N&&(this.$d=new Date(""))}else M.call(this,k)}}}))})(_i)),_i.exports}var gw=pw();const mw=tn(gw),Aw={class:"setting-panel"},yw={class:"tabs-header"},Cw={class:"tab-content"},Ew={key:0,class:"section"},ww={class:"setting-item"},bw={class:"setting-item"},vw={class:"setting-item"},Iw={key:1,class:"section"},xw={class:"tabs-header",style:{"margin-bottom":"8px"}},Bw={key:0},Sw={class:"setting-item column"},Mw={class:"setting-item column"},Tw={class:"setting-item"},Dw={key:1},kw={class:"setting-item column"},Pw={class:"setting-item column",style:{"margin-top":"12px","border-top":"1px solid rgba(255,255,255,0.1)","padding-top":"8px"}},Fw={class:"search-box"},Rw={key:2,class:"section"},Ow={class:"setting-item"},Lw={key:0,class:"setting-item column"},Nw={class:"sub-label"},Uw={class:"setting-item"},_w={class:"setting-item"},Qw={class:"setting-item column"},Hw={class:"setting-item column"},Gw={class:"sub-label"},Yw={class:"setting-item column"},Vw={class:"sub-label"},Ww={class:"setting-item column"},zw={class:"sub-label"},jw={class:"setting-item column"},$w={style:{display:"flex",gap:"8px","margin-bottom":"8px"}},Kw=["onClick","title"],Xw={style:{display:"flex",gap:"8px","align-items":"center"}},qw={key:3,class:"section"},Jw={class:"setting-item"},Zw={class:"setting-item column"},Gn=Ue(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(n,{emit:e}){ze.locale("zh-cn"),ze.extend(sw),ze.extend(lw),ze.extend(hw),ze.extend(mw);const t=me.Switch,i=me.Radio.Group,s=me.Radio,o=me.Input,r=me.Slider,l=me.Select,a=me.Select.Option,c=me.DatePicker,u=n,h=e,f=d.inject("leitingMethods"),p=d.computed({get:()=>u.open!==void 0?u.open:u.visible,set:b=>{h("update:visible",b),h("update:open",b)}}),A=d.ref("GIS"),C=d.reactive({globe:!1,terrain:!1,depthTest:!1}),m=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"}),y=d.reactive({shadows:!1,shadowDarkness:.7,environmentMap:!1,ambientOcclusion:!1,time:ze("2025-06-22 10:00"),brightness:1.5,contrast:1,saturation:1,backgroundColor:"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)"}),E=d.reactive({collision:!1,habit:0}),I=b=>{b&&(b.globe!==void 0&&(C.globe=b.globe),b.terrain!==void 0&&(C.terrain=b.terrain),b.depthTest!==void 0&&(C.depthTest=b.depthTest),b.mapProvider!==void 0&&(m.provider=b.mapProvider),b.tiandituLayerType!==void 0&&(m.tianditu.layerType=b.tiandituLayerType),b.tiandituShowLabel!==void 0&&(m.tianditu.showLabel=b.tiandituShowLabel),b.arcgisUrl!==void 0&&(m.arcgis.url=b.arcgisUrl),b.shadows!==void 0&&(y.shadows=b.shadows),b.shadowDarkness!==void 0&&(y.shadowDarkness=b.shadowDarkness),b.environmentMap!==void 0&&(y.environmentMap=b.environmentMap),b.ambientOcclusion!==void 0&&(y.ambientOcclusion=b.ambientOcclusion),b.time!==void 0&&(typeof b.time=="number"?y.time=ze().startOf("day").add(b.time,"hour"):y.time=ze(b.time)),b.brightness!==void 0&&(y.brightness=b.brightness),b.contrast!==void 0&&(y.contrast=b.contrast),b.saturation!==void 0&&(y.saturation=b.saturation),b.backgroundColor!==void 0&&(y.backgroundColor=b.backgroundColor),b.collision!==void 0&&(E.collision=b.collision),b.mouseHabit!==void 0&&(E.habit=b.mouseHabit))};d.watch(()=>u.initialConfig,b=>{I(b)},{deep:!0,immediate:!0});const M=["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%)"],k=[{label:"全球影像地图服务(墨卡托)",value:"img_w"},{label:"全球影像地图服务(经纬度)",value:"img_c"},{label:"全球矢量地图服务(墨卡托)",value:"vec_w"},{label:"全球矢量地图服务(经纬度)",value:"vec_c"},{label:"全球地形晕渲服务(墨卡托)",value:"ter_w"},{label:"全球地形晕渲服务(经纬度)",value:"ter_c"}],S=()=>{const b=m.provider,w={};b==="tianditu"?(w.token=m.tianditu.token,w.layerType=m.tianditu.layerType,w.showAnnotation=m.tianditu.showLabel):b==="arcgis"&&(w.url=m.arcgis.url),f.value?.changeBaseMap?.(b,w)};d.watch(()=>m.provider,S),d.watch(()=>m.tianditu.layerType,S),d.watch(()=>m.tianditu.showLabel,S),d.watch(()=>m.tianditu.token,hs(S,1e3)),d.watch(()=>m.arcgis.url,hs(S,1e3)),d.onMounted(()=>{u.tiandituToken&&(m.tianditu.token=u.tiandituToken)}),d.watch(()=>C.globe,b=>f.value?.setGlobeEnvironmentVisible?.(b)),d.watch(()=>C.terrain,b=>f.value?.setTerrainEnable?.(b)),d.watch(()=>C.depthTest,b=>f.value?.setDepthTestEnable?.(b)),d.watch(()=>f?.value,b=>{if(b){if(b.getConfigure=()=>({globe:C.globe,terrain:C.terrain,depthTest:C.depthTest,mapProvider:m.provider,tiandituLayerType:m.tianditu.layerType,tiandituShowLabel:m.tianditu.showLabel,arcgisUrl:m.arcgis.url,shadows:y.shadows,shadowDarkness:y.shadowDarkness,environmentMap:y.environmentMap,ambientOcclusion:y.ambientOcclusion,time:ze.isDayjs(y.time)?y.time.format("YYYY-MM-DD HH:mm"):y.time,brightness:y.brightness,contrast:y.contrast,saturation:y.saturation,backgroundColor:y.backgroundColor,collision:E.collision,mouseHabit:E.habit}),b.setConfigure=w=>{I(w)},b.setBackgroundColor&&y.backgroundColor&&b.setBackgroundColor(y.backgroundColor),b.setGlobeEnvironmentVisible&&b.setGlobeEnvironmentVisible(C.globe),b.setShadowsEnable&&b.setShadowsEnable(y.shadows),b.setShadowDarkness&&b.setShadowDarkness(y.shadowDarkness),b.setEnvironmentMapEnable&&b.setEnvironmentMapEnable(y.environmentMap),b.setAmbientOcclusion&&b.setAmbientOcclusion(y.ambientOcclusion),b.setTime){const w=ze.isDayjs(y.time)?y.time.toDate():new Date;b.setTime(w)}b.setModelBrightness&&b.setModelBrightness(y.brightness),b.setCollisionDetection&&b.setCollisionDetection(E.collision),b.setMouseHabit&&b.setMouseHabit(E.habit),b.changeBaseMap&&m.baseMap&&b.changeBaseMap(m.baseMap,{token:m.tianditu.token,layerType:m.tianditu.layerType,showAnnotation:m.tianditu.showLabel,url:m.arcgis.url})}},{immediate:!0});const x=d.computed({get:()=>{const b=y.backgroundColor;return/^#[0-9A-Fa-f]{6}$/.test(b)?b:"#ffffff"},set:b=>{y.backgroundColor=b}}),g=d.ref(""),F=d.ref(!1),D=d.ref([]);d.watch(()=>C.globe,b=>f.value?.setGlobeEnvironmentVisible?.(b)),d.watch(()=>C.terrain,b=>f.value?.setTerrainEnable?.(b)),d.watch(()=>m.baseMap,b=>{f.value?.changeBaseMap?.(b,{token:u.tiandituToken})}),d.watch(()=>y.shadows,b=>f.value?.setShadowsEnable?.(b)),d.watch(()=>y.shadowDarkness,b=>f.value?.setShadowDarkness?.(b)),d.watch(()=>y.environmentMap,b=>f.value?.setEnvironmentMapEnable?.(b)),d.watch(()=>y.ambientOcclusion,b=>f.value?.setAmbientOcclusion?.(b)),d.watch(()=>y.time,b=>{const w=ze.isDayjs(b)?b.toDate():new Date;f.value?.setTime?.(w)}),d.watch(()=>[y.brightness,y.contrast,y.saturation],([b,w,v])=>{const B=f.value;B?.setModelColorAdjustment?B.setModelColorAdjustment({brightness:b,contrast:w,saturation:v}):B?.setModelBrightness?.(b)}),d.watch(()=>y.backgroundColor,b=>{if(f.value?.setBackgroundColor)f.value.setBackgroundColor(b);else{const w=document.querySelector(".cesium-viewer");w&&(w.style.background=b)}}),d.watch(()=>E.collision,b=>f.value?.setCollisionDetection?.(b)),d.watch(()=>E.habit,b=>f.value?.setMouseHabit?.(b));const P=b=>{if(b?.pois&&Array.isArray(b.pois)&&b.pois.length>0){const w=b.pois[0],v=w.lonlat.split(/[, ]/).map(Number);if(v.length>=2&&!isNaN(v[0])&&!isNaN(v[1]))return{name:w.name,lon:v[0],lat:v[1],raw:w}}if(b?.area&&b.area.lonlat){const w=b.area,v=w.lonlat.split(/[, ]/).map(Number);if(v.length>=2&&!isNaN(v[0])&&!isNaN(v[1]))return{name:w.name,lon:v[0],lat:v[1],raw:w}}return null},G=hs(async()=>{const b=(g.value||"").trim();if(!b)return;const w=u.tiandituToken||"c25f14fb6bd4397cf8fe45144ff768d6";F.value=!0,D.value=[];try{if(f.value?.searchLocation){const v=await f.value.searchLocation(b,w),B=P(v);B&&(D.value=[B],ge.success(`找到:${B.name||""}`),f.value.flyTo(B.lon,B.lat,5e3))}else{const B=`https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(JSON.stringify({keyWord:b,level:12,mapBound:"-180,-90,180,90",queryType:1,start:0,count:10}))}&type=query&tk=${encodeURIComponent(w)}`,R=await fetch(B);if(!R.ok)throw new Error(`HTTP ${R.status}`);const U=await R.json(),O=P(U);O&&(D.value=[O],ge.success(`找到:${O.name||""}`),f.value?.flyTo?.(O.lon,O.lat,5e3))}}catch(v){console.error("tianditu search error",v)}finally{F.value=!1}},800);d.watch(g,()=>{G()});const N=()=>{p.value=!1,h("close")};return d.onMounted(()=>{}),(b,w)=>(d.openBlock(),d.createBlock(Re,{visible:p.value,title:"设置","full-height":n.fullHeight,onClose:N,"onUpdate:visible":w[26]||(w[26]=v=>p.value=v)},{default:d.withCtx(()=>[d.createElementVNode("div",Aw,[d.createElementVNode("div",yw,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="GIS"}]),onClick:w[0]||(w[0]=v=>A.value="GIS")},"GIS",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="MAP"}]),onClick:w[1]||(w[1]=v=>A.value="MAP")},"地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="RENDER"}]),onClick:w[2]||(w[2]=v=>A.value="RENDER")},"渲染",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="MOUSE"}]),onClick:w[3]||(w[3]=v=>A.value="MOUSE")},"鼠标",2)]),d.createElementVNode("div",Cw,[A.value==="GIS"?(d.openBlock(),d.createElementBlock("div",Ew,[d.createElementVNode("div",ww,[w[27]||(w[27]=d.createElementVNode("span",null,"地球 (含大气/日月/星空)",-1)),d.createVNode(d.unref(t),{checked:C.globe,"onUpdate:checked":w[4]||(w[4]=v=>C.globe=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",bw,[w[28]||(w[28]=d.createElementVNode("span",null,"地形 (高程)",-1)),d.createVNode(d.unref(t),{checked:C.terrain,"onUpdate:checked":w[5]||(w[5]=v=>C.terrain=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",vw,[w[29]||(w[29]=d.createElementVNode("span",null,"地形遮挡",-1)),d.createVNode(d.unref(t),{checked:C.depthTest,"onUpdate:checked":w[6]||(w[6]=v=>C.depthTest=v),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),A.value==="MAP"?(d.openBlock(),d.createElementBlock("div",Iw,[d.createElementVNode("div",xw,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.provider==="tianditu"}]),onClick:w[7]||(w[7]=v=>m.provider="tianditu")},"天地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.provider==="arcgis"}]),onClick:w[8]||(w[8]=v=>m.provider="arcgis")},"ArcGIS",2)]),m.provider==="tianditu"?(d.openBlock(),d.createElementBlock("div",Bw,[d.createElementVNode("div",Sw,[w[30]||(w[30]=d.createElementVNode("div",{class:"sub-label"},"Token",-1)),d.createVNode(d.unref(o),{value:m.tianditu.token,"onUpdate:value":w[9]||(w[9]=v=>m.tianditu.token=v),size:"small",placeholder:"输入天地图Token"},null,8,["value"])]),d.createElementVNode("div",Mw,[w[31]||(w[31]=d.createElementVNode("div",{class:"sub-label"},"地图风格",-1)),d.createVNode(d.unref(l),{value:m.tianditu.layerType,"onUpdate:value":w[10]||(w[10]=v=>m.tianditu.layerType=v),size:"small",style:{width:"100%"}},{default:d.withCtx(()=>[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(k,v=>d.createVNode(d.unref(a),{key:v.value,value:v.value},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(v.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),d.createElementVNode("div",Tw,[w[32]||(w[32]=d.createElementVNode("span",null,"叠加注记",-1)),d.createVNode(d.unref(t),{checked:m.tianditu.showLabel,"onUpdate:checked":w[11]||(w[11]=v=>m.tianditu.showLabel=v),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),m.provider==="arcgis"?(d.openBlock(),d.createElementBlock("div",Dw,[d.createElementVNode("div",kw,[w[33]||(w[33]=d.createElementVNode("div",{class:"sub-label"},"服务地址",-1)),d.createVNode(d.unref(o),{value:m.arcgis.url,"onUpdate:value":w[12]||(w[12]=v=>m.arcgis.url=v),size:"small",placeholder:"输入ArcGIS MapServer地址"},null,8,["value"])])])):d.createCommentVNode("",!0),d.createElementVNode("div",Pw,[w[34]||(w[34]=d.createElementVNode("div",{class:"sub-label"},"位置搜索 (天地图)",-1)),d.createElementVNode("div",Fw,[d.createVNode(d.unref(o),{value:g.value,"onUpdate:value":w[13]||(w[13]=v=>g.value=v),placeholder:"输入地名搜索",size:"small","allow-clear":""},null,8,["value"])])])])):d.createCommentVNode("",!0),A.value==="RENDER"?(d.openBlock(),d.createElementBlock("div",Rw,[d.createElementVNode("div",Ow,[w[35]||(w[35]=d.createElementVNode("span",null,"阴影",-1)),d.createVNode(d.unref(t),{checked:y.shadows,"onUpdate:checked":w[14]||(w[14]=v=>y.shadows=v),size:"small"},null,8,["checked"])]),y.shadows?(d.openBlock(),d.createElementBlock("div",Lw,[d.createElementVNode("div",Nw,"阴影暗度 ("+d.toDisplayString(y.shadowDarkness.toFixed(2))+")",1),d.createVNode(d.unref(r),{value:y.shadowDarkness,"onUpdate:value":w[15]||(w[15]=v=>y.shadowDarkness=v),min:0,max:1,step:.05,size:"small"},null,8,["value"])])):d.createCommentVNode("",!0),d.createElementVNode("div",Uw,[w[36]||(w[36]=d.createElementVNode("span",null,"环境贴图 (HDR)",-1)),d.createVNode(d.unref(t),{checked:y.environmentMap,"onUpdate:checked":w[16]||(w[16]=v=>y.environmentMap=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",_w,[w[37]||(w[37]=d.createElementVNode("span",null,"环境光遮蔽 (AO)",-1)),d.createVNode(d.unref(t),{checked:y.ambientOcclusion,"onUpdate:checked":w[17]||(w[17]=v=>y.ambientOcclusion=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Qw,[w[38]||(w[38]=d.createElementVNode("div",{class:"sub-label"},"日期时间",-1)),d.createVNode(d.unref(c),{value:y.time,"onUpdate:value":w[18]||(w[18]=v=>y.time=v),"show-time":"",locale:d.unref(rc),format:"YYYY-MM-DD HH:mm",size:"small",style:{width:"100%"}},null,8,["value","locale"])]),d.createElementVNode("div",Hw,[d.createElementVNode("div",Gw,"模型亮度 ("+d.toDisplayString(y.brightness.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:y.brightness,"onUpdate:value":w[19]||(w[19]=v=>y.brightness=v),min:0,max:5,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Yw,[d.createElementVNode("div",Vw,"模型对比度 ("+d.toDisplayString(y.contrast.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:y.contrast,"onUpdate:value":w[20]||(w[20]=v=>y.contrast=v),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Ww,[d.createElementVNode("div",zw,"模型饱和度 ("+d.toDisplayString(y.saturation.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:y.saturation,"onUpdate:value":w[21]||(w[21]=v=>y.saturation=v),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",jw,[w[39]||(w[39]=d.createElementVNode("div",{class:"sub-label"},"背景颜色",-1)),d.createElementVNode("div",$w,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(M,(v,B)=>d.createElementVNode("div",{key:B,style:d.normalizeStyle({background:v,width:"32px",height:"24px",borderRadius:"2px",cursor:"pointer",border:"1px solid #d9d9d9",flexShrink:0}),onClick:R=>y.backgroundColor=v,title:"预设 "+(B+1)},null,12,Kw)),64))]),d.createElementVNode("div",Xw,[d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":w[22]||(w[22]=v=>x.value=v),style:{width:"40px",height:"24px",padding:"0",border:"1px solid #d9d9d9"}},null,512),[[d.vModelText,x.value]]),d.createVNode(d.unref(o),{value:y.backgroundColor,"onUpdate:value":w[23]||(w[23]=v=>y.backgroundColor=v),size:"small",style:{flex:"1"},placeholder:"CSS 颜色值"},null,8,["value"])])])])):d.createCommentVNode("",!0),A.value==="MOUSE"?(d.openBlock(),d.createElementBlock("div",qw,[d.createElementVNode("div",Jw,[w[40]||(w[40]=d.createElementVNode("span",null,"碰撞检测",-1)),d.createVNode(d.unref(t),{checked:E.collision,"onUpdate:checked":w[24]||(w[24]=v=>E.collision=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Zw,[w[43]||(w[43]=d.createElementVNode("div",{class:"sub-label"},"操作习惯",-1)),d.createVNode(d.unref(i),{value:E.habit,"onUpdate:value":w[25]||(w[25]=v=>E.habit=v),size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(s),{value:0},{default:d.withCtx(()=>[...w[41]||(w[41]=[d.createTextVNode("默认 (中键旋转)",-1)])]),_:1}),d.createVNode(d.unref(s),{value:1},{default:d.withCtx(()=>[...w[42]||(w[42]=[d.createTextVNode("习惯1 (左键旋转)",-1)])]),_:1})]),_:1},8,["value"])])])):d.createCommentVNode("",!0)])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-1ed17be9"]]),eb={class:"cad-layer-panel"},tb={class:"layer-list-container"},nb={class:"list-header"},ib={class:"col-check"},sb=["checked"],ob={class:"list-body"},rb={class:"col-check"},ab=["checked","onChange"],lb={class:"col-index"},cb=["title"],db={class:"col-color"},ub=["value"],hb={key:0,class:"empty-text"},fb=Ue(d.defineComponent({__name:"LeitingCadLayer",props:{visible:{type:Boolean,default:!1},currentModelId:{type:String,default:""}},emits:["update:visible","handleCloseCardByCadCard"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(""),r=d.ref([]),l=()=>{s.value&&s.value.getDxfModels&&(r.value=s.value.getDxfModels().map(E=>({modelId:E.modelId,modelName:E.modelName}))||[])},a=d.computed(()=>r.value.map(E=>({value:E.modelId,label:E.modelName}))),c=d.ref([]),u=d.ref([]),h=d.computed(()=>c.value.length>0&&u.value.length===c.value.length),f=({modelId:E})=>{if(c.value=[],u.value=[],s.value&&s.value.getDxfLayers){const I=s.value.getDxfLayers({modelId:E});I&&Object.keys(I).forEach((M,k)=>{I[M].length&&(c.value.push({index:k+1,layerName:M,layerColor:I[M][0].color||"#ffffff",key:M}),u.value.push(M))})}},p=E=>{o.value=E,f({modelId:E})},A=E=>{E.target.checked?u.value=c.value.map(M=>M.key):u.value=[],m()},C=(E,I)=>{I.target.checked?u.value.includes(E)||u.value.push(E):u.value=u.value.filter(k=>k!==E),m()},m=()=>{if(s.value&&s.value.showDxfLayer&&(s.value.showDxfLayer({modelId:o.value,show:!0,layers:u.value}),s.value.getDxfLayers)){const E=s.value.getDxfLayers({modelId:o.value});if(E){const I=Object.keys(E).filter(M=>!u.value.includes(M));s.value.showDxfLayer({modelId:o.value,show:!1,layers:I})}}},y=()=>{i("update:visible",!1),i("handleCloseCardByCadCard")};return d.watch(()=>t.visible,E=>{E&&(l(),t.currentModelId?(o.value=t.currentModelId,f({modelId:t.currentModelId})):a.value.length>0&&(o.value=a.value[0]?.value,f({modelId:o.value})))}),d.watch(()=>t.currentModelId,E=>{E&&t.visible&&(o.value=E,f({modelId:E}))}),(E,I)=>(d.openBlock(),d.createBlock(Re,{visible:n.visible,title:"CAD图层","onUpdate:visible":I[3]||(I[3]=M=>E.$emit("update:visible",M)),onClose:y,width:360,align:"right","initial-position":{x:0,y:60}},{"header-extra":d.withCtx(()=>[d.createElementVNode("div",{class:"header-select-container",onMousedown:I[2]||(I[2]=d.withModifiers(()=>{},["stop"]))},[I[4]||(I[4]=d.createElementVNode("span",{class:"header-label"},"图纸:",-1)),d.createVNode(d.unref(me.Select),{value:o.value,"onUpdate:value":I[0]||(I[0]=M=>o.value=M),options:a.value,onChange:I[1]||(I[1]=M=>p(M)),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",eb,[d.createElementVNode("div",tb,[d.createElementVNode("div",nb,[d.createElementVNode("div",ib,[d.createElementVNode("input",{type:"checkbox",checked:h.value,onChange:A},null,40,sb)]),I[5]||(I[5]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),I[6]||(I[6]=d.createElementVNode("div",{class:"col-name"},"图层名称",-1)),I[7]||(I[7]=d.createElementVNode("div",{class:"col-color"},"颜色",-1))]),d.createElementVNode("div",ob,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,M=>(d.openBlock(),d.createElementBlock("div",{key:M.key,class:"list-item"},[d.createElementVNode("div",rb,[d.createElementVNode("input",{type:"checkbox",checked:u.value.includes(M.key),onChange:k=>C(M.key,k)},null,40,ab)]),d.createElementVNode("div",lb,d.toDisplayString(M.index),1),d.createElementVNode("div",{class:"col-name",title:M.layerName},d.toDisplayString(M.layerName),9,cb),d.createElementVNode("div",db,[d.createElementVNode("input",{type:"color",value:M.layerColor,disabled:""},null,8,ub)])]))),128)),c.value.length===0?(d.openBlock(),d.createElementBlock("div",hb,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-a4db4977"]]),pb={class:"adjust-panel"},gb={class:"control-panel"},mb={class:"form-item"},Ab={class:"radio-group"},yb={class:"form-item"},Cb=["title"],Eb={class:"param-row"},wb=["step"],bb={class:"param-row"},vb=["step"],Ib={class:"param-row"},xb=["step"],Bb={class:"param-row"},Sb=["step"],Mb={class:"param-row"},Tb=["step"],Db={class:"param-row"},kb=["step"],Pb={class:"param-row"},Fb=["step"],Rb={class:"button-grid"},Ob={key:1,class:"pick-mode-ui"},Lb=["onClick"],Nb=["checked"],Ub={style:{"font-size":"12px",color:"#aaa","padding-left":"10px"}},_b={class:"param-row"},Qb={style:{width:"40px"}},Hb=["onUpdate:modelValue"],Gb={class:"param-row"},Yb={style:{width:"40px"}},Vb=["onUpdate:modelValue"],Wb={class:"param-row"},zb={style:{width:"40px"}},jb=["onUpdate:modelValue"],$b={class:"list-panel"},Kb={class:"list-header"},Xb={class:"col-check"},qb=["checked"],Jb={class:"list-body"},Zb={class:"col-check"},ev=["onUpdate:modelValue"],tv={class:"col-index"},nv=["title"],iv={class:"col-main"},sv=["checked","onChange"],ov={key:0,style:{padding:"10px","text-align":"center",color:"#999"}},rv=Ue(d.defineComponent({__name:"LeitingCadPosition",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","handleSavingByCadCard","clearBimPointList","save"],setup(n,{expose:e,emit:t}){const i=n,s=t,o=d.inject("leitingMethods"),r=d.ref([]),l=d.ref(""),a=d.computed(()=>r.value.length>0&&r.value.every(w=>w.selected)),c=d.ref("param"),u=d.ref("bimPoint1"),h=d.ref(null),f=d.ref("bimPoint1"),p=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}}),A=d.ref(1e-6),C=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}),m=d.computed(()=>{const w=r.value.find(v=>v.modelId===l.value);return w?w.modelName:""}),y=()=>{s("update:visible",!1)},E=()=>(!h.value&&o?.value?.getViewer&&o?.value?.getCesium&&(h.value=new oc(o.value.getViewer(),o.value.getCesium())),h.value),I=()=>{E()?.clearMarkers(),p.bimPoint1.longitude=void 0,p.bimPoint1.latitude=void 0,p.bimPoint1.height=void 0,p.bimPoint2.longitude=void 0,p.bimPoint2.latitude=void 0,p.bimPoint2.height=void 0},M=w=>{const v=u.value,B=p[v];if(B){B.longitude=w.longitude,B.latitude=w.latitude,B.height=w.height;const R=v==="bimPoint1"?"BIM":"MAP";E()?.addMarker(R,w),ge.success(`${B.type}已添加`)}},k=()=>{E()?.registerPickHandler(w=>{M(w)})},S=()=>{E()?.destroyPickHandler()},x=w=>{c.value=w,w!=="pick"&&s("clearBimPointList")};d.watch(()=>c.value,w=>{w==="pick"?k():S()}),d.onUnmounted(()=>{S()});const g=()=>{if(!o?.value?.getDxfModels)return;const w=o.value.getDxfModels();if(Array.isArray(w)?r.value=w.map(v=>({modelId:v.modelId,modelName:v.modelName,formData:v.formData||{},selected:!1,tileset:v})):r.value=[],r.value.length>0){const v=o.value.getCadModelId?o.value.getCadModelId():"";v&&r.value.find(B=>B.modelId===v)?F(v):F(r.value[0].modelId),r.value.forEach(B=>B.selected=!0)}},F=w=>{l.value=w;const v=r.value.find(B=>B.modelId===w);v&&v.formData&&Object.keys(C).forEach(B=>{v.formData[B]!==void 0&&(C[B]=v.formData[B])})},D=(w,v)=>{if(!o?.value?.adjustingModelByCad)return;const B=r.value.find(R=>R.modelId===w);B&&B.tileset&&(B.formData={...B.formData,...v},B.tileset.formData=B.formData,o.value.adjustingModelByCad({...B.formData,tileset:B.tileset}))},P=w=>{if(!l.value)return;const v=C[w];D(l.value,{[w]:v})},L=w=>{const v=r.value.filter(O=>O.selected);if(v.length===0){ge.warning("请先选择要调整的模型");return}const{distance:B,heightDistance:R,rotation:U}=C;v.forEach(O=>{const T={...O.formData};switch(w){case"north":T.latitude+=B;break;case"south":T.latitude-=B;break;case"east":T.longitude+=B;break;case"west":T.longitude-=B;break;case"up":T.height+=R;break;case"down":T.height-=R;break;case"rotateLeft":T.totalRotation=(T.totalRotation||0)-U;break;case"rotateRight":T.totalRotation=(T.totalRotation||0)+U;break}O.modelId===l.value&&Object.assign(C,T),D(O.modelId,T)})},G=w=>{const v=w.target.checked;r.value.forEach(B=>B.selected=v)},N=()=>{s("handleSavingByCadCard",r.value),s("save",r.value)},b=()=>{const w=p.bimPoint1,v=p.bimPoint2;if(w.longitude===void 0||v.longitude===void 0){ge.warning("请先完成点选操作");return}const B=r.value.filter(_=>_.selected);if(B.length===0){ge.warning("请先选择要调整的模型");return}let R=0,U=0,O=0;const T=E();if(T){const{dLon:_,dLat:Y,dHeight:$}=T.calculateOffset(w,v);R=_,U=Y,O=$}else R=v.longitude-w.longitude,U=v.latitude-w.latitude,O=v.height-w.height;B.forEach(_=>{const Y={..._.formData};Y.longitude+=R,Y.latitude+=U,Y.height+=O,_.modelId===l.value&&Object.assign(C,Y),D(_.modelId,Y)}),ge.success("位置已调整")};return d.watch(()=>i.visible,w=>{w?g():(S(),I())}),d.onMounted(()=>{i.visible&&g()}),e({setBIMPointsList:({longitude:w,latitude:v,height:B})=>{p[f.value].longitude=w,p[f.value].latitude=v,p[f.value].height=B},addGltfOr3dTilesModelList:w=>{console.warn("addGltfOr3dTilesModelList is deprecated, use internal loading")}}),(w,v)=>(d.openBlock(),d.createBlock(Re,{visible:i.visible,title:"Cad校准",width:282,height:600,"onUpdate:visible":v[21]||(v[21]=B=>s("update:visible",B)),onClose:y},{default:d.withCtx(()=>[d.createElementVNode("div",pb,[d.createElementVNode("div",gb,[d.createElementVNode("div",mb,[v[22]||(v[22]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",Ab,[d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="param"}),onClick:v[0]||(v[0]=B=>x("param"))},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="pick"}),onClick:v[1]||(v[1]=B=>x("pick"))},"地图点选",2)])]),d.createElementVNode("div",yb,[v[23]||(v[23]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",{class:"value",title:m.value},d.toDisplayString(m.value||"未选择"),9,Cb)]),v[35]||(v[35]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[v[31]||(v[31]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",Eb,[v[24]||(v[24]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[2]||(v[2]=B=>C.longitude=B),onChange:v[3]||(v[3]=B=>P("longitude")),step:A.value},null,40,wb),[[d.vModelText,C.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",bb,[v[25]||(v[25]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[4]||(v[4]=B=>C.latitude=B),onChange:v[5]||(v[5]=B=>P("latitude")),step:A.value},null,40,vb),[[d.vModelText,C.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",Ib,[v[26]||(v[26]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[6]||(v[6]=B=>C.height=B),onChange:v[7]||(v[7]=B=>P("height")),step:A.value},null,40,xb),[[d.vModelText,C.height,void 0,{number:!0}]])]),d.createElementVNode("div",Bb,[v[27]||(v[27]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[8]||(v[8]=B=>C.totalRotation=B),onChange:v[9]||(v[9]=B=>P("totalRotation")),step:A.value},null,40,Sb),[[d.vModelText,C.totalRotation,void 0,{number:!0}]])]),v[32]||(v[32]=d.createElementVNode("div",{class:"separator"},null,-1)),v[33]||(v[33]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",Mb,[v[28]||(v[28]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[10]||(v[10]=B=>C.distance=B),step:A.value},null,8,Tb),[[d.vModelText,C.distance,void 0,{number:!0}]])]),d.createElementVNode("div",Db,[v[29]||(v[29]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[11]||(v[11]=B=>C.heightDistance=B),step:A.value},null,8,kb),[[d.vModelText,C.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",Pb,[v[30]||(v[30]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[12]||(v[12]=B=>C.rotation=B),step:A.value},null,8,Fb),[[d.vModelText,C.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",Rb,[d.createElementVNode("button",{onClick:v[13]||(v[13]=B=>L("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:v[14]||(v[14]=B=>L("north"))},"北移"),d.createElementVNode("button",{onClick:v[15]||(v[15]=B=>L("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:v[16]||(v[16]=B=>L("west"))},"西移"),d.createElementVNode("button",{onClick:v[17]||(v[17]=B=>L("south"))},"南移"),d.createElementVNode("button",{onClick:v[18]||(v[18]=B=>L("east"))},"东移"),d.createElementVNode("button",{onClick:v[19]||(v[19]=B=>L("up"))},"上移"),d.createElementVNode("button",{onClick:v[20]||(v[20]=B=>L("down"))},"下移"),d.createElementVNode("button",{onClick:N,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):(d.openBlock(),d.createElementBlock("div",Ob,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(p,(B,R)=>(d.openBlock(),d.createElementBlock("div",{key:R,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:U=>u.value=R},[d.createElementVNode("input",{type:"radio",checked:u.value===R,style:{"margin-right":"5px"}},null,8,Nb),d.createTextVNode(" "+d.toDisplayString(B.type)+": ",1)],8,Lb),d.createElementVNode("div",Ub,[d.createElementVNode("div",_b,[d.createElementVNode("label",Qb,d.toDisplayString(B.longitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":U=>B.longitude=U,readonly:"",style:{width:"100px"}},null,8,Hb),[[d.vModelText,B.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",Gb,[d.createElementVNode("label",Yb,d.toDisplayString(B.latitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":U=>B.latitude=U,readonly:"",style:{width:"100px"}},null,8,Vb),[[d.vModelText,B.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",Wb,[d.createElementVNode("label",zb,d.toDisplayString(B.heightText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":U=>B.height=U,readonly:"",style:{width:"100px"}},null,8,jb),[[d.vModelText,B.height,void 0,{number:!0}]])])])]))),128)),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:b,class:"primary-btn"},"应用校准"),d.createElementVNode("button",{onClick:N},"保存")]),v[34]||(v[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",$b,[d.createElementVNode("div",Kb,[d.createElementVNode("div",Xb,[d.createElementVNode("input",{type:"checkbox",checked:a.value,onChange:G},null,40,qb)]),v[36]||(v[36]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),v[37]||(v[37]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),v[38]||(v[38]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",Jb,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(r.value,(B,R)=>(d.openBlock(),d.createElementBlock("div",{key:B.modelId,class:d.normalizeClass(["list-item",{active:B.modelId===l.value}])},[d.createElementVNode("div",Zb,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":U=>B.selected=U},null,8,ev),[[d.vModelCheckbox,B.selected]])]),d.createElementVNode("div",tv,d.toDisplayString(R+1),1),d.createElementVNode("div",{class:"col-name",title:B.modelName},d.toDisplayString(B.modelName),9,nv),d.createElementVNode("div",iv,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:B.modelId===l.value,onChange:U=>F(B.modelId)},null,40,sv)])],2))),128)),r.value.length===0?(d.openBlock(),d.createElementBlock("div",ov,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-e8abd49d"]]),av={class:"annotation-content"},lv={class:"annotation-tools"},cv={class:"annotation-controls"},dv={class:"control-group",title:"颜色"},uv={class:"tool-item color-tool"},hv={class:"control-group line-width-container",title:"线宽"},fv=["onClick"],pv={class:"option-label"},gv=Ue(d.defineComponent({__name:"LeitingAnnotationCard",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.ref(""),r=d.ref("#ff0000"),l=d.ref(1),a=d.ref(!1),c=d.ref(null),u=d.ref(null),h=d.ref({top:"0px",left:"0px"}),f=[{value:6,label:"粗"},{value:3,label:"中"},{value:1,label:"细"}],p=()=>s?.value?.getAnnotationInstance?s.value.getAnnotationInstance():null,A=()=>{i("update:visible",!1)},C=x=>{o.value=x;const g=p();if(g)switch(x){case"freehandLine":g.startFreehandLine();break;case"arrow":g.startArrow();break;case"straightLine":g.startStraightLine();break;case"rectangle":g.startRectangle();break;case"ellipse":g.startEllipse();break}},m=()=>{const x=p();x&&(x.setCurrentColor(r.value),x.changeColor(r.value))},y=()=>{if(!a.value&&c.value){const x=c.value.getBoundingClientRect();h.value={top:`${x.top}px`,left:`${x.right+8}px`}}a.value=!a.value},E=x=>{l.value=x,a.value=!1;const g=p();g&&(g.setCurrentWidth(x),g.changeWidth(x))},I=()=>{const x=p();x&&x.deleteSelectedEntity()},M=()=>{const x=p();x&&x.clearAll()},k=()=>{if(s?.value?.saveAnnotations){s.value.saveAnnotations();return}const x=p();x&&x.saveAnnotations()},S=x=>{const g=x.target,F=c.value&&c.value.contains(g),D=u.value&&u.value.contains(g);!F&&!D&&(a.value=!1)};return d.onMounted(()=>{document.addEventListener("click",S)}),d.onUnmounted(()=>{document.removeEventListener("click",S)}),(x,g)=>(d.openBlock(),d.createBlock(Re,{visible:t.visible,title:"标注",width:70,"min-width":70,height:480,"onUpdate:visible":g[6]||(g[6]=F=>i("update:visible",F)),onClose:A},{default:d.withCtx(()=>[d.createElementVNode("div",av,[d.createElementVNode("div",lv,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="freehandLine"}]),onClick:g[0]||(g[0]=F=>C("freehandLine")),title:"手绘线"},[...g[7]||(g[7]=[d.createElementVNode("div",{class:"tool-icon"},"✏️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="arrow"}]),onClick:g[1]||(g[1]=F=>C("arrow")),title:"箭头"},[...g[8]||(g[8]=[d.createElementVNode("div",{class:"tool-icon"},"↗️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="straightLine"}]),onClick:g[2]||(g[2]=F=>C("straightLine")),title:"直线"},[...g[9]||(g[9]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="rectangle"}]),onClick:g[3]||(g[3]=F=>C("rectangle")),title:"矩形"},[...g[10]||(g[10]=[d.createElementVNode("div",{class:"tool-icon"},"▭",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="ellipse"}]),onClick:g[4]||(g[4]=F=>C("ellipse")),title:"椭圆"},[...g[11]||(g[11]=[d.createElementVNode("div",{class:"tool-icon"},"⭕",-1)])],2)]),g[13]||(g[13]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",cv,[d.createElementVNode("div",dv,[d.createElementVNode("div",uv,[d.createElementVNode("div",{class:"color-swatch",style:d.normalizeStyle({backgroundColor:r.value})},null,4),d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":g[5]||(g[5]=F=>r.value=F),onChange:m,class:"color-input-overlay"},null,544),[[d.vModelText,r.value]])])]),d.createElementVNode("div",hv,[d.createElementVNode("div",{ref_key:"lineWidthBtnRef",ref:c,class:"tool-item",onClick:d.withModifiers(y,["stop"])},[d.createElementVNode("div",{class:"current-width-preview",style:d.normalizeStyle({height:l.value+"px",backgroundColor:"#fff"})},null,4)],512),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[a.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:u,class:"line-width-dropdown",style:d.normalizeStyle(h.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(f,F=>d.createElementVNode("div",{key:F.value,class:d.normalizeClass(["line-width-option",{selected:l.value===F.value}]),onClick:d.withModifiers(D=>E(F.value),["stop"])},[d.createElementVNode("span",pv,d.toDisplayString(F.label),1),d.createElementVNode("div",{class:"line-preview",style:d.normalizeStyle({height:F.value+"px",backgroundColor:l.value===F.value?"#1890ff":"#ddd"})},null,4)],10,fv)),64))],4)):d.createCommentVNode("",!0)]))]),g[12]||(g[12]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("button",{class:"control-btn",onClick:I,title:"删除选中"}," 🗑️ "),d.createElementVNode("button",{class:"control-btn",onClick:M,title:"清空"}," ❌ "),d.createElementVNode("button",{class:"control-btn",onClick:k,title:"保存"}," 💾 ")])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-3cfc8415"]]),mv={class:"measure-content"},Av={class:"measure-tools"},yv={key:0,class:"measure-results"},Cv={class:"result-row"},Ev={class:"result-value"},wv={class:"result-row"},bv={class:"result-value"},vv={class:"result-row"},Iv={class:"result-value"},xv={class:"result-row"},Bv={class:"result-value"},Sv={key:1,class:"result-row"},Mv={class:"result-value"},Tv={key:2,class:"result-row"},Dv={class:"result-value"},kv={class:"measure-controls"},Pv={class:"control-group",title:"单位"},Fv={class:"unit-display"},Rv=["onClick"],Ov=Ue(d.defineComponent({__name:"LeitingMeasurement",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","close"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(null),r=d.ref(null),l=d.ref("m"),a=d.ref(!1),c=d.ref(null),u=d.ref(!1),h=d.ref({}),f=d.ref(null),p=[{label:"米 (m)",value:"m"},{label:"厘米 (cm)",value:"cm"},{label:"毫米 (mm)",value:"mm"}],A=x=>{const g=l.value;return g==="mm"?`${(x*1e3).toFixed(0)}mm`:g==="cm"?`${(x*100).toFixed(1)}cm`:`${x.toFixed(2)}m`},C=x=>x>1e6?`${(x/1e6).toFixed(2)} km²`:`${x.toFixed(2)} m²`,m=()=>{if(!o.value&&s.value?.getViewer){const x=s.value.getViewer(),g=s.value.getCesium();x&&g&&(o.value=new tc({viewer:x,cesium:g}),o.value.setUnit(l.value),o.value.setSnapping(a.value),o.value.onMeasure=F=>{c.value=F})}},y=x=>{o.value||m(),r.value===x?(r.value=null,o.value?.stop()):(r.value=x,o.value?.start(x))},E=x=>{l.value=x,u.value=!1},I=()=>{o.value&&(o.value.clearAll(),r.value=null,o.value.stop())},M=()=>{i("update:visible",!1)},k=x=>{if(u.value){u.value=!1;return}const F=x.currentTarget.getBoundingClientRect();h.value={position:"fixed",top:`${F.top}px`,left:`${F.right+5}px`,zIndex:3e3},u.value=!0},S=x=>{u.value&&f.value&&!f.value.contains(x.target)&&(u.value=!1)};return d.onMounted(()=>{document.addEventListener("click",S),t.visible&&d.nextTick(()=>m())}),d.onUnmounted(()=>{document.removeEventListener("click",S),o.value&&o.value.destroy()}),d.watch(()=>t.visible,x=>{x?d.nextTick(()=>m()):o.value&&(o.value.stop(),r.value=null)}),d.watch(s,x=>{x&&x.getViewer&&!o.value&&t.visible&&m()}),d.watch(l,x=>{o.value&&o.value.setUnit(x)}),(x,g)=>(d.openBlock(),d.createBlock(Re,{visible:t.visible,title:"量算",width:70,"min-width":70,height:480,"onUpdate:visible":g[3]||(g[3]=F=>i("update:visible",F)),onClose:M},{default:d.withCtx(()=>[d.createElementVNode("div",mv,[d.createElementVNode("div",Av,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="distance"}]),onClick:g[0]||(g[0]=F=>y("distance")),title:"距离测量"},[...g[4]||(g[4]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="angle"}]),onClick:g[1]||(g[1]=F=>y("angle")),title:"角度测量"},[...g[5]||(g[5]=[d.createElementVNode("div",{class:"tool-icon"},"📐",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="area"}]),onClick:g[2]||(g[2]=F=>y("area")),title:"面积测量"},[...g[6]||(g[6]=[d.createElementVNode("div",{class:"tool-icon"},"🔳",-1)])],2)]),g[15]||(g[15]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value?(d.openBlock(),d.createElementBlock("div",yv,[c.value.type==="distance"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[d.createElementVNode("div",Cv,[g[7]||(g[7]=d.createElementVNode("span",{class:"result-label"},"总长:",-1)),d.createElementVNode("span",Ev,d.toDisplayString(A(c.value.dist)),1)]),d.createElementVNode("div",wv,[g[8]||(g[8]=d.createElementVNode("span",{class:"result-label",style:{color:"#ff4d4f"}},"ΔX:",-1)),d.createElementVNode("span",bv,d.toDisplayString(A(c.value.dx)),1)]),d.createElementVNode("div",vv,[g[9]||(g[9]=d.createElementVNode("span",{class:"result-label",style:{color:"#52c41a"}},"ΔY:",-1)),d.createElementVNode("span",Iv,d.toDisplayString(A(c.value.dy)),1)]),d.createElementVNode("div",xv,[g[10]||(g[10]=d.createElementVNode("span",{class:"result-label",style:{color:"#1890ff"}},"ΔZ:",-1)),d.createElementVNode("span",Bv,d.toDisplayString(A(c.value.dz)),1)])],64)):d.createCommentVNode("",!0),c.value.type==="angle"?(d.openBlock(),d.createElementBlock("div",Sv,[g[11]||(g[11]=d.createElementVNode("span",{class:"result-label"},"角度:",-1)),d.createElementVNode("span",Mv,d.toDisplayString(c.value.angle.toFixed(1))+"°",1)])):d.createCommentVNode("",!0),c.value.type==="area"?(d.openBlock(),d.createElementBlock("div",Tv,[g[12]||(g[12]=d.createElementVNode("span",{class:"result-label"},"面积:",-1)),d.createElementVNode("span",Dv,d.toDisplayString(C(c.value.area)),1)])):d.createCommentVNode("",!0)])):d.createCommentVNode("",!0),d.createElementVNode("div",kv,[d.createElementVNode("div",Pv,[d.createElementVNode("div",{class:"tool-item",onClick:d.withModifiers(k,["stop"])},[d.createElementVNode("div",Fv,d.toDisplayString(l.value),1)]),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[u.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"unitDropdownRef",ref:f,class:"unit-dropdown",style:d.normalizeStyle(h.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(p,F=>d.createElementVNode("div",{key:F.value,class:d.normalizeClass(["unit-option",{selected:l.value===F.value}]),onClick:d.withModifiers(D=>E(F.value),["stop"])},d.toDisplayString(F.label),11,Rv)),64))],4)):d.createCommentVNode("",!0)]))]),g[14]||(g[14]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("div",{class:"tool-item control-btn",onClick:I,title:"清空"},[...g[13]||(g[13]=[d.createElementVNode("div",{class:"tool-icon"},"🗑️",-1)])])])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-b766acb4"]]);function Lv(){const n=d.ref(!1),e=d.reactive({x:0,y:0}),t=d.ref([]),i=d.ref(null);return{visible:n,position:e,items:t,contextData:i,show:(a,c,u)=>{a instanceof MouseEvent?(a.preventDefault(),e.x=a.clientX,e.y=a.clientY):(e.x=a.x,e.y=a.y),t.value=c,i.value=u,n.value=!0},hide:()=>{n.value=!1},addItem:a=>{t.value.push(a)},removeItem:a=>{t.value=t.value.filter(c=>c.id!==a)}}}const Nv=["onClick"],Uv={class:"menu-label"},_v={key:0,class:"menu-arrow"},Qv=Ue(d.defineComponent({__name:"LeitingContextMenu",props:{visible:{type:Boolean},position:{},items:{}},emits:["update:visible","action"],setup(n,{emit:e}){const t=n,i=e,s=r=>{r.disabled||(r.action&&r.action(),i("action",r),i("update:visible",!1))},o=()=>{t.visible&&i("update:visible",!1)};return d.onMounted(()=>{document.addEventListener("click",o),document.addEventListener("contextmenu",r=>{r.target.closest(".leiting-context-menu")||o()})}),d.onUnmounted(()=>{document.removeEventListener("click",o)}),(r,l)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:"leiting-context-menu",style:d.normalizeStyle({left:n.position.x+"px",top:n.position.y+"px"}),onContextmenu:l[0]||(l[0]=d.withModifiers(()=>{},["prevent"]))},[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(n.items,a=>(d.openBlock(),d.createElementBlock("div",{key:a.id,class:d.normalizeClass(["menu-item",{"menu-divided":a.divided,"menu-disabled":a.disabled}]),onClick:c=>s(a)},[d.createElementVNode("span",Uv,d.toDisplayString(a.label),1),a.children?(d.openBlock(),d.createElementBlock("span",_v,"▶")):d.createCommentVNode("",!0)],10,Nv))),128))],36)),[[d.vShow,n.visible]])}}),[["__scopeId","data-v-f288753b"]]),Hv={class:"leiting-ui-overlay"},Qi=Ue(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:{},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(n,{emit:e}){const t=d.ref(),i=d.getCurrentInstance(),s=d.ref(!1),o=d.ref(""),r=d.ref({}),l=d.ref("3d"),a=n,c={title:"构件树",treeData:[]},u=d.ref(!1),h=d.ref(!1),f=d.ref(!1),p=d.ref(!1),A=d.ref(!1),C=d.ref(!1),m=d.ref(!1),y=d.ref(!1),E=d.ref(!1),I=d.ref(!1),{visible:M,position:k,items:S,show:x,hide:g}=Lv(),F=d.ref([]),D=V=>{F.value.push(V)},P=V=>{F.value=F.value.filter(j=>j.id!==V)},L=d.ref([]),G=d.ref(""),N=d.ref(null),b=d.ref([]),w=d.reactive({tree:!1,section:!1,roam:!1,info:!1,adjustModel:!1,setting:!1,cadLayer:!1,cadPosition:!1,annotation:!1}),v=(V,j)=>{V==="componentTree"&&(V="tree"),V==="componentInfo"&&(V="info"),V in w&&(w[V]=j)},B=d.shallowRef({});d.provide("leitingMethods",B);const R=d.ref(a.showMenu),U=d.ref([]);d.watch(()=>a.showMenu,V=>{R.value=V},{immediate:!0}),d.watch(()=>a.mode,V=>{V&&B.value?.set2d&&B.value.set2d(V==="2d")});const O=d.ref("dark");d.provide("leiting-theme",O);const T=d.ref([]),_=d.computed(()=>{const V=[];return u.value&&(V.push("tree"),V.push("componentTree")),h.value&&V.push("section"),f.value&&V.push("roam"),p.value&&(V.push("info"),V.push("componentInfo")),A.value&&V.push("adjust"),C.value&&V.push("setting"),m.value&&V.push("cadLayer"),y.value&&V.push("cadPosition"),E.value&&V.push("annotation"),I.value&&(V.push("measure"),V.push("measurement")),V.push(...T.value),V}),Y=d.ref(null),$=(V,j)=>{V==="componentTree"||V==="tree"?u.value=j:V==="section"?h.value=j:V==="roam"?f.value=j:V==="componentInfo"||V==="info"?p.value=j:V==="homeView"?B.value?.is2dMode?.()?B.value?.flyToTopView?.({}):B.value?.flyToTileset?.({}):V==="adjustModel"?(A.value=j,j&&Y.value&&Y.value.setModelType("BIM")):V==="osgbAdjust"?(A.value=j,j&&Y.value&&Y.value.setModelType("OSGB")):V==="setting"?C.value=j:V==="cadLayer"?m.value=j:V==="cadPosition"?y.value=j:V==="annotation"?E.value=j:V==="measurement"?I.value=j:j?T.value.includes(V)||T.value.push(V):T.value=T.value.filter(X=>X!==V)};d.watch(u,async V=>{if(V&&B.value?.loadTreeForModel&&B.value?.getMapTileset){const j=B.value.getMapTileset(),X=Object.values(j).map(async se=>{if(se.leiting&&!se.leiting.tree&&se.leiting.model?.treeUrl){const oe=se.leiting.model.modelId;try{se.leiting?.node?.batchIdEIDInfos||await B.value.loadNodeDetailsForModel(oe);const ae=await B.value.loadTreeForModel(oe);ae&&(Array.isArray(ae)?ae:[ae]).forEach(le=>{le&&!b.value.find(Pe=>Pe.id===le.id)&&(le.modelId=oe,b.value=[...b.value,le])})}catch(ae){console.warn(`Failed to lazy load tree for ${oe}`,ae)}}});await Promise.all(X)}});const J=()=>{B.value&&(B.value.getDxfModels&&(L.value=B.value.getDxfModels()||[]),B.value.getCadModelId&&(G.value=B.value.getCadModelId()||""))};d.watch(m,V=>{V&&J()}),d.watch(y,V=>{V&&(J(),N.value&&L.value.length&&N.value.addGltfOr3dTilesModelList(L.value))});const ne=e,re=V=>{B.value&&B.value.saveCadCalibration&&B.value.saveCadCalibration(V),B.value&&B.value.saveCadRegion&&B.value.saveCadRegion(V)};return d.onMounted(async()=>{if(t.value)try{const V={...xt,cesiumUrl:a.cesiumUrl||xt.cesiumUrl,cesiumCssUrl:a.cesiumCssUrl||xt.cesiumCssUrl,accessToken:a.accessToken||ns()||xt.accessToken};await ts(V);const j=a.accessToken||ns()||xt.accessToken;j&&(Cesium.Ion.defaultAccessToken=j),s.value=!0;const X=(oe={},ae)=>{if(t.value){const{showMenu:Ce,showTree:le,globe:Pe,terrain:ct,depthTest:$e,mapProvider:vt,tiandituLayerType:it,tiandituShowLabel:dn,arcgisUrl:Ut,shadows:_t,environmentMap:Xi,ambientOcclusion:Ke,time:Oe,brightness:st,backgroundColor:dt,collision:Qt,mouseHabit:Ht,mode:It,...Be}=oe||{},Do=a.showMenu!==void 0?a.showMenu:Ce!==void 0?Ce:!0;R.value=Do;const ke=(ee,Ie,Yt)=>ee!==void 0?ee:Ie!==void 0?Ie:Yt,un=ke(a.globe,Pe,!1),hn=ke(a.terrain,ct,!1),$n=ke(a.depthTest,$e,!1),Kn=ke(a.mapProvider,vt,"tianditu"),Xn=ke(a.tiandituLayerType,it,"img_w"),qi=ke(a.tiandituShowLabel,dn,!1),qc=ke(a.arcgisUrl,Ut,"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"),Jc=ke(a.shadows,_t,!1),Zc=ke(a.environmentMap,Xi,!1),ed=ke(a.ambientOcclusion,Ke,!1),td=ke(a.time,Oe,void 0),nd=ke(a.brightness,st,1),Ji=a.mode||It||"3d";console.log("LeitingBIM Mode:",Ji,"Props:",a.mode,"Options:",It),l.value=Ji;const Gx=Ji==="2d"?"#000000":"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)",id=ke(a.backgroundColor,dt,Gx),sd=ke(a.collision,Qt,!1),od=ke(a.mouseHabit,Ht,0);r.value={globe:un,terrain:hn,depthTest:$n,mapProvider:Kn,tiandituLayerType:Xn,tiandituShowLabel:qi,arcgisUrl:qc,shadows:Jc,environmentMap:Zc,ambientOcclusion:ed,time:td,brightness:nd,backgroundColor:id,collision:sd,mouseHabit:od};const qn=O0({container:t.value,appContext:i?.appContext,methods:{...B.value,handleMenuAction:$,setCardFullHeight:v,onLoadingStatus:ee=>{ee?ge.loading(ee,"",t.value):ge.close()},...Be,tilesLoad3dTiles:async ee=>{let Ie=ee.leiting?.tree;const Yt=ee.leiting?.model?.modelId;if(!Ie&&u.value&&B.value?.loadTreeForModel)try{Ie=await B.value.loadTreeForModel(Yt)}catch(Zn){console.warn("Failed to lazy load tree",Zn)}Ie&&(Array.isArray(Ie)?Ie:[Ie]).forEach(Vt=>{Vt&&!b.value.find(ad=>ad.id===Vt.id)&&(Vt.modelId=Yt,b.value=[...b.value,Vt])});const{brightness:ko,contrast:Po,saturation:ut}=qn.methods.getConfigure();qn.methods.setModelColorAdjustment({brightness:ko,contrast:Po,saturation:ut}),Be.tilesLoad3dTiles?.(ee)},mountAll3Dtiles:ee=>{a.mountAll3Dtiles&&a.mountAll3Dtiles(ee),Be.mountAll3Dtiles?.(ee)},mountAllCad:ee=>{if(qn.methods.setModelBrightness){const Ie=a.brightness!==void 0?a.brightness:r.value.brightness;Ie!==void 0&&qn.methods.setModelBrightness(Ie)}a.mountAllCad&&a.mountAllCad(ee),Be.mountAllCad?.(ee)},saveRegion:ee=>{a.saveRegion&&a.saveRegion(ee),Be.saveRegion?.(ee)},saveCadRegion:ee=>{a.saveCadRegion&&a.saveCadRegion(ee),Be.saveCadRegion?.(ee)},saveCadCalibration:ee=>{a.saveCadCalibration&&a.saveCadCalibration(ee),Be.saveCadCalibration?.(ee)},selectionChange:ee=>{a.selectionChange&&a.selectionChange(ee),Be.selectionChange?.(ee)},onSearchComponent:ee=>{a.searchComponent&&a.searchComponent(ee),Be.searchComponent?.(ee)}},viewerOptions:a.viewerOptions,options:{...Be,mode:Ji,playerUrl:a.playerUrl,playerModelName:a.playerModelName,playerModelId:a.playerModelId,playerScale:a.playerScale,globe:un,terrain:hn,depthTest:$n,mapProvider:Kn,tiandituLayerType:Xn,tiandituShowLabel:qi,tiandituToken:a.tiandituToken,arcgisUrl:qc,shadows:Jc,environmentMap:Zc,ambientOcclusion:ed,time:td,brightness:nd,backgroundColor:id,collision:sd,mouseHabit:od},callbacks:{onLoading:ee=>ee?ge.loading(ee,"",t.value):ge.close(),onSuccess:ee=>ge.success(ee,"",void 0,t.value),onError:ee=>ge.error(ee,"",void 0,t.value)}}),{Cesium:Gt,viewer:fn,methods:Zi,menuEvents:Jn}=qn,ve=Zi;Jn.on("showMenu",ee=>{R.value=ee}),Jn.on("insertMenu",ee=>{U.value=ee}),Jn.on("setMenuActive",(ee,Ie)=>{$(ee,Ie)}),B.value=ve,ae&&(ae.value=ve),Jn.on("setMode",ee=>{l.value=ee}),Jn.on("deleteAllModels",()=>{b.value=[]}),new Gt.ScreenSpaceEventHandler(fn.scene.canvas).setInputAction(ee=>{if(g(),l.value==="2d")return;const Ie=fn.scene.pick(ee.position),Yt=fn.container.getBoundingClientRect(),ko=Yt.left+ee.position.x,Po=Yt.top+ee.position.y,ut=[];if(Gt.defined(Ie)&&Ie instanceof Gt.Cesium3DTileFeature){const Zn=ve.baseCompt.getFeatureId(Ie),Vt=Sn(Ie.tileset);ve.baseCompt.hasSelectedFeaturesMap[Vt]?.some(ei=>ei.batchId===Zn&&ei.rank===0)||(ve.baseCompt.clearSelection(),ve.baseCompt.toggleMultiSelect(Vt,Zn,ve.baseCompt.selectedColor)),ut.push({id:"details",label:"构件详情",action:()=>{p.value=!0}}),ut.push({id:"hide",label:"隐藏选中构件",action:()=>{const ti=ve.baseCompt.getSelected().map(ht=>({elementId:ht.elementId,modelId:ht.modelId,show:!1}));ve.baseCompt.setComponentVisibility(ti)}}),ut.push({id:"translucent",label:"半透明选中构件",action:()=>{const ti=ve.baseCompt.getSelected().map(ht=>({elementId:ht.elementId,modelId:ht.modelId,rgba:{...ht.rgba,a:.3}}));ve.baseCompt.setSelectColorUserModelCpt(ti,{rank:0})}}),ut.push({id:"isolate",label:"隔离选中构件",divided:!0,action:()=>{ve.baseCompt.setAllComponentsVisibility(!1);const ti=ve.baseCompt.getSelected().map(ht=>({elementId:ht.elementId,modelId:ht.modelId,show:!0}));ve.baseCompt.setComponentVisibility(ti)}})}ut.push({id:"showAll",label:"显示所有",action:()=>{ve.baseCompt.setAllComponentsVisibility(!0),ve.baseCompt.clearSelection()}}),ut.push(...F.value),x({x:ko,y:Po},ut)},Gt.ScreenSpaceEventType.RIGHT_CLICK),ve.insertContextMenu=D,ve.deleteContextMenu=P,ve.hideContextMenu=g;const rd=oe?.onLoaded||oe?.onloaded;rd&&rd({Cesium:Gt,viewer:fn,methods:Zi}),ne("init",{Cesium:Gt,viewer:fn,methods:Zi}),ne("ready",{Cesium:Gt,viewer:fn,methods:Zi})}};let se=!1;ne("register",(oe,ae)=>{se=!0,X(oe,ae)}),se||setTimeout(()=>{B.value.getViewer||X()},0)}catch(V){o.value="Failed to load Cesium: "+(V.message||V),console.error(V)}}),(V,j)=>(d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-bim-container",[`theme-${O.value}`]]),onContextmenu:j[11]||(j[11]=d.withModifiers(()=>{},["prevent","stop"]))},[!s.value&&!o.value?(d.openBlock(),d.createBlock(d.unref(me.Spin),{key:0,class:"loading",size:"large",tip:"加载基础组件中..."})):d.createCommentVNode("",!0),o.value?(d.openBlock(),d.createBlock(d.unref(me.Alert),{key:1,class:"error",type:"error",message:o.value,"show-icon":""},null,8,["message"])):d.createCommentVNode("",!0),d.createElementVNode("div",{ref_key:"containerRef",ref:t,class:"cesium-viewer"},[d.createElementVNode("div",Hv,[d.createVNode(Qn,{visible:p.value,"full-height":w.info,"onUpdate:visible":j[0]||(j[0]=X=>p.value=X)},null,8,["visible","full-height"]),d.createVNode(Hn,{ref_key:"LeitingPositionRef",ref:Y,visible:A.value,"full-height":w.adjustModel,"onUpdate:visible":j[1]||(j[1]=X=>A.value=X)},null,8,["visible","full-height"]),d.createVNode(Gn,{visible:C.value,"full-height":w.setting,"tianditu-token":a.tiandituToken,"initial-config":r.value,"onUpdate:visible":j[2]||(j[2]=X=>C.value=X)},null,8,["visible","full-height","tianditu-token","initial-config"]),n.showTree!==!1?(d.openBlock(),d.createBlock(Pi,d.mergeProps({key:0},{...c,...n.treeProps},{visible:u.value,"full-height":w.tree,"tree-data":b.value.length>0?b.value:n.treeProps?.treeData||[],"onUpdate:visible":j[3]||(j[3]=X=>{u.value=X})}),null,16,["visible","full-height","tree-data"])):d.createCommentVNode("",!0),d.createVNode(gv,{visible:E.value,"onUpdate:visible":j[4]||(j[4]=X=>E.value=X)},null,8,["visible"]),d.createVNode(Ov,{visible:I.value,"onUpdate:visible":j[5]||(j[5]=X=>I.value=X)},null,8,["visible"]),d.createVNode(Un,{visible:h.value,"full-height":w.section,"onUpdate:visible":j[6]||(j[6]=X=>h.value=X)},null,8,["visible","full-height"]),d.createVNode(_n,{visible:f.value,"full-height":w.roam,"onUpdate:visible":j[7]||(j[7]=X=>f.value=X)},null,8,["visible","full-height"]),d.createVNode(Nn,{visible:R.value,"active-ids":_.value,"custom-items":U.value,onAction:$,"is-2d":l.value==="2d"},null,8,["visible","active-ids","custom-items","is-2d"]),d.createVNode(fb,{visible:m.value,"current-model-id":G.value,"onUpdate:visible":j[8]||(j[8]=X=>m.value=X)},null,8,["visible","current-model-id"]),d.createVNode(rv,{ref_key:"cadPositionRef",ref:N,visible:y.value,"onUpdate:visible":j[9]||(j[9]=X=>y.value=X),onSave:re},null,8,["visible"]),d.createVNode(Qv,{visible:d.unref(M),position:d.unref(k),items:d.unref(S),"onUpdate:visible":j[10]||(j[10]=X=>M.value=X)},null,8,["visible","position","items"]),d.renderSlot(V.$slots,"default",d.normalizeProps(d.guardReactiveProps({methods:B.value,isReady:s.value})),void 0,!0)])],512)],34))}}),[["__scopeId","data-v-fc733eb3"]]);function pc(n){const e=d.ref(),t=d.ref(n.theme||"dark"),i=d.ref(n.menuSize||"medium");d.provide("leiting-theme",t),d.provide("leiting-menu-size",i);function s(l){d.onUnmounted(()=>{e.value=null}),l(n,e)}function o(){const l=d.unref(e);return l||console.error("未获取到leiting实例!"),l}const r=new Proxy({},{get(l,a){const c=o();if(!c)return;const u=c[a];return typeof u=="function"?u.bind(c):u},set(l,a,c){const u=o();return u?(u[a]=c,!0):!1}});return[s,r]}const Gv=xt,Yv={install:(n,e)=>{if(n.component("LeitingBIM",Qi),n.component("LeitingTree",Pi),n.component("LeitingDraggableCard",Re),n.component("leiting-draggable-card",Re),n.component("LeitingMenu",Nn),n.component("leiting-menu",Nn),n.component("LeitingSection",Un),n.component("leiting-section",Un),n.component("LeitingPlayer",_n),n.component("leiting-player",_n),n.component("LeitingInfo",Qn),n.component("leiting-info",Qn),n.component("LeitingPosition",Hn),n.component("leiting-position",Hn),n.component("LeitingSetting",Gn),n.component("leiting-setting",Gn),!e)return;const t={...Gv,...e};t.cesiumUrl&&ts(t).catch(i=>{console.error("[LeitingBim] Failed to load Cesium resources:",i)}),n.config.globalProperties.$leitingBimOptions=t}};var W={image:new Map,background:new Map,resource:new Map,defaultStyle:new Map,baseStyle:new Map,computedStyle:new WeakMap,font:new Set,session:{styleMap:new Map,styleCache:new WeakMap,nodeMap:new Map}};function gc(n="soft"){switch(n){case"auto":{W.session.styleMap=new Map,W.session.nodeMap=new Map;return}case"soft":{W.session.styleMap=new Map,W.session.nodeMap=new Map,W.session.styleCache=new WeakMap;return}case"full":return;case"disabled":{W.session.styleMap=new Map,W.session.nodeMap=new Map,W.session.styleCache=new WeakMap,W.computedStyle=new WeakMap,W.baseStyle=new Map,W.defaultStyle=new Map,W.image=new Map,W.background=new Map,W.resource=new Map,W.font=new Set;return}default:{W.session.styleMap=new Map,W.session.nodeMap=new Map,W.session.styleCache=new WeakMap;return}}}function ho(n){const e=n.match(/url\((['"]?)(.*?)(\1)\)/);if(!e)return null;const t=e[2].trim();return t.startsWith("#")?null:t}function Vv(n){if(!n||n==="none")return"";let e=n.replace(/translate[XY]?\([^)]*\)/g,"");return e=e.replace(/matrix\(([^)]+)\)/g,(t,i)=>{const s=i.split(",").map(o=>o.trim());return s.length!==6?`matrix(${i})`:(s[4]="0",s[5]="0",`matrix(${s.join(", ")})`)}),e=e.replace(/matrix3d\(([^)]+)\)/g,(t,i)=>{const s=i.split(",").map(o=>o.trim());return s.length!==16?`matrix3d(${i})`:(s[12]="0",s[13]="0",`matrix3d(${s.join(", ")})`)}),e.trim().replace(/\s{2,}/g," ")}function Hi(n){if(/%[0-9A-Fa-f]{2}/.test(n))return n;try{return encodeURI(n)}catch{return n}}function Wv(n="[snapDOM]",{ttlMs:e=5*6e4,maxEntries:t=12}={}){const i=new Map;let s=0;function o(r,l,a){if(s>=t)return;const c=Date.now();(i.get(l)||0)>c||(i.set(l,c+e),s++,r==="warn"&&console&&console.warn?console.warn(`${n} ${a}`):console&&console.error&&console.error(`${n} ${a}`))}return{warnOnce(r,l){o("warn",r,l)},errorOnce(r,l){o("error",r,l)},reset(){i.clear(),s=0}}}var mc=Wv("[snapDOM]",{ttlMs:3*6e4,maxEntries:10}),fo=new Map,Gi=new Map;function zv(n){return/^data:|^blob:|^about:blank$/i.test(n)}function jv(n,e){try{const t=typeof location<"u"&&location.href?location.href:"http://localhost/",i=e.includes("{url}")?e.split("{url}")[0]:e,s=new URL(i||".",t),o=new URL(n,t);if(o.origin===s.origin)return!0;const r=o.searchParams;if(r&&(r.has("url")||r.has("target")))return!0}catch{}return!1}function $v(n,e){if(!e||zv(n)||jv(n,e))return!1;try{const t=typeof location<"u"&&location.href?location.href:"http://localhost/",i=new URL(n,t);return typeof location<"u"?i.origin!==location.origin:!0}catch{return!!e}}function Kv(n,e){if(!e)return n;if(e.includes("{url}"))return e.replace("{urlRaw}",Hi(n)).replace("{url}",encodeURIComponent(n));if(/[?&]url=?$/.test(e))return`${e}${encodeURIComponent(n)}`;if(e.endsWith("?"))return`${e}url=${encodeURIComponent(n)}`;if(e.endsWith("/"))return`${e}${Hi(n)}`;const t=e.includes("?")?"&":"?";return`${e}${t}url=${encodeURIComponent(n)}`}function Ac(n){return new Promise((e,t)=>{const i=new FileReader;i.onload=()=>e(String(i.result||"")),i.onerror=()=>t(new Error("read_failed")),i.readAsDataURL(n)})}function Xv(n,e){return[e.as||"blob",e.timeout??3e3,e.useProxy||"",e.errorTTL??8e3,n].join("|")}async function je(n,e={}){const t=e.as??"blob",i=e.timeout??3e3,s=e.useProxy||"",o=e.errorTTL??8e3,r=e.headers||{},l=!!e.silent;if(/^data:/i.test(n))try{if(t==="text")return{ok:!0,data:String(n),status:200,url:n,fromCache:!1};if(t==="dataURL")return{ok:!0,data:String(n),status:200,url:n,fromCache:!1,mime:String(n).slice(5).split(";")[0]||""};const[,m="",y=""]=String(n).match(/^data:([^,]*),(.*)$/)||[],I=/;base64/i.test(m)?atob(y):decodeURIComponent(y),M=new Uint8Array([...I].map(S=>S.charCodeAt(0))),k=new Blob([M],{type:(m||"").split(";")[0]||""});return{ok:!0,data:k,status:200,url:n,fromCache:!1,mime:k.type||""}}catch{return{ok:!1,data:null,status:0,url:n,fromCache:!1,reason:"special_url_error"}}if(/^blob:/i.test(n))try{const m=await fetch(n);if(!m.ok)return{ok:!1,data:null,status:m.status,url:n,fromCache:!1,reason:"http_error"};const y=await m.blob(),E=y.type||m.headers.get("content-type")||"";return t==="dataURL"?{ok:!0,data:await Ac(y),status:m.status,url:n,fromCache:!1,mime:E}:t==="text"?{ok:!0,data:await y.text(),status:m.status,url:n,fromCache:!1,mime:E}:{ok:!0,data:y,status:m.status,url:n,fromCache:!1,mime:E}}catch{return{ok:!1,data:null,status:0,url:n,fromCache:!1,reason:"network"}}if(/^about:blank$/i.test(n))return t==="dataURL"?{ok:!0,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==",status:200,url:n,fromCache:!1,mime:"image/png"}:{ok:!0,data:t==="text"?"":new Blob([]),status:200,url:n,fromCache:!1};const a=Xv(n,{as:t,timeout:i,useProxy:s,errorTTL:o}),c=Gi.get(a);if(c&&c.until>Date.now())return{...c.result,fromCache:!0};c&&Gi.delete(a);const u=fo.get(a);if(u)return u;const h=$v(n,s)?Kv(n,s):n;let f=e.credentials;if(!f)try{const m=typeof location<"u"&&location.href?location.href:"http://localhost/",y=new URL(n,m);f=typeof location<"u"&&y.origin===location.origin?"include":"omit"}catch{f="omit"}const p=new AbortController,A=setTimeout(()=>p.abort("timeout"),i),C=(async()=>{try{const m=await fetch(h,{signal:p.signal,credentials:f,headers:r});if(!m.ok){const I={ok:!1,data:null,status:m.status,url:h,fromCache:!1,reason:"http_error"};if(o>0&&Gi.set(a,{until:Date.now()+o,result:I}),!l){const M=`${m.status} ${m.statusText||""}`.trim();mc.warnOnce(`http:${m.status}:${t}:${new URL(n,location?.href??"http://localhost/").origin}`,`HTTP error ${M} while fetching ${t} ${n}`)}return e.onError&&e.onError(I),I}if(t==="text")return{ok:!0,data:await m.text(),status:m.status,url:h,fromCache:!1};const y=await m.blob(),E=y.type||m.headers.get("content-type")||"";return t==="dataURL"?{ok:!0,data:await Ac(y),status:m.status,url:h,fromCache:!1,mime:E}:{ok:!0,data:y,status:m.status,url:h,fromCache:!1,mime:E}}catch(m){const y=m&&typeof m=="object"&&"name"in m&&m.name==="AbortError"?String(m.message||"").includes("timeout")?"timeout":"abort":"network",E={ok:!1,data:null,status:0,url:h,fromCache:!1,reason:y};if(!/^blob:/i.test(n)&&o>0&&Gi.set(a,{until:Date.now()+o,result:E}),!l){const I=`${y}:${t}:${new URL(n,location?.href??"http://localhost/").origin}`,M=y==="timeout"?`Timeout after ${i}ms. Consider increasing timeout or using a proxy for ${n}`:y==="abort"?`Request aborted while fetching ${t} ${n}`:`Network/CORS issue while fetching ${t} ${n}. A proxy may be required`;mc.errorOnce(I,M)}return e.onError&&e.onError(E),E}finally{clearTimeout(A),fo.delete(a)}})();return fo.set(a,C),C}function po(n,e){if(!e||!n.width||!n.height)return n;const t=document.createElement("canvas");t.width=n.width,t.height=n.height;const i=t.getContext("2d");return i.fillStyle=e,i.fillRect(0,0,t.width,t.height),i.drawImage(n,0,0),t}async function go(n,e={}){if(/^((repeating-)?(linear|radial|conic)-gradient)\(/i.test(n)||n.trim()==="none")return n;const i=ho(n);if(!i)return n;const s=Hi(i);if(W.background.has(s)){const o=W.background.get(s);return o?`url("${o}")`:"none"}try{const o=await je(s,{as:"dataURL",useProxy:e.useProxy});return o.ok?(W.background.set(s,o.data),`url("${o.data}")`):(W.background.set(s,null),"none")}catch{return W.background.set(s,null),"none"}}var yc=new Set(["meta","script","noscript","title","link","template"]),Yi=new Set(["meta","link","style","title","noscript","script","template","g","defs","use","marker","mask","clipPath","pattern","path","polygon","polyline","line","circle","ellipse","rect","filter","lineargradient","radialgradient","stop"]),qv=["div","span","p","a","img","ul","li","button","input","select","textarea","label","section","article","header","footer","nav","main","aside","h1","h2","h3","h4","h5","h6","table","thead","tbody","tr","td","th"];function Jv(){for(let n of qv){const e=String(n).toLowerCase();yc.has(e)||Yi.has(e)||Cc(e)}}function Cc(n){if(n=String(n).toLowerCase(),Yi.has(n)){const o={};return W.defaultStyle.set(n,o),o}if(W.defaultStyle.has(n))return W.defaultStyle.get(n);let e=document.getElementById("snapdom-sandbox");e||(e=document.createElement("div"),e.id="snapdom-sandbox",e.setAttribute("data-snapdom-sandbox","true"),e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.left="-9999px",e.style.top="-9999px",e.style.width="0px",e.style.height="0px",e.style.overflow="hidden",document.body.appendChild(e));const t=document.createElement(n);t.style.all="initial",e.appendChild(t);const i=getComputedStyle(t),s={};for(let o of i){if(Ec(o))continue;const r=i.getPropertyValue(o);s[o]=r}return e.removeChild(t),W.defaultStyle.set(n,s),s}var Zv=/(?:^|-)(animation|transition)(?:-|$)/i,eI=/^(--|view-timeline|scroll-timeline|animation-trigger|offset-|position-try|app-region|interactivity|overlay|view-transition|-webkit-locale|-webkit-user-(?:drag|modify)|-webkit-tap-highlight-color|-webkit-text-security)$/i,tI=new Set(["cursor","pointer-events","touch-action","user-select","print-color-adjust","speak","reading-flow","reading-order","anchor-name","anchor-scope","container-name","container-type","timeline-scope"]);function Ec(n){const e=String(n).toLowerCase();return!!(tI.has(e)||eI.test(e)||Zv.test(e))}function mo(n,e){if(e=String(e||"").toLowerCase(),Yi.has(e))return"";const t=[],i=Cc(e);for(let[s,o]of Object.entries(n)){if(Ec(s))continue;const r=i[s];o&&o!==r&&t.push(`${s}:${o}`)}return t.sort(),t.join(";")}function nI(n){const e=new Set;return n.nodeType!==Node.ELEMENT_NODE&&n.nodeType!==Node.DOCUMENT_FRAGMENT_NODE?[]:(n.tagName&&e.add(n.tagName.toLowerCase()),typeof n.querySelectorAll=="function"&&n.querySelectorAll("*").forEach(t=>e.add(t.tagName.toLowerCase())),Array.from(e))}function iI(n){const e=new Map;for(let i of n){const s=W.defaultStyle.get(i);if(!s)continue;const o=Object.entries(s).map(([r,l])=>`${r}:${l};`).sort().join("");o&&(e.has(o)||e.set(o,[]),e.get(o).push(i))}let t="";for(let[i,s]of e.entries())t+=`${s.join(",")} { ${i} }
|
|
117
|
+
`});f.isModelAdjustment=!0,h.customShader=f}else e.brightness!==void 0&&e.brightness!==1&&!h.style&&(h.style=new i.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 i=t.postProcessStages.ambientOcclusion;i.enabled=e,e&&(i.uniforms.ambientOcclusionOnly=!1,i.uniforms.intensity=3,i.uniforms.bias=.1,i.uniforms.lengthCap=.03,i.uniforms.stepSize=1,i.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)}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 R0{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},orientation:{heading:e.heading,pitch:e.pitch,roll:e.roll},duration:1}}flyToCameraView(e){const{position:t,orientation:i,duration:s}=e,o=new this.cesium.Cartesian3(t.x,t.y,t.z),r=new this.cesium.HeadingPitchRoll(i.heading,i.pitch,i.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||{};this.flyToCameraView({position:{x:Number(e.position.x),y:Number(e.position.y),z:Number(e.position.z)},orientation:{heading:Number(t.heading||0),pitch:Number(t.pitch||0),roll:Number(t.roll||0)},duration:e.duration})}}function O0(n){const{container:e,appContext:t,methods:i,viewerOptions:s,options:o,callbacks:r}=n,l=new gi,a=window.Cesium;if(!a)throw new Error("Cesium is not loaded");e.id=`cesium-container-${Dg()}`;const c={animation:!1,timeline:!1,infoBox:!1,homeButton:!1,fullscreenButton:!1,sceneModePicker:!1,navigationHelpButton:!1,geocoder:!1,baseLayerPicker:!1,selectionIndicator:!1,creditContainer:document.createElement("div"),contextOptions:{webgl:{alpha:!0}}},u=t?.config?.globalProperties?.$leitingBimOptions,h={...c,...u?.viewerOptions??{},...s??{}},f=new a.Viewer(e,h);f.camera.setView({destination:a.Cartesian3.fromDegrees(108,32,1e7),orientation:{heading:a.Math.toRadians(0),pitch:a.Math.toRadians(-90),roll:0}});let p=i;if(!p&&u&&(u.methods||(u.methods={}),p=u.methods),p){const A=new Yg({cesium:a,viewer:f,options:o,callbacks:r}),C=new ka({cesium:a,viewer:f}),m=new F0({cesium:a,viewer:f}),y=new Vg({cesium:a,viewer:f}),E=new R0({cesium:a,viewer:f});let I;const M=new tc({cesium:a,viewer:f});o&&(o.globe!==void 0&&m.setGlobeEnvironmentVisible(o.globe),o.terrain!==void 0&&m.setTerrainEnable(o.terrain),o.depthTest!==void 0&&m.setDepthTestEnable(o.depthTest),o.mapProvider&&o.mode!=="2d"&&m.changeBaseMap(o.mapProvider,{token:o.tiandituToken,layerType:o.tiandituLayerType,showAnnotation:o.tiandituShowLabel,url:o.arcgisUrl}),o.shadows!==void 0&&m.setShadowsEnable(o.shadows),o.environmentMap!==void 0&&m.setEnvironmentMapEnable(o.environmentMap),o.ambientOcclusion!==void 0&&m.setAmbientOcclusion(o.ambientOcclusion),o.time!==void 0&&m.setTime(o.time),o.brightness!==void 0&&m.setModelBrightness(o.brightness),o.backgroundColor!==void 0&&m.setBackgroundColor(o.backgroundColor),o.collision!==void 0&&m.setCollisionDetection(o.collision),o.mouseHabit!==void 0&&m.setMouseHabit(o.mouseHabit)),o&&o.mode==="2d"&&(console.log("InitMap: Setting CAD Mode 2D"),m.setCadMode("2d"),I=new lo({cesium:a,viewer:f})),C.events.on("tilesetLoaded",g=>{A.baseCompt.attachTileset(g,A.baseCompt.selectedColor),A.baseSection.attachTileset(g,g.leiting?.model?.modelId),p&&p.tilesLoad3dTiles&&p.tilesLoad3dTiles(g),o?.tilesLoad3dTiles&&o.tilesLoad3dTiles(g.leiting)}),C.events.on("loadingStatus",g=>{p&&p.onLoadingStatus&&p.onLoadingStatus(g)}),C.events.on("mountAll3Dtiles",({modelList:g,mapTileset:F})=>{o?.mountAll3Dtiles&&o.mountAll3Dtiles(g),p?.mountAll3Dtiles&&p.mountAll3Dtiles(F)}),y.events.on("mountAllCad",g=>{o?.mountAllCad&&o.mountAllCad(g),p?.mountAllCad&&p.mountAllCad(g)}),A.baseCompt.loadNodeDetailsForModel=g=>C.loadNodeDetailsForModel(g),A.baseCompt.selectionChange(g=>{g.length!==0&&(o?.selectionChange&&o.selectionChange(g),p?.selectionChange&&p.selectionChange(g))}),p.onSearchComponent=g=>{o?.searchComponent&&o.searchComponent(g),p?.searchComponent&&p.searchComponent(g)};const k=p.saveRegion;p.saveRegion=g=>{o?.saveRegion&&o.saveRegion(g),k&&k!==o?.saveRegion&&k(g)};const S=p.saveCadCalibration;p.saveCadCalibration=g=>{o?.saveCadCalibration&&o.saveCadCalibration(g),S&&S!==o?.saveCadCalibration&&S(g)};const x=p.saveCadRegion;p.saveCadRegion=g=>{o?.saveCadRegion&&o.saveCadRegion(g),x&&x!==o?.saveCadRegion&&x(g)},p.getCesium=()=>a,p.getViewer=()=>f,p.getAnnotationInstance=()=>I,p.getMeasureInstance=()=>M,p.flyTo=g=>{E.setCameraView(g)},p.addPoint=(g,F,D=0)=>{f.entities.add({position:a.Cartesian3.fromDegrees(g,F,D),point:{pixelSize:10,color:a.Color.RED}})},p.enableTestLabel=()=>A.enableTestLabel(),p.setBackgroundColor=g=>m.setBackgroundColor(g),p.enableCesiumFXAA=g=>A.enableCesiumFXAA(g),p.setSceneOptions=g=>A.setSceneOptions(g),p.getCameraInfo=()=>E.getCameraView(),p.flyToCameraView=g=>E.flyToCameraView(g),p.getCurrentCameraPositionAndTarget=()=>E.getCurrentCameraPositionAndTarget(),p.setCameraView=g=>E.setCameraView(g),p.getImageBase64=()=>{const g=f.scene.canvas;return f.render(),g.toDataURL("image/png")},p.getSnapDomSImageBase64=(g,F)=>A.getSnapDomSImageBase64(g,F),p.addModels=g=>C.addModels(g),p.add3DtilesModel=g=>C.addModels(g),p.addOSGB=g=>C.addOSGB(g),p.updateOSGBMatrix=g=>C.updateOSGBMatrix(g),p.showModels=g=>C.showModels(g),p.showTileset=g=>C.showModels(g),p.deleteModels=g=>C.deleteModels(g),p.deleteAllModelList=()=>{C.deleteAllModels(),l.emit("deleteAllModels")},p.deleteAllModels=()=>{C.deleteAllModels(),l.emit("deleteAllModels")},p.flyToTileset=g=>C.flyToTileset(g),p.flyToByModelId=g=>C.flyToTileset(g),p.updateModelEffect=g=>A.updateModelEffect(g),p.getMapTileset=()=>C.getMapTileset(),p.getBIMmodelId=()=>C.getBIMmodelId(),p.getModelList=()=>C.getModelList(),p.loadTreeForModel=g=>C.loadTreeForModel(g),p.loadNodeDetailsForModel=g=>C.loadNodeDetailsForModel(g),p.setMapTileset=g=>C.setMapTileset(g),p.setBIMmodelId=g=>C.setBIMmodelId(g),p.setModelList=g=>C.setModelList(g),p.setSelectColorUserModelCpt=(g,F={})=>A.baseCompt.setSelectColorUserModelCpt(g,F),A.baseCompt.setLoadNodeDetailsCallback(g=>C.loadNodeDetailsForModel(g)),p.setAllSelectColorUserModelCpt=g=>A.baseCompt.setAllSelectColorUserModelCpt(g),p.setSelectColorUserModelCptByClear=()=>A.baseCompt.clearAllHaveSelected(),p.clearSelectColorUserModelCpt=()=>A.baseCompt.clearAllHaveSelected(),p.setSelecteds=(g,F)=>A.baseCompt.setSelectColorUserModelCpt(g,F??{rank:0}),p.setSelectedColor=(g,F,D,P)=>A.baseCompt.setSelectedColorRgba(g,F,D,P),p.clearAllHaveSelected=()=>A.baseCompt.clearAllHaveSelected(),p.getSelected=g=>A.baseCompt.getSelected(g),p.selectionChange=g=>{A.baseCompt.selectionChange(g)},p.flyToObjects=g=>A.baseCompt.flyToObjects(g),p.setAllConstructionProgressTracking=g=>A.baseCompt.setAllConstructionProgressTracking(g),p.enableAllConstructionProgressTracking=()=>A.baseCompt.enableConstructionProgressTracking(),p.disableConstructionProgressTracking=()=>A.baseCompt.disableConstructionProgressTracking(),p.disableAllConstructionProgressTracking=()=>A.baseCompt.disableConstructionProgressTracking(),p.freshConstructionProgressTracking=()=>A.baseCompt.freshConstructionProgressTracking(),p.reStartAnimation=()=>A.baseCompt.reStartAnimation(),p.resumeFlyTo=()=>A.baseCompt.resumeFlyTo(),p.pauseFlyTo=()=>A.baseCompt.pauseFlyTo(),p.pauseAnimation=()=>A.baseCompt.pauseFlyTo(),p.resumeAnimation=()=>A.baseCompt.resumeFlyTo(),p.setElementsListVisible=g=>A.baseCompt.setComponentVisibility(g),p.setAllElementsVisible=g=>A.baseCompt.setAllComponentsVisibility(g),p.getElementsVisible=g=>A.baseCompt.getComponentsByVisibility(g),p.setComponentVisibility=g=>A.baseCompt.setComponentVisibility(g),p.setAllComponentsVisibility=g=>A.baseCompt.setAllComponentsVisibility(g),p.getComponentsByVisibility=g=>A.baseCompt.getComponentsByVisibility(g),p.openSection=(g,F)=>A.baseSection.open(g,F),p.closeSection=g=>A.baseSection.close(g),p.updateSectionRange=g=>A.baseSection.updateRange(g),p.getSectionRange=()=>A.baseSection.getRange(),p.fitToModels=()=>A.baseSection.fitToModels(),p.setSectionBoxVisibility=g=>A.baseSection.setBoxVisibility(g),p.openPlayer=()=>{A.baseCompt.disableSelection(),A.basePlayer.openPlayer()},p.closePlayer=()=>{A.basePlayer.closePlayer(),A.baseCompt.enableSelection()},p.setPersonPosition=g=>A.basePlayer.setPersonPosition(g),p.setPlayerSpeed=g=>A.basePlayer.setSpeed({speed:g}),p.setPlayerParams=g=>A.basePlayer.setParams(g),p.setPlayerMoveState=(g,F)=>A.basePlayer.setMoveState(g,F),p.bindPlayerUiKeys=g=>A.basePlayer.bindUiKeys(g),p.setGlobeEnvironmentVisible=g=>m.setGlobeEnvironmentVisible(g),p.setGlobeColor=g=>m.setGlobeColor(g),p.setCadMode=g=>m.setCadMode(g),p.setTerrainEnable=g=>m.setTerrainEnable(g),p.setDepthTestEnable=g=>m.setDepthTestEnable(g),p.changeBaseMap=(g,F)=>m.changeBaseMap(g,F),p.searchLocation=(g,F)=>m.searchLocation(g,F),p.setShadowsEnable=g=>m.setShadowsEnable(g),p.setShadowDarkness=g=>{m.setShadowDarkness?m.setShadowDarkness(g):console.warn("baseSetting.setShadowDarkness is not available. Please reload the page.")},p.setTime=g=>m.setTime(g),p.setModelBrightness=g=>m.setModelBrightness(g),p.setModelColorAdjustment=g=>m.setModelColorAdjustment(g),p.setEnvironmentMapEnable=g=>m.setEnvironmentMapEnable(g),p.setAmbientOcclusion=g=>m.setAmbientOcclusion(g),p.setCollisionDetection=g=>m.setCollisionDetection(g),p.setMouseHabit=g=>m.setMouseHabit(g),p.is2dMode=()=>m.is2d,p.setSceneMode=g=>{const F=g?"2d":"3d";m.setCadMode(F),g&&!I&&(I=new lo({cesium:a,viewer:f})),l.emit("setMode",F)},p.setGisOptions=g=>{g.globe!==void 0&&m.setGlobeEnvironmentVisible(g.globe),g.elevation!==void 0&&m.setTerrainEnable(g.elevation),g.depthTestAgainstTerrain!==void 0&&m.setDepthTestEnable(g.depthTestAgainstTerrain),g.rendering!==void 0&&m.setAmbientOcclusion(g.rendering)},p.getConfigure=()=>(console.warn("getConfigure is not initialized. Please ensure LeitingSetting component is mounted."),{}),p.setConfigure=g=>{console.warn("setConfigure is not initialized. Please ensure LeitingSetting component is mounted.",g)},p.addDxfModel=g=>{const F={...g};return F.files&&!F.fileNames&&(F.fileNames=F.files),F.fileNames||(F.fileNames=[]),y.addDxfModel(F)},p.deleteCad=g=>y.deleteCad(g),p.deleteAllCad=()=>y.deleteAllCad(),p.showDxfModel=g=>y.showJson(g),p.showDxfLayer=g=>y.showJsonByLayer(g),p.flyToCadModel=(g={})=>y.flyToCadModel(g),p.getDxfModels=g=>y.getDxfModels(g),p.getDxfLayers=g=>y.getMapLayers(g),p.getCadModelId=()=>y.getModelId(),p.setDxfOpen=g=>y.setDxfOpen(g),p.getDxfOpen=()=>y.getDxfOpen(),p.adjustingModelByCad=g=>y.adjustingModelByCad(g),p.saveAnnotations=()=>{let g=null;return I&&(g=I.saveAnnotations()),o?.saveAnnotations&&o.saveAnnotations(g),g},p.loadAnnotations=g=>I?I.loadAnnotations(g):!1,p.set2d=g=>{const F=g?"2d":"3d";m.setCadMode(F),g&&!I&&(I=new lo({cesium:a,viewer:f})),l.emit("setMode",F)},p.flyToTopView=()=>{y.flyToCadModel()},p.menuEvents=l,p.insertMenu=g=>{l.emit("insertMenu",g)},p.setMenuListFilter=g=>{l.emit("setMenuListFilter",g)},p.showMenu=g=>{l.emit("showMenu",g)},p.setMenuActive=(g,F)=>{l.emit("setMenuActive",g,F)},p.insertContextMenu=g=>{console.warn("insertContextMenu is not initialized yet. Please wait for LeitingBIM component to mount.",g)},p.deleteContextMenu=g=>{console.warn("deleteContextMenu is not initialized yet.",g)},p.hideContextMenu=()=>{console.warn("hideContextMenu is not initialized yet.")},p.baseCompt=A.baseCompt,p.getTree=()=>{const g=[],F=C.getMapTileset();return Object.keys(F).forEach(D=>{const P=F[D];if(P&&P.leiting&&P.leiting.tree){const L=P.leiting.tree;Array.isArray(L)?g.push(...L):g.push(L)}}),g},p.getAllComponents=()=>{const g=C.getMapTileset(),F={},D=[];try{Object.keys(g).forEach(P=>{const L=g[P];if(!L||!L.leiting)return;const G=L.leiting,N=G.node,b=G.model.formData,w=G.box;if(!N||!N.nodeExtras)return;const v=G.model.modelId;F[v]=N.nodeExtras;const B=N.nodeExtras.element;if(!B)return;const R=w?w.center:{x:0,y:0,z:0};Object.values(B).forEach(U=>{if(U.box3)try{const O=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,a.Math.toRadians(b.totalRotation||0)),T=a.Matrix4.fromRotationTranslation(a.Matrix3.fromQuaternion(O),new a.Cartesian3(0,0,0)),_=a.Cartesian3.fromDegrees(b.longitude,b.latitude,b.height),Y=a.Transforms.eastNorthUpToFixedFrame(_);a.Matrix4.multiply(Y,T,Y);const $=new a.Cartesian3(R.x,R.y,0),J=new a.Cartesian3;a.Matrix4.multiplyByPoint(Y,$,J);const ne=a.Cartographic.fromCartesian(J),re=U.box3?.Center?.x||0,V=U.box3?.Center?.y||0,j=U.box3?.Center?.z||0,X=new a.Cartesian3(-R.x+re,-R.y+V,0+j),se=a.Matrix4.fromTranslation(X),oe=a.Matrix4.clone(se);a.Matrix4.multiply(T,oe,oe);const ae=a.Cartesian3.fromDegrees(ne.longitude/Math.PI*180,ne.latitude/Math.PI*180,b.height),Ce=a.Transforms.eastNorthUpToFixedFrame(ae);a.Matrix4.multiply(Ce,oe,Ce);const le=a.Cartographic.fromCartesian(new a.Cartesian3(Ce[12],Ce[13],Ce[14]));U.box3.cartographic={longitude:le.longitude/Math.PI*180,latitude:le.latitude/Math.PI*180,height:le.height};const Pe={id:U.uniqueId,billboard:[{theme:"Tag9999",position:[U.box3.cartographic.longitude,U.box3.cartographic.latitude,U.box3.cartographic.height],options:{text:U.name}}]};D.push(Pe)}catch(O){console.warn("Error calculating component position:",O)}})})}catch(P){console.error("getAllComponents error:",P)}return F},p.getCptInfos=g=>{if(!Array.isArray(g))return[];const F=C.getMapTileset(),D=[],P={};g.forEach(L=>{!L.modelId||!L.elementId||(P[L.modelId]||(P[L.modelId]=[]),P[L.modelId]?.push(L.elementId))});try{Object.keys(P).forEach(L=>{const G=F[L];if(!G||!G.leiting)return;const N=G.leiting,b=N.node,w=N.model.formData,v=N.box;if(!b||!b.nodeExtras)return;const B=b.nodeExtras.element;if(!B)return;const R=v?v.center:{x:0,y:0,z:0};P[L]?.forEach(U=>{const O=B[U];if(O&&O.box3)try{const T=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,a.Math.toRadians(w.totalRotation||0)),_=a.Matrix4.fromRotationTranslation(a.Matrix3.fromQuaternion(T),new a.Cartesian3(0,0,0)),Y=a.Cartesian3.fromDegrees(w.longitude,w.latitude,w.height),$=a.Transforms.eastNorthUpToFixedFrame(Y);a.Matrix4.multiply($,_,$);const J=new a.Cartesian3(R.x,R.y,0),ne=new a.Cartesian3;a.Matrix4.multiplyByPoint($,J,ne);const re=a.Cartographic.fromCartesian(ne),V=O.box3?.Center?.x||0,j=O.box3?.Center?.y||0,X=O.box3?.Center?.z||0,se=new a.Cartesian3(-R.x+V,-R.y+j,0+X),oe=a.Matrix4.fromTranslation(se),ae=a.Matrix4.clone(oe);a.Matrix4.multiply(_,ae,ae);const Ce=a.Cartesian3.fromDegrees(re.longitude/Math.PI*180,re.latitude/Math.PI*180,w.height),le=a.Transforms.eastNorthUpToFixedFrame(Ce);a.Matrix4.multiply(le,ae,le);const Pe=a.Cartographic.fromCartesian(new a.Cartesian3(le[12],le[13],le[14]));O.box3.cartographic={longitude:Pe.longitude/Math.PI*180,latitude:Pe.latitude/Math.PI*180,height:Pe.height},D.push(O)}catch(T){console.warn("Error calculating component position:",T)}})})}catch(L){console.error("getCptInfos error:",L)}return D},window.Methods=p}return console.log("methods",p),{Cesium:a,viewer:f,methods:p,menuEvents:l}}function co(n){return d.getCurrentScope()?(d.onScopeDispose(n),!0):!1}function uo(n){return typeof n=="function"?n():d.unref(n)}const L0=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const N0=Object.prototype.toString,U0=n=>N0.call(n)==="[object Object]",_0=()=>{};function Q0(n){return d.getCurrentInstance()}function nc(n,e=!0,t){Q0()?d.onMounted(n,t):e?n():d.nextTick(n)}function Nt(n){var e;const t=uo(n);return(e=t?.$el)!=null?e:t}const Ln=L0?window:void 0;function H0(...n){let e,t,i,s;if(typeof n[0]=="string"||Array.isArray(n[0])?([t,i,s]=n,e=Ln):[e,t,i,s]=n,!e)return _0;Array.isArray(t)||(t=[t]),Array.isArray(i)||(i=[i]);const o=[],r=()=>{o.forEach(u=>u()),o.length=0},l=(u,h,f,p)=>(u.addEventListener(h,f,p),()=>u.removeEventListener(h,f,p)),a=d.watch(()=>[Nt(e),uo(s)],([u,h])=>{if(r(),!u)return;const f=U0(h)?{...h}:h;o.push(...t.flatMap(p=>i.map(A=>l(u,p,A,f))))},{immediate:!0,flush:"post"}),c=()=>{a(),r()};return co(c),c}function G0(){const n=d.ref(!1),e=d.getCurrentInstance();return e&&d.onMounted(()=>{n.value=!0},e),n}function ic(n){const e=G0();return d.computed(()=>(e.value,!!n()))}function Y0(n,e={}){const{window:t=Ln}=e,i=ic(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let s;const o=d.ref(!1),r=c=>{o.value=c.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",r):s.removeListener(r))},a=d.watchEffect(()=>{i.value&&(l(),s=t.matchMedia(uo(n)),"addEventListener"in s?s.addEventListener("change",r):s.addListener(r),o.value=s.matches)});return co(()=>{a(),l(),s=void 0}),o}function V0(n,e,t={}){const{window:i=Ln,...s}=t;let o;const r=ic(()=>i&&"ResizeObserver"in i),l=()=>{o&&(o.disconnect(),o=void 0)},a=d.computed(()=>Array.isArray(n)?n.map(h=>Nt(h)):[Nt(n)]),c=d.watch(a,h=>{if(l(),r.value&&i){o=new ResizeObserver(e);for(const f of h)f&&o.observe(f,s)}},{immediate:!0,flush:"post"}),u=()=>{l(),c()};return co(u),{isSupported:r,stop:u}}function W0(n,e={width:0,height:0},t={}){const{window:i=Ln,box:s="content-box"}=t,o=d.computed(()=>{var h,f;return(f=(h=Nt(n))==null?void 0:h.namespaceURI)==null?void 0:f.includes("svg")}),r=d.ref(e.width),l=d.ref(e.height),{stop:a}=V0(n,([h])=>{const f=s==="border-box"?h.borderBoxSize:s==="content-box"?h.contentBoxSize:h.devicePixelContentBoxSize;if(i&&o.value){const p=Nt(n);if(p){const A=p.getBoundingClientRect();r.value=A.width,l.value=A.height}}else if(f){const p=Array.isArray(f)?f:[f];r.value=p.reduce((A,{inlineSize:C})=>A+C,0),l.value=p.reduce((A,{blockSize:C})=>A+C,0)}else r.value=h.contentRect.width,l.value=h.contentRect.height},t);nc(()=>{const h=Nt(n);h&&(r.value="offsetWidth"in h?h.offsetWidth:e.width,l.value="offsetHeight"in h?h.offsetHeight:e.height)});const c=d.watch(()=>Nt(n),h=>{r.value=h?e.width:0,l.value=h?e.height:0});function u(){a(),c()}return{width:r,height:l,stop:u}}function z0(n={}){const{window:e=Ln,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:i=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=n,r=d.ref(t),l=d.ref(i),a=()=>{e&&(o?(r.value=e.innerWidth,l.value=e.innerHeight):(r.value=e.document.documentElement.clientWidth,l.value=e.document.documentElement.clientHeight))};if(a(),nc(a),H0("resize",a,{passive:!0}),s){const c=Y0("(orientation: portrait)");d.watch(c,()=>a())}return{width:r,height:l}}const j0={class:"title"},$0={class:"actions"},K0={class:"card-body"},X0=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(n,{emit:e}){const t=n,i=d.inject("leiting-theme",d.ref("dark")),s=e,o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:M=>{s("update:visible",M),s("update:open",M)}}),r=d.ref(null),l=d.ref(t.initialPosition?.x||0),a=d.ref(t.initialPosition?.y||0),c=d.ref(t.width),u=d.ref(t.fullHeight?"100%":"600px");d.watch(()=>t.fullHeight,M=>{M?u.value="100%":u.value==="100%"&&(u.value="600px")});const{height:h}=z0();d.watch(h,()=>{t.fullHeight&&(u.value="100%")});const f=d.ref(!1),p=M=>{f.value=!0,M.preventDefault(),M.stopPropagation();const k=M.clientX,S=M.clientY,x=typeof c.value=="number"?c.value:r.value?.offsetWidth||0,g=typeof u.value=="number"?u.value:r.value?.offsetHeight||0,F=P=>{if(!f.value)return;P.preventDefault();const L=P.clientX-k,G=P.clientY-S,N=x+L,b=g+G;N>100&&(c.value=N),b>100&&(u.value=b)},D=()=>{f.value=!1,document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",D)};document.addEventListener("mousemove",F),document.addEventListener("mouseup",D)},A=d.computed(()=>({left:`${l.value}px`,top:`${a.value}px`,width:typeof c.value=="number"?`${c.value}px`:c.value,height:typeof u.value=="number"?`${u.value}px`:u.value,position:"absolute",zIndex:2e3})),C=()=>{d.nextTick(()=>{if(r.value){const M=r.value.offsetParent||document.body,k=M.clientWidth,S=M.clientHeight,x=typeof c.value=="number"?c.value:r.value.offsetWidth||350,g=typeof u.value=="number"?u.value:r.value.offsetHeight||600;l.value+x>k&&(l.value=Math.max(0,k-x-20)),a.value+g>S&&(a.value=Math.max(0,S-g-20)),l.value<0&&(l.value=0),a.value<0&&(a.value=0)}})},m=d.ref(!1),y=M=>{if(M.target.closest(".close-btn")||M.target.closest(".actions"))return;m.value=!0,M.preventDefault(),M.stopPropagation();const k=M.clientX,S=M.clientY,x=l.value,g=a.value,F=P=>{if(!m.value)return;P.preventDefault();const L=P.clientX-k,G=P.clientY-S;l.value=x+L,a.value=g+G},D=()=>{m.value=!1,document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",D),C()};document.addEventListener("mousemove",F),document.addEventListener("mouseup",D)},E=()=>{d.nextTick(()=>{if(t.align&&r.value){const M=r.value.offsetParent||document.body,k=typeof c.value=="number"?c.value:r.value.offsetWidth||350;t.align==="right"?l.value=Math.max(0,M.clientWidth-k-20):t.align==="center"&&(l.value=Math.max(0,(M.clientWidth-k)/2))}C()})};d.onMounted(()=>{t.align?E():C()}),d.watch(o,M=>{M&&(t.align?E():C())});const I=()=>{o.value=!1,s("close")};return(M,k)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{ref_key:"cardRef",ref:r,class:d.normalizeClass(["draggable-card leiting-scroll",["leiting-theme-"+d.unref(i)]]),style:d.normalizeStyle(A.value)},[d.createElementVNode("div",{ref:"headerRef",class:"card-header",onMousedown:y},[d.createElementVNode("span",j0,d.toDisplayString(n.title),1),d.createElementVNode("div",$0,[d.renderSlot(M.$slots,"header-extra",{},void 0,!0),d.createElementVNode("span",{class:"close-btn",onClick:I},"×")])],544),d.createElementVNode("div",K0,[d.renderSlot(M.$slots,"default",{},void 0,!0)]),d.createElementVNode("div",{class:"resize-handle",onMousedown:p},[...k[0]||(k[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,o.value]])}}),Ue=(n,e)=>{const t=n.__vccOpts||n;for(const[i,s]of e)t[i]=s;return t},Re=Ue(X0,[["__scopeId","data-v-50bf6126"]]);function q0(n){const e=d.ref([]),t=d.ref([]),i=d.ref([]),s=d.ref(""),o=d.ref(!0);d.watch(()=>d.unref(n),h=>{if(!h||h.length===0)return;const f=[],p=(m,y)=>{m.forEach(E=>{const I=E.id||E.key||E.$id,M=E.modelId||y;M&&(E.modelId=M),I&&f.push(I),E.children&&E.children.length>0&&p(E.children,M)})};p(h);const A=new Set(i.value);let C=!1;f.forEach(m=>{A.has(m)||(A.add(m),C=!0)}),C&&(i.value=Array.from(A))},{immediate:!0,deep:!0});const r=d.computed(()=>{const h=d.unref(n);if(!h)return[];const f=[],p=(A,C)=>{A.forEach(m=>{const y=m.id||m.key||m.$id,E=m.name||m.title;f.push({key:y,title:E,parentKey:C}),m.children&&m.children.length>0&&p(m.children,y)})};return p(h),f}),l=h=>{e.value=h,o.value=!1},a=h=>{i.value=h},c=h=>{t.value=h},u=h=>r.value.find(p=>p.key===h)?.parentKey;return d.watch(s,h=>{if(!h)return;const p=r.value.filter(C=>C.title&&C.title.toLowerCase().includes(h.toLowerCase())).map(C=>C.parentKey),A=new Set;p.forEach(C=>{let m=C;for(;m;)A.add(m),m=u(m)}),e.value=[...A],o.value=!0}),{expandedKeys:e,selectedKeys:t,checkedKeys:i,searchValue:s,autoExpandParent:o,onExpand:l,onCheck:a,onSelect:c}}const J0={class:"search-box"},Z0={key:0},eC={style:{color:"#f50"}},tC={key:1},nC={key:1,class:"empty-tip"},Pi=Ue(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(n,{emit:e}){const t=me.Input.Search,i=me.Tree,s=n,o=e,r=d.inject("leiting-theme",d.ref("dark")),l=d.inject("leitingMethods"),a=g=>{l?.value?.onSearchComponent&&l.value.onSearchComponent(g)},c=d.computed({get:()=>s.open!==void 0?s.open:s.visible,set:g=>{o("update:visible",g),o("update:open",g)}}),u=d.ref(null),{height:h}=W0(u),f=d.computed(()=>h.value||300),p=d.ref({children:"children",title:"name",key:"id"}),{expandedKeys:A,selectedKeys:C,checkedKeys:m,searchValue:y,autoExpandParent:E}=q0(d.toRef(s,"treeData")),I=g=>{A.value=g,E.value=!1},M=g=>{const F=[],D=P=>{if(!P.children||P.children.length===0){const G=P.element_Id;P.modelId&&G&&F.push({modelId:P.modelId,elementId:G})}else P.children.forEach(D)};return D(g),F},k=(g,F)=>{m.value=g,o("check",g,F);const D=M(F.node).map(P=>({...P,show:F.checked}));l?.value?.setComponentVisibility&&l.value.setComponentVisibility(D),l?.value?.onTreeCheck&&l.value.onTreeCheck(g,F)},S=(g,F)=>{if(C.value=g,o("select",g,F),F.selected){const D=M(F.node);D.length>0&&l?.value?.flyToObjects&&l.value.flyToObjects({selectCpts:D})}l?.value?.onTreeSelect&&l.value.onTreeSelect(g,F)},x=()=>{o("update:visible",!1),o("close")};return(g,F)=>(d.openBlock(),d.createBlock(Re,{visible:c.value,"onUpdate:visible":F[1]||(F[1]=D=>c.value=D),title:n.title,"initial-position":n.initialPosition,"full-height":n.fullHeight,onClose:x},{default:d.withCtx(()=>[d.createElementVNode("div",{class:d.normalizeClass(["leiting-tree-container",[`theme-${d.unref(r)}`]])},[d.createElementVNode("div",J0,[d.createVNode(d.unref(t),{value:d.unref(y),"onUpdate:value":F[0]||(F[0]=D=>d.isRef(y)?y.value=D:null),placeholder:"搜索构件","allow-clear":"","enter-button":"",onSearch:a},null,8,["value"])]),d.createElementVNode("div",{class:"tree-wrapper",ref_key:"treeWrapperRef",ref:u},[n.treeData&&n.treeData.length?(d.openBlock(),d.createBlock(d.unref(i),{key:0,"tree-data":n.treeData,"field-names":p.value,height:f.value,"expanded-keys":d.unref(A),"auto-expand-parent":d.unref(E),"selected-keys":d.unref(C),"checked-keys":d.unref(m),checkable:"","block-node":"",onExpand:I,onSelect:S,onCheck:k},{title:d.withCtx(({name:D,title:P})=>[(D||P)&&d.unref(y)&&(D||P).toLowerCase().indexOf(d.unref(y).toLowerCase())>-1?(d.openBlock(),d.createElementBlock("span",Z0,[d.createTextVNode(d.toDisplayString((D||P).substr(0,(D||P).toLowerCase().indexOf(d.unref(y).toLowerCase())))+" ",1),d.createElementVNode("span",eC,d.toDisplayString(d.unref(y)),1),d.createTextVNode(" "+d.toDisplayString((D||P).substr((D||P).toLowerCase().indexOf(d.unref(y).toLowerCase())+d.unref(y).length)),1)])):(d.openBlock(),d.createElementBlock("span",tC,d.toDisplayString(D||P),1))]),_:1},8,["tree-data","field-names","height","expanded-keys","auto-expand-parent","selected-keys","checked-keys"])):(d.openBlock(),d.createElementBlock("div",nC,"暂无数据"))],512)],2)]),_:1},8,["visible","title","initial-position","full-height"]))}}),[["__scopeId","data-v-749af6eb"]]),iC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",sc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAERSURBVDhPvZTrEYIwEISTCrQD6EA7gA60AylBK1Aq0A7ECrQDoQPsADrACuLuTMJkIiHxjzezgyR7H3d5KJVSqRAigcaQUjYYX2JgZY/P/O4lEgYYFo7pgPcc2kSCBoIUzDeo0klPPEsNYlX7AKzA/M6ASrRzYoIGG5DAOCvzBvzMOxqQazSgLLI1QdAW5jWpUAPV0AVKIc7FRCuNy7RkWozJtj1BED7ANbpDXHhffFXUwUnZwRYp7qw7Rx8/lLkV9R4QD2w1A8pjW3sA4h5au+pXEBS76P8D6Ut9/nXXaiRQdnBXqBfEC+4GdzSxW5v6F7CTeHnbCVCBsWIE+RYVrdF4DSz6OwgiADDexbmT3X0A4fSDfDjUugcAAAAASUVORK5CYII=",sC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFESURBVDhPlZMNEcIwDIVXBQwFgAJAAcMBDgAFIGE4wAHgABSwOdgcIAEUjPd6aS/rfhi7y12bJl9f0sxEf3xVVV0RPoetjTFvnWqGcgSylfgihA0CKcgJgBfsAqMiKiM0+gkKlCyZCN8uhPWCFOSBxARWORU4W2CdeV9XjxSEJcwkjokTqBpzjxjCn7CyVRECzjg8wHLYCmabK7CplBcLhMr2DZCqP0dCovYZ9hYGXx1izLUGUkkfxI/sTQiCf4N1zLWAWCKV2nP6PEhB2Ngd7B4GC4SJnCcP8SAFoc/Ph/TqjVvTPogFKUiJ/VGU+GdmUAA5ObA7cyC+iPt/MjUfKRL4emyuK+cGH8tufFRUHywZ+RYlnRDdIwfzLzVUibtQv1oNhoAExtfpVdIAiQIOWiY9o2sQxJemOydTS1jR1di2Zn8B8f27apou9kMAAAAASUVORK5CYII=",oC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAHDSURBVDhPlZOxL0NRFIe9ECubhehoIIjJ1HYwCkIiJpUQEkN1YZBobU0kFKNI3iTGYrDRv0BIhLXCYpCwiO35fs25zWva98JNvpz37j33d8+551yvLWIEQXDG0izMe55XjvJz816MUJG1LVuvYJcQrEb5xwkV2JSHGfAhgBJiu63E4oSUzpRtusa+wBooKkWnKOujQYh7SbCShQx0m9cpds4iOseOw7BFmUPwU341IQT2MaOQgi9QND+wiqNnBxT4X7SIbrAqhNI9wiUvJ+W8A99wDEWdwrw25iVkkenAEb5LkIQPuIMJWJGQoriFd+iBCkhc8zUhfJSm7mva5l3aadubDgtpMgGKpB/eoBfuQZFoPNhBj9gTaC3kKkEEGXPswF7Y5rLro1AW8UI6GmelmAzfkUWlNaWt6/iT0DOOA5bqoSuzHfIvofATqSJQb8KoiJbtPi6x2dA9FPjXE1F/uZKrv3IwCFcNqVmoPlal7QJ9q/wZCbk7Ioo9/tehE9q1r0nIxNQbG4YEXdkVjQ5J2OZXbB88gVrgQIJNj9aaT4LboPK7J6O0Ktb1KYtc/aYxGff6h3AYY6Nvzk2GQ1WQTVj4BST70jYaqceXAAAAAElFTkSuQmCC",rC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADhSURBVHgBvVOBEYIwDEw9B2ADO4IjuIEjwAa6Aa7ABMAEuIIjOIFsUDao37vgxVZbBI+/+0tI0+fJBaIIrLUFaMAHmNNcsMAIE+vdJLQykQ+0wFHBrsyiT/sL2I1DDTac/+4Klzobov7WHxt29qGmaYaQnlhLCmUTa2l4C2ljvamFlEvY0xpCW/kA924GblfGWciZaJyXQvSmlOoDITSdXQBbcA8eKfy/nHDFeY470FIX8tzUIu84FmLWuTzz7yhRLPm54dKJ4+A5uoJ3HgHBUfUmxGIa4QDuKA4n3kLk9ZInw0qu5b1R1aYAAAAASUVORK5CYII=",aC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAADFSURBVDhPxVPBDYMwDIwnKJu0G9ANYJMyQrsBbNIRGAE2gEnSO6mpIMJxkBC1lEds52zfOeK9b51zV5wte4lIr8RWbgGQh2fGmaIHJe4EetKPtDpRcA5AvwcB7FtgCcTOH0p3YzaQNd75QBiVXJG3LRtCRyQ6Jvsekd3gTsJVoDcihZLQQjXGTRMzIzPhOCCQyNYvSuEue7Qdm02yK0u1nM2m/FQyKb8JZHH+l81Ofdpdm82tvikjThyNlbSEBvIPFj+MfwA76qSYUG3g9QAAAABJRU5ErkJggg==",lC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEcSURBVDhPrZSNDYIwEIXpBOIGjMAIOIE4AbgBGwAbOIJu4Aa4gW4gI+gE9b3mjjSmibSR5ALX3H33W4y1Ns+yrIe0EH7HPC8YnyGjAegkEB5cYyiwrdWXIEc1xnSREGcuiTQEWeg7gG4+CMcl9ALnLkvogwScv+wq6FMQJJCJDgBtBcSAI3QClwe2YZAHcY2Ho4kGAVLA6U5/CEvdp4KYhesFhBPpCZIAz6jStHhproJcHyAHbb5nF+6RZ8CsGslIQaHp/gSxRzlApU4GugPxNuDN/eNarAJxapUPgm8rQ9C1SAI9AOGiHhGApSdnRN8FshbEiLwiLI1rMUM6zSQ0tX9c2lp/Iw0iMIPU38iFIN1mTmOjKa98vyWB4QM5XQnvsbFsyAAAAABJRU5ErkJggg==",cC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGPSURBVDhPrZT9UQIxEMUvFSgViBUoFQgVABV4VqBW4FmBUIFQgZRwVqBU4HUAVHC+X2aXycQw/sPOvLncZvdlv5JQFaTv+1upp8IyhLDHRLpLfe6FrXRt7hZShYyH+n8RauGAv/AkQNYIHICshFcRdu6fE/kGRN/mQGTIpzAzMoh6EV2fIsJ5IwNOj2IpVZ6i6difSecRVnlELZHIgHROisgXRCa78Z+IrMBf2pjLYJNENGSd1kO2pPghjKQniyqY8lFr2NfaqC18wn7nZCMlWg7xLq70TxfRLyHqtABN2lbp40mSSCzBcSebif1TPyKjDBcQ0eJJRkIUpHkMPUlnkBU+pnlWItL6ERgw8o1iqRHtgzAUGNRD2qmkvgMvNnneUQcZ4ggR6VGXG+OOA1koNvrFcY7+af++VJe0hucfyKQu+RWJc+SDZ3aNvlPpRl7T0qXdafNZYPDehLEZt/rOBR9U8QSaEKX0jHAaE4tshVrgLeJ+Xdl6rS8D3BWJXKnCEwWXEuco9grQ3bb0sP0Cn8/nPm/SMRQAAAAASUVORK5CYII=",dC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACDSURBVHgB1ZFhDYAgEIWfzgBGIIINpIEViGAkG2gEbWADjWADfMw/iDgUfji/7e3gxt3uHsDXZFrrlrFBHJNpsPAgEEmORArn3lFroEZQCjcTbAhzepPsgbuCgn8FBWvsUAMfFR5OIPGS5G80JkrG2sopHKbO1BCoHy8ZNhRUT5X4BTu6qyNSwwCiMAAAAABJRU5ErkJggg==",uC={class:"menu-container"},hC=["onClick","title"],fC={class:"menu-icon"},pC=["src","alt"],gC={key:3,style:{"font-size":"12px"}},mC={key:0,class:"sub-menu"},AC=["onClick"],Nn=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(n,{emit:e}){const t=n,i=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(()=>i.value||i),l=d.computed(()=>s.value||s),a=d.ref([{ID:"home",title:"主视角",src:iC,key:"homeView"},{ID:"tree",title:"目录树",src:sc,key:"componentTree"},{ID:"cadLayer",title:"图层",src:sc,key:"cadLayer"},{ID:"measure",title:"量算",src:sC,key:"measurement"},{ID:"section",title:"剖切",src:oC,key:"section"},{ID:"roam",title:"人物漫游",src:rC,key:"roam"},{ID:"info",title:"构件信息",src:aC,key:"componentInfo"},{ID:"cadPosition",title:"调整位置",src:lC,key:"cadPosition"},{ID:"annotation",title:"标注",src:dC,key:"annotation"},{ID:"setting",title:"设置",src:cC,key:"setting"}]),c=d.ref([]),u=d.ref([...t.activeIds]);d.watch(()=>t.activeIds,k=>{u.value=[...k]},{deep:!0});const h=d.computed(()=>t.visible);o.value&&o.value.menuEvents&&(o.value.menuEvents.on("setMenuListFilter",k=>{c.value=k}),o.value.menuEvents.on("setMenuActive",(k,S)=>{S?u.value.includes(k)||u.value.push(k):u.value=u.value.filter(x=>x!==k)}));const f=d.computed(()=>{let k=a.value;if(t.is2d){const S=["homeView","measurement","cadLayer","annotation"];k=k.filter(x=>x.key&&S.includes(x.key))}else{const S=["cadLayer","cadPosition","annotation"];k=k.filter(x=>!x.key||!S.includes(x.key))}if(c.value.length>0&&(k=k.filter(S=>!S.key||!c.value.includes(S.key))),t.customItems&&t.customItems.length>0){const S=t.customItems.map(x=>({...x,key:x.ID,src:x.src||x.icon}));return[...k,...S]}return k}),p=e,A=k=>{const S=["homeView"];if(k.key&&S.includes(k.key))u.value.includes(k.ID)||(u.value.push(k.ID),setTimeout(()=>{const g=u.value.indexOf(k.ID);g>-1&&u.value.splice(g,1)},1e3));else{const g=u.value.indexOf(k.ID);g>-1?u.value.splice(g,1):u.value.push(k.ID)}const x=u.value.includes(k.ID);k.func&&k.func(k),k.key&&p("action",k.key,x)},C=k=>{a.value=[...a.value,...k]},m=k=>{c.value=k},y=k=>{console.log("LeitingMenu received showMenu event:",k)},E=(k,S)=>{const x=a.value.find(g=>g.ID===k||g.key===k);if(x){const g=u.value.indexOf(x.ID);S&&g===-1?u.value.push(x.ID):!S&&g>-1&&u.value.splice(g,1)}};let I=null;const M=()=>{o.value?.menuEvents&&(I&&(I.off("insertMenu",C),I.off("setMenuListFilter",m),I.off("showMenu",y),I.off("setMenuActive",E)),I=o.value.menuEvents,I.on("insertMenu",C),I.on("setMenuListFilter",m),I.on("showMenu",y),I.on("setMenuActive",E))};return d.onMounted(()=>{M()}),d.onUnmounted(()=>{I&&(I.off("insertMenu",C),I.off("setMenuListFilter",m),I.off("showMenu",y),I.off("setMenuActive",E))}),d.watch(o,()=>{M()},{deep:!0}),(k,S)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-menu-wrapper",["leiting-theme-"+r.value,"size-"+l.value]])},[d.createElementVNode("div",uC,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(f.value,x=>(d.openBlock(),d.createElementBlock("div",{key:x.ID,class:d.normalizeClass(["menu-item",{active:u.value.includes(x.ID)}]),onClick:g=>A(x),title:x.title},[d.createElementVNode("div",fC,[x.src?(d.openBlock(),d.createElementBlock("img",{key:0,src:x.src,alt:x.title},null,8,pC)):typeof x.icon=="object"?(d.openBlock(),d.createBlock(d.resolveDynamicComponent(x.icon),{key:1})):typeof x.icon=="string"?(d.openBlock(),d.createElementBlock("i",{key:2,class:d.normalizeClass(["iconfont",`icon-${x.icon}`])},null,2)):(d.openBlock(),d.createElementBlock("span",gC,d.toDisplayString(x.title.substring(0,2)),1))]),x.children&&x.children.length>0?(d.openBlock(),d.createElementBlock("div",mC,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(x.children,g=>(d.openBlock(),d.createElementBlock("div",{key:g.ID,class:d.normalizeClass(["sub-menu-item",{active:u.value.includes(g.ID)}]),onClick:d.withModifiers(F=>A(g),["stop"])},d.toDisplayString(g.title),11,AC))),128))])):d.createCommentVNode("",!0)],10,hC))),128))])],2)),[[d.vShow,h.value]])}}),yC={class:"leiting-section-content"},CC={class:"section-form-item"},EC={class:"radio-group"},wC={class:"section-form-item"},bC={class:"switch-container"},vC={class:"switch"},IC={class:"status-text"},xC={class:"section-form-item slider-item"},BC={class:"slider-wrapper"},SC={class:"section-form-item slider-item"},MC={class:"slider-wrapper"},TC={class:"section-form-item slider-item"},DC={class:"slider-wrapper"},kC={class:"section-form-item table-item"},PC={class:"model-table-container"},FC={class:"model-table"},RC={width:"40"},OC=["checked"],LC=["onClick"],NC=["value"],UC={class:"model-name"},Un=Ue(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(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:N=>{i("update:visible",N),i("update:open",N)}}),r=d.ref("Box"),l=d.ref(!1),a=d.ref([]),c=d.ref([]),u=d.computed(()=>c.value.length===0?!1:c.value.every(N=>a.value.includes(N.modelId))),h=N=>{N.target.checked?a.value=c.value.map(w=>w.modelId):a.value=[],F()},f=d.ref([-10,10]),p=d.ref([-10,10]),A=d.ref([-10,10]),C=d.ref([-100,100]),m=d.ref([-100,100]),y=d.ref([-100,100]);let E=!1;const I=N=>{E=!0;const{targetZPlus:b,targetZMinus:w,targetXPlus:v,targetXMinus:B,targetYPlus:R,targetYMinus:U}=N;A.value=[-w,b],f.value=[-B,v],p.value=[-U,R],setTimeout(()=>{E=!1},100)},M=()=>{E||a.value.length===0||!s?.value?.updateSectionRange||s.value.updateSectionRange({targetZPlus:A.value[1],targetZMinus:-A.value[0],targetXPlus:f.value[1],targetXMinus:-f.value[0],targetYPlus:p.value[1],targetYMinus:-p.value[0]})},k=()=>{s?.value?.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(l.value)},S=N=>{if(!s?.value?.getMapTileset||!s?.value?.openSection)return;const w=s.value.getMapTileset()[N];if(w&&w.leiting?.box){const{min:v,max:B}=w.leiting.box,R=(B.x-v.x)/2,U=(B.y-v.y)/2,O=(B.z-v.z)/2;a.value.length<=1&&(C.value=[-R*2,R*2],m.value=[-U*2,U*2],y.value=[-O*2,O*2],f.value=[-R,R],p.value=[-U,U],A.value=[-O,O],s.value.updateSectionRange&&s.value.updateSectionRange({targetZPlus:O,targetZMinus:O,targetXPlus:R,targetXMinus:R,targetYPlus:U,targetYMinus:U})),s.value.openSection(N,{moveCallBack:I}),s.value.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(l.value)}},x=N=>{const b=a.value.indexOf(N);b>-1?a.value.splice(b,1):a.value.push(N),F()};let g=[];const F=()=>{const N=a.value.filter(w=>!g.includes(w)),b=g.filter(w=>!a.value.includes(w));N.forEach(w=>S(w)),b.forEach(w=>{s?.value?.closeSection&&s.value.closeSection(w)}),g=[...a.value]},D=()=>{},P=()=>{o.value=!1,i("close")},L=()=>{l.value=!1,a.value=[],g=[],f.value=[-10,10],p.value=[-10,10],A.value=[-10,10],C.value=[-100,100],m.value=[-100,100],y.value=[-100,100]};d.watch(()=>t.visible,N=>{N?G():(s?.value?.closeSection&&s.value.closeSection(),L())});const G=()=>{s?.value&&typeof s.value.getModelList=="function"&&(c.value=s.value.getModelList()||[],c.value.length>0&&a.value.length===0&&(a.value=[c.value[0].modelId],g=[...a.value]),t.visible&&a.value.length>0&&(l.value=!0,a.value.forEach(N=>S(N))))};return d.watch(()=>s?.value,()=>{G()},{immediate:!0,deep:!0}),d.onMounted(()=>{G()}),(N,b)=>(d.openBlock(),d.createBlock(Re,{visible:o.value,title:"剖切分析","full-height":n.fullHeight,"onUpdate:visible":P},{default:d.withCtx(()=>[d.createElementVNode("div",yC,[d.createElementVNode("div",CC,[b[8]||(b[8]=d.createElementVNode("span",{class:"label"},"模式",-1)),d.createElementVNode("div",EC,[d.createElementVNode("label",{class:d.normalizeClass(["radio-item",{active:r.value==="Box"}])},[d.withDirectives(d.createElementVNode("input",{type:"radio",value:"Box","onUpdate:modelValue":b[0]||(b[0]=w=>r.value=w),onChange:D},null,544),[[d.vModelRadio,r.value]]),b[7]||(b[7]=d.createTextVNode(" 剖切盒 ",-1))],2)])]),d.createElementVNode("div",wC,[b[10]||(b[10]=d.createElementVNode("span",{class:"label"},"显示",-1)),d.createElementVNode("div",bC,[d.createElementVNode("label",vC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":b[1]||(b[1]=w=>l.value=w),onChange:k},null,544),[[d.vModelCheckbox,l.value]]),b[9]||(b[9]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",IC,d.toDisplayString(l.value?"显示":"隐藏"),1)])]),d.createElementVNode("div",xC,[b[11]||(b[11]=d.createElementVNode("span",{class:"label"},"X 轴",-1)),d.createElementVNode("div",BC,[d.createVNode(d.unref(me.Slider),{value:f.value,"onUpdate:value":b[2]||(b[2]=w=>f.value=w),range:"",min:C.value[0],max:C.value[1],step:.1,onChange:M},null,8,["value","min","max"])])]),d.createElementVNode("div",SC,[b[12]||(b[12]=d.createElementVNode("span",{class:"label"},"Y 轴",-1)),d.createElementVNode("div",MC,[d.createVNode(d.unref(me.Slider),{value:p.value,"onUpdate:value":b[3]||(b[3]=w=>p.value=w),range:"",min:m.value[0],max:m.value[1],step:.1,onChange:M},null,8,["value","min","max"])])]),d.createElementVNode("div",TC,[b[13]||(b[13]=d.createElementVNode("span",{class:"label"},"Z 轴",-1)),d.createElementVNode("div",DC,[d.createVNode(d.unref(me.Slider),{value:A.value,"onUpdate:value":b[4]||(b[4]=w=>A.value=w),range:"",min:y.value[0],max:y.value[1],step:.1,onChange:M},null,8,["value","min","max"])])]),d.createElementVNode("div",kC,[b[15]||(b[15]=d.createElementVNode("span",{class:"label"},"模型",-1)),d.createElementVNode("div",PC,[d.createElementVNode("table",FC,[d.createElementVNode("thead",null,[d.createElementVNode("tr",null,[d.createElementVNode("th",RC,[d.createElementVNode("input",{type:"checkbox",checked:u.value,onChange:h},null,40,OC)]),b[14]||(b[14]=d.createElementVNode("th",null,"名称",-1))])]),d.createElementVNode("tbody",null,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,w=>(d.openBlock(),d.createElementBlock("tr",{key:w.modelId,class:d.normalizeClass({selected:a.value.includes(w.modelId)}),onClick:v=>x(w.modelId)},[d.createElementVNode("td",null,[d.withDirectives(d.createElementVNode("input",{type:"checkbox",value:w.modelId,"onUpdate:modelValue":b[5]||(b[5]=v=>a.value=v),onClick:b[6]||(b[6]=d.withModifiers(()=>{},["stop"])),onChange:F},null,40,NC),[[d.vModelCheckbox,a.value]])]),d.createElementVNode("td",UC,d.toDisplayString(w.modelName),1)],10,LC))),128))])])])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-ee4d9a12"]]),_C={class:"leiting-player-content"},QC={class:"player-form-item"},HC={class:"switch-container"},GC={class:"switch"},YC={class:"status-text"},VC={class:"player-form-item"},WC={class:"switch-container"},zC={class:"switch"},jC={class:"status-text"},$C={class:"player-form-item"},KC={class:"switch-container"},XC={class:"switch"},qC={class:"status-text"},JC={class:"player-form-item slider-item"},ZC={class:"slider-wrapper"},eE={class:"value-text"},tE={class:"instructions"},nE={class:"key-map"},iE={class:"key-row"},sE={class:"key-row"},oE={class:"key-row"},rE={class:"key-row"},aE={class:"key-row"},lE={class:"key-row"},_n=Ue(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(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.ref(!1),r=d.ref(!1),l=d.ref(!0),a=d.ref(5),c=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:S=>{i("update:visible",S),i("update:open",S)}}),u=d.ref(null),h=d.ref(null),f=d.ref(null),p=d.ref(null),A=d.ref(null),C=d.ref(null),m=()=>{o.value?E():I()},y=()=>{s?.value?.setPlayerParams&&s.value.setPlayerParams({gravityTest:r.value,collisionTest:l.value})},E=async()=>{s?.value?.openPlayer&&(await s.value.openPlayer(),s.value.setPlayerSpeed&&s.value.setPlayerSpeed(a.value),y(),s.value.bindPlayerUiKeys&&(await d.nextTick(),s.value.bindPlayerUiKeys({moveFront:u.value,moveBack:h.value,moveLeft:f.value,moveRight:p.value,moveUp:A.value,moveDown:C.value})))},I=()=>{s?.value?.closePlayer&&s.value.closePlayer()},M=()=>{s?.value?.setPlayerSpeed&&s.value.setPlayerSpeed(a.value)},k=()=>{c.value=!1,i("close")};return d.watch(()=>t.visible,S=>{S?(o.value=!0,s?.value?E():setTimeout(()=>{s?.value&&E()},100)):o.value&&(o.value=!1,I())},{immediate:!0}),(S,x)=>(d.openBlock(),d.createBlock(Re,{title:n.title,visible:c.value,"full-height":n.fullHeight,"onUpdate:visible":k},{default:d.withCtx(()=>[d.createElementVNode("div",_C,[d.createElementVNode("div",QC,[x[5]||(x[5]=d.createElementVNode("span",{class:"label"},"启用",-1)),d.createElementVNode("div",HC,[d.createElementVNode("label",GC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[0]||(x[0]=g=>o.value=g),onChange:m},null,544),[[d.vModelCheckbox,o.value]]),x[4]||(x[4]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",YC,d.toDisplayString(o.value?"开启":"关闭"),1)])]),d.createElementVNode("div",VC,[x[7]||(x[7]=d.createElementVNode("span",{class:"label"},"重力",-1)),d.createElementVNode("div",WC,[d.createElementVNode("label",zC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[1]||(x[1]=g=>r.value=g),onChange:y},null,544),[[d.vModelCheckbox,r.value]]),x[6]||(x[6]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",jC,d.toDisplayString(r.value?"开启":"关闭"),1)])]),d.createElementVNode("div",$C,[x[9]||(x[9]=d.createElementVNode("span",{class:"label"},"碰撞",-1)),d.createElementVNode("div",KC,[d.createElementVNode("label",XC,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[2]||(x[2]=g=>l.value=g),onChange:y},null,544),[[d.vModelCheckbox,l.value]]),x[8]||(x[8]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",qC,d.toDisplayString(l.value?"开启":"关闭"),1)])]),d.createElementVNode("div",JC,[x[10]||(x[10]=d.createElementVNode("span",{class:"label"},"速度",-1)),d.createElementVNode("div",ZC,[d.createVNode(d.unref(me.Slider),{value:a.value,"onUpdate:value":x[3]||(x[3]=g=>a.value=g),min:1,max:10,step:1,onChange:M},null,8,["value"])]),d.createElementVNode("span",eE,d.toDisplayString(a.value),1)]),x[19]||(x[19]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",tE,[x[18]||(x[18]=d.createElementVNode("div",{class:"instruction-title"},"操作说明",-1)),d.createElementVNode("div",nE,[d.createElementVNode("div",iE,[d.createElementVNode("span",{class:"key",ref_key:"btnFront",ref:u},"W",512),x[11]||(x[11]=d.createTextVNode(" 前进 ",-1))]),d.createElementVNode("div",sE,[d.createElementVNode("span",{class:"key",ref_key:"btnBack",ref:h},"S",512),x[12]||(x[12]=d.createTextVNode(" 后退 ",-1))]),d.createElementVNode("div",oE,[d.createElementVNode("span",{class:"key",ref_key:"btnLeft",ref:f},"A",512),x[13]||(x[13]=d.createTextVNode(" 左移 ",-1))]),d.createElementVNode("div",rE,[d.createElementVNode("span",{class:"key",ref_key:"btnRight",ref:p},"D",512),x[14]||(x[14]=d.createTextVNode(" 右移 ",-1))]),d.createElementVNode("div",aE,[d.createElementVNode("span",{class:"key",ref_key:"btnUp",ref:A},"Q",512),x[15]||(x[15]=d.createTextVNode(" 上升 ",-1))]),d.createElementVNode("div",lE,[d.createElementVNode("span",{class:"key",ref_key:"btnDown",ref:C},"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"]]),cE={class:"info-content"},dE={key:0,class:"component-title"},Qn=Ue(d.defineComponent({__name:"LeitingInfo",props:{visible:{type:Boolean},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean}},emits:["update:visible","update:open","close"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.ref([]),r=d.ref(!1),l=d.ref([]),a=d.ref([]),c=d.ref(0),u=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:y=>{i("update:visible",y),i("update:open",y)}}),h=()=>{u.value=!1},f=y=>({elementID:"构件ID",elementName:"构件名",categoryName:"类别",familySymbolName:"族类型",levelName:"标高",modelName:"文件名",length:"长",width:"宽",height:"高"})[y]||y,p=["elementName","elementID","modelName","length","width","height","levelName","categoryName","familySymbolName"],A=async y=>{const E=++c.value;if(a.value=y,!y||y.length===0){o.value=[];return}if(!u.value)return;let I=y;y.length>10&&(ge.warning(`选中构件数量过多(${y.length}个),仅显示前10个`),I=y.slice(0,10));const M=s?.value;let k=M?.getMapTileset?M.getMapTileset():{};r.value=!0;const S=[],x={};if(I.forEach(D=>{const L=k[D.modelId]?.leiting?.model?.dbName;L&&D.elementId&&S.push({dbName:L,elementId:D.elementId,modelId:D.modelId})}),S.length>0){try{const D=S.map(L=>({dbName:L.dbName,elementId:L.elementId})),P=await Tg(D);P&&Array.isArray(P)&&P.forEach(L=>{const G=S.find(N=>N.dbName===L.dbName&&N.elementId===L.elementId);if(G){const N=`${G.modelId}_${L.elementId}`;x[N]=L}})}catch(D){console.warn("API fetch component details failed, falling back to local data",D)}console.log("123")}const g=new Set;if(I.forEach(D=>{const P=k[D.modelId],L=`${D.modelId}_${D.elementId}`;x[L]||P&&P.leiting&&!P.leiting?.node?.nodeExtras&&P.leiting.model?.nodeUrl&&g.add(D.modelId)}),g.size>0&&M?.loadNodeDetailsForModel)try{const D=Array.from(g).map(P=>M.loadNodeDetailsForModel(P));await Promise.all(D)}catch(D){console.error("Failed to load node details",D)}if(E!==c.value)return;k=M?.getMapTileset?M.getMapTileset():{};const F=[];I.forEach((D,P)=>{const G=k[D.modelId]?.leiting||{},N=x[`${D.modelId}_${D.elementId}`];let b={modelName:G.model?.modelId||D.modelId};b.elementID||(b.elementID=D.elementId);let w=null;if(N)w=N;else{const R=G.node?.nodeExtras?.element||G.node?.nodeExtras;if(R){const U=b.elementID;R[U]&&(w=R[U])}}w&&w.box3&&(b.length=`${w.box3.length?.toFixed(2)||0}米`,b.width=`${w.box3.width?.toFixed(2)||0}米`,b.height=`${w.box3.height?.toFixed(2)||0}米`);const v=[];w&&(w.name&&(b.elementName=w.name),w.categoryName&&(b.categoryName=w.categoryName),w.familySymbolName&&(b.familySymbolName=w.familySymbolName),w.levelName&&(b.levelName=w.levelName));const B={};if(p.forEach(R=>{b[R]!==void 0&&(B[R]=b[R])}),v.push({name:"基础信息",params:B}),w){const R=Array.isArray(w)?w:Array.isArray(w?.parameters)?w.parameters:null;if(R){if(R.flat().forEach(O=>{if(O&&O.GroupName&&Array.isArray(O.Parameters)){const T={};O.Parameters.forEach(_=>{_.name&&(T[_.name]=_.value??"")}),Object.keys(T).length>0&&v.push({name:O.GroupName,params:T})}}),!Array.isArray(w)){const{parameters:O,...T}=w,_={};Object.keys(T).forEach(Y=>{!p.includes(Y)&&Y!=="uniqueId"&&typeof T[Y]!="object"&&(_[Y]=T[Y])}),Object.keys(_).length>0&&v.push({name:"其他属性",params:_})}}else{let U=!1;if(Object.keys(w).forEach(O=>{w[O]&&typeof w[O]=="object"&&!Array.isArray(w[O])&&(U=!0,v.push({name:O,params:w[O]}))}),!U){const O={};Object.keys(w).forEach(T=>{if(!p.includes(T)&&T!=="batchId"){const _=w[T];typeof _=="string"&&_.length>500?O[T]=_.substring(0,500)+"...":O[T]=_}}),Object.keys(O).length>0&&v.push({name:"属性",params:O})}}}F.push({id:P,title:`${b.modelName}${b.elementName?` - ${b.elementName}`:""}`,groups:v})}),o.value=F,E===c.value&&(r.value=!1),F.length>0?l.value=[`${F[0].id}-基础信息`]:l.value=[]};let C=!1;const m=()=>{if(C)return;const y=s?.value;y&&y.selectionChange&&(y.selectionChange(A),C=!0)};return d.watch(()=>s?.value,()=>{m()},{deep:!0,immediate:!0}),d.watch(u,y=>{y&&a.value.length>0&&A(a.value)}),d.onMounted(()=>{m()}),(y,E)=>(d.openBlock(),d.createBlock(Re,{visible:u.value,title:"构件详情",width:350,align:"right","initial-position":{x:0,y:0},"full-height":n.fullHeight,onClose:h,"onUpdate:visible":E[1]||(E[1]=I=>u.value=I),class:"base-info-card"},{default:d.withCtx(()=>[d.createElementVNode("div",cE,[d.createVNode(d.unref(me.Spin),{spinning:r.value},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(o.value,I=>(d.openBlock(),d.createElementBlock("div",{key:I.id,class:"component-block"},[o.value.length>1?(d.openBlock(),d.createElementBlock("div",dE,d.toDisplayString(I.title),1)):d.createCommentVNode("",!0),d.createVNode(d.unref(me.Collapse),{activeKey:l.value,"onUpdate:activeKey":E[0]||(E[0]=M=>l.value=M),ghost:"","expand-icon-position":"end"},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(I.groups,M=>(d.openBlock(),d.createBlock(d.unref(me.CollapsePanel),{key:`${I.id}-${M.name}`,header:M.name},{default:d.withCtx(()=>[d.createVNode(d.unref(me.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(M.params,(k,S)=>(d.openBlock(),d.createBlock(d.unref(me.DescriptionsItem),{key:S,label:f(String(S))},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(k),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-cd881bde"]]);class oc{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 i=`adjust-marker-${e}-${Date.now()}`;e==="BIM"?this.bimEntityId=i:this.mapEntityId=i,this.viewer.entities.add({id:i,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 i;try{i=this.viewer.scene.pickPosition(t.position)}catch(s){console.warn("pickPosition failed:",s)}if(!i){const s=this.viewer.camera.getPickRay(t.position);i=this.viewer.scene.globe.pick(s,this.viewer.scene)}if(i||(i=this.viewer.camera.pickEllipsoid(t.position,this.viewer.scene.globe.ellipsoid)),i){const s=this.Cesium.Cartographic.fromCartesian(i),o=this.Cesium.Math.toDegrees(s.longitude),r=this.Cesium.Math.toDegrees(s.latitude),l=s.height;e({longitude:o,latitude:r,height:l})}},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 uE={class:"adjust-panel"},hE={class:"control-panel"},fE={class:"form-item"},pE={class:"radio-group"},gE={class:"form-item"},mE={class:"radio-group"},AE={class:"form-item"},yE={class:"value"},CE={class:"param-row"},EE={class:"param-row"},wE={class:"param-row"},bE={class:"param-row"},vE={class:"param-row"},IE={class:"param-row"},xE={class:"param-row"},BE={class:"button-grid"},SE={key:1,class:"pick-mode-ui"},ME={class:"form-item",style:{display:"block","margin-bottom":"15px"}},TE={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},DE=["checked"],kE={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},PE={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},FE={class:"form-item",style:{display:"block","margin-bottom":"15px"}},RE={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},OE=["checked"],LE={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},NE={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},UE={class:"list-panel"},_E={class:"list-header"},QE={class:"col-check"},HE=["checked"],GE={class:"list-body"},YE={class:"col-check"},VE=["onUpdate:modelValue"],WE={class:"col-index"},zE=["title"],jE={class:"col-main"},$E=["checked","onChange"],Hn=Ue(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(n,{expose:e,emit:t}){const i=n,s=t,o=d.computed({get:()=>i.open!==void 0?i.open:i.visible,set:O=>{s("update:visible",O),s("update:open",O)}}),r=d.inject("leitingMethods"),l=d.ref("BIM"),a=d.ref("param"),c=d.ref(""),u=d.ref([]),h=d.ref("BIM"),f=d.ref(null),p=d.ref(null),A=d.ref(null),C=()=>(!A.value&&r?.value?.getViewer&&r?.value?.getCesium&&(A.value=new oc(r.value.getViewer(),r.value.getCesium())),A.value),m=()=>{C()?.clearMarkers(),f.value=null,p.value=null},y=(O,T)=>{O==="BIM"?f.value=T:p.value=T,C()?.addMarker(O,T),ge.success(`${O==="BIM"?"BIM":"地图"}标记点已添加`)},E=()=>{C()?.registerPickHandler(O=>{y(h.value,O)})},I=()=>{C()?.destroyPickHandler()},M=()=>{if(!f.value||!p.value){ge.warning("请先选择BIM标记点和地图标记点");return}if(!c.value){ge.warning("请先选择主模型");return}const O=C();let T=0,_=0,Y=0;if(O){const{dLon:$,dLat:J,dHeight:ne}=O.calculateOffset(f.value,p.value);T=$,_=J,Y=ne}else T=p.value.longitude-f.value.longitude,_=p.value.latitude-f.value.latitude,Y=p.value.height-f.value.height;S.value.longitude+=T,S.value.latitude+=_,S.value.height+=Y,w(c.value,{longitude:S.value.longitude,latitude:S.value.latitude,height:S.value.height}),ge.success("位置已调整")};d.watch(()=>a.value,O=>{O==="pick"?E():I()}),e({addMarker:y,setModelType:O=>{(O==="BIM"||O==="OSGB")&&(l.value=O)}});const S=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 O=u.value.find(T=>T.modelId===c.value);return O?O.modelName:""}),g=d.computed(()=>D.value.length>0&&D.value.every(O=>O.selected)),F=()=>{o.value=!1,s("close")},D=d.computed(()=>u.value.filter(O=>O.type===l.value)),P=O=>{const T=O.target.checked;D.value.forEach(_=>_.selected=T)},L=()=>{if(!r?.value)return;const O=r.value,T=O.getMapTileset?O.getMapTileset():{},_=[];if(Object.keys(T).forEach(Y=>{const J=T[Y].leiting||{};J.model&&_.push({modelId:J.model.modelId,modelName:J.model.modelName,selected:!1,formData:J.model.formData||{},dbName:J.model.dbName,url:J.model.url,type:J.model.type||"BIM"})}),u.value=_,_.length>0){const Y=O.getBIMmodelId?O.getBIMmodelId():"";Y&&_.find($=>$.modelId===Y)?N(Y):N(_[0].modelId),_.forEach($=>$.selected=!0)}},G=()=>{ge.info("拖动右下角标,可显示模型列表",void 0,2)},N=O=>{c.value=O;const T=u.value.find(_=>_.modelId===O);T&&T.formData&&Object.keys(S.value).forEach(_=>{T.formData[_]!==void 0&&(S.value[_]=T.formData[_])})},b=O=>r?.value?.getMapTileset?r.value.getMapTileset()[O]:null,w=(O,T)=>{const _=b(O),Y=r.value.getCesium();if(_&&Y){if(_.leiting?.model){_.leiting.model.formData={..._.leiting.model.formData,...T};const $=u.value.find(J=>J.modelId===O);$&&($.formData=_.leiting.model.formData)}dr({Cesium:Y,tileset:_})}},v=O=>{if(!c.value)return;const T=S.value[O];w(c.value,{[O]:T})},B=O=>{const T=D.value.filter(J=>J.selected);if(T.length===0){ge.warning("请先选择要调整的模型");return}const{lonlat:_,heightDistance:Y,rotation:$}=S.value;T.forEach(J=>{const ne={...J.formData};switch(O){case"north":ne.latitude+=_;break;case"south":ne.latitude-=_;break;case"east":ne.longitude+=_;break;case"west":ne.longitude-=_;break;case"up":ne.height+=Y;break;case"down":ne.height-=Y;break;case"rotateLeft":ne.totalRotation=(ne.totalRotation||0)+$;break;case"rotateRight":ne.totalRotation=(ne.totalRotation||0)-$;break}J.modelId===c.value&&(ne.lonlat=_,ne.heightDistance=Y,ne.rotation=$,Object.assign(S.value,ne)),w(J.modelId,ne)})},R=()=>{if(!c.value){ge.warning("请先选择主模型");return}const O=b(c.value);if(!O||!r?.value?.getViewer)return;const T=r.value.getViewer(),_=r.value.getCesium(),Y=O.boundingSphere;T.camera.flyToBoundingSphere(Y,{offset:new _.HeadingPitchRange(0,_.Math.toRadians(-90),Y.radius*2),duration:1.5})},U=()=>{r?.value?.saveRegion?(r.value.saveRegion(u.value),s("save",d.unref(u))):(console.log("Save models:",u.value),ge.warning("未找到保存接口,数据已打印控制台"))};return d.watch(()=>i.visible,O=>{O?(L(),G(),a.value==="pick"&&E()):(I(),m())}),d.onMounted(()=>{i.visible&&(L(),G(),a.value==="pick"&&E())}),(O,T)=>(d.openBlock(),d.createBlock(Re,{visible:o.value,title:"调整位置(调整前可选择正北俯视)","full-height":n.fullHeight,"onUpdate:visible":T[25]||(T[25]=_=>o.value=_),onClose:F,onSave:U},{default:d.withCtx(()=>[d.createElementVNode("div",uE,[d.createElementVNode("div",hE,[d.createElementVNode("div",fE,[T[26]||(T[26]=d.createElementVNode("label",null,"模型类型:",-1)),d.createElementVNode("div",pE,[d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="BIM"}),onClick:T[0]||(T[0]=_=>l.value="BIM")},"BIM模型",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="OSGB"}),onClick:T[1]||(T[1]=_=>l.value="OSGB")},"倾斜摄影",2)])]),d.createElementVNode("div",gE,[T[27]||(T[27]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",mE,[d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="param"}),onClick:T[2]||(T[2]=_=>a.value="param")},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="pick"}),onClick:T[3]||(T[3]=_=>a.value="pick")},"地图点选",2)])]),d.createElementVNode("div",AE,[T[28]||(T[28]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",yE,d.toDisplayString(x.value||"未选择"),1)]),T[42]||(T[42]=d.createElementVNode("div",{class:"separator"},null,-1)),a.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[T[36]||(T[36]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",CE,[T[29]||(T[29]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[4]||(T[4]=_=>S.value.longitude=_),onChange:T[5]||(T[5]=_=>v("longitude")),step:"0.000001"},null,544),[[d.vModelText,S.value.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",EE,[T[30]||(T[30]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[6]||(T[6]=_=>S.value.latitude=_),onChange:T[7]||(T[7]=_=>v("latitude")),step:"0.000001"},null,544),[[d.vModelText,S.value.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",wE,[T[31]||(T[31]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[8]||(T[8]=_=>S.value.height=_),onChange:T[9]||(T[9]=_=>v("height")),step:"0.1"},null,544),[[d.vModelText,S.value.height,void 0,{number:!0}]])]),d.createElementVNode("div",bE,[T[32]||(T[32]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[10]||(T[10]=_=>S.value.totalRotation=_),onChange:T[11]||(T[11]=_=>v("totalRotation")),step:"1"},null,544),[[d.vModelText,S.value.totalRotation,void 0,{number:!0}]])]),T[37]||(T[37]=d.createElementVNode("div",{class:"separator"},null,-1)),T[38]||(T[38]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",vE,[T[33]||(T[33]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[12]||(T[12]=_=>S.value.lonlat=_),step:"0.000001"},null,512),[[d.vModelText,S.value.lonlat,void 0,{number:!0}]])]),d.createElementVNode("div",IE,[T[34]||(T[34]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[13]||(T[13]=_=>S.value.heightDistance=_),step:"0.1"},null,512),[[d.vModelText,S.value.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",xE,[T[35]||(T[35]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[14]||(T[14]=_=>S.value.rotation=_),step:"1"},null,512),[[d.vModelText,S.value.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",BE,[d.createElementVNode("button",{onClick:T[15]||(T[15]=_=>B("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:T[16]||(T[16]=_=>B("north"))},"北移"),d.createElementVNode("button",{onClick:T[17]||(T[17]=_=>B("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:T[18]||(T[18]=_=>B("west"))},"西移"),d.createElementVNode("button",{onClick:T[19]||(T[19]=_=>B("south"))},"南移"),d.createElementVNode("button",{onClick:T[20]||(T[20]=_=>B("east"))},"东移"),d.createElementVNode("button",{onClick:T[21]||(T[21]=_=>B("up"))},"上移"),d.createElementVNode("button",{onClick:T[22]||(T[22]=_=>B("down"))},"下移"),d.createElementVNode("button",{onClick:R,class:"primary-btn"},"正北俯视"),d.createElementVNode("button",{onClick:U,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):a.value==="pick"?(d.openBlock(),d.createElementBlock("div",SE,[d.createElementVNode("div",ME,[d.createElementVNode("div",TE,[d.createElementVNode("div",{onClick:T[23]||(T[23]=_=>h.value="BIM"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:h.value==="BIM",style:{"margin-right":"5px"}},null,8,DE),T[39]||(T[39]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"BIM标记点:",-1))]),f.value?(d.openBlock(),d.createElementBlock("div",kE,[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",PE,"未选择"))])]),d.createElementVNode("div",FE,[d.createElementVNode("div",RE,[d.createElementVNode("div",{onClick:T[24]||(T[24]=_=>h.value="MAP"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:h.value==="MAP",style:{"margin-right":"5px"}},null,8,OE),T[40]||(T[40]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"地图标记点:",-1))]),p.value?(d.openBlock(),d.createElementBlock("div",LE,[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",NE,"未选择"))])]),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:M},"调整位置"),d.createElementVNode("button",{onClick:U},"保存")]),T[41]||(T[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",UE,[d.createElementVNode("div",_E,[d.createElementVNode("div",QE,[d.createElementVNode("input",{type:"checkbox",checked:g.value,onChange:P},null,40,HE)]),T[43]||(T[43]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),T[44]||(T[44]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),T[45]||(T[45]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",GE,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(D.value,(_,Y)=>(d.openBlock(),d.createElementBlock("div",{key:_.modelId,class:d.normalizeClass(["list-item",{active:_.modelId===c.value}])},[d.createElementVNode("div",YE,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":$=>_.selected=$},null,8,VE),[[d.vModelCheckbox,_.selected]])]),d.createElementVNode("div",WE,d.toDisplayString(Y+1),1),d.createElementVNode("div",{class:"col-name",title:_.modelName},d.toDisplayString(_.modelName),9,zE),d.createElementVNode("div",jE,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:_.modelId===c.value,onChange:$=>N(_.modelId)},null,40,$E)])],2))),128))])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-3bfda484"]]);function Fi(){return Fi=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var i in t)({}).hasOwnProperty.call(t,i)&&(n[i]=t[i])}return n},Fi.apply(null,arguments)}const KE={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:"下一世纪"},XE={placeholder:"请选择时间",rangePlaceholder:["开始时间","结束时间"]},rc={lang:Fi({placeholder:"请选择日期",yearPlaceholder:"请选择年份",quarterPlaceholder:"请选择季度",monthPlaceholder:"请选择月份",weekPlaceholder:"请选择周",rangePlaceholder:["开始日期","结束日期"],rangeYearPlaceholder:["开始年份","结束年份"],rangeMonthPlaceholder:["开始月份","结束月份"],rangeQuarterPlaceholder:["开始季度","结束季度"],rangeWeekPlaceholder:["开始周","结束周"]},KE),timePickerLocale:Fi({},XE)};rc.lang.ok="确定";var Ri={exports:{}},qE=Ri.exports,ac;function lc(){return ac||(ac=1,(function(n,e){(function(t,i){n.exports=i()})(qE,(function(){var t=1e3,i=6e4,s=36e5,o="millisecond",r="second",l="minute",a="hour",c="day",u="week",h="month",f="quarter",p="year",A="date",C="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|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,E={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 b=["th","st","nd","rd"],w=N%100;return"["+N+(b[(w-20)%10]||b[w]||b[0])+"]"}},I=function(N,b,w){var v=String(N);return!v||v.length>=b?N:""+Array(b+1-v.length).join(w)+N},M={s:I,z:function(N){var b=-N.utcOffset(),w=Math.abs(b),v=Math.floor(w/60),B=w%60;return(b<=0?"+":"-")+I(v,2,"0")+":"+I(B,2,"0")},m:function N(b,w){if(b.date()<w.date())return-N(w,b);var v=12*(w.year()-b.year())+(w.month()-b.month()),B=b.clone().add(v,h),R=w-B<0,U=b.clone().add(v+(R?-1:1),h);return+(-(v+(w-B)/(R?B-U:U-B))||0)},a:function(N){return N<0?Math.ceil(N)||0:Math.floor(N)},p:function(N){return{M:h,y:p,w:u,d:c,D:A,h:a,m:l,s:r,ms:o,Q:f}[N]||String(N||"").toLowerCase().replace(/s$/,"")},u:function(N){return N===void 0}},k="en",S={};S[k]=E;var x="$isDayjsObject",g=function(N){return N instanceof L||!(!N||!N[x])},F=function N(b,w,v){var B;if(!b)return k;if(typeof b=="string"){var R=b.toLowerCase();S[R]&&(B=R),w&&(S[R]=w,B=R);var U=b.split("-");if(!B&&U.length>1)return N(U[0])}else{var O=b.name;S[O]=b,B=O}return!v&&B&&(k=B),B||!v&&k},D=function(N,b){if(g(N))return N.clone();var w=typeof b=="object"?b:{};return w.date=N,w.args=arguments,new L(w)},P=M;P.l=F,P.i=g,P.w=function(N,b){return D(N,{locale:b.$L,utc:b.$u,x:b.$x,$offset:b.$offset})};var L=(function(){function N(w){this.$L=F(w.locale,null,!0),this.parse(w),this.$x=this.$x||w.x||{},this[x]=!0}var b=N.prototype;return b.parse=function(w){this.$d=(function(v){var B=v.date,R=v.utc;if(B===null)return new Date(NaN);if(P.u(B))return new Date;if(B instanceof Date)return new Date(B);if(typeof B=="string"&&!/Z$/i.test(B)){var U=B.match(m);if(U){var O=U[2]-1||0,T=(U[7]||"0").substring(0,3);return R?new Date(Date.UTC(U[1],O,U[3]||1,U[4]||0,U[5]||0,U[6]||0,T)):new Date(U[1],O,U[3]||1,U[4]||0,U[5]||0,U[6]||0,T)}}return new Date(B)})(w),this.init()},b.init=function(){var w=this.$d;this.$y=w.getFullYear(),this.$M=w.getMonth(),this.$D=w.getDate(),this.$W=w.getDay(),this.$H=w.getHours(),this.$m=w.getMinutes(),this.$s=w.getSeconds(),this.$ms=w.getMilliseconds()},b.$utils=function(){return P},b.isValid=function(){return this.$d.toString()!==C},b.isSame=function(w,v){var B=D(w);return this.startOf(v)<=B&&B<=this.endOf(v)},b.isAfter=function(w,v){return D(w)<this.startOf(v)},b.isBefore=function(w,v){return this.endOf(v)<D(w)},b.$g=function(w,v,B){return P.u(w)?this[v]:this.set(B,w)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(w,v){var B=this,R=!!P.u(v)||v,U=P.p(w),O=function(V,j){var X=P.w(B.$u?Date.UTC(B.$y,j,V):new Date(B.$y,j,V),B);return R?X:X.endOf(c)},T=function(V,j){return P.w(B.toDate()[V].apply(B.toDate("s"),(R?[0,0,0,0]:[23,59,59,999]).slice(j)),B)},_=this.$W,Y=this.$M,$=this.$D,J="set"+(this.$u?"UTC":"");switch(U){case p:return R?O(1,0):O(31,11);case h:return R?O(1,Y):O(0,Y+1);case u:var ne=this.$locale().weekStart||0,re=(_<ne?_+7:_)-ne;return O(R?$-re:$+(6-re),Y);case c:case A:return T(J+"Hours",0);case a:return T(J+"Minutes",1);case l:return T(J+"Seconds",2);case r:return T(J+"Milliseconds",3);default:return this.clone()}},b.endOf=function(w){return this.startOf(w,!1)},b.$set=function(w,v){var B,R=P.p(w),U="set"+(this.$u?"UTC":""),O=(B={},B[c]=U+"Date",B[A]=U+"Date",B[h]=U+"Month",B[p]=U+"FullYear",B[a]=U+"Hours",B[l]=U+"Minutes",B[r]=U+"Seconds",B[o]=U+"Milliseconds",B)[R],T=R===c?this.$D+(v-this.$W):v;if(R===h||R===p){var _=this.clone().set(A,1);_.$d[O](T),_.init(),this.$d=_.set(A,Math.min(this.$D,_.daysInMonth())).$d}else O&&this.$d[O](T);return this.init(),this},b.set=function(w,v){return this.clone().$set(w,v)},b.get=function(w){return this[P.p(w)]()},b.add=function(w,v){var B,R=this;w=Number(w);var U=P.p(v),O=function(Y){var $=D(R);return P.w($.date($.date()+Math.round(Y*w)),R)};if(U===h)return this.set(h,this.$M+w);if(U===p)return this.set(p,this.$y+w);if(U===c)return O(1);if(U===u)return O(7);var T=(B={},B[l]=i,B[a]=s,B[r]=t,B)[U]||1,_=this.$d.getTime()+w*T;return P.w(_,this)},b.subtract=function(w,v){return this.add(-1*w,v)},b.format=function(w){var v=this,B=this.$locale();if(!this.isValid())return B.invalidDate||C;var R=w||"YYYY-MM-DDTHH:mm:ssZ",U=P.z(this),O=this.$H,T=this.$m,_=this.$M,Y=B.weekdays,$=B.months,J=B.meridiem,ne=function(j,X,se,oe){return j&&(j[X]||j(v,R))||se[X].slice(0,oe)},re=function(j){return P.s(O%12||12,j,"0")},V=J||function(j,X,se){var oe=j<12?"AM":"PM";return se?oe.toLowerCase():oe};return R.replace(y,(function(j,X){return X||(function(se){switch(se){case"YY":return String(v.$y).slice(-2);case"YYYY":return P.s(v.$y,4,"0");case"M":return _+1;case"MM":return P.s(_+1,2,"0");case"MMM":return ne(B.monthsShort,_,$,3);case"MMMM":return ne($,_);case"D":return v.$D;case"DD":return P.s(v.$D,2,"0");case"d":return String(v.$W);case"dd":return ne(B.weekdaysMin,v.$W,Y,2);case"ddd":return ne(B.weekdaysShort,v.$W,Y,3);case"dddd":return Y[v.$W];case"H":return String(O);case"HH":return P.s(O,2,"0");case"h":return re(1);case"hh":return re(2);case"a":return V(O,T,!0);case"A":return V(O,T,!1);case"m":return String(T);case"mm":return P.s(T,2,"0");case"s":return String(v.$s);case"ss":return P.s(v.$s,2,"0");case"SSS":return P.s(v.$ms,3,"0");case"Z":return U}return null})(j)||U.replace(":","")}))},b.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},b.diff=function(w,v,B){var R,U=this,O=P.p(v),T=D(w),_=(T.utcOffset()-this.utcOffset())*i,Y=this-T,$=function(){return P.m(U,T)};switch(O){case p:R=$()/12;break;case h:R=$();break;case f:R=$()/3;break;case u:R=(Y-_)/6048e5;break;case c:R=(Y-_)/864e5;break;case a:R=Y/s;break;case l:R=Y/i;break;case r:R=Y/t;break;default:R=Y}return B?R:P.a(R)},b.daysInMonth=function(){return this.endOf(h).$D},b.$locale=function(){return S[this.$L]},b.locale=function(w,v){if(!w)return this.$L;var B=this.clone(),R=F(w,v,!0);return R&&(B.$L=R),B},b.clone=function(){return P.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},N})(),G=L.prototype;return D.prototype=G,[["$ms",o],["$s",r],["$m",l],["$H",a],["$W",c],["$M",h],["$y",p],["$D",A]].forEach((function(N){G[N[1]]=function(b){return this.$g(b,N[0],N[1])}})),D.extend=function(N,b){return N.$i||(N(b,L,D),N.$i=!0),D},D.locale=F,D.isDayjs=g,D.unix=function(N){return D(1e3*N)},D.en=S[k],D.Ls=S,D.p={},D}))})(Ri)),Ri.exports}var JE=lc();const ze=tn(JE);var Oi={exports:{}},ZE=Oi.exports,cc;function ew(){return cc||(cc=1,(function(n,e){(function(t,i){n.exports=i(lc())})(ZE,(function(t){function i(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var s=i(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,l){return l==="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,l){var a=100*r+l;return a<600?"凌晨":a<900?"早上":a<1100?"上午":a<1300?"中午":a<1800?"下午":"晚上"}};return s.default.locale(o,null,!0),o}))})(Oi)),Oi.exports}ew();var Li={exports:{}},tw=Li.exports,dc;function nw(){return dc||(dc=1,(function(n,e){(function(t,i){n.exports=i()})(tw,(function(){return function(t,i,s){var o=i.prototype,r=function(h){return h&&(h.indexOf?h:h.s)},l=function(h,f,p,A,C){var m=h.name?h:h.$locale(),y=r(m[f]),E=r(m[p]),I=y||E.map((function(k){return k.slice(0,A)}));if(!C)return I;var M=m.weekStart;return I.map((function(k,S){return I[(S+(M||0))%7]}))},a=function(){return s.Ls[s.locale()]},c=function(h,f){return h.formats[f]||(function(p){return p.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(A,C,m){return C||m.slice(1)}))})(h.formats[f.toUpperCase()])},u=function(){var h=this;return{months:function(f){return f?f.format("MMMM"):l(h,"months")},monthsShort:function(f){return f?f.format("MMM"):l(h,"monthsShort","months",3)},firstDayOfWeek:function(){return h.$locale().weekStart||0},weekdays:function(f){return f?f.format("dddd"):l(h,"weekdays")},weekdaysMin:function(f){return f?f.format("dd"):l(h,"weekdaysMin","weekdays",2)},weekdaysShort:function(f){return f?f.format("ddd"):l(h,"weekdaysShort","weekdays",3)},longDateFormat:function(f){return c(h.$locale(),f)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};o.localeData=function(){return u.bind(this)()},s.localeData=function(){var h=a();return{firstDayOfWeek:function(){return h.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(f){return c(h,f)},meridiem:h.meridiem,ordinal:h.ordinal}},s.months=function(){return l(a(),"months")},s.monthsShort=function(){return l(a(),"monthsShort","months",3)},s.weekdays=function(h){return l(a(),"weekdays",null,null,h)},s.weekdaysShort=function(h){return l(a(),"weekdaysShort","weekdays",3,h)},s.weekdaysMin=function(h){return l(a(),"weekdaysMin","weekdays",2,h)}}}))})(Li)),Li.exports}var iw=nw();const sw=tn(iw);var Ni={exports:{}},ow=Ni.exports,uc;function rw(){return uc||(uc=1,(function(n,e){(function(t,i){n.exports=i()})(ow,(function(){return function(t,i){i.prototype.weekday=function(s){var o=this.$locale().weekStart||0,r=this.$W,l=(r<o?r+7:r)-o;return this.$utils().u(s)?l:this.subtract(l,"day").add(s,"day")}}}))})(Ni)),Ni.exports}var aw=rw();const lw=tn(aw);var Ui={exports:{}},cw=Ui.exports,hc;function dw(){return hc||(hc=1,(function(n,e){(function(t,i){n.exports=i()})(cw,(function(){var t="week",i="year";return function(s,o,r){var l=o.prototype;l.week=function(a){if(a===void 0&&(a=null),a!==null)return this.add(7*(a-this.week()),"day");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var u=r(this).startOf(i).add(1,i).date(c),h=r(this).endOf(t);if(u.isBefore(h))return 1}var f=r(this).startOf(i).date(c).startOf(t).subtract(1,"millisecond"),p=this.diff(f,t,!0);return p<0?r(this).startOf("week").week():Math.ceil(p)},l.weeks=function(a){return a===void 0&&(a=null),this.week(a)}}}))})(Ui)),Ui.exports}var uw=dw();const hw=tn(uw);var _i={exports:{}},fw=_i.exports,fc;function pw(){return fc||(fc=1,(function(n,e){(function(t,i){n.exports=i()})(fw,(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"},i=/(\[[^[]*\])|([-_:/.,()\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?/,l=/\d*[^-_:/,()\s\d]+/,a={},c=function(m){return(m=+m)+(m>68?1900:2e3)},u=function(m){return function(y){this[m]=+y}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var E=y.match(/([+-]|\d\d)/g),I=60*E[1]+(+E[2]||0);return I===0?0:E[0]==="+"?-I:I})(m)}],f=function(m){var y=a[m];return y&&(y.indexOf?y:y.s.concat(y.f))},p=function(m,y){var E,I=a.meridiem;if(I){for(var M=1;M<=24;M+=1)if(m.indexOf(I(M,0,y))>-1){E=M>12;break}}else E=m===(y?"pm":"PM");return E},A={A:[l,function(m){this.afternoon=p(m,!1)}],a:[l,function(m){this.afternoon=p(m,!0)}],Q:[s,function(m){this.month=3*(m-1)+1}],S:[s,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[r,u("seconds")],ss:[r,u("seconds")],m:[r,u("minutes")],mm:[r,u("minutes")],H:[r,u("hours")],h:[r,u("hours")],HH:[r,u("hours")],hh:[r,u("hours")],D:[r,u("day")],DD:[o,u("day")],Do:[l,function(m){var y=a.ordinal,E=m.match(/\d+/);if(this.day=E[0],y)for(var I=1;I<=31;I+=1)y(I).replace(/\[|\]/g,"")===m&&(this.day=I)}],w:[r,u("week")],ww:[o,u("week")],M:[r,u("month")],MM:[o,u("month")],MMM:[l,function(m){var y=f("months"),E=(f("monthsShort")||y.map((function(I){return I.slice(0,3)}))).indexOf(m)+1;if(E<1)throw new Error;this.month=E%12||E}],MMMM:[l,function(m){var y=f("months").indexOf(m)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[o,function(m){this.year=c(m)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function C(m){var y,E;y=m,E=a&&a.formats;for(var I=(m=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(D,P,L){var G=L&&L.toUpperCase();return P||E[L]||t[L]||E[G].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(N,b,w){return b||w.slice(1)}))}))).match(i),M=I.length,k=0;k<M;k+=1){var S=I[k],x=A[S],g=x&&x[0],F=x&&x[1];I[k]=F?{regex:g,parser:F}:S.replace(/^\[|\]$/g,"")}return function(D){for(var P={},L=0,G=0;L<M;L+=1){var N=I[L];if(typeof N=="string")G+=N.length;else{var b=N.regex,w=N.parser,v=D.slice(G),B=b.exec(v)[0];w.call(P,B),D=D.replace(B,"")}}return(function(R){var U=R.afternoon;if(U!==void 0){var O=R.hours;U?O<12&&(R.hours+=12):O===12&&(R.hours=0),delete R.afternoon}})(P),P}}return function(m,y,E){E.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(c=m.parseTwoDigitYear);var I=y.prototype,M=I.parse;I.parse=function(k){var S=k.date,x=k.utc,g=k.args;this.$u=x;var F=g[1];if(typeof F=="string"){var D=g[2]===!0,P=g[3]===!0,L=D||P,G=g[2];P&&(G=g[2]),a=this.$locale(),!D&&G&&(a=E.Ls[G]),this.$d=(function(v,B,R,U){try{if(["x","X"].indexOf(B)>-1)return new Date((B==="X"?1e3:1)*v);var O=C(B)(v),T=O.year,_=O.month,Y=O.day,$=O.hours,J=O.minutes,ne=O.seconds,re=O.milliseconds,V=O.zone,j=O.week,X=new Date,se=Y||(T||_?1:X.getDate()),oe=T||X.getFullYear(),ae=0;T&&!_||(ae=_>0?_-1:X.getMonth());var Ce,le=$||0,Pe=J||0,ct=ne||0,$e=re||0;return V?new Date(Date.UTC(oe,ae,se,le,Pe,ct,$e+60*V.offset*1e3)):R?new Date(Date.UTC(oe,ae,se,le,Pe,ct,$e)):(Ce=new Date(oe,ae,se,le,Pe,ct,$e),j&&(Ce=U(Ce).week(j).toDate()),Ce)}catch{return new Date("")}})(S,F,x,E),this.init(),G&&G!==!0&&(this.$L=this.locale(G).$L),L&&S!=this.format(F)&&(this.$d=new Date("")),a={}}else if(F instanceof Array)for(var N=F.length,b=1;b<=N;b+=1){g[1]=F[b-1];var w=E.apply(this,g);if(w.isValid()){this.$d=w.$d,this.$L=w.$L,this.init();break}b===N&&(this.$d=new Date(""))}else M.call(this,k)}}}))})(_i)),_i.exports}var gw=pw();const mw=tn(gw),Aw={class:"setting-panel"},yw={class:"tabs-header"},Cw={class:"tab-content"},Ew={key:0,class:"section"},ww={class:"setting-item"},bw={class:"setting-item"},vw={class:"setting-item"},Iw={key:1,class:"section"},xw={class:"tabs-header",style:{"margin-bottom":"8px"}},Bw={key:0},Sw={class:"setting-item column"},Mw={class:"setting-item column"},Tw={class:"setting-item"},Dw={key:1},kw={class:"setting-item column"},Pw={class:"setting-item column",style:{"margin-top":"12px","border-top":"1px solid rgba(255,255,255,0.1)","padding-top":"8px"}},Fw={class:"search-box"},Rw={key:2,class:"section"},Ow={class:"setting-item"},Lw={key:0,class:"setting-item column"},Nw={class:"sub-label"},Uw={class:"setting-item"},_w={class:"setting-item"},Qw={class:"setting-item column"},Hw={class:"setting-item column"},Gw={class:"sub-label"},Yw={class:"setting-item column"},Vw={class:"sub-label"},Ww={class:"setting-item column"},zw={class:"sub-label"},jw={class:"setting-item column"},$w={style:{display:"flex",gap:"8px","margin-bottom":"8px"}},Kw=["onClick","title"],Xw={style:{display:"flex",gap:"8px","align-items":"center"}},qw={key:3,class:"section"},Jw={class:"setting-item"},Zw={class:"setting-item column"},Gn=Ue(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(n,{emit:e}){ze.locale("zh-cn"),ze.extend(sw),ze.extend(lw),ze.extend(hw),ze.extend(mw);const t=me.Switch,i=me.Radio.Group,s=me.Radio,o=me.Input,r=me.Slider,l=me.Select,a=me.Select.Option,c=me.DatePicker,u=n,h=e,f=d.inject("leitingMethods"),p=d.computed({get:()=>u.open!==void 0?u.open:u.visible,set:b=>{h("update:visible",b),h("update:open",b)}}),A=d.ref("GIS"),C=d.reactive({globe:!1,terrain:!1,depthTest:!1}),m=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"}),y=d.reactive({shadows:!1,shadowDarkness:.7,environmentMap:!1,ambientOcclusion:!1,time:ze("2025-06-22 10:00"),brightness:1.5,contrast:1,saturation:1,backgroundColor:"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)"}),E=d.reactive({collision:!1,habit:0}),I=b=>{b&&(b.globe!==void 0&&(C.globe=b.globe),b.terrain!==void 0&&(C.terrain=b.terrain),b.depthTest!==void 0&&(C.depthTest=b.depthTest),b.mapProvider!==void 0&&(m.provider=b.mapProvider),b.tiandituLayerType!==void 0&&(m.tianditu.layerType=b.tiandituLayerType),b.tiandituShowLabel!==void 0&&(m.tianditu.showLabel=b.tiandituShowLabel),b.arcgisUrl!==void 0&&(m.arcgis.url=b.arcgisUrl),b.shadows!==void 0&&(y.shadows=b.shadows),b.shadowDarkness!==void 0&&(y.shadowDarkness=b.shadowDarkness),b.environmentMap!==void 0&&(y.environmentMap=b.environmentMap),b.ambientOcclusion!==void 0&&(y.ambientOcclusion=b.ambientOcclusion),b.time!==void 0&&(typeof b.time=="number"?y.time=ze().startOf("day").add(b.time,"hour"):y.time=ze(b.time)),b.brightness!==void 0&&(y.brightness=b.brightness),b.contrast!==void 0&&(y.contrast=b.contrast),b.saturation!==void 0&&(y.saturation=b.saturation),b.backgroundColor!==void 0&&(y.backgroundColor=b.backgroundColor),b.collision!==void 0&&(E.collision=b.collision),b.mouseHabit!==void 0&&(E.habit=b.mouseHabit))};d.watch(()=>u.initialConfig,b=>{I(b)},{deep:!0,immediate:!0});const M=["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%)"],k=[{label:"全球影像地图服务(墨卡托)",value:"img_w"},{label:"全球影像地图服务(经纬度)",value:"img_c"},{label:"全球矢量地图服务(墨卡托)",value:"vec_w"},{label:"全球矢量地图服务(经纬度)",value:"vec_c"},{label:"全球地形晕渲服务(墨卡托)",value:"ter_w"},{label:"全球地形晕渲服务(经纬度)",value:"ter_c"}],S=()=>{const b=m.provider,w={};b==="tianditu"?(w.token=m.tianditu.token,w.layerType=m.tianditu.layerType,w.showAnnotation=m.tianditu.showLabel):b==="arcgis"&&(w.url=m.arcgis.url),f.value?.changeBaseMap?.(b,w)};d.watch(()=>m.provider,S),d.watch(()=>m.tianditu.layerType,S),d.watch(()=>m.tianditu.showLabel,S),d.watch(()=>m.tianditu.token,hs(S,1e3)),d.watch(()=>m.arcgis.url,hs(S,1e3)),d.onMounted(()=>{u.tiandituToken&&(m.tianditu.token=u.tiandituToken)}),d.watch(()=>C.globe,b=>f.value?.setGlobeEnvironmentVisible?.(b)),d.watch(()=>C.terrain,b=>f.value?.setTerrainEnable?.(b)),d.watch(()=>C.depthTest,b=>f.value?.setDepthTestEnable?.(b)),d.watch(()=>f?.value,b=>{if(b){if(b.getConfigure=()=>({globe:C.globe,terrain:C.terrain,depthTest:C.depthTest,mapProvider:m.provider,tiandituLayerType:m.tianditu.layerType,tiandituShowLabel:m.tianditu.showLabel,arcgisUrl:m.arcgis.url,shadows:y.shadows,shadowDarkness:y.shadowDarkness,environmentMap:y.environmentMap,ambientOcclusion:y.ambientOcclusion,time:ze.isDayjs(y.time)?y.time.format("YYYY-MM-DD HH:mm"):y.time,brightness:y.brightness,contrast:y.contrast,saturation:y.saturation,backgroundColor:y.backgroundColor,collision:E.collision,mouseHabit:E.habit}),b.setConfigure=w=>{I(w)},b.setBackgroundColor&&y.backgroundColor&&b.setBackgroundColor(y.backgroundColor),b.setGlobeEnvironmentVisible&&b.setGlobeEnvironmentVisible(C.globe),b.setShadowsEnable&&b.setShadowsEnable(y.shadows),b.setShadowDarkness&&b.setShadowDarkness(y.shadowDarkness),b.setEnvironmentMapEnable&&b.setEnvironmentMapEnable(y.environmentMap),b.setAmbientOcclusion&&b.setAmbientOcclusion(y.ambientOcclusion),b.setTime){const w=ze.isDayjs(y.time)?y.time.toDate():new Date;b.setTime(w)}b.setModelBrightness&&b.setModelBrightness(y.brightness),b.setCollisionDetection&&b.setCollisionDetection(E.collision),b.setMouseHabit&&b.setMouseHabit(E.habit),b.changeBaseMap&&m.baseMap&&b.changeBaseMap(m.baseMap,{token:m.tianditu.token,layerType:m.tianditu.layerType,showAnnotation:m.tianditu.showLabel,url:m.arcgis.url})}},{immediate:!0});const x=d.computed({get:()=>{const b=y.backgroundColor;return/^#[0-9A-Fa-f]{6}$/.test(b)?b:"#ffffff"},set:b=>{y.backgroundColor=b}}),g=d.ref(""),F=d.ref(!1),D=d.ref([]);d.watch(()=>C.globe,b=>f.value?.setGlobeEnvironmentVisible?.(b)),d.watch(()=>C.terrain,b=>f.value?.setTerrainEnable?.(b)),d.watch(()=>m.baseMap,b=>{f.value?.changeBaseMap?.(b,{token:u.tiandituToken})}),d.watch(()=>y.shadows,b=>f.value?.setShadowsEnable?.(b)),d.watch(()=>y.shadowDarkness,b=>f.value?.setShadowDarkness?.(b)),d.watch(()=>y.environmentMap,b=>f.value?.setEnvironmentMapEnable?.(b)),d.watch(()=>y.ambientOcclusion,b=>f.value?.setAmbientOcclusion?.(b)),d.watch(()=>y.time,b=>{const w=ze.isDayjs(b)?b.toDate():new Date;f.value?.setTime?.(w)}),d.watch(()=>[y.brightness,y.contrast,y.saturation],([b,w,v])=>{const B=f.value;B?.setModelColorAdjustment?B.setModelColorAdjustment({brightness:b,contrast:w,saturation:v}):B?.setModelBrightness?.(b)}),d.watch(()=>y.backgroundColor,b=>{if(f.value?.setBackgroundColor)f.value.setBackgroundColor(b);else{const w=document.querySelector(".cesium-viewer");w&&(w.style.background=b)}}),d.watch(()=>E.collision,b=>f.value?.setCollisionDetection?.(b)),d.watch(()=>E.habit,b=>f.value?.setMouseHabit?.(b));const P=b=>{if(b?.pois&&Array.isArray(b.pois)&&b.pois.length>0){const w=b.pois[0],v=w.lonlat.split(/[, ]/).map(Number);if(v.length>=2&&!isNaN(v[0])&&!isNaN(v[1]))return{name:w.name,lon:v[0],lat:v[1],raw:w}}if(b?.area&&b.area.lonlat){const w=b.area,v=w.lonlat.split(/[, ]/).map(Number);if(v.length>=2&&!isNaN(v[0])&&!isNaN(v[1]))return{name:w.name,lon:v[0],lat:v[1],raw:w}}return null},G=hs(async()=>{const b=(g.value||"").trim();if(!b)return;const w=u.tiandituToken||"c25f14fb6bd4397cf8fe45144ff768d6";F.value=!0,D.value=[];try{if(f.value?.searchLocation){const v=await f.value.searchLocation(b,w),B=P(v);B&&(D.value=[B],ge.success(`找到:${B.name||""}`),f.value.flyTo(B.lon,B.lat,5e3))}else{const B=`https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(JSON.stringify({keyWord:b,level:12,mapBound:"-180,-90,180,90",queryType:1,start:0,count:10}))}&type=query&tk=${encodeURIComponent(w)}`,R=await fetch(B);if(!R.ok)throw new Error(`HTTP ${R.status}`);const U=await R.json(),O=P(U);O&&(D.value=[O],ge.success(`找到:${O.name||""}`),f.value?.flyTo?.(O.lon,O.lat,5e3))}}catch(v){console.error("tianditu search error",v)}finally{F.value=!1}},800);d.watch(g,()=>{G()});const N=()=>{p.value=!1,h("close")};return d.onMounted(()=>{}),(b,w)=>(d.openBlock(),d.createBlock(Re,{visible:p.value,title:"设置","full-height":n.fullHeight,onClose:N,"onUpdate:visible":w[26]||(w[26]=v=>p.value=v)},{default:d.withCtx(()=>[d.createElementVNode("div",Aw,[d.createElementVNode("div",yw,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="GIS"}]),onClick:w[0]||(w[0]=v=>A.value="GIS")},"GIS",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="MAP"}]),onClick:w[1]||(w[1]=v=>A.value="MAP")},"地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="RENDER"}]),onClick:w[2]||(w[2]=v=>A.value="RENDER")},"渲染",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:A.value==="MOUSE"}]),onClick:w[3]||(w[3]=v=>A.value="MOUSE")},"鼠标",2)]),d.createElementVNode("div",Cw,[A.value==="GIS"?(d.openBlock(),d.createElementBlock("div",Ew,[d.createElementVNode("div",ww,[w[27]||(w[27]=d.createElementVNode("span",null,"地球 (含大气/日月/星空)",-1)),d.createVNode(d.unref(t),{checked:C.globe,"onUpdate:checked":w[4]||(w[4]=v=>C.globe=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",bw,[w[28]||(w[28]=d.createElementVNode("span",null,"地形 (高程)",-1)),d.createVNode(d.unref(t),{checked:C.terrain,"onUpdate:checked":w[5]||(w[5]=v=>C.terrain=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",vw,[w[29]||(w[29]=d.createElementVNode("span",null,"地形遮挡",-1)),d.createVNode(d.unref(t),{checked:C.depthTest,"onUpdate:checked":w[6]||(w[6]=v=>C.depthTest=v),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),A.value==="MAP"?(d.openBlock(),d.createElementBlock("div",Iw,[d.createElementVNode("div",xw,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.provider==="tianditu"}]),onClick:w[7]||(w[7]=v=>m.provider="tianditu")},"天地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.provider==="arcgis"}]),onClick:w[8]||(w[8]=v=>m.provider="arcgis")},"ArcGIS",2)]),m.provider==="tianditu"?(d.openBlock(),d.createElementBlock("div",Bw,[d.createElementVNode("div",Sw,[w[30]||(w[30]=d.createElementVNode("div",{class:"sub-label"},"Token",-1)),d.createVNode(d.unref(o),{value:m.tianditu.token,"onUpdate:value":w[9]||(w[9]=v=>m.tianditu.token=v),size:"small",placeholder:"输入天地图Token"},null,8,["value"])]),d.createElementVNode("div",Mw,[w[31]||(w[31]=d.createElementVNode("div",{class:"sub-label"},"地图风格",-1)),d.createVNode(d.unref(l),{value:m.tianditu.layerType,"onUpdate:value":w[10]||(w[10]=v=>m.tianditu.layerType=v),size:"small",style:{width:"100%"}},{default:d.withCtx(()=>[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(k,v=>d.createVNode(d.unref(a),{key:v.value,value:v.value},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(v.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),d.createElementVNode("div",Tw,[w[32]||(w[32]=d.createElementVNode("span",null,"叠加注记",-1)),d.createVNode(d.unref(t),{checked:m.tianditu.showLabel,"onUpdate:checked":w[11]||(w[11]=v=>m.tianditu.showLabel=v),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),m.provider==="arcgis"?(d.openBlock(),d.createElementBlock("div",Dw,[d.createElementVNode("div",kw,[w[33]||(w[33]=d.createElementVNode("div",{class:"sub-label"},"服务地址",-1)),d.createVNode(d.unref(o),{value:m.arcgis.url,"onUpdate:value":w[12]||(w[12]=v=>m.arcgis.url=v),size:"small",placeholder:"输入ArcGIS MapServer地址"},null,8,["value"])])])):d.createCommentVNode("",!0),d.createElementVNode("div",Pw,[w[34]||(w[34]=d.createElementVNode("div",{class:"sub-label"},"位置搜索 (天地图)",-1)),d.createElementVNode("div",Fw,[d.createVNode(d.unref(o),{value:g.value,"onUpdate:value":w[13]||(w[13]=v=>g.value=v),placeholder:"输入地名搜索",size:"small","allow-clear":""},null,8,["value"])])])])):d.createCommentVNode("",!0),A.value==="RENDER"?(d.openBlock(),d.createElementBlock("div",Rw,[d.createElementVNode("div",Ow,[w[35]||(w[35]=d.createElementVNode("span",null,"阴影",-1)),d.createVNode(d.unref(t),{checked:y.shadows,"onUpdate:checked":w[14]||(w[14]=v=>y.shadows=v),size:"small"},null,8,["checked"])]),y.shadows?(d.openBlock(),d.createElementBlock("div",Lw,[d.createElementVNode("div",Nw,"阴影暗度 ("+d.toDisplayString(y.shadowDarkness.toFixed(2))+")",1),d.createVNode(d.unref(r),{value:y.shadowDarkness,"onUpdate:value":w[15]||(w[15]=v=>y.shadowDarkness=v),min:0,max:1,step:.05,size:"small"},null,8,["value"])])):d.createCommentVNode("",!0),d.createElementVNode("div",Uw,[w[36]||(w[36]=d.createElementVNode("span",null,"环境贴图 (HDR)",-1)),d.createVNode(d.unref(t),{checked:y.environmentMap,"onUpdate:checked":w[16]||(w[16]=v=>y.environmentMap=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",_w,[w[37]||(w[37]=d.createElementVNode("span",null,"环境光遮蔽 (AO)",-1)),d.createVNode(d.unref(t),{checked:y.ambientOcclusion,"onUpdate:checked":w[17]||(w[17]=v=>y.ambientOcclusion=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Qw,[w[38]||(w[38]=d.createElementVNode("div",{class:"sub-label"},"日期时间",-1)),d.createVNode(d.unref(c),{value:y.time,"onUpdate:value":w[18]||(w[18]=v=>y.time=v),"show-time":"",locale:d.unref(rc),format:"YYYY-MM-DD HH:mm",size:"small",style:{width:"100%"}},null,8,["value","locale"])]),d.createElementVNode("div",Hw,[d.createElementVNode("div",Gw,"模型亮度 ("+d.toDisplayString(y.brightness.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:y.brightness,"onUpdate:value":w[19]||(w[19]=v=>y.brightness=v),min:0,max:5,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Yw,[d.createElementVNode("div",Vw,"模型对比度 ("+d.toDisplayString(y.contrast.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:y.contrast,"onUpdate:value":w[20]||(w[20]=v=>y.contrast=v),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Ww,[d.createElementVNode("div",zw,"模型饱和度 ("+d.toDisplayString(y.saturation.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:y.saturation,"onUpdate:value":w[21]||(w[21]=v=>y.saturation=v),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",jw,[w[39]||(w[39]=d.createElementVNode("div",{class:"sub-label"},"背景颜色",-1)),d.createElementVNode("div",$w,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(M,(v,B)=>d.createElementVNode("div",{key:B,style:d.normalizeStyle({background:v,width:"32px",height:"24px",borderRadius:"2px",cursor:"pointer",border:"1px solid #d9d9d9",flexShrink:0}),onClick:R=>y.backgroundColor=v,title:"预设 "+(B+1)},null,12,Kw)),64))]),d.createElementVNode("div",Xw,[d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":w[22]||(w[22]=v=>x.value=v),style:{width:"40px",height:"24px",padding:"0",border:"1px solid #d9d9d9"}},null,512),[[d.vModelText,x.value]]),d.createVNode(d.unref(o),{value:y.backgroundColor,"onUpdate:value":w[23]||(w[23]=v=>y.backgroundColor=v),size:"small",style:{flex:"1"},placeholder:"CSS 颜色值"},null,8,["value"])])])])):d.createCommentVNode("",!0),A.value==="MOUSE"?(d.openBlock(),d.createElementBlock("div",qw,[d.createElementVNode("div",Jw,[w[40]||(w[40]=d.createElementVNode("span",null,"碰撞检测",-1)),d.createVNode(d.unref(t),{checked:E.collision,"onUpdate:checked":w[24]||(w[24]=v=>E.collision=v),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Zw,[w[43]||(w[43]=d.createElementVNode("div",{class:"sub-label"},"操作习惯",-1)),d.createVNode(d.unref(i),{value:E.habit,"onUpdate:value":w[25]||(w[25]=v=>E.habit=v),size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(s),{value:0},{default:d.withCtx(()=>[...w[41]||(w[41]=[d.createTextVNode("默认 (中键旋转)",-1)])]),_:1}),d.createVNode(d.unref(s),{value:1},{default:d.withCtx(()=>[...w[42]||(w[42]=[d.createTextVNode("习惯1 (左键旋转)",-1)])]),_:1})]),_:1},8,["value"])])])):d.createCommentVNode("",!0)])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-1ed17be9"]]),eb={class:"cad-layer-panel"},tb={class:"layer-list-container"},nb={class:"list-header"},ib={class:"col-check"},sb=["checked"],ob={class:"list-body"},rb={class:"col-check"},ab=["checked","onChange"],lb={class:"col-index"},cb=["title"],db={class:"col-color"},ub=["value"],hb={key:0,class:"empty-text"},fb=Ue(d.defineComponent({__name:"LeitingCadLayer",props:{visible:{type:Boolean,default:!1},currentModelId:{type:String,default:""}},emits:["update:visible","handleCloseCardByCadCard"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(""),r=d.ref([]),l=()=>{s.value&&s.value.getDxfModels&&(r.value=s.value.getDxfModels().map(E=>({modelId:E.modelId,modelName:E.modelName}))||[])},a=d.computed(()=>r.value.map(E=>({value:E.modelId,label:E.modelName}))),c=d.ref([]),u=d.ref([]),h=d.computed(()=>c.value.length>0&&u.value.length===c.value.length),f=({modelId:E})=>{if(c.value=[],u.value=[],s.value&&s.value.getDxfLayers){const I=s.value.getDxfLayers({modelId:E});I&&Object.keys(I).forEach((M,k)=>{I[M].length&&(c.value.push({index:k+1,layerName:M,layerColor:I[M][0].color||"#ffffff",key:M}),u.value.push(M))})}},p=E=>{o.value=E,f({modelId:E})},A=E=>{E.target.checked?u.value=c.value.map(M=>M.key):u.value=[],m()},C=(E,I)=>{I.target.checked?u.value.includes(E)||u.value.push(E):u.value=u.value.filter(k=>k!==E),m()},m=()=>{if(s.value&&s.value.showDxfLayer&&(s.value.showDxfLayer({modelId:o.value,show:!0,layers:u.value}),s.value.getDxfLayers)){const E=s.value.getDxfLayers({modelId:o.value});if(E){const I=Object.keys(E).filter(M=>!u.value.includes(M));s.value.showDxfLayer({modelId:o.value,show:!1,layers:I})}}},y=()=>{i("update:visible",!1),i("handleCloseCardByCadCard")};return d.watch(()=>t.visible,E=>{E&&(l(),t.currentModelId?(o.value=t.currentModelId,f({modelId:t.currentModelId})):a.value.length>0&&(o.value=a.value[0]?.value,f({modelId:o.value})))}),d.watch(()=>t.currentModelId,E=>{E&&t.visible&&(o.value=E,f({modelId:E}))}),(E,I)=>(d.openBlock(),d.createBlock(Re,{visible:n.visible,title:"CAD图层","onUpdate:visible":I[3]||(I[3]=M=>E.$emit("update:visible",M)),onClose:y,width:360,align:"right","initial-position":{x:0,y:60}},{"header-extra":d.withCtx(()=>[d.createElementVNode("div",{class:"header-select-container",onMousedown:I[2]||(I[2]=d.withModifiers(()=>{},["stop"]))},[I[4]||(I[4]=d.createElementVNode("span",{class:"header-label"},"图纸:",-1)),d.createVNode(d.unref(me.Select),{value:o.value,"onUpdate:value":I[0]||(I[0]=M=>o.value=M),options:a.value,onChange:I[1]||(I[1]=M=>p(M)),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",eb,[d.createElementVNode("div",tb,[d.createElementVNode("div",nb,[d.createElementVNode("div",ib,[d.createElementVNode("input",{type:"checkbox",checked:h.value,onChange:A},null,40,sb)]),I[5]||(I[5]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),I[6]||(I[6]=d.createElementVNode("div",{class:"col-name"},"图层名称",-1)),I[7]||(I[7]=d.createElementVNode("div",{class:"col-color"},"颜色",-1))]),d.createElementVNode("div",ob,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,M=>(d.openBlock(),d.createElementBlock("div",{key:M.key,class:"list-item"},[d.createElementVNode("div",rb,[d.createElementVNode("input",{type:"checkbox",checked:u.value.includes(M.key),onChange:k=>C(M.key,k)},null,40,ab)]),d.createElementVNode("div",lb,d.toDisplayString(M.index),1),d.createElementVNode("div",{class:"col-name",title:M.layerName},d.toDisplayString(M.layerName),9,cb),d.createElementVNode("div",db,[d.createElementVNode("input",{type:"color",value:M.layerColor,disabled:""},null,8,ub)])]))),128)),c.value.length===0?(d.openBlock(),d.createElementBlock("div",hb,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-a4db4977"]]),pb={class:"adjust-panel"},gb={class:"control-panel"},mb={class:"form-item"},Ab={class:"radio-group"},yb={class:"form-item"},Cb=["title"],Eb={class:"param-row"},wb=["step"],bb={class:"param-row"},vb=["step"],Ib={class:"param-row"},xb=["step"],Bb={class:"param-row"},Sb=["step"],Mb={class:"param-row"},Tb=["step"],Db={class:"param-row"},kb=["step"],Pb={class:"param-row"},Fb=["step"],Rb={class:"button-grid"},Ob={key:1,class:"pick-mode-ui"},Lb=["onClick"],Nb=["checked"],Ub={style:{"font-size":"12px",color:"#aaa","padding-left":"10px"}},_b={class:"param-row"},Qb={style:{width:"40px"}},Hb=["onUpdate:modelValue"],Gb={class:"param-row"},Yb={style:{width:"40px"}},Vb=["onUpdate:modelValue"],Wb={class:"param-row"},zb={style:{width:"40px"}},jb=["onUpdate:modelValue"],$b={class:"list-panel"},Kb={class:"list-header"},Xb={class:"col-check"},qb=["checked"],Jb={class:"list-body"},Zb={class:"col-check"},ev=["onUpdate:modelValue"],tv={class:"col-index"},nv=["title"],iv={class:"col-main"},sv=["checked","onChange"],ov={key:0,style:{padding:"10px","text-align":"center",color:"#999"}},rv=Ue(d.defineComponent({__name:"LeitingCadPosition",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","handleSavingByCadCard","clearBimPointList","save"],setup(n,{expose:e,emit:t}){const i=n,s=t,o=d.inject("leitingMethods"),r=d.ref([]),l=d.ref(""),a=d.computed(()=>r.value.length>0&&r.value.every(w=>w.selected)),c=d.ref("param"),u=d.ref("bimPoint1"),h=d.ref(null),f=d.ref("bimPoint1"),p=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}}),A=d.ref(1e-6),C=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}),m=d.computed(()=>{const w=r.value.find(v=>v.modelId===l.value);return w?w.modelName:""}),y=()=>{s("update:visible",!1)},E=()=>(!h.value&&o?.value?.getViewer&&o?.value?.getCesium&&(h.value=new oc(o.value.getViewer(),o.value.getCesium())),h.value),I=()=>{E()?.clearMarkers(),p.bimPoint1.longitude=void 0,p.bimPoint1.latitude=void 0,p.bimPoint1.height=void 0,p.bimPoint2.longitude=void 0,p.bimPoint2.latitude=void 0,p.bimPoint2.height=void 0},M=w=>{const v=u.value,B=p[v];if(B){B.longitude=w.longitude,B.latitude=w.latitude,B.height=w.height;const R=v==="bimPoint1"?"BIM":"MAP";E()?.addMarker(R,w),ge.success(`${B.type}已添加`)}},k=()=>{E()?.registerPickHandler(w=>{M(w)})},S=()=>{E()?.destroyPickHandler()},x=w=>{c.value=w,w!=="pick"&&s("clearBimPointList")};d.watch(()=>c.value,w=>{w==="pick"?k():S()}),d.onUnmounted(()=>{S()});const g=()=>{if(!o?.value?.getDxfModels)return;const w=o.value.getDxfModels();if(Array.isArray(w)?r.value=w.map(v=>({modelId:v.modelId,modelName:v.modelName,formData:v.formData||{},selected:!1,tileset:v})):r.value=[],r.value.length>0){const v=o.value.getCadModelId?o.value.getCadModelId():"";v&&r.value.find(B=>B.modelId===v)?F(v):F(r.value[0].modelId),r.value.forEach(B=>B.selected=!0)}},F=w=>{l.value=w;const v=r.value.find(B=>B.modelId===w);v&&v.formData&&Object.keys(C).forEach(B=>{v.formData[B]!==void 0&&(C[B]=v.formData[B])})},D=(w,v)=>{if(!o?.value?.adjustingModelByCad)return;const B=r.value.find(R=>R.modelId===w);B&&B.tileset&&(B.formData={...B.formData,...v},B.tileset.formData=B.formData,o.value.adjustingModelByCad({...B.formData,tileset:B.tileset}))},P=w=>{if(!l.value)return;const v=C[w];D(l.value,{[w]:v})},L=w=>{const v=r.value.filter(O=>O.selected);if(v.length===0){ge.warning("请先选择要调整的模型");return}const{distance:B,heightDistance:R,rotation:U}=C;v.forEach(O=>{const T={...O.formData};switch(w){case"north":T.latitude+=B;break;case"south":T.latitude-=B;break;case"east":T.longitude+=B;break;case"west":T.longitude-=B;break;case"up":T.height+=R;break;case"down":T.height-=R;break;case"rotateLeft":T.totalRotation=(T.totalRotation||0)-U;break;case"rotateRight":T.totalRotation=(T.totalRotation||0)+U;break}O.modelId===l.value&&Object.assign(C,T),D(O.modelId,T)})},G=w=>{const v=w.target.checked;r.value.forEach(B=>B.selected=v)},N=()=>{s("handleSavingByCadCard",r.value),s("save",r.value)},b=()=>{const w=p.bimPoint1,v=p.bimPoint2;if(w.longitude===void 0||v.longitude===void 0){ge.warning("请先完成点选操作");return}const B=r.value.filter(_=>_.selected);if(B.length===0){ge.warning("请先选择要调整的模型");return}let R=0,U=0,O=0;const T=E();if(T){const{dLon:_,dLat:Y,dHeight:$}=T.calculateOffset(w,v);R=_,U=Y,O=$}else R=v.longitude-w.longitude,U=v.latitude-w.latitude,O=v.height-w.height;B.forEach(_=>{const Y={..._.formData};Y.longitude+=R,Y.latitude+=U,Y.height+=O,_.modelId===l.value&&Object.assign(C,Y),D(_.modelId,Y)}),ge.success("位置已调整")};return d.watch(()=>i.visible,w=>{w?g():(S(),I())}),d.onMounted(()=>{i.visible&&g()}),e({setBIMPointsList:({longitude:w,latitude:v,height:B})=>{p[f.value].longitude=w,p[f.value].latitude=v,p[f.value].height=B},addGltfOr3dTilesModelList:w=>{console.warn("addGltfOr3dTilesModelList is deprecated, use internal loading")}}),(w,v)=>(d.openBlock(),d.createBlock(Re,{visible:i.visible,title:"Cad校准",width:282,height:600,"onUpdate:visible":v[21]||(v[21]=B=>s("update:visible",B)),onClose:y},{default:d.withCtx(()=>[d.createElementVNode("div",pb,[d.createElementVNode("div",gb,[d.createElementVNode("div",mb,[v[22]||(v[22]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",Ab,[d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="param"}),onClick:v[0]||(v[0]=B=>x("param"))},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="pick"}),onClick:v[1]||(v[1]=B=>x("pick"))},"地图点选",2)])]),d.createElementVNode("div",yb,[v[23]||(v[23]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",{class:"value",title:m.value},d.toDisplayString(m.value||"未选择"),9,Cb)]),v[35]||(v[35]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[v[31]||(v[31]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",Eb,[v[24]||(v[24]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[2]||(v[2]=B=>C.longitude=B),onChange:v[3]||(v[3]=B=>P("longitude")),step:A.value},null,40,wb),[[d.vModelText,C.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",bb,[v[25]||(v[25]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[4]||(v[4]=B=>C.latitude=B),onChange:v[5]||(v[5]=B=>P("latitude")),step:A.value},null,40,vb),[[d.vModelText,C.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",Ib,[v[26]||(v[26]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[6]||(v[6]=B=>C.height=B),onChange:v[7]||(v[7]=B=>P("height")),step:A.value},null,40,xb),[[d.vModelText,C.height,void 0,{number:!0}]])]),d.createElementVNode("div",Bb,[v[27]||(v[27]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[8]||(v[8]=B=>C.totalRotation=B),onChange:v[9]||(v[9]=B=>P("totalRotation")),step:A.value},null,40,Sb),[[d.vModelText,C.totalRotation,void 0,{number:!0}]])]),v[32]||(v[32]=d.createElementVNode("div",{class:"separator"},null,-1)),v[33]||(v[33]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",Mb,[v[28]||(v[28]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[10]||(v[10]=B=>C.distance=B),step:A.value},null,8,Tb),[[d.vModelText,C.distance,void 0,{number:!0}]])]),d.createElementVNode("div",Db,[v[29]||(v[29]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[11]||(v[11]=B=>C.heightDistance=B),step:A.value},null,8,kb),[[d.vModelText,C.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",Pb,[v[30]||(v[30]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":v[12]||(v[12]=B=>C.rotation=B),step:A.value},null,8,Fb),[[d.vModelText,C.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",Rb,[d.createElementVNode("button",{onClick:v[13]||(v[13]=B=>L("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:v[14]||(v[14]=B=>L("north"))},"北移"),d.createElementVNode("button",{onClick:v[15]||(v[15]=B=>L("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:v[16]||(v[16]=B=>L("west"))},"西移"),d.createElementVNode("button",{onClick:v[17]||(v[17]=B=>L("south"))},"南移"),d.createElementVNode("button",{onClick:v[18]||(v[18]=B=>L("east"))},"东移"),d.createElementVNode("button",{onClick:v[19]||(v[19]=B=>L("up"))},"上移"),d.createElementVNode("button",{onClick:v[20]||(v[20]=B=>L("down"))},"下移"),d.createElementVNode("button",{onClick:N,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):(d.openBlock(),d.createElementBlock("div",Ob,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(p,(B,R)=>(d.openBlock(),d.createElementBlock("div",{key:R,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:U=>u.value=R},[d.createElementVNode("input",{type:"radio",checked:u.value===R,style:{"margin-right":"5px"}},null,8,Nb),d.createTextVNode(" "+d.toDisplayString(B.type)+": ",1)],8,Lb),d.createElementVNode("div",Ub,[d.createElementVNode("div",_b,[d.createElementVNode("label",Qb,d.toDisplayString(B.longitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":U=>B.longitude=U,readonly:"",style:{width:"100px"}},null,8,Hb),[[d.vModelText,B.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",Gb,[d.createElementVNode("label",Yb,d.toDisplayString(B.latitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":U=>B.latitude=U,readonly:"",style:{width:"100px"}},null,8,Vb),[[d.vModelText,B.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",Wb,[d.createElementVNode("label",zb,d.toDisplayString(B.heightText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":U=>B.height=U,readonly:"",style:{width:"100px"}},null,8,jb),[[d.vModelText,B.height,void 0,{number:!0}]])])])]))),128)),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:b,class:"primary-btn"},"应用校准"),d.createElementVNode("button",{onClick:N},"保存")]),v[34]||(v[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",$b,[d.createElementVNode("div",Kb,[d.createElementVNode("div",Xb,[d.createElementVNode("input",{type:"checkbox",checked:a.value,onChange:G},null,40,qb)]),v[36]||(v[36]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),v[37]||(v[37]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),v[38]||(v[38]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",Jb,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(r.value,(B,R)=>(d.openBlock(),d.createElementBlock("div",{key:B.modelId,class:d.normalizeClass(["list-item",{active:B.modelId===l.value}])},[d.createElementVNode("div",Zb,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":U=>B.selected=U},null,8,ev),[[d.vModelCheckbox,B.selected]])]),d.createElementVNode("div",tv,d.toDisplayString(R+1),1),d.createElementVNode("div",{class:"col-name",title:B.modelName},d.toDisplayString(B.modelName),9,nv),d.createElementVNode("div",iv,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:B.modelId===l.value,onChange:U=>F(B.modelId)},null,40,sv)])],2))),128)),r.value.length===0?(d.openBlock(),d.createElementBlock("div",ov,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-e8abd49d"]]),av={class:"annotation-content"},lv={class:"annotation-tools"},cv={class:"annotation-controls"},dv={class:"control-group",title:"颜色"},uv={class:"tool-item color-tool"},hv={class:"control-group line-width-container",title:"线宽"},fv=["onClick"],pv={class:"option-label"},gv=Ue(d.defineComponent({__name:"LeitingAnnotationCard",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods"),o=d.ref(""),r=d.ref("#ff0000"),l=d.ref(1),a=d.ref(!1),c=d.ref(null),u=d.ref(null),h=d.ref({top:"0px",left:"0px"}),f=[{value:6,label:"粗"},{value:3,label:"中"},{value:1,label:"细"}],p=()=>s?.value?.getAnnotationInstance?s.value.getAnnotationInstance():null,A=()=>{i("update:visible",!1)},C=x=>{o.value=x;const g=p();if(g)switch(x){case"freehandLine":g.startFreehandLine();break;case"arrow":g.startArrow();break;case"straightLine":g.startStraightLine();break;case"rectangle":g.startRectangle();break;case"ellipse":g.startEllipse();break}},m=()=>{const x=p();x&&(x.setCurrentColor(r.value),x.changeColor(r.value))},y=()=>{if(!a.value&&c.value){const x=c.value.getBoundingClientRect();h.value={top:`${x.top}px`,left:`${x.right+8}px`}}a.value=!a.value},E=x=>{l.value=x,a.value=!1;const g=p();g&&(g.setCurrentWidth(x),g.changeWidth(x))},I=()=>{const x=p();x&&x.deleteSelectedEntity()},M=()=>{const x=p();x&&x.clearAll()},k=()=>{if(s?.value?.saveAnnotations){s.value.saveAnnotations();return}const x=p();x&&x.saveAnnotations()},S=x=>{const g=x.target,F=c.value&&c.value.contains(g),D=u.value&&u.value.contains(g);!F&&!D&&(a.value=!1)};return d.onMounted(()=>{document.addEventListener("click",S)}),d.onUnmounted(()=>{document.removeEventListener("click",S)}),(x,g)=>(d.openBlock(),d.createBlock(Re,{visible:t.visible,title:"标注",width:70,"min-width":70,height:480,"onUpdate:visible":g[6]||(g[6]=F=>i("update:visible",F)),onClose:A},{default:d.withCtx(()=>[d.createElementVNode("div",av,[d.createElementVNode("div",lv,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="freehandLine"}]),onClick:g[0]||(g[0]=F=>C("freehandLine")),title:"手绘线"},[...g[7]||(g[7]=[d.createElementVNode("div",{class:"tool-icon"},"✏️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="arrow"}]),onClick:g[1]||(g[1]=F=>C("arrow")),title:"箭头"},[...g[8]||(g[8]=[d.createElementVNode("div",{class:"tool-icon"},"↗️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="straightLine"}]),onClick:g[2]||(g[2]=F=>C("straightLine")),title:"直线"},[...g[9]||(g[9]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="rectangle"}]),onClick:g[3]||(g[3]=F=>C("rectangle")),title:"矩形"},[...g[10]||(g[10]=[d.createElementVNode("div",{class:"tool-icon"},"▭",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="ellipse"}]),onClick:g[4]||(g[4]=F=>C("ellipse")),title:"椭圆"},[...g[11]||(g[11]=[d.createElementVNode("div",{class:"tool-icon"},"⭕",-1)])],2)]),g[13]||(g[13]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",cv,[d.createElementVNode("div",dv,[d.createElementVNode("div",uv,[d.createElementVNode("div",{class:"color-swatch",style:d.normalizeStyle({backgroundColor:r.value})},null,4),d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":g[5]||(g[5]=F=>r.value=F),onChange:m,class:"color-input-overlay"},null,544),[[d.vModelText,r.value]])])]),d.createElementVNode("div",hv,[d.createElementVNode("div",{ref_key:"lineWidthBtnRef",ref:c,class:"tool-item",onClick:d.withModifiers(y,["stop"])},[d.createElementVNode("div",{class:"current-width-preview",style:d.normalizeStyle({height:l.value+"px",backgroundColor:"#fff"})},null,4)],512),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[a.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:u,class:"line-width-dropdown",style:d.normalizeStyle(h.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(f,F=>d.createElementVNode("div",{key:F.value,class:d.normalizeClass(["line-width-option",{selected:l.value===F.value}]),onClick:d.withModifiers(D=>E(F.value),["stop"])},[d.createElementVNode("span",pv,d.toDisplayString(F.label),1),d.createElementVNode("div",{class:"line-preview",style:d.normalizeStyle({height:F.value+"px",backgroundColor:l.value===F.value?"#1890ff":"#ddd"})},null,4)],10,fv)),64))],4)):d.createCommentVNode("",!0)]))]),g[12]||(g[12]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("button",{class:"control-btn",onClick:I,title:"删除选中"}," 🗑️ "),d.createElementVNode("button",{class:"control-btn",onClick:M,title:"清空"}," ❌ "),d.createElementVNode("button",{class:"control-btn",onClick:k,title:"保存"}," 💾 ")])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-3cfc8415"]]),mv={class:"measure-content"},Av={class:"measure-tools"},yv={key:0,class:"measure-results"},Cv={class:"result-row"},Ev={class:"result-value"},wv={class:"result-row"},bv={class:"result-value"},vv={class:"result-row"},Iv={class:"result-value"},xv={class:"result-row"},Bv={class:"result-value"},Sv={key:1,class:"result-row"},Mv={class:"result-value"},Tv={key:2,class:"result-row"},Dv={class:"result-value"},kv={class:"measure-controls"},Pv={class:"control-group",title:"单位"},Fv={class:"unit-display"},Rv=["onClick"],Ov=Ue(d.defineComponent({__name:"LeitingMeasurement",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","close"],setup(n,{emit:e}){const t=n,i=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(null),r=d.ref(null),l=d.ref("m"),a=d.ref(!1),c=d.ref(null),u=d.ref(!1),h=d.ref({}),f=d.ref(null),p=[{label:"米 (m)",value:"m"},{label:"厘米 (cm)",value:"cm"},{label:"毫米 (mm)",value:"mm"}],A=x=>{const g=l.value;return g==="mm"?`${(x*1e3).toFixed(0)}mm`:g==="cm"?`${(x*100).toFixed(1)}cm`:`${x.toFixed(2)}m`},C=x=>x>1e6?`${(x/1e6).toFixed(2)} km²`:`${x.toFixed(2)} m²`,m=()=>{if(!o.value&&s.value?.getViewer){const x=s.value.getViewer(),g=s.value.getCesium();x&&g&&(o.value=new tc({viewer:x,cesium:g}),o.value.setUnit(l.value),o.value.setSnapping(a.value),o.value.onMeasure=F=>{c.value=F})}},y=x=>{o.value||m(),r.value===x?(r.value=null,o.value?.stop()):(r.value=x,o.value?.start(x))},E=x=>{l.value=x,u.value=!1},I=()=>{o.value&&(o.value.clearAll(),r.value=null,o.value.stop())},M=()=>{i("update:visible",!1)},k=x=>{if(u.value){u.value=!1;return}const F=x.currentTarget.getBoundingClientRect();h.value={position:"fixed",top:`${F.top}px`,left:`${F.right+5}px`,zIndex:3e3},u.value=!0},S=x=>{u.value&&f.value&&!f.value.contains(x.target)&&(u.value=!1)};return d.onMounted(()=>{document.addEventListener("click",S),t.visible&&d.nextTick(()=>m())}),d.onUnmounted(()=>{document.removeEventListener("click",S),o.value&&o.value.destroy()}),d.watch(()=>t.visible,x=>{x?d.nextTick(()=>m()):o.value&&(o.value.stop(),r.value=null)}),d.watch(s,x=>{x&&x.getViewer&&!o.value&&t.visible&&m()}),d.watch(l,x=>{o.value&&o.value.setUnit(x)}),(x,g)=>(d.openBlock(),d.createBlock(Re,{visible:t.visible,title:"量算",width:70,"min-width":70,height:480,"onUpdate:visible":g[3]||(g[3]=F=>i("update:visible",F)),onClose:M},{default:d.withCtx(()=>[d.createElementVNode("div",mv,[d.createElementVNode("div",Av,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="distance"}]),onClick:g[0]||(g[0]=F=>y("distance")),title:"距离测量"},[...g[4]||(g[4]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="angle"}]),onClick:g[1]||(g[1]=F=>y("angle")),title:"角度测量"},[...g[5]||(g[5]=[d.createElementVNode("div",{class:"tool-icon"},"📐",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="area"}]),onClick:g[2]||(g[2]=F=>y("area")),title:"面积测量"},[...g[6]||(g[6]=[d.createElementVNode("div",{class:"tool-icon"},"🔳",-1)])],2)]),g[15]||(g[15]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value?(d.openBlock(),d.createElementBlock("div",yv,[c.value.type==="distance"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[d.createElementVNode("div",Cv,[g[7]||(g[7]=d.createElementVNode("span",{class:"result-label"},"总长:",-1)),d.createElementVNode("span",Ev,d.toDisplayString(A(c.value.dist)),1)]),d.createElementVNode("div",wv,[g[8]||(g[8]=d.createElementVNode("span",{class:"result-label",style:{color:"#ff4d4f"}},"ΔX:",-1)),d.createElementVNode("span",bv,d.toDisplayString(A(c.value.dx)),1)]),d.createElementVNode("div",vv,[g[9]||(g[9]=d.createElementVNode("span",{class:"result-label",style:{color:"#52c41a"}},"ΔY:",-1)),d.createElementVNode("span",Iv,d.toDisplayString(A(c.value.dy)),1)]),d.createElementVNode("div",xv,[g[10]||(g[10]=d.createElementVNode("span",{class:"result-label",style:{color:"#1890ff"}},"ΔZ:",-1)),d.createElementVNode("span",Bv,d.toDisplayString(A(c.value.dz)),1)])],64)):d.createCommentVNode("",!0),c.value.type==="angle"?(d.openBlock(),d.createElementBlock("div",Sv,[g[11]||(g[11]=d.createElementVNode("span",{class:"result-label"},"角度:",-1)),d.createElementVNode("span",Mv,d.toDisplayString(c.value.angle.toFixed(1))+"°",1)])):d.createCommentVNode("",!0),c.value.type==="area"?(d.openBlock(),d.createElementBlock("div",Tv,[g[12]||(g[12]=d.createElementVNode("span",{class:"result-label"},"面积:",-1)),d.createElementVNode("span",Dv,d.toDisplayString(C(c.value.area)),1)])):d.createCommentVNode("",!0)])):d.createCommentVNode("",!0),d.createElementVNode("div",kv,[d.createElementVNode("div",Pv,[d.createElementVNode("div",{class:"tool-item",onClick:d.withModifiers(k,["stop"])},[d.createElementVNode("div",Fv,d.toDisplayString(l.value),1)]),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[u.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"unitDropdownRef",ref:f,class:"unit-dropdown",style:d.normalizeStyle(h.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(p,F=>d.createElementVNode("div",{key:F.value,class:d.normalizeClass(["unit-option",{selected:l.value===F.value}]),onClick:d.withModifiers(D=>E(F.value),["stop"])},d.toDisplayString(F.label),11,Rv)),64))],4)):d.createCommentVNode("",!0)]))]),g[14]||(g[14]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("div",{class:"tool-item control-btn",onClick:I,title:"清空"},[...g[13]||(g[13]=[d.createElementVNode("div",{class:"tool-icon"},"🗑️",-1)])])])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-b766acb4"]]);function Lv(){const n=d.ref(!1),e=d.reactive({x:0,y:0}),t=d.ref([]),i=d.ref(null);return{visible:n,position:e,items:t,contextData:i,show:(a,c,u)=>{a instanceof MouseEvent?(a.preventDefault(),e.x=a.clientX,e.y=a.clientY):(e.x=a.x,e.y=a.y),t.value=c,i.value=u,n.value=!0},hide:()=>{n.value=!1},addItem:a=>{t.value.push(a)},removeItem:a=>{t.value=t.value.filter(c=>c.id!==a)}}}const Nv=["onClick"],Uv={class:"menu-label"},_v={key:0,class:"menu-arrow"},Qv=Ue(d.defineComponent({__name:"LeitingContextMenu",props:{visible:{type:Boolean},position:{},items:{}},emits:["update:visible","action"],setup(n,{emit:e}){const t=n,i=e,s=r=>{r.disabled||(r.action&&r.action(),i("action",r),i("update:visible",!1))},o=()=>{t.visible&&i("update:visible",!1)};return d.onMounted(()=>{document.addEventListener("click",o),document.addEventListener("contextmenu",r=>{r.target.closest(".leiting-context-menu")||o()})}),d.onUnmounted(()=>{document.removeEventListener("click",o)}),(r,l)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:"leiting-context-menu",style:d.normalizeStyle({left:n.position.x+"px",top:n.position.y+"px"}),onContextmenu:l[0]||(l[0]=d.withModifiers(()=>{},["prevent"]))},[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(n.items,a=>(d.openBlock(),d.createElementBlock("div",{key:a.id,class:d.normalizeClass(["menu-item",{"menu-divided":a.divided,"menu-disabled":a.disabled}]),onClick:c=>s(a)},[d.createElementVNode("span",Uv,d.toDisplayString(a.label),1),a.children?(d.openBlock(),d.createElementBlock("span",_v,"▶")):d.createCommentVNode("",!0)],10,Nv))),128))],36)),[[d.vShow,n.visible]])}}),[["__scopeId","data-v-f288753b"]]),Hv={class:"leiting-ui-overlay"},Qi=Ue(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:{},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(n,{emit:e}){const t=d.ref(),i=d.getCurrentInstance(),s=d.ref(!1),o=d.ref(""),r=d.ref({}),l=d.ref("3d"),a=n,c={title:"构件树",treeData:[]},u=d.ref(!1),h=d.ref(!1),f=d.ref(!1),p=d.ref(!1),A=d.ref(!1),C=d.ref(!1),m=d.ref(!1),y=d.ref(!1),E=d.ref(!1),I=d.ref(!1),{visible:M,position:k,items:S,show:x,hide:g}=Lv(),F=d.ref([]),D=V=>{F.value.push(V)},P=V=>{F.value=F.value.filter(j=>j.id!==V)},L=d.ref([]),G=d.ref(""),N=d.ref(null),b=d.ref([]),w=d.reactive({tree:!1,section:!1,roam:!1,info:!1,adjustModel:!1,setting:!1,cadLayer:!1,cadPosition:!1,annotation:!1}),v=(V,j)=>{V==="componentTree"&&(V="tree"),V==="componentInfo"&&(V="info"),V in w&&(w[V]=j)},B=d.shallowRef({});d.provide("leitingMethods",B);const R=d.ref(a.showMenu),U=d.ref([]);d.watch(()=>a.showMenu,V=>{R.value=V},{immediate:!0}),d.watch(()=>a.mode,V=>{V&&B.value?.set2d&&B.value.set2d(V==="2d")});const O=d.ref("dark");d.provide("leiting-theme",O);const T=d.ref([]),_=d.computed(()=>{const V=[];return u.value&&(V.push("tree"),V.push("componentTree")),h.value&&V.push("section"),f.value&&V.push("roam"),p.value&&(V.push("info"),V.push("componentInfo")),A.value&&V.push("adjust"),C.value&&V.push("setting"),m.value&&V.push("cadLayer"),y.value&&V.push("cadPosition"),E.value&&V.push("annotation"),I.value&&(V.push("measure"),V.push("measurement")),V.push(...T.value),V}),Y=d.ref(null),$=(V,j)=>{V==="componentTree"||V==="tree"?u.value=j:V==="section"?h.value=j:V==="roam"?f.value=j:V==="componentInfo"||V==="info"?p.value=j:V==="homeView"?B.value?.is2dMode?.()?B.value?.flyToTopView?.({}):B.value?.flyToTileset?.({}):V==="adjustModel"?(A.value=j,j&&Y.value&&Y.value.setModelType("BIM")):V==="osgbAdjust"?(A.value=j,j&&Y.value&&Y.value.setModelType("OSGB")):V==="setting"?C.value=j:V==="cadLayer"?m.value=j:V==="cadPosition"?y.value=j:V==="annotation"?E.value=j:V==="measurement"?I.value=j:j?T.value.includes(V)||T.value.push(V):T.value=T.value.filter(X=>X!==V)};d.watch(u,async V=>{if(V&&B.value?.loadTreeForModel&&B.value?.getMapTileset){const j=B.value.getMapTileset(),X=Object.values(j).map(async se=>{if(se.leiting&&!se.leiting.tree&&se.leiting.model?.treeUrl){const oe=se.leiting.model.modelId;try{se.leiting?.node?.batchIdEIDInfos||await B.value.loadNodeDetailsForModel(oe);const ae=await B.value.loadTreeForModel(oe);ae&&(Array.isArray(ae)?ae:[ae]).forEach(le=>{le&&!b.value.find(Pe=>Pe.id===le.id)&&(le.modelId=oe,b.value=[...b.value,le])})}catch(ae){console.warn(`Failed to lazy load tree for ${oe}`,ae)}}});await Promise.all(X)}});const J=()=>{B.value&&(B.value.getDxfModels&&(L.value=B.value.getDxfModels()||[]),B.value.getCadModelId&&(G.value=B.value.getCadModelId()||""))};d.watch(m,V=>{V&&J()}),d.watch(y,V=>{V&&(J(),N.value&&L.value.length&&N.value.addGltfOr3dTilesModelList(L.value))});const ne=e,re=V=>{B.value&&B.value.saveCadCalibration&&B.value.saveCadCalibration(V),B.value&&B.value.saveCadRegion&&B.value.saveCadRegion(V)};return d.onMounted(async()=>{if(t.value)try{const V={...xt,cesiumUrl:a.cesiumUrl||xt.cesiumUrl,cesiumCssUrl:a.cesiumCssUrl||xt.cesiumCssUrl,accessToken:a.accessToken||ns()||xt.accessToken};await ts(V);const j=a.accessToken||ns()||xt.accessToken;j&&(Cesium.Ion.defaultAccessToken=j),s.value=!0;const X=(oe={},ae)=>{if(t.value){const{showMenu:Ce,showTree:le,globe:Pe,terrain:ct,depthTest:$e,mapProvider:vt,tiandituLayerType:it,tiandituShowLabel:dn,arcgisUrl:Ut,shadows:_t,environmentMap:Xi,ambientOcclusion:Ke,time:Oe,brightness:st,backgroundColor:dt,collision:Qt,mouseHabit:Ht,mode:It,...Be}=oe||{},Do=a.showMenu!==void 0?a.showMenu:Ce!==void 0?Ce:!0;R.value=Do;const ke=(ee,Ie,Yt)=>ee!==void 0?ee:Ie!==void 0?Ie:Yt,un=ke(a.globe,Pe,!1),hn=ke(a.terrain,ct,!1),$n=ke(a.depthTest,$e,!1),Kn=ke(a.mapProvider,vt,"tianditu"),Xn=ke(a.tiandituLayerType,it,"img_w"),qi=ke(a.tiandituShowLabel,dn,!1),qc=ke(a.arcgisUrl,Ut,"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"),Jc=ke(a.shadows,_t,!1),Zc=ke(a.environmentMap,Xi,!1),ed=ke(a.ambientOcclusion,Ke,!1),td=ke(a.time,Oe,void 0),nd=ke(a.brightness,st,1),Ji=a.mode||It||"3d";console.log("LeitingBIM Mode:",Ji,"Props:",a.mode,"Options:",It),l.value=Ji;const Gx=Ji==="2d"?"#000000":"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)",id=ke(a.backgroundColor,dt,Gx),sd=ke(a.collision,Qt,!1),od=ke(a.mouseHabit,Ht,0);r.value={globe:un,terrain:hn,depthTest:$n,mapProvider:Kn,tiandituLayerType:Xn,tiandituShowLabel:qi,arcgisUrl:qc,shadows:Jc,environmentMap:Zc,ambientOcclusion:ed,time:td,brightness:nd,backgroundColor:id,collision:sd,mouseHabit:od};const qn=O0({container:t.value,appContext:i?.appContext,methods:{...B.value,handleMenuAction:$,setCardFullHeight:v,onLoadingStatus:ee=>{ee?ge.loading(ee,"",t.value):ge.close()},...Be,tilesLoad3dTiles:async ee=>{let Ie=ee.leiting?.tree;const Yt=ee.leiting?.model?.modelId;if(!Ie&&u.value&&B.value?.loadTreeForModel)try{Ie=await B.value.loadTreeForModel(Yt)}catch(Zn){console.warn("Failed to lazy load tree",Zn)}Ie&&(Array.isArray(Ie)?Ie:[Ie]).forEach(Vt=>{Vt&&!b.value.find(ad=>ad.id===Vt.id)&&(Vt.modelId=Yt,b.value=[...b.value,Vt])});const{brightness:ko,contrast:Po,saturation:ut}=qn.methods.getConfigure();qn.methods.setModelColorAdjustment({brightness:ko,contrast:Po,saturation:ut}),Be.tilesLoad3dTiles?.(ee)},mountAll3Dtiles:ee=>{a.mountAll3Dtiles&&a.mountAll3Dtiles(ee),Be.mountAll3Dtiles?.(ee)},mountAllCad:ee=>{if(qn.methods.setModelBrightness){const Ie=a.brightness!==void 0?a.brightness:r.value.brightness;Ie!==void 0&&qn.methods.setModelBrightness(Ie)}a.mountAllCad&&a.mountAllCad(ee),Be.mountAllCad?.(ee)},saveRegion:ee=>{a.saveRegion&&a.saveRegion(ee),Be.saveRegion?.(ee)},saveCadRegion:ee=>{a.saveCadRegion&&a.saveCadRegion(ee),Be.saveCadRegion?.(ee)},saveCadCalibration:ee=>{a.saveCadCalibration&&a.saveCadCalibration(ee),Be.saveCadCalibration?.(ee)},selectionChange:ee=>{a.selectionChange&&a.selectionChange(ee),Be.selectionChange?.(ee)},onSearchComponent:ee=>{a.searchComponent&&a.searchComponent(ee),Be.searchComponent?.(ee)}},viewerOptions:a.viewerOptions,options:{...Be,mode:Ji,playerUrl:a.playerUrl,playerModelName:a.playerModelName,playerModelId:a.playerModelId,playerScale:a.playerScale,globe:un,terrain:hn,depthTest:$n,mapProvider:Kn,tiandituLayerType:Xn,tiandituShowLabel:qi,tiandituToken:a.tiandituToken,arcgisUrl:qc,shadows:Jc,environmentMap:Zc,ambientOcclusion:ed,time:td,brightness:nd,backgroundColor:id,collision:sd,mouseHabit:od},callbacks:{onLoading:ee=>ee?ge.loading(ee,"",t.value):ge.close(),onSuccess:ee=>ge.success(ee,"",void 0,t.value),onError:ee=>ge.error(ee,"",void 0,t.value)}}),{Cesium:Gt,viewer:fn,methods:Zi,menuEvents:Jn}=qn,ve=Zi;Jn.on("showMenu",ee=>{R.value=ee}),Jn.on("insertMenu",ee=>{U.value=ee}),Jn.on("setMenuActive",(ee,Ie)=>{$(ee,Ie)}),B.value=ve,ae&&(ae.value=ve),Jn.on("setMode",ee=>{l.value=ee}),Jn.on("deleteAllModels",()=>{b.value=[]}),new Gt.ScreenSpaceEventHandler(fn.scene.canvas).setInputAction(ee=>{if(g(),l.value==="2d")return;const Ie=fn.scene.pick(ee.position),Yt=fn.container.getBoundingClientRect(),ko=Yt.left+ee.position.x,Po=Yt.top+ee.position.y,ut=[];if(Gt.defined(Ie)&&Ie instanceof Gt.Cesium3DTileFeature){const Zn=ve.baseCompt.getFeatureId(Ie),Vt=Sn(Ie.tileset);ve.baseCompt.hasSelectedFeaturesMap[Vt]?.some(ei=>ei.batchId===Zn&&ei.rank===0)||(ve.baseCompt.clearSelection(),ve.baseCompt.toggleMultiSelect(Vt,Zn,ve.baseCompt.selectedColor)),ut.push({id:"details",label:"构件详情",action:()=>{p.value=!0}}),ut.push({id:"hide",label:"隐藏选中构件",action:()=>{const ti=ve.baseCompt.getSelected().map(ht=>({elementId:ht.elementId,modelId:ht.modelId,show:!1}));ve.baseCompt.setComponentVisibility(ti)}}),ut.push({id:"translucent",label:"半透明选中构件",action:()=>{const ti=ve.baseCompt.getSelected().map(ht=>({elementId:ht.elementId,modelId:ht.modelId,rgba:{...ht.rgba,a:.3}}));ve.baseCompt.setSelectColorUserModelCpt(ti,{rank:0})}}),ut.push({id:"isolate",label:"隔离选中构件",divided:!0,action:()=>{ve.baseCompt.setAllComponentsVisibility(!1);const ti=ve.baseCompt.getSelected().map(ht=>({elementId:ht.elementId,modelId:ht.modelId,show:!0}));ve.baseCompt.setComponentVisibility(ti)}})}ut.push({id:"showAll",label:"显示所有",action:()=>{ve.baseCompt.setAllComponentsVisibility(!0),ve.baseCompt.clearSelection()}}),ut.push(...F.value),x({x:ko,y:Po},ut)},Gt.ScreenSpaceEventType.RIGHT_CLICK),ve.insertContextMenu=D,ve.deleteContextMenu=P,ve.hideContextMenu=g;const rd=oe?.onLoaded||oe?.onloaded;rd&&rd({Cesium:Gt,viewer:fn,methods:Zi}),ne("init",{Cesium:Gt,viewer:fn,methods:Zi}),ne("ready",{Cesium:Gt,viewer:fn,methods:Zi})}};let se=!1;ne("register",(oe,ae)=>{se=!0,X(oe,ae)}),se||setTimeout(()=>{B.value.getViewer||X()},0)}catch(V){o.value="Failed to load Cesium: "+(V.message||V),console.error(V)}}),(V,j)=>(d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-bim-container",[`theme-${O.value}`]]),onContextmenu:j[11]||(j[11]=d.withModifiers(()=>{},["prevent","stop"]))},[!s.value&&!o.value?(d.openBlock(),d.createBlock(d.unref(me.Spin),{key:0,class:"loading",size:"large",tip:"加载基础组件中..."})):d.createCommentVNode("",!0),o.value?(d.openBlock(),d.createBlock(d.unref(me.Alert),{key:1,class:"error",type:"error",message:o.value,"show-icon":""},null,8,["message"])):d.createCommentVNode("",!0),d.createElementVNode("div",{ref_key:"containerRef",ref:t,class:"cesium-viewer"},[d.createElementVNode("div",Hv,[d.createVNode(Qn,{visible:p.value,"full-height":w.info,"onUpdate:visible":j[0]||(j[0]=X=>p.value=X)},null,8,["visible","full-height"]),d.createVNode(Hn,{ref_key:"LeitingPositionRef",ref:Y,visible:A.value,"full-height":w.adjustModel,"onUpdate:visible":j[1]||(j[1]=X=>A.value=X)},null,8,["visible","full-height"]),d.createVNode(Gn,{visible:C.value,"full-height":w.setting,"tianditu-token":a.tiandituToken,"initial-config":r.value,"onUpdate:visible":j[2]||(j[2]=X=>C.value=X)},null,8,["visible","full-height","tianditu-token","initial-config"]),n.showTree!==!1?(d.openBlock(),d.createBlock(Pi,d.mergeProps({key:0},{...c,...n.treeProps},{visible:u.value,"full-height":w.tree,"tree-data":b.value.length>0?b.value:n.treeProps?.treeData||[],"onUpdate:visible":j[3]||(j[3]=X=>{u.value=X})}),null,16,["visible","full-height","tree-data"])):d.createCommentVNode("",!0),d.createVNode(gv,{visible:E.value,"onUpdate:visible":j[4]||(j[4]=X=>E.value=X)},null,8,["visible"]),d.createVNode(Ov,{visible:I.value,"onUpdate:visible":j[5]||(j[5]=X=>I.value=X)},null,8,["visible"]),d.createVNode(Un,{visible:h.value,"full-height":w.section,"onUpdate:visible":j[6]||(j[6]=X=>h.value=X)},null,8,["visible","full-height"]),d.createVNode(_n,{visible:f.value,"full-height":w.roam,"onUpdate:visible":j[7]||(j[7]=X=>f.value=X)},null,8,["visible","full-height"]),d.createVNode(Nn,{visible:R.value,"active-ids":_.value,"custom-items":U.value,onAction:$,"is-2d":l.value==="2d"},null,8,["visible","active-ids","custom-items","is-2d"]),d.createVNode(fb,{visible:m.value,"current-model-id":G.value,"onUpdate:visible":j[8]||(j[8]=X=>m.value=X)},null,8,["visible","current-model-id"]),d.createVNode(rv,{ref_key:"cadPositionRef",ref:N,visible:y.value,"onUpdate:visible":j[9]||(j[9]=X=>y.value=X),onSave:re},null,8,["visible"]),d.createVNode(Qv,{visible:d.unref(M),position:d.unref(k),items:d.unref(S),"onUpdate:visible":j[10]||(j[10]=X=>M.value=X)},null,8,["visible","position","items"]),d.renderSlot(V.$slots,"default",d.normalizeProps(d.guardReactiveProps({methods:B.value,isReady:s.value})),void 0,!0)])],512)],34))}}),[["__scopeId","data-v-fc733eb3"]]);function pc(n){const e=d.ref(),t=d.ref(n.theme||"dark"),i=d.ref(n.menuSize||"medium");d.provide("leiting-theme",t),d.provide("leiting-menu-size",i);function s(l){d.onUnmounted(()=>{e.value=null}),l(n,e)}function o(){const l=d.unref(e);return l||console.error("未获取到leiting实例!"),l}const r=new Proxy({},{get(l,a){const c=o();if(!c)return;const u=c[a];return typeof u=="function"?u.bind(c):u},set(l,a,c){const u=o();return u?(u[a]=c,!0):!1}});return[s,r]}const Gv=xt,Yv={install:(n,e)=>{if(n.component("LeitingBIM",Qi),n.component("LeitingTree",Pi),n.component("LeitingDraggableCard",Re),n.component("leiting-draggable-card",Re),n.component("LeitingMenu",Nn),n.component("leiting-menu",Nn),n.component("LeitingSection",Un),n.component("leiting-section",Un),n.component("LeitingPlayer",_n),n.component("leiting-player",_n),n.component("LeitingInfo",Qn),n.component("leiting-info",Qn),n.component("LeitingPosition",Hn),n.component("leiting-position",Hn),n.component("LeitingSetting",Gn),n.component("leiting-setting",Gn),!e)return;const t={...Gv,...e};t.cesiumUrl&&ts(t).catch(i=>{console.error("[LeitingBim] Failed to load Cesium resources:",i)}),n.config.globalProperties.$leitingBimOptions=t}};var W={image:new Map,background:new Map,resource:new Map,defaultStyle:new Map,baseStyle:new Map,computedStyle:new WeakMap,font:new Set,session:{styleMap:new Map,styleCache:new WeakMap,nodeMap:new Map}};function gc(n="soft"){switch(n){case"auto":{W.session.styleMap=new Map,W.session.nodeMap=new Map;return}case"soft":{W.session.styleMap=new Map,W.session.nodeMap=new Map,W.session.styleCache=new WeakMap;return}case"full":return;case"disabled":{W.session.styleMap=new Map,W.session.nodeMap=new Map,W.session.styleCache=new WeakMap,W.computedStyle=new WeakMap,W.baseStyle=new Map,W.defaultStyle=new Map,W.image=new Map,W.background=new Map,W.resource=new Map,W.font=new Set;return}default:{W.session.styleMap=new Map,W.session.nodeMap=new Map,W.session.styleCache=new WeakMap;return}}}function ho(n){const e=n.match(/url\((['"]?)(.*?)(\1)\)/);if(!e)return null;const t=e[2].trim();return t.startsWith("#")?null:t}function Vv(n){if(!n||n==="none")return"";let e=n.replace(/translate[XY]?\([^)]*\)/g,"");return e=e.replace(/matrix\(([^)]+)\)/g,(t,i)=>{const s=i.split(",").map(o=>o.trim());return s.length!==6?`matrix(${i})`:(s[4]="0",s[5]="0",`matrix(${s.join(", ")})`)}),e=e.replace(/matrix3d\(([^)]+)\)/g,(t,i)=>{const s=i.split(",").map(o=>o.trim());return s.length!==16?`matrix3d(${i})`:(s[12]="0",s[13]="0",`matrix3d(${s.join(", ")})`)}),e.trim().replace(/\s{2,}/g," ")}function Hi(n){if(/%[0-9A-Fa-f]{2}/.test(n))return n;try{return encodeURI(n)}catch{return n}}function Wv(n="[snapDOM]",{ttlMs:e=5*6e4,maxEntries:t=12}={}){const i=new Map;let s=0;function o(r,l,a){if(s>=t)return;const c=Date.now();(i.get(l)||0)>c||(i.set(l,c+e),s++,r==="warn"&&console&&console.warn?console.warn(`${n} ${a}`):console&&console.error&&console.error(`${n} ${a}`))}return{warnOnce(r,l){o("warn",r,l)},errorOnce(r,l){o("error",r,l)},reset(){i.clear(),s=0}}}var mc=Wv("[snapDOM]",{ttlMs:3*6e4,maxEntries:10}),fo=new Map,Gi=new Map;function zv(n){return/^data:|^blob:|^about:blank$/i.test(n)}function jv(n,e){try{const t=typeof location<"u"&&location.href?location.href:"http://localhost/",i=e.includes("{url}")?e.split("{url}")[0]:e,s=new URL(i||".",t),o=new URL(n,t);if(o.origin===s.origin)return!0;const r=o.searchParams;if(r&&(r.has("url")||r.has("target")))return!0}catch{}return!1}function $v(n,e){if(!e||zv(n)||jv(n,e))return!1;try{const t=typeof location<"u"&&location.href?location.href:"http://localhost/",i=new URL(n,t);return typeof location<"u"?i.origin!==location.origin:!0}catch{return!!e}}function Kv(n,e){if(!e)return n;if(e.includes("{url}"))return e.replace("{urlRaw}",Hi(n)).replace("{url}",encodeURIComponent(n));if(/[?&]url=?$/.test(e))return`${e}${encodeURIComponent(n)}`;if(e.endsWith("?"))return`${e}url=${encodeURIComponent(n)}`;if(e.endsWith("/"))return`${e}${Hi(n)}`;const t=e.includes("?")?"&":"?";return`${e}${t}url=${encodeURIComponent(n)}`}function Ac(n){return new Promise((e,t)=>{const i=new FileReader;i.onload=()=>e(String(i.result||"")),i.onerror=()=>t(new Error("read_failed")),i.readAsDataURL(n)})}function Xv(n,e){return[e.as||"blob",e.timeout??3e3,e.useProxy||"",e.errorTTL??8e3,n].join("|")}async function je(n,e={}){const t=e.as??"blob",i=e.timeout??3e3,s=e.useProxy||"",o=e.errorTTL??8e3,r=e.headers||{},l=!!e.silent;if(/^data:/i.test(n))try{if(t==="text")return{ok:!0,data:String(n),status:200,url:n,fromCache:!1};if(t==="dataURL")return{ok:!0,data:String(n),status:200,url:n,fromCache:!1,mime:String(n).slice(5).split(";")[0]||""};const[,m="",y=""]=String(n).match(/^data:([^,]*),(.*)$/)||[],I=/;base64/i.test(m)?atob(y):decodeURIComponent(y),M=new Uint8Array([...I].map(S=>S.charCodeAt(0))),k=new Blob([M],{type:(m||"").split(";")[0]||""});return{ok:!0,data:k,status:200,url:n,fromCache:!1,mime:k.type||""}}catch{return{ok:!1,data:null,status:0,url:n,fromCache:!1,reason:"special_url_error"}}if(/^blob:/i.test(n))try{const m=await fetch(n);if(!m.ok)return{ok:!1,data:null,status:m.status,url:n,fromCache:!1,reason:"http_error"};const y=await m.blob(),E=y.type||m.headers.get("content-type")||"";return t==="dataURL"?{ok:!0,data:await Ac(y),status:m.status,url:n,fromCache:!1,mime:E}:t==="text"?{ok:!0,data:await y.text(),status:m.status,url:n,fromCache:!1,mime:E}:{ok:!0,data:y,status:m.status,url:n,fromCache:!1,mime:E}}catch{return{ok:!1,data:null,status:0,url:n,fromCache:!1,reason:"network"}}if(/^about:blank$/i.test(n))return t==="dataURL"?{ok:!0,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==",status:200,url:n,fromCache:!1,mime:"image/png"}:{ok:!0,data:t==="text"?"":new Blob([]),status:200,url:n,fromCache:!1};const a=Xv(n,{as:t,timeout:i,useProxy:s,errorTTL:o}),c=Gi.get(a);if(c&&c.until>Date.now())return{...c.result,fromCache:!0};c&&Gi.delete(a);const u=fo.get(a);if(u)return u;const h=$v(n,s)?Kv(n,s):n;let f=e.credentials;if(!f)try{const m=typeof location<"u"&&location.href?location.href:"http://localhost/",y=new URL(n,m);f=typeof location<"u"&&y.origin===location.origin?"include":"omit"}catch{f="omit"}const p=new AbortController,A=setTimeout(()=>p.abort("timeout"),i),C=(async()=>{try{const m=await fetch(h,{signal:p.signal,credentials:f,headers:r});if(!m.ok){const I={ok:!1,data:null,status:m.status,url:h,fromCache:!1,reason:"http_error"};if(o>0&&Gi.set(a,{until:Date.now()+o,result:I}),!l){const M=`${m.status} ${m.statusText||""}`.trim();mc.warnOnce(`http:${m.status}:${t}:${new URL(n,location?.href??"http://localhost/").origin}`,`HTTP error ${M} while fetching ${t} ${n}`)}return e.onError&&e.onError(I),I}if(t==="text")return{ok:!0,data:await m.text(),status:m.status,url:h,fromCache:!1};const y=await m.blob(),E=y.type||m.headers.get("content-type")||"";return t==="dataURL"?{ok:!0,data:await Ac(y),status:m.status,url:h,fromCache:!1,mime:E}:{ok:!0,data:y,status:m.status,url:h,fromCache:!1,mime:E}}catch(m){const y=m&&typeof m=="object"&&"name"in m&&m.name==="AbortError"?String(m.message||"").includes("timeout")?"timeout":"abort":"network",E={ok:!1,data:null,status:0,url:h,fromCache:!1,reason:y};if(!/^blob:/i.test(n)&&o>0&&Gi.set(a,{until:Date.now()+o,result:E}),!l){const I=`${y}:${t}:${new URL(n,location?.href??"http://localhost/").origin}`,M=y==="timeout"?`Timeout after ${i}ms. Consider increasing timeout or using a proxy for ${n}`:y==="abort"?`Request aborted while fetching ${t} ${n}`:`Network/CORS issue while fetching ${t} ${n}. A proxy may be required`;mc.errorOnce(I,M)}return e.onError&&e.onError(E),E}finally{clearTimeout(A),fo.delete(a)}})();return fo.set(a,C),C}function po(n,e){if(!e||!n.width||!n.height)return n;const t=document.createElement("canvas");t.width=n.width,t.height=n.height;const i=t.getContext("2d");return i.fillStyle=e,i.fillRect(0,0,t.width,t.height),i.drawImage(n,0,0),t}async function go(n,e={}){if(/^((repeating-)?(linear|radial|conic)-gradient)\(/i.test(n)||n.trim()==="none")return n;const i=ho(n);if(!i)return n;const s=Hi(i);if(W.background.has(s)){const o=W.background.get(s);return o?`url("${o}")`:"none"}try{const o=await je(s,{as:"dataURL",useProxy:e.useProxy});return o.ok?(W.background.set(s,o.data),`url("${o.data}")`):(W.background.set(s,null),"none")}catch{return W.background.set(s,null),"none"}}var yc=new Set(["meta","script","noscript","title","link","template"]),Yi=new Set(["meta","link","style","title","noscript","script","template","g","defs","use","marker","mask","clipPath","pattern","path","polygon","polyline","line","circle","ellipse","rect","filter","lineargradient","radialgradient","stop"]),qv=["div","span","p","a","img","ul","li","button","input","select","textarea","label","section","article","header","footer","nav","main","aside","h1","h2","h3","h4","h5","h6","table","thead","tbody","tr","td","th"];function Jv(){for(let n of qv){const e=String(n).toLowerCase();yc.has(e)||Yi.has(e)||Cc(e)}}function Cc(n){if(n=String(n).toLowerCase(),Yi.has(n)){const o={};return W.defaultStyle.set(n,o),o}if(W.defaultStyle.has(n))return W.defaultStyle.get(n);let e=document.getElementById("snapdom-sandbox");e||(e=document.createElement("div"),e.id="snapdom-sandbox",e.setAttribute("data-snapdom-sandbox","true"),e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.left="-9999px",e.style.top="-9999px",e.style.width="0px",e.style.height="0px",e.style.overflow="hidden",document.body.appendChild(e));const t=document.createElement(n);t.style.all="initial",e.appendChild(t);const i=getComputedStyle(t),s={};for(let o of i){if(Ec(o))continue;const r=i.getPropertyValue(o);s[o]=r}return e.removeChild(t),W.defaultStyle.set(n,s),s}var Zv=/(?:^|-)(animation|transition)(?:-|$)/i,eI=/^(--|view-timeline|scroll-timeline|animation-trigger|offset-|position-try|app-region|interactivity|overlay|view-transition|-webkit-locale|-webkit-user-(?:drag|modify)|-webkit-tap-highlight-color|-webkit-text-security)$/i,tI=new Set(["cursor","pointer-events","touch-action","user-select","print-color-adjust","speak","reading-flow","reading-order","anchor-name","anchor-scope","container-name","container-type","timeline-scope"]);function Ec(n){const e=String(n).toLowerCase();return!!(tI.has(e)||eI.test(e)||Zv.test(e))}function mo(n,e){if(e=String(e||"").toLowerCase(),Yi.has(e))return"";const t=[],i=Cc(e);for(let[s,o]of Object.entries(n)){if(Ec(s))continue;const r=i[s];o&&o!==r&&t.push(`${s}:${o}`)}return t.sort(),t.join(";")}function nI(n){const e=new Set;return n.nodeType!==Node.ELEMENT_NODE&&n.nodeType!==Node.DOCUMENT_FRAGMENT_NODE?[]:(n.tagName&&e.add(n.tagName.toLowerCase()),typeof n.querySelectorAll=="function"&&n.querySelectorAll("*").forEach(t=>e.add(t.tagName.toLowerCase())),Array.from(e))}function iI(n){const e=new Map;for(let i of n){const s=W.defaultStyle.get(i);if(!s)continue;const o=Object.entries(s).map(([r,l])=>`${r}:${l};`).sort().join("");o&&(e.has(o)||e.set(o,[]),e.get(o).push(i))}let t="";for(let[i,s]of e.entries())t+=`${s.join(",")} { ${i} }
|
|
118
118
|
`;return t}function sI(n){const e=Array.from(new Set(n.values())).filter(Boolean).sort(),t=new Map;let i=1;for(const s of e)t.set(s,`c${i++}`);return t}function Ao(n,e=null){if(!(n instanceof Element))return window.getComputedStyle(n,e);let t=W.computedStyle.get(n);if(t||(t=new Map,W.computedStyle.set(n,t)),!t.has(e)){const i=window.getComputedStyle(n,e);t.set(e,i)}return t.get(e)}function wc(n){const e={};for(let t of n)e[t]=n.getPropertyValue(t);return e}function yo(n){const e=[];let t=0,i=0;for(let s=0;s<n.length;s++){const o=n[s];o==="("&&t++,o===")"&&t--,o===","&&t===0&&(e.push(n.slice(i,s).trim()),i=s+1)}return e.push(n.slice(i).trim()),e}function ln(n,{fast:e=!1}={}){if(e)return n();"requestIdleCallback"in window?requestIdleCallback(n,{timeout:50}):setTimeout(n,1)}function nt(){const n=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent:"",e=/^((?!chrome|android).)*safari/i.test(n),t=/AppleWebKit/i.test(n)&&/Mobile/i.test(n)&&!/Safari/i.test(n),i=/(MicroMessenger|wxwork|WeCom|WindowsWechat|MacWechat)/i.test(n);return e||t||i}var bc=new WeakMap,Co=new Map,Eo=0;function Yn(){Eo++}var vc=!1;function oI(n=document.documentElement){if(!vc){vc=!0;try{new MutationObserver(()=>Yn()).observe(n,{subtree:!0,childList:!0,characterData:!0,attributes:!0})}catch{}try{new MutationObserver(()=>Yn()).observe(document.head,{subtree:!0,childList:!0,characterData:!0,attributes:!0})}catch{}try{const e=document.fonts;e&&(e.addEventListener?.("loadingdone",Yn),e.ready?.then(()=>Yn()).catch(()=>{}))}catch{}}}function rI(n,e={}){const t={},i=n.getPropertyValue("visibility");for(let s=0;s<n.length;s++){const o=n[s];let r=n.getPropertyValue(o);(o==="background-image"||o==="content")&&r.includes("url(")&&!r.includes("data:")&&(r="none"),t[o]=r}if(e.embedFonts){const s=["font-feature-settings","font-variation-settings","font-kerning","font-variant","font-variant-ligatures","font-optical-sizing"];for(const o of s)if(!t[o])try{const r=n.getPropertyValue(o);r&&(t[o]=r)}catch{}}return i==="hidden"&&(t.opacity="0"),t}var Ic=new WeakMap;function aI(n){let e=Ic.get(n);return e||(e=Object.entries(n).sort((i,s)=>i[0]<s[0]?-1:i[0]>s[0]?1:0).map(([i,s])=>`${i}:${s}`).join(";"),Ic.set(n,e),e)}function lI(n,e=null,t={}){const i=bc.get(n);if(i&&i.epoch===Eo)return i.snapshot;const s=e||getComputedStyle(n),o=rI(s,t);return pI(n,s,o),bc.set(n,{epoch:Eo,snapshot:o}),o}function cI(n,e){return n&&n.session&&n.persist?n:n&&(n.styleMap||n.styleCache||n.nodeMap)?{session:n,persist:{snapshotKeyCache:Co,defaultStyle:W.defaultStyle,baseStyle:W.baseStyle,image:W.image,resource:W.resource,background:W.background,font:W.font},options:e||{}}:{session:W.session,persist:{snapshotKeyCache:Co,defaultStyle:W.defaultStyle,baseStyle:W.baseStyle,image:W.image,resource:W.resource,background:W.background,font:W.font},options:n||e||{}}}async function cn(n,e,t,i){if(n.tagName==="STYLE")return;const s=cI(t,i),o=s.options&&s.options.cache||"auto";if(o!=="disabled"&&oI(document.documentElement),o==="disabled"&&!s.session.__bumpedForDisabled&&(Yn(),Co.clear(),s.session.__bumpedForDisabled=!0),Yi.has(n.tagName?.toLowerCase())){const f=n.getAttribute?.("style");f&&e.setAttribute("style",f)}const{session:r,persist:l}=s;r.styleCache.has(n)||r.styleCache.set(n,getComputedStyle(n));const a=r.styleCache.get(n),c=lI(n,a,s.options),u=aI(c);let h=l.snapshotKeyCache.get(u);if(!h){const f=n.tagName?.toLowerCase()||"div";h=mo(c,f),l.snapshotKeyCache.set(u,h)}r.styleMap.set(e,h)}function dI(n){return n instanceof HTMLImageElement||n instanceof HTMLCanvasElement||n instanceof HTMLVideoElement||n instanceof HTMLIFrameElement||n instanceof SVGElement||n instanceof HTMLObjectElement||n instanceof HTMLEmbedElement}function uI(n){return n.backgroundImage&&n.backgroundImage!=="none"||n.backgroundColor&&n.backgroundColor!=="rgba(0, 0, 0, 0)"&&n.backgroundColor!=="transparent"||(parseFloat(n.borderTopWidth)||0)>0||(parseFloat(n.borderBottomWidth)||0)>0||(parseFloat(n.paddingTop)||0)>0||(parseFloat(n.paddingBottom)||0)>0?!0:(n.overflowBlock||n.overflowY||"visible")!=="visible"}function hI(n){const e=n.parentElement;if(!e)return!1;const t=getComputedStyle(e).display||"";return t.includes("flex")||t.includes("grid")}function fI(n,e){if(n.textContent&&/\S/.test(n.textContent))return!0;const t=n.firstElementChild,i=n.lastElementChild;if(t&&t.tagName==="BR"||i&&i.tagName==="BR")return!0;const s=n.scrollHeight;if(s===0)return!1;const o=parseFloat(e.paddingTop)||0,r=parseFloat(e.paddingBottom)||0;return s>o+r}function pI(n,e,t){if(n instanceof HTMLElement&&n.style&&n.style.height)return;const i=e.display||"";if(i.includes("flex")||i.includes("grid")||dI(n))return;const s=e.position;s==="absolute"||s==="fixed"||s==="sticky"||e.transform==="none"&&(uI(e)||hI(n)||fI(n,e)&&(delete t.height,delete t["block-size"]))}function gI(n,e){if(!(n instanceof Element)||!(e instanceof Element))return;const t=n.getAttribute?.("style");let i=!!(t&&t.includes("var("));if(!i&&n.attributes?.length){const r=n.attributes;for(let l=0;l<r.length;l++){const a=r[l];if(a&&typeof a.value=="string"&&a.value.includes("var(")){i=!0;break}}}if(!i)return;let s;try{s=getComputedStyle(n)}catch{return}const o=n.style;if(o&&o.length)for(let r=0;r<o.length;r++){const l=o[r],a=o.getPropertyValue(l);if(!a||!a.includes("var("))continue;const c=s.getPropertyValue(l);if(c)try{e.style.setProperty(l,c.trim(),o.getPropertyPriority(l))}catch{}}if(n.attributes?.length){const r=n.attributes;for(let l=0;l<r.length;l++){const a=r[l];if(!a||typeof a.value!="string"||!a.value.includes("var("))continue;const c=a.name;let u="";try{u=s.getPropertyValue(c)}catch{}if(u)try{e.style.setProperty(c,u.trim())}catch{}}}}function wo(n,e,t){return Promise.all(n.map(i=>new Promise(s=>{function o(){ln(r=>{(r&&typeof r.timeRemaining=="function"?r.timeRemaining()>0:!0)?e(i,s):o()},{fast:t})}o()})))}function mI(n){return n=n.trim(),!n||/:not\(\s*\[data-sd-slotted\]\s*\)\s*$/.test(n)?n:`${n}:not([data-sd-slotted])`}function AI(n,e,t=!0){return n.split(",").map(i=>i.trim()).filter(Boolean).map(i=>{if(i.startsWith(":where(")||i.startsWith("@"))return i;const s=t?mI(i):i;return`:where(${e} ${s})`}).join(", ")}function yI(n,e){return n?(n=n.replace(/:host\(([^)]+)\)/g,(t,i)=>`:where(${e}:is(${i.trim()}))`),n=n.replace(/:host\b/g,`:where(${e})`),n=n.replace(/:host-context\(([^)]+)\)/g,(t,i)=>`:where(:where(${i.trim()}) ${e})`),n=n.replace(/::slotted\(([^)]+)\)/g,(t,i)=>`:where(${e} ${i.trim()})`),n=n.replace(/(^|})(\s*)([^@}{]+){/g,(t,i,s,o)=>{const r=AI(o,e,!0);return`${i}${s}${r}{`}),n):""}function CI(n){return n.shadowScopeSeq=(n.shadowScopeSeq||0)+1,`s${n.shadowScopeSeq}`}function EI(n){let e="";try{n.querySelectorAll("style").forEach(i=>{e+=(i.textContent||"")+`
|
|
119
119
|
`});const t=n.adoptedStyleSheets||[];for(const i of t)try{if(i&&i.cssRules)for(const s of i.cssRules)e+=s.cssText+`
|
|
120
120
|
`}catch{}}catch{}return e}function wI(n,e,t){if(!e)return;const i=document.createElement("style");i.setAttribute("data-sd",t),i.textContent=e,n.insertBefore(i,n.firstChild||null)}function bI(n,e){try{const t=n.currentSrc||n.src||"";if(!t)return;e.setAttribute("src",t),e.removeAttribute("srcset"),e.removeAttribute("sizes"),e.loading="eager",e.decoding="sync"}catch{}}function vI(n){const e=new Set;if(!n)return e;const t=/var\(\s*(--[A-Za-z0-9_-]+)\b/g;let i;for(;i=t.exec(n);)e.add(i[1]);return e}function II(n,e){try{let i=getComputedStyle(n).getPropertyValue(e).trim();if(i)return i}catch{}try{let i=getComputedStyle(document.documentElement).getPropertyValue(e).trim();if(i)return i}catch{}return""}function xI(n,e,t){const i=[];for(const s of e){const o=II(n,s);o&&i.push(`${s}: ${o};`)}return i.length?`${t}{${i.join("")}}
|