mixdashboards 1.0.78 → 1.0.79

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.
Files changed (330) hide show
  1. package/dist/{BaseComponent-bzb58Hhs.cjs → BaseComponent-DErbJ2yr.cjs} +1 -1
  2. package/dist/{BaseComponent-Dwhb9Mde.js → BaseComponent-DhLWkd4H.js} +3 -3
  3. package/dist/{EChartComponentBase-CMN_pOMr.cjs → EChartComponentBase-BqdBnjfJ.cjs} +1 -1
  4. package/dist/{EChartComponentBase-BmS2KONN.js → EChartComponentBase-DHttbgp2.js} +2 -2
  5. package/dist/{EmergencyPlanPanel-CVusdpDo.cjs → EmergencyPlanPanel-CU4jOsp6.cjs} +1 -1
  6. package/dist/{EmergencyPlanPanel-FtvC-aXY.js → EmergencyPlanPanel-EPJuejhr.js} +1 -1
  7. package/dist/{HistoryPlanDialog-DliuSi0p.js → HistoryPlanDialog-CHYBnz8N.js} +1 -1
  8. package/dist/{HistoryPlanDialog-CrYylrTC.cjs → HistoryPlanDialog-D6l3KxOm.cjs} +1 -1
  9. package/dist/{MonitoringMap-CBnv001f.cjs → MonitoringMap-B5FBdQtf.cjs} +1 -1
  10. package/dist/{MonitoringMap-DB3R5nAJ.js → MonitoringMap-DtlStu8R.js} +2 -2
  11. package/dist/{UniverSheet-jy9kOyPN.cjs → UniverSheet-Dj5iiEh_.cjs} +1 -1
  12. package/dist/{UniverSheet-DFyIjurx.js → UniverSheet-lQotQtWX.js} +2 -2
  13. package/dist/{accelerationChart-Ceo371ch.cjs → accelerationChart-B7Nqo3Dg.cjs} +1 -1
  14. package/dist/{accelerationChart-Q_Q_QlU7.js → accelerationChart-BkzlcTqc.js} +2 -2
  15. package/dist/{actionItem-DB74CPi2.cjs → actionItem-KN4E74I0.cjs} +1 -1
  16. package/dist/{actionItem-BzMI_4-S.js → actionItem-qE9LsFqm.js} +2 -2
  17. package/dist/{alarmLevelChart-CxmiBIKh.cjs → alarmLevelChart-BJUN6uhz.cjs} +1 -1
  18. package/dist/{alarmLevelChart-Bp3SLCMe.js → alarmLevelChart-C2rcMJPA.js} +2 -2
  19. package/dist/{alertTable-B1w_i0VB.cjs → alertTable-JyslTUaA.cjs} +1 -1
  20. package/dist/{alertTable-DXzTm7mA.js → alertTable-MabuDvjf.js} +2 -2
  21. package/dist/{aliasObjectSelectorDemo-Dfanalux.js → aliasObjectSelectorDemo-Bjl-uDB-.js} +1 -1
  22. package/dist/{aliasObjectSelectorDemo-CRuq8zju.cjs → aliasObjectSelectorDemo-DvGwdYkR.cjs} +1 -1
  23. package/dist/{annualRainfallChart-DEeyac7q.cjs → annualRainfallChart-6X790ZGT.cjs} +1 -1
  24. package/dist/{annualRainfallChart-D4Rhc84p.js → annualRainfallChart-CPrYOUEf.js} +2 -2
  25. package/dist/{aqi-BzCTxj0q.js → aqi-A-Gkp216.js} +2 -2
  26. package/dist/{aqi-CBknBfTF.cjs → aqi-Lkuj0ZrX.cjs} +1 -1
  27. package/dist/{aqiIndass-CUs24FxP.cjs → aqiIndass-BmEPabTK.cjs} +1 -1
  28. package/dist/{aqiIndass-BJGsJsmz.js → aqiIndass-C5-Kkcy3.js} +2 -2
  29. package/dist/{areaDeformCurve-B8VGdoKK.cjs → areaDeformCurve-CwxiMGle.cjs} +1 -1
  30. package/dist/{areaDeformCurve-bSAkB3Pt.js → areaDeformCurve-DlgNJ86c.js} +2 -2
  31. package/dist/{arrayCard-kh5WRweD.cjs → arrayCard-BT0z17qG.cjs} +1 -1
  32. package/dist/{arrayCard-BkD5sytz.js → arrayCard-CObfB799.js} +2 -2
  33. package/dist/{audio-BTrvZwCy.js → audio-Bn2I1ImZ.js} +2 -2
  34. package/dist/{audio-DwJN2gca.cjs → audio-Bym36kYV.cjs} +1 -1
  35. package/dist/{bar-DYIb4143.js → bar-DfWXXY-N.js} +2 -2
  36. package/dist/{bar-DsyyzcxB.cjs → bar-Dil0v9op.cjs} +1 -1
  37. package/dist/{bmp-Dt3mSkAr.js → bmp-CeT9RXLN.js} +2 -2
  38. package/dist/{bmp-DbEyuBZw.cjs → bmp-DLagkJQk.cjs} +1 -1
  39. package/dist/{box--u3HQFj9.cjs → box-BSwNEOOm.cjs} +1 -1
  40. package/dist/{box-D7RsK5Qp.js → box-sKK6e8FZ.js} +2 -2
  41. package/dist/{chartConfigPanel-CD-csrX-.js → chartConfigPanel-BZr_oocW.js} +1 -1
  42. package/dist/{chartConfigPanel-DybQRqg6.cjs → chartConfigPanel-C8zuOnnw.cjs} +1 -1
  43. package/dist/circleBar-CEVEnIOl.js +310 -0
  44. package/dist/circleBar-Cc1XhutO.cjs +4 -0
  45. package/dist/{clock-Dc9jgxHT.cjs → clock-BVR7DxWw.cjs} +1 -1
  46. package/dist/{clock-Cj0HsizY.js → clock-Ce2TU9Sk.js} +2 -2
  47. package/dist/{clt-uJT1jgHk.js → clt-BjwA3UXi.js} +2 -2
  48. package/dist/{clt-CBbtQxMc.cjs → clt-Ccr31JZ6.cjs} +1 -1
  49. package/dist/{cmc-JJ6eTxB3.js → cmc-BQq87V3d.js} +2 -2
  50. package/dist/{cmc-CeTCKLBx.cjs → cmc-BlfyoHP6.cjs} +1 -1
  51. package/dist/{cmp-CGZ_2BdE.cjs → cmp-tkSQDbfg.cjs} +1 -1
  52. package/dist/{cmp-D9qlHJoW.js → cmp-vQXxgBL-.js} +2 -2
  53. package/dist/{conclusionCard-CwLwj3zj.cjs → conclusionCard-C-PVr98n.cjs} +1 -1
  54. package/dist/{conclusionCard-BsLeh3yq.js → conclusionCard-DM4ApsQB.js} +2 -2
  55. package/dist/{controlList-CYNS0ArB.js → controlList-BEmmLHMl.js} +2 -2
  56. package/dist/{controlList-l2ZYM6m5.cjs → controlList-TC47TfLl.cjs} +1 -1
  57. package/dist/{controlRecordList-N79_cTON.cjs → controlRecordList-3erAfDcs.cjs} +1 -1
  58. package/dist/{controlRecordList-BZmCvISO.js → controlRecordList-DhDHJtwe.js} +2 -2
  59. package/dist/{controlRecordListAPP-aDj520mp.js → controlRecordListAPP-CpUBiS4P.js} +2 -2
  60. package/dist/{controlRecordListAPP-DOzMDV4x.cjs → controlRecordListAPP-vEgcw-Jb.cjs} +1 -1
  61. package/dist/{crd-bm_BHuoV.js → crd-1rG4YIbH.js} +2 -2
  62. package/dist/{crd-CV4kMUTB.cjs → crd-B4l5I8qh.cjs} +1 -1
  63. package/dist/{ctrBtn-Cs6ZmfyJ.cjs → ctrBtn-VWH89sLL.cjs} +1 -1
  64. package/dist/{ctrBtn-DYceHTAq.js → ctrBtn-tS4wcB82.js} +3 -3
  65. package/dist/{ctrSet-XqnGgYPn.cjs → ctrSet-CEZN_ZxB.cjs} +1 -1
  66. package/dist/{ctrSet-B6PlTSBE.js → ctrSet-DqPSoVbY.js} +3 -3
  67. package/dist/{ctrSwitch-B9lHJgQn.cjs → ctrSwitch-BwzXteWO.cjs} +1 -1
  68. package/dist/{ctrSwitch-E0FM_4f2.js → ctrSwitch-C6NB375w.js} +3 -3
  69. package/dist/{dataManagement-BAHa-OHl.js → dataManagement-BTDS_3vY.js} +2 -2
  70. package/dist/{dataManagement-bKmkV2VY.cjs → dataManagement-DGwLRfQ6.cjs} +1 -1
  71. package/dist/{dataReport-B60Rb4sb.js → dataReport-CGOPPMdh.js} +2 -2
  72. package/dist/{dataReport-JcrjpK_j.cjs → dataReport-D5LEnjb8.cjs} +1 -1
  73. package/dist/{dataTable-CX6uktOu.cjs → dataTable-BFLXOIJQ.cjs} +1 -1
  74. package/dist/{dataTable-BmvewFlr.js → dataTable-CLC-1OyL.js} +1 -1
  75. package/dist/{datetime-DARBbZJx.js → datetime-B85mSlVM.js} +2 -2
  76. package/dist/{datetime-BPM_lGiY.cjs → datetime-BT3Hnugc.cjs} +1 -1
  77. package/dist/{deepClusterSlipSurface-BF77Vp7G.js → deepClusterSlipSurface-CtyAH9yU.js} +2 -2
  78. package/dist/{deepClusterSlipSurface-IywdiDlA.cjs → deepClusterSlipSurface-D1ykNWr0.cjs} +1 -1
  79. package/dist/{deepDataMatrix--zgQoWer.js → deepDataMatrix-9r7SN_yD.js} +2 -2
  80. package/dist/{deepDataMatrix-sRXkGqdm.cjs → deepDataMatrix-DrBq1qpE.cjs} +1 -1
  81. package/dist/{deepDisplacement3D-BYt49pzj.js → deepDisplacement3D-B4ASy7sx.js} +2 -2
  82. package/dist/{deepDisplacement3D-BET8Ftuc.cjs → deepDisplacement3D-DA5vZ67W.cjs} +1 -1
  83. package/dist/{deepDisplacementChart-BuuM485C.cjs → deepDisplacementChart-C3o9orfK.cjs} +1 -1
  84. package/dist/{deepDisplacementChart-D7loYUI5.cjs → deepDisplacementChart-CgoxqXJZ.cjs} +1 -1
  85. package/dist/{deepDisplacementChart-B2zPpsk6.js → deepDisplacementChart-CkUiHahr.js} +2 -2
  86. package/dist/{deepDisplacementChart-BGBhipUx.js → deepDisplacementChart-D9zDqBGA.js} +3 -3
  87. package/dist/{deepDisplacementView-Bwk9p_Qc.js → deepDisplacementView-BGkLYuZR.js} +1 -1
  88. package/dist/{deepDisplacementView-CTBH3IxP.cjs → deepDisplacementView-CWWwTgk2.cjs} +1 -1
  89. package/dist/{deepNodeTemperatureChart-CTLHLf0w.cjs → deepNodeTemperatureChart-Dlr_rGWK.cjs} +1 -1
  90. package/dist/{deepNodeTemperatureChart-BqTigCTs.js → deepNodeTemperatureChart-HocUDdx-.js} +2 -2
  91. package/dist/{deepTangentAngleChart-CHxB8OFL.cjs → deepTangentAngleChart-D42-PqJr.cjs} +1 -1
  92. package/dist/{deepTangentAngleChart-5oxzMpMF.js → deepTangentAngleChart-DHrpoyUx.js} +2 -2
  93. package/dist/{deepTemperatureField-Cr6YbuR_.cjs → deepTemperatureField-CDQ3EHs0.cjs} +1 -1
  94. package/dist/{deepTemperatureField-Bhk89D3D.js → deepTemperatureField-D-Y94MbX.js} +3 -3
  95. package/dist/{deepTrendChart-Ch94j4W9.cjs → deepTrendChart--P_hoapP.cjs} +1 -1
  96. package/dist/{deepTrendChart-CAbdVR8d.js → deepTrendChart-BAbneLe8.js} +2 -2
  97. package/dist/{deviceOnlineStatus-DxsTb4Vb.cjs → deviceOnlineStatus-BzaW1_sq.cjs} +1 -1
  98. package/dist/{deviceOnlineStatus-C5ODwFsY.js → deviceOnlineStatus-Dl7gymNg.js} +2 -2
  99. package/dist/{deviceStatus-CjFTpCaU.cjs → deviceStatus-CO82TxJ7.cjs} +1 -1
  100. package/dist/{deviceStatus-DPfOQCSX.js → deviceStatus-De2CZ71e.js} +2 -2
  101. package/dist/{displacementDataTable-BIqBEkul.cjs → displacementDataTable-BxzCj0eM.cjs} +1 -1
  102. package/dist/{displacementDataTable-DG36VWok.js → displacementDataTable-Cb6j2M0X.js} +2 -2
  103. package/dist/{displacementTrajectoryChart-Cpmj24Jn.js → displacementTrajectoryChart-Bnqkuojg.js} +2 -2
  104. package/dist/{displacementTrajectoryChart-DRltcPfa.cjs → displacementTrajectoryChart-Bvw8SXfA.cjs} +1 -1
  105. package/dist/{displacementTrendChart-DpD79zii.cjs → displacementTrendChart-BdKvJ_cg.cjs} +1 -1
  106. package/dist/{displacementTrendChart-D1yfRFQb.js → displacementTrendChart-Bx44ES1u.js} +2 -2
  107. package/dist/{dxf-zbCakRgh.js → dxf-BUzhRe-M.js} +2 -2
  108. package/dist/{dxf-C_9cH0WU.cjs → dxf-C1vBah2r.cjs} +1 -1
  109. package/dist/{dzc-CejqHneE.cjs → dzc-BfpvrofO.cjs} +1 -1
  110. package/dist/{dzc-CfPVaIgj.js → dzc-D4dyQ3F5.js} +2 -2
  111. package/dist/{emergencyPlan-LbeRH-P9.js → emergencyPlan-B77FpHXA.js} +3 -3
  112. package/dist/{emergencyPlan-dEwML5xC.cjs → emergencyPlan-CYTSTQ1M.cjs} +1 -1
  113. package/dist/{evn-BvgQ3o3T.cjs → evn-BZ-Z-4Jb.cjs} +1 -1
  114. package/dist/{evn-DsD_MKQd.js → evn-DNev-69R.js} +2 -2
  115. package/dist/{evolutionChart-Dt5-xRsy.cjs → evolutionChart-BFOYf02D.cjs} +1 -1
  116. package/dist/{evolutionChart-B4C9qB3I.js → evolutionChart-BzvKqueb.js} +3 -3
  117. package/dist/{fileViewer-DZIREgL0.cjs → fileViewer-Bp_r0QVV.cjs} +1 -1
  118. package/dist/{fileViewer-B0LdLy2P.js → fileViewer-CM0IzcIq.js} +2 -2
  119. package/dist/{filterBar-Bt6w4_xK.js → filterBar-BberY2VV.js} +2 -2
  120. package/dist/{filterBar-D_jcuqwP.cjs → filterBar-DWVjMD_x.cjs} +1 -1
  121. package/dist/{fireCombustionCurve-CHRd1nSv.cjs → fireCombustionCurve-DgMzD8yL.cjs} +1 -1
  122. package/dist/{fireCombustionCurve-C2rWY89D.js → fireCombustionCurve-jrmy4DGj.js} +3 -3
  123. package/dist/{fireFilterBar-DX8qH1rr.cjs → fireFilterBar-BC48RmrX.cjs} +1 -1
  124. package/dist/{fireFilterBar-CpwHRisZ.js → fireFilterBar-DF-Ks6z0.js} +2 -2
  125. package/dist/{fireHistoryTable-DcSgHt5q.js → fireHistoryTable-BUVE9iee.js} +2 -2
  126. package/dist/{fireHistoryTable-B38M6w5w.cjs → fireHistoryTable-CrHq0cDe.cjs} +1 -1
  127. package/dist/{gag-BErw_nsf.js → gag-Bs0D1C9m.js} +2 -2
  128. package/dist/{gag-qDNPdFJu.cjs → gag-CZpZ6eQ-.cjs} +1 -1
  129. package/dist/{gasStationList-NhJa4GO6.cjs → gasStationList-C54rlH2H.cjs} +1 -1
  130. package/dist/{gasStationList-BREZbC_k.js → gasStationList-q8FSSJjf.js} +2 -2
  131. package/dist/{geo3dViewer-zAN1eIza.js → geo3dViewer-Cdps3sOg.js} +3 -3
  132. package/dist/{geo3dViewer-D9uSt0up.cjs → geo3dViewer-DJ1OOmiw.cjs} +1 -1
  133. package/dist/{glbModel-i6HvK0m8.js → glbModel-BQZw2tmX.js} +2 -2
  134. package/dist/{glbModel-C4FiDMM5.cjs → glbModel-BaOSi3PQ.cjs} +1 -1
  135. package/dist/{globalObjectSelector-BrVwJEgp.js → globalObjectSelector-dPDr-SwP.js} +1 -1
  136. package/dist/{globalObjectSelector-CR74psMa.cjs → globalObjectSelector-pKS-LbL5.cjs} +1 -1
  137. package/dist/{gnssFilterBar-BkfBQWXF.cjs → gnssFilterBar-DIYcdyt2.cjs} +1 -1
  138. package/dist/{gnssFilterBar-BEHXIIKI.js → gnssFilterBar-DhxGrpar.js} +2 -2
  139. package/dist/{gnssHistoryTable-CQ-7ESYj.cjs → gnssHistoryTable--sfVbK9d.cjs} +1 -1
  140. package/dist/{gnssHistoryTable-DDWGE_ge.js → gnssHistoryTable-C86JeDPw.js} +2 -2
  141. package/dist/{gnssMapView-C9iRAzym.js → gnssMapView-BHXc3ba-.js} +4 -4
  142. package/dist/{gnssMapView-P6ed3l_W.cjs → gnssMapView-kN3RPWGm.cjs} +2 -2
  143. package/dist/{gnssSectionProfile-BIqyABEf.js → gnssSectionProfile-BZXCMTew.js} +2 -2
  144. package/dist/{gnssSectionProfile-CIZnF7VA.cjs → gnssSectionProfile-LfNkbkxf.cjs} +1 -1
  145. package/dist/{gnssTimeSeriesChart-BgIM5U-H.cjs → gnssTimeSeriesChart-BEcnvTpK.cjs} +1 -1
  146. package/dist/{gnssTimeSeriesChart-DqH9JFBF.js → gnssTimeSeriesChart-DXkggr52.js} +2 -2
  147. package/dist/{gnssXYTrajectory-CH8864n6.cjs → gnssXYTrajectory-BaEn6CUq.cjs} +1 -1
  148. package/dist/{gnssXYTrajectory-BviUjxG9.js → gnssXYTrajectory-D91N4Xgf.js} +2 -2
  149. package/dist/{grd-BhpBxrpa.cjs → grd-DL4xdMnq.cjs} +1 -1
  150. package/dist/{grd-DfkGlcW6.js → grd-fhe6Nr-d.js} +2 -2
  151. package/dist/{grdIndass-ByznFwzc.js → grdIndass-C38kMEVO.js} +2 -2
  152. package/dist/{grdIndass-DhMfHz31.cjs → grdIndass-sudnc_1i.cjs} +1 -1
  153. package/dist/{grg-uzBlEm_K.cjs → grg-CY05bgLJ.cjs} +1 -1
  154. package/dist/{grg-CVBoetQY.js → grg-ClkM0Euh.js} +2 -2
  155. package/dist/{gridview-CyXCqWKq.cjs → gridview-5-N28emY.cjs} +1 -1
  156. package/dist/{gridview-Dt3i1t5d.js → gridview-CmIsQl4f.js} +2 -2
  157. package/dist/{groundwaterFilterBar-C4xCPqa_.cjs → groundwaterFilterBar-Baf5mno6.cjs} +1 -1
  158. package/dist/{groundwaterFilterBar-BbS81e9a.js → groundwaterFilterBar-DOCf6QOH.js} +2 -2
  159. package/dist/{groundwaterProfileChart-DvjFvCm5.cjs → groundwaterProfileChart-D7x5NPBQ.cjs} +2 -2
  160. package/dist/{groundwaterProfileChart-BBPFrt5W.js → groundwaterProfileChart-DV93ciH9.js} +3 -3
  161. package/dist/{groundwaterTimeCurve-CKlvc2nQ.js → groundwaterTimeCurve-DN78_iC6.js} +3 -3
  162. package/dist/{groundwaterTimeCurve-Cb3xlM78.cjs → groundwaterTimeCurve-DoYn-orO.cjs} +1 -1
  163. package/dist/{groupCard-BBzDl9uX.js → groupCard-CkeWgIMb.js} +2 -2
  164. package/dist/{groupCard-BVdjzdqF.cjs → groupCard-rYaT3-cp.cjs} +1 -1
  165. package/dist/{headerBar-Dty08mHR.js → headerBar-B4YYVyvj.js} +2 -2
  166. package/dist/{headerBar-B5Z8UviF.cjs → headerBar-CGTIy9gq.cjs} +1 -1
  167. package/dist/{history-TkSKA8F1.js → history-CQLe7qjz.js} +1 -1
  168. package/dist/{history-yI8XiwXi.cjs → history-hB9IXyXf.cjs} +1 -1
  169. package/dist/{index-YNdVib_6.js → index-BSe6vVpg.js} +9 -7
  170. package/dist/{index-6QhTSPkL.cjs → index-D_jfRmwX.cjs} +2 -2
  171. package/dist/{insarDeformChart-C9UkWIL9.js → insarDeformChart-BG30eLJy.js} +2 -2
  172. package/dist/{insarDeformChart-Dr9Ve1vY.cjs → insarDeformChart-D5dUxNUL.cjs} +1 -1
  173. package/dist/{insarImageViewer-DAKBn2vV.cjs → insarImageViewer-6te7Bb9M.cjs} +1 -1
  174. package/dist/{insarImageViewer-DZbq2xch.js → insarImageViewer-BKbsON-7.js} +2 -2
  175. package/dist/{kds-__I8-o5i.js → kds-BBs5KLbC.js} +2 -2
  176. package/dist/{kds-BkH8cJCu.cjs → kds-rghpd9It.cjs} +1 -1
  177. package/dist/{kpiCard-fRfv1QPb.cjs → kpiCard-BLsNBQkw.cjs} +1 -1
  178. package/dist/{kpiCard-BzuF0qdE.js → kpiCard-CnLkxWFF.js} +2 -2
  179. package/dist/{landslideMap-D84pku4Y.js → landslideMap-CGSfkqrJ.js} +3 -3
  180. package/dist/{landslideMap-zD8SU2Lh.cjs → landslideMap-MuSpB9hJ.cjs} +1 -1
  181. package/dist/{landslideWarning-0mckvEoZ.js → landslideWarning-CIaxRrq-.js} +5 -5
  182. package/dist/{landslideWarning-Cq-di-hN.cjs → landslideWarning-DtZ_MUcL.cjs} +1 -1
  183. package/dist/{layerTabs-COzqQ9mn.js → layerTabs-BNN_oExB.js} +2 -2
  184. package/dist/{layerTabs-C2zq6a5M.cjs → layerTabs-CBRl49tW.cjs} +1 -1
  185. package/dist/{leaflet-src-2tPn7QVH.js → leaflet-src-BS6D4HOn.js} +1 -1
  186. package/dist/{leaflet-src-D8MF2j44.cjs → leaflet-src-BqUAMm-L.cjs} +1 -1
  187. package/dist/{lerc-BHcVhBOn.cjs → lerc-BkbpZ602.cjs} +1 -1
  188. package/dist/{lerc-BCmG0CMS.js → lerc-DyigC_35.js} +2 -2
  189. package/dist/{lin-niA_T9Ql.cjs → lin-DbW2fGY6.cjs} +1 -1
  190. package/dist/{lin-CQ6TCBCr.js → lin-Diy7wBX_.js} +2 -2
  191. package/dist/{linIndass-nZx16Vos.cjs → linIndass-CEXBGF_E.cjs} +1 -1
  192. package/dist/{linIndass-J9rdji6E.js → linIndass-yhJRlHL9.js} +2 -2
  193. package/dist/{lst-Cw1XCAv0.cjs → lst-B_phUMUR.cjs} +1 -1
  194. package/dist/{lst-DieyrYCh.js → lst-DXp1RKIW.js} +2 -2
  195. package/dist/{manualEntry-ChhTpAF2.cjs → manualEntry-D25XuJLF.cjs} +1 -1
  196. package/dist/{manualEntry-CCmyPMJm.js → manualEntry-DoUvp9Ru.js} +2 -2
  197. package/dist/{mapBackground-BzOdjhnZ.cjs → mapBackground-BjmFd9ki.cjs} +1 -1
  198. package/dist/{mapBackground-CiiG2nHi.js → mapBackground-CE_h3Ygz.js} +3 -3
  199. package/dist/{mappingList-CoBD8D27.js → mappingList-BOCJZT5X.js} +2 -2
  200. package/dist/{mappingList-D42mILiq.cjs → mappingList-BrSnUWOL.cjs} +1 -1
  201. package/dist/{markdownViewer-DHs9ekCh.cjs → markdownViewer-Cff9ghNc.cjs} +1 -1
  202. package/dist/{markdownViewer-C3HUXDvf.js → markdownViewer-DhAZMYeT.js} +2 -2
  203. package/dist/{mix-control-modal-BEwriuWS.js → mix-control-modal-BjemYRFb.js} +1 -1
  204. package/dist/{mix-control-modal-DGd2S6Jd.cjs → mix-control-modal-BwUJVqab.cjs} +1 -1
  205. package/dist/{mixGrid-Cnq99D09.cjs → mixGrid-B8YIHqnL.cjs} +1 -1
  206. package/dist/{mixGrid-CBenxHD_.js → mixGrid-D0RS1hP8.js} +2 -2
  207. package/dist/mixdashboards.cjs +1 -1
  208. package/dist/mixdashboards.css +1 -1
  209. package/dist/mixdashboards.js +1 -1
  210. package/dist/{mixiotObjectListApi-CKJLXcnf.js → mixiotObjectListApi-0k4bWVaU.js} +1 -1
  211. package/dist/{mixiotObjectListApi-e1qL7PHh.cjs → mixiotObjectListApi-DCZS6BVv.cjs} +1 -1
  212. package/dist/{mjpegCamera-D8lB701i.js → mjpegCamera-B154Si_B.js} +2 -2
  213. package/dist/{mjpegCamera-DDFrZo-x.cjs → mjpegCamera-BnVTg0Lm.cjs} +1 -1
  214. package/dist/{monitorAlert-Z1dFDfPh.js → monitorAlert-CyMjSTN1.js} +2 -2
  215. package/dist/{monitorAlert-C-mo-lDe.cjs → monitorAlert-DPxWS9QX.cjs} +1 -1
  216. package/dist/{monitorData-CNRfV5Wt.cjs → monitorData-D26C9roU.cjs} +1 -1
  217. package/dist/{monitorData-DZhO9Gos.js → monitorData-Dj5BVCuT.js} +2 -2
  218. package/dist/{monitorSpeedChart-C5pN46lO.js → monitorSpeedChart-BW0WSxMq.js} +1 -1
  219. package/dist/{monitorSpeedChart-DrRdMdGD.cjs → monitorSpeedChart-CJKH1fzZ.cjs} +1 -1
  220. package/dist/{mxa-COpw24fq.cjs → mxa-Bjo669lB.cjs} +1 -1
  221. package/dist/{mxa-BFQ70ksk.js → mxa-hUi4cxF8.js} +2 -2
  222. package/dist/{myValue-Dosl4Ro5.js → myValue-CWgB8wXV.js} +2 -2
  223. package/dist/{myValue-Eb3asTOC.cjs → myValue-Dwnr4chp.cjs} +1 -1
  224. package/dist/{myValueList-mcqRZanE.cjs → myValueList-DkTw4JGo.cjs} +1 -1
  225. package/dist/{myValueList-Dkc10vr6.js → myValueList-FnOvSFZY.js} +2 -2
  226. package/dist/{objectList-FWkZ6PAs.js → objectList-BFWyPDsT.js} +3 -3
  227. package/dist/{objectList-D4owr3ED.cjs → objectList-D80Djewk.cjs} +1 -1
  228. package/dist/{objectListAPP-Bzevu1od.cjs → objectListAPP-DswrerFl.cjs} +1 -1
  229. package/dist/{objectListAPP-CdfeZTgm.js → objectListAPP-v-77Iv0Q.js} +3 -3
  230. package/dist/{photo-Dmxxqgrg.cjs → photo-BB4Gw2Lt.cjs} +1 -1
  231. package/dist/{photo-DxXTYq73.js → photo-BD1wsoMA.js} +2 -2
  232. package/dist/{pie-BxpiCEYe.cjs → pie-CF7TOtYc.cjs} +1 -1
  233. package/dist/{pie-COixdWUz.js → pie-DbdEUPCK.js} +2 -2
  234. package/dist/{placeholder-Ole-Or58.cjs → placeholder-BOccjuqd.cjs} +1 -1
  235. package/dist/{placeholder-CLLNLxRC.js → placeholder-D-HAVizJ.js} +1 -1
  236. package/dist/{pressBtn-C7Y-B8Dz.js → pressBtn-BC3swgbC.js} +3 -3
  237. package/dist/{pressBtn-DwKg9PbD.cjs → pressBtn-CPq8TR59.cjs} +1 -1
  238. package/dist/{processTable-CTkwZWWJ.js → processTable-DaJ2Pg_9.js} +2 -2
  239. package/dist/{processTable-DDcKkjJx.cjs → processTable-lTtB7CTc.cjs} +1 -1
  240. package/dist/{progressBar-9npgJ9jD.js → progressBar-CC8Q2OER.js} +2 -2
  241. package/dist/{progressBar-7qHg67Sf.cjs → progressBar-kUD-_OPJ.cjs} +1 -1
  242. package/dist/{progressCircle-Xgjnl1KF.cjs → progressCircle-BeNDO2hA.cjs} +1 -1
  243. package/dist/{progressCircle-DP08TX08.js → progressCircle-Db80yyht.js} +2 -2
  244. package/dist/{qrcode-ClTSNzEN.js → qrcode-B9fWXB1K.js} +2 -2
  245. package/dist/{qrcode-D6wDMo-f.cjs → qrcode-CHjotAZa.cjs} +1 -1
  246. package/dist/{raceBar-C8mVFHnd.cjs → raceBar-7erk37v3.cjs} +1 -1
  247. package/dist/{raceBar-CTmsN8VC.js → raceBar-CePhU5ss.js} +2 -2
  248. package/dist/{rad-DWCSD35t.js → rad-C8g0iDud.js} +2 -2
  249. package/dist/{rad-Dxaakm82.cjs → rad-DRgdp3Dj.cjs} +1 -1
  250. package/dist/{radarMapViewer-eEBE3MS-.js → radarMapViewer-BBdp3bai.js} +2 -2
  251. package/dist/{radarMapViewer-U7IQJjQs.cjs → radarMapViewer-BGNSThTO.cjs} +1 -1
  252. package/dist/{rainfallFilterBar-DJTDGu7Z.js → rainfallFilterBar-BaFq5AMN.js} +2 -2
  253. package/dist/{rainfallFilterBar-ow_wdOwq.cjs → rainfallFilterBar-DWQ_Ju1I.cjs} +1 -1
  254. package/dist/{rainfallTimeCurve-CwGmJhxu.js → rainfallTimeCurve-BCCLl96H.js} +3 -3
  255. package/dist/{rainfallTimeCurve-BL1I5Z2D.cjs → rainfallTimeCurve-DLiSwNz7.cjs} +1 -1
  256. package/dist/{rangeLin-BqcJpIva.js → rangeLin-BvCj8AtO.js} +2 -2
  257. package/dist/{rangeLin-BEz9xapa.cjs → rangeLin-Cb4zfE37.cjs} +1 -1
  258. package/dist/{realtimeEvolutionMap-NOkyU7G3.js → realtimeEvolutionMap-0TuKcy-s.js} +2 -2
  259. package/dist/{realtimeEvolutionMap-mzXlR8gS.cjs → realtimeEvolutionMap-v7jVBoIu.cjs} +1 -1
  260. package/dist/{regionBar-DDk-2UWS.js → regionBar-Clb2V4gU.js} +2 -2
  261. package/dist/{regionBar-CEfz0Yol.cjs → regionBar-Dupszkpe.cjs} +1 -1
  262. package/dist/{request-BfG3yDz6.cjs → request-DW9TC8Xi.cjs} +1 -1
  263. package/dist/{request-BIXfJXjX.js → request-DWmmmokT.js} +1 -1
  264. package/dist/{retainer1-Ch1oZMeA.cjs → retainer1-DYtk4iLO.cjs} +1 -1
  265. package/dist/{retainer1-Cz5rXIJj.js → retainer1-Dtoei11L.js} +3 -3
  266. package/dist/{retainer2-DeelXgAZ.js → retainer2-BQCLjhIR.js} +3 -3
  267. package/dist/{retainer2-DJ1R2GJE.cjs → retainer2-DVs1WnkX.cjs} +1 -1
  268. package/dist/{retainerRecordList-D3MsCnqy.cjs → retainerRecordList-CD2Yy7PY.cjs} +1 -1
  269. package/dist/{retainerRecordList-DyhfjtfF.js → retainerRecordList-CbwKhACx.js} +2 -2
  270. package/dist/{retainerRecordListAPP-B_hCyRak.cjs → retainerRecordListAPP-C9xs1PRu.cjs} +1 -1
  271. package/dist/{retainerRecordListAPP-3Gr7db3D.js → retainerRecordListAPP-CRAleqZ3.js} +2 -2
  272. package/dist/{ringTopN-fLinQVwX.cjs → ringTopN-BsFSaLOc.cjs} +1 -1
  273. package/dist/{ringTopN-t9xaVCWg.js → ringTopN-DM-GPr--.js} +2 -2
  274. package/dist/{riskRegionTable-BThwQbTf.js → riskRegionTable-Dijf4M77.js} +2 -2
  275. package/dist/{riskRegionTable-CagcISBC.cjs → riskRegionTable-DyX3ILpa.cjs} +1 -1
  276. package/dist/{sankey-Bwm0omQr.js → sankey-BXeW_4ug.js} +2 -2
  277. package/dist/{sankey-BY_nwThw.cjs → sankey-BhxKpTUY.cjs} +1 -1
  278. package/dist/{scd-DeYC1Rqx.js → scd-B9hxNoP7.js} +2 -2
  279. package/dist/{scd-Bs1dG1w8.cjs → scd-Bx4r2OUw.cjs} +1 -1
  280. package/dist/{sideMenu-Db_Nc_xz.js → sideMenu-CWVg-8nL.js} +2 -2
  281. package/dist/{sideMenu-CAEh3bwF.cjs → sideMenu-DXSm9VHF.cjs} +1 -1
  282. package/dist/{slopeStability-BWg6jhBB.cjs → slopeStability-CY1PZxDS.cjs} +1 -1
  283. package/dist/{slopeStability-CVC68Qcj.js → slopeStability-xMQ-ojzU.js} +2 -2
  284. package/dist/{speedCurve-DNNEIz4o.cjs → speedCurve-D6dr-bJr.cjs} +1 -1
  285. package/dist/{speedCurve-CK4CXHeC.js → speedCurve-DhC01mj1.js} +2 -2
  286. package/dist/{stressFilterBar-Cigl3IyR.cjs → stressFilterBar-Bu9WvVMO.cjs} +1 -1
  287. package/dist/{stressFilterBar-DQ8nq8jV.js → stressFilterBar-C0z1Gv_y.js} +2 -2
  288. package/dist/{stressTimeCurve-BiduKfcg.cjs → stressTimeCurve-BHYiOflq.cjs} +1 -1
  289. package/dist/{stressTimeCurve-BEANw1F8.js → stressTimeCurve-Ds0x4Y2-.js} +3 -3
  290. package/dist/{swiper-BgkvIN5U.js → swiper-CX3n8tRr.js} +2 -2
  291. package/dist/{swiper-MIRXMnxk.cjs → swiper-x2fO1hP6.cjs} +1 -1
  292. package/dist/{terminalConfigList-C3zRbQvM.cjs → terminalConfigList-BaqYxNce.cjs} +1 -1
  293. package/dist/{terminalConfigList-B3lqvQel.js → terminalConfigList-CEmh2bmP.js} +2 -2
  294. package/dist/{terminalList-BevfdySj.js → terminalList-IcUzfpX7.js} +2 -2
  295. package/dist/{terminalList-ArxJ1jdO.cjs → terminalList-JDYLXQm8.cjs} +1 -1
  296. package/dist/{terminalListAPP-CbpVft_s.js → terminalListAPP-DJPE15n_.js} +2 -2
  297. package/dist/{terminalListAPP-Cs0nnBfc.cjs → terminalListAPP-mf4ktSSh.cjs} +1 -1
  298. package/dist/{textbox-CjkfmdaO.js → textbox-C-Y1HvqZ.js} +2 -2
  299. package/dist/{textbox-DC9YLTn5.cjs → textbox-DKmAtfVt.cjs} +1 -1
  300. package/dist/{timeQueryBar-B69eldHQ.cjs → timeQueryBar-BtJ2cj9g.cjs} +1 -1
  301. package/dist/{timeQueryBar-CXd9yNgD.js → timeQueryBar-DIcLmpIt.js} +1 -1
  302. package/dist/{timeSeries-fB14CgRy.cjs → timeSeries-CLf2hG3e.cjs} +1 -1
  303. package/dist/{timeSeries-CLnLd-gX.js → timeSeries-CRX1cyHg.js} +3 -3
  304. package/dist/{timeSeriesCurve-DOaxDpjr.cjs → timeSeriesCurve-BFI5FhFH.cjs} +1 -1
  305. package/dist/{timeSeriesCurve-CMcCzR13.js → timeSeriesCurve-n3wz8Mxb.js} +3 -3
  306. package/dist/{toggleBtn-CWmuTxSD.js → toggleBtn-FHJcHU57.js} +2 -2
  307. package/dist/{toggleBtn-BiUyrx_o.cjs → toggleBtn-_eVw7cFF.cjs} +1 -1
  308. package/dist/{trajectoryConfigPanel-D7IDlQIH.cjs → trajectoryConfigPanel-Cb3zO4CT.cjs} +1 -1
  309. package/dist/{trajectoryConfigPanel-DKLN3KY5.js → trajectoryConfigPanel-Cx9etpM1.js} +1 -1
  310. package/dist/{trajectoryScatter-CL-2FKZe.cjs → trajectoryScatter-CFK0r66T.cjs} +1 -1
  311. package/dist/{trajectoryScatter-TEactc8J.js → trajectoryScatter-DJmJleJX.js} +2 -2
  312. package/dist/{universalConfigPanel-wicv4Ypw.js → universalConfigPanel-B20mU2Sl.js} +1 -1
  313. package/dist/{universalConfigPanel-B8JIiLXp.cjs → universalConfigPanel-BokVmi4_.cjs} +1 -1
  314. package/dist/{universalTable-8e3LrZvD.js → universalTable-CujXddX_.js} +2 -2
  315. package/dist/{universalTable-BlTdL3c0.cjs → universalTable-DXSknxAA.cjs} +1 -1
  316. package/dist/{video-nPkrKQyL.cjs → video-bDG3FIvs.cjs} +1 -1
  317. package/dist/{video-DpRcCZZQ.js → video-jLvJ1nV3.js} +2 -2
  318. package/dist/{videoMonitor-Z_7cZk5Y.js → videoMonitor-Ccjm9-fc.js} +2 -2
  319. package/dist/{videoMonitor-DOVw5mE0.cjs → videoMonitor-DW18FR5n.cjs} +1 -1
  320. package/dist/{vlu-DEIgGiO-.cjs → vlu-B6qIdY2a.cjs} +1 -1
  321. package/dist/{vlu-BQCrHSlq.js → vlu-C-DiuW88.js} +2 -2
  322. package/dist/{warningOverview-DXJNk5bT.cjs → warningOverview-BRq3FzBg.cjs} +1 -1
  323. package/dist/{warningOverview-C7J5aXTJ.js → warningOverview-DDX_AWdV.js} +3 -3
  324. package/dist/{weather-C1sjTcwC.js → weather-CD7aUsDs.js} +2 -2
  325. package/dist/{weather-B1Pfcn75.cjs → weather-Cev2QZRa.cjs} +1 -1
  326. package/dist/{windLin-vlM63Hu7.js → windLin-4eEs7Pf9.js} +2 -2
  327. package/dist/{windLin-QKZKJ1h_.cjs → windLin-Dko1HIa_.cjs} +1 -1
  328. package/package.json +1 -1
  329. package/dist/circleBar-4md65KCX.js +0 -305
  330. package/dist/circleBar-DJY37bwB.cjs +0 -5
