iflow-engine-base-3d 3.11.3 → 3.11.4

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 (404) hide show
  1. package/dist/bim-engine-sdk.es.js +9 -50
  2. package/dist/bim-engine-sdk.umd.js +291 -18724
  3. package/dist/chunks/{engine-3d-Cq9w_B8R.js → engine-3d-9GJt1rzb.js} +490 -550
  4. package/dist/chunks/{sdk-assets-DseBGYv8.js → sdk-assets-BbXNfc5u.js} +11 -11
  5. package/dist/chunks/sdk-runtime-kyCuafGM.js +1174 -0
  6. package/dist/chunks/sdk-vendor-DYgn7sFs.js +22392 -0
  7. package/dist/chunks/{three-vendor-M4ZIGmaO.js → three-vendor-ox3_iXFc.js} +6604 -7305
  8. package/dist/iflow-engine-base.css +1 -1
  9. package/dist/index.d.ts +6 -7314
  10. package/package.json +2 -1
  11. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  12. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  13. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  14. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  15. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  16. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  17. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  18. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  19. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  20. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  21. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  22. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  23. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  24. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  25. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  26. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  27. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  28. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  29. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  30. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  31. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  32. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  33. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  34. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  35. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  36. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  37. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  38. package/dist/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  39. package/dist/Cesium/Assets/Images/bing_maps_credit.png +0 -0
  40. package/dist/Cesium/Assets/Images/cesium_credit.png +0 -0
  41. package/dist/Cesium/Assets/Images/google_earth_credit.png +0 -0
  42. package/dist/Cesium/Assets/Images/ion-credit.png +0 -0
  43. package/dist/Cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  44. package/dist/Cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  45. package/dist/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  46. package/dist/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  47. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  48. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  49. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  50. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  51. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  52. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  53. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  54. package/dist/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  55. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  56. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  57. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  58. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  59. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  60. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  61. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  62. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  63. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  64. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  65. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  66. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  67. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  68. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  69. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  70. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  71. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  72. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  73. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  74. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  75. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  76. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  77. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  78. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  79. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  80. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  81. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  82. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  83. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  84. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  85. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  86. package/dist/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  87. package/dist/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  88. package/dist/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  89. package/dist/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  90. package/dist/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  91. package/dist/Cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  92. package/dist/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  93. package/dist/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  94. package/dist/Cesium/Assets/Textures/maki/airfield.png +0 -0
  95. package/dist/Cesium/Assets/Textures/maki/airport.png +0 -0
  96. package/dist/Cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  97. package/dist/Cesium/Assets/Textures/maki/america-football.png +0 -0
  98. package/dist/Cesium/Assets/Textures/maki/art-gallery.png +0 -0
  99. package/dist/Cesium/Assets/Textures/maki/bakery.png +0 -0
  100. package/dist/Cesium/Assets/Textures/maki/bank.png +0 -0
  101. package/dist/Cesium/Assets/Textures/maki/bar.png +0 -0
  102. package/dist/Cesium/Assets/Textures/maki/baseball.png +0 -0
  103. package/dist/Cesium/Assets/Textures/maki/basketball.png +0 -0
  104. package/dist/Cesium/Assets/Textures/maki/beer.png +0 -0
  105. package/dist/Cesium/Assets/Textures/maki/bicycle.png +0 -0
  106. package/dist/Cesium/Assets/Textures/maki/building.png +0 -0
  107. package/dist/Cesium/Assets/Textures/maki/bus.png +0 -0
  108. package/dist/Cesium/Assets/Textures/maki/cafe.png +0 -0
  109. package/dist/Cesium/Assets/Textures/maki/camera.png +0 -0
  110. package/dist/Cesium/Assets/Textures/maki/campsite.png +0 -0
  111. package/dist/Cesium/Assets/Textures/maki/car.png +0 -0
  112. package/dist/Cesium/Assets/Textures/maki/cemetery.png +0 -0
  113. package/dist/Cesium/Assets/Textures/maki/cesium.png +0 -0
  114. package/dist/Cesium/Assets/Textures/maki/chemist.png +0 -0
  115. package/dist/Cesium/Assets/Textures/maki/cinema.png +0 -0
  116. package/dist/Cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  117. package/dist/Cesium/Assets/Textures/maki/circle.png +0 -0
  118. package/dist/Cesium/Assets/Textures/maki/city.png +0 -0
  119. package/dist/Cesium/Assets/Textures/maki/clothing-store.png +0 -0
  120. package/dist/Cesium/Assets/Textures/maki/college.png +0 -0
  121. package/dist/Cesium/Assets/Textures/maki/commercial.png +0 -0
  122. package/dist/Cesium/Assets/Textures/maki/cricket.png +0 -0
  123. package/dist/Cesium/Assets/Textures/maki/cross.png +0 -0
  124. package/dist/Cesium/Assets/Textures/maki/dam.png +0 -0
  125. package/dist/Cesium/Assets/Textures/maki/danger.png +0 -0
  126. package/dist/Cesium/Assets/Textures/maki/disability.png +0 -0
  127. package/dist/Cesium/Assets/Textures/maki/dog-park.png +0 -0
  128. package/dist/Cesium/Assets/Textures/maki/embassy.png +0 -0
  129. package/dist/Cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  130. package/dist/Cesium/Assets/Textures/maki/entrance.png +0 -0
  131. package/dist/Cesium/Assets/Textures/maki/farm.png +0 -0
  132. package/dist/Cesium/Assets/Textures/maki/fast-food.png +0 -0
  133. package/dist/Cesium/Assets/Textures/maki/ferry.png +0 -0
  134. package/dist/Cesium/Assets/Textures/maki/fire-station.png +0 -0
  135. package/dist/Cesium/Assets/Textures/maki/fuel.png +0 -0
  136. package/dist/Cesium/Assets/Textures/maki/garden.png +0 -0
  137. package/dist/Cesium/Assets/Textures/maki/gift.png +0 -0
  138. package/dist/Cesium/Assets/Textures/maki/golf.png +0 -0
  139. package/dist/Cesium/Assets/Textures/maki/grocery.png +0 -0
  140. package/dist/Cesium/Assets/Textures/maki/hairdresser.png +0 -0
  141. package/dist/Cesium/Assets/Textures/maki/harbor.png +0 -0
  142. package/dist/Cesium/Assets/Textures/maki/heart.png +0 -0
  143. package/dist/Cesium/Assets/Textures/maki/heliport.png +0 -0
  144. package/dist/Cesium/Assets/Textures/maki/hospital.png +0 -0
  145. package/dist/Cesium/Assets/Textures/maki/ice-cream.png +0 -0
  146. package/dist/Cesium/Assets/Textures/maki/industrial.png +0 -0
  147. package/dist/Cesium/Assets/Textures/maki/land-use.png +0 -0
  148. package/dist/Cesium/Assets/Textures/maki/laundry.png +0 -0
  149. package/dist/Cesium/Assets/Textures/maki/library.png +0 -0
  150. package/dist/Cesium/Assets/Textures/maki/lighthouse.png +0 -0
  151. package/dist/Cesium/Assets/Textures/maki/lodging.png +0 -0
  152. package/dist/Cesium/Assets/Textures/maki/logging.png +0 -0
  153. package/dist/Cesium/Assets/Textures/maki/london-underground.png +0 -0
  154. package/dist/Cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  155. package/dist/Cesium/Assets/Textures/maki/marker.png +0 -0
  156. package/dist/Cesium/Assets/Textures/maki/minefield.png +0 -0
  157. package/dist/Cesium/Assets/Textures/maki/mobilephone.png +0 -0
  158. package/dist/Cesium/Assets/Textures/maki/monument.png +0 -0
  159. package/dist/Cesium/Assets/Textures/maki/museum.png +0 -0
  160. package/dist/Cesium/Assets/Textures/maki/music.png +0 -0
  161. package/dist/Cesium/Assets/Textures/maki/oil-well.png +0 -0
  162. package/dist/Cesium/Assets/Textures/maki/park.png +0 -0
  163. package/dist/Cesium/Assets/Textures/maki/park2.png +0 -0
  164. package/dist/Cesium/Assets/Textures/maki/parking-garage.png +0 -0
  165. package/dist/Cesium/Assets/Textures/maki/parking.png +0 -0
  166. package/dist/Cesium/Assets/Textures/maki/pharmacy.png +0 -0
  167. package/dist/Cesium/Assets/Textures/maki/pitch.png +0 -0
  168. package/dist/Cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  169. package/dist/Cesium/Assets/Textures/maki/playground.png +0 -0
  170. package/dist/Cesium/Assets/Textures/maki/police.png +0 -0
  171. package/dist/Cesium/Assets/Textures/maki/polling-place.png +0 -0
  172. package/dist/Cesium/Assets/Textures/maki/post.png +0 -0
  173. package/dist/Cesium/Assets/Textures/maki/prison.png +0 -0
  174. package/dist/Cesium/Assets/Textures/maki/rail-above.png +0 -0
  175. package/dist/Cesium/Assets/Textures/maki/rail-light.png +0 -0
  176. package/dist/Cesium/Assets/Textures/maki/rail-metro.png +0 -0
  177. package/dist/Cesium/Assets/Textures/maki/rail-underground.png +0 -0
  178. package/dist/Cesium/Assets/Textures/maki/rail.png +0 -0
  179. package/dist/Cesium/Assets/Textures/maki/religious-christian.png +0 -0
  180. package/dist/Cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  181. package/dist/Cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  182. package/dist/Cesium/Assets/Textures/maki/restaurant.png +0 -0
  183. package/dist/Cesium/Assets/Textures/maki/roadblock.png +0 -0
  184. package/dist/Cesium/Assets/Textures/maki/rocket.png +0 -0
  185. package/dist/Cesium/Assets/Textures/maki/school.png +0 -0
  186. package/dist/Cesium/Assets/Textures/maki/scooter.png +0 -0
  187. package/dist/Cesium/Assets/Textures/maki/shop.png +0 -0
  188. package/dist/Cesium/Assets/Textures/maki/skiing.png +0 -0
  189. package/dist/Cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  190. package/dist/Cesium/Assets/Textures/maki/soccer.png +0 -0
  191. package/dist/Cesium/Assets/Textures/maki/square-stroked.png +0 -0
  192. package/dist/Cesium/Assets/Textures/maki/square.png +0 -0
  193. package/dist/Cesium/Assets/Textures/maki/star-stroked.png +0 -0
  194. package/dist/Cesium/Assets/Textures/maki/star.png +0 -0
  195. package/dist/Cesium/Assets/Textures/maki/suitcase.png +0 -0
  196. package/dist/Cesium/Assets/Textures/maki/swimming.png +0 -0
  197. package/dist/Cesium/Assets/Textures/maki/telephone.png +0 -0
  198. package/dist/Cesium/Assets/Textures/maki/tennis.png +0 -0
  199. package/dist/Cesium/Assets/Textures/maki/theatre.png +0 -0
  200. package/dist/Cesium/Assets/Textures/maki/toilets.png +0 -0
  201. package/dist/Cesium/Assets/Textures/maki/town-hall.png +0 -0
  202. package/dist/Cesium/Assets/Textures/maki/town.png +0 -0
  203. package/dist/Cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  204. package/dist/Cesium/Assets/Textures/maki/triangle.png +0 -0
  205. package/dist/Cesium/Assets/Textures/maki/village.png +0 -0
  206. package/dist/Cesium/Assets/Textures/maki/warehouse.png +0 -0
  207. package/dist/Cesium/Assets/Textures/maki/waste-basket.png +0 -0
  208. package/dist/Cesium/Assets/Textures/maki/water.png +0 -0
  209. package/dist/Cesium/Assets/Textures/maki/wetland.png +0 -0
  210. package/dist/Cesium/Assets/Textures/maki/zoo.png +0 -0
  211. package/dist/Cesium/Assets/Textures/moonSmall.jpg +0 -0
  212. package/dist/Cesium/Assets/Textures/pin.svg +0 -1
  213. package/dist/Cesium/Assets/Textures/waterNormals.jpg +0 -0
  214. package/dist/Cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  215. package/dist/Cesium/Assets/approximateTerrainHeights.json +0 -1
  216. package/dist/Cesium/Cesium.js +0 -17946
  217. package/dist/Cesium/ThirdParty/Workers/package.json +0 -1
  218. package/dist/Cesium/ThirdParty/Workers/zip-web-worker.js +0 -1
  219. package/dist/Cesium/ThirdParty/basis_transcoder.wasm +0 -0
  220. package/dist/Cesium/ThirdParty/draco_decoder.wasm +0 -0
  221. package/dist/Cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  222. package/dist/Cesium/ThirdParty/wasm_splats_bg.wasm +0 -0
  223. package/dist/Cesium/ThirdParty/zip-module.wasm +0 -0
  224. package/dist/Cesium/Widgets/Animation/Animation.css +0 -127
  225. package/dist/Cesium/Widgets/Animation/lighter.css +0 -70
  226. package/dist/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  227. package/dist/Cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  228. package/dist/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  229. package/dist/Cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  230. package/dist/Cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -119
  231. package/dist/Cesium/Widgets/CesiumWidget/lighter.css +0 -14
  232. package/dist/Cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  233. package/dist/Cesium/Widgets/Geocoder/Geocoder.css +0 -70
  234. package/dist/Cesium/Widgets/Geocoder/lighter.css +0 -17
  235. package/dist/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  236. package/dist/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  237. package/dist/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  238. package/dist/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  239. package/dist/Cesium/Widgets/Images/ImageryProviders/azureAerial.png +0 -0
  240. package/dist/Cesium/Widgets/Images/ImageryProviders/azureRoads.png +0 -0
  241. package/dist/Cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  242. package/dist/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  243. package/dist/Cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  244. package/dist/Cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  245. package/dist/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  246. package/dist/Cesium/Widgets/Images/ImageryProviders/googleContour.png +0 -0
  247. package/dist/Cesium/Widgets/Images/ImageryProviders/googleRoadmap.png +0 -0
  248. package/dist/Cesium/Widgets/Images/ImageryProviders/googleSatellite.png +0 -0
  249. package/dist/Cesium/Widgets/Images/ImageryProviders/googleSatelliteLabels.png +0 -0
  250. package/dist/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  251. package/dist/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  252. package/dist/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  253. package/dist/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  254. package/dist/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  255. package/dist/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  256. package/dist/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  257. package/dist/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  258. package/dist/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  259. package/dist/Cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  260. package/dist/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  261. package/dist/Cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  262. package/dist/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  263. package/dist/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  264. package/dist/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  265. package/dist/Cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  266. package/dist/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  267. package/dist/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  268. package/dist/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  269. package/dist/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  270. package/dist/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  271. package/dist/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  272. package/dist/Cesium/Widgets/Images/TimelineIcons.png +0 -0
  273. package/dist/Cesium/Widgets/Images/info-loading.gif +0 -0
  274. package/dist/Cesium/Widgets/InfoBox/InfoBox.css +0 -92
  275. package/dist/Cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  276. package/dist/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  277. package/dist/Cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  278. package/dist/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  279. package/dist/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  280. package/dist/Cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  281. package/dist/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  282. package/dist/Cesium/Widgets/Timeline/Timeline.css +0 -103
  283. package/dist/Cesium/Widgets/Timeline/lighter.css +0 -23
  284. package/dist/Cesium/Widgets/VRButton/VRButton.css +0 -8
  285. package/dist/Cesium/Widgets/Viewer/Viewer.css +0 -107
  286. package/dist/Cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  287. package/dist/Cesium/Widgets/lighter.css +0 -237
  288. package/dist/Cesium/Widgets/lighterShared.css +0 -46
  289. package/dist/Cesium/Widgets/shared.css +0 -103
  290. package/dist/Cesium/Widgets/widgets.css +0 -1342
  291. package/dist/Cesium/Workers/chunk-236YIEYT.js +0 -26
  292. package/dist/Cesium/Workers/chunk-2ZYB3DYT.js +0 -26
  293. package/dist/Cesium/Workers/chunk-4M56RRIL.js +0 -26
  294. package/dist/Cesium/Workers/chunk-5BC2Q3QW.js +0 -26
  295. package/dist/Cesium/Workers/chunk-5XHUDY37.js +0 -26
  296. package/dist/Cesium/Workers/chunk-6WMLAJJP.js +0 -26
  297. package/dist/Cesium/Workers/chunk-72KUXMWU.js +0 -26
  298. package/dist/Cesium/Workers/chunk-7NQYTTAU.js +0 -26
  299. package/dist/Cesium/Workers/chunk-A35GG5WJ.js +0 -26
  300. package/dist/Cesium/Workers/chunk-AXNBHUAG.js +0 -26
  301. package/dist/Cesium/Workers/chunk-DC3K7YTH.js +0 -26
  302. package/dist/Cesium/Workers/chunk-DRBPXGI7.js +0 -26
  303. package/dist/Cesium/Workers/chunk-EARRZPMO.js +0 -26
  304. package/dist/Cesium/Workers/chunk-EHC3BDVP.js +0 -26
  305. package/dist/Cesium/Workers/chunk-EYZUSGKM.js +0 -26
  306. package/dist/Cesium/Workers/chunk-EZSKHVA2.js +0 -26
  307. package/dist/Cesium/Workers/chunk-F3WJIFOO.js +0 -26
  308. package/dist/Cesium/Workers/chunk-FB7UV5BI.js +0 -26
  309. package/dist/Cesium/Workers/chunk-FC6IYMYF.js +0 -26
  310. package/dist/Cesium/Workers/chunk-GF67PEXE.js +0 -27
  311. package/dist/Cesium/Workers/chunk-GXEQRH2R.js +0 -26
  312. package/dist/Cesium/Workers/chunk-I5NKQIWE.js +0 -26
  313. package/dist/Cesium/Workers/chunk-IH7GXIUB.js +0 -26
  314. package/dist/Cesium/Workers/chunk-IPP3UFGH.js +0 -26
  315. package/dist/Cesium/Workers/chunk-IYRGNBSH.js +0 -26
  316. package/dist/Cesium/Workers/chunk-J6BM74AD.js +0 -26
  317. package/dist/Cesium/Workers/chunk-KG2GJUJT.js +0 -26
  318. package/dist/Cesium/Workers/chunk-L7UE5MMF.js +0 -26
  319. package/dist/Cesium/Workers/chunk-LBZ34MHQ.js +0 -26
  320. package/dist/Cesium/Workers/chunk-LOQDTQMX.js +0 -26
  321. package/dist/Cesium/Workers/chunk-LYLRYC4L.js +0 -29
  322. package/dist/Cesium/Workers/chunk-MGPRMLLW.js +0 -26
  323. package/dist/Cesium/Workers/chunk-NP26LKQA.js +0 -26
  324. package/dist/Cesium/Workers/chunk-OMUAZ3NM.js +0 -26
  325. package/dist/Cesium/Workers/chunk-PPFUDJN4.js +0 -26
  326. package/dist/Cesium/Workers/chunk-PQ3V63XF.js +0 -27
  327. package/dist/Cesium/Workers/chunk-PWBQN4GK.js +0 -26
  328. package/dist/Cesium/Workers/chunk-QOTMLO2T.js +0 -26
  329. package/dist/Cesium/Workers/chunk-SP35IT73.js +0 -26
  330. package/dist/Cesium/Workers/chunk-T3ZGSZKA.js +0 -26
  331. package/dist/Cesium/Workers/chunk-TM6SYYHO.js +0 -28
  332. package/dist/Cesium/Workers/chunk-TSGIJVWH.js +0 -26
  333. package/dist/Cesium/Workers/chunk-U3YGOX3C.js +0 -63
  334. package/dist/Cesium/Workers/chunk-VBYOXOSM.js +0 -26
  335. package/dist/Cesium/Workers/chunk-VCOHJNKB.js +0 -26
  336. package/dist/Cesium/Workers/chunk-VXAZXMUX.js +0 -26
  337. package/dist/Cesium/Workers/chunk-VXCJOT4W.js +0 -26
  338. package/dist/Cesium/Workers/chunk-WPD3MB6X.js +0 -26
  339. package/dist/Cesium/Workers/chunk-X4D5KUN5.js +0 -26
  340. package/dist/Cesium/Workers/chunk-XEC656IT.js +0 -26
  341. package/dist/Cesium/Workers/chunk-XR53QRQS.js +0 -26
  342. package/dist/Cesium/Workers/chunk-XR7MN4PJ.js +0 -28
  343. package/dist/Cesium/Workers/chunk-XU6O4MRS.js +0 -26
  344. package/dist/Cesium/Workers/chunk-XZBHEBLF.js +0 -29
  345. package/dist/Cesium/Workers/chunk-Z2M4BF4E.js +0 -26
  346. package/dist/Cesium/Workers/chunk-Z4ERBZFB.js +0 -26
  347. package/dist/Cesium/Workers/chunk-ZY2KCIWI.js +0 -26
  348. package/dist/Cesium/Workers/combineGeometry.js +0 -26
  349. package/dist/Cesium/Workers/createBoxGeometry.js +0 -26
  350. package/dist/Cesium/Workers/createBoxOutlineGeometry.js +0 -26
  351. package/dist/Cesium/Workers/createCircleGeometry.js +0 -26
  352. package/dist/Cesium/Workers/createCircleOutlineGeometry.js +0 -26
  353. package/dist/Cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  354. package/dist/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  355. package/dist/Cesium/Workers/createCorridorGeometry.js +0 -26
  356. package/dist/Cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  357. package/dist/Cesium/Workers/createCylinderGeometry.js +0 -26
  358. package/dist/Cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  359. package/dist/Cesium/Workers/createEllipseGeometry.js +0 -26
  360. package/dist/Cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  361. package/dist/Cesium/Workers/createEllipsoidGeometry.js +0 -26
  362. package/dist/Cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  363. package/dist/Cesium/Workers/createFrustumGeometry.js +0 -26
  364. package/dist/Cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  365. package/dist/Cesium/Workers/createGeometry.js +0 -26
  366. package/dist/Cesium/Workers/createGroundPolylineGeometry.js +0 -26
  367. package/dist/Cesium/Workers/createPlaneGeometry.js +0 -26
  368. package/dist/Cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  369. package/dist/Cesium/Workers/createPolygonGeometry.js +0 -26
  370. package/dist/Cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  371. package/dist/Cesium/Workers/createPolylineGeometry.js +0 -26
  372. package/dist/Cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  373. package/dist/Cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  374. package/dist/Cesium/Workers/createRectangleGeometry.js +0 -26
  375. package/dist/Cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  376. package/dist/Cesium/Workers/createSimplePolylineGeometry.js +0 -26
  377. package/dist/Cesium/Workers/createSphereGeometry.js +0 -26
  378. package/dist/Cesium/Workers/createSphereOutlineGeometry.js +0 -26
  379. package/dist/Cesium/Workers/createTaskProcessorWorker.js +0 -26
  380. package/dist/Cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  381. package/dist/Cesium/Workers/createVectorTileGeometries.js +0 -26
  382. package/dist/Cesium/Workers/createVectorTilePoints.js +0 -26
  383. package/dist/Cesium/Workers/createVectorTilePolygons.js +0 -26
  384. package/dist/Cesium/Workers/createVectorTilePolylines.js +0 -26
  385. package/dist/Cesium/Workers/createVerticesFromCesium3DTilesTerrain.js +0 -26
  386. package/dist/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  387. package/dist/Cesium/Workers/createVerticesFromHeightmap.js +0 -26
  388. package/dist/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  389. package/dist/Cesium/Workers/createWallGeometry.js +0 -26
  390. package/dist/Cesium/Workers/createWallOutlineGeometry.js +0 -26
  391. package/dist/Cesium/Workers/decodeDraco.js +0 -26
  392. package/dist/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  393. package/dist/Cesium/Workers/decodeI3S.js +0 -26
  394. package/dist/Cesium/Workers/gaussianSplatSorter.js +0 -26
  395. package/dist/Cesium/Workers/gaussianSplatTextureGenerator.js +0 -26
  396. package/dist/Cesium/Workers/incrementallyBuildTerrainPicker.js +0 -26
  397. package/dist/Cesium/Workers/transcodeKTX2.js +0 -56
  398. package/dist/Cesium/Workers/transferTypedArrayTest.js +0 -26
  399. package/dist/Cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  400. package/dist/Cesium/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +0 -26
  401. package/dist/Cesium/index.cjs +0 -17946
  402. package/dist/Cesium/index.js +0 -17946
  403. package/dist/chunks/sdk-runtime--Vql9ddn.js +0 -1408
  404. package/dist/chunks/sdk-vendor-DUEcGYjb.js +0 -36171