@@ -1 +1 @@
1
- "use strict";var an=Object.defineProperty,sn=Object.defineProperties;var ln=Object.getOwnPropertyDescriptors;var ht=Object.getOwnPropertySymbols;var cn=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable;var Ie=Math.pow,yt=(l,o,t)=>o in l?an(l,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[o]=t,Ke=(l,o)=>{for(var t in o||(o={}))cn.call(o,t)&&yt(l,t,o[t]);if(ht)for(var t of ht(o))dn.call(o,t)&&yt(l,t,o[t]);return l},Qe=(l,o)=>sn(l,ln(o));var _e=(l,o,t)=>new Promise((a,s)=>{var d=y=>{try{p(t.next(y))}catch(E){s(E)}},c=y=>{try{p(t.throw(y))}catch(E){s(E)}},p=y=>y.done?a(y.value):Promise.resolve(y.value).then(d,c);p((t=t.apply(l,o)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const et=require("element-plus/es");require("element-plus/es/components/base/style/css");require("element-plus/es/components/date-picker/style/css");require("element-plus/es/components/select/style/css");require("element-plus/es/components/option/style/css");const e=require("vue"),k=require("./three.module-CjayKmiG.cjs"),un=require("./OrbitControls-uuLGjaqy.cjs"),bt=require("./CSS2DRenderer-nQ2DN9Uc.cjs"),nt=require("./ExtensionUtilities-ClTuwtC-.cjs"),we=require("./index-6QhTSPkL.cjs"),mn=require("./BaseComponent-bzb58Hhs.cjs"),pn=require("./titleStyle-NSnz6cUg.cjs"),xe=require("./leaflet-src-D8MF2j44.cjs");;/* empty css */const kt=require("./ele-glbModel-icon-ByACDCrv.cjs");function Et(l){const t=JSON.parse(l).properties,a=vn(t.materials||[]),s=new Map;a.forEach(p=>s.set(p.id,p));const d=t.nodes,c=fn(d,s);return{name:t.name||"Untitled",id:t.id||"",version:t.version||"",materials:a,rootNode:c}}function vn(l){return l.map(o=>{var t,a,s;return{id:((t=o.properties)==null?void 0:t.id)||"",name:((a=o.properties)==null?void 0:a.name)||"",color:typeof((s=o.properties)==null?void 0:s.color)=="number"?o.properties.color:8947848}})}function fn(l,o){var s;if(!l||l.length===0)return wt("root");const t=new Map,a=[];for(const d of l){const c=gn(d,o);t.set(c.id,c),a.push({node:c,parentId:d.parentId})}for(const{node:d,parentId:c}of a)c&&t.has(c)&&t.get(c).children.push(d);return((s=a[0])==null?void 0:s.node)||wt("root")}function wt(l){return{id:"empty",name:l,classKey:"EmptyNode",visible:!0,color:8947848,children:[],raw:{}}}function gn(l,o){const t=l.properties||{},a=l.classKey||"";let s=8947848,d;if(t.materialId){d=t.materialId;const y=o.get(d);y&&(s=y.color)}else typeof t.color=="number"&&(s=t.color);const c={id:t.id||Math.random().toString(36).slice(2),name:t.name||a,classKey:a,visible:t.visible!==void 0?!!t.visible:!0,color:s,materialId:d,children:[],raw:t},p=hn(a,t);return p&&(c.mesh=p),c}function hn(l,o){if(l==="TriMeshNode"&&o.savedData)return yn(o.savedData);if(l==="ShapeNode"||l==="MultiShapeNode")return bn(o);if((l==="GeoPlineNode"||l==="PlineNode")&&o.points)return kn(o)}function yn(l){try{const o=typeof l=="string"?JSON.parse(l):l;if(!o.pos||!o.idx)return;const t=new Float32Array(o.pos),a=new Uint32Array(o.idx),s=o.uv?new Float32Array(o.uv):new Float32Array(0),d=o.edgePos?new Float32Array(o.edgePos):new Float32Array(0),c=Mt(t,a);return{positions:t,indices:a,normals:c,uvs:s,edgePositions:d}}catch(o){return}}function bn(l){const o=l.shape;if(!o)return;const t=o.properties||o,a=t.mesh||t._mesh;if(!a)return;const s=a.properties||a,d=s.faces||s._faces;if(!d)return;const c=d.properties||d;if(!c.position)return;const p=Ye(c.position),y=En(c.index),E=c.normal?Ye(c.normal):Mt(p,y),C=c.uv?Ye(c.uv):new Float32Array(0),g=s.edges||s._lines,b=(g==null?void 0:g.properties)||g,N=b!=null&&b.position?Ye(b.position):new Float32Array(0);if(p.length!==0)return{positions:p,indices:y,normals:E,uvs:C,edgePositions:N}}function kn(l){const o=l.points;if(!o||!Array.isArray(o))return;const t=o.map(s=>s.properties?{x:s.properties.x||0,y:s.properties.y||0,z:s.properties.z||0}:{x:s.x||0,y:s.y||0,z:s.z||0});if(t.length<2)return;const a=[];for(let s=0;s<t.length-1;s++)a.push(t[s].x,t[s].y,t[s].z),a.push(t[s+1].x,t[s+1].y,t[s+1].z);return{positions:new Float32Array(0),indices:new Uint32Array(0),normals:new Float32Array(0),uvs:new Float32Array(0),edgePositions:new Float32Array(a)}}function Ye(l){var o;return l instanceof Float32Array?l:(o=l==null?void 0:l.properties)!=null&&o.buffer?new Float32Array(l.properties.buffer):Array.isArray(l)?new Float32Array(l):new Float32Array(0)}function En(l){var o;return l instanceof Uint32Array?l:(o=l==null?void 0:l.properties)!=null&&o.buffer?new Uint32Array(l.properties.buffer):Array.isArray(l)?new Uint32Array(l):new Uint32Array(0)}function Mt(l,o){if(l.length===0||o.length===0)return new Float32Array(0);const t=new Float32Array(l.length);for(let a=0;a<o.length;a+=3){const s=o[a],d=o[a+1],c=o[a+2],p=l[s*3],y=l[s*3+1],E=l[s*3+2],C=l[d*3],g=l[d*3+1],b=l[d*3+2],N=l[c*3],w=l[c*3+1],x=l[c*3+2],G=C-p,I=g-y,U=b-E,X=N-p,me=w-y,pe=x-E,ve=I*pe-U*me,oe=U*X-G*pe,H=G*me-I*X,fe=Math.sqrt(ve*ve+oe*oe+H*H)||1;for(const m of[s,d,c])t[m*3]+=ve/fe,t[m*3+1]+=oe/fe,t[m*3+2]+=H/fe}for(let a=0;a<t.length;a+=3){const s=Math.sqrt(Ie(t[a],2)+Ie(t[a+1],2)+Ie(t[a+2],2))||1;t[a]/=s,t[a+1]/=s,t[a+2]/=s}return t}function Vt(l,o){if(o==="cf"){const a=l.cf;return a<50?[0/255,170/255,255/255]:a<150?[255/255,230/255,0/255]:a<300?[255/255,145/255,0/255]:a<500?[240/255,70/255,40/255]:[180/255,0/255,0/255]}if(o==="av"){const a=l.av;return a<-.6?[0/255,80/255,220/255]:a<-.1?[0/255,170/255,255/255]:Math.abs(a)<.1?[0/255,220/255,120/255]:a<.6?[255/255,185/255,0/255]:[220/255,30/255,30/255]}const t=Math.abs(l.rr);return l.rr<0?t<5?[0/255,180/255,255/255]:t<20?[0/255,120/255,255/255]:t<60?[40/255,70/255,220/255]:[20/255,35/255,150/255]:t<5?[255/255,230/255,0/255]:t<20?[255/255,165/255,0/255]:t<60?[235/255,85/255,0/255]:[180/255,0/255,0/255]}function wn(l){return l?Array.isArray(l.points)?l:l.data&&Array.isArray(l.data.points)?l.data:{points:[],radar:{e:0,n:0,rl:0}}:{points:[],radar:{e:0,n:0,rl:0}}}k.Mesh.prototype.raycast=nt.acceleratedRaycast;class Vn{constructor(o){this.container=o,this.raycaster=new k.Raycaster,this.animFrameId=0,this.needsUpdate=!0,this.nodeEntries=new Map,this.resizeObserver=null,this.deviceMarkers=new Map,this.radarLayers=new Map,this.animate=()=>{if(this.animFrameId=requestAnimationFrame(this.animate),this.controls.update(),!this.needsUpdate)return;const a=this.camera.position.clone().sub(this.controls.target);this.dynamicLight.position.copy(a),this.renderer.render(this.scene,this.camera),this.labelRenderer.render(this.scene,this.camera),this.needsUpdate=!1},k.Object3D.DEFAULT_UP.set(0,0,1),this.scene=new k.Scene,this.camera=new k.PerspectiveCamera(50,o.clientWidth/Math.max(o.clientHeight,1),.1,1e5),this.camera.position.set(500,-500,500),this.camera.up.set(0,0,1),this.renderer=new k.WebGLRenderer({antialias:!0,alpha:!0}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(o.clientWidth,o.clientHeight),o.appendChild(this.renderer.domElement),this.labelRenderer=new bt.CSS2DRenderer,this.labelRenderer.setSize(o.clientWidth,o.clientHeight),this.labelRenderer.domElement.style.position="absolute",this.labelRenderer.domElement.style.top="0",this.labelRenderer.domElement.style.left="0",this.labelRenderer.domElement.style.pointerEvents="none",this.labelRenderer.domElement.style.overflow="visible",o.appendChild(this.labelRenderer.domElement),this.controls=new un.OrbitControls(this.camera,this.renderer.domElement),this.controls.enableDamping=!1,this.controls.mouseButtons={LEFT:k.MOUSE.ROTATE,MIDDLE:k.MOUSE.PAN,RIGHT:k.MOUSE.PAN},this.controls.addEventListener("change",()=>{this.updateCameraNearFar(),this.needsUpdate=!0});const t=new k.AmbientLight(8947848,4);this.dynamicLight=new k.DirectionalLight(16777215,2),this.scene.add(t,this.dynamicLight),this.scene.add(new k.AxesHelper(250)),this.resizeObserver=new ResizeObserver(()=>this.resize()),this.resizeObserver.observe(o),this.animate()}loadDocument(o,t){return _e(this,null,function*(){this.clearModel();const a=this.flattenNodes(o.rootNode),s=a.filter(c=>c.mesh&&c.mesh.positions.length>0);t==null||t(`构建场景树 (${a.length} 节点)...`),this.buildGroupTree(o.rootNode,this.scene);let d=0;for(const c of s)this.createMeshForNode(c),d++,d%5===0&&(t==null||t(`创建网格 ${d}/${s.length}...`),yield new Promise(p=>setTimeout(p,0)));this.fitContent(),this.needsUpdate=!0})}flattenNodes(o){const t=[o];for(const a of o.children)t.push(...this.flattenNodes(a));return t}buildGroupTree(o,t){const a=new k.Group;a.name=o.name,a.visible=o.visible,t.add(a);const s={node:o,group:a};this.nodeEntries.set(o.id,s);for(const d of o.children)this.buildGroupTree(d,a)}createMeshForNode(o){var p,y;const t=this.nodeEntries.get(o.id);if(!t||!o.mesh)return;const{positions:a,indices:s,edgePositions:d}=o.mesh;if(a.length>0&&s.length>0){const E=new k.BufferGeometry;E.setAttribute("position",new k.BufferAttribute(a,3)),E.setIndex(new k.BufferAttribute(s,1)),E.computeVertexNormals(),E.computeBoundingBox(),E.boundsTree=new nt.MeshBVH(E);const C=new k.MeshLambertMaterial({color:new k.Color(o.color),side:k.DoubleSide,flatShading:!0}),g=new k.Mesh(E,C);g.name=o.name+"_mesh",t.group.add(g),t.meshObj=g}const c=(y=(p=o.raw)==null?void 0:p.displayMode)!=null?y:0;if(d.length>0&&c>0){const E=new k.BufferGeometry;E.setAttribute("position",new k.BufferAttribute(d,3)),E.computeBoundingBox();const C=new k.LineBasicMaterial({color:0,linewidth:1}),g=new k.LineSegments(E,C);g.name=o.name+"_edges",t.group.add(g),t.edgeObj=g}}setNodeVisible(o,t){const a=this.nodeEntries.get(o);a&&(this.setNodeVisibleRecursive(a.node,t),this.needsUpdate=!0)}setNodeVisibleRecursive(o,t){o.visible=t;const a=this.nodeEntries.get(o.id);a&&(a.group.visible=t);for(const s of o.children)this.setNodeVisibleRecursive(s,t)}fitContent(){try{this.scene.updateMatrixWorld(!0);const o=new k.Box3;if(this.scene.traverse(d=>{if(!(d instanceof k.AxesHelper)&&(d instanceof k.Mesh||d instanceof k.LineSegments)){const c=d.geometry;if(c&&c.attributes.position&&(c.computeBoundingBox(),c.boundingBox&&!c.boundingBox.isEmpty())){const p=c.boundingBox.clone();p.applyMatrix4(d.matrixWorld),o.union(p)}}}),o.isEmpty())return;const t=o.getCenter(new k.Vector3),a=o.getSize(new k.Vector3),s=Math.max(a.x,a.y,a.z);this.controls.target.copy(t),this.camera.position.set(t.x+s*.8,t.y-s*.8,t.z+s*.6),this.updateCameraNearFar(),this.controls.update(),this.needsUpdate=!0}catch(o){console.warn("[fitContent] error:",o)}}getVisibleMeshEntries(){const o=[];return this.nodeEntries.forEach(t=>{t.meshObj&&t.group.visible&&t.node.mesh&&o.push(t)}),o}addSectionLines(o,t){const a=new k.BufferGeometry;a.setAttribute("position",new k.BufferAttribute(o,3));const s=new k.LineBasicMaterial({color:t,linewidth:2,depthTest:!1}),d=new k.LineSegments(a,s);return d.renderOrder=999,d.name="__section_result__",this.scene.add(d),this.needsUpdate=!0,d}addSectionPath(o,t=16776960){const a=[];for(let p=0;p<o.length-1;p++)a.push(o[p].x,o[p].y,o[p].z),a.push(o[p+1].x,o[p+1].y,o[p+1].z);const s=new k.BufferGeometry;s.setAttribute("position",new k.BufferAttribute(new Float32Array(a),3));const d=new k.LineBasicMaterial({color:t,linewidth:3,depthTest:!1}),c=new k.LineSegments(s,d);return c.renderOrder=1e3,c.name="__section_path__",this.scene.add(c),this.needsUpdate=!0,c}clearSectionResults(){const o=[];this.scene.traverse(t=>{(t.name==="__section_result__"||t.name==="__section_path__")&&o.push(t)}),o.forEach(t=>{t.removeFromParent(),t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose()}),this.needsUpdate=!0}setTransparency(o){this.nodeEntries.forEach(t=>{if(t.meshObj){const a=t.meshObj.material;a.transparent=o,a.opacity=o?.4:1,a.depthWrite=!o,a.needsUpdate=!0}}),this.needsUpdate=!0}pickPoint(o){const t=this.renderer.domElement.getBoundingClientRect(),a=new k.Vector2((o.clientX-t.left)/t.width*2-1,-((o.clientY-t.top)/t.height)*2+1);this.raycaster.setFromCamera(a,this.camera);const s=[];this.scene.traverse(c=>{c instanceof k.Mesh&&c.name.endsWith("_mesh")&&c.visible&&s.push(c)});const d=this.raycaster.intersectObjects(s,!1);return d.length>0?d[0].point.clone():null}addPickMarker(o,t=16711680){const a=new k.SphereGeometry(1,16,16),s=new k.MeshBasicMaterial({color:t,depthTest:!1}),d=new k.Mesh(a,s);d.position.copy(o),d.renderOrder=998,d.name="__pick_marker__";const c=this.camera.position.distanceTo(this.controls.target);return d.scale.setScalar(c*.008),this.scene.add(d),this.needsUpdate=!0,d}addPickLine(o,t){const a=new k.BufferGeometry;a.setAttribute("position",new k.BufferAttribute(new Float32Array([o.x,o.y,o.z,t.x,t.y,t.z]),3));const s=new k.LineBasicMaterial({color:16776960,linewidth:2,depthTest:!1}),d=new k.LineSegments(a,s);return d.renderOrder=998,d.name="__pick_line__",this.scene.add(d),this.needsUpdate=!0,d}clearPickMarkers(){const o=[];this.scene.traverse(t=>{(t.name==="__pick_marker__"||t.name==="__pick_line__")&&o.push(t)}),o.forEach(t=>{t.removeFromParent(),t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose()}),this.needsUpdate=!0}addRadarLayer(o,t,a){if(this.removeRadarLayer(o),t.length===0)return;const s=new Float32Array(t.length*3),d=new Float32Array(t.length*3);for(let E=0;E<t.length;E++){const C=t[E],g=E*3;s[g]=C.e,s[g+1]=C.n,s[g+2]=C.rl;const b=Vt(C,a);d[g]=b[0],d[g+1]=b[1],d[g+2]=b[2]}const c=new k.BufferGeometry;c.setAttribute("position",new k.BufferAttribute(s,3)),c.setAttribute("color",new k.BufferAttribute(d,3)),c.computeBoundingSphere();const p=new k.PointsMaterial({size:5,sizeAttenuation:!1,vertexColors:!0,depthWrite:!1,depthTest:!1,toneMapped:!1}),y=new k.Points(c,p);y.renderOrder=900,y.name=`__radar_layer_${o}__`,this.scene.add(y),this.radarLayers.set(o,{cloud:y,pointIndex:t}),this.needsUpdate=!0}setRadarLayerVisible(o,t){const a=this.radarLayers.get(o);a&&(a.cloud.visible=t,this.needsUpdate=!0)}updateRadarLayerColors(o,t,a){const s=this.radarLayers.get(o);if(!s)return;const d=s.cloud.geometry.getAttribute("color"),c=d.array;for(let p=0;p<t.length;p++){const y=Vt(t[p],a),E=p*3;c[E]=y[0],c[E+1]=y[1],c[E+2]=y[2]}d.needsUpdate=!0,this.needsUpdate=!0}pickRadarPoint(o){const t=this.renderer.domElement.getBoundingClientRect(),a=new k.Vector2((o.clientX-t.left)/t.width*2-1,-((o.clientY-t.top)/t.height)*2+1),s=new k.Vector3;let d=.002,c=null;for(const[p,y]of this.radarLayers){if(!y.cloud.visible)continue;const C=y.cloud.geometry.getAttribute("position").array;for(let g=0;g<C.length;g+=3){if(s.set(C[g],C[g+1],C[g+2]).project(this.camera),s.z<-1||s.z>1)continue;const b=s.x-a.x,N=s.y-a.y,w=b*b+N*N;w<d&&(d=w,c={layerId:p,point:y.pointIndex[g/3]})}}return c}removeRadarLayer(o){const t=this.radarLayers.get(o);t&&(this.scene.remove(t.cloud),t.cloud.geometry.dispose(),t.cloud.material.dispose(),this.radarLayers.delete(o),this.needsUpdate=!0)}clearAllRadarLayers(){for(const[o]of this.radarLayers)this.removeRadarLayer(o)}addDeviceMarker(o,t,a){this.removeDeviceMarker(o);const s=new bt.CSS2DObject(a);return s.position.set(t.e,t.n,t.rl),s.name=`__device_marker_${o}__`,this.scene.add(s),this.deviceMarkers.set(o,s),this.needsUpdate=!0,s}updateDeviceMarkerPosition(o,t){const a=this.deviceMarkers.get(o);a&&(a.position.set(t.e,t.n,t.rl),this.needsUpdate=!0)}removeDeviceMarker(o){const t=this.deviceMarkers.get(o);t&&(this.scene.remove(t),this.deviceMarkers.delete(o),this.needsUpdate=!0)}removeAllDeviceMarkers(){for(const[o]of this.deviceMarkers)this.removeDeviceMarker(o)}setDeviceMarkerVisible(o,t){const a=this.deviceMarkers.get(o);a&&(a.visible=t,this.needsUpdate=!0)}setDeviceMarkersVisible(o){for(const[,t]of this.deviceMarkers)t.visible=o;this.needsUpdate=!0}clearModel(){const o=[];this.scene.children.forEach(t=>{t instanceof k.Group&&o.push(t)}),o.forEach(t=>{t.traverse(a=>{if(a.geometry&&a.geometry.dispose(),a.material){const s=a.material;Array.isArray(s)?s.forEach(d=>d.dispose()):s.dispose()}}),t.removeFromParent()}),this.nodeEntries.clear(),this.clearSectionResults()}resize(){const o=this.container.clientWidth,t=this.container.clientHeight;t<1||(this.camera.aspect=o/t,this.camera.updateProjectionMatrix(),this.renderer.setSize(o,t),this.labelRenderer.setSize(o,t),this.needsUpdate=!0)}updateCameraNearFar(){const o=this.camera.position.distanceTo(this.controls.target);o<1?(this.camera.near=.001,this.camera.far=100):o<10?(this.camera.near=.01,this.camera.far=1e3):o<100?(this.camera.near=.1,this.camera.far=1e4):o<1e3?(this.camera.near=1,this.camera.far=1e5):o<1e4?(this.camera.near=10,this.camera.far=1e6):o<1e5?(this.camera.near=100,this.camera.far=1e7):(this.camera.near=1e3,this.camera.far=1e8),this.camera.updateProjectionMatrix()}requestUpdate(){this.needsUpdate=!0}dispose(){var o;cancelAnimationFrame(this.animFrameId),(o=this.resizeObserver)==null||o.disconnect(),this.clearModel(),this.clearAllRadarLayers(),this.removeAllDeviceMarkers(),this.controls.dispose(),this.renderer.dispose(),this.renderer.domElement.remove(),this.labelRenderer.domElement.remove()}}function Nn(l,o){const t=new k.Vector3().subVectors(o,l).normalize();let a=new k.Vector3().crossVectors(t,new k.Vector3(0,0,1)).normalize();return a.lengthSq()<.01&&(a=new k.Vector3().crossVectors(t,new k.Vector3(1,0,0)).normalize()),{start:l.clone(),end:o.clone(),normal:a}}function _n(l){const o=[];for(let t=0;t<l.length-1;t++)o.push(Nn(l[t],l[t+1]));return o}const Nt=new WeakMap;function Mn(l,o){if(!l.mesh||l.mesh.positions.length===0||l.mesh.indices.length===0)return new Float32Array(0);let t=Nt.get(l);t||(t=new k.BufferGeometry,t.setAttribute("position",new k.BufferAttribute(l.mesh.positions,3)),t.setIndex(new k.BufferAttribute(l.mesh.indices,1)),t.boundsTree=new nt.MeshBVH(t),Nt.set(l,t));const a=t.boundsTree,s=[],d=new k.Line3;return a.shapecast({intersectsBounds:c=>o.intersectsBox(c),intersectsTriangle:c=>(Sn(c,o,d)&&s.push(d.start.x,d.start.y,d.start.z,d.end.x,d.end.y,d.end.z),!1)}),new Float32Array(s)}function Sn(l,o,t){const a=o.distanceToPoint(l.a),s=o.distanceToPoint(l.b),d=o.distanceToPoint(l.c);if(a>0&&s>0&&d>0||a<0&&s<0&&d<0||a===0&&s===0&&d===0)return!1;const c=[];if(tt(l.a,l.b,a,s,c),tt(l.b,l.c,s,d,c),tt(l.c,l.a,d,a,c),c.length>=2){t.start.copy(c[0]);let p=0,y=1;for(let E=1;E<c.length;E++){const C=c[0].distanceToSquared(c[E]);C>p&&(p=C,y=E)}return t.end.copy(c[y]),p>=1e-10}return!1}function tt(l,o,t,a,s){if(t*a<0){const d=t/(t-a);s.push(new k.Vector3().copy(l).lerp(o,d))}else Math.abs(t)<1e-5&&(s.length===0||s[s.length-1].distanceTo(l)>1e-5)&&s.push(l.clone())}function Cn(l,o,t){const a=[],s=new k.Vector3().subVectors(t,o),d=s.lengthSq();if(d<1e-6)return[];const c=(p,y,E)=>{const C=p-o.x,g=y-o.y,b=E-o.z;return(C*s.x+g*s.y+b*s.z)/d};for(let p=0;p<l.length;p+=6){const y=l[p],E=l[p+1],C=l[p+2],g=l[p+3],b=l[p+4],N=l[p+5],w=c(y,E,C),x=c(g,b,N);if(w>=0&&w<=1&&x>=0&&x<=1){a.push(y,E,C,g,b,N);continue}if(w<0&&x<0||w>1&&x>1)continue;const G=Math.min(w,x),I=Math.max(w,x),U=w<x?{x:y,y:E,z:C}:{x:g,y:b,z:N},X=w<x?{x:g,y:b,z:N}:{x:y,y:E,z:C},me=Math.max(G,0),pe=Math.min(I,1);if(me<pe){const ve=I-G,oe=(me-G)/ve,H=(pe-G)/ve;a.push(U.x+(X.x-U.x)*oe,U.y+(X.y-U.y)*oe,U.z+(X.z-U.z)*oe,U.x+(X.x-U.x)*H,U.y+(X.y-U.y)*H,U.z+(X.z-U.z)*H)}}return a}function xn(l,o){if(o.length<2)return{results:[],allPositions:new Float32Array(0)};const t=_n(o),a=[],s=[];for(const d of l){const c=d.node;if(!c.mesh||c.mesh.positions.length===0)continue;const p=[];for(const y of t){const E=new k.Plane(y.normal.clone(),-y.normal.dot(y.start)),C=Mn(c,E);if(C.length>0){const g=Cn(C,y.start,y.end);g.length>0&&p.push(...g)}}if(p.length>0){a.push(...p);const y=[];for(let E=0;E<p.length;E+=6)y.push({start:{x:p[E],y:p[E+1],z:p[E+2]},end:{x:p[E+3],y:p[E+4],z:p[E+5]}});s.push({nodeName:c.name,nodeColor:c.color,segments:y})}}return{results:s,allPositions:new Float32Array(a)}}const Bn={class:"geo-toggle"},An=["title"],Ln=["title"],Dn=e.defineComponent({__name:"Geo3dNodeTree",props:{node:{},scene:{},depth:{default:0}},emits:["toggle-visible"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(t.depth<2);function d(){t.node.children.length>0&&(s.value=!s.value)}function c(){const p=!t.node.visible;t.node.visible=p,a("toggle-visible",t.node.id,p)}return(p,y)=>{const E=e.resolveComponent("Geo3dNodeTree",!0);return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:"geo-tree-item",style:e.normalizeStyle({paddingLeft:l.depth*16+8+"px"}),onClick:d},[e.createElementVNode("span",Bn,[l.node.children.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(s.value?"▼":"▶"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" ")],64))]),e.createElementVNode("div",{class:"geo-icon",style:e.normalizeStyle({background:"#"+l.node.color.toString(16).padStart(6,"0")})},null,4),e.createElementVNode("span",{class:"geo-label",title:l.node.name},e.toDisplayString(l.node.name),9,An),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!l.node.visible}]),onClick:e.withModifiers(c,["stop"]),title:l.node.visible?"隐藏":"显示"},e.toDisplayString(l.node.visible?"👁":"👁‍🗨"),11,Ln)],4),s.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.node.children,C=>(e.openBlock(),e.createBlock(E,{key:C.id,node:C,scene:l.scene,depth:l.depth+1,onToggleVisible:y[0]||(y[0]=(g,b)=>a("toggle-visible",g,b))},null,8,["node","scene","depth"]))),128)):e.createCommentVNode("",!0)])}}}),Fn=we._export_sfc(Dn,[["__scopeId","data-v-24fac17a"]]),Rn={class:"geo-radar-tree"},zn=["onClick"],Tn={class:"geo-toggle"},$n=["title"],Un={class:"geo-count"},Pn=["onClick"],On=["title"],Gn={class:"geo-count"},In=["onClick"],Yn=["onClick"],Hn=["title"],qn={class:"geo-count"},Wn=["onClick"],jn=["onClick"],Xn={key:0,class:"geo-radar-empty"},Zn=e.defineComponent({__name:"Geo3dRadarTree",props:{layers:{},groups:{}},emits:["toggle-layer","toggle-group","remove-layer"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(new Set(t.groups.map(b=>b.id)));function d(b){return s.value.has(b)}function c(b){const N=new Set(s.value);N.has(b)?N.delete(b):N.add(b),s.value=N}const p=e.computed(()=>t.layers.filter(b=>!b.groupId));function y(b){return b.layers.length>0&&b.layers.some(N=>N.visible)}function E(b){return b.layers.reduce((N,w)=>N+w.points.length,0).toLocaleString()}function C(b){a("toggle-group",b.id,!y(b))}function g(b){if(b.points.length===0)return"#999";const N=["#2563eb","#10b981","#f59e0b","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16"];let w=0;for(let x=0;x<b.name.length;x++)w=(w<<5)-w+b.name.charCodeAt(x)|0;return N[Math.abs(w)%N.length]}return(b,N)=>(e.openBlock(),e.createElementBlock("div",Rn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.groups,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:"geo-radar-group"},[e.createElementVNode("div",{class:"geo-radar-item group-item",onClick:x=>c(w.id)},[e.createElementVNode("span",Tn,e.toDisplayString(d(w.id)?"▼":"▶"),1),N[0]||(N[0]=e.createElementVNode("span",{class:"geo-radar-icon"},"📡",-1)),e.createElementVNode("span",{class:"geo-label",title:w.name},e.toDisplayString(w.name),9,$n),e.createElementVNode("span",Un,e.toDisplayString(E(w)),1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!y(w)}]),onClick:e.withModifiers(x=>C(w),["stop"])},e.toDisplayString(y(w)?"👁":"👁‍🗨"),11,Pn)],8,zn),d(w.id)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(w.layers,x=>(e.openBlock(),e.createElementBlock("div",{key:x.id,class:"geo-radar-item layer-item"},[N[1]||(N[1]=e.createElementVNode("span",{class:"geo-toggle"}," ",-1)),e.createElementVNode("div",{class:"geo-layer-dot",style:e.normalizeStyle({background:g(x)})},null,4),e.createElementVNode("span",{class:"geo-label",title:x.name},e.toDisplayString(x.name),9,On),e.createElementVNode("span",Gn,e.toDisplayString(x.points.length.toLocaleString()),1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!x.visible}]),onClick:e.withModifiers(G=>b.$emit("toggle-layer",x.id,!x.visible),["stop"])},e.toDisplayString(x.visible?"👁":"👁‍🗨"),11,In),e.createElementVNode("button",{class:"geo-del-btn",onClick:e.withModifiers(G=>b.$emit("remove-layer",x.id),["stop"]),title:"删除"},"×",8,Yn)]))),128)):e.createCommentVNode("",!0)]))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:"geo-radar-item layer-item"},[N[2]||(N[2]=e.createElementVNode("span",{class:"geo-toggle"}," ",-1)),e.createElementVNode("div",{class:"geo-layer-dot",style:e.normalizeStyle({background:g(w)})},null,4),e.createElementVNode("span",{class:"geo-label",title:w.name},e.toDisplayString(w.name),9,Hn),e.createElementVNode("span",qn,e.toDisplayString(w.points.length.toLocaleString()),1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!w.visible}]),onClick:e.withModifiers(x=>b.$emit("toggle-layer",w.id,!w.visible),["stop"])},e.toDisplayString(w.visible?"👁":"👁‍🗨"),11,Wn),e.createElementVNode("button",{class:"geo-del-btn",onClick:e.withModifiers(x=>b.$emit("remove-layer",w.id),["stop"]),title:"删除"},"×",8,jn)]))),128)),l.groups.length===0&&p.value.length===0?(e.openBlock(),e.createElementBlock("div",Xn,"暂无雷达数据")):e.createCommentVNode("",!0)]))}}),Jn=we._export_sfc(Zn,[["__scopeId","data-v-8a9239e4"]]),Kn={class:"geo-dialog-box"},Qn={class:"geo-dialog-header"},eo={key:0,class:"geo-highlight-tag"},to={class:"geo-dialog-body"},no={key:0,class:"geo-no-result"},oo=e.defineComponent({__name:"Geo3dSectionDialog",props:{visible:{type:Boolean},results:{},startPoint:{},endPoint:{}},emits:["close"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(),d=e.ref();let c=1100,p=600;const y=e.ref(!1),E=e.ref(""),C=e.ref({}),g=e.ref(null);function b(m){const S=parseInt(m.slice(1,3),16),v=parseInt(m.slice(3,5),16),D=parseInt(m.slice(5,7),16),F=.7,B=Math.round(S*F),P=Math.round(v*F),Z=Math.round(D*F);return`#${B.toString(16).padStart(2,"0")}${P.toString(16).padStart(2,"0")}${Z.toString(16).padStart(2,"0")}`}const N=["#d32f2f","#1565c0","#2e7d32","#e65100","#6a1b9a","#00838f","#c62828","#283593","#1b5e20","#bf360c"];function w(m,S){const v=parseInt(m.slice(1,3),16),D=parseInt(m.slice(3,5),16),F=parseInt(m.slice(5,7),16);return(v*299+D*587+F*114)/1e3>180?N[S%N.length]:b(m)}e.computed(()=>{const m=new Map;return t.results.forEach((S,v)=>{const D="#"+S.nodeColor.toString(16).padStart(6,"0"),F=w(D,v);m.has(S.nodeName)?m.get(S.nodeName).count+=S.segments.length:m.set(S.nodeName,{color:F,count:S.segments.length})}),Array.from(m.entries()).map(([S,v])=>({name:S,color:v.color,count:v.count}))});function x(){a("close"),g.value=null}function G(){const m=s.value;if(!m)return;const S=m.toDataURL("image/png"),v=document.createElement("a");v.download=`剖面结果_${new Date().toISOString().slice(0,10)}.png`,v.href=S,v.click()}const I=[];e.watch(()=>t.visible,m=>_e(null,null,function*(){m&&(g.value=null,yield e.nextTick(),U())}));function U(){const m=s.value,S=d.value;if(!m||!S)return;const v=m.getContext("2d");if(!v)return;const D=S.clientWidth;c=Math.max(D,600),p=Math.round(c*.5);const F=window.devicePixelRatio||1;if(m.width=c*F,m.height=p*F,m.style.width=c+"px",m.style.height=p+"px",v.scale(F,F),v.clearRect(0,0,c,p),t.results.length===0)return;const B=t.endPoint.x-t.startPoint.x,P=t.endPoint.y-t.startPoint.y,Z=Math.sqrt(B*B+P*P);if(Z<1e-6)return;const Ve=B/Z,ce=P/Z,A=[];let re=1/0,ge=-1/0,Ne=1/0,Me=-1/0;if(t.results.forEach((M,R)=>{const Q="#"+M.nodeColor.toString(16).padStart(6,"0"),ie=w(Q,R);for(const be of M.segments){const Ce=(be.start.x-t.startPoint.x)*Ve+(be.start.y-t.startPoint.y)*ce,L=be.start.z,O=(be.end.x-t.startPoint.x)*Ve+(be.end.y-t.startPoint.y)*ce,ee=be.end.z;A.push({x1:Ce,z1:L,x2:O,z2:ee,color:ie,name:M.nodeName}),re=Math.min(re,Ce,O),ge=Math.max(ge,Ce,O),Ne=Math.min(Ne,L,ee),Me=Math.max(Me,L,ee)}}),A.length===0)return;const Le=ge-re||1,Te=Me-Ne||1,ae=70,se=30,he=30,ye=50,Se=c-ae-se,Be=p-he-ye,$e=Se/Le,He=Be/Te,J=M=>ae+(M-re)*$e,q=M=>p-ye-(M-Ne)*He;v.fillStyle="#fafafa",v.fillRect(0,0,c,p),v.strokeStyle="#bbb",v.lineWidth=1,v.strokeRect(ae,he,Se,Be);const W=fe(Le),le=fe(Te);v.strokeStyle="#e8e8e8",v.lineWidth=.5;for(let M=Math.ceil(re/W)*W;M<=ge;M+=W){const R=J(M);v.beginPath(),v.moveTo(R,he),v.lineTo(R,p-ye),v.stroke()}for(let M=Math.ceil(Ne/le)*le;M<=Me;M+=le){const R=q(M);v.beginPath(),v.moveTo(ae,R),v.lineTo(c-se,R),v.stroke()}v.fillStyle="#444",v.font="11px monospace",v.textAlign="center";for(let M=Math.ceil(re/W)*W;M<=ge;M+=W)v.fillText(M.toFixed(0),J(M),p-ye+16);v.textAlign="right";for(let M=Math.ceil(Ne/le)*le;M<=Me;M+=le)v.fillText(M.toFixed(0),ae-6,q(M)+4);v.fillStyle="#222",v.font="bold 13px sans-serif",v.textAlign="center",v.fillText("水平距离 (m)",ae+Se/2,p-4),v.save(),v.translate(14,he+Be/2),v.rotate(-Math.PI/2),v.fillText("标高 Z (m)",0,0),v.restore(),v.save(),v.beginPath(),v.rect(ae,he,Se,Be),v.clip();const K=g.value;if(K){v.lineWidth=1.5,v.globalAlpha=.2;for(const M of A)M.name!==K&&(v.strokeStyle=M.color,v.beginPath(),v.moveTo(J(M.x1),q(M.z1)),v.lineTo(J(M.x2),q(M.z2)),v.stroke());v.globalAlpha=1}v.lineWidth=K?4:1.5,v.lineCap="round";for(const M of A)K&&M.name!==K||(v.strokeStyle=M.color,v.beginPath(),v.moveTo(J(M.x1),q(M.z1)),v.lineTo(J(M.x2),q(M.z2)),v.stroke());v.restore(),I.length=0;for(const M of A)I.push({sx1:J(M.x1),sy1:q(M.z1),sx2:J(M.x2),sy2:q(M.z2),name:M.name,color:M.color})}function X(m,S,v,D,F,B){const P=F-v,Z=B-D,Ve=P*P+Z*Z;if(Ve<1e-6)return Math.hypot(m-v,S-D);let ce=((m-v)*P+(S-D)*Z)/Ve;return ce=Math.max(0,Math.min(1,ce)),Math.hypot(m-(v+ce*P),S-(D+ce*Z))}function me(m){const v=s.value.getBoundingClientRect();return{mx:(m.clientX-v.left)*(c/v.width),my:(m.clientY-v.top)*(p/v.height),rect:v}}function pe(m,S){let v=1/0,D="",F="";for(const B of I){const P=X(m,S,B.sx1,B.sy1,B.sx2,B.sy2);P<v&&(v=P,D=B.name,F=B.color)}return{bestDist:v,bestName:D,bestColor:F}}function ve(m){if(!s.value||I.length===0)return;const{mx:S,my:v,rect:D}=me(m),{bestDist:F,bestName:B,bestColor:P}=pe(S,v);F<12?(y.value=!0,E.value=B,C.value={left:m.clientX-D.left+14+"px",top:m.clientY-D.top-8+"px",borderLeft:`4px solid ${P}`},s.value.style.cursor="pointer"):(y.value=!1,s.value.style.cursor="default")}function oe(){y.value=!1}function H(m){if(!s.value||I.length===0)return;const{mx:S,my:v}=me(m),{bestDist:D,bestName:F}=pe(S,v);D<12?g.value=g.value===F?null:F:g.value=null,U()}function fe(m){const S=m/8,v=Math.pow(10,Math.floor(Math.log10(S))),D=S/v;return D<1.5?v:D<3.5?2*v:D<7.5?5*v:10*v}return(m,S)=>l.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"geo-dialog-overlay",onClick:e.withModifiers(x,["self"])},[e.createElementVNode("div",Kn,[e.createElementVNode("div",Qn,[S[0]||(S[0]=e.createElementVNode("span",{class:"geo-dialog-title"},"剖面结果",-1)),g.value?(e.openBlock(),e.createElementBlock("span",eo,e.toDisplayString(g.value),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"geo-export-btn",onClick:G,title:"导出图片"},"💾 导出图片"),e.createElementVNode("button",{class:"geo-dialog-close",onClick:x},"×")]),e.createElementVNode("div",to,[e.createElementVNode("div",{class:"geo-canvas-wrap",ref_key:"canvasWrapRef",ref:d},[e.createElementVNode("canvas",{ref_key:"canvasRef",ref:s,onMousemove:ve,onMouseleave:oe,onClick:H},null,544),y.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"geo-canvas-tooltip",style:e.normalizeStyle(C.value)},e.toDisplayString(E.value),5)):e.createCommentVNode("",!0)],512),l.results.length===0?(e.openBlock(),e.createElementBlock("div",no,"该剖切线未与任何模型相交")):e.createCommentVNode("",!0)])])])):e.createCommentVNode("",!0)}}),ro=we._export_sfc(oo,[["__scopeId","data-v-9d57c901"]]),ao={class:"marker-header"},so={class:"marker-icon"},lo={class:"marker-name"},io={key:0,class:"marker-rows"},co={class:"row-label"},uo={class:"row-value"},mo={class:"row-unit"},_t=e.defineComponent({__name:"Geo3dDeviceMarker",props:{deviceType:{},name:{},icon:{},rows:{},arrowAngle:{}},setup(l){const o=e.ref(!1),t=l,a=e.computed(()=>t.rows.filter(s=>s.label&&s.label.trim()!==""));return(s,d)=>(e.openBlock(),e.createElementBlock("div",{class:"geo3d-device-marker",onClick:d[0]||(d[0]=e.withModifiers(c=>o.value=!o.value,["stop"]))},[e.createElementVNode("div",ao,[e.createElementVNode("span",so,e.toDisplayString(l.icon),1),e.createElementVNode("span",lo,e.toDisplayString(l.name),1)]),o.value&&a.value.length>0?(e.openBlock(),e.createElementBlock("div",io,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(c,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"marker-row"},[e.createElementVNode("span",co,e.toDisplayString(c.label),1),e.createElementVNode("span",uo,e.toDisplayString(c.value),1),e.createElementVNode("span",mo,e.toDisplayString(c.unit),1)]))),128))])):e.createCommentVNode("",!0),o.value&&l.arrowAngle!=null?(e.openBlock(),e.createElementBlock("div",{key:1,class:"marker-arrow",style:e.normalizeStyle({transform:`rotate(${l.arrowAngle}deg)`})},[...d[1]||(d[1]=[e.createElementVNode("svg",{width:"48",height:"12",viewBox:"0 0 48 12",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("line",{x1:"2",y1:"6",x2:"36",y2:"6",stroke:"rgba(51,51,51,0.8)","stroke-width":"2","stroke-linecap":"round"}),e.createElementVNode("polygon",{points:"34,1 48,6 34,11",fill:"rgba(51,51,51,0.8)"})],-1)])],4)):e.createCommentVNode("",!0)]))}}),po={class:"geo-device-tree"},vo=["onClick"],fo={class:"geo-toggle"},go={class:"geo-device-icon"},ho=["title"],yo={class:"geo-count"},bo=["onClick"],ko=["title"],Eo=["onClick"],wo={key:0,class:"geo-device-empty"},Vo=e.defineComponent({__name:"Geo3dDeviceTree",props:{devices:{}},emits:["toggle-device","toggle-group"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(new Set);let d=!1;const c=e.computed(()=>{const g=new Map;for(const b of t.devices){const N=b.deviceType||"未知";g.has(N)||g.set(N,{type:N,icon:b.icon,devices:[]}),g.get(N).devices.push(b)}return Array.from(g.values())});e.watch(c,g=>{!d&&g.length>0&&(s.value=new Set(g.map(b=>b.type)),d=!0)},{immediate:!0});function p(g){return s.value.has(g)}function y(g){const b=new Set(s.value);b.has(g)?b.delete(g):b.add(g),s.value=b}function E(g){return g.devices.length>0&&g.devices.some(b=>b.visible)}function C(g){a("toggle-group",g.type,!E(g))}return(g,b)=>(e.openBlock(),e.createElementBlock("div",po,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,N=>(e.openBlock(),e.createElementBlock("div",{key:N.type,class:"geo-device-group"},[e.createElementVNode("div",{class:"geo-device-item group-item",onClick:w=>y(N.type)},[e.createElementVNode("span",fo,e.toDisplayString(p(N.type)?"▼":"▶"),1),e.createElementVNode("span",go,e.toDisplayString(N.icon),1),e.createElementVNode("span",{class:"geo-label",title:N.type},e.toDisplayString(N.type),9,ho),e.createElementVNode("span",yo,e.toDisplayString(N.devices.length)+"台",1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!E(N)}]),onClick:e.withModifiers(w=>C(N),["stop"])},e.toDisplayString(E(N)?"👁":"👁‍🗨"),11,bo)],8,vo),p(N.type)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(N.devices,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:"geo-device-item device-item"},[b[0]||(b[0]=e.createElementVNode("span",{class:"geo-toggle"}," ",-1)),e.createElementVNode("div",{class:"geo-device-dot",style:e.normalizeStyle({background:w.visible?"#10b981":"#ccc"})},null,4),e.createElementVNode("span",{class:"geo-label",title:w.name},e.toDisplayString(w.name),9,ko),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!w.visible}]),onClick:e.withModifiers(x=>g.$emit("toggle-device",w.id,!w.visible),["stop"])},e.toDisplayString(w.visible?"👁":"👁‍🗨"),11,Eo)]))),128)):e.createCommentVNode("",!0)]))),128)),c.value.length===0?(e.openBlock(),e.createElementBlock("div",wo,"暂无监测设备")):e.createCommentVNode("",!0)]))}}),No=we._export_sfc(Vo,[["__scopeId","data-v-c4ab4eb8"]]),_o={class:"mix-body"},Mo={key:0,class:"geo-filter-bar"},So={class:"geo-time-btns"},Co=["onClick"],xo={class:"geo-toolbar"},Bo=["disabled"],Ao=["disabled"],Lo={class:"geo-mode-group"},Do=["onClick"],Fo={key:1,class:"geo-pick-badge"},Ro={class:"geo-doc-name"},zo={class:"geo-main"},To={key:0,class:"geo-panel-left"},$o={class:"geo-device-count"},Uo={class:"geo-panel-header geo-radar-header"},Po={class:"geo-radar-count"},Oo={class:"geo-tree-scroll"},Go={key:0,class:"geo-loading"},Io={key:1,class:"geo-drop-hint"},Yo={key:2,class:"geo-model-selector"},Ho={key:0,class:"geo-model-dropdown"},qo=["onClick"],Wo={class:"geo-model-radio"},jo={class:"geo-model-radio"},Xo={key:0,class:"geo-model-option geo-model-sub"},Zo={key:1,class:"geo-panel-right"},Jo={class:"geo-radar-stats"},Ko={class:"geo-stat-row"},Qo={class:"geo-stat-val"},er={class:"geo-stat-row"},tr={class:"geo-stat-alarm"},nr={class:"geo-legend"},or={key:0,class:"geo-point-info"},rr={class:"geo-point-title"},ar={class:"geo-point-grid"},sr={key:1,class:"geo-point-hint"},lr={class:"geo-section-controls"},ir=["disabled"],cr={key:1},dr={class:"geo-pick-hint"},ur={key:2,class:"geo-coord"},mr={key:3,class:"geo-coord"},pr=["disabled"],vr={key:0,class:"geo-section-results"},fr={class:"geo-result-count"},gr={class:"geo-section-stats"},hr={class:"geo-status-bar"},yr={key:0},br={class:"geo-group-picker"},kr={class:"geo-group-body"},Er={class:"geo-group-options"},wr=["value"],Vr={DEFAULT_ICON:kt.DEFAULT_ICON,ACTIVE_ICON:kt.ACTIVE_ICON,NAME_CN:"三维地质模型",NAME_EN:"Geo3D Viewer",ORDER:1,PLATFORM:["pc","screen"]},Nr={bgColor:"#f0f2f5",radiusSize:4,isHideTitle:!1,titleColor:"#333",textColor:"#333",fontSize:{value:12,type:"number",label:"component.geo3d.fontSize",min:10,max:24},g3dFileUrl:{value:"",type:"string",label:"component.geo3d.g3dFileUrl"},geologyModelUrl:{value:"",type:"string",label:"component.geo3d.geologyModelUrl"},dtmModelUrl:{value:"",type:"string",label:"component.geo3d.dtmModelUrl"},uavModelUrl:{value:"",type:"string",label:"component.geo3d.uavModelUrl"},satelliteMapUrl:{value:"",type:"string",label:"component.geo3d.satelliteMapUrl"},mapCenterLon:{value:119.4,type:"number",label:"component.geo3d.mapCenterLon"},mapCenterLat:{value:45.37,type:"number",label:"component.geo3d.mapCenterLat"},mapZoom:{value:13,type:"number",label:"component.geo3d.mapZoom",min:1,max:18},radarFileUrl:{value:"",type:"string",label:"component.geo3d.radarFileUrl"},defaultRadarMode:{value:"rr",type:"select",label:"component.geo3d.defaultRadarMode",options:[{label:"位移",value:"rr"},{label:"速度",value:"av"},{label:"告警",value:"cf"}]},showFilterBar:{value:!0,type:"switch",label:"component.geo3d.showFilterBar"},linkChannel:{value:"geo3d",type:"select",label:"component.linkChannel",options:[{label:"geo3d",value:"geo3d"},{label:"custom",value:"custom"}]},customChannel:{value:"",type:"string",label:"component.customChannel",showWhen:{linkChannel:"custom"}}},_r=[{dataType:"radar",name:"监测点数据",object_id:"",fieldE:"e",fieldN:"n",fieldRL:"rl",fieldRR:"rr",fieldAV:"av",fieldCF:"cf"},{dataType:"device",name:"GNSS001",object_id:"",deviceType:"GNSS",e:0,n:0,rl:0,region:"",lineName:"",row1Label:"",row1FV:"",row1Unit:"",row2Label:"",row2FV:"",row2Unit:"",row3Label:"",row3FV:"",row3Unit:"",row4Label:"",row4FV:"",row4Unit:"",row5Label:"",row5FV:"",row5Unit:"",arrowXFV:"",arrowYFV:""}],Mr=["name","object_id","dataType","fieldE","fieldN","fieldRL","fieldRR","fieldAV","fieldCF","deviceType","e","n","rl","region","lineName","row1Label","row1FV","row1Unit","row2Label","row2FV","row2Unit","row3Label","row3FV","row3Unit","row4Label","row4FV","row4Unit","row5Label","row5FV","row5Unit","arrowXFV","arrowYFV"],Sr=["mosaic"],Cr={useAlias:!0,multiObject:!0,source:"mosaic"},xr={DEFAULT:Vr,OPTIONS:Nr,DATA:_r,PARAMS:Mr,SOURCE:Sr,COMMON:Cr},Br=e.defineComponent(Qe(Ke({},xr),{__name:"geo3dViewer",props:{conf:{type:Object,default:()=>({data:[]})},uid:{type:String,default:""},mode:{type:String,default:"edit"},theme:{type:String,default:"light"}},setup(l){const o=l;class t extends mn.BaseComponent{extractStyles(){return{bgColor:this.getOptionValue("bgColor","#f0f2f5"),radiusSize:this.getOptionValue("radiusSize",4),isHideTitle:this.getOptionValue("isHideTitle",!1),titleColor:this.getOptionValue("titleColor","#333"),fontSize:this.getOptionValue("fontSize",12),g3dFileUrl:this.getOptionValue("g3dFileUrl",""),geologyModelUrl:this.getOptionValue("geologyModelUrl",""),dtmModelUrl:this.getOptionValue("dtmModelUrl",""),uavModelUrl:this.getOptionValue("uavModelUrl",""),satelliteMapUrl:this.getOptionValue("satelliteMapUrl",""),mapCenterLon:this.getOptionValue("mapCenterLon",119.4),mapCenterLat:this.getOptionValue("mapCenterLat",45.37),mapZoom:this.getOptionValue("mapZoom",14),radarFileUrl:this.getOptionValue("radarFileUrl",""),defaultRadarMode:this.getOptionValue("defaultRadarMode","rr"),showFilterBar:this.getOptionValue("showFilterBar",!0),linkChannel:(()=>{const n=this.getOptionValue("linkChannel","geo3d"),i=this.getOptionValue("customChannel","");return n==="custom"&&i?i:n})()}}needsHistoryData(){return!0}parseRecordsToPoints(n,i){var Ee,te;const f=i||((te=(Ee=this.props.conf)==null?void 0:Ee.data)==null?void 0:te[0])||{},V=f.fieldE||"e",u=f.fieldN||"n",h=f.fieldRL||"rl",_=f.fieldRR||"rr",T=f.fieldAV||"av",Y=f.fieldCF||"cf",de=[];for(let z=0;z<n.length;z++){const j=n[z];if(!j)continue;const ne=Number(j[V]),ue=Number(j[u]),ze=Number(j[h]);!Number.isFinite(ne)||!Number.isFinite(ue)||!Number.isFinite(ze)||de.push({id:j.object_id||j.id||`pt_${z}`,e:ne,n:ue,rl:ze,rr:Number(j[_])||0,av:Number(j[T])||0,vd:Number(j.vd)||0,cf:Number(j[Y])||0})}return de}setHistoryData(n){var V;if(!n)return;const i=(V=this.props.conf)==null?void 0:V.data;if(!Array.isArray(i))return;const f=n.history;Array.isArray(f)&&i.forEach((u,h)=>{if(!u||y(u)!=="radar")return;const T=Array.isArray(f[h])?f[h]:[];if(T.length===0)return;const Y=this.parseRecordsToPoints(T,u);if(Y.length>0){const de=u.object_id||`__platform_radar_${h}__`;zt(Y,u.name||"平台数据",de)}})}onPreview(){var f;const n=(f=this.props.conf)==null?void 0:f.data;if(!Array.isArray(n))return;Rt();const i=new Set;n.forEach((V,u)=>{const h=y(V),_=this.resolveObjectId(V);if(h==="device"){it(V,_||V.name||`device_${u}`),_&&!i.has(_)&&(i.add(_),this.subscribeFv(_));return}!_||i.has(_)||(i.add(_),this.subscribeFv(_))}),console.log(`[geo3dViewer] onPreview: 已订阅 ${i.size} 个对象`)}setSocketData(n){var V,u;if(!n)return;const i=n.object_id||"";if(!i)return;const f=qe.get(i);if(f)if(f.type==="radar"){const h=n.data;if(!h)return;let _=[];if(Array.isArray(h)?_=h:typeof h=="object"&&(_=[h]),_.length===0)return;const T=(u=(V=this.props.conf)==null?void 0:V.data)==null?void 0:u[f.index],Y=this.parseRecordsToPoints(_,T);Y.length>0&&Tt(Y,i)}else f.type==="device"&&$t(i,n.data)}}const a=new t(o,"geo3dViewer");a.setupLifecycle();const s=a.getStyle(),d=o.conf,c=e.computed(()=>pn.generateTitleStyle(o.conf.options)),p={GNSS:"📍",DEEP:"⚓",RADAR:"📡",SURFACE:"📐",CRACK:"🧱",FIRE:"🔥",WATER:"💧",GROUND:"🌍",STRESS:"📊",VIB:"💥",SAT:"🛸"};function y(r){return(r==null?void 0:r.dataType)==="device"?"device":"radar"}function E(r){const n=[];for(let i=1;i<=5;i++){const f=r[`row${i}Label`]||"",V=r[`row${i}FV`]||"",u=r[`row${i}Unit`]||"";f&&n.push({label:f,fv:V,unit:u})}return n}function C(r){if(r==null)return"--";const n=Number(r);return!isNaN(n)&&typeof r!="boolean"?n.toFixed(2):String(r)}function g(r,n){return r===0&&n===0?null:Math.round(Math.atan2(n,r)*180/Math.PI*10)/10}const b=e.ref(""),N=e.ref(""),w=e.ref([]),x=e.ref(1),G=e.ref(we.dayjs().subtract(1,"day").format("YYYY-MM-DD HH:mm:ss")),I=e.ref(we.dayjs().format("YYYY-MM-DD HH:mm:ss")),U=[{days:1,label:"一天内"},{days:7,label:"一周内"},{days:30,label:"一个月内"}],X=e.computed(()=>{var i;const r=(i=o.conf)==null?void 0:i.data;if(!Array.isArray(r))return[];const n=new Set;return r.forEach(f=>{f.dataType==="device"&&f.region&&n.add(f.region)}),Array.from(n)}),me=e.computed(()=>{var i;const r=(i=o.conf)==null?void 0:i.data;if(!Array.isArray(r))return[];const n=new Set;return r.forEach(f=>{f.dataType==="device"&&f.lineName&&n.add(f.lineName)}),Array.from(n)}),pe=e.computed(()=>{var n;const r=(n=o.conf)==null?void 0:n.data;return Array.isArray(r)?r.filter(i=>i.dataType==="device"&&i.name).map(i=>i.name):[]});function ve(r){x.value=r,I.value=we.dayjs().format("YYYY-MM-DD HH:mm:ss"),G.value=we.dayjs().subtract(r,"day").format("YYYY-MM-DD HH:mm:ss"),H()}function oe(){x.value=0,H()}function H(){a.publish({type:"filter",region:b.value||null,line:N.value||null,points:w.value.length>0?w.value:null,timeRange:{start:G.value,end:I.value},days:x.value})}const fe=e.ref(),m=e.ref(null),S=e.ref(!1),v=e.ref(""),D=e.ref(!1),F=e.ref(""),B=e.ref("就绪"),P=e.ref(null),Z=e.ref(0),Ve=e.ref(0),ce=e.ref();let A=null,re=[];const ge=new Map;function Ne(){A||!ce.value||(A=xe.L.map(ce.value,{zoomControl:!0,attributionControl:!1,maxZoom:17}),A.setView([s.value.mapCenterLat||45.37,s.value.mapCenterLon||119.4],s.value.mapZoom||14),xe.L.tileLayer("https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",{maxZoom:19}).addTo(A),setTimeout(()=>{A==null||A.invalidateSize(),Le()},200))}function Me(r,n,i,f){const u=.003352810681182319,h=2*u-u*u,_=(1-Math.sqrt(1-h))/(1+Math.sqrt(1-h)),T=1,Y=r-5e5,te=n/T/(6378137*(1-h/4-3*h*h/64-5*h*h*h/256)),z=te+(3*_/2-27*_*_*_/32)*Math.sin(2*te)+(21*_*_/16-55*_*_*_*_/32)*Math.sin(4*te)+151*_*_*_/96*Math.sin(6*te),j=h/(1-h),ne=j*Math.cos(z)*Math.cos(z),ue=Math.tan(z)*Math.tan(z),ze=6378137/Math.sqrt(1-h*Math.sin(z)*Math.sin(z)),tn=6378137*(1-h)/Math.pow(1-h*Math.sin(z)*Math.sin(z),1.5),$=Y/(ze*T),nn=z-ze*Math.tan(z)/tn*($*$/2-(5+3*ue+10*ne-4*ne*ne-9*j)*$*$*$*$/24+(61+90*ue+298*ne+45*ue*ue-252*j-3*ne*ne)*$*$*$*$*$*$/720),on=120*Math.PI/180,rn=($-(1+2*ue+ne)*$*$*$/6+(5-2*ne+28*ue-3*ne*ne+8*j+24*ue*ue)*$*$*$*$*$/120)/Math.cos(z);return{lat:nn*180/Math.PI,lon:(rn+on)*180/Math.PI}}function Le(){var i;if(!A)return;re.forEach(f=>A.removeLayer(f)),re=[],ge.clear();const r=(i=o.conf)==null?void 0:i.data;if(!Array.isArray(r))return;const n=[];r.forEach(f=>{if(y(f)!=="device")return;const V=Number(f.e),u=Number(f.n);if(!Number.isFinite(V)||!Number.isFinite(u))return;let h,_;if(V>180||u>90){const te=Me(V,u);h=te.lat,_=te.lon}else h=u,_=V;const T=xe.L.divIcon({className:"geo-leaflet-marker",html:`<div class="geo-lm-pin">${p[f.deviceType]||"📍"}</div><div class="geo-lm-name">${f.name||""}</div>`,iconSize:[60,40],iconAnchor:[30,40]}),Y=f.object_id||f.name||"",de=Ae.get(Y)!==!1,Ee=xe.L.marker([h,_],{icon:T});de&&Ee.addTo(A),re.push(Ee),Y&&ge.set(Y,Ee),de&&n.push(xe.L.latLng(h,_))}),n.length>0&&A.fitBounds(xe.L.latLngBounds(n).pad(.2))}function Te(r,n){const i=ge.get(r);!i||!A||(n?i.addTo(A):A.removeLayer(i))}const ae=e.ref(!1),se=e.ref("geology"),he=e.ref(!1);let ye=null;const Se=[{value:"geology",label:"地质模型"},{value:"dtm",label:"DTM面"}],Be=e.computed(()=>{var r;return se.value==="map2d"?he.value?"卫星+无人机":"卫星地图":((r=Se.find(n=>n.value===se.value))==null?void 0:r.label)||"请选择模型"});function $e(r){se.value=r,ae.value=!1;const n=r==="map2d";m.value&&(m.value.renderer.domElement.style.display=n?"none":"",m.value.labelRenderer.domElement.style.display=n?"none":""),n&&!A&&e.nextTick(()=>Ne()),n&&A&&setTimeout(()=>{A==null||A.invalidateSize(),Le()},100),a.publish({type:"modelChange",model:r})}function He(){if(A)if(he.value){const r=s.value.uavModelUrl;r&&(ye=xe.L.tileLayer(r,{maxZoom:19,opacity:.7}).addTo(A))}else ye&&(A.removeLayer(ye),ye=null)}const J=e.ref(!1),q=e.ref(!1),W=e.reactive({x:0,y:0,z:0}),le=e.reactive({x:0,y:0,z:0}),K=e.ref([]),M=e.ref(!1),R=e.ref("none"),Q=e.ref(null),ie=e.ref(null),be=e.computed(()=>R.value==="start"?"点击选取起点":R.value==="end"?"点击选取终点":""),Ce=e.computed(()=>K.value.reduce((r,n)=>r+n.segments.length,0)),L=e.ref([]),O=e.ref("rr"),ee=e.ref(null),St=e.ref("");let Ct=0;const ot=[{id:"east",name:"东帮"},{id:"south",name:"南帮"},{id:"west",name:"西帮"},{id:"north",name:"北帮"}],De=e.ref(!1),Fe=e.ref([]),ke=e.ref(""),rt=e.ref("");let xt=0;const at=e.ref([]),Bt=e.computed(()=>[...ot,...at.value].map(n=>({id:n.id,name:n.name,layers:L.value.filter(i=>i.groupId===n.id)})).filter(n=>n.layers.length>0)),st=[{value:"rr",label:"位移"},{value:"av",label:"速度"},{value:"cf",label:"告警"}];e.computed(()=>L.value.reduce((r,n)=>r+n.points.length,0));const At=e.computed(()=>L.value.filter(r=>r.visible).reduce((r,n)=>r+n.points.length,0)),Lt=e.computed(()=>L.value.filter(r=>r.visible).reduce((r,n)=>r+n.points.filter(i=>i.cf>=300||Math.abs(i.rr)>=50||Math.abs(i.av)>=.5).length,0)),Dt=e.computed(()=>O.value==="rr"?"linear-gradient(90deg,rgb(20,35,150),rgb(0,180,255),rgb(255,230,0),rgb(180,0,0))":O.value==="av"?"linear-gradient(90deg,rgb(0,80,220),rgb(0,220,120),rgb(220,30,30))":"linear-gradient(90deg,rgb(0,170,255),rgb(255,145,0),rgb(180,0,0))"),Ue=e.reactive(new Map),Re=new Map,qe=new Map,Ae=e.reactive(new Map),Pe=e.ref(!0),We=e.computed(()=>{const r=[];return Ue.forEach((n,i)=>{r.push({id:i,name:n.name||i,deviceType:n.deviceType||"未知",icon:n.icon||"📍",visible:Ae.get(i)!==!1})}),r}),Oe=e.computed(()=>We.value.length);function lt(r,n){var i;Ae.set(r,n),(i=m.value)==null||i.setDeviceMarkerVisible(r,n),Te(r,n)}function Ft(r,n){We.value.filter(i=>i.deviceType===r).forEach(i=>lt(i.id,n))}function Rt(){var n;qe.clear();const r=(n=o.conf)==null?void 0:n.data;Array.isArray(r)&&r.forEach((i,f)=>{const V=i==null?void 0:i.object_id;V&&qe.set(V,{type:y(i),index:f})})}const Ge="__platform_radar__";function zt(r,n,i){if(!m.value||r.length===0)return;const f=i||Ge;m.value.removeRadarLayer(f),L.value=L.value.filter(V=>V.id!==f),L.value.push({id:f,name:n,points:r,visible:!0,groupId:void 0}),m.value.addRadarLayer(f,r,O.value),B.value=`平台数据: ${r.length.toLocaleString()} 个监测点已加载`}function Tt(r,n){const i=n||Ge,f=L.value.find(h=>h.id===i)||L.value.find(h=>h.id===Ge);if(!f||!m.value)return;const V=new Map;f.points.forEach((h,_)=>V.set(h.id,_));let u=0;for(const h of r){const _=V.get(h.id);_!==void 0&&(f.points[_].rr=h.rr,f.points[_].av=h.av,f.points[_].cf=h.cf,f.points[_].e=h.e,f.points[_].n=h.n,f.points[_].rl=h.rl,u++)}u>0&&(m.value.updateRadarLayerColors(Ge,f.points,O.value),B.value=`实时更新: ${u} 个点`)}function it(r,n){var te;if(!m.value)return;const i=Number(r.e),f=Number(r.n),V=Number(r.rl);if(!Number.isFinite(i)||!Number.isFinite(f)||!Number.isFinite(V)){console.warn(`[geo3dViewer] 设备 ${r.name} 坐标无效,跳过标注创建`);return}const u=E(r),h=r.deviceType||"",_=p[h]||p[(te=h.toUpperCase)==null?void 0:te.call(h)]||"📍",T={id:n,name:r.name||"",deviceType:h,icon:_,position:{e:i,n:f,rl:V},rows:u.map(z=>Qe(Ke({},z),{value:"--"})),arrowXFV:r.arrowXFV||"",arrowYFV:r.arrowYFV||"",arrowAngle:null,css2dObject:null};Ue.set(n,T);const Y=document.createElement("div"),de=e.createApp(_t,{deviceType:T.deviceType,name:T.name,icon:T.icon,rows:T.rows.map(z=>({label:z.label,value:z.value,unit:z.unit})),arrowAngle:T.arrowAngle});de.mount(Y),Re.set(n,de);const Ee=m.value.addDeviceMarker(n,{e:i,n:f,rl:V},Y);T.css2dObject=Ee,Ae.has(n)||Ae.set(n,!0)}function $t(r,n){var V;const i=Ue.get(r);if(!i||!n)return;if(i.rows.forEach(u=>{u.fv&&(u.value=C(n[u.fv]))}),i.arrowXFV||i.arrowYFV){const u=i.arrowXFV?n[i.arrowXFV]:0,h=i.arrowYFV?n[i.arrowYFV]:0,_=parseFloat(u)||0,T=parseFloat(h)||0;i.arrowAngle=g(_,T)}const f=Re.get(r);if(f&&i.css2dObject){const u=i.css2dObject.element;f.unmount();const h=e.createApp(_t,{deviceType:i.deviceType,name:i.name,icon:i.icon,rows:i.rows.map(_=>({label:_.label,value:_.value,unit:_.unit})),arrowAngle:i.arrowAngle});h.mount(u),Re.set(r,h)}(V=m.value)==null||V.requestUpdate()}function Ut(){var r;for(const[,n]of Re)n.unmount();Re.clear(),Ue.clear(),Ae.clear(),ge.clear(),(r=m.value)==null||r.removeAllDeviceMarkers()}e.onMounted(()=>{var n;if(fe.value){m.value=new Vn(fe.value);const i=m.value.renderer.domElement;i.addEventListener("mousedown",ft),i.addEventListener("mouseup",gt)}O.value=s.value.defaultRadarMode||"rr";const r=s.value.g3dFileUrl;if(r&&typeof r=="string"&&r.trim()&&ct(r.trim()),o.mode==="edit"){const i=(n=o.conf)==null?void 0:n.data;Array.isArray(i)&&i.forEach((f,V)=>{y(f)==="device"&&it(f,f.object_id||f.name||`device_${V}`)})}}),e.onBeforeUnmount(()=>{var r;if(m.value){const n=m.value.renderer.domElement;n.removeEventListener("mousedown",ft),n.removeEventListener("mouseup",gt)}Ut(),re.forEach(n=>A==null?void 0:A.removeLayer(n)),re=[],A==null||A.remove(),A=null,(r=m.value)==null||r.dispose()}),e.watch(()=>s.value.g3dFileUrl,r=>{r&&!S.value&&ct(String(r).trim())});function Pt(){const r=document.createElement("input");r.type="file",r.accept=".g3d",r.onchange=()=>{var n;(n=r.files)!=null&&n[0]&&dt(r.files[0])},r.click()}function Ot(r){var i;const n=(i=r.dataTransfer)==null?void 0:i.files[0];n!=null&&n.name.endsWith(".g3d")?dt(n):n!=null&&n.name.endsWith(".json")&&S.value&&(Fe.value=[n],ke.value="",De.value=!0)}function ct(r){return _e(this,null,function*(){if(m.value){D.value=!0,F.value="从URL加载...";try{const i=yield(yield fetch(r)).text();yield ut(Et(i))}catch(n){B.value=`加载失败: ${n.message}`}finally{D.value=!1}}})}function dt(r){return _e(this,null,function*(){if(m.value){D.value=!0,F.value=`读取 ${r.name}...`;try{const n=yield r.text();yield ut(Et(n))}catch(n){B.value=`加载失败: ${n.message}`}finally{D.value=!1}}})}function ut(r){return _e(this,null,function*(){yield m.value.loadDocument(r,V=>{F.value=V}),P.value=r.rootNode,v.value=r.name,S.value=!0;let n=0,i=0;const f=V=>{n++,V.mesh&&V.mesh.positions.length>0&&i++,V.children.forEach(f)};f(r.rootNode),Z.value=n,Ve.value=i,B.value=`已加载: ${r.name} (${i}个网格)`,a.publish({type:"modelLoaded",modelName:r.name,nodeCount:n,meshNodeCount:i})})}function Gt(r,n){var i;(i=m.value)==null||i.setNodeVisible(r,n)}function It(){J.value=!J.value}let je={x:0,y:0};function Yt(){if(!m.value)return;vt(),R.value="start",B.value="点击模型选取起点";const r=m.value.renderer.domElement;r.addEventListener("mousedown",mt),r.addEventListener("mouseup",pt)}function Ht(){var r;R.value="none",Q.value=null,ie.value=null,(r=m.value)==null||r.clearPickMarkers(),Xe(),B.value="已取消"}function Xe(){var n;const r=(n=m.value)==null?void 0:n.renderer.domElement;r&&(r.removeEventListener("mousedown",mt),r.removeEventListener("mouseup",pt))}function mt(r){je={x:r.clientX,y:r.clientY}}function pt(r){if(!m.value||R.value==="none"||Math.hypot(r.clientX-je.x,r.clientY-je.y)>5)return;const n=m.value.pickPoint(r);if(!n){B.value="未选中模型,请重试";return}R.value==="start"?(Q.value={x:n.x,y:n.y,z:n.z},Object.assign(W,{x:n.x,y:n.y,z:n.z}),m.value.addPickMarker(n,65280),R.value="end",B.value="请选取终点"):(ie.value={x:n.x,y:n.y,z:n.z},Object.assign(le,{x:n.x,y:n.y,z:n.z}),m.value.addPickMarker(n,16729156),m.value.addPickLine(new k.Vector3(W.x,W.y,W.z),n),R.value="none",Xe(),B.value="两点已选,点击计算剖面")}function qt(){return _e(this,null,function*(){if(!(!m.value||q.value||!Q.value||!ie.value)){q.value=!0,B.value="计算剖面...",yield e.nextTick();try{const r=m.value.getVisibleMeshEntries(),n=[new k.Vector3(W.x,W.y,W.z),new k.Vector3(le.x,le.y,le.z)],{results:i,allPositions:f}=yield new Promise(V=>setTimeout(()=>V(xn(r,n)),50));if(K.value=i,m.value.clearSectionResults(),m.value.setTransparency(!0),f.length>0){for(const V of i){const u=[];for(const h of V.segments)u.push(h.start.x,h.start.y,h.start.z,h.end.x,h.end.y,h.end.z);m.value.addSectionLines(new Float32Array(u),V.nodeColor)}m.value.addSectionPath(n)}B.value=`剖面完成: ${Ce.value}条线段`,M.value=!0,a.publish({type:"sectionComputed",count:Ce.value})}catch(r){B.value=`失败: ${r.message}`}finally{q.value=!1}}})}function vt(){var r,n,i;K.value=[],Q.value=null,ie.value=null,R.value="none",M.value=!1,(r=m.value)==null||r.clearSectionResults(),(n=m.value)==null||n.clearPickMarkers(),(i=m.value)==null||i.setTransparency(!1),Xe(),B.value="剖面已清除"}function Wt(){const r=document.createElement("input");r.type="file",r.accept=".json",r.multiple=!0,r.onchange=()=>{var n;(n=r.files)!=null&&n.length&&(Fe.value=Array.from(r.files),ke.value="",De.value=!0)},r.click()}function jt(){let r=ke.value;if(r==="__custom__"){const n=rt.value.trim();if(!n)return;const i=`c_${++xt}`;at.value.push({id:i,name:n}),r=i}De.value=!1,Xt(Fe.value,r),Fe.value=[],rt.value=""}function Ze(){De.value=!1,Fe.value=[]}function Xt(r,n){return _e(this,null,function*(){var i;for(const f of r)try{const V=wn(JSON.parse(yield f.text()));if(!V.points.length){B.value=`${f.name}: 空数据`;continue}const u=`r_${++Ct}`,h=f.name.replace(/\.json$/i,"");L.value.push({id:u,name:h,points:V.points,visible:!0,groupId:n||void 0}),(i=m.value)==null||i.addRadarLayer(u,V.points,O.value),B.value=`已加载「${h}」(${V.points.length.toLocaleString()}点)`}catch(V){B.value=`${f.name}失败: ${V.message}`}})}function Zt(r,n){var f;const i=L.value.find(V=>V.id===r);i&&(i.visible=n,(f=m.value)==null||f.setRadarLayerVisible(r,n))}function Jt(r,n){L.value.filter(i=>i.groupId===r).forEach(i=>{var f;i.visible=n,(f=m.value)==null||f.setRadarLayerVisible(i.id,n)})}function Kt(r){var n;(n=m.value)==null||n.removeRadarLayer(r),L.value=L.value.filter(i=>i.id!==r),L.value.length||(ee.value=null)}function Qt(r){O.value=r,L.value.forEach(n=>{var i;return(i=m.value)==null?void 0:i.updateRadarLayerColors(n.id,n.points,r)})}function en(){var r;(r=m.value)==null||r.clearAllRadarLayers(),L.value=[],ee.value=null,B.value="雷达已清除"}let Je={x:0,y:0};function ft(r){Je={x:r.clientX,y:r.clientY}}function gt(r){var i;if(!m.value||!L.value.length||R.value!=="none"||Math.hypot(r.clientX-Je.x,r.clientY-Je.y)>5)return;const n=m.value.pickRadarPoint(r);n&&(ee.value=n.point,St.value=((i=L.value.find(f=>f.id===n.layerId))==null?void 0:i.name)||"",B.value=`选中 ${n.point.id} 位移:${n.point.rr.toFixed(2)}mm`,a.publish({type:"radarPointSelected",point:n.point}))}return e.computed(()=>{var r;return((r=st.find(n=>n.value===O.value))==null?void 0:r.label)||""}),e.computed(()=>O.value==="cf"?"0":O.value==="av"?"-2.0":"-200"),e.computed(()=>O.value==="cf"?"737":O.value==="av"?"2.0":"200"),(r,n)=>{const i=et.ElOption,f=et.ElSelect,V=et.ElDatePicker;return e.openBlock(),e.createElementBlock("div",{class:"mix-component geo3d-viewer",style:e.normalizeStyle({background:e.unref(s).bgColor,borderRadius:e.unref(s).radiusSize+"px",fontSize:e.unref(s).fontSize+"px"})},[e.unref(s).isHideTitle?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:"mix-title",style:e.normalizeStyle(c.value)},e.toDisplayString(e.unref(d).caption||e.unref(d).name||"三维地质模型"),5)),e.createElementVNode("div",_o,[e.unref(s).showFilterBar?(e.openBlock(),e.createElementBlock("div",Mo,[e.createVNode(f,{modelValue:b.value,"onUpdate:modelValue":n[0]||(n[0]=u=>b.value=u),class:"geo-filter-select",size:"small",placeholder:"全部区域",onChange:H},{default:e.withCtx(()=>[e.createVNode(i,{label:"全部区域",value:""}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,u=>(e.openBlock(),e.createBlock(i,{key:u,label:u,value:u},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e.createVNode(f,{modelValue:N.value,"onUpdate:modelValue":n[1]||(n[1]=u=>N.value=u),class:"geo-filter-select",size:"small",placeholder:"全部监测线",onChange:H},{default:e.withCtx(()=>[e.createVNode(i,{label:"全部监测线",value:""}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(me.value,u=>(e.openBlock(),e.createBlock(i,{key:u,label:u,value:u},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e.createVNode(f,{modelValue:w.value,"onUpdate:modelValue":n[2]||(n[2]=u=>w.value=u),class:"geo-filter-select geo-filter-wide",size:"small",multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"全部监测点",onChange:H},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(pe.value,u=>(e.openBlock(),e.createBlock(i,{key:u,label:u,value:u},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e.createElementVNode("div",So,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(U,u=>e.createElementVNode("button",{key:u.days,class:e.normalizeClass(["geo-time-btn",{active:x.value===u.days}]),onClick:h=>ve(u.days)},e.toDisplayString(u.label),11,Co)),64))]),e.createVNode(V,{modelValue:G.value,"onUpdate:modelValue":n[3]||(n[3]=u=>G.value=u),type:"datetime",size:"small",placeholder:"开始时间",format:"YYYY/MM/DD HH:mm","value-format":"YYYY-MM-DD HH:mm:ss",class:"geo-date-picker",onChange:oe},null,8,["modelValue"]),n[13]||(n[13]=e.createElementVNode("span",{class:"geo-date-sep"},"至",-1)),e.createVNode(V,{modelValue:I.value,"onUpdate:modelValue":n[4]||(n[4]=u=>I.value=u),type:"datetime",size:"small",placeholder:"结束时间",format:"YYYY/MM/DD HH:mm","value-format":"YYYY-MM-DD HH:mm:ss",class:"geo-date-picker",onChange:oe},null,8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",xo,[e.createElementVNode("button",{class:"geo-btn",onClick:Pt},"📂 打开"),e.createElementVNode("button",{class:"geo-btn",onClick:Wt,disabled:!S.value},"📡 雷达",8,Bo),e.createElementVNode("button",{class:"geo-btn",onClick:It,disabled:!S.value},"✂️ 剖面",8,Ao),L.value.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Lo,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(st,u=>e.createElementVNode("button",{key:u.value,class:e.normalizeClass(["geo-btn geo-btn-sm",{"geo-btn-primary":O.value===u.value}]),onClick:h=>Qt(u.value)},e.toDisplayString(u.label),11,Do)),64))]),e.createElementVNode("button",{class:"geo-btn geo-btn-sm geo-btn-danger",onClick:en},"清除雷达")],64)):e.createCommentVNode("",!0),n[14]||(n[14]=e.createElementVNode("span",{style:{flex:"1"}},null,-1)),R.value!=="none"?(e.openBlock(),e.createElementBlock("span",Fo,e.toDisplayString(be.value),1)):e.createCommentVNode("",!0),e.createElementVNode("span",Ro,e.toDisplayString(v.value),1)]),e.createElementVNode("div",zo,[S.value?(e.openBlock(),e.createElementBlock("div",To,[n[16]||(n[16]=e.createElementVNode("div",{class:"geo-panel-header"},"模型节点树",-1)),e.createElementVNode("div",{class:"geo-tree-scroll",style:e.normalizeStyle({maxHeight:Oe.value>0||L.value.length>0?Oe.value>0&&L.value.length>0?"34%":"50%":"100%"})},[e.createVNode(Fn,{node:P.value,scene:m.value,onToggleVisible:Gt},null,8,["node","scene"])],4),Oe.value>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"geo-panel-header geo-device-header",onClick:n[5]||(n[5]=u=>Pe.value=!Pe.value),style:{cursor:"pointer"}},[e.createElementVNode("span",null,e.toDisplayString(Pe.value?"▼":"▶")+" 📍 监测设备",1),e.createElementVNode("span",$o,e.toDisplayString(Oe.value)+"台",1)]),Pe.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"geo-tree-scroll",style:e.normalizeStyle({maxHeight:L.value.length>0?"33%":"50%"})},[e.createVNode(No,{devices:We.value,onToggleDevice:lt,onToggleGroup:Ft},null,8,["devices"])],4)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),L.value.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Uo,[n[15]||(n[15]=e.createTextVNode("📡 雷达 ",-1)),e.createElementVNode("span",Po,e.toDisplayString(L.value.length)+"层",1)]),e.createElementVNode("div",Oo,[e.createVNode(Jn,{layers:L.value,groups:Bt.value,onToggleLayer:Zt,onToggleGroup:Jt,onRemoveLayer:Kt},null,8,["layers","groups"])])],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"geo-viewport",ref_key:"viewportRef",ref:fe,onDragover:n[9]||(n[9]=e.withModifiers(()=>{},["prevent"])),onDrop:e.withModifiers(Ot,["prevent"])},[D.value?(e.openBlock(),e.createElementBlock("div",Go,[n[17]||(n[17]=e.createElementVNode("div",{class:"geo-spinner"},null,-1)),e.createElementVNode("p",null,e.toDisplayString(F.value),1)])):e.createCommentVNode("",!0),!S.value&&!D.value?(e.openBlock(),e.createElementBlock("div",Io,[...n[18]||(n[18]=[e.createElementVNode("div",{style:{"font-size":"36px",opacity:"0.3"}},"📦",-1),e.createElementVNode("p",null,"拖拽 .g3d 到此处或点击打开",-1)])])):e.createCommentVNode("",!0),S.value?(e.openBlock(),e.createElementBlock("div",Yo,[e.createElementVNode("button",{class:"geo-model-btn",onClick:n[6]||(n[6]=u=>ae.value=!ae.value)},e.toDisplayString(Be.value)+" ▼",1),ae.value?(e.openBlock(),e.createElementBlock("div",Ho,[n[21]||(n[21]=e.createElementVNode("div",{class:"geo-model-group-title"},"三维模型",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(Se,u=>e.createElementVNode("label",{key:u.value,class:e.normalizeClass(["geo-model-option",{active:se.value===u.value}]),onClick:h=>$e(u.value)},[e.createElementVNode("span",Wo,e.toDisplayString(se.value===u.value?"●":"○"),1),e.createElementVNode("span",null,e.toDisplayString(u.label),1)],10,qo)),64)),n[22]||(n[22]=e.createElementVNode("div",{class:"geo-model-divider"},null,-1)),n[23]||(n[23]=e.createElementVNode("div",{class:"geo-model-group-title"},"二维地图",-1)),e.createElementVNode("label",{class:e.normalizeClass(["geo-model-option",{active:se.value==="map2d"}]),onClick:n[7]||(n[7]=u=>$e("map2d"))},[e.createElementVNode("span",jo,e.toDisplayString(se.value==="map2d"?"●":"○"),1),n[19]||(n[19]=e.createElementVNode("span",null,"卫星地图",-1))],2),se.value==="map2d"?(e.openBlock(),e.createElementBlock("label",Xo,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":n[8]||(n[8]=u=>he.value=u),onChange:He},null,544),[[e.vModelCheckbox,he.value]]),n[20]||(n[20]=e.createElementVNode("span",null,"叠加无人机地图",-1))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",{class:"geo-leaflet-map",ref_key:"leafletRef",ref:ce},null,512),[[e.vShow,se.value==="map2d"]])],544),L.value.length>0||J.value?(e.openBlock(),e.createElementBlock("div",Zo,[L.value.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[n[26]||(n[26]=e.createElementVNode("div",{class:"geo-panel-header"},"📡 雷达统计",-1)),e.createElementVNode("div",Jo,[e.createElementVNode("div",Ko,[n[24]||(n[24]=e.createElementVNode("span",null,"可见点",-1)),e.createElementVNode("span",Qo,e.toDisplayString(At.value.toLocaleString()),1)]),e.createElementVNode("div",er,[n[25]||(n[25]=e.createElementVNode("span",null,"高风险",-1)),e.createElementVNode("span",tr,e.toDisplayString(Lt.value.toLocaleString()),1)]),e.createElementVNode("div",nr,[e.createElementVNode("div",{class:"geo-legend-bar",style:e.normalizeStyle({background:Dt.value})},null,4)]),ee.value?(e.openBlock(),e.createElementBlock("div",or,[e.createElementVNode("div",rr,e.toDisplayString(ee.value.id),1),e.createElementVNode("div",ar,[e.createElementVNode("span",null,"位移:"+e.toDisplayString(ee.value.rr.toFixed(2))+"mm",1),e.createElementVNode("span",null,"速度:"+e.toDisplayString(ee.value.av.toFixed(3))+"mm/h",1),e.createElementVNode("span",null,"高程:"+e.toDisplayString(ee.value.rl.toFixed(2))+"m",1),e.createElementVNode("span",null,"告警:"+e.toDisplayString(ee.value.cf),1)])])):(e.openBlock(),e.createElementBlock("div",sr,"点击雷达点查看详情"))])],64)):e.createCommentVNode("",!0),J.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[n[27]||(n[27]=e.createElementVNode("div",{class:"geo-panel-header"},"✂️ 剖面工具",-1)),e.createElementVNode("div",lr,[R.value==="none"?(e.openBlock(),e.createElementBlock("button",{key:0,class:"geo-btn geo-btn-primary",style:{width:"100%"},onClick:Yt,disabled:q.value},"选取两点",8,ir)):e.createCommentVNode("",!0),R.value!=="none"?(e.openBlock(),e.createElementBlock("div",cr,[e.createElementVNode("div",dr,e.toDisplayString(be.value),1),e.createElementVNode("button",{class:"geo-btn geo-btn-danger geo-btn-sm",onClick:Ht},"取消")])):e.createCommentVNode("",!0),Q.value?(e.openBlock(),e.createElementBlock("div",ur,"起:("+e.toDisplayString(Q.value.x.toFixed(1))+","+e.toDisplayString(Q.value.y.toFixed(1))+","+e.toDisplayString(Q.value.z.toFixed(1))+")",1)):e.createCommentVNode("",!0),ie.value?(e.openBlock(),e.createElementBlock("div",mr,"终:("+e.toDisplayString(ie.value.x.toFixed(1))+","+e.toDisplayString(ie.value.y.toFixed(1))+","+e.toDisplayString(ie.value.z.toFixed(1))+")",1)):e.createCommentVNode("",!0),Q.value&&ie.value&&R.value==="none"?(e.openBlock(),e.createElementBlock("button",{key:4,class:"geo-btn geo-btn-primary",style:{width:"100%"},onClick:qt,disabled:q.value||!Q.value||!ie.value},e.toDisplayString(q.value?"计算中...":"计算剖面"),9,pr)):e.createCommentVNode("",!0),Q.value||K.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:5,class:"geo-btn geo-btn-danger geo-btn-sm",onClick:vt},"清除")):e.createCommentVNode("",!0)]),K.value.length>0?(e.openBlock(),e.createElementBlock("div",vr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(K.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.nodeName,class:"geo-result-item"},[e.createElementVNode("div",{class:"geo-color-dot",style:e.normalizeStyle({background:"#"+u.nodeColor.toString(16).padStart(6,"0")})},null,4),e.createElementVNode("span",null,e.toDisplayString(u.nodeName),1),e.createElementVNode("span",fr,e.toDisplayString(u.segments.length)+"段",1)]))),128)),e.createElementVNode("div",gr,"共"+e.toDisplayString(Ce.value)+"条线段",1)])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",hr,[e.createElementVNode("span",null,e.toDisplayString(B.value),1),S.value?(e.openBlock(),e.createElementBlock("span",yr,"节点:"+e.toDisplayString(Z.value)+" 网格:"+e.toDisplayString(Ve.value),1)):e.createCommentVNode("",!0)]),e.createVNode(ro,{visible:M.value,results:K.value,startPoint:W,endPoint:le,onClose:n[10]||(n[10]=u=>M.value=!1)},null,8,["visible","results","startPoint","endPoint"])]),De.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"geo-dialog-overlay",onClick:e.withModifiers(Ze,["self"])},[e.createElementVNode("div",br,[e.createElementVNode("div",{class:"geo-group-header"},[n[28]||(n[28]=e.createElementVNode("span",null,"选择分组",-1)),e.createElementVNode("button",{class:"geo-dialog-close",onClick:Ze},"×")]),e.createElementVNode("div",kr,[e.createElementVNode("div",Er,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(ot,u=>e.createElementVNode("label",{key:u.id,class:e.normalizeClass(["geo-group-option",{selected:ke.value===u.id}])},[e.withDirectives(e.createElementVNode("input",{type:"radio",value:u.id,"onUpdate:modelValue":n[11]||(n[11]=h=>ke.value=h)},null,8,wr),[[e.vModelRadio,ke.value]]),e.createElementVNode("span",null,"📡 "+e.toDisplayString(u.name),1)],2)),64)),e.createElementVNode("label",{class:e.normalizeClass(["geo-group-option",{selected:ke.value===""}])},[e.withDirectives(e.createElementVNode("input",{type:"radio",value:"","onUpdate:modelValue":n[12]||(n[12]=u=>ke.value=u)},null,512),[[e.vModelRadio,ke.value]]),n[29]||(n[29]=e.createElementVNode("span",null,"📄 不分组",-1))],2)])]),e.createElementVNode("div",{class:"geo-group-footer"},[e.createElementVNode("button",{class:"geo-btn",onClick:Ze},"取消"),e.createElementVNode("button",{class:"geo-btn geo-btn-primary",onClick:jt},"确定")])])])):e.createCommentVNode("",!0),e.renderSlot(r.$slots,"default",{},void 0,!0)],4)}}})),Ar=we._export_sfc(Br,[["__scopeId","data-v-c35e371c"]]);exports.default=Ar;
1
+ "use strict";var an=Object.defineProperty,sn=Object.defineProperties;var ln=Object.getOwnPropertyDescriptors;var ht=Object.getOwnPropertySymbols;var cn=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable;var Ie=Math.pow,yt=(l,o,t)=>o in l?an(l,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[o]=t,Ke=(l,o)=>{for(var t in o||(o={}))cn.call(o,t)&&yt(l,t,o[t]);if(ht)for(var t of ht(o))dn.call(o,t)&&yt(l,t,o[t]);return l},Qe=(l,o)=>sn(l,ln(o));var _e=(l,o,t)=>new Promise((a,s)=>{var d=y=>{try{p(t.next(y))}catch(E){s(E)}},c=y=>{try{p(t.throw(y))}catch(E){s(E)}},p=y=>y.done?a(y.value):Promise.resolve(y.value).then(d,c);p((t=t.apply(l,o)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const et=require("element-plus/es");require("element-plus/es/components/base/style/css");require("element-plus/es/components/date-picker/style/css");require("element-plus/es/components/select/style/css");require("element-plus/es/components/option/style/css");const e=require("vue"),k=require("./three.module-CjayKmiG.cjs"),un=require("./OrbitControls-uuLGjaqy.cjs"),bt=require("./CSS2DRenderer-nQ2DN9Uc.cjs"),nt=require("./ExtensionUtilities-ClTuwtC-.cjs"),we=require("./index-D_jfRmwX.cjs"),mn=require("./BaseComponent-DErbJ2yr.cjs"),pn=require("./titleStyle-NSnz6cUg.cjs"),xe=require("./leaflet-src-BqUAMm-L.cjs");;/* empty css */const kt=require("./ele-glbModel-icon-ByACDCrv.cjs");function Et(l){const t=JSON.parse(l).properties,a=vn(t.materials||[]),s=new Map;a.forEach(p=>s.set(p.id,p));const d=t.nodes,c=fn(d,s);return{name:t.name||"Untitled",id:t.id||"",version:t.version||"",materials:a,rootNode:c}}function vn(l){return l.map(o=>{var t,a,s;return{id:((t=o.properties)==null?void 0:t.id)||"",name:((a=o.properties)==null?void 0:a.name)||"",color:typeof((s=o.properties)==null?void 0:s.color)=="number"?o.properties.color:8947848}})}function fn(l,o){var s;if(!l||l.length===0)return wt("root");const t=new Map,a=[];for(const d of l){const c=gn(d,o);t.set(c.id,c),a.push({node:c,parentId:d.parentId})}for(const{node:d,parentId:c}of a)c&&t.has(c)&&t.get(c).children.push(d);return((s=a[0])==null?void 0:s.node)||wt("root")}function wt(l){return{id:"empty",name:l,classKey:"EmptyNode",visible:!0,color:8947848,children:[],raw:{}}}function gn(l,o){const t=l.properties||{},a=l.classKey||"";let s=8947848,d;if(t.materialId){d=t.materialId;const y=o.get(d);y&&(s=y.color)}else typeof t.color=="number"&&(s=t.color);const c={id:t.id||Math.random().toString(36).slice(2),name:t.name||a,classKey:a,visible:t.visible!==void 0?!!t.visible:!0,color:s,materialId:d,children:[],raw:t},p=hn(a,t);return p&&(c.mesh=p),c}function hn(l,o){if(l==="TriMeshNode"&&o.savedData)return yn(o.savedData);if(l==="ShapeNode"||l==="MultiShapeNode")return bn(o);if((l==="GeoPlineNode"||l==="PlineNode")&&o.points)return kn(o)}function yn(l){try{const o=typeof l=="string"?JSON.parse(l):l;if(!o.pos||!o.idx)return;const t=new Float32Array(o.pos),a=new Uint32Array(o.idx),s=o.uv?new Float32Array(o.uv):new Float32Array(0),d=o.edgePos?new Float32Array(o.edgePos):new Float32Array(0),c=Mt(t,a);return{positions:t,indices:a,normals:c,uvs:s,edgePositions:d}}catch(o){return}}function bn(l){const o=l.shape;if(!o)return;const t=o.properties||o,a=t.mesh||t._mesh;if(!a)return;const s=a.properties||a,d=s.faces||s._faces;if(!d)return;const c=d.properties||d;if(!c.position)return;const p=Ye(c.position),y=En(c.index),E=c.normal?Ye(c.normal):Mt(p,y),C=c.uv?Ye(c.uv):new Float32Array(0),g=s.edges||s._lines,b=(g==null?void 0:g.properties)||g,N=b!=null&&b.position?Ye(b.position):new Float32Array(0);if(p.length!==0)return{positions:p,indices:y,normals:E,uvs:C,edgePositions:N}}function kn(l){const o=l.points;if(!o||!Array.isArray(o))return;const t=o.map(s=>s.properties?{x:s.properties.x||0,y:s.properties.y||0,z:s.properties.z||0}:{x:s.x||0,y:s.y||0,z:s.z||0});if(t.length<2)return;const a=[];for(let s=0;s<t.length-1;s++)a.push(t[s].x,t[s].y,t[s].z),a.push(t[s+1].x,t[s+1].y,t[s+1].z);return{positions:new Float32Array(0),indices:new Uint32Array(0),normals:new Float32Array(0),uvs:new Float32Array(0),edgePositions:new Float32Array(a)}}function Ye(l){var o;return l instanceof Float32Array?l:(o=l==null?void 0:l.properties)!=null&&o.buffer?new Float32Array(l.properties.buffer):Array.isArray(l)?new Float32Array(l):new Float32Array(0)}function En(l){var o;return l instanceof Uint32Array?l:(o=l==null?void 0:l.properties)!=null&&o.buffer?new Uint32Array(l.properties.buffer):Array.isArray(l)?new Uint32Array(l):new Uint32Array(0)}function Mt(l,o){if(l.length===0||o.length===0)return new Float32Array(0);const t=new Float32Array(l.length);for(let a=0;a<o.length;a+=3){const s=o[a],d=o[a+1],c=o[a+2],p=l[s*3],y=l[s*3+1],E=l[s*3+2],C=l[d*3],g=l[d*3+1],b=l[d*3+2],N=l[c*3],w=l[c*3+1],x=l[c*3+2],G=C-p,I=g-y,U=b-E,X=N-p,me=w-y,pe=x-E,ve=I*pe-U*me,oe=U*X-G*pe,H=G*me-I*X,fe=Math.sqrt(ve*ve+oe*oe+H*H)||1;for(const m of[s,d,c])t[m*3]+=ve/fe,t[m*3+1]+=oe/fe,t[m*3+2]+=H/fe}for(let a=0;a<t.length;a+=3){const s=Math.sqrt(Ie(t[a],2)+Ie(t[a+1],2)+Ie(t[a+2],2))||1;t[a]/=s,t[a+1]/=s,t[a+2]/=s}return t}function Vt(l,o){if(o==="cf"){const a=l.cf;return a<50?[0/255,170/255,255/255]:a<150?[255/255,230/255,0/255]:a<300?[255/255,145/255,0/255]:a<500?[240/255,70/255,40/255]:[180/255,0/255,0/255]}if(o==="av"){const a=l.av;return a<-.6?[0/255,80/255,220/255]:a<-.1?[0/255,170/255,255/255]:Math.abs(a)<.1?[0/255,220/255,120/255]:a<.6?[255/255,185/255,0/255]:[220/255,30/255,30/255]}const t=Math.abs(l.rr);return l.rr<0?t<5?[0/255,180/255,255/255]:t<20?[0/255,120/255,255/255]:t<60?[40/255,70/255,220/255]:[20/255,35/255,150/255]:t<5?[255/255,230/255,0/255]:t<20?[255/255,165/255,0/255]:t<60?[235/255,85/255,0/255]:[180/255,0/255,0/255]}function wn(l){return l?Array.isArray(l.points)?l:l.data&&Array.isArray(l.data.points)?l.data:{points:[],radar:{e:0,n:0,rl:0}}:{points:[],radar:{e:0,n:0,rl:0}}}k.Mesh.prototype.raycast=nt.acceleratedRaycast;class Vn{constructor(o){this.container=o,this.raycaster=new k.Raycaster,this.animFrameId=0,this.needsUpdate=!0,this.nodeEntries=new Map,this.resizeObserver=null,this.deviceMarkers=new Map,this.radarLayers=new Map,this.animate=()=>{if(this.animFrameId=requestAnimationFrame(this.animate),this.controls.update(),!this.needsUpdate)return;const a=this.camera.position.clone().sub(this.controls.target);this.dynamicLight.position.copy(a),this.renderer.render(this.scene,this.camera),this.labelRenderer.render(this.scene,this.camera),this.needsUpdate=!1},k.Object3D.DEFAULT_UP.set(0,0,1),this.scene=new k.Scene,this.camera=new k.PerspectiveCamera(50,o.clientWidth/Math.max(o.clientHeight,1),.1,1e5),this.camera.position.set(500,-500,500),this.camera.up.set(0,0,1),this.renderer=new k.WebGLRenderer({antialias:!0,alpha:!0}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(o.clientWidth,o.clientHeight),o.appendChild(this.renderer.domElement),this.labelRenderer=new bt.CSS2DRenderer,this.labelRenderer.setSize(o.clientWidth,o.clientHeight),this.labelRenderer.domElement.style.position="absolute",this.labelRenderer.domElement.style.top="0",this.labelRenderer.domElement.style.left="0",this.labelRenderer.domElement.style.pointerEvents="none",this.labelRenderer.domElement.style.overflow="visible",o.appendChild(this.labelRenderer.domElement),this.controls=new un.OrbitControls(this.camera,this.renderer.domElement),this.controls.enableDamping=!1,this.controls.mouseButtons={LEFT:k.MOUSE.ROTATE,MIDDLE:k.MOUSE.PAN,RIGHT:k.MOUSE.PAN},this.controls.addEventListener("change",()=>{this.updateCameraNearFar(),this.needsUpdate=!0});const t=new k.AmbientLight(8947848,4);this.dynamicLight=new k.DirectionalLight(16777215,2),this.scene.add(t,this.dynamicLight),this.scene.add(new k.AxesHelper(250)),this.resizeObserver=new ResizeObserver(()=>this.resize()),this.resizeObserver.observe(o),this.animate()}loadDocument(o,t){return _e(this,null,function*(){this.clearModel();const a=this.flattenNodes(o.rootNode),s=a.filter(c=>c.mesh&&c.mesh.positions.length>0);t==null||t(`构建场景树 (${a.length} 节点)...`),this.buildGroupTree(o.rootNode,this.scene);let d=0;for(const c of s)this.createMeshForNode(c),d++,d%5===0&&(t==null||t(`创建网格 ${d}/${s.length}...`),yield new Promise(p=>setTimeout(p,0)));this.fitContent(),this.needsUpdate=!0})}flattenNodes(o){const t=[o];for(const a of o.children)t.push(...this.flattenNodes(a));return t}buildGroupTree(o,t){const a=new k.Group;a.name=o.name,a.visible=o.visible,t.add(a);const s={node:o,group:a};this.nodeEntries.set(o.id,s);for(const d of o.children)this.buildGroupTree(d,a)}createMeshForNode(o){var p,y;const t=this.nodeEntries.get(o.id);if(!t||!o.mesh)return;const{positions:a,indices:s,edgePositions:d}=o.mesh;if(a.length>0&&s.length>0){const E=new k.BufferGeometry;E.setAttribute("position",new k.BufferAttribute(a,3)),E.setIndex(new k.BufferAttribute(s,1)),E.computeVertexNormals(),E.computeBoundingBox(),E.boundsTree=new nt.MeshBVH(E);const C=new k.MeshLambertMaterial({color:new k.Color(o.color),side:k.DoubleSide,flatShading:!0}),g=new k.Mesh(E,C);g.name=o.name+"_mesh",t.group.add(g),t.meshObj=g}const c=(y=(p=o.raw)==null?void 0:p.displayMode)!=null?y:0;if(d.length>0&&c>0){const E=new k.BufferGeometry;E.setAttribute("position",new k.BufferAttribute(d,3)),E.computeBoundingBox();const C=new k.LineBasicMaterial({color:0,linewidth:1}),g=new k.LineSegments(E,C);g.name=o.name+"_edges",t.group.add(g),t.edgeObj=g}}setNodeVisible(o,t){const a=this.nodeEntries.get(o);a&&(this.setNodeVisibleRecursive(a.node,t),this.needsUpdate=!0)}setNodeVisibleRecursive(o,t){o.visible=t;const a=this.nodeEntries.get(o.id);a&&(a.group.visible=t);for(const s of o.children)this.setNodeVisibleRecursive(s,t)}fitContent(){try{this.scene.updateMatrixWorld(!0);const o=new k.Box3;if(this.scene.traverse(d=>{if(!(d instanceof k.AxesHelper)&&(d instanceof k.Mesh||d instanceof k.LineSegments)){const c=d.geometry;if(c&&c.attributes.position&&(c.computeBoundingBox(),c.boundingBox&&!c.boundingBox.isEmpty())){const p=c.boundingBox.clone();p.applyMatrix4(d.matrixWorld),o.union(p)}}}),o.isEmpty())return;const t=o.getCenter(new k.Vector3),a=o.getSize(new k.Vector3),s=Math.max(a.x,a.y,a.z);this.controls.target.copy(t),this.camera.position.set(t.x+s*.8,t.y-s*.8,t.z+s*.6),this.updateCameraNearFar(),this.controls.update(),this.needsUpdate=!0}catch(o){console.warn("[fitContent] error:",o)}}getVisibleMeshEntries(){const o=[];return this.nodeEntries.forEach(t=>{t.meshObj&&t.group.visible&&t.node.mesh&&o.push(t)}),o}addSectionLines(o,t){const a=new k.BufferGeometry;a.setAttribute("position",new k.BufferAttribute(o,3));const s=new k.LineBasicMaterial({color:t,linewidth:2,depthTest:!1}),d=new k.LineSegments(a,s);return d.renderOrder=999,d.name="__section_result__",this.scene.add(d),this.needsUpdate=!0,d}addSectionPath(o,t=16776960){const a=[];for(let p=0;p<o.length-1;p++)a.push(o[p].x,o[p].y,o[p].z),a.push(o[p+1].x,o[p+1].y,o[p+1].z);const s=new k.BufferGeometry;s.setAttribute("position",new k.BufferAttribute(new Float32Array(a),3));const d=new k.LineBasicMaterial({color:t,linewidth:3,depthTest:!1}),c=new k.LineSegments(s,d);return c.renderOrder=1e3,c.name="__section_path__",this.scene.add(c),this.needsUpdate=!0,c}clearSectionResults(){const o=[];this.scene.traverse(t=>{(t.name==="__section_result__"||t.name==="__section_path__")&&o.push(t)}),o.forEach(t=>{t.removeFromParent(),t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose()}),this.needsUpdate=!0}setTransparency(o){this.nodeEntries.forEach(t=>{if(t.meshObj){const a=t.meshObj.material;a.transparent=o,a.opacity=o?.4:1,a.depthWrite=!o,a.needsUpdate=!0}}),this.needsUpdate=!0}pickPoint(o){const t=this.renderer.domElement.getBoundingClientRect(),a=new k.Vector2((o.clientX-t.left)/t.width*2-1,-((o.clientY-t.top)/t.height)*2+1);this.raycaster.setFromCamera(a,this.camera);const s=[];this.scene.traverse(c=>{c instanceof k.Mesh&&c.name.endsWith("_mesh")&&c.visible&&s.push(c)});const d=this.raycaster.intersectObjects(s,!1);return d.length>0?d[0].point.clone():null}addPickMarker(o,t=16711680){const a=new k.SphereGeometry(1,16,16),s=new k.MeshBasicMaterial({color:t,depthTest:!1}),d=new k.Mesh(a,s);d.position.copy(o),d.renderOrder=998,d.name="__pick_marker__";const c=this.camera.position.distanceTo(this.controls.target);return d.scale.setScalar(c*.008),this.scene.add(d),this.needsUpdate=!0,d}addPickLine(o,t){const a=new k.BufferGeometry;a.setAttribute("position",new k.BufferAttribute(new Float32Array([o.x,o.y,o.z,t.x,t.y,t.z]),3));const s=new k.LineBasicMaterial({color:16776960,linewidth:2,depthTest:!1}),d=new k.LineSegments(a,s);return d.renderOrder=998,d.name="__pick_line__",this.scene.add(d),this.needsUpdate=!0,d}clearPickMarkers(){const o=[];this.scene.traverse(t=>{(t.name==="__pick_marker__"||t.name==="__pick_line__")&&o.push(t)}),o.forEach(t=>{t.removeFromParent(),t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose()}),this.needsUpdate=!0}addRadarLayer(o,t,a){if(this.removeRadarLayer(o),t.length===0)return;const s=new Float32Array(t.length*3),d=new Float32Array(t.length*3);for(let E=0;E<t.length;E++){const C=t[E],g=E*3;s[g]=C.e,s[g+1]=C.n,s[g+2]=C.rl;const b=Vt(C,a);d[g]=b[0],d[g+1]=b[1],d[g+2]=b[2]}const c=new k.BufferGeometry;c.setAttribute("position",new k.BufferAttribute(s,3)),c.setAttribute("color",new k.BufferAttribute(d,3)),c.computeBoundingSphere();const p=new k.PointsMaterial({size:5,sizeAttenuation:!1,vertexColors:!0,depthWrite:!1,depthTest:!1,toneMapped:!1}),y=new k.Points(c,p);y.renderOrder=900,y.name=`__radar_layer_${o}__`,this.scene.add(y),this.radarLayers.set(o,{cloud:y,pointIndex:t}),this.needsUpdate=!0}setRadarLayerVisible(o,t){const a=this.radarLayers.get(o);a&&(a.cloud.visible=t,this.needsUpdate=!0)}updateRadarLayerColors(o,t,a){const s=this.radarLayers.get(o);if(!s)return;const d=s.cloud.geometry.getAttribute("color"),c=d.array;for(let p=0;p<t.length;p++){const y=Vt(t[p],a),E=p*3;c[E]=y[0],c[E+1]=y[1],c[E+2]=y[2]}d.needsUpdate=!0,this.needsUpdate=!0}pickRadarPoint(o){const t=this.renderer.domElement.getBoundingClientRect(),a=new k.Vector2((o.clientX-t.left)/t.width*2-1,-((o.clientY-t.top)/t.height)*2+1),s=new k.Vector3;let d=.002,c=null;for(const[p,y]of this.radarLayers){if(!y.cloud.visible)continue;const C=y.cloud.geometry.getAttribute("position").array;for(let g=0;g<C.length;g+=3){if(s.set(C[g],C[g+1],C[g+2]).project(this.camera),s.z<-1||s.z>1)continue;const b=s.x-a.x,N=s.y-a.y,w=b*b+N*N;w<d&&(d=w,c={layerId:p,point:y.pointIndex[g/3]})}}return c}removeRadarLayer(o){const t=this.radarLayers.get(o);t&&(this.scene.remove(t.cloud),t.cloud.geometry.dispose(),t.cloud.material.dispose(),this.radarLayers.delete(o),this.needsUpdate=!0)}clearAllRadarLayers(){for(const[o]of this.radarLayers)this.removeRadarLayer(o)}addDeviceMarker(o,t,a){this.removeDeviceMarker(o);const s=new bt.CSS2DObject(a);return s.position.set(t.e,t.n,t.rl),s.name=`__device_marker_${o}__`,this.scene.add(s),this.deviceMarkers.set(o,s),this.needsUpdate=!0,s}updateDeviceMarkerPosition(o,t){const a=this.deviceMarkers.get(o);a&&(a.position.set(t.e,t.n,t.rl),this.needsUpdate=!0)}removeDeviceMarker(o){const t=this.deviceMarkers.get(o);t&&(this.scene.remove(t),this.deviceMarkers.delete(o),this.needsUpdate=!0)}removeAllDeviceMarkers(){for(const[o]of this.deviceMarkers)this.removeDeviceMarker(o)}setDeviceMarkerVisible(o,t){const a=this.deviceMarkers.get(o);a&&(a.visible=t,this.needsUpdate=!0)}setDeviceMarkersVisible(o){for(const[,t]of this.deviceMarkers)t.visible=o;this.needsUpdate=!0}clearModel(){const o=[];this.scene.children.forEach(t=>{t instanceof k.Group&&o.push(t)}),o.forEach(t=>{t.traverse(a=>{if(a.geometry&&a.geometry.dispose(),a.material){const s=a.material;Array.isArray(s)?s.forEach(d=>d.dispose()):s.dispose()}}),t.removeFromParent()}),this.nodeEntries.clear(),this.clearSectionResults()}resize(){const o=this.container.clientWidth,t=this.container.clientHeight;t<1||(this.camera.aspect=o/t,this.camera.updateProjectionMatrix(),this.renderer.setSize(o,t),this.labelRenderer.setSize(o,t),this.needsUpdate=!0)}updateCameraNearFar(){const o=this.camera.position.distanceTo(this.controls.target);o<1?(this.camera.near=.001,this.camera.far=100):o<10?(this.camera.near=.01,this.camera.far=1e3):o<100?(this.camera.near=.1,this.camera.far=1e4):o<1e3?(this.camera.near=1,this.camera.far=1e5):o<1e4?(this.camera.near=10,this.camera.far=1e6):o<1e5?(this.camera.near=100,this.camera.far=1e7):(this.camera.near=1e3,this.camera.far=1e8),this.camera.updateProjectionMatrix()}requestUpdate(){this.needsUpdate=!0}dispose(){var o;cancelAnimationFrame(this.animFrameId),(o=this.resizeObserver)==null||o.disconnect(),this.clearModel(),this.clearAllRadarLayers(),this.removeAllDeviceMarkers(),this.controls.dispose(),this.renderer.dispose(),this.renderer.domElement.remove(),this.labelRenderer.domElement.remove()}}function Nn(l,o){const t=new k.Vector3().subVectors(o,l).normalize();let a=new k.Vector3().crossVectors(t,new k.Vector3(0,0,1)).normalize();return a.lengthSq()<.01&&(a=new k.Vector3().crossVectors(t,new k.Vector3(1,0,0)).normalize()),{start:l.clone(),end:o.clone(),normal:a}}function _n(l){const o=[];for(let t=0;t<l.length-1;t++)o.push(Nn(l[t],l[t+1]));return o}const Nt=new WeakMap;function Mn(l,o){if(!l.mesh||l.mesh.positions.length===0||l.mesh.indices.length===0)return new Float32Array(0);let t=Nt.get(l);t||(t=new k.BufferGeometry,t.setAttribute("position",new k.BufferAttribute(l.mesh.positions,3)),t.setIndex(new k.BufferAttribute(l.mesh.indices,1)),t.boundsTree=new nt.MeshBVH(t),Nt.set(l,t));const a=t.boundsTree,s=[],d=new k.Line3;return a.shapecast({intersectsBounds:c=>o.intersectsBox(c),intersectsTriangle:c=>(Sn(c,o,d)&&s.push(d.start.x,d.start.y,d.start.z,d.end.x,d.end.y,d.end.z),!1)}),new Float32Array(s)}function Sn(l,o,t){const a=o.distanceToPoint(l.a),s=o.distanceToPoint(l.b),d=o.distanceToPoint(l.c);if(a>0&&s>0&&d>0||a<0&&s<0&&d<0||a===0&&s===0&&d===0)return!1;const c=[];if(tt(l.a,l.b,a,s,c),tt(l.b,l.c,s,d,c),tt(l.c,l.a,d,a,c),c.length>=2){t.start.copy(c[0]);let p=0,y=1;for(let E=1;E<c.length;E++){const C=c[0].distanceToSquared(c[E]);C>p&&(p=C,y=E)}return t.end.copy(c[y]),p>=1e-10}return!1}function tt(l,o,t,a,s){if(t*a<0){const d=t/(t-a);s.push(new k.Vector3().copy(l).lerp(o,d))}else Math.abs(t)<1e-5&&(s.length===0||s[s.length-1].distanceTo(l)>1e-5)&&s.push(l.clone())}function Cn(l,o,t){const a=[],s=new k.Vector3().subVectors(t,o),d=s.lengthSq();if(d<1e-6)return[];const c=(p,y,E)=>{const C=p-o.x,g=y-o.y,b=E-o.z;return(C*s.x+g*s.y+b*s.z)/d};for(let p=0;p<l.length;p+=6){const y=l[p],E=l[p+1],C=l[p+2],g=l[p+3],b=l[p+4],N=l[p+5],w=c(y,E,C),x=c(g,b,N);if(w>=0&&w<=1&&x>=0&&x<=1){a.push(y,E,C,g,b,N);continue}if(w<0&&x<0||w>1&&x>1)continue;const G=Math.min(w,x),I=Math.max(w,x),U=w<x?{x:y,y:E,z:C}:{x:g,y:b,z:N},X=w<x?{x:g,y:b,z:N}:{x:y,y:E,z:C},me=Math.max(G,0),pe=Math.min(I,1);if(me<pe){const ve=I-G,oe=(me-G)/ve,H=(pe-G)/ve;a.push(U.x+(X.x-U.x)*oe,U.y+(X.y-U.y)*oe,U.z+(X.z-U.z)*oe,U.x+(X.x-U.x)*H,U.y+(X.y-U.y)*H,U.z+(X.z-U.z)*H)}}return a}function xn(l,o){if(o.length<2)return{results:[],allPositions:new Float32Array(0)};const t=_n(o),a=[],s=[];for(const d of l){const c=d.node;if(!c.mesh||c.mesh.positions.length===0)continue;const p=[];for(const y of t){const E=new k.Plane(y.normal.clone(),-y.normal.dot(y.start)),C=Mn(c,E);if(C.length>0){const g=Cn(C,y.start,y.end);g.length>0&&p.push(...g)}}if(p.length>0){a.push(...p);const y=[];for(let E=0;E<p.length;E+=6)y.push({start:{x:p[E],y:p[E+1],z:p[E+2]},end:{x:p[E+3],y:p[E+4],z:p[E+5]}});s.push({nodeName:c.name,nodeColor:c.color,segments:y})}}return{results:s,allPositions:new Float32Array(a)}}const Bn={class:"geo-toggle"},An=["title"],Ln=["title"],Dn=e.defineComponent({__name:"Geo3dNodeTree",props:{node:{},scene:{},depth:{default:0}},emits:["toggle-visible"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(t.depth<2);function d(){t.node.children.length>0&&(s.value=!s.value)}function c(){const p=!t.node.visible;t.node.visible=p,a("toggle-visible",t.node.id,p)}return(p,y)=>{const E=e.resolveComponent("Geo3dNodeTree",!0);return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:"geo-tree-item",style:e.normalizeStyle({paddingLeft:l.depth*16+8+"px"}),onClick:d},[e.createElementVNode("span",Bn,[l.node.children.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(s.value?"▼":"▶"),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" ")],64))]),e.createElementVNode("div",{class:"geo-icon",style:e.normalizeStyle({background:"#"+l.node.color.toString(16).padStart(6,"0")})},null,4),e.createElementVNode("span",{class:"geo-label",title:l.node.name},e.toDisplayString(l.node.name),9,An),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!l.node.visible}]),onClick:e.withModifiers(c,["stop"]),title:l.node.visible?"隐藏":"显示"},e.toDisplayString(l.node.visible?"👁":"👁‍🗨"),11,Ln)],4),s.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.node.children,C=>(e.openBlock(),e.createBlock(E,{key:C.id,node:C,scene:l.scene,depth:l.depth+1,onToggleVisible:y[0]||(y[0]=(g,b)=>a("toggle-visible",g,b))},null,8,["node","scene","depth"]))),128)):e.createCommentVNode("",!0)])}}}),Fn=we._export_sfc(Dn,[["__scopeId","data-v-24fac17a"]]),Rn={class:"geo-radar-tree"},zn=["onClick"],Tn={class:"geo-toggle"},$n=["title"],Un={class:"geo-count"},Pn=["onClick"],On=["title"],Gn={class:"geo-count"},In=["onClick"],Yn=["onClick"],Hn=["title"],qn={class:"geo-count"},Wn=["onClick"],jn=["onClick"],Xn={key:0,class:"geo-radar-empty"},Zn=e.defineComponent({__name:"Geo3dRadarTree",props:{layers:{},groups:{}},emits:["toggle-layer","toggle-group","remove-layer"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(new Set(t.groups.map(b=>b.id)));function d(b){return s.value.has(b)}function c(b){const N=new Set(s.value);N.has(b)?N.delete(b):N.add(b),s.value=N}const p=e.computed(()=>t.layers.filter(b=>!b.groupId));function y(b){return b.layers.length>0&&b.layers.some(N=>N.visible)}function E(b){return b.layers.reduce((N,w)=>N+w.points.length,0).toLocaleString()}function C(b){a("toggle-group",b.id,!y(b))}function g(b){if(b.points.length===0)return"#999";const N=["#2563eb","#10b981","#f59e0b","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16"];let w=0;for(let x=0;x<b.name.length;x++)w=(w<<5)-w+b.name.charCodeAt(x)|0;return N[Math.abs(w)%N.length]}return(b,N)=>(e.openBlock(),e.createElementBlock("div",Rn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.groups,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:"geo-radar-group"},[e.createElementVNode("div",{class:"geo-radar-item group-item",onClick:x=>c(w.id)},[e.createElementVNode("span",Tn,e.toDisplayString(d(w.id)?"▼":"▶"),1),N[0]||(N[0]=e.createElementVNode("span",{class:"geo-radar-icon"},"📡",-1)),e.createElementVNode("span",{class:"geo-label",title:w.name},e.toDisplayString(w.name),9,$n),e.createElementVNode("span",Un,e.toDisplayString(E(w)),1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!y(w)}]),onClick:e.withModifiers(x=>C(w),["stop"])},e.toDisplayString(y(w)?"👁":"👁‍🗨"),11,Pn)],8,zn),d(w.id)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(w.layers,x=>(e.openBlock(),e.createElementBlock("div",{key:x.id,class:"geo-radar-item layer-item"},[N[1]||(N[1]=e.createElementVNode("span",{class:"geo-toggle"}," ",-1)),e.createElementVNode("div",{class:"geo-layer-dot",style:e.normalizeStyle({background:g(x)})},null,4),e.createElementVNode("span",{class:"geo-label",title:x.name},e.toDisplayString(x.name),9,On),e.createElementVNode("span",Gn,e.toDisplayString(x.points.length.toLocaleString()),1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!x.visible}]),onClick:e.withModifiers(G=>b.$emit("toggle-layer",x.id,!x.visible),["stop"])},e.toDisplayString(x.visible?"👁":"👁‍🗨"),11,In),e.createElementVNode("button",{class:"geo-del-btn",onClick:e.withModifiers(G=>b.$emit("remove-layer",x.id),["stop"]),title:"删除"},"×",8,Yn)]))),128)):e.createCommentVNode("",!0)]))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:"geo-radar-item layer-item"},[N[2]||(N[2]=e.createElementVNode("span",{class:"geo-toggle"}," ",-1)),e.createElementVNode("div",{class:"geo-layer-dot",style:e.normalizeStyle({background:g(w)})},null,4),e.createElementVNode("span",{class:"geo-label",title:w.name},e.toDisplayString(w.name),9,Hn),e.createElementVNode("span",qn,e.toDisplayString(w.points.length.toLocaleString()),1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!w.visible}]),onClick:e.withModifiers(x=>b.$emit("toggle-layer",w.id,!w.visible),["stop"])},e.toDisplayString(w.visible?"👁":"👁‍🗨"),11,Wn),e.createElementVNode("button",{class:"geo-del-btn",onClick:e.withModifiers(x=>b.$emit("remove-layer",w.id),["stop"]),title:"删除"},"×",8,jn)]))),128)),l.groups.length===0&&p.value.length===0?(e.openBlock(),e.createElementBlock("div",Xn,"暂无雷达数据")):e.createCommentVNode("",!0)]))}}),Jn=we._export_sfc(Zn,[["__scopeId","data-v-8a9239e4"]]),Kn={class:"geo-dialog-box"},Qn={class:"geo-dialog-header"},eo={key:0,class:"geo-highlight-tag"},to={class:"geo-dialog-body"},no={key:0,class:"geo-no-result"},oo=e.defineComponent({__name:"Geo3dSectionDialog",props:{visible:{type:Boolean},results:{},startPoint:{},endPoint:{}},emits:["close"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(),d=e.ref();let c=1100,p=600;const y=e.ref(!1),E=e.ref(""),C=e.ref({}),g=e.ref(null);function b(m){const S=parseInt(m.slice(1,3),16),v=parseInt(m.slice(3,5),16),D=parseInt(m.slice(5,7),16),F=.7,B=Math.round(S*F),P=Math.round(v*F),Z=Math.round(D*F);return`#${B.toString(16).padStart(2,"0")}${P.toString(16).padStart(2,"0")}${Z.toString(16).padStart(2,"0")}`}const N=["#d32f2f","#1565c0","#2e7d32","#e65100","#6a1b9a","#00838f","#c62828","#283593","#1b5e20","#bf360c"];function w(m,S){const v=parseInt(m.slice(1,3),16),D=parseInt(m.slice(3,5),16),F=parseInt(m.slice(5,7),16);return(v*299+D*587+F*114)/1e3>180?N[S%N.length]:b(m)}e.computed(()=>{const m=new Map;return t.results.forEach((S,v)=>{const D="#"+S.nodeColor.toString(16).padStart(6,"0"),F=w(D,v);m.has(S.nodeName)?m.get(S.nodeName).count+=S.segments.length:m.set(S.nodeName,{color:F,count:S.segments.length})}),Array.from(m.entries()).map(([S,v])=>({name:S,color:v.color,count:v.count}))});function x(){a("close"),g.value=null}function G(){const m=s.value;if(!m)return;const S=m.toDataURL("image/png"),v=document.createElement("a");v.download=`剖面结果_${new Date().toISOString().slice(0,10)}.png`,v.href=S,v.click()}const I=[];e.watch(()=>t.visible,m=>_e(null,null,function*(){m&&(g.value=null,yield e.nextTick(),U())}));function U(){const m=s.value,S=d.value;if(!m||!S)return;const v=m.getContext("2d");if(!v)return;const D=S.clientWidth;c=Math.max(D,600),p=Math.round(c*.5);const F=window.devicePixelRatio||1;if(m.width=c*F,m.height=p*F,m.style.width=c+"px",m.style.height=p+"px",v.scale(F,F),v.clearRect(0,0,c,p),t.results.length===0)return;const B=t.endPoint.x-t.startPoint.x,P=t.endPoint.y-t.startPoint.y,Z=Math.sqrt(B*B+P*P);if(Z<1e-6)return;const Ve=B/Z,ce=P/Z,A=[];let re=1/0,ge=-1/0,Ne=1/0,Me=-1/0;if(t.results.forEach((M,R)=>{const Q="#"+M.nodeColor.toString(16).padStart(6,"0"),ie=w(Q,R);for(const be of M.segments){const Ce=(be.start.x-t.startPoint.x)*Ve+(be.start.y-t.startPoint.y)*ce,L=be.start.z,O=(be.end.x-t.startPoint.x)*Ve+(be.end.y-t.startPoint.y)*ce,ee=be.end.z;A.push({x1:Ce,z1:L,x2:O,z2:ee,color:ie,name:M.nodeName}),re=Math.min(re,Ce,O),ge=Math.max(ge,Ce,O),Ne=Math.min(Ne,L,ee),Me=Math.max(Me,L,ee)}}),A.length===0)return;const Le=ge-re||1,Te=Me-Ne||1,ae=70,se=30,he=30,ye=50,Se=c-ae-se,Be=p-he-ye,$e=Se/Le,He=Be/Te,J=M=>ae+(M-re)*$e,q=M=>p-ye-(M-Ne)*He;v.fillStyle="#fafafa",v.fillRect(0,0,c,p),v.strokeStyle="#bbb",v.lineWidth=1,v.strokeRect(ae,he,Se,Be);const W=fe(Le),le=fe(Te);v.strokeStyle="#e8e8e8",v.lineWidth=.5;for(let M=Math.ceil(re/W)*W;M<=ge;M+=W){const R=J(M);v.beginPath(),v.moveTo(R,he),v.lineTo(R,p-ye),v.stroke()}for(let M=Math.ceil(Ne/le)*le;M<=Me;M+=le){const R=q(M);v.beginPath(),v.moveTo(ae,R),v.lineTo(c-se,R),v.stroke()}v.fillStyle="#444",v.font="11px monospace",v.textAlign="center";for(let M=Math.ceil(re/W)*W;M<=ge;M+=W)v.fillText(M.toFixed(0),J(M),p-ye+16);v.textAlign="right";for(let M=Math.ceil(Ne/le)*le;M<=Me;M+=le)v.fillText(M.toFixed(0),ae-6,q(M)+4);v.fillStyle="#222",v.font="bold 13px sans-serif",v.textAlign="center",v.fillText("水平距离 (m)",ae+Se/2,p-4),v.save(),v.translate(14,he+Be/2),v.rotate(-Math.PI/2),v.fillText("标高 Z (m)",0,0),v.restore(),v.save(),v.beginPath(),v.rect(ae,he,Se,Be),v.clip();const K=g.value;if(K){v.lineWidth=1.5,v.globalAlpha=.2;for(const M of A)M.name!==K&&(v.strokeStyle=M.color,v.beginPath(),v.moveTo(J(M.x1),q(M.z1)),v.lineTo(J(M.x2),q(M.z2)),v.stroke());v.globalAlpha=1}v.lineWidth=K?4:1.5,v.lineCap="round";for(const M of A)K&&M.name!==K||(v.strokeStyle=M.color,v.beginPath(),v.moveTo(J(M.x1),q(M.z1)),v.lineTo(J(M.x2),q(M.z2)),v.stroke());v.restore(),I.length=0;for(const M of A)I.push({sx1:J(M.x1),sy1:q(M.z1),sx2:J(M.x2),sy2:q(M.z2),name:M.name,color:M.color})}function X(m,S,v,D,F,B){const P=F-v,Z=B-D,Ve=P*P+Z*Z;if(Ve<1e-6)return Math.hypot(m-v,S-D);let ce=((m-v)*P+(S-D)*Z)/Ve;return ce=Math.max(0,Math.min(1,ce)),Math.hypot(m-(v+ce*P),S-(D+ce*Z))}function me(m){const v=s.value.getBoundingClientRect();return{mx:(m.clientX-v.left)*(c/v.width),my:(m.clientY-v.top)*(p/v.height),rect:v}}function pe(m,S){let v=1/0,D="",F="";for(const B of I){const P=X(m,S,B.sx1,B.sy1,B.sx2,B.sy2);P<v&&(v=P,D=B.name,F=B.color)}return{bestDist:v,bestName:D,bestColor:F}}function ve(m){if(!s.value||I.length===0)return;const{mx:S,my:v,rect:D}=me(m),{bestDist:F,bestName:B,bestColor:P}=pe(S,v);F<12?(y.value=!0,E.value=B,C.value={left:m.clientX-D.left+14+"px",top:m.clientY-D.top-8+"px",borderLeft:`4px solid ${P}`},s.value.style.cursor="pointer"):(y.value=!1,s.value.style.cursor="default")}function oe(){y.value=!1}function H(m){if(!s.value||I.length===0)return;const{mx:S,my:v}=me(m),{bestDist:D,bestName:F}=pe(S,v);D<12?g.value=g.value===F?null:F:g.value=null,U()}function fe(m){const S=m/8,v=Math.pow(10,Math.floor(Math.log10(S))),D=S/v;return D<1.5?v:D<3.5?2*v:D<7.5?5*v:10*v}return(m,S)=>l.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"geo-dialog-overlay",onClick:e.withModifiers(x,["self"])},[e.createElementVNode("div",Kn,[e.createElementVNode("div",Qn,[S[0]||(S[0]=e.createElementVNode("span",{class:"geo-dialog-title"},"剖面结果",-1)),g.value?(e.openBlock(),e.createElementBlock("span",eo,e.toDisplayString(g.value),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"geo-export-btn",onClick:G,title:"导出图片"},"💾 导出图片"),e.createElementVNode("button",{class:"geo-dialog-close",onClick:x},"×")]),e.createElementVNode("div",to,[e.createElementVNode("div",{class:"geo-canvas-wrap",ref_key:"canvasWrapRef",ref:d},[e.createElementVNode("canvas",{ref_key:"canvasRef",ref:s,onMousemove:ve,onMouseleave:oe,onClick:H},null,544),y.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"geo-canvas-tooltip",style:e.normalizeStyle(C.value)},e.toDisplayString(E.value),5)):e.createCommentVNode("",!0)],512),l.results.length===0?(e.openBlock(),e.createElementBlock("div",no,"该剖切线未与任何模型相交")):e.createCommentVNode("",!0)])])])):e.createCommentVNode("",!0)}}),ro=we._export_sfc(oo,[["__scopeId","data-v-9d57c901"]]),ao={class:"marker-header"},so={class:"marker-icon"},lo={class:"marker-name"},io={key:0,class:"marker-rows"},co={class:"row-label"},uo={class:"row-value"},mo={class:"row-unit"},_t=e.defineComponent({__name:"Geo3dDeviceMarker",props:{deviceType:{},name:{},icon:{},rows:{},arrowAngle:{}},setup(l){const o=e.ref(!1),t=l,a=e.computed(()=>t.rows.filter(s=>s.label&&s.label.trim()!==""));return(s,d)=>(e.openBlock(),e.createElementBlock("div",{class:"geo3d-device-marker",onClick:d[0]||(d[0]=e.withModifiers(c=>o.value=!o.value,["stop"]))},[e.createElementVNode("div",ao,[e.createElementVNode("span",so,e.toDisplayString(l.icon),1),e.createElementVNode("span",lo,e.toDisplayString(l.name),1)]),o.value&&a.value.length>0?(e.openBlock(),e.createElementBlock("div",io,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(c,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"marker-row"},[e.createElementVNode("span",co,e.toDisplayString(c.label),1),e.createElementVNode("span",uo,e.toDisplayString(c.value),1),e.createElementVNode("span",mo,e.toDisplayString(c.unit),1)]))),128))])):e.createCommentVNode("",!0),o.value&&l.arrowAngle!=null?(e.openBlock(),e.createElementBlock("div",{key:1,class:"marker-arrow",style:e.normalizeStyle({transform:`rotate(${l.arrowAngle}deg)`})},[...d[1]||(d[1]=[e.createElementVNode("svg",{width:"48",height:"12",viewBox:"0 0 48 12",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("line",{x1:"2",y1:"6",x2:"36",y2:"6",stroke:"rgba(51,51,51,0.8)","stroke-width":"2","stroke-linecap":"round"}),e.createElementVNode("polygon",{points:"34,1 48,6 34,11",fill:"rgba(51,51,51,0.8)"})],-1)])],4)):e.createCommentVNode("",!0)]))}}),po={class:"geo-device-tree"},vo=["onClick"],fo={class:"geo-toggle"},go={class:"geo-device-icon"},ho=["title"],yo={class:"geo-count"},bo=["onClick"],ko=["title"],Eo=["onClick"],wo={key:0,class:"geo-device-empty"},Vo=e.defineComponent({__name:"Geo3dDeviceTree",props:{devices:{}},emits:["toggle-device","toggle-group"],setup(l,{emit:o}){const t=l,a=o,s=e.ref(new Set);let d=!1;const c=e.computed(()=>{const g=new Map;for(const b of t.devices){const N=b.deviceType||"未知";g.has(N)||g.set(N,{type:N,icon:b.icon,devices:[]}),g.get(N).devices.push(b)}return Array.from(g.values())});e.watch(c,g=>{!d&&g.length>0&&(s.value=new Set(g.map(b=>b.type)),d=!0)},{immediate:!0});function p(g){return s.value.has(g)}function y(g){const b=new Set(s.value);b.has(g)?b.delete(g):b.add(g),s.value=b}function E(g){return g.devices.length>0&&g.devices.some(b=>b.visible)}function C(g){a("toggle-group",g.type,!E(g))}return(g,b)=>(e.openBlock(),e.createElementBlock("div",po,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,N=>(e.openBlock(),e.createElementBlock("div",{key:N.type,class:"geo-device-group"},[e.createElementVNode("div",{class:"geo-device-item group-item",onClick:w=>y(N.type)},[e.createElementVNode("span",fo,e.toDisplayString(p(N.type)?"▼":"▶"),1),e.createElementVNode("span",go,e.toDisplayString(N.icon),1),e.createElementVNode("span",{class:"geo-label",title:N.type},e.toDisplayString(N.type),9,ho),e.createElementVNode("span",yo,e.toDisplayString(N.devices.length)+"台",1),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!E(N)}]),onClick:e.withModifiers(w=>C(N),["stop"])},e.toDisplayString(E(N)?"👁":"👁‍🗨"),11,bo)],8,vo),p(N.type)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(N.devices,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:"geo-device-item device-item"},[b[0]||(b[0]=e.createElementVNode("span",{class:"geo-toggle"}," ",-1)),e.createElementVNode("div",{class:"geo-device-dot",style:e.normalizeStyle({background:w.visible?"#10b981":"#ccc"})},null,4),e.createElementVNode("span",{class:"geo-label",title:w.name},e.toDisplayString(w.name),9,ko),e.createElementVNode("button",{class:e.normalizeClass(["geo-vis-btn",{hidden:!w.visible}]),onClick:e.withModifiers(x=>g.$emit("toggle-device",w.id,!w.visible),["stop"])},e.toDisplayString(w.visible?"👁":"👁‍🗨"),11,Eo)]))),128)):e.createCommentVNode("",!0)]))),128)),c.value.length===0?(e.openBlock(),e.createElementBlock("div",wo,"暂无监测设备")):e.createCommentVNode("",!0)]))}}),No=we._export_sfc(Vo,[["__scopeId","data-v-c4ab4eb8"]]),_o={class:"mix-body"},Mo={key:0,class:"geo-filter-bar"},So={class:"geo-time-btns"},Co=["onClick"],xo={class:"geo-toolbar"},Bo=["disabled"],Ao=["disabled"],Lo={class:"geo-mode-group"},Do=["onClick"],Fo={key:1,class:"geo-pick-badge"},Ro={class:"geo-doc-name"},zo={class:"geo-main"},To={key:0,class:"geo-panel-left"},$o={class:"geo-device-count"},Uo={class:"geo-panel-header geo-radar-header"},Po={class:"geo-radar-count"},Oo={class:"geo-tree-scroll"},Go={key:0,class:"geo-loading"},Io={key:1,class:"geo-drop-hint"},Yo={key:2,class:"geo-model-selector"},Ho={key:0,class:"geo-model-dropdown"},qo=["onClick"],Wo={class:"geo-model-radio"},jo={class:"geo-model-radio"},Xo={key:0,class:"geo-model-option geo-model-sub"},Zo={key:1,class:"geo-panel-right"},Jo={class:"geo-radar-stats"},Ko={class:"geo-stat-row"},Qo={class:"geo-stat-val"},er={class:"geo-stat-row"},tr={class:"geo-stat-alarm"},nr={class:"geo-legend"},or={key:0,class:"geo-point-info"},rr={class:"geo-point-title"},ar={class:"geo-point-grid"},sr={key:1,class:"geo-point-hint"},lr={class:"geo-section-controls"},ir=["disabled"],cr={key:1},dr={class:"geo-pick-hint"},ur={key:2,class:"geo-coord"},mr={key:3,class:"geo-coord"},pr=["disabled"],vr={key:0,class:"geo-section-results"},fr={class:"geo-result-count"},gr={class:"geo-section-stats"},hr={class:"geo-status-bar"},yr={key:0},br={class:"geo-group-picker"},kr={class:"geo-group-body"},Er={class:"geo-group-options"},wr=["value"],Vr={DEFAULT_ICON:kt.DEFAULT_ICON,ACTIVE_ICON:kt.ACTIVE_ICON,NAME_CN:"三维地质模型",NAME_EN:"Geo3D Viewer",ORDER:1,PLATFORM:["pc","screen"]},Nr={bgColor:"#f0f2f5",radiusSize:4,isHideTitle:!1,titleColor:"#333",textColor:"#333",fontSize:{value:12,type:"number",label:"component.geo3d.fontSize",min:10,max:24},g3dFileUrl:{value:"",type:"string",label:"component.geo3d.g3dFileUrl"},geologyModelUrl:{value:"",type:"string",label:"component.geo3d.geologyModelUrl"},dtmModelUrl:{value:"",type:"string",label:"component.geo3d.dtmModelUrl"},uavModelUrl:{value:"",type:"string",label:"component.geo3d.uavModelUrl"},satelliteMapUrl:{value:"",type:"string",label:"component.geo3d.satelliteMapUrl"},mapCenterLon:{value:119.4,type:"number",label:"component.geo3d.mapCenterLon"},mapCenterLat:{value:45.37,type:"number",label:"component.geo3d.mapCenterLat"},mapZoom:{value:13,type:"number",label:"component.geo3d.mapZoom",min:1,max:18},radarFileUrl:{value:"",type:"string",label:"component.geo3d.radarFileUrl"},defaultRadarMode:{value:"rr",type:"select",label:"component.geo3d.defaultRadarMode",options:[{label:"位移",value:"rr"},{label:"速度",value:"av"},{label:"告警",value:"cf"}]},showFilterBar:{value:!0,type:"switch",label:"component.geo3d.showFilterBar"},linkChannel:{value:"geo3d",type:"select",label:"component.linkChannel",options:[{label:"geo3d",value:"geo3d"},{label:"custom",value:"custom"}]},customChannel:{value:"",type:"string",label:"component.customChannel",showWhen:{linkChannel:"custom"}}},_r=[{dataType:"radar",name:"监测点数据",object_id:"",fieldE:"e",fieldN:"n",fieldRL:"rl",fieldRR:"rr",fieldAV:"av",fieldCF:"cf"},{dataType:"device",name:"GNSS001",object_id:"",deviceType:"GNSS",e:0,n:0,rl:0,region:"",lineName:"",row1Label:"",row1FV:"",row1Unit:"",row2Label:"",row2FV:"",row2Unit:"",row3Label:"",row3FV:"",row3Unit:"",row4Label:"",row4FV:"",row4Unit:"",row5Label:"",row5FV:"",row5Unit:"",arrowXFV:"",arrowYFV:""}],Mr=["name","object_id","dataType","fieldE","fieldN","fieldRL","fieldRR","fieldAV","fieldCF","deviceType","e","n","rl","region","lineName","row1Label","row1FV","row1Unit","row2Label","row2FV","row2Unit","row3Label","row3FV","row3Unit","row4Label","row4FV","row4Unit","row5Label","row5FV","row5Unit","arrowXFV","arrowYFV"],Sr=["mosaic"],Cr={useAlias:!0,multiObject:!0,source:"mosaic"},xr={DEFAULT:Vr,OPTIONS:Nr,DATA:_r,PARAMS:Mr,SOURCE:Sr,COMMON:Cr},Br=e.defineComponent(Qe(Ke({},xr),{__name:"geo3dViewer",props:{conf:{type:Object,default:()=>({data:[]})},uid:{type:String,default:""},mode:{type:String,default:"edit"},theme:{type:String,default:"light"}},setup(l){const o=l;class t extends mn.BaseComponent{extractStyles(){return{bgColor:this.getOptionValue("bgColor","#f0f2f5"),radiusSize:this.getOptionValue("radiusSize",4),isHideTitle:this.getOptionValue("isHideTitle",!1),titleColor:this.getOptionValue("titleColor","#333"),fontSize:this.getOptionValue("fontSize",12),g3dFileUrl:this.getOptionValue("g3dFileUrl",""),geologyModelUrl:this.getOptionValue("geologyModelUrl",""),dtmModelUrl:this.getOptionValue("dtmModelUrl",""),uavModelUrl:this.getOptionValue("uavModelUrl",""),satelliteMapUrl:this.getOptionValue("satelliteMapUrl",""),mapCenterLon:this.getOptionValue("mapCenterLon",119.4),mapCenterLat:this.getOptionValue("mapCenterLat",45.37),mapZoom:this.getOptionValue("mapZoom",14),radarFileUrl:this.getOptionValue("radarFileUrl",""),defaultRadarMode:this.getOptionValue("defaultRadarMode","rr"),showFilterBar:this.getOptionValue("showFilterBar",!0),linkChannel:(()=>{const n=this.getOptionValue("linkChannel","geo3d"),i=this.getOptionValue("customChannel","");return n==="custom"&&i?i:n})()}}needsHistoryData(){return!0}parseRecordsToPoints(n,i){var Ee,te;const f=i||((te=(Ee=this.props.conf)==null?void 0:Ee.data)==null?void 0:te[0])||{},V=f.fieldE||"e",u=f.fieldN||"n",h=f.fieldRL||"rl",_=f.fieldRR||"rr",T=f.fieldAV||"av",Y=f.fieldCF||"cf",de=[];for(let z=0;z<n.length;z++){const j=n[z];if(!j)continue;const ne=Number(j[V]),ue=Number(j[u]),ze=Number(j[h]);!Number.isFinite(ne)||!Number.isFinite(ue)||!Number.isFinite(ze)||de.push({id:j.object_id||j.id||`pt_${z}`,e:ne,n:ue,rl:ze,rr:Number(j[_])||0,av:Number(j[T])||0,vd:Number(j.vd)||0,cf:Number(j[Y])||0})}return de}setHistoryData(n){var V;if(!n)return;const i=(V=this.props.conf)==null?void 0:V.data;if(!Array.isArray(i))return;const f=n.history;Array.isArray(f)&&i.forEach((u,h)=>{if(!u||y(u)!=="radar")return;const T=Array.isArray(f[h])?f[h]:[];if(T.length===0)return;const Y=this.parseRecordsToPoints(T,u);if(Y.length>0){const de=u.object_id||`__platform_radar_${h}__`;zt(Y,u.name||"平台数据",de)}})}onPreview(){var f;const n=(f=this.props.conf)==null?void 0:f.data;if(!Array.isArray(n))return;Rt();const i=new Set;n.forEach((V,u)=>{const h=y(V),_=this.resolveObjectId(V);if(h==="device"){it(V,_||V.name||`device_${u}`),_&&!i.has(_)&&(i.add(_),this.subscribeFv(_));return}!_||i.has(_)||(i.add(_),this.subscribeFv(_))}),console.log(`[geo3dViewer] onPreview: 已订阅 ${i.size} 个对象`)}setSocketData(n){var V,u;if(!n)return;const i=n.object_id||"";if(!i)return;const f=qe.get(i);if(f)if(f.type==="radar"){const h=n.data;if(!h)return;let _=[];if(Array.isArray(h)?_=h:typeof h=="object"&&(_=[h]),_.length===0)return;const T=(u=(V=this.props.conf)==null?void 0:V.data)==null?void 0:u[f.index],Y=this.parseRecordsToPoints(_,T);Y.length>0&&Tt(Y,i)}else f.type==="device"&&$t(i,n.data)}}const a=new t(o,"geo3dViewer");a.setupLifecycle();const s=a.getStyle(),d=o.conf,c=e.computed(()=>pn.generateTitleStyle(o.conf.options)),p={GNSS:"📍",DEEP:"⚓",RADAR:"📡",SURFACE:"📐",CRACK:"🧱",FIRE:"🔥",WATER:"💧",GROUND:"🌍",STRESS:"📊",VIB:"💥",SAT:"🛸"};function y(r){return(r==null?void 0:r.dataType)==="device"?"device":"radar"}function E(r){const n=[];for(let i=1;i<=5;i++){const f=r[`row${i}Label`]||"",V=r[`row${i}FV`]||"",u=r[`row${i}Unit`]||"";f&&n.push({label:f,fv:V,unit:u})}return n}function C(r){if(r==null)return"--";const n=Number(r);return!isNaN(n)&&typeof r!="boolean"?n.toFixed(2):String(r)}function g(r,n){return r===0&&n===0?null:Math.round(Math.atan2(n,r)*180/Math.PI*10)/10}const b=e.ref(""),N=e.ref(""),w=e.ref([]),x=e.ref(1),G=e.ref(we.dayjs().subtract(1,"day").format("YYYY-MM-DD HH:mm:ss")),I=e.ref(we.dayjs().format("YYYY-MM-DD HH:mm:ss")),U=[{days:1,label:"一天内"},{days:7,label:"一周内"},{days:30,label:"一个月内"}],X=e.computed(()=>{var i;const r=(i=o.conf)==null?void 0:i.data;if(!Array.isArray(r))return[];const n=new Set;return r.forEach(f=>{f.dataType==="device"&&f.region&&n.add(f.region)}),Array.from(n)}),me=e.computed(()=>{var i;const r=(i=o.conf)==null?void 0:i.data;if(!Array.isArray(r))return[];const n=new Set;return r.forEach(f=>{f.dataType==="device"&&f.lineName&&n.add(f.lineName)}),Array.from(n)}),pe=e.computed(()=>{var n;const r=(n=o.conf)==null?void 0:n.data;return Array.isArray(r)?r.filter(i=>i.dataType==="device"&&i.name).map(i=>i.name):[]});function ve(r){x.value=r,I.value=we.dayjs().format("YYYY-MM-DD HH:mm:ss"),G.value=we.dayjs().subtract(r,"day").format("YYYY-MM-DD HH:mm:ss"),H()}function oe(){x.value=0,H()}function H(){a.publish({type:"filter",region:b.value||null,line:N.value||null,points:w.value.length>0?w.value:null,timeRange:{start:G.value,end:I.value},days:x.value})}const fe=e.ref(),m=e.ref(null),S=e.ref(!1),v=e.ref(""),D=e.ref(!1),F=e.ref(""),B=e.ref("就绪"),P=e.ref(null),Z=e.ref(0),Ve=e.ref(0),ce=e.ref();let A=null,re=[];const ge=new Map;function Ne(){A||!ce.value||(A=xe.L.map(ce.value,{zoomControl:!0,attributionControl:!1,maxZoom:17}),A.setView([s.value.mapCenterLat||45.37,s.value.mapCenterLon||119.4],s.value.mapZoom||14),xe.L.tileLayer("https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",{maxZoom:19}).addTo(A),setTimeout(()=>{A==null||A.invalidateSize(),Le()},200))}function Me(r,n,i,f){const u=.003352810681182319,h=2*u-u*u,_=(1-Math.sqrt(1-h))/(1+Math.sqrt(1-h)),T=1,Y=r-5e5,te=n/T/(6378137*(1-h/4-3*h*h/64-5*h*h*h/256)),z=te+(3*_/2-27*_*_*_/32)*Math.sin(2*te)+(21*_*_/16-55*_*_*_*_/32)*Math.sin(4*te)+151*_*_*_/96*Math.sin(6*te),j=h/(1-h),ne=j*Math.cos(z)*Math.cos(z),ue=Math.tan(z)*Math.tan(z),ze=6378137/Math.sqrt(1-h*Math.sin(z)*Math.sin(z)),tn=6378137*(1-h)/Math.pow(1-h*Math.sin(z)*Math.sin(z),1.5),$=Y/(ze*T),nn=z-ze*Math.tan(z)/tn*($*$/2-(5+3*ue+10*ne-4*ne*ne-9*j)*$*$*$*$/24+(61+90*ue+298*ne+45*ue*ue-252*j-3*ne*ne)*$*$*$*$*$*$/720),on=120*Math.PI/180,rn=($-(1+2*ue+ne)*$*$*$/6+(5-2*ne+28*ue-3*ne*ne+8*j+24*ue*ue)*$*$*$*$*$/120)/Math.cos(z);return{lat:nn*180/Math.PI,lon:(rn+on)*180/Math.PI}}function Le(){var i;if(!A)return;re.forEach(f=>A.removeLayer(f)),re=[],ge.clear();const r=(i=o.conf)==null?void 0:i.data;if(!Array.isArray(r))return;const n=[];r.forEach(f=>{if(y(f)!=="device")return;const V=Number(f.e),u=Number(f.n);if(!Number.isFinite(V)||!Number.isFinite(u))return;let h,_;if(V>180||u>90){const te=Me(V,u);h=te.lat,_=te.lon}else h=u,_=V;const T=xe.L.divIcon({className:"geo-leaflet-marker",html:`<div class="geo-lm-pin">${p[f.deviceType]||"📍"}</div><div class="geo-lm-name">${f.name||""}</div>`,iconSize:[60,40],iconAnchor:[30,40]}),Y=f.object_id||f.name||"",de=Ae.get(Y)!==!1,Ee=xe.L.marker([h,_],{icon:T});de&&Ee.addTo(A),re.push(Ee),Y&&ge.set(Y,Ee),de&&n.push(xe.L.latLng(h,_))}),n.length>0&&A.fitBounds(xe.L.latLngBounds(n).pad(.2))}function Te(r,n){const i=ge.get(r);!i||!A||(n?i.addTo(A):A.removeLayer(i))}const ae=e.ref(!1),se=e.ref("geology"),he=e.ref(!1);let ye=null;const Se=[{value:"geology",label:"地质模型"},{value:"dtm",label:"DTM面"}],Be=e.computed(()=>{var r;return se.value==="map2d"?he.value?"卫星+无人机":"卫星地图":((r=Se.find(n=>n.value===se.value))==null?void 0:r.label)||"请选择模型"});function $e(r){se.value=r,ae.value=!1;const n=r==="map2d";m.value&&(m.value.renderer.domElement.style.display=n?"none":"",m.value.labelRenderer.domElement.style.display=n?"none":""),n&&!A&&e.nextTick(()=>Ne()),n&&A&&setTimeout(()=>{A==null||A.invalidateSize(),Le()},100),a.publish({type:"modelChange",model:r})}function He(){if(A)if(he.value){const r=s.value.uavModelUrl;r&&(ye=xe.L.tileLayer(r,{maxZoom:19,opacity:.7}).addTo(A))}else ye&&(A.removeLayer(ye),ye=null)}const J=e.ref(!1),q=e.ref(!1),W=e.reactive({x:0,y:0,z:0}),le=e.reactive({x:0,y:0,z:0}),K=e.ref([]),M=e.ref(!1),R=e.ref("none"),Q=e.ref(null),ie=e.ref(null),be=e.computed(()=>R.value==="start"?"点击选取起点":R.value==="end"?"点击选取终点":""),Ce=e.computed(()=>K.value.reduce((r,n)=>r+n.segments.length,0)),L=e.ref([]),O=e.ref("rr"),ee=e.ref(null),St=e.ref("");let Ct=0;const ot=[{id:"east",name:"东帮"},{id:"south",name:"南帮"},{id:"west",name:"西帮"},{id:"north",name:"北帮"}],De=e.ref(!1),Fe=e.ref([]),ke=e.ref(""),rt=e.ref("");let xt=0;const at=e.ref([]),Bt=e.computed(()=>[...ot,...at.value].map(n=>({id:n.id,name:n.name,layers:L.value.filter(i=>i.groupId===n.id)})).filter(n=>n.layers.length>0)),st=[{value:"rr",label:"位移"},{value:"av",label:"速度"},{value:"cf",label:"告警"}];e.computed(()=>L.value.reduce((r,n)=>r+n.points.length,0));const At=e.computed(()=>L.value.filter(r=>r.visible).reduce((r,n)=>r+n.points.length,0)),Lt=e.computed(()=>L.value.filter(r=>r.visible).reduce((r,n)=>r+n.points.filter(i=>i.cf>=300||Math.abs(i.rr)>=50||Math.abs(i.av)>=.5).length,0)),Dt=e.computed(()=>O.value==="rr"?"linear-gradient(90deg,rgb(20,35,150),rgb(0,180,255),rgb(255,230,0),rgb(180,0,0))":O.value==="av"?"linear-gradient(90deg,rgb(0,80,220),rgb(0,220,120),rgb(220,30,30))":"linear-gradient(90deg,rgb(0,170,255),rgb(255,145,0),rgb(180,0,0))"),Ue=e.reactive(new Map),Re=new Map,qe=new Map,Ae=e.reactive(new Map),Pe=e.ref(!0),We=e.computed(()=>{const r=[];return Ue.forEach((n,i)=>{r.push({id:i,name:n.name||i,deviceType:n.deviceType||"未知",icon:n.icon||"📍",visible:Ae.get(i)!==!1})}),r}),Oe=e.computed(()=>We.value.length);function lt(r,n){var i;Ae.set(r,n),(i=m.value)==null||i.setDeviceMarkerVisible(r,n),Te(r,n)}function Ft(r,n){We.value.filter(i=>i.deviceType===r).forEach(i=>lt(i.id,n))}function Rt(){var n;qe.clear();const r=(n=o.conf)==null?void 0:n.data;Array.isArray(r)&&r.forEach((i,f)=>{const V=i==null?void 0:i.object_id;V&&qe.set(V,{type:y(i),index:f})})}const Ge="__platform_radar__";function zt(r,n,i){if(!m.value||r.length===0)return;const f=i||Ge;m.value.removeRadarLayer(f),L.value=L.value.filter(V=>V.id!==f),L.value.push({id:f,name:n,points:r,visible:!0,groupId:void 0}),m.value.addRadarLayer(f,r,O.value),B.value=`平台数据: ${r.length.toLocaleString()} 个监测点已加载`}function Tt(r,n){const i=n||Ge,f=L.value.find(h=>h.id===i)||L.value.find(h=>h.id===Ge);if(!f||!m.value)return;const V=new Map;f.points.forEach((h,_)=>V.set(h.id,_));let u=0;for(const h of r){const _=V.get(h.id);_!==void 0&&(f.points[_].rr=h.rr,f.points[_].av=h.av,f.points[_].cf=h.cf,f.points[_].e=h.e,f.points[_].n=h.n,f.points[_].rl=h.rl,u++)}u>0&&(m.value.updateRadarLayerColors(Ge,f.points,O.value),B.value=`实时更新: ${u} 个点`)}function it(r,n){var te;if(!m.value)return;const i=Number(r.e),f=Number(r.n),V=Number(r.rl);if(!Number.isFinite(i)||!Number.isFinite(f)||!Number.isFinite(V)){console.warn(`[geo3dViewer] 设备 ${r.name} 坐标无效,跳过标注创建`);return}const u=E(r),h=r.deviceType||"",_=p[h]||p[(te=h.toUpperCase)==null?void 0:te.call(h)]||"📍",T={id:n,name:r.name||"",deviceType:h,icon:_,position:{e:i,n:f,rl:V},rows:u.map(z=>Qe(Ke({},z),{value:"--"})),arrowXFV:r.arrowXFV||"",arrowYFV:r.arrowYFV||"",arrowAngle:null,css2dObject:null};Ue.set(n,T);const Y=document.createElement("div"),de=e.createApp(_t,{deviceType:T.deviceType,name:T.name,icon:T.icon,rows:T.rows.map(z=>({label:z.label,value:z.value,unit:z.unit})),arrowAngle:T.arrowAngle});de.mount(Y),Re.set(n,de);const Ee=m.value.addDeviceMarker(n,{e:i,n:f,rl:V},Y);T.css2dObject=Ee,Ae.has(n)||Ae.set(n,!0)}function $t(r,n){var V;const i=Ue.get(r);if(!i||!n)return;if(i.rows.forEach(u=>{u.fv&&(u.value=C(n[u.fv]))}),i.arrowXFV||i.arrowYFV){const u=i.arrowXFV?n[i.arrowXFV]:0,h=i.arrowYFV?n[i.arrowYFV]:0,_=parseFloat(u)||0,T=parseFloat(h)||0;i.arrowAngle=g(_,T)}const f=Re.get(r);if(f&&i.css2dObject){const u=i.css2dObject.element;f.unmount();const h=e.createApp(_t,{deviceType:i.deviceType,name:i.name,icon:i.icon,rows:i.rows.map(_=>({label:_.label,value:_.value,unit:_.unit})),arrowAngle:i.arrowAngle});h.mount(u),Re.set(r,h)}(V=m.value)==null||V.requestUpdate()}function Ut(){var r;for(const[,n]of Re)n.unmount();Re.clear(),Ue.clear(),Ae.clear(),ge.clear(),(r=m.value)==null||r.removeAllDeviceMarkers()}e.onMounted(()=>{var n;if(fe.value){m.value=new Vn(fe.value);const i=m.value.renderer.domElement;i.addEventListener("mousedown",ft),i.addEventListener("mouseup",gt)}O.value=s.value.defaultRadarMode||"rr";const r=s.value.g3dFileUrl;if(r&&typeof r=="string"&&r.trim()&&ct(r.trim()),o.mode==="edit"){const i=(n=o.conf)==null?void 0:n.data;Array.isArray(i)&&i.forEach((f,V)=>{y(f)==="device"&&it(f,f.object_id||f.name||`device_${V}`)})}}),e.onBeforeUnmount(()=>{var r;if(m.value){const n=m.value.renderer.domElement;n.removeEventListener("mousedown",ft),n.removeEventListener("mouseup",gt)}Ut(),re.forEach(n=>A==null?void 0:A.removeLayer(n)),re=[],A==null||A.remove(),A=null,(r=m.value)==null||r.dispose()}),e.watch(()=>s.value.g3dFileUrl,r=>{r&&!S.value&&ct(String(r).trim())});function Pt(){const r=document.createElement("input");r.type="file",r.accept=".g3d",r.onchange=()=>{var n;(n=r.files)!=null&&n[0]&&dt(r.files[0])},r.click()}function Ot(r){var i;const n=(i=r.dataTransfer)==null?void 0:i.files[0];n!=null&&n.name.endsWith(".g3d")?dt(n):n!=null&&n.name.endsWith(".json")&&S.value&&(Fe.value=[n],ke.value="",De.value=!0)}function ct(r){return _e(this,null,function*(){if(m.value){D.value=!0,F.value="从URL加载...";try{const i=yield(yield fetch(r)).text();yield ut(Et(i))}catch(n){B.value=`加载失败: ${n.message}`}finally{D.value=!1}}})}function dt(r){return _e(this,null,function*(){if(m.value){D.value=!0,F.value=`读取 ${r.name}...`;try{const n=yield r.text();yield ut(Et(n))}catch(n){B.value=`加载失败: ${n.message}`}finally{D.value=!1}}})}function ut(r){return _e(this,null,function*(){yield m.value.loadDocument(r,V=>{F.value=V}),P.value=r.rootNode,v.value=r.name,S.value=!0;let n=0,i=0;const f=V=>{n++,V.mesh&&V.mesh.positions.length>0&&i++,V.children.forEach(f)};f(r.rootNode),Z.value=n,Ve.value=i,B.value=`已加载: ${r.name} (${i}个网格)`,a.publish({type:"modelLoaded",modelName:r.name,nodeCount:n,meshNodeCount:i})})}function Gt(r,n){var i;(i=m.value)==null||i.setNodeVisible(r,n)}function It(){J.value=!J.value}let je={x:0,y:0};function Yt(){if(!m.value)return;vt(),R.value="start",B.value="点击模型选取起点";const r=m.value.renderer.domElement;r.addEventListener("mousedown",mt),r.addEventListener("mouseup",pt)}function Ht(){var r;R.value="none",Q.value=null,ie.value=null,(r=m.value)==null||r.clearPickMarkers(),Xe(),B.value="已取消"}function Xe(){var n;const r=(n=m.value)==null?void 0:n.renderer.domElement;r&&(r.removeEventListener("mousedown",mt),r.removeEventListener("mouseup",pt))}function mt(r){je={x:r.clientX,y:r.clientY}}function pt(r){if(!m.value||R.value==="none"||Math.hypot(r.clientX-je.x,r.clientY-je.y)>5)return;const n=m.value.pickPoint(r);if(!n){B.value="未选中模型,请重试";return}R.value==="start"?(Q.value={x:n.x,y:n.y,z:n.z},Object.assign(W,{x:n.x,y:n.y,z:n.z}),m.value.addPickMarker(n,65280),R.value="end",B.value="请选取终点"):(ie.value={x:n.x,y:n.y,z:n.z},Object.assign(le,{x:n.x,y:n.y,z:n.z}),m.value.addPickMarker(n,16729156),m.value.addPickLine(new k.Vector3(W.x,W.y,W.z),n),R.value="none",Xe(),B.value="两点已选,点击计算剖面")}function qt(){return _e(this,null,function*(){if(!(!m.value||q.value||!Q.value||!ie.value)){q.value=!0,B.value="计算剖面...",yield e.nextTick();try{const r=m.value.getVisibleMeshEntries(),n=[new k.Vector3(W.x,W.y,W.z),new k.Vector3(le.x,le.y,le.z)],{results:i,allPositions:f}=yield new Promise(V=>setTimeout(()=>V(xn(r,n)),50));if(K.value=i,m.value.clearSectionResults(),m.value.setTransparency(!0),f.length>0){for(const V of i){const u=[];for(const h of V.segments)u.push(h.start.x,h.start.y,h.start.z,h.end.x,h.end.y,h.end.z);m.value.addSectionLines(new Float32Array(u),V.nodeColor)}m.value.addSectionPath(n)}B.value=`剖面完成: ${Ce.value}条线段`,M.value=!0,a.publish({type:"sectionComputed",count:Ce.value})}catch(r){B.value=`失败: ${r.message}`}finally{q.value=!1}}})}function vt(){var r,n,i;K.value=[],Q.value=null,ie.value=null,R.value="none",M.value=!1,(r=m.value)==null||r.clearSectionResults(),(n=m.value)==null||n.clearPickMarkers(),(i=m.value)==null||i.setTransparency(!1),Xe(),B.value="剖面已清除"}function Wt(){const r=document.createElement("input");r.type="file",r.accept=".json",r.multiple=!0,r.onchange=()=>{var n;(n=r.files)!=null&&n.length&&(Fe.value=Array.from(r.files),ke.value="",De.value=!0)},r.click()}function jt(){let r=ke.value;if(r==="__custom__"){const n=rt.value.trim();if(!n)return;const i=`c_${++xt}`;at.value.push({id:i,name:n}),r=i}De.value=!1,Xt(Fe.value,r),Fe.value=[],rt.value=""}function Ze(){De.value=!1,Fe.value=[]}function Xt(r,n){return _e(this,null,function*(){var i;for(const f of r)try{const V=wn(JSON.parse(yield f.text()));if(!V.points.length){B.value=`${f.name}: 空数据`;continue}const u=`r_${++Ct}`,h=f.name.replace(/\.json$/i,"");L.value.push({id:u,name:h,points:V.points,visible:!0,groupId:n||void 0}),(i=m.value)==null||i.addRadarLayer(u,V.points,O.value),B.value=`已加载「${h}」(${V.points.length.toLocaleString()}点)`}catch(V){B.value=`${f.name}失败: ${V.message}`}})}function Zt(r,n){var f;const i=L.value.find(V=>V.id===r);i&&(i.visible=n,(f=m.value)==null||f.setRadarLayerVisible(r,n))}function Jt(r,n){L.value.filter(i=>i.groupId===r).forEach(i=>{var f;i.visible=n,(f=m.value)==null||f.setRadarLayerVisible(i.id,n)})}function Kt(r){var n;(n=m.value)==null||n.removeRadarLayer(r),L.value=L.value.filter(i=>i.id!==r),L.value.length||(ee.value=null)}function Qt(r){O.value=r,L.value.forEach(n=>{var i;return(i=m.value)==null?void 0:i.updateRadarLayerColors(n.id,n.points,r)})}function en(){var r;(r=m.value)==null||r.clearAllRadarLayers(),L.value=[],ee.value=null,B.value="雷达已清除"}let Je={x:0,y:0};function ft(r){Je={x:r.clientX,y:r.clientY}}function gt(r){var i;if(!m.value||!L.value.length||R.value!=="none"||Math.hypot(r.clientX-Je.x,r.clientY-Je.y)>5)return;const n=m.value.pickRadarPoint(r);n&&(ee.value=n.point,St.value=((i=L.value.find(f=>f.id===n.layerId))==null?void 0:i.name)||"",B.value=`选中 ${n.point.id} 位移:${n.point.rr.toFixed(2)}mm`,a.publish({type:"radarPointSelected",point:n.point}))}return e.computed(()=>{var r;return((r=st.find(n=>n.value===O.value))==null?void 0:r.label)||""}),e.computed(()=>O.value==="cf"?"0":O.value==="av"?"-2.0":"-200"),e.computed(()=>O.value==="cf"?"737":O.value==="av"?"2.0":"200"),(r,n)=>{const i=et.ElOption,f=et.ElSelect,V=et.ElDatePicker;return e.openBlock(),e.createElementBlock("div",{class:"mix-component geo3d-viewer",style:e.normalizeStyle({background:e.unref(s).bgColor,borderRadius:e.unref(s).radiusSize+"px",fontSize:e.unref(s).fontSize+"px"})},[e.unref(s).isHideTitle?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:"mix-title",style:e.normalizeStyle(c.value)},e.toDisplayString(e.unref(d).caption||e.unref(d).name||"三维地质模型"),5)),e.createElementVNode("div",_o,[e.unref(s).showFilterBar?(e.openBlock(),e.createElementBlock("div",Mo,[e.createVNode(f,{modelValue:b.value,"onUpdate:modelValue":n[0]||(n[0]=u=>b.value=u),class:"geo-filter-select",size:"small",placeholder:"全部区域",onChange:H},{default:e.withCtx(()=>[e.createVNode(i,{label:"全部区域",value:""}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,u=>(e.openBlock(),e.createBlock(i,{key:u,label:u,value:u},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e.createVNode(f,{modelValue:N.value,"onUpdate:modelValue":n[1]||(n[1]=u=>N.value=u),class:"geo-filter-select",size:"small",placeholder:"全部监测线",onChange:H},{default:e.withCtx(()=>[e.createVNode(i,{label:"全部监测线",value:""}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(me.value,u=>(e.openBlock(),e.createBlock(i,{key:u,label:u,value:u},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e.createVNode(f,{modelValue:w.value,"onUpdate:modelValue":n[2]||(n[2]=u=>w.value=u),class:"geo-filter-select geo-filter-wide",size:"small",multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"全部监测点",onChange:H},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(pe.value,u=>(e.openBlock(),e.createBlock(i,{key:u,label:u,value:u},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e.createElementVNode("div",So,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(U,u=>e.createElementVNode("button",{key:u.days,class:e.normalizeClass(["geo-time-btn",{active:x.value===u.days}]),onClick:h=>ve(u.days)},e.toDisplayString(u.label),11,Co)),64))]),e.createVNode(V,{modelValue:G.value,"onUpdate:modelValue":n[3]||(n[3]=u=>G.value=u),type:"datetime",size:"small",placeholder:"开始时间",format:"YYYY/MM/DD HH:mm","value-format":"YYYY-MM-DD HH:mm:ss",class:"geo-date-picker",onChange:oe},null,8,["modelValue"]),n[13]||(n[13]=e.createElementVNode("span",{class:"geo-date-sep"},"至",-1)),e.createVNode(V,{modelValue:I.value,"onUpdate:modelValue":n[4]||(n[4]=u=>I.value=u),type:"datetime",size:"small",placeholder:"结束时间",format:"YYYY/MM/DD HH:mm","value-format":"YYYY-MM-DD HH:mm:ss",class:"geo-date-picker",onChange:oe},null,8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",xo,[e.createElementVNode("button",{class:"geo-btn",onClick:Pt},"📂 打开"),e.createElementVNode("button",{class:"geo-btn",onClick:Wt,disabled:!S.value},"📡 雷达",8,Bo),e.createElementVNode("button",{class:"geo-btn",onClick:It,disabled:!S.value},"✂️ 剖面",8,Ao),L.value.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Lo,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(st,u=>e.createElementVNode("button",{key:u.value,class:e.normalizeClass(["geo-btn geo-btn-sm",{"geo-btn-primary":O.value===u.value}]),onClick:h=>Qt(u.value)},e.toDisplayString(u.label),11,Do)),64))]),e.createElementVNode("button",{class:"geo-btn geo-btn-sm geo-btn-danger",onClick:en},"清除雷达")],64)):e.createCommentVNode("",!0),n[14]||(n[14]=e.createElementVNode("span",{style:{flex:"1"}},null,-1)),R.value!=="none"?(e.openBlock(),e.createElementBlock("span",Fo,e.toDisplayString(be.value),1)):e.createCommentVNode("",!0),e.createElementVNode("span",Ro,e.toDisplayString(v.value),1)]),e.createElementVNode("div",zo,[S.value?(e.openBlock(),e.createElementBlock("div",To,[n[16]||(n[16]=e.createElementVNode("div",{class:"geo-panel-header"},"模型节点树",-1)),e.createElementVNode("div",{class:"geo-tree-scroll",style:e.normalizeStyle({maxHeight:Oe.value>0||L.value.length>0?Oe.value>0&&L.value.length>0?"34%":"50%":"100%"})},[e.createVNode(Fn,{node:P.value,scene:m.value,onToggleVisible:Gt},null,8,["node","scene"])],4),Oe.value>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"geo-panel-header geo-device-header",onClick:n[5]||(n[5]=u=>Pe.value=!Pe.value),style:{cursor:"pointer"}},[e.createElementVNode("span",null,e.toDisplayString(Pe.value?"▼":"▶")+" 📍 监测设备",1),e.createElementVNode("span",$o,e.toDisplayString(Oe.value)+"台",1)]),Pe.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"geo-tree-scroll",style:e.normalizeStyle({maxHeight:L.value.length>0?"33%":"50%"})},[e.createVNode(No,{devices:We.value,onToggleDevice:lt,onToggleGroup:Ft},null,8,["devices"])],4)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),L.value.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Uo,[n[15]||(n[15]=e.createTextVNode("📡 雷达 ",-1)),e.createElementVNode("span",Po,e.toDisplayString(L.value.length)+"层",1)]),e.createElementVNode("div",Oo,[e.createVNode(Jn,{layers:L.value,groups:Bt.value,onToggleLayer:Zt,onToggleGroup:Jt,onRemoveLayer:Kt},null,8,["layers","groups"])])],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"geo-viewport",ref_key:"viewportRef",ref:fe,onDragover:n[9]||(n[9]=e.withModifiers(()=>{},["prevent"])),onDrop:e.withModifiers(Ot,["prevent"])},[D.value?(e.openBlock(),e.createElementBlock("div",Go,[n[17]||(n[17]=e.createElementVNode("div",{class:"geo-spinner"},null,-1)),e.createElementVNode("p",null,e.toDisplayString(F.value),1)])):e.createCommentVNode("",!0),!S.value&&!D.value?(e.openBlock(),e.createElementBlock("div",Io,[...n[18]||(n[18]=[e.createElementVNode("div",{style:{"font-size":"36px",opacity:"0.3"}},"📦",-1),e.createElementVNode("p",null,"拖拽 .g3d 到此处或点击打开",-1)])])):e.createCommentVNode("",!0),S.value?(e.openBlock(),e.createElementBlock("div",Yo,[e.createElementVNode("button",{class:"geo-model-btn",onClick:n[6]||(n[6]=u=>ae.value=!ae.value)},e.toDisplayString(Be.value)+" ▼",1),ae.value?(e.openBlock(),e.createElementBlock("div",Ho,[n[21]||(n[21]=e.createElementVNode("div",{class:"geo-model-group-title"},"三维模型",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(Se,u=>e.createElementVNode("label",{key:u.value,class:e.normalizeClass(["geo-model-option",{active:se.value===u.value}]),onClick:h=>$e(u.value)},[e.createElementVNode("span",Wo,e.toDisplayString(se.value===u.value?"●":"○"),1),e.createElementVNode("span",null,e.toDisplayString(u.label),1)],10,qo)),64)),n[22]||(n[22]=e.createElementVNode("div",{class:"geo-model-divider"},null,-1)),n[23]||(n[23]=e.createElementVNode("div",{class:"geo-model-group-title"},"二维地图",-1)),e.createElementVNode("label",{class:e.normalizeClass(["geo-model-option",{active:se.value==="map2d"}]),onClick:n[7]||(n[7]=u=>$e("map2d"))},[e.createElementVNode("span",jo,e.toDisplayString(se.value==="map2d"?"●":"○"),1),n[19]||(n[19]=e.createElementVNode("span",null,"卫星地图",-1))],2),se.value==="map2d"?(e.openBlock(),e.createElementBlock("label",Xo,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":n[8]||(n[8]=u=>he.value=u),onChange:He},null,544),[[e.vModelCheckbox,he.value]]),n[20]||(n[20]=e.createElementVNode("span",null,"叠加无人机地图",-1))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",{class:"geo-leaflet-map",ref_key:"leafletRef",ref:ce},null,512),[[e.vShow,se.value==="map2d"]])],544),L.value.length>0||J.value?(e.openBlock(),e.createElementBlock("div",Zo,[L.value.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[n[26]||(n[26]=e.createElementVNode("div",{class:"geo-panel-header"},"📡 雷达统计",-1)),e.createElementVNode("div",Jo,[e.createElementVNode("div",Ko,[n[24]||(n[24]=e.createElementVNode("span",null,"可见点",-1)),e.createElementVNode("span",Qo,e.toDisplayString(At.value.toLocaleString()),1)]),e.createElementVNode("div",er,[n[25]||(n[25]=e.createElementVNode("span",null,"高风险",-1)),e.createElementVNode("span",tr,e.toDisplayString(Lt.value.toLocaleString()),1)]),e.createElementVNode("div",nr,[e.createElementVNode("div",{class:"geo-legend-bar",style:e.normalizeStyle({background:Dt.value})},null,4)]),ee.value?(e.openBlock(),e.createElementBlock("div",or,[e.createElementVNode("div",rr,e.toDisplayString(ee.value.id),1),e.createElementVNode("div",ar,[e.createElementVNode("span",null,"位移:"+e.toDisplayString(ee.value.rr.toFixed(2))+"mm",1),e.createElementVNode("span",null,"速度:"+e.toDisplayString(ee.value.av.toFixed(3))+"mm/h",1),e.createElementVNode("span",null,"高程:"+e.toDisplayString(ee.value.rl.toFixed(2))+"m",1),e.createElementVNode("span",null,"告警:"+e.toDisplayString(ee.value.cf),1)])])):(e.openBlock(),e.createElementBlock("div",sr,"点击雷达点查看详情"))])],64)):e.createCommentVNode("",!0),J.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[n[27]||(n[27]=e.createElementVNode("div",{class:"geo-panel-header"},"✂️ 剖面工具",-1)),e.createElementVNode("div",lr,[R.value==="none"?(e.openBlock(),e.createElementBlock("button",{key:0,class:"geo-btn geo-btn-primary",style:{width:"100%"},onClick:Yt,disabled:q.value},"选取两点",8,ir)):e.createCommentVNode("",!0),R.value!=="none"?(e.openBlock(),e.createElementBlock("div",cr,[e.createElementVNode("div",dr,e.toDisplayString(be.value),1),e.createElementVNode("button",{class:"geo-btn geo-btn-danger geo-btn-sm",onClick:Ht},"取消")])):e.createCommentVNode("",!0),Q.value?(e.openBlock(),e.createElementBlock("div",ur,"起:("+e.toDisplayString(Q.value.x.toFixed(1))+","+e.toDisplayString(Q.value.y.toFixed(1))+","+e.toDisplayString(Q.value.z.toFixed(1))+")",1)):e.createCommentVNode("",!0),ie.value?(e.openBlock(),e.createElementBlock("div",mr,"终:("+e.toDisplayString(ie.value.x.toFixed(1))+","+e.toDisplayString(ie.value.y.toFixed(1))+","+e.toDisplayString(ie.value.z.toFixed(1))+")",1)):e.createCommentVNode("",!0),Q.value&&ie.value&&R.value==="none"?(e.openBlock(),e.createElementBlock("button",{key:4,class:"geo-btn geo-btn-primary",style:{width:"100%"},onClick:qt,disabled:q.value||!Q.value||!ie.value},e.toDisplayString(q.value?"计算中...":"计算剖面"),9,pr)):e.createCommentVNode("",!0),Q.value||K.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:5,class:"geo-btn geo-btn-danger geo-btn-sm",onClick:vt},"清除")):e.createCommentVNode("",!0)]),K.value.length>0?(e.openBlock(),e.createElementBlock("div",vr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(K.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.nodeName,class:"geo-result-item"},[e.createElementVNode("div",{class:"geo-color-dot",style:e.normalizeStyle({background:"#"+u.nodeColor.toString(16).padStart(6,"0")})},null,4),e.createElementVNode("span",null,e.toDisplayString(u.nodeName),1),e.createElementVNode("span",fr,e.toDisplayString(u.segments.length)+"段",1)]))),128)),e.createElementVNode("div",gr,"共"+e.toDisplayString(Ce.value)+"条线段",1)])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",hr,[e.createElementVNode("span",null,e.toDisplayString(B.value),1),S.value?(e.openBlock(),e.createElementBlock("span",yr,"节点:"+e.toDisplayString(Z.value)+" 网格:"+e.toDisplayString(Ve.value),1)):e.createCommentVNode("",!0)]),e.createVNode(ro,{visible:M.value,results:K.value,startPoint:W,endPoint:le,onClose:n[10]||(n[10]=u=>M.value=!1)},null,8,["visible","results","startPoint","endPoint"])]),De.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"geo-dialog-overlay",onClick:e.withModifiers(Ze,["self"])},[e.createElementVNode("div",br,[e.createElementVNode("div",{class:"geo-group-header"},[n[28]||(n[28]=e.createElementVNode("span",null,"选择分组",-1)),e.createElementVNode("button",{class:"geo-dialog-close",onClick:Ze},"×")]),e.createElementVNode("div",kr,[e.createElementVNode("div",Er,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(ot,u=>e.createElementVNode("label",{key:u.id,class:e.normalizeClass(["geo-group-option",{selected:ke.value===u.id}])},[e.withDirectives(e.createElementVNode("input",{type:"radio",value:u.id,"onUpdate:modelValue":n[11]||(n[11]=h=>ke.value=h)},null,8,wr),[[e.vModelRadio,ke.value]]),e.createElementVNode("span",null,"📡 "+e.toDisplayString(u.name),1)],2)),64)),e.createElementVNode("label",{class:e.normalizeClass(["geo-group-option",{selected:ke.value===""}])},[e.withDirectives(e.createElementVNode("input",{type:"radio",value:"","onUpdate:modelValue":n[12]||(n[12]=u=>ke.value=u)},null,512),[[e.vModelRadio,ke.value]]),n[29]||(n[29]=e.createElementVNode("span",null,"📄 不分组",-1))],2)])]),e.createElementVNode("div",{class:"geo-group-footer"},[e.createElementVNode("button",{class:"geo-btn",onClick:Ze},"取消"),e.createElementVNode("button",{class:"geo-btn geo-btn-primary",onClick:jt},"确定")])])])):e.createCommentVNode("",!0),e.renderSlot(r.$slots,"default",{},void 0,!0)],4)}}})),Ar=we._export_sfc(Br,[["__scopeId","data-v-c35e371c"]]);exports.default=Ar;
@@ -28,8 +28,8 @@ var de = (S, o, r) => new Promise((u, i) => {
28
28
  });
29
29
  import { defineComponent as Te, useCssVars as Pe, unref as Ee, ref as U, watch as F, onMounted as Ie, onBeforeUnmount as Oe, openBlock as G, createElementBlock as q, createElementVNode as O, createCommentVNode as Z, toDisplayString as ze, createBlock as Ue, Teleport as Fe, withModifiers as ue, renderSlot as Ne, nextTick as je } from "vue";
30
30
  import "html2canvas";
31
- import { B as Be } from "./BaseComponent-Dwhb9Mde.js";
32
- import { _ as Ge } from "./index-YNdVib_6.js";
31
+ import { B as Be } from "./BaseComponent-DhLWkd4H.js";
32
+ import { _ as Ge } from "./index-BSe6vVpg.js";
33
33
  import { U as He, X as me, Y as J, a6 as We, B as qe, a as fe, C as H, az as $e, S as Ve, l as Xe, W as Ye, A as pe, n as K, am as Ze, h as Je, V as Q, R as Ke, r as Qe } from "./three.module-DDLQaQWC.js";
34
34
  import { G as et } from "./GLTFLoader-nke8z0Ol.js";
35
35
  import { O as tt } from "./OrbitControls-BHOrUcwg.js";
@@ -1,4 +1,4 @@
1
- "use strict";var ye=Object.defineProperty,ve=Object.defineProperties;var ge=Object.getOwnPropertyDescriptors;var K=Object.getOwnPropertySymbols;var be=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var Q=(L,o,n)=>o in L?ye(L,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):L[o]=n,ee=(L,o)=>{for(var n in o||(o={}))be.call(o,n)&&Q(L,n,o[n]);if(K)for(var n of K(o))we.call(o,n)&&Q(L,n,o[n]);return L},te=(L,o)=>ve(L,ge(o));var oe=(L,o,n)=>new Promise((m,l)=>{var a=f=>{try{d(n.next(f))}catch(S){l(S)}},r=f=>{try{d(n.throw(f))}catch(S){l(S)}},d=f=>f.done?m(f.value):Promise.resolve(f.value).then(a,r);d((n=n.apply(L,o)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("vue");require("html2canvas");const Ce=require("./BaseComponent-bzb58Hhs.cjs"),ke=require("./index-6QhTSPkL.cjs"),g=require("./three.module-CjayKmiG.cjs"),_e=require("./GLTFLoader-DhebSl5W.cjs"),Se=require("./OrbitControls-uuLGjaqy.cjs"),re=require("./CSS2DRenderer-nQ2DN9Uc.cjs"),ne=require("./ele-glbModel-icon-ByACDCrv.cjs"),W=new WeakMap;class Ae extends g.Loader{constructor(o){super(o),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(o){return this.decoderPath=o,this}setDecoderConfig(o){return this.decoderConfig=o,this}setWorkerLimit(o){return this.workerLimit=o,this}load(o,n,m,l){const a=new g.FileLoader(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(o,r=>{this.parse(r,n,l)},m,l)}parse(o,n,m=()=>{}){this.decodeDracoFile(o,n,null,null,g.SRGBColorSpace,m).catch(m)}decodeDracoFile(o,n,m,l,a=g.LinearSRGBColorSpace,r=()=>{}){const d={attributeIDs:m||this.defaultAttributeIDs,attributeTypes:l||this.defaultAttributeTypes,useUniqueIDs:!!m,vertexColorSpace:a};return this.decodeGeometry(o,d).then(n).catch(r)}decodeGeometry(o,n){const m=JSON.stringify(n);if(W.has(o)){const f=W.get(o);if(f.key===m)return f.promise;if(o.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let l;const a=this.workerNextTaskID++,r=o.byteLength,d=this._getWorker(a,r).then(f=>(l=f,new Promise((S,A)=>{l._callbacks[a]={resolve:S,reject:A},l.postMessage({type:"decode",id:a,taskConfig:n,buffer:o},[o])}))).then(f=>this._createGeometry(f.geometry));return d.catch(()=>!0).then(()=>{l&&a&&this._releaseTask(l,a)}),W.set(o,{key:m,promise:d}),d}_createGeometry(o){const n=new g.BufferGeometry;o.index&&n.setIndex(new g.BufferAttribute(o.index.array,1));for(let m=0;m<o.attributes.length;m++){const l=o.attributes[m],a=l.name,r=l.array,d=l.itemSize,f=new g.BufferAttribute(r,d);a==="color"&&(this._assignVertexColorSpace(f,l.vertexColorSpace),f.normalized=!(r instanceof Float32Array)),n.setAttribute(a,f)}return n}_assignVertexColorSpace(o,n){if(n!==g.SRGBColorSpace)return;const m=new g.Color;for(let l=0,a=o.count;l<a;l++)m.fromBufferAttribute(o,l),g.ColorManagement.toWorkingColorSpace(m,g.SRGBColorSpace),o.setXYZ(l,m.r,m.g,m.b)}_loadLibrary(o,n){const m=new g.FileLoader(this.manager);return m.setPath(this.decoderPath),m.setResponseType(n),m.setWithCredentials(this.withCredentials),new Promise((l,a)=>{m.load(o,l,void 0,a)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const o=typeof WebAssembly!="object"||this.decoderConfig.type==="js",n=[];return o?n.push(this._loadLibrary("draco_decoder.js","text")):(n.push(this._loadLibrary("draco_wasm_wrapper.js","text")),n.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(n).then(m=>{const l=m[0];o||(this.decoderConfig.wasmBinary=m[1]);const a=Le.toString(),r=["/* draco decoder */",l,"","/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
1
+ "use strict";var ye=Object.defineProperty,ve=Object.defineProperties;var ge=Object.getOwnPropertyDescriptors;var K=Object.getOwnPropertySymbols;var be=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var Q=(L,o,n)=>o in L?ye(L,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):L[o]=n,ee=(L,o)=>{for(var n in o||(o={}))be.call(o,n)&&Q(L,n,o[n]);if(K)for(var n of K(o))we.call(o,n)&&Q(L,n,o[n]);return L},te=(L,o)=>ve(L,ge(o));var oe=(L,o,n)=>new Promise((m,l)=>{var a=f=>{try{d(n.next(f))}catch(S){l(S)}},r=f=>{try{d(n.throw(f))}catch(S){l(S)}},d=f=>f.done?m(f.value):Promise.resolve(f.value).then(a,r);d((n=n.apply(L,o)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("vue");require("html2canvas");const Ce=require("./BaseComponent-DErbJ2yr.cjs"),ke=require("./index-D_jfRmwX.cjs"),g=require("./three.module-CjayKmiG.cjs"),_e=require("./GLTFLoader-DhebSl5W.cjs"),Se=require("./OrbitControls-uuLGjaqy.cjs"),re=require("./CSS2DRenderer-nQ2DN9Uc.cjs"),ne=require("./ele-glbModel-icon-ByACDCrv.cjs"),W=new WeakMap;class Ae extends g.Loader{constructor(o){super(o),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(o){return this.decoderPath=o,this}setDecoderConfig(o){return this.decoderConfig=o,this}setWorkerLimit(o){return this.workerLimit=o,this}load(o,n,m,l){const a=new g.FileLoader(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(o,r=>{this.parse(r,n,l)},m,l)}parse(o,n,m=()=>{}){this.decodeDracoFile(o,n,null,null,g.SRGBColorSpace,m).catch(m)}decodeDracoFile(o,n,m,l,a=g.LinearSRGBColorSpace,r=()=>{}){const d={attributeIDs:m||this.defaultAttributeIDs,attributeTypes:l||this.defaultAttributeTypes,useUniqueIDs:!!m,vertexColorSpace:a};return this.decodeGeometry(o,d).then(n).catch(r)}decodeGeometry(o,n){const m=JSON.stringify(n);if(W.has(o)){const f=W.get(o);if(f.key===m)return f.promise;if(o.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let l;const a=this.workerNextTaskID++,r=o.byteLength,d=this._getWorker(a,r).then(f=>(l=f,new Promise((S,A)=>{l._callbacks[a]={resolve:S,reject:A},l.postMessage({type:"decode",id:a,taskConfig:n,buffer:o},[o])}))).then(f=>this._createGeometry(f.geometry));return d.catch(()=>!0).then(()=>{l&&a&&this._releaseTask(l,a)}),W.set(o,{key:m,promise:d}),d}_createGeometry(o){const n=new g.BufferGeometry;o.index&&n.setIndex(new g.BufferAttribute(o.index.array,1));for(let m=0;m<o.attributes.length;m++){const l=o.attributes[m],a=l.name,r=l.array,d=l.itemSize,f=new g.BufferAttribute(r,d);a==="color"&&(this._assignVertexColorSpace(f,l.vertexColorSpace),f.normalized=!(r instanceof Float32Array)),n.setAttribute(a,f)}return n}_assignVertexColorSpace(o,n){if(n!==g.SRGBColorSpace)return;const m=new g.Color;for(let l=0,a=o.count;l<a;l++)m.fromBufferAttribute(o,l),g.ColorManagement.toWorkingColorSpace(m,g.SRGBColorSpace),o.setXYZ(l,m.r,m.g,m.b)}_loadLibrary(o,n){const m=new g.FileLoader(this.manager);return m.setPath(this.decoderPath),m.setResponseType(n),m.setWithCredentials(this.withCredentials),new Promise((l,a)=>{m.load(o,l,void 0,a)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const o=typeof WebAssembly!="object"||this.decoderConfig.type==="js",n=[];return o?n.push(this._loadLibrary("draco_decoder.js","text")):(n.push(this._loadLibrary("draco_wasm_wrapper.js","text")),n.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(n).then(m=>{const l=m[0];o||(this.decoderConfig.wasmBinary=m[1]);const a=Le.toString(),r=["/* draco decoder */",l,"","/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
2
2
  `);this.workerSourceURL=URL.createObjectURL(new Blob([r]))}),this.decoderPending}_getWorker(o,n){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const l=new Worker(this.workerSourceURL);l._callbacks={},l._taskCosts={},l._taskLoad=0,l.postMessage({type:"init",decoderConfig:this.decoderConfig}),l.onmessage=function(a){const r=a.data;switch(r.type){case"decode":l._callbacks[r.id].resolve(r);break;case"error":l._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(l)}else this.workerPool.sort(function(l,a){return l._taskLoad>a._taskLoad?-1:1});const m=this.workerPool[this.workerPool.length-1];return m._taskCosts[o]=n,m._taskLoad+=n,m})}_releaseTask(o,n){o._taskLoad-=o._taskCosts[n],delete o._callbacks[n],delete o._taskCosts[n]}debug(){console.log("Task load: ",this.workerPool.map(o=>o._taskLoad))}dispose(){for(let o=0;o<this.workerPool.length;++o)this.workerPool[o].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Le(){let L,o;onmessage=function(r){const d=r.data;switch(d.type){case"init":L=d.decoderConfig,o=new Promise(function(A){L.onModuleLoaded=function(u){A({draco:u})},DracoDecoderModule(L)});break;case"decode":const f=d.buffer,S=d.taskConfig;o.then(A=>{const u=A.draco,h=new u.Decoder;try{const w=n(u,h,new Int8Array(f),S),k=w.attributes.map(y=>y.array.buffer);w.index&&k.push(w.index.array.buffer),self.postMessage({type:"decode",id:d.id,geometry:w},k)}catch(w){console.error(w),self.postMessage({type:"error",id:d.id,error:w.message})}finally{u.destroy(h)}});break}};function n(r,d,f,S){const A=S.attributeIDs,u=S.attributeTypes;let h,w;const k=d.GetEncodedGeometryType(f);if(k===r.TRIANGULAR_MESH)h=new r.Mesh,w=d.DecodeArrayToMesh(f,f.byteLength,h);else if(k===r.POINT_CLOUD)h=new r.PointCloud,w=d.DecodeArrayToPointCloud(f,f.byteLength,h);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!w.ok()||h.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+w.error_msg());const y={index:null,attributes:[]};for(const v in A){const D=self[u[v]];let O,I;if(S.useUniqueIDs)I=A[v],O=d.GetAttributeByUniqueId(h,I);else{if(I=d.GetAttributeId(h,r[A[v]]),I===-1)continue;O=d.GetAttribute(h,I)}const M=l(r,d,h,v,D,O);v==="color"&&(M.vertexColorSpace=S.vertexColorSpace),y.attributes.push(M)}return k===r.TRIANGULAR_MESH&&(y.index=m(r,d,h)),r.destroy(h),y}function m(r,d,f){const A=f.num_faces()*3,u=A*4,h=r._malloc(u);d.GetTrianglesUInt32Array(f,u,h);const w=new Uint32Array(r.HEAPF32.buffer,h,A).slice();return r._free(h),{array:w,itemSize:1}}function l(r,d,f,S,A,u){const h=u.num_components(),k=f.num_points()*h,y=k*A.BYTES_PER_ELEMENT,v=a(r,A),D=r._malloc(y);d.GetAttributeDataArrayForAllPoints(f,u,v,y,D);const O=new A(r.HEAPF32.buffer,D,k).slice();return r._free(D),{name:S,array:O,itemSize:h}}function a(r,d){switch(d){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32}}}const xe={key:0,class:"loading-overlay"},De={key:1,class:"error-overlay"},Re={class:"error-text"},Ee={class:"component-modal-wrapper"},Te={DEFAULT_ICON:ne.DEFAULT_ICON,ACTIVE_ICON:ne.ACTIVE_ICON,NAME_CN:"三维模型",NAME_EN:"3D Model",ORDER:6,PLATFORM:["pc","screen"]},Me={bgColor:{value:"#ffffff",type:"color",label:"setting.bgColor",hideAlpha:!0},modelUrl:{value:"",type:"string",label:"component.glbModel.modelUrl"},modelScale:{value:1,type:"number",label:"component.glbModel.modelScale",min:.1,max:10,step:.1},autoRotate:{value:!0,type:"checkbox",label:"component.glbModel.autoRotate"},rotateSpeed:{value:1,type:"number",label:"component.glbModel.rotateSpeed",min:.1,max:5,step:.1},lightIntensity:{value:1,type:"number",label:"component.glbModel.lightIntensity",min:0,max:5,step:.1},cameraDistance:{value:5,type:"number",label:"component.glbModel.cameraDistance",min:1,max:20,step:.5}},Ie=[],Pe=["name","fv","object_id","icon","chartType","targetComponentId","posX","posY","posZ"],Oe=["mosaic","statistics","calculate","statisticsRealtime","calculateRealtime"],Ne={useAlias:!1,multiObject:!1,source:"mosaic"},Ue={DEFAULT:Te,OPTIONS:Me,DATA:Ie,PARAMS:Pe,SOURCE:Oe,COMMON:Ne},ze=s.defineComponent(te(ee({},Ue),{__name:"glbModel",props:{conf:{type:Object,default:()=>({data:[]})},mode:{type:String,default:"edit"},uid:{type:String,default:""},theme:{type:String,default:"light"}},setup(L,{expose:o}){s.useCssVars(e=>({c296d046:s.unref(a).bgColor}));const n=L;class m extends Ce.BaseComponent{extractStyles(){var c,i,p,C,_,x,R,E,U,P,z,q;const{options:t}=this.props.conf;return{bgColor:((c=t==null?void 0:t.bgColor)==null?void 0:c.value)||"#ffffff",modelUrl:((i=t==null?void 0:t.modelUrl)==null?void 0:i.value)||"",modelScale:(C=(p=t==null?void 0:t.modelScale)==null?void 0:p.value)!=null?C:1,autoRotate:(x=(_=t==null?void 0:t.autoRotate)==null?void 0:_.value)!=null?x:!0,rotateSpeed:(E=(R=t==null?void 0:t.rotateSpeed)==null?void 0:R.value)!=null?E:1,lightIntensity:(P=(U=t==null?void 0:t.lightIntensity)==null?void 0:U.value)!=null?P:1,cameraDistance:(q=(z=t==null?void 0:t.cameraDistance)==null?void 0:z.value)!=null?q:5}}}const l=new m(n,"glbModel");l.setupLifecycle();const a=l.getStyle(),r=s.ref(),d=s.ref(),f=s.ref(!1),S=s.ref(""),A=s.ref(a.value.autoRotate);let u,h,w,k,y,v,D=0,O,I;const M=s.ref([]),N=new Map,V=s.ref(!1),B=s.ref();let b=null;const $=()=>{if(b){const e=b._originalParent;e&&(e.appendChild(b),delete b._originalParent),b.style.visibility="hidden",b.style.position="absolute",b.style.zIndex="-1",b=null}V.value=!1,B.value&&(B.value.innerHTML="")},ae=()=>{var C;if(!d.value||!r.value)return;D&&(cancelAnimationFrame(D),D=0);const e=r.value.clientWidth,t=r.value.clientHeight;u=new g.Scene,u.background=new g.Color(a.value.bgColor),h=new g.PerspectiveCamera(45,e/t,.1,1e3),h.position.set(0,0,a.value.cameraDistance),w=new g.WebGLRenderer({canvas:d.value,antialias:!0,alpha:!0,powerPreference:"high-performance"}),w.setSize(e,t),w.setPixelRatio(Math.min(window.devicePixelRatio,2)),w.shadowMap.enabled=!1;const c=new g.AmbientLight(16777215,a.value.lightIntensity*.5);u.add(c);const i=new g.DirectionalLight(16777215,a.value.lightIntensity);i.position.set(5,5,5),u.add(i);const p=new g.DirectionalLight(16777215,a.value.lightIntensity*.3);p.position.set(-5,-5,-5),u.add(p),y=new Se.OrbitControls(h,w.domElement),y.enableDamping=!0,y.dampingFactor=.05,y.autoRotate=A.value,y.autoRotateSpeed=a.value.rotateSpeed,y.enableZoom=!0,y.enablePan=!1,y.enableRotate=!0,y.minDistance=.5,y.maxDistance=50,y.zoomSpeed=1,y.target.set(0,0,0),k=new re.CSS2DRenderer,k.setSize(e,t),k.domElement.style.position="absolute",k.domElement.style.top="0",k.domElement.style.left="0",k.domElement.style.pointerEvents="none",r.value.appendChild(k.domElement),O=new g.Raycaster,I=new g.Vector2,n.mode==="edit"&&((C=d.value)==null||C.addEventListener("dblclick",Y)),X()},se=e=>oe(null,null,function*(){if(!e){S.value="请设置模型URL";return}f.value=!0,S.value="";const t=new _e.GLTFLoader,c=new Ae;c.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.6/"),c.setDecoderConfig({type:"js"}),t.setDRACOLoader(c);try{const i=yield t.loadAsync(e);v&&(u.remove(v),v.traverse(T=>{T.geometry&&T.geometry.dispose(),T.material&&(Array.isArray(T.material)?T.material.forEach(j=>j.dispose()):T.material.dispose())})),v=i.scene;let p=0,C=0;v.traverse(T=>{if(T.isMesh&&T.material){p++;const j=J=>{const pe=J.color||new g.Color(13421772),he=J.map,H=new g.MeshStandardMaterial({color:pe,map:he,metalness:.2,roughness:.8});return delete H.onBuild,delete H.onBeforeCompile,C++,H};Array.isArray(T.material)?T.material=T.material.map(j):T.material=j(T.material)}});const _=new g.Box3().setFromObject(v),x=_.getSize(new g.Vector3),R=_.getCenter(new g.Vector3),E=Math.max(x.x,x.y,x.z),P=E>0?1/E:1;v.scale.setScalar(P*a.value.modelScale),v.position.x=-R.x*P*a.value.modelScale,v.position.y=-R.y*P*a.value.modelScale,v.position.z=-R.z*P*a.value.modelScale,u.add(v);const z=_.getSize(new g.Vector3),fe=Math.max(z.x,z.y,z.z)*P*2.5;h.position.set(0,0,Math.max(fe,a.value.cameraDistance)),y.update(),f.value=!1,me()}catch(i){S.value=`加载模型失败: ${i.message||"未知错误"}`,f.value=!1}}),X=()=>{if(!(!u||!h||!w||!y)){D=requestAnimationFrame(X);try{y.update(),w.render(u,h),k&&k.render(u,h)}catch(e){S.value=`渲染错误: ${e.message||"未知错误"}`,D&&(cancelAnimationFrame(D),D=0)}}},Y=e=>{var i,p;if(!v||!r.value)return;const t=r.value.getBoundingClientRect();I.x=(e.clientX-t.left)/t.width*2-1,I.y=-((e.clientY-t.top)/t.height)*2+1,O.setFromCamera(I,h);const c=O.intersectObject(v,!0);if(c.length>0){const C=c[0].point,_=v.worldToLocal(C.clone()),x=((p=(i=n.conf)==null?void 0:i.data)==null?void 0:p.length)||0,R={name:`标记 ${x+1}`,fv:"",object_id:"",icon:"🛜",posX:_.x,posY:_.y,posZ:_.z};n.conf&&Array.isArray(n.conf.data)&&n.conf.data.push(R);const E={id:`marker_${x}`,position:{x:_.x,y:_.y,z:_.z},label:R.name,objectId:"",fv:"",value:""};M.value.push(E),Z(E)}},Z=(e,t="📍")=>{const c=document.createElement("div");c.className="model-marker",c.dataset.markerId=e.id,c.innerHTML=`
3
3
  <div class="marker-icon">${t}</div>
4
4
  ${e.value?`<div class="marker-value">${e.value}</div>`:""}
@@ -16,7 +16,7 @@ import "element-plus/es/components/select/style/css";
16
16
  import "element-plus/es/components/option/style/css";
17
17
  import { defineComponent as ae, useCssVars as ce, computed as d, reactive as re, watch as se, openBlock as m, createElementBlock as y, normalizeStyle as ue, normalizeClass as ie, createElementVNode as f, toDisplayString as j, createVNode as P, withCtx as _, unref as z, Fragment as O, renderList as L, createBlock as v, renderSlot as pe } from "vue";
18
18
  import { u as de } from "./safeI18n-CXZgGKWp.js";
19
- import { l as be, _ as me } from "./index-YNdVib_6.js";
19
+ import { l as be, _ as me } from "./index-BSe6vVpg.js";
20
20
  import { A as fe, D as ge } from "./ele-ctrSet-icon-BtKGrCid.js";
21
21
  const ve = { class: "section-header" }, he = { class: "section-title" }, ye = { class: "object-toolbar" }, Ce = { class: "toolbar-field" }, Se = { class: "field-label" }, ke = { class: "toolbar-field object-input-field" }, Ve = { class: "field-label" }, je = {
22
22
  DEFAULT_ICON: ge,
@@ -1 +1 @@
1
- "use strict";var $=Object.defineProperty,J=Object.defineProperties;var K=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var L=(d,p,i)=>p in d?$(d,p,{enumerable:!0,configurable:!0,writable:!0,value:i}):d[p]=i,C=(d,p)=>{for(var i in p||(p={}))H.call(p,i)&&L(d,i,p[i]);if(O)for(var i of O(p))W.call(p,i)&&L(d,i,p[i]);return d},N=(d,p)=>J(d,K(p));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("element-plus/es");require("element-plus/es/components/base/style/css");require("element-plus/es/components/select/style/css");require("element-plus/es/components/option/style/css");const t=require("vue"),Q=require("./safeI18n-DR20q_h1.cjs"),I=require("./index-6QhTSPkL.cjs"),E=require("./ele-ctrSet-icon-DCsPO0tL.cjs"),X={class:"section-header"},Y={class:"section-title"},Z={class:"object-toolbar"},ee={class:"toolbar-field"},le={class:"field-label"},te={class:"toolbar-field object-input-field"},oe={class:"field-label"},ne={DEFAULT_ICON:E.DEFAULT_ICON,ACTIVE_ICON:E.ACTIVE_ICON,NAME_CN:"全局对象切换",NAME_EN:"Global Object Selector",ORDER:21,PLATFORM:["pc","screen"]},ae={bgColor:{value:"#ffffff",type:"color",label:"setting.bgColor"},textColor:{value:"#333333",type:"color",label:"setting.textColor"},accentColor:{value:"#409eff",type:"color",label:"component.options.accentColor"},borderColor:{value:"#e5e5e5",type:"color",label:"component.options.borderColor"},hideSectionTitle:{value:!1,type:"switch",label:"component.openpitConfigPanel.hideSectionTitle"},sectionTitle:{value:"对象切换",type:"string",label:"component.openpitConfigPanel.label"},groupLabel:{value:"分组",type:"string",label:"component.openpitConfigPanel.objectSelectGroupLabel"},inputLabel:{value:"对象",type:"string",label:"component.openpitConfigPanel.objectSelectInputLabel"},groupPlaceholder:{value:"请选择分组",type:"string",label:"component.openpitConfigPanel.objectSelectGroupPlaceholder"},inputPlaceholder:{value:"请选择对象",type:"string",label:"component.openpitConfigPanel.objectSelectInputPlaceholder"},linkChannel:{value:"deepDisplacement",type:"select",label:"component.linkChannel",options:[{label:"component.linkChannelOptions.deepDisplacement",value:"deepDisplacement"},{label:"component.linkChannelOptions.gnss",value:"gnss"},{label:"component.linkChannelOptions.slope",value:"slope"},{label:"component.linkChannelOptions.device",value:"device"},{label:"component.linkChannelOptions.alarm",value:"alarm"},{label:"component.linkChannelOptions.custom",value:"custom"}]},customChannel:{value:"",type:"string",label:"component.customChannel",showWhen:{linkChannel:"custom"}}},ce=[{key:"objectId",multiple:!1,lengthKey:"length",defaultLength:200,options:[{label:"SJ45",value:"SJ45",remark:"北帮",length:80},{label:"SJ46",value:"SJ46",remark:"南帮",length:100}]}],re=[{key:"key",label:"component.openpitConfigPanel.key",type:"string"},{key:"multiple",label:"component.openpitConfigPanel.multiple",type:"switch"},{key:"lengthKey",label:"component.openpitConfigPanel.lengthKey",type:"string"},{key:"defaultLength",label:"component.openpitConfigPanel.defaultLength",type:"number"},{key:"options",label:"component.openpitConfigPanel.options",type:"table",columns:[{key:"label",label:"component.openpitConfigPanel.optionLabel",type:"string"},{key:"value",label:"component.openpitConfigPanel.optionValue",type:"string"},{key:"remark",label:"component.openpitConfigPanel.optionRemark",type:"string"},{key:"length",label:"component.openpitConfigPanel.optionLength",type:"number"}]}],se=[],ue={useAlias:!1,multiObject:!1,source:""},ie={DEFAULT:ne,OPTIONS:ae,DATA:ce,PARAMS:re,SOURCE:se,COMMON:ue},pe=t.defineComponent(N(C({},ie),{__name:"globalObjectSelector",props:{module:{type:Object,default:null},conf:{type:Object,default:null},state:{type:Object,default:null},uid:{type:String,default:""},hideSectionTitle:{type:Boolean,default:!1},textColor:{type:String,default:"#333333"},accentColor:{type:String,default:"#409eff"},borderColor:{type:String,default:"#e5e5e5"}},emits:["change"],setup(d,{emit:p}){t.useCssVars(e=>({v47807a88:f.value.backgroundColor,v72954404:f.value.borderColor,v238b3fec:f.value.color}));const{t:i}=Q.useSafeI18n(),B=I.useLinkStore(),c=d,y=p,u=t.computed(()=>{var e;return c.module?c.module:Array.isArray((e=c.conf)==null?void 0:e.data)?c.conf.data[0]||{}:c.conf||{}}),f=t.computed(()=>{var l,o,a,n,s;const e=((l=c.conf)==null?void 0:l.options)||{};return{backgroundColor:((o=e==null?void 0:e.bgColor)==null?void 0:o.value)||"#ffffff",color:((a=e==null?void 0:e.textColor)==null?void 0:a.value)||c.textColor,borderColor:((n=e==null?void 0:e.borderColor)==null?void 0:n.value)||c.borderColor,"--accent-color":((s=e==null?void 0:e.accentColor)==null?void 0:s.value)||c.accentColor}}),T=t.computed(()=>{var l,o;const e=((l=c.conf)==null?void 0:l.options)||{};return c.hideSectionTitle||((o=e==null?void 0:e.hideSectionTitle)==null?void 0:o.value)===!0}),b=(e,l)=>e?String(e).includes(".")?i(String(e)):String(e):i(l),G=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.sectionTitle)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectLabel")}),w=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.groupLabel)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectGroupLabel")}),D=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.groupPlaceholder)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectGroupPlaceholder")}),x=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.inputLabel)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectInputLabel")}),S=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.inputPlaceholder)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectInputPlaceholder")}),g=t.computed(()=>{var l;const e=(l=u.value)==null?void 0:l.options;if(Array.isArray(e))return e;if(!e)return[];if(typeof e=="string")try{const o=JSON.parse(e);return Array.isArray(o)?o:[]}catch(o){return[]}return[]}),F=t.computed(()=>{const e=new Set;return g.value.forEach(l=>{var a;const o=String((a=l==null?void 0:l.remark)!=null?a:"").trim();o&&e.add(o)}),Array.from(e)}),r=t.reactive({selectedGroup:"",selectedValue:"",selectedValues:[]}),v=t.computed(()=>{const e=String(r.selectedGroup||"").trim();return g.value.filter(l=>{var a;const o=String((a=l==null?void 0:l.remark)!=null?a:"");return!(e&&o!==e)})}),q=()=>{var l,o,a,n,s;const e=c.state&&typeof c.state=="object"?c.state:{};r.selectedGroup=String(e.selectedGroup||""),(l=u.value)!=null&&l.multiple?(Array.isArray(e.selectedValues)?r.selectedValues=[...e.selectedValues]:Array.isArray((o=u.value)==null?void 0:o.value)?r.selectedValues=[...u.value.value]:r.selectedValues=[],r.selectedValue=""):(r.selectedValue=(s=(n=e.selectedValue)!=null?n:(a=u.value)==null?void 0:a.value)!=null?s:"",r.selectedValues=[])},M=()=>{var a,n,s;const e=((a=c.conf)==null?void 0:a.options)||{},l=((n=e==null?void 0:e.linkChannel)==null?void 0:n.value)||"deepDisplacement",o=((s=e==null?void 0:e.customChannel)==null?void 0:s.value)||"";return l==="custom"&&o?o:l},z=e=>{var m,P;const l=String(((m=u.value)==null?void 0:m.lengthKey)||"length"),o=g.value.find(h=>{var _;return String((_=h==null?void 0:h.value)!=null?_:"")===String(e)}),a=o==null?void 0:o[l],n=Number(a);if(Number.isFinite(n)&&n>=0)return n;const s=Number((P=u.value)==null?void 0:P.defaultLength);return Number.isFinite(s)&&s>=0?s:200},U=()=>{var s,m;const e=String(((s=u.value)==null?void 0:s.key)||"objectId"),l=((m=u.value)==null?void 0:m.multiple)===!0,o=l?[...r.selectedValues||[]]:r.selectedValue,a=String(l?(r.selectedValues||[])[0]||"":r.selectedValue||""),n=z(a);return{[e]:o,objectId:a,objectLength:n,depthStep:1,objectGroup:r.selectedGroup||""}},k=()=>{var s;const e=M(),l=String(((s=u.value)==null?void 0:s.targetId)||"").trim(),o=U(),a=l?l.split(",").map(m=>m.trim()).filter(m=>m):[],n=C({source:"globalObjectSelector",type:"filter",objectId:o.objectId,objectLength:o.objectLength,depthStep:o.depthStep,filter:o,meta:{channel:e,routeTargets:a}},o);B.publish(e,"globalObjectSelector",n)},V=()=>{var e;!c.state||typeof c.state!="object"||(c.state.selectedGroup=r.selectedGroup,(e=u.value)!=null&&e.multiple?c.state.selectedValues=[...r.selectedValues||[]]:c.state.selectedValue=r.selectedValue)},R=()=>{var l,o;const e=v.value;if((l=u.value)!=null&&l.multiple){const a=new Set(e.map(n=>n.value));r.selectedValues=(r.selectedValues||[]).filter(n=>a.has(n))}else e.some(a=>a.value===r.selectedValue)||(r.selectedValue=((o=e[0])==null?void 0:o.value)||"");V(),k(),y("change")},j=()=>{V(),k(),y("change")};return t.watch(()=>{var e,l,o;return[c.state,(e=u.value)==null?void 0:e.multiple,(l=u.value)==null?void 0:l.value,(o=u.value)==null?void 0:o.options]},()=>q(),{immediate:!0,deep:!0}),(e,l)=>{const o=A.ElOption,a=A.ElSelect;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["object-select-section",{"hide-section-title":T.value}]),style:t.normalizeStyle(f.value)},[t.createElementVNode("div",X,[t.createElementVNode("span",Y,t.toDisplayString(G.value),1)]),t.createElementVNode("div",Z,[t.createElementVNode("div",ee,[t.createElementVNode("span",le,t.toDisplayString(w.value),1),t.createVNode(a,{modelValue:r.selectedGroup,"onUpdate:modelValue":l[0]||(l[0]=n=>r.selectedGroup=n),clearable:"",placeholder:D.value,size:"small",class:"select-control",onChange:R},{default:t.withCtx(()=>[t.createVNode(o,{label:t.unref(i)("component.openpitConfigPanel.allOptionLabel"),value:""},null,8,["label"]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(F.value,n=>(t.openBlock(),t.createBlock(o,{key:n,label:n,value:n},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),t.createElementVNode("div",te,[t.createElementVNode("span",oe,t.toDisplayString(x.value),1),u.value.multiple?(t.openBlock(),t.createBlock(a,{key:1,modelValue:r.selectedValues,"onUpdate:modelValue":l[2]||(l[2]=n=>r.selectedValues=n),multiple:"",filterable:"","collapse-tags":"","collapse-tags-tooltip":"",size:"small",placeholder:S.value,class:"select-control select-control-wide",onChange:j},{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(v.value,n=>(t.openBlock(),t.createBlock(o,{key:n.value,label:n.remark?`${n.label}(${n.remark})`:n.label,value:n.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])):(t.openBlock(),t.createBlock(a,{key:0,modelValue:r.selectedValue,"onUpdate:modelValue":l[1]||(l[1]=n=>r.selectedValue=n),filterable:"",clearable:"",size:"small",placeholder:S.value,class:"select-control",onChange:j},{default:t.withCtx(()=>[t.createVNode(o,{label:t.unref(i)("component.openpitConfigPanel.allOptionLabel"),value:""},null,8,["label"]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(v.value,n=>(t.openBlock(),t.createBlock(o,{key:n.value,label:n.remark?`${n.label}(${n.remark})`:n.label,value:n.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"]))])]),t.renderSlot(e.$slots,"default",{},void 0,!0)],6)}}})),de=I._export_sfc(pe,[["__scopeId","data-v-ca0a35cd"]]);exports.default=de;
1
+ "use strict";var $=Object.defineProperty,J=Object.defineProperties;var K=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var L=(d,p,i)=>p in d?$(d,p,{enumerable:!0,configurable:!0,writable:!0,value:i}):d[p]=i,C=(d,p)=>{for(var i in p||(p={}))H.call(p,i)&&L(d,i,p[i]);if(O)for(var i of O(p))W.call(p,i)&&L(d,i,p[i]);return d},N=(d,p)=>J(d,K(p));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("element-plus/es");require("element-plus/es/components/base/style/css");require("element-plus/es/components/select/style/css");require("element-plus/es/components/option/style/css");const t=require("vue"),Q=require("./safeI18n-DR20q_h1.cjs"),I=require("./index-D_jfRmwX.cjs"),E=require("./ele-ctrSet-icon-DCsPO0tL.cjs"),X={class:"section-header"},Y={class:"section-title"},Z={class:"object-toolbar"},ee={class:"toolbar-field"},le={class:"field-label"},te={class:"toolbar-field object-input-field"},oe={class:"field-label"},ne={DEFAULT_ICON:E.DEFAULT_ICON,ACTIVE_ICON:E.ACTIVE_ICON,NAME_CN:"全局对象切换",NAME_EN:"Global Object Selector",ORDER:21,PLATFORM:["pc","screen"]},ae={bgColor:{value:"#ffffff",type:"color",label:"setting.bgColor"},textColor:{value:"#333333",type:"color",label:"setting.textColor"},accentColor:{value:"#409eff",type:"color",label:"component.options.accentColor"},borderColor:{value:"#e5e5e5",type:"color",label:"component.options.borderColor"},hideSectionTitle:{value:!1,type:"switch",label:"component.openpitConfigPanel.hideSectionTitle"},sectionTitle:{value:"对象切换",type:"string",label:"component.openpitConfigPanel.label"},groupLabel:{value:"分组",type:"string",label:"component.openpitConfigPanel.objectSelectGroupLabel"},inputLabel:{value:"对象",type:"string",label:"component.openpitConfigPanel.objectSelectInputLabel"},groupPlaceholder:{value:"请选择分组",type:"string",label:"component.openpitConfigPanel.objectSelectGroupPlaceholder"},inputPlaceholder:{value:"请选择对象",type:"string",label:"component.openpitConfigPanel.objectSelectInputPlaceholder"},linkChannel:{value:"deepDisplacement",type:"select",label:"component.linkChannel",options:[{label:"component.linkChannelOptions.deepDisplacement",value:"deepDisplacement"},{label:"component.linkChannelOptions.gnss",value:"gnss"},{label:"component.linkChannelOptions.slope",value:"slope"},{label:"component.linkChannelOptions.device",value:"device"},{label:"component.linkChannelOptions.alarm",value:"alarm"},{label:"component.linkChannelOptions.custom",value:"custom"}]},customChannel:{value:"",type:"string",label:"component.customChannel",showWhen:{linkChannel:"custom"}}},ce=[{key:"objectId",multiple:!1,lengthKey:"length",defaultLength:200,options:[{label:"SJ45",value:"SJ45",remark:"北帮",length:80},{label:"SJ46",value:"SJ46",remark:"南帮",length:100}]}],re=[{key:"key",label:"component.openpitConfigPanel.key",type:"string"},{key:"multiple",label:"component.openpitConfigPanel.multiple",type:"switch"},{key:"lengthKey",label:"component.openpitConfigPanel.lengthKey",type:"string"},{key:"defaultLength",label:"component.openpitConfigPanel.defaultLength",type:"number"},{key:"options",label:"component.openpitConfigPanel.options",type:"table",columns:[{key:"label",label:"component.openpitConfigPanel.optionLabel",type:"string"},{key:"value",label:"component.openpitConfigPanel.optionValue",type:"string"},{key:"remark",label:"component.openpitConfigPanel.optionRemark",type:"string"},{key:"length",label:"component.openpitConfigPanel.optionLength",type:"number"}]}],se=[],ue={useAlias:!1,multiObject:!1,source:""},ie={DEFAULT:ne,OPTIONS:ae,DATA:ce,PARAMS:re,SOURCE:se,COMMON:ue},pe=t.defineComponent(N(C({},ie),{__name:"globalObjectSelector",props:{module:{type:Object,default:null},conf:{type:Object,default:null},state:{type:Object,default:null},uid:{type:String,default:""},hideSectionTitle:{type:Boolean,default:!1},textColor:{type:String,default:"#333333"},accentColor:{type:String,default:"#409eff"},borderColor:{type:String,default:"#e5e5e5"}},emits:["change"],setup(d,{emit:p}){t.useCssVars(e=>({v47807a88:f.value.backgroundColor,v72954404:f.value.borderColor,v238b3fec:f.value.color}));const{t:i}=Q.useSafeI18n(),B=I.useLinkStore(),c=d,y=p,u=t.computed(()=>{var e;return c.module?c.module:Array.isArray((e=c.conf)==null?void 0:e.data)?c.conf.data[0]||{}:c.conf||{}}),f=t.computed(()=>{var l,o,a,n,s;const e=((l=c.conf)==null?void 0:l.options)||{};return{backgroundColor:((o=e==null?void 0:e.bgColor)==null?void 0:o.value)||"#ffffff",color:((a=e==null?void 0:e.textColor)==null?void 0:a.value)||c.textColor,borderColor:((n=e==null?void 0:e.borderColor)==null?void 0:n.value)||c.borderColor,"--accent-color":((s=e==null?void 0:e.accentColor)==null?void 0:s.value)||c.accentColor}}),T=t.computed(()=>{var l,o;const e=((l=c.conf)==null?void 0:l.options)||{};return c.hideSectionTitle||((o=e==null?void 0:e.hideSectionTitle)==null?void 0:o.value)===!0}),b=(e,l)=>e?String(e).includes(".")?i(String(e)):String(e):i(l),G=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.sectionTitle)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectLabel")}),w=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.groupLabel)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectGroupLabel")}),D=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.groupPlaceholder)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectGroupPlaceholder")}),x=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.inputLabel)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectInputLabel")}),S=t.computed(()=>{var e,l,o;return b((o=(l=(e=c.conf)==null?void 0:e.options)==null?void 0:l.inputPlaceholder)==null?void 0:o.value,"component.openpitConfigPanel.objectSelectInputPlaceholder")}),g=t.computed(()=>{var l;const e=(l=u.value)==null?void 0:l.options;if(Array.isArray(e))return e;if(!e)return[];if(typeof e=="string")try{const o=JSON.parse(e);return Array.isArray(o)?o:[]}catch(o){return[]}return[]}),F=t.computed(()=>{const e=new Set;return g.value.forEach(l=>{var a;const o=String((a=l==null?void 0:l.remark)!=null?a:"").trim();o&&e.add(o)}),Array.from(e)}),r=t.reactive({selectedGroup:"",selectedValue:"",selectedValues:[]}),v=t.computed(()=>{const e=String(r.selectedGroup||"").trim();return g.value.filter(l=>{var a;const o=String((a=l==null?void 0:l.remark)!=null?a:"");return!(e&&o!==e)})}),q=()=>{var l,o,a,n,s;const e=c.state&&typeof c.state=="object"?c.state:{};r.selectedGroup=String(e.selectedGroup||""),(l=u.value)!=null&&l.multiple?(Array.isArray(e.selectedValues)?r.selectedValues=[...e.selectedValues]:Array.isArray((o=u.value)==null?void 0:o.value)?r.selectedValues=[...u.value.value]:r.selectedValues=[],r.selectedValue=""):(r.selectedValue=(s=(n=e.selectedValue)!=null?n:(a=u.value)==null?void 0:a.value)!=null?s:"",r.selectedValues=[])},M=()=>{var a,n,s;const e=((a=c.conf)==null?void 0:a.options)||{},l=((n=e==null?void 0:e.linkChannel)==null?void 0:n.value)||"deepDisplacement",o=((s=e==null?void 0:e.customChannel)==null?void 0:s.value)||"";return l==="custom"&&o?o:l},z=e=>{var m,P;const l=String(((m=u.value)==null?void 0:m.lengthKey)||"length"),o=g.value.find(h=>{var _;return String((_=h==null?void 0:h.value)!=null?_:"")===String(e)}),a=o==null?void 0:o[l],n=Number(a);if(Number.isFinite(n)&&n>=0)return n;const s=Number((P=u.value)==null?void 0:P.defaultLength);return Number.isFinite(s)&&s>=0?s:200},U=()=>{var s,m;const e=String(((s=u.value)==null?void 0:s.key)||"objectId"),l=((m=u.value)==null?void 0:m.multiple)===!0,o=l?[...r.selectedValues||[]]:r.selectedValue,a=String(l?(r.selectedValues||[])[0]||"":r.selectedValue||""),n=z(a);return{[e]:o,objectId:a,objectLength:n,depthStep:1,objectGroup:r.selectedGroup||""}},k=()=>{var s;const e=M(),l=String(((s=u.value)==null?void 0:s.targetId)||"").trim(),o=U(),a=l?l.split(",").map(m=>m.trim()).filter(m=>m):[],n=C({source:"globalObjectSelector",type:"filter",objectId:o.objectId,objectLength:o.objectLength,depthStep:o.depthStep,filter:o,meta:{channel:e,routeTargets:a}},o);B.publish(e,"globalObjectSelector",n)},V=()=>{var e;!c.state||typeof c.state!="object"||(c.state.selectedGroup=r.selectedGroup,(e=u.value)!=null&&e.multiple?c.state.selectedValues=[...r.selectedValues||[]]:c.state.selectedValue=r.selectedValue)},R=()=>{var l,o;const e=v.value;if((l=u.value)!=null&&l.multiple){const a=new Set(e.map(n=>n.value));r.selectedValues=(r.selectedValues||[]).filter(n=>a.has(n))}else e.some(a=>a.value===r.selectedValue)||(r.selectedValue=((o=e[0])==null?void 0:o.value)||"");V(),k(),y("change")},j=()=>{V(),k(),y("change")};return t.watch(()=>{var e,l,o;return[c.state,(e=u.value)==null?void 0:e.multiple,(l=u.value)==null?void 0:l.value,(o=u.value)==null?void 0:o.options]},()=>q(),{immediate:!0,deep:!0}),(e,l)=>{const o=A.ElOption,a=A.ElSelect;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["object-select-section",{"hide-section-title":T.value}]),style:t.normalizeStyle(f.value)},[t.createElementVNode("div",X,[t.createElementVNode("span",Y,t.toDisplayString(G.value),1)]),t.createElementVNode("div",Z,[t.createElementVNode("div",ee,[t.createElementVNode("span",le,t.toDisplayString(w.value),1),t.createVNode(a,{modelValue:r.selectedGroup,"onUpdate:modelValue":l[0]||(l[0]=n=>r.selectedGroup=n),clearable:"",placeholder:D.value,size:"small",class:"select-control",onChange:R},{default:t.withCtx(()=>[t.createVNode(o,{label:t.unref(i)("component.openpitConfigPanel.allOptionLabel"),value:""},null,8,["label"]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(F.value,n=>(t.openBlock(),t.createBlock(o,{key:n,label:n,value:n},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),t.createElementVNode("div",te,[t.createElementVNode("span",oe,t.toDisplayString(x.value),1),u.value.multiple?(t.openBlock(),t.createBlock(a,{key:1,modelValue:r.selectedValues,"onUpdate:modelValue":l[2]||(l[2]=n=>r.selectedValues=n),multiple:"",filterable:"","collapse-tags":"","collapse-tags-tooltip":"",size:"small",placeholder:S.value,class:"select-control select-control-wide",onChange:j},{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(v.value,n=>(t.openBlock(),t.createBlock(o,{key:n.value,label:n.remark?`${n.label}(${n.remark})`:n.label,value:n.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])):(t.openBlock(),t.createBlock(a,{key:0,modelValue:r.selectedValue,"onUpdate:modelValue":l[1]||(l[1]=n=>r.selectedValue=n),filterable:"",clearable:"",size:"small",placeholder:S.value,class:"select-control",onChange:j},{default:t.withCtx(()=>[t.createVNode(o,{label:t.unref(i)("component.openpitConfigPanel.allOptionLabel"),value:""},null,8,["label"]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(v.value,n=>(t.openBlock(),t.createBlock(o,{key:n.value,label:n.remark?`${n.label}(${n.remark})`:n.label,value:n.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"]))])]),t.renderSlot(e.$slots,"default",{},void 0,!0)],6)}}})),de=I._export_sfc(pe,[["__scopeId","data-v-ca0a35cd"]]);exports.default=de;