@@ -0,0 +1,1174 @@
1
+ import { R as be, e as M, V as oe, P as ke } from "./three-vendor-ox3_iXFc.js";
2
+ import { a as Ee, J as xe, l as X } from "./sdk-vendor-DYgn7sFs.js";
3
+ class At {
4
+ /**
5
+ * 构造函数
6
+ * @param camera - Three.js 相机对象(用于投影计算)
7
+ * @param renderer - Three.js 渲染器对象(用于获取画布尺寸)
8
+ * @param scene - Three.js 场景对象(用于屏幕坐标转世界坐标时的射线检测,可选)
9
+ */
10
+ constructor(e, n, r) {
11
+ this.camera = e, this.renderer = n, this.scene = r, this.raycaster = new be();
12
+ }
13
+ raycaster;
14
+ /**
15
+ * 将世界坐标转换为屏幕坐标(归一化坐标,范围 -1 到 1)
16
+ * @param worldPos - 世界空间中的3D坐标点
17
+ * @returns 归一化的屏幕坐标,x 和 y 的范围都是 -1 到 1
18
+ * x: -1 表示屏幕左边缘,1 表示屏幕右边缘
19
+ * y: -1 表示屏幕下边缘,1 表示屏幕上边缘
20
+ */
21
+ worldToScreenNormalized(e) {
22
+ const n = e.clone();
23
+ return n.project(this.camera), new M(n.x, n.y);
24
+ }
25
+ /**
26
+ * 将世界坐标转换为屏幕坐标(像素坐标)
27
+ * @param worldPos - 世界空间中的3D坐标点
28
+ * @returns 屏幕像素坐标,x 和 y 表示在画布上的实际像素位置
29
+ * x: 0 表示屏幕左边缘,width 表示屏幕右边缘
30
+ * y: 0 表示屏幕上边缘,height 表示屏幕下边缘
31
+ */
32
+ worldToScreen(e) {
33
+ const n = new oe();
34
+ return n.copy(e).project(this.camera), n.x = n.x * this.renderer.domElement.clientWidth * 0.5, n.y = -n.y * this.renderer.domElement.clientHeight * 0.5, n.z = (n.z + 1) * 0.5, n.x += this.renderer.domElement.clientWidth * 0.5, n.y += this.renderer.domElement.clientHeight * 0.5, new M(n.x, n.y);
35
+ }
36
+ /**
37
+ * 将世界坐标转换为屏幕坐标,仅在点位于当前相机可见裁剪空间内时返回结果。
38
+ * 透视相机背后的点经过 project 后会翻转到屏幕异常位置,这里提前过滤。
39
+ * @param worldPos - 世界空间中的 3D 坐标点
40
+ * @returns 屏幕像素坐标;如果点不可见或投影结果无效,返回 null
41
+ */
42
+ worldToScreenIfVisible(e) {
43
+ if (this.camera.updateMatrixWorld(!0), this.camera instanceof ke && e.clone().applyMatrix4(this.camera.matrixWorldInverse).z >= 0)
44
+ return null;
45
+ const n = e.clone().project(this.camera);
46
+ if (!Number.isFinite(n.x) || !Number.isFinite(n.y) || !Number.isFinite(n.z) || n.z < -1 || n.z > 1)
47
+ return null;
48
+ const r = this.renderer.domElement.clientWidth, i = this.renderer.domElement.clientHeight;
49
+ return new M(
50
+ n.x * r * 0.5 + r * 0.5,
51
+ -n.y * i * 0.5 + i * 0.5
52
+ );
53
+ }
54
+ /**
55
+ * 将屏幕坐标(像素坐标)转换为归一化坐标
56
+ * @param screenX - 屏幕像素 X 坐标
57
+ * @param screenY - 屏幕像素 Y 坐标
58
+ * @returns 归一化的屏幕坐标,范围 -1 到 1
59
+ */
60
+ screenToNormalized(e, n) {
61
+ const r = this.renderer.domElement.clientWidth, i = this.renderer.domElement.clientHeight, o = e / r * 2 - 1, s = -(n / i * 2 - 1);
62
+ return new M(o, s);
63
+ }
64
+ /**
65
+ * 将屏幕坐标(像素坐标)转换为世界坐标
66
+ * 使用射线检测,返回与场景中第一个相交对象的世界坐标点
67
+ * @param screenX - 屏幕像素 X 坐标
68
+ * @param screenY - 屏幕像素 Y 坐标
69
+ * @param objects - 可选,指定要检测的对象数组。如果不提供且 scene 存在,则检测场景中的所有对象
70
+ * @returns 世界坐标点,如果没有相交则返回 null
71
+ */
72
+ screenToWorld(e, n, r) {
73
+ if (!this.scene && !r)
74
+ return console.warn("WorldToScreen: 需要提供 scene 或 objects 参数才能进行屏幕坐标转世界坐标"), null;
75
+ const i = this.screenToNormalized(e, n);
76
+ this.raycaster.setFromCamera(i, this.camera);
77
+ const o = r || this.scene.children, s = this.raycaster.intersectObjects(o, !0);
78
+ return s.length > 0 ? s[0].point : null;
79
+ }
80
+ /**
81
+ * 将屏幕坐标转换为指定深度的世界坐标
82
+ * @param screenX - 屏幕像素 X 坐标
83
+ * @param screenY - 屏幕像素 Y 坐标
84
+ * @param depth - 沿射线方向的距离(世界单位)
85
+ * @returns 世界坐标点
86
+ */
87
+ screenToWorldWithDepth(e, n, r = 0) {
88
+ const i = this.screenToNormalized(e, n);
89
+ this.raycaster.setFromCamera(i, this.camera);
90
+ const o = new oe();
91
+ return this.raycaster.ray.at(r, o), o;
92
+ }
93
+ /**
94
+ * 更新相机引用(当相机发生变化时调用)
95
+ * @param camera - 新的相机对象
96
+ */
97
+ updateCamera(e) {
98
+ this.camera = e;
99
+ }
100
+ /**
101
+ * 更新渲染器引用(当渲染器发生变化时调用)
102
+ * @param renderer - 新的渲染器对象
103
+ */
104
+ updateRenderer(e) {
105
+ this.renderer = e;
106
+ }
107
+ /**
108
+ * 更新场景引用(当场景发生变化时调用)
109
+ * @param scene - 新的场景对象
110
+ */
111
+ updateScene(e) {
112
+ this.scene = e;
113
+ }
114
+ }
115
+ const ve = "iflowbim.cn", Te = 512, Ae = 128, Se = 150, Ce = 38, z = 290, F = 190;
116
+ class St {
117
+ THREE;
118
+ text;
119
+ scene;
120
+ camera;
121
+ material;
122
+ sprites = [];
123
+ size;
124
+ viewportWidth = 0;
125
+ viewportHeight = 0;
126
+ constructor(e, n = ve) {
127
+ this.THREE = e, this.text = n, this.scene = new e.Scene(), this.camera = new e.OrthographicCamera(0, 1, 1, 0, -10, 10), this.material = new e.SpriteMaterial({
128
+ map: new e.CanvasTexture(this.createTextTexture()),
129
+ transparent: !0,
130
+ opacity: 0.46,
131
+ depthTest: !1,
132
+ depthWrite: !1,
133
+ toneMapped: !1
134
+ }), this.size = new e.Vector2();
135
+ }
136
+ /**
137
+ * 在当前帧末尾把水印写入同一个 renderer canvas。
138
+ */
139
+ render(e) {
140
+ }
141
+ /**
142
+ * 释放水印内部纹理和材质,跟随宿主 renderer 生命周期销毁。
143
+ */
144
+ dispose() {
145
+ this.material.map?.dispose?.(), this.material.dispose?.(), this.sprites.length = 0;
146
+ }
147
+ createTextTexture() {
148
+ const e = document.createElement("canvas");
149
+ e.width = Te, e.height = Ae;
150
+ const n = e.getContext("2d");
151
+ return n && (n.clearRect(0, 0, e.width, e.height), n.textAlign = "center", n.textBaseline = "middle", n.font = "600 54px Arial, Helvetica, sans-serif", n.lineWidth = 3, n.strokeStyle = "rgba(0, 0, 0, 0.20)", n.fillStyle = "rgba(255, 255, 255, 0.24)", n.strokeText(this.text, e.width / 2, e.height / 2), n.fillText(this.text, e.width / 2, e.height / 2)), e;
152
+ }
153
+ updateLayout(e, n) {
154
+ if (e === this.viewportWidth && n === this.viewportHeight)
155
+ return;
156
+ this.viewportWidth = e, this.viewportHeight = n, this.camera.left = -e / 2, this.camera.right = e / 2, this.camera.top = n / 2, this.camera.bottom = -n / 2, this.camera.updateProjectionMatrix();
157
+ const r = Math.ceil(e / z) + 2, i = Math.ceil(n / F) + 2, o = r * i;
158
+ this.ensureSpriteCount(o);
159
+ let s = 0;
160
+ const a = -e / 2 - z / 2, c = -n / 2 - F / 2;
161
+ for (let l = 0; l < i; l += 1)
162
+ for (let d = 0; d < r; d += 1) {
163
+ const u = this.sprites[s], h = a + d * z + l % 2 * (z / 2), f = c + l * F;
164
+ u.position.set(h, f, 0), u.visible = !0, s += 1;
165
+ }
166
+ for (let l = s; l < this.sprites.length; l += 1)
167
+ this.sprites[l].visible = !1;
168
+ }
169
+ ensureSpriteCount(e) {
170
+ for (; this.sprites.length < e; ) {
171
+ const n = new this.THREE.Sprite(this.material);
172
+ n.scale.set(Se, Ce, 1), n.rotation.z = -0.32, n.renderOrder = 999999, this.scene.add(n), this.sprites.push(n);
173
+ }
174
+ }
175
+ }
176
+ function Le(t) {
177
+ return t instanceof Uint8Array || ArrayBuffer.isView(t) && t.constructor.name === "Uint8Array" && "BYTES_PER_ELEMENT" in t && t.BYTES_PER_ELEMENT === 1;
178
+ }
179
+ function se(t) {
180
+ if (typeof t != "number")
181
+ throw new TypeError("number expected, got " + typeof t);
182
+ if (!Number.isSafeInteger(t) || t < 0)
183
+ throw new RangeError("positive integer expected, got " + t);
184
+ }
185
+ function b(t, e, n = "") {
186
+ const r = Le(t), i = t?.length, o = e !== void 0;
187
+ if (!r || o && i !== e) {
188
+ const s = n && `"${n}" `, a = o ? ` of length ${e}` : "", c = r ? `length=${i}` : `type=${typeof t}`, l = s + "expected Uint8Array" + a + ", got " + c;
189
+ throw r ? new RangeError(l) : new TypeError(l);
190
+ }
191
+ return t;
192
+ }
193
+ function ce(t, e = !0) {
194
+ if (t.destroyed)
195
+ throw new Error("Hash instance has been destroyed");
196
+ if (e && t.finished)
197
+ throw new Error("Hash#digest() has already been called");
198
+ }
199
+ function Pe(t, e, n = !1) {
200
+ b(t, void 0, "output");
201
+ const r = e.outputLen;
202
+ if (t.length < r)
203
+ throw new RangeError("digestInto() expects output buffer of length at least " + r);
204
+ if (n && !P(t))
205
+ throw new Error("invalid output, must be aligned");
206
+ }
207
+ function Ue(t) {
208
+ return new Uint8Array(t.buffer, t.byteOffset, t.byteLength);
209
+ }
210
+ function v(t) {
211
+ return new Uint32Array(t.buffer, t.byteOffset, Math.floor(t.byteLength / 4));
212
+ }
213
+ function x(...t) {
214
+ for (let e = 0; e < t.length; e++)
215
+ t[e].fill(0);
216
+ }
217
+ function D(t) {
218
+ return new DataView(t.buffer, t.byteOffset, t.byteLength);
219
+ }
220
+ const te = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68, he = (t) => t << 24 & 4278190080 | t << 8 & 16711680 | t >>> 8 & 65280 | t >>> 24 & 255, y = te ? (t) => t : (t) => he(t) >>> 0, Ie = (t) => {
221
+ for (let e = 0; e < t.length; e++)
222
+ t[e] = he(t[e]);
223
+ return t;
224
+ }, ne = te ? (t) => t : Ie;
225
+ function Be(t, e) {
226
+ if (t.length !== e.length)
227
+ return !1;
228
+ let n = 0;
229
+ for (let r = 0; r < t.length; r++)
230
+ n |= t[r] ^ e[r];
231
+ return n === 0;
232
+ }
233
+ function Me(t, e, n) {
234
+ const r = e, i = n || (() => []), o = (a, c) => r(c, ...i(a)).update(a).digest(), s = r(new Uint8Array(t), ...i(new Uint8Array(0)));
235
+ return o.outputLen = s.outputLen, o.blockLen = s.blockLen, o.create = (a, ...c) => r(a, ...c), o;
236
+ }
237
+ const ze = /* @__NO_SIDE_EFFECTS__ */ (t, e) => {
238
+ function n(r, ...i) {
239
+ if (b(r, void 0, "key"), t.nonceLength !== void 0) {
240
+ const d = i[0];
241
+ b(d, t.varSizeNonce ? void 0 : t.nonceLength, "nonce");
242
+ }
243
+ const o = t.tagLength;
244
+ o && i[1] !== void 0 && b(i[1], void 0, "AAD");
245
+ const s = e(r, ...i), a = (d, u) => {
246
+ if (u !== void 0) {
247
+ if (d !== 2)
248
+ throw new Error("cipher output not supported");
249
+ b(u, void 0, "output");
250
+ }
251
+ };
252
+ let c = !1;
253
+ return {
254
+ encrypt(d, u) {
255
+ if (c)
256
+ throw new Error("cannot encrypt() twice with same key + nonce");
257
+ return c = !0, b(d), a(s.encrypt.length, u), s.encrypt(d, u);
258
+ },
259
+ decrypt(d, u) {
260
+ if (b(d), o && d.length < o)
261
+ throw new Error('"ciphertext" expected length bigger than tagLength=' + o);
262
+ return a(s.decrypt.length, u), s.decrypt(d, u);
263
+ }
264
+ };
265
+ }
266
+ return Object.assign(n, t), n;
267
+ };
268
+ function Re(t, e, n = !0) {
269
+ if (e === void 0)
270
+ return new Uint8Array(t);
271
+ if (b(e, void 0, "output"), e.length !== t)
272
+ throw new Error('"output" expected Uint8Array of length ' + t + ", got: " + e.length);
273
+ if (n && !P(e))
274
+ throw new Error("invalid output, must be aligned");
275
+ return e;
276
+ }
277
+ function Ke(t, e, n) {
278
+ se(t), se(e);
279
+ const r = new Uint8Array(16), i = D(r);
280
+ return i.setBigUint64(0, BigInt(e), n), i.setBigUint64(8, BigInt(t), n), r;
281
+ }
282
+ function P(t) {
283
+ return t.byteOffset % 4 === 0;
284
+ }
285
+ function U(t) {
286
+ return Uint8Array.from(b(t));
287
+ }
288
+ const A = 16, fe = /* @__PURE__ */ new Uint8Array(16), C = /* @__PURE__ */ v(fe), _e = 225, We = (t, e, n, r) => {
289
+ const i = r & 1;
290
+ return {
291
+ s3: n << 31 | r >>> 1,
292
+ s2: e << 31 | n >>> 1,
293
+ s1: t << 31 | e >>> 1,
294
+ // NIST SP 800-38D §6.3 applies `V >> 1` and XORs R on carry. In this
295
+ // 4x32-bit split, R = 0xe1 || 0^120 lives in the top byte of s0.
296
+ s0: t >>> 1 ^ _e << 24 & -(i & 1)
297
+ // reduce % poly
298
+ };
299
+ }, R = (t) => (t >>> 0 & 255) << 24 | (t >>> 8 & 255) << 16 | (t >>> 16 & 255) << 8 | t >>> 24 & 255 | 0, Oe = (t) => t > 64 * 1024 ? 8 : t > 1024 ? 4 : 2;
300
+ class $e {
301
+ blockLen = A;
302
+ outputLen = A;
303
+ s0 = 0;
304
+ s1 = 0;
305
+ s2 = 0;
306
+ s3 = 0;
307
+ finished = !1;
308
+ destroyed = !1;
309
+ t;
310
+ W;
311
+ windowSize;
312
+ // We select bits per window adaptively based on expectedLength
313
+ constructor(e, n) {
314
+ b(e, 16, "key"), e = U(e);
315
+ const r = D(e);
316
+ let i = r.getUint32(0, !1), o = r.getUint32(4, !1), s = r.getUint32(8, !1), a = r.getUint32(12, !1);
317
+ const c = [];
318
+ for (let p = 0; p < 128; p++)
319
+ c.push({ s0: R(i), s1: R(o), s2: R(s), s3: R(a) }), { s0: i, s1: o, s2: s, s3: a } = We(i, o, s, a);
320
+ const l = Oe(n || 1024);
321
+ if (![1, 2, 4, 8].includes(l))
322
+ throw new Error("ghash: invalid window size, expected 2, 4 or 8");
323
+ this.W = l;
324
+ const u = 128 / l, h = this.windowSize = 2 ** l, f = [];
325
+ for (let p = 0; p < u; p++)
326
+ for (let g = 0; g < h; g++) {
327
+ let w = 0, k = 0, m = 0, T = 0;
328
+ for (let E = 0; E < l; E++) {
329
+ if (!(g >>> l - E - 1 & 1))
330
+ continue;
331
+ const { s0: G, s1: me, s2: ye, s3: we } = c[l * p + E];
332
+ w ^= G, k ^= me, m ^= ye, T ^= we;
333
+ }
334
+ f.push({ s0: w, s1: k, s2: m, s3: T });
335
+ }
336
+ this.t = f;
337
+ }
338
+ _updateBlock(e, n, r, i) {
339
+ e ^= this.s0, n ^= this.s1, r ^= this.s2, i ^= this.s3;
340
+ const { W: o, t: s, windowSize: a } = this;
341
+ let c = 0, l = 0, d = 0, u = 0;
342
+ const h = (1 << o) - 1;
343
+ let f = 0;
344
+ for (const p of [e, n, r, i])
345
+ for (let g = 0; g < 4; g++) {
346
+ const w = p >>> 8 * g & 255;
347
+ for (let k = 8 / o - 1; k >= 0; k--) {
348
+ const m = w >>> o * k & h, { s0: T, s1: E, s2: S, s3: G } = s[f * a + m];
349
+ c ^= T, l ^= E, d ^= S, u ^= G, f += 1;
350
+ }
351
+ }
352
+ this.s0 = c, this.s1 = l, this.s2 = d, this.s3 = u;
353
+ }
354
+ update(e) {
355
+ ce(this), b(e), e = U(e);
356
+ const n = v(e), r = Math.floor(e.length / A), i = e.length % A;
357
+ for (let o = 0; o < r; o++)
358
+ this._updateBlock(y(n[o * 4 + 0]), y(n[o * 4 + 1]), y(n[o * 4 + 2]), y(n[o * 4 + 3]));
359
+ return i && (fe.set(e.subarray(r * A)), this._updateBlock(y(C[0]), y(C[1]), y(C[2]), y(C[3])), x(C)), this;
360
+ }
361
+ destroy() {
362
+ this.destroyed = !0;
363
+ const { t: e } = this;
364
+ for (const n of e)
365
+ n.s0 = 0, n.s1 = 0, n.s2 = 0, n.s3 = 0;
366
+ }
367
+ digestInto(e) {
368
+ ce(this), Pe(e, this, !0), this.finished = !0;
369
+ const { s0: n, s1: r, s2: i, s3: o } = this, s = v(e);
370
+ s[0] = n, s[1] = r, s[2] = i, s[3] = o, ne(s);
371
+ }
372
+ digest() {
373
+ const e = new Uint8Array(A);
374
+ return this.digestInto(e), this.destroy(), e;
375
+ }
376
+ }
377
+ const ae = /* @__PURE__ */ Me(16, (t, e) => new $e(t, e), (t) => [t.length]), Q = 16, je = 4, K = /* @__PURE__ */ new Uint8Array(Q), Ne = 283;
378
+ function Ve(t) {
379
+ if (![16, 24, 32].includes(t.length))
380
+ throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length=' + t.length);
381
+ }
382
+ function re(t) {
383
+ return t << 1 ^ Ne & -(t >> 7);
384
+ }
385
+ function le(t, e) {
386
+ let n = 0;
387
+ for (; e > 0; e >>= 1)
388
+ n ^= t & -(e & 1), t = re(t);
389
+ return n;
390
+ }
391
+ const He = /* @__PURE__ */ (() => {
392
+ const t = new Uint8Array(256);
393
+ for (let n = 0, r = 1; n < 256; n++, r ^= re(r))
394
+ t[n] = r;
395
+ const e = new Uint8Array(256);
396
+ e[0] = 99;
397
+ for (let n = 0; n < 255; n++) {
398
+ let r = t[255 - n];
399
+ r |= r << 8, e[t[n]] = (r ^ r >> 4 ^ r >> 5 ^ r >> 6 ^ r >> 7 ^ 99) & 255;
400
+ }
401
+ return x(t), e;
402
+ })(), De = (t) => t << 24 | t >>> 8, J = (t) => t << 8 | t >>> 24;
403
+ function Ge(t, e) {
404
+ if (t.length !== 256)
405
+ throw new Error("Wrong sbox length");
406
+ const n = new Uint32Array(256).map((l, d) => e(t[d])), r = n.map(J), i = r.map(J), o = i.map(J), s = new Uint32Array(256 * 256), a = new Uint32Array(256 * 256), c = new Uint16Array(256 * 256);
407
+ for (let l = 0; l < 256; l++)
408
+ for (let d = 0; d < 256; d++) {
409
+ const u = l * 256 + d;
410
+ s[u] = n[l] ^ r[d], a[u] = i[l] ^ o[d], c[u] = t[l] << 8 | t[d];
411
+ }
412
+ return { sbox: t, sbox2: c, T0: n, T1: r, T2: i, T3: o, T01: s, T23: a };
413
+ }
414
+ const pe = /* @__PURE__ */ Ge(He, (t) => le(t, 3) << 24 | t << 16 | t << 8 | le(t, 2)), Fe = /* @__PURE__ */ (() => {
415
+ const t = new Uint8Array(16);
416
+ for (let e = 0, n = 1; e < 16; e++, n = re(n))
417
+ t[e] = n;
418
+ return t;
419
+ })();
420
+ function Je(t) {
421
+ b(t);
422
+ const e = t.length;
423
+ Ve(t);
424
+ const { sbox2: n } = pe, r = [];
425
+ (!te || !P(t)) && r.push(t = U(t));
426
+ const i = ne(v(t)), o = i.length, s = (c) => L(n, c, c, c, c), a = new Uint32Array(e + 28);
427
+ a.set(i);
428
+ for (let c = o; c < a.length; c++) {
429
+ let l = a[c - 1];
430
+ c % o === 0 ? l = s(De(l)) ^ Fe[c / o - 1] : o > 6 && c % o === 4 && (l = s(l)), a[c] = a[c - o] ^ l;
431
+ }
432
+ return x(...r), a;
433
+ }
434
+ function _(t, e, n, r, i, o) {
435
+ return t[n << 8 & 65280 | r >>> 8 & 255] ^ e[i >>> 8 & 65280 | o >>> 24 & 255];
436
+ }
437
+ function L(t, e, n, r, i) {
438
+ return t[e & 255 | n & 65280] | t[r >>> 16 & 255 | i >>> 16 & 65280] << 16;
439
+ }
440
+ function de(t, e, n, r, i) {
441
+ const { sbox2: o, T01: s, T23: a } = pe;
442
+ let c = 0;
443
+ e ^= t[c++], n ^= t[c++], r ^= t[c++], i ^= t[c++];
444
+ const l = t.length / 4 - 2;
445
+ for (let p = 0; p < l; p++) {
446
+ const g = t[c++] ^ _(s, a, e, n, r, i), w = t[c++] ^ _(s, a, n, r, i, e), k = t[c++] ^ _(s, a, r, i, e, n), m = t[c++] ^ _(s, a, i, e, n, r);
447
+ e = g, n = w, r = k, i = m;
448
+ }
449
+ const d = t[c++] ^ L(o, e, n, r, i), u = t[c++] ^ L(o, n, r, i, e), h = t[c++] ^ L(o, r, i, e, n), f = t[c++] ^ L(o, i, e, n, r);
450
+ return { s0: d, s1: u, s2: h, s3: f };
451
+ }
452
+ function W(t, e, n, r, i) {
453
+ b(n, Q, "nonce"), b(r), i = Re(r.length, i);
454
+ const o = n, s = v(o), a = D(o), c = v(r), l = v(i), d = e ? 0 : 12, u = r.length;
455
+ let h = a.getUint32(d, e), { s0: f, s1: p, s2: g, s3: w } = de(t, y(s[0]), y(s[1]), y(s[2]), y(s[3]));
456
+ for (let m = 0; m + 4 <= c.length; m += 4)
457
+ l[m + 0] = c[m + 0] ^ y(f), l[m + 1] = c[m + 1] ^ y(p), l[m + 2] = c[m + 2] ^ y(g), l[m + 3] = c[m + 3] ^ y(w), h = h + 1 >>> 0, a.setUint32(d, h, e), { s0: f, s1: p, s2: g, s3: w } = de(t, y(s[0]), y(s[1]), y(s[2]), y(s[3]));
458
+ const k = Q * Math.floor(c.length / je);
459
+ if (k < u) {
460
+ const m = new Uint32Array([f, p, g, w]);
461
+ ne(m);
462
+ const T = Ue(m);
463
+ for (let E = k, S = 0; E < u; E++, S++)
464
+ i[E] = r[E] ^ T[S];
465
+ x(m);
466
+ }
467
+ return i;
468
+ }
469
+ function Ye(t, e, n, r, i) {
470
+ const o = i ? i.length : 0, s = t.create(n, r.length + o);
471
+ i && s.update(i);
472
+ const a = Ke(8 * r.length, 8 * o, e);
473
+ s.update(r), s.update(a);
474
+ const c = s.digest();
475
+ return x(a), c;
476
+ }
477
+ const $ = /* @__PURE__ */ ze({ blockSize: 16, nonceLength: 12, tagLength: 16, varSizeNonce: !0 }, function(e, n, r) {
478
+ if (n.length < 8)
479
+ throw new Error("aes/gcm: invalid nonce length");
480
+ const i = 16;
481
+ function o(a, c, l) {
482
+ const d = Ye(ae, !1, a, l, r);
483
+ for (let u = 0; u < c.length; u++)
484
+ d[u] ^= c[u];
485
+ return d;
486
+ }
487
+ function s() {
488
+ const a = Je(e), c = K.slice(), l = K.slice();
489
+ if (W(a, !1, l, l, c), n.length === 12)
490
+ l.set(n);
491
+ else {
492
+ const u = K.slice();
493
+ D(u).setBigUint64(8, BigInt(n.length * 8), !1);
494
+ const f = ae.create(c).update(n).update(u);
495
+ f.digestInto(l), f.destroy();
496
+ }
497
+ const d = W(a, !1, l, K);
498
+ return { xk: a, authKey: c, counter: l, tagMask: d };
499
+ }
500
+ return {
501
+ encrypt(a) {
502
+ const { xk: c, authKey: l, counter: d, tagMask: u } = s(), h = new Uint8Array(a.length + i), f = [c, l, d, u];
503
+ P(a) || f.push(a = U(a)), W(c, !1, d, a, h.subarray(0, a.length));
504
+ const p = o(l, u, h.subarray(0, h.length - i));
505
+ return f.push(p), h.set(p, a.length), x(...f), h;
506
+ },
507
+ decrypt(a) {
508
+ const { xk: c, authKey: l, counter: d, tagMask: u } = s(), h = [c, l, u, d];
509
+ P(a) || h.push(a = U(a));
510
+ const f = a.subarray(0, -i), p = a.subarray(-i), g = o(l, u, f);
511
+ if (h.push(g), !Be(g, p))
512
+ throw x(...h), new Error("aes/gcm: invalid ghash tag");
513
+ const w = W(c, !1, d, f);
514
+ return x(...h), w;
515
+ }
516
+ };
517
+ });
518
+ class j {
519
+ static MAGIC = new TextEncoder().encode("BIMGCM01");
520
+ /**
521
+ * 检测二进制数据是否为 .pzenc 加密格式
522
+ * @param data 原始二进制数据
523
+ * @returns 是否为加密文件
524
+ */
525
+ static isEncrypted(e) {
526
+ if (e.byteLength < 8) return !1;
527
+ const n = new Uint8Array(e);
528
+ for (let r = 0; r < 8; r++)
529
+ if (n[r] !== j.MAGIC[r]) return !1;
530
+ return !0;
531
+ }
532
+ /**
533
+ * 解密 .pzenc 自定义加密格式为 zip 二进制数据
534
+ *
535
+ * 二进制布局:
536
+ * [0-7] magic "BIMGCM01" (8 字节)
537
+ * [8] version (1 字节, 当前必须为 1)
538
+ * [9] nonceLen (1 字节)
539
+ * [10] tagLen (1 字节)
540
+ * [11..] nonce || tag || ciphertext
541
+ *
542
+ * @param encryptedArrayBuffer 加密的原始二进制数据
543
+ * @param keyBase64 Base64 编码的 AES-256 密钥 (32 字节)
544
+ * @returns 解密后的 zip 二进制数据 (Uint8Array)
545
+ */
546
+ static async decryptPzEnc(e, n) {
547
+ const r = new Uint8Array(e), i = new TextEncoder().encode("BIMGCM01");
548
+ for (let g = 0; g < i.length; g++)
549
+ if (r[g] !== i[g])
550
+ throw new Error("magic 不匹配: 不是有效的 pzenc 文件");
551
+ const o = r[8];
552
+ if (o !== 1)
553
+ throw new Error(`不支持的 pzenc 版本: ${o}`);
554
+ const s = r[9], a = r[10], c = 11, l = r.slice(c, c + s), d = r.slice(c + s, c + s + a), u = r.slice(c + s + a), h = Ze(u, d), f = qe(n);
555
+ if (f.length !== 32)
556
+ throw new Error("AES-256 密钥必须是 32 字节");
557
+ const p = r.slice(0, c);
558
+ if (globalThis.crypto?.subtle) {
559
+ const g = await globalThis.crypto.subtle.importKey(
560
+ "raw",
561
+ f.buffer,
562
+ { name: "AES-GCM" },
563
+ !1,
564
+ ["decrypt"]
565
+ ), w = await globalThis.crypto.subtle.decrypt(
566
+ {
567
+ name: "AES-GCM",
568
+ iv: l.buffer,
569
+ additionalData: p.buffer,
570
+ tagLength: a * 8
571
+ },
572
+ g,
573
+ h.buffer
574
+ );
575
+ return new Uint8Array(w);
576
+ }
577
+ return Xe(f, l, p, h, a);
578
+ }
579
+ }
580
+ function qe(t) {
581
+ const e = atob(t), n = new Uint8Array(e.length);
582
+ for (let r = 0; r < e.length; r++)
583
+ n[r] = e.codePointAt(r);
584
+ return n;
585
+ }
586
+ function Ze(t, e) {
587
+ const n = new Uint8Array(t.length + e.length);
588
+ return n.set(t, 0), n.set(e, t.length), n;
589
+ }
590
+ function Xe(t, e, n, r, i) {
591
+ if (i !== $.tagLength)
592
+ throw new Error(`当前 HTTP 回退解密仅支持 ${$.tagLength} 字节 AES-GCM tag,当前文件 tagLen: ${i}`);
593
+ return $(t, e, n).decrypt(r);
594
+ }
595
+ function Ct(t, e, n, r) {
596
+ Ee({
597
+ method: "get",
598
+ responseType: "arraybuffer",
599
+ url: t
600
+ }).then(async (o) => {
601
+ let s = o.data;
602
+ r && j.isEncrypted(o.data) && (s = await j.decryptPzEnc(o.data, r)), xe.loadAsync(s).then((a) => {
603
+ for (let c in a.files) {
604
+ const l = a.file(a.files[c].name);
605
+ l && l.async("blob").then((d) => {
606
+ i(d, "utf-8", function(u, h) {
607
+ e(h);
608
+ });
609
+ }).catch(() => {
610
+ n();
611
+ });
612
+ }
613
+ }).catch(() => {
614
+ n();
615
+ });
616
+ }).catch(() => {
617
+ n();
618
+ });
619
+ function i(o, s, a) {
620
+ var c = new FileReader(), l = new Blob([o]);
621
+ c.onload = function(d) {
622
+ a(null, d.target.result);
623
+ }, c.onerror = function() {
624
+ a(null, null);
625
+ }, c.readAsText(l, s);
626
+ }
627
+ }
628
+ function Lt() {
629
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(t) {
630
+ var e = Math.random() * 16 | 0, n = t == "x" ? e : e & 3 | 8;
631
+ return n.toString(16);
632
+ });
633
+ }
634
+ class Pt {
635
+ container;
636
+ labelContainer;
637
+ projectCoordinate;
638
+ pickCoordinate;
639
+ emitEvent;
640
+ labels = /* @__PURE__ */ new Map();
641
+ clickCallbacks = /* @__PURE__ */ new Set();
642
+ pickResolver = null;
643
+ isPicking = !1;
644
+ constructor(e) {
645
+ this.container = e.container, this.projectCoordinate = e.projectCoordinate, this.pickCoordinate = e.pickCoordinate, this.emitEvent = e.emitEvent, this.labelContainer = document.createElement("div"), this.labelContainer.className = e.className ?? "bim-engine-label-container", this.labelContainer.style.cssText = [
646
+ "position:absolute",
647
+ "left:0",
648
+ "top:0",
649
+ "width:100%",
650
+ "height:100%",
651
+ "pointer-events:none",
652
+ "overflow:hidden",
653
+ "z-index:1200"
654
+ ].join(";"), this.container.appendChild(this.labelContainer);
655
+ }
656
+ /**
657
+ * 开启一次选点,下一次画布点击会返回当前引擎坐标。
658
+ */
659
+ pickPoint() {
660
+ return this.cancelPick(), this.isPicking = !0, this.container.style.cursor = "crosshair", this.addPickBlockers(), this.container.addEventListener("click", this.handlePickClick, !0), new Promise((e) => {
661
+ this.pickResolver = e;
662
+ });
663
+ }
664
+ /**
665
+ * 兼容回调式调用,便于旧业务页面直接绑定按钮。
666
+ */
667
+ startPickPoint(e) {
668
+ const n = this.pickPoint();
669
+ return e && n.then(e), n;
670
+ }
671
+ /**
672
+ * 创建标签,返回最终标签 id。
673
+ */
674
+ createLabel(e) {
675
+ const n = e.id ?? this.createId();
676
+ if (this.labels.has(n))
677
+ throw new Error(`LabelManager: label "${n}" already exists`);
678
+ const r = this.createElement(n), i = {
679
+ id: n,
680
+ coordinate: { ...e.coordinate },
681
+ icon: e.icon,
682
+ name: e.name,
683
+ data: e.data,
684
+ size: e.iconSize ?? e.size ?? 28,
685
+ visible: e.visible ?? !0,
686
+ element: r
687
+ };
688
+ return this.labels.set(n, i), this.labelContainer.appendChild(r), this.renderLabel(i), this.updateLabelPosition(i), this.emitEvent?.("label-created", this.toPayload(i)), n;
689
+ }
690
+ /**
691
+ * 更新标签,支持按需修改坐标、图标、名称和业务数据。
692
+ */
693
+ updateLabel(e, n) {
694
+ const r = this.labels.get(e);
695
+ return r ? (n.coordinate && (r.coordinate = { ...n.coordinate }), n.icon !== void 0 && (r.icon = n.icon), n.name !== void 0 && (r.name = n.name), n.data !== void 0 && (r.data = n.data), n.iconSize !== void 0 && (r.size = n.iconSize), n.size !== void 0 && (r.size = n.size), n.visible !== void 0 && (r.visible = n.visible), this.renderLabel(r), this.updateLabelPosition(r), this.emitEvent?.("label-updated", this.toPayload(r)), !0) : !1;
696
+ }
697
+ /**
698
+ * 删除指定标签。
699
+ */
700
+ deleteLabel(e) {
701
+ const n = this.labels.get(e);
702
+ return n ? (n.element.remove(), this.labels.delete(e), this.emitEvent?.("label-deleted", { id: e }), !0) : !1;
703
+ }
704
+ removeLabel(e) {
705
+ return this.deleteLabel(e);
706
+ }
707
+ clearLabels() {
708
+ Array.from(this.labels.keys()).forEach((e) => this.deleteLabel(e));
709
+ }
710
+ getLabel(e) {
711
+ return this.labels.get(e);
712
+ }
713
+ getLabels() {
714
+ return Array.from(this.labels.values());
715
+ }
716
+ onLabelClick(e) {
717
+ return this.clickCallbacks.add(e), () => this.offLabelClick(e);
718
+ }
719
+ offLabelClick(e) {
720
+ this.clickCallbacks.delete(e);
721
+ }
722
+ /**
723
+ * 每帧同步标签屏幕位置。
724
+ */
725
+ update() {
726
+ this.labels.forEach((e) => this.updateLabelPosition(e));
727
+ }
728
+ cancelPick() {
729
+ this.isPicking && (this.isPicking = !1, this.container.style.cursor = "", this.removePickBlockers(), this.container.removeEventListener("click", this.handlePickClick, !0), this.pickResolver?.(null), this.pickResolver = null);
730
+ }
731
+ dispose() {
732
+ this.cancelPick(), this.clearLabels(), this.clickCallbacks.clear(), this.labelContainer.remove();
733
+ }
734
+ createElement(e) {
735
+ const n = document.createElement("div");
736
+ return n.dataset.labelId = e, n.style.cssText = [
737
+ "position:absolute",
738
+ "display:flex",
739
+ "flex-direction:column",
740
+ "align-items:center",
741
+ "gap:5px",
742
+ "transform:translate(-50%, -100%)",
743
+ "pointer-events:auto",
744
+ "cursor:pointer",
745
+ "user-select:none",
746
+ "white-space:nowrap",
747
+ "font:12px/1.2 -apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif"
748
+ ].join(";"), n.addEventListener("click", (r) => {
749
+ r.preventDefault(), r.stopPropagation();
750
+ const i = this.labels.get(e);
751
+ if (!i) return;
752
+ const o = {
753
+ id: e,
754
+ label: i,
755
+ coordinate: i.coordinate,
756
+ originalEvent: r
757
+ };
758
+ this.clickCallbacks.forEach((s) => s(o)), this.emitEvent?.("label-click", o);
759
+ }), n;
760
+ }
761
+ renderLabel(e) {
762
+ e.element.innerHTML = "";
763
+ const n = document.createElement("img"), r = this.normalizeIconSize(e.size);
764
+ n.src = e.icon, n.alt = e.name, n.style.cssText = [
765
+ `width:${r.width}px`,
766
+ `height:${r.height}px`,
767
+ "object-fit:contain",
768
+ "display:block",
769
+ "filter:drop-shadow(0 3px 5px rgba(0,0,0,.32))"
770
+ ].join(";");
771
+ const i = document.createElement("span");
772
+ i.textContent = e.name, i.style.cssText = [
773
+ "max-width:160px",
774
+ "overflow:hidden",
775
+ "text-overflow:ellipsis",
776
+ "padding:5px 9px",
777
+ "border-radius:6px",
778
+ "background:rgba(15,23,42,.88)",
779
+ "color:#fff",
780
+ "border:1px solid rgba(255,255,255,.16)",
781
+ "box-shadow:0 3px 10px rgba(0,0,0,.24)"
782
+ ].join(";"), e.element.title = e.name, e.element.appendChild(i), e.element.appendChild(n);
783
+ }
784
+ updateLabelPosition(e) {
785
+ const n = this.projectCoordinate(e.coordinate);
786
+ if (!(e.visible && n != null && n.visible !== !1) || !n) {
787
+ e.element.style.display = "none";
788
+ return;
789
+ }
790
+ e.element.style.display = "flex", e.element.style.left = `${n.x}px`, e.element.style.top = `${n.y}px`;
791
+ }
792
+ handlePickClick = (e) => {
793
+ e.preventDefault(), e.stopImmediatePropagation();
794
+ const n = this.pickCoordinate(e);
795
+ this.isPicking = !1, this.container.style.cursor = "", this.removePickBlockers(), this.container.removeEventListener("click", this.handlePickClick, !0), this.pickResolver?.(n), this.pickResolver = null, n && this.emitEvent?.("label-pick", n);
796
+ };
797
+ toPayload(e) {
798
+ return {
799
+ id: e.id,
800
+ coordinate: e.coordinate,
801
+ icon: e.icon,
802
+ name: e.name,
803
+ data: e.data,
804
+ size: e.size,
805
+ visible: e.visible
806
+ };
807
+ }
808
+ normalizeIconSize(e) {
809
+ return typeof e == "number" ? {
810
+ width: e,
811
+ height: e
812
+ } : {
813
+ width: this.normalizeSizeValue(e.width, 28),
814
+ height: this.normalizeSizeValue(e.height, 28)
815
+ };
816
+ }
817
+ normalizeSizeValue(e, n) {
818
+ return Number.isFinite(e) && e > 0 ? e : n;
819
+ }
820
+ createId() {
821
+ return `label-${Date.now()}-${Math.random().toString(16).slice(2)}`;
822
+ }
823
+ addPickBlockers() {
824
+ this.container.addEventListener("mousedown", this.blockPickInteraction, !0), this.container.addEventListener("mouseup", this.blockPickInteraction, !0), this.container.addEventListener("touchstart", this.blockPickInteraction, !0), this.container.addEventListener("touchmove", this.blockPickInteraction, !0), this.container.addEventListener("touchend", this.blockPickInteraction, !0);
825
+ }
826
+ removePickBlockers() {
827
+ this.container.removeEventListener("mousedown", this.blockPickInteraction, !0), this.container.removeEventListener("mouseup", this.blockPickInteraction, !0), this.container.removeEventListener("touchstart", this.blockPickInteraction, !0), this.container.removeEventListener("touchmove", this.blockPickInteraction, !0), this.container.removeEventListener("touchend", this.blockPickInteraction, !0);
828
+ }
829
+ blockPickInteraction = (e) => {
830
+ e.stopImmediatePropagation();
831
+ };
832
+ }
833
+ const Qe = "3.11.4", et = {
834
+ version: Qe
835
+ }, N = et.version;
836
+ function ie() {
837
+ const t = globalThis.crypto?.subtle;
838
+ if (!t)
839
+ throw new Error("[BimEngine] Web Crypto API is required for secure sdkAuth credentials mode");
840
+ return t;
841
+ }
842
+ function I(t) {
843
+ return new TextEncoder().encode(t);
844
+ }
845
+ function B(t) {
846
+ return t.buffer.slice(t.byteOffset, t.byteOffset + t.byteLength);
847
+ }
848
+ function ue(t) {
849
+ let e = "";
850
+ return t.forEach((n) => {
851
+ e += String.fromCharCode(n);
852
+ }), btoa(e);
853
+ }
854
+ function tt(t) {
855
+ const e = t.getUTCFullYear(), n = String(t.getUTCMonth() + 1).padStart(2, "0"), r = String(t.getUTCDate()).padStart(2, "0");
856
+ return `${e}${n}${r}`;
857
+ }
858
+ async function nt(t) {
859
+ const e = await ie().digest("SHA-256", B(I(t)));
860
+ return Array.from(new Uint8Array(e)).map((n) => n.toString(16).padStart(2, "0")).join("");
861
+ }
862
+ async function rt(t, e) {
863
+ const n = ie(), r = await n.importKey("raw", B(t), { name: "HMAC", hash: "SHA-256" }, !1, ["sign"]);
864
+ return n.sign("HMAC", r, B(I(e)));
865
+ }
866
+ function it(t) {
867
+ return I(
868
+ [t.appId, t.engineType, t.requestDate, String(t.timestamp), t.nonce].join("|")
869
+ );
870
+ }
871
+ async function ot(t) {
872
+ const e = ie(), n = /* @__PURE__ */ new Date(), r = n.getTime(), i = tt(n), o = globalThis.crypto.randomUUID(), s = globalThis.crypto.getRandomValues(new Uint8Array(12)), a = await nt(t.appSecret), c = await rt(I(a), i), l = await e.importKey("raw", c, "AES-GCM", !1, ["encrypt"]), d = JSON.stringify({
873
+ appKey: t.appKey,
874
+ appSecret: t.appSecret
875
+ }), u = await e.encrypt(
876
+ {
877
+ name: "AES-GCM",
878
+ iv: s,
879
+ additionalData: B(it({
880
+ appId: t.appId,
881
+ engineType: t.engineType,
882
+ requestDate: i,
883
+ timestamp: r,
884
+ nonce: o
885
+ })),
886
+ tagLength: 128
887
+ },
888
+ l,
889
+ B(I(d))
890
+ );
891
+ return {
892
+ appId: t.appId,
893
+ engineType: t.engineType,
894
+ requestDate: i,
895
+ timestamp: r,
896
+ nonce: o,
897
+ iv: ue(s),
898
+ cipherText: ue(new Uint8Array(u)),
899
+ sdkVersion: t.sdkVersion,
900
+ origin: t.origin,
901
+ product: t.product
902
+ };
903
+ }
904
+ const Y = /* @__PURE__ */ new Map();
905
+ function V(t) {
906
+ return t.replace(/\/+$/, "");
907
+ }
908
+ function H(t) {
909
+ if (t) return t;
910
+ if (typeof window < "u" && typeof window.location?.origin == "string")
911
+ return window.location.origin;
912
+ }
913
+ function st(t, e) {
914
+ return JSON.stringify({
915
+ endpoint: V(t.endpoint),
916
+ token: t.token ?? "",
917
+ appId: t.appId ?? "",
918
+ appKey: t.appKey ?? "",
919
+ appSecret: t.appSecret ?? "",
920
+ origin: H(t.origin) ?? "",
921
+ product: t.product ?? "",
922
+ engineType: e,
923
+ sdkVersion: N
924
+ });
925
+ }
926
+ async function ee(t, e, n) {
927
+ const r = typeof AbortController < "u" ? new AbortController() : void 0, i = r ? setTimeout(() => r.abort(), n) : void 0;
928
+ try {
929
+ const o = await fetch(t, {
930
+ method: "POST",
931
+ headers: {
932
+ "Content-Type": "application/json"
933
+ },
934
+ body: JSON.stringify(e),
935
+ signal: r?.signal
936
+ }), s = await o.json().catch(() => ({}));
937
+ if (!o.ok) {
938
+ const a = s?.error?.message ?? s?.message ?? `SDK authentication failed with status ${o.status}`;
939
+ throw new Error(a);
940
+ }
941
+ return s;
942
+ } finally {
943
+ i != null && clearTimeout(i);
944
+ }
945
+ }
946
+ async function ct(t, e) {
947
+ const n = await ee(`${V(t.endpoint)}/oauth/sdk-verify`, {
948
+ sdkToken: t.token,
949
+ engineType: e,
950
+ sdkVersion: N,
951
+ origin: H(t.origin),
952
+ product: t.product
953
+ }, t.timeoutMs ?? 8e3);
954
+ return n.sdkToken = t.token, n;
955
+ }
956
+ async function at(t, e) {
957
+ const n = await ot({
958
+ appId: t.appId,
959
+ appKey: t.appKey,
960
+ appSecret: t.appSecret,
961
+ engineType: e,
962
+ sdkVersion: N,
963
+ origin: H(t.origin),
964
+ product: t.product
965
+ }), r = await ee(
966
+ `${V(t.endpoint)}/oauth/sdk-token/secure`,
967
+ n,
968
+ t.timeoutMs ?? 8e3
969
+ ), i = await ee(`${V(t.endpoint)}/oauth/sdk-verify`, {
970
+ sdkToken: r.sdkToken,
971
+ engineType: e,
972
+ sdkVersion: N,
973
+ origin: H(t.origin),
974
+ product: t.product
975
+ }, t.timeoutMs ?? 8e3);
976
+ return i.sdkToken = r.sdkToken, i;
977
+ }
978
+ async function lt(t, e) {
979
+ const n = t?.sdkAuth;
980
+ if (!n)
981
+ return null;
982
+ if (!n.endpoint)
983
+ throw new Error("[BimEngine] sdkAuth.endpoint is required");
984
+ if (!n.token && !(n.appId && n.appKey && n.appSecret))
985
+ return null;
986
+ const r = st(n, e), i = Y.get(r);
987
+ if (i) {
988
+ const s = await i;
989
+ return t && (t.__sdkAuthSession = s), s;
990
+ }
991
+ const o = (n.token ? ct(n, e) : at(n, e)).then((s) => {
992
+ if (s.authorized !== !0)
993
+ throw new Error("[BimEngine] SDK authorization rejected");
994
+ return t && (t.__sdkAuthSession = s), s;
995
+ }).catch((s) => {
996
+ throw Y.delete(r), s;
997
+ });
998
+ return Y.set(r, o), o;
999
+ }
1000
+ const dt = "evtrsa1", q = /* @__PURE__ */ new Map();
1001
+ function ge(t) {
1002
+ return t.replace(/\/+$/, "");
1003
+ }
1004
+ function ut(t) {
1005
+ return new TextEncoder().encode(t);
1006
+ }
1007
+ function O(t) {
1008
+ let e = "";
1009
+ return t.forEach((n) => {
1010
+ e += String.fromCharCode(n);
1011
+ }), btoa(e).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
1012
+ }
1013
+ async function ht(t, e) {
1014
+ const n = typeof AbortController < "u" ? new AbortController() : void 0, r = n ? setTimeout(() => n.abort(), e) : void 0;
1015
+ try {
1016
+ const i = await fetch(t, {
1017
+ method: "GET",
1018
+ headers: {
1019
+ Accept: "application/json"
1020
+ },
1021
+ signal: n?.signal
1022
+ }), o = await i.json().catch(() => ({}));
1023
+ if (!i.ok) {
1024
+ const s = o?.error?.message ?? o?.message ?? `ViewToken public key request failed with status ${i.status}`;
1025
+ throw new Error(s);
1026
+ }
1027
+ return o;
1028
+ } finally {
1029
+ r != null && clearTimeout(r);
1030
+ }
1031
+ }
1032
+ function Z(t) {
1033
+ const e = globalThis.crypto;
1034
+ if (!e?.getRandomValues)
1035
+ throw new Error("[BimEngine] crypto.getRandomValues is required to encrypt viewToken");
1036
+ return e.getRandomValues(new Uint8Array(t));
1037
+ }
1038
+ function ft(t) {
1039
+ let e = "";
1040
+ return t.forEach((n) => {
1041
+ e += String.fromCharCode(n);
1042
+ }), e;
1043
+ }
1044
+ function pt(t) {
1045
+ const e = new Uint8Array(t.length);
1046
+ for (let n = 0; n < t.length; n += 1)
1047
+ e[n] = t.charCodeAt(n) & 255;
1048
+ return e;
1049
+ }
1050
+ async function gt(t, e) {
1051
+ const n = `${ge(t)}/models/view-token/public-key`, r = await ht(n, e);
1052
+ if (r.algorithm !== "RSA-OAEP-256" || !r.publicKey)
1053
+ throw new Error("[BimEngine] OpenAPI returned an invalid viewToken public key");
1054
+ return X.pki.publicKeyFromPem(r.publicKey);
1055
+ }
1056
+ function mt(t, e) {
1057
+ const n = ge(t), r = q.get(n);
1058
+ if (r)
1059
+ return r;
1060
+ const i = gt(t, e).catch((o) => {
1061
+ throw q.delete(n), o;
1062
+ });
1063
+ return q.set(n, i), i;
1064
+ }
1065
+ async function yt(t, e, n) {
1066
+ const r = await mt(t, n), i = Z(32), o = Z(12), s = Z(16), a = JSON.stringify({
1067
+ viewToken: e,
1068
+ timestamp: Date.now(),
1069
+ nonce: O(s)
1070
+ }), c = r.encrypt(
1071
+ ft(i),
1072
+ "RSA-OAEP",
1073
+ {
1074
+ md: X.md.sha256.create(),
1075
+ mgf1: {
1076
+ md: X.md.sha256.create()
1077
+ }
1078
+ }
1079
+ ), l = $(i, o).encrypt(ut(a));
1080
+ return [
1081
+ dt,
1082
+ O(pt(c)),
1083
+ O(o),
1084
+ O(l)
1085
+ ].join(".");
1086
+ }
1087
+ function wt(t) {
1088
+ return t.replace(/\/+$/, "");
1089
+ }
1090
+ async function bt(t, e, n) {
1091
+ const r = typeof AbortController < "u" ? new AbortController() : void 0, i = r ? setTimeout(() => r.abort(), n) : void 0;
1092
+ try {
1093
+ const o = await fetch(t, {
1094
+ method: "POST",
1095
+ headers: {
1096
+ "Content-Type": "application/json"
1097
+ },
1098
+ body: JSON.stringify(e),
1099
+ signal: r?.signal
1100
+ }), s = await o.json().catch(() => ({}));
1101
+ if (!o.ok) {
1102
+ const a = s?.error?.message ?? s?.message ?? `ViewToken resolve failed with status ${o.status}`;
1103
+ throw new Error(a);
1104
+ }
1105
+ return s;
1106
+ } finally {
1107
+ i != null && clearTimeout(i);
1108
+ }
1109
+ }
1110
+ function kt(t) {
1111
+ switch (t) {
1112
+ case "2d":
1113
+ return "cad_model";
1114
+ case "720":
1115
+ return "panorama";
1116
+ case "gis":
1117
+ return "gis_scene";
1118
+ case "gaussian":
1119
+ return "gaussian_model";
1120
+ case "3d":
1121
+ default:
1122
+ return "model";
1123
+ }
1124
+ }
1125
+ function Et(t) {
1126
+ return {
1127
+ models: [
1128
+ {
1129
+ modelType: t.toLowerCase().endsWith(".json") ? "3dtiles" : "glb",
1130
+ url: t
1131
+ }
1132
+ ]
1133
+ };
1134
+ }
1135
+ function xt(t, e) {
1136
+ return {
1137
+ applicationId: 0,
1138
+ engineType: e,
1139
+ assetCategory: kt(e),
1140
+ url: t,
1141
+ urls: [t],
1142
+ info: e === "gis" ? Et(t) : void 0
1143
+ };
1144
+ }
1145
+ async function Ut(t, e, n) {
1146
+ const r = t?.sdkAuth;
1147
+ if (!r?.endpoint)
1148
+ return xt(e, n);
1149
+ let i;
1150
+ (r.token || r.appId && r.appKey && r.appSecret) && (i = (await lt(t, n))?.sdkToken);
1151
+ const s = {
1152
+ viewToken: await yt(
1153
+ r.endpoint,
1154
+ e,
1155
+ r.timeoutMs ?? 8e3
1156
+ ),
1157
+ engineType: n
1158
+ };
1159
+ return i && (s.sdkToken = i), bt(
1160
+ `${wt(r.endpoint)}/models/view-token/resolve`,
1161
+ s,
1162
+ r.timeoutMs ?? 8e3
1163
+ );
1164
+ }
1165
+ export {
1166
+ j as B,
1167
+ St as C,
1168
+ N as E,
1169
+ Ct as L,
1170
+ At as W,
1171
+ Pt as a,
1172
+ Lt as g,
1173
+ Ut as r
1174
+ };