@reearth/core 0.0.7-alpha.5 → 0.0.7-alpha.51

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 (480) hide show
  1. package/dist/core.js +58676 -51066
  2. package/dist/core.umd.cjs +3959 -3915
  3. package/dist/{index-DqatWUTw.js → index-DqGWVPtz.js} +0 -1
  4. package/dist/index.d.ts +150 -34
  5. package/package.json +55 -39
  6. package/src/Map/ClusteredLayers/index.tsx +1 -1
  7. package/src/Map/Geoid/index.tsx +68 -0
  8. package/src/Map/Geoid/types.ts +8 -0
  9. package/src/Map/Layer/hooks.ts +7 -4
  10. package/src/Map/Layer/index.tsx +3 -1
  11. package/src/Map/Layers/hooks.ts +19 -2
  12. package/src/Map/Layers/index.tsx +13 -2
  13. package/src/Map/Layers/keys.ts +1 -0
  14. package/src/Map/Sketch/hooks.ts +453 -410
  15. package/src/Map/Sketch/index.tsx +67 -20
  16. package/src/Map/Sketch/sketchMachine.ts +359 -4
  17. package/src/Map/Sketch/sketchMachine.typegen.ts +58 -1
  18. package/src/Map/Sketch/types.ts +10 -20
  19. package/src/Map/Sketch/usePluginSketchLayer.ts +105 -0
  20. package/src/Map/Sketch/useSketch.ts +559 -0
  21. package/src/Map/Sketch/useSketchFeature.ts +198 -0
  22. package/src/Map/SpatialId/constants.ts +21 -0
  23. package/src/Map/SpatialId/hooks.ts +448 -0
  24. package/src/Map/SpatialId/index.tsx +63 -0
  25. package/src/Map/SpatialId/types.ts +68 -0
  26. package/src/Map/SpatialId/utils.ts +65 -0
  27. package/src/Map/hooks.ts +54 -8
  28. package/src/Map/index.tsx +41 -8
  29. package/src/Map/ref.ts +32 -3
  30. package/src/Map/types/index.ts +39 -3
  31. package/src/Map/types/viewerProperty.ts +10 -0
  32. package/src/Map/useTimelineManager.ts +2 -2
  33. package/src/Map/utils.ts +1 -1
  34. package/src/Visualizer/context.tsx +5 -5
  35. package/src/Visualizer/coreContext.tsx +2 -0
  36. package/src/Visualizer/hooks.ts +54 -20
  37. package/src/Visualizer/index.tsx +22 -3
  38. package/src/Visualizer/interactionMode.ts +2 -1
  39. package/src/Visualizer/useViewport.ts +1 -1
  40. package/src/engines/Cesium/Feature/Box/hooks/box.ts +4 -4
  41. package/src/engines/Cesium/Feature/HeatMap/HeatmapMesh.tsx +1 -1
  42. package/src/engines/Cesium/Feature/Model/index.tsx +3 -3
  43. package/src/engines/Cesium/Feature/PhotoOverlay/hooks.ts +1 -1
  44. package/src/engines/Cesium/Feature/PhotoOverlay/index.tsx +3 -1
  45. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  46. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  47. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  48. package/src/engines/Cesium/Feature/Tileset/hooks.ts +135 -70
  49. package/src/engines/Cesium/Feature/Tileset/index.tsx +1 -1
  50. package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +2 -2
  51. package/src/engines/Cesium/Feature/context.ts +1 -0
  52. package/src/engines/Cesium/Feature/index.tsx +7 -3
  53. package/src/engines/Cesium/Feature/utils.tsx +18 -7
  54. package/src/engines/Cesium/Shaders/OverriddenShaders/GlobeFS/IBL.glsl +6 -10
  55. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  56. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  57. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  58. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  59. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  60. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  61. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +125 -35
  62. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  63. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  64. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  65. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  66. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  67. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  68. package/src/engines/Cesium/common.ts +52 -16
  69. package/src/engines/Cesium/core/Clock.tsx +1 -1
  70. package/src/engines/Cesium/core/Globe/index.tsx +73 -0
  71. package/src/engines/Cesium/core/Globe/useTerrainProviderPromise.ts +79 -0
  72. package/src/engines/Cesium/core/Imagery.test.ts +29 -11
  73. package/src/engines/Cesium/core/Imagery.tsx +22 -6
  74. package/src/engines/Cesium/core/Indicator/Indicator.tsx +1 -1
  75. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +9 -2
  76. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  77. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  78. package/src/engines/Cesium/core/presets.ts +24 -28
  79. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  80. package/src/engines/Cesium/hooks/useCamera.ts +1 -1
  81. package/src/engines/Cesium/hooks/useCameraLimiter.ts +1 -1
  82. package/src/engines/Cesium/hooks/useEngineRef.ts +48 -3
  83. package/src/engines/Cesium/hooks/useExplicitRender.ts +2 -2
  84. package/src/engines/Cesium/hooks/useInstance.ts +1 -1
  85. package/src/engines/Cesium/hooks/useLayerDragDrop.ts +2 -2
  86. package/src/engines/Cesium/hooks/useLayerSelectWithRect.ts +1 -1
  87. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +98 -52
  88. package/src/engines/Cesium/hooks/useViewerProperty.ts +1 -1
  89. package/src/engines/Cesium/hooks.ts +52 -10
  90. package/src/engines/Cesium/index.tsx +16 -3
  91. package/src/engines/Cesium/types.ts +1 -1
  92. package/src/mantle/atoms/compute.ts +8 -3
  93. package/src/mantle/data/geojson.ts +53 -22
  94. package/src/mantle/data/shapefile/parseZip.ts +1 -0
  95. package/src/mantle/evaluator/simple/expression/expression.test.ts +72 -0
  96. package/src/mantle/evaluator/simple/expression/node.ts +10 -12
  97. package/src/mantle/types/appearance.ts +4 -2
  98. package/src/mantle/types/index.ts +3 -0
  99. package/src/test/utils.tsx +1 -1
  100. package/src/utils/image.ts +2 -12
  101. package/src/utils/use-delayed-count.ts +1 -1
  102. package/src/utils/use-dnd/drop.ts +1 -1
  103. package/src/utils/util.ts +1 -1
  104. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  105. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  106. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  107. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  108. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  109. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  110. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  111. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  112. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  113. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  114. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  115. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  116. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  117. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  118. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  119. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  120. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  121. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  122. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  123. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  124. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  125. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  126. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  127. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  128. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  129. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  130. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  131. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  132. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  133. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  134. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  135. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  136. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  137. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  138. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  139. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  140. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  141. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  142. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  143. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  144. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  145. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  146. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  147. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  148. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  149. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  150. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  151. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  152. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  153. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  154. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  155. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  156. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  157. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  158. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  159. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  160. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  161. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  162. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  163. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  164. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  165. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  166. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  167. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  168. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  169. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  170. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  171. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  172. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  173. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  174. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  175. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  176. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  177. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  178. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  179. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  180. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  181. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  182. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  183. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  184. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  185. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  186. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  187. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  188. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  189. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  190. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  191. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  192. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  193. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  194. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  195. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  196. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  197. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  198. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  199. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  200. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  201. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  202. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  203. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  204. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  205. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  206. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  207. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  208. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  209. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  210. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  211. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  212. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  213. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  214. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  215. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  216. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  217. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  218. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  219. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  220. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  221. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  222. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  223. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  271. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  272. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  273. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  274. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  275. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  276. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  277. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  278. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  279. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  280. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  281. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  282. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  283. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  284. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  285. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  286. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  287. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  288. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  289. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  290. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  291. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  292. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  293. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  294. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  295. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  296. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  297. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  298. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  299. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  300. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  301. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  302. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  303. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  304. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  305. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  306. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  307. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  308. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  309. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  310. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  311. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  312. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  313. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  314. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  315. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  316. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  317. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  318. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  319. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  320. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  321. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  322. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  323. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  324. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  325. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  326. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  327. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  328. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  329. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  330. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  331. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  332. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  333. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  334. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  335. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  336. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  337. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  338. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  339. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  340. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  341. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  342. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  343. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  344. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  345. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  346. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  347. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  348. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  349. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  350. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  351. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  352. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  353. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  354. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  355. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  356. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  357. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  358. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  359. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  360. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  361. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  362. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  363. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  364. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  365. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  366. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  367. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  368. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  369. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  370. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  371. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  372. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  373. package/dist/cesium/Widgets/lighter.css +0 -237
  374. package/dist/cesium/Widgets/lighterShared.css +0 -46
  375. package/dist/cesium/Widgets/shared.css +0 -103
  376. package/dist/cesium/Widgets/widgets.css +0 -1346
  377. package/dist/cesium/Workers/chunk-2ED5WI77.js +0 -26
  378. package/dist/cesium/Workers/chunk-2MBPFWCP.js +0 -26
  379. package/dist/cesium/Workers/chunk-3C74MLG3.js +0 -26
  380. package/dist/cesium/Workers/chunk-45U7TTT3.js +0 -26
  381. package/dist/cesium/Workers/chunk-4N7SRDH5.js +0 -26
  382. package/dist/cesium/Workers/chunk-4T6AS6BZ.js +0 -26
  383. package/dist/cesium/Workers/chunk-5AG2MVRM.js +0 -26
  384. package/dist/cesium/Workers/chunk-5Z6L2FHX.js +0 -26
  385. package/dist/cesium/Workers/chunk-6AUUBDOF.js +0 -26
  386. package/dist/cesium/Workers/chunk-74N6MC2V.js +0 -26
  387. package/dist/cesium/Workers/chunk-7VJK3KHI.js +0 -26
  388. package/dist/cesium/Workers/chunk-7VZHIB6P.js +0 -26
  389. package/dist/cesium/Workers/chunk-7X2YQ6I4.js +0 -27
  390. package/dist/cesium/Workers/chunk-B2SKQ7LU.js +0 -26
  391. package/dist/cesium/Workers/chunk-B4TQDFIE.js +0 -26
  392. package/dist/cesium/Workers/chunk-B6TRTFAA.js +0 -26
  393. package/dist/cesium/Workers/chunk-BK3HCS7I.js +0 -26
  394. package/dist/cesium/Workers/chunk-BOPB43LN.js +0 -26
  395. package/dist/cesium/Workers/chunk-C6DMEJQ7.js +0 -26
  396. package/dist/cesium/Workers/chunk-CN7UN2OZ.js +0 -26
  397. package/dist/cesium/Workers/chunk-CSISXEG7.js +0 -26
  398. package/dist/cesium/Workers/chunk-CUOR5F7T.js +0 -28
  399. package/dist/cesium/Workers/chunk-DGCK3LD2.js +0 -30
  400. package/dist/cesium/Workers/chunk-DXEZYE3K.js +0 -62
  401. package/dist/cesium/Workers/chunk-EXBFEYPQ.js +0 -26
  402. package/dist/cesium/Workers/chunk-FK5KFB6H.js +0 -26
  403. package/dist/cesium/Workers/chunk-HPBHKP5S.js +0 -26
  404. package/dist/cesium/Workers/chunk-JCJ24DHF.js +0 -26
  405. package/dist/cesium/Workers/chunk-JEWHFDAA.js +0 -26
  406. package/dist/cesium/Workers/chunk-JZLZJJQD.js +0 -26
  407. package/dist/cesium/Workers/chunk-KRZBI2MU.js +0 -26
  408. package/dist/cesium/Workers/chunk-KTTUANTJ.js +0 -26
  409. package/dist/cesium/Workers/chunk-LDCAXLGS.js +0 -26
  410. package/dist/cesium/Workers/chunk-LOPN5R3I.js +0 -26
  411. package/dist/cesium/Workers/chunk-MDLPQIMP.js +0 -26
  412. package/dist/cesium/Workers/chunk-MRR3RGFO.js +0 -26
  413. package/dist/cesium/Workers/chunk-NPBZI5YA.js +0 -26
  414. package/dist/cesium/Workers/chunk-NUSW5B6A.js +0 -26
  415. package/dist/cesium/Workers/chunk-OUXRUXNB.js +0 -26
  416. package/dist/cesium/Workers/chunk-QPOPEH3M.js +0 -26
  417. package/dist/cesium/Workers/chunk-R2AN7EKC.js +0 -26
  418. package/dist/cesium/Workers/chunk-RURL6ZX2.js +0 -26
  419. package/dist/cesium/Workers/chunk-SUQM3OSW.js +0 -28
  420. package/dist/cesium/Workers/chunk-UBIRX2SP.js +0 -26
  421. package/dist/cesium/Workers/chunk-VAKC5J5C.js +0 -26
  422. package/dist/cesium/Workers/chunk-VHNZBQTR.js +0 -27
  423. package/dist/cesium/Workers/chunk-VKV642QV.js +0 -26
  424. package/dist/cesium/Workers/chunk-VMSXG4OA.js +0 -26
  425. package/dist/cesium/Workers/chunk-VQZSIOZW.js +0 -26
  426. package/dist/cesium/Workers/chunk-WZUWQMI7.js +0 -26
  427. package/dist/cesium/Workers/chunk-YBI55DLZ.js +0 -26
  428. package/dist/cesium/Workers/chunk-YEJWCH6C.js +0 -26
  429. package/dist/cesium/Workers/chunk-YPDO7SPO.js +0 -26
  430. package/dist/cesium/Workers/chunk-ZYWD6OQH.js +0 -26
  431. package/dist/cesium/Workers/combineGeometry.js +0 -26
  432. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  433. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  434. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  435. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  436. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  437. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  438. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  439. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  440. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  441. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  442. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  443. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  444. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  445. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  446. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  447. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  448. package/dist/cesium/Workers/createGeometry.js +0 -26
  449. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  450. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  451. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  452. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  453. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  454. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  455. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  456. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  457. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  458. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  459. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  460. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  461. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  462. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  463. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  464. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  465. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  466. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  467. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  468. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  469. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  470. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  471. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  472. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  473. package/dist/cesium/Workers/decodeDraco.js +0 -26
  474. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  475. package/dist/cesium/Workers/decodeI3S.js +0 -26
  476. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  477. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  478. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  479. package/src/engines/Cesium/core/Globe.tsx +0 -104
  480. /package/src/{Map/Sketch/utils.ts → utils/use-window-event.ts} +0 -0
@@ -1,15 +1,9 @@
1
- import {
2
- Entity,
3
- Cartesian3,
4
- PolygonHierarchy,
5
- PointGraphics,
6
- BillboardGraphics,
7
- JulianDate,
8
- } from "cesium";
1
+ import { Entity, PointGraphics, BillboardGraphics, JulianDate } from "cesium";
9
2
 
10
3
  import { EvalFeature } from "../../..";
11
4
  import { AppearanceTypes, ComputedFeature, ComputedLayer, Feature } from "../../../../mantle";
12
- import { heightReference, shadowMode, toColor } from "../../common";
5
+ import { heightReference, shadowMode, toColor, classificationType } from "../../common";
6
+ import { getMarkerCoordinates, getGeometryFromEntity } from "../../helpers/getGeometryFromEntity";
13
7
  import { convertEntityDescription, convertEntityProperties } from "../../utils/utils";
14
8
  import { attachTag, extractSimpleLayer, getTag, Tag } from "../utils";
15
9
 
@@ -39,7 +33,7 @@ type EntityAppearanceKey<AName extends SupportedAppearanceKey> = AName extends "
39
33
  ? keyof Pick<Entity, "point" | "billboard" | "label">
40
34
  : keyof Pick<Entity, CesiumEntityAppearanceKey>;
41
35
 
42
- type AppearancePropertyKeyType = "color" | "heightReference" | "shadows";
36
+ type AppearancePropertyKeyType = "color" | "heightReference" | "shadows" | "classificationType";
43
37
 
44
38
  export function attachProperties<
45
39
  AName extends SupportedAppearanceKey,
@@ -93,6 +87,9 @@ export function attachProperties<
93
87
  break;
94
88
  case "heightReference":
95
89
  value = heightReference(value);
90
+ break;
91
+ case "classificationType":
92
+ value = classificationType(value);
96
93
  }
97
94
 
98
95
  if (value === (entity[propertyName] as any)[entityPropertyKey]) {
@@ -132,16 +129,14 @@ export const attachStyle = (
132
129
  const point = hasAppearance(layer, entity, ["marker", "point"]);
133
130
  const billboard = hasAppearance(layer, entity, ["marker", "billboard"]);
134
131
  const label = hasAppearance(layer, entity, ["marker", "label"]);
135
- if (point || billboard || label) {
136
- const position = entity.position?.getValue(currentTime);
137
- const coordinates = [position?.x ?? 0, position?.y ?? 0, position?.z ?? 0];
132
+ if (entity.point || entity.billboard || entity.label) {
133
+ const coordinates = getMarkerCoordinates(entity, currentTime);
134
+ const geometry = getGeometryFromEntity(currentTime, entity);
135
+
138
136
  const feature: Feature = {
139
137
  type: "feature",
140
138
  id: makeFeatureId(entity),
141
- geometry: {
142
- type: "Point",
143
- coordinates,
144
- },
139
+ geometry,
145
140
  properties: convertEntityProperties(currentTime, entity),
146
141
  metaData: {
147
142
  description: convertEntityDescription(currentTime, entity),
@@ -261,21 +256,14 @@ export const attachStyle = (
261
256
  return [feature, computedFeature];
262
257
  }
263
258
 
264
- if (hasAppearance(layer, entity, ["polyline", "polyline"])) {
259
+ if (entity.polyline) {
265
260
  const entityPosition = entity.position?.getValue(currentTime);
266
- const positions = entity.polyline?.positions?.getValue(currentTime) as Cartesian3[];
267
- const coordinates = positions?.map(position => [
268
- position?.x ?? 0,
269
- position?.y ?? 0,
270
- position?.z ?? 0,
271
- ]);
261
+ const geometry = getGeometryFromEntity(currentTime, entity);
262
+
272
263
  const feature: Feature = {
273
264
  type: "feature",
274
265
  id: makeFeatureId(entity),
275
- geometry: {
276
- type: "LineString",
277
- coordinates,
278
- },
266
+ geometry,
279
267
  properties: convertEntityProperties(currentTime, entity),
280
268
  metaData: {
281
269
  description: convertEntityDescription(currentTime, entity),
@@ -290,42 +278,43 @@ export const attachStyle = (
290
278
  if (!computedFeature) {
291
279
  return;
292
280
  }
293
- attachProperties(entity, computedFeature, ["polyline", "polyline"], {
294
- show: {
295
- name: "show",
296
- default: true,
297
- },
298
- width: {
299
- name: "strokeWidth",
300
- },
301
- material: {
302
- name: "strokeColor",
303
- type: "color",
304
- },
305
- shadows: {
306
- name: "shadows",
307
- type: "shadows",
308
- },
309
- clampToGround: {
310
- name: "clampToGround",
311
- },
312
- });
281
+ if (hasAppearance(layer, entity, ["polyline", "polyline"])) {
282
+ attachProperties(entity, computedFeature, ["polyline", "polyline"], {
283
+ show: {
284
+ name: "show",
285
+ default: true,
286
+ },
287
+ width: {
288
+ name: "strokeWidth",
289
+ },
290
+ material: {
291
+ name: "strokeColor",
292
+ type: "color",
293
+ },
294
+ shadows: {
295
+ name: "shadows",
296
+ type: "shadows",
297
+ },
298
+ clampToGround: {
299
+ name: "clampToGround",
300
+ },
301
+ classificationType: {
302
+ name: "classificationType",
303
+ type: "classificationType",
304
+ },
305
+ });
306
+ }
313
307
  return [feature, computedFeature];
314
308
  }
315
309
 
316
- if (hasAppearance(layer, entity, ["polygon", "polygon"])) {
310
+ if (entity.polygon) {
317
311
  const entityPosition = entity.position?.getValue(currentTime);
318
- const hierarchy = entity.polygon?.hierarchy?.getValue(currentTime) as PolygonHierarchy;
319
- const coordinates = hierarchy?.holes?.map(hole =>
320
- hole.positions.map(position => [position?.x ?? 0, position?.y ?? 0, position?.z ?? 0]),
321
- );
312
+ const geometry = getGeometryFromEntity(currentTime, entity);
313
+
322
314
  const feature: Feature = {
323
315
  type: "feature",
324
316
  id: makeFeatureId(entity),
325
- geometry: {
326
- type: "Polygon",
327
- coordinates,
328
- },
317
+ geometry,
329
318
  properties: convertEntityProperties(currentTime, entity),
330
319
  metaData: {
331
320
  description: convertEntityDescription(currentTime, entity),
@@ -340,40 +329,46 @@ export const attachStyle = (
340
329
  if (!computedFeature) {
341
330
  return;
342
331
  }
343
- attachProperties(entity, computedFeature, ["polygon", "polygon"], {
344
- show: {
345
- name: "show",
346
- default: true,
347
- },
348
- fill: {
349
- name: "fill",
350
- },
351
- material: {
352
- name: "fillColor",
353
- type: "color",
354
- },
355
- outline: {
356
- name: "stroke",
357
- },
358
- outlineColor: {
359
- name: "strokeColor",
360
- type: "color",
361
- },
362
- outlineWidth: {
363
- name: "strokeWidth",
364
- },
365
- shadows: {
366
- name: "shadows",
367
- type: "shadows",
368
- },
369
- heightReference: {
370
- name: "heightReference",
371
- type: "heightReference",
372
- },
373
- extrudedHeight: {
374
- name: "extrudedHeight",
375
- },
376
- });
332
+ if (hasAppearance(layer, entity, ["polygon", "polygon"])) {
333
+ attachProperties(entity, computedFeature, ["polygon", "polygon"], {
334
+ show: {
335
+ name: "show",
336
+ default: true,
337
+ },
338
+ fill: {
339
+ name: "fill",
340
+ },
341
+ material: {
342
+ name: "fillColor",
343
+ type: "color",
344
+ },
345
+ outline: {
346
+ name: "stroke",
347
+ },
348
+ outlineColor: {
349
+ name: "strokeColor",
350
+ type: "color",
351
+ },
352
+ outlineWidth: {
353
+ name: "strokeWidth",
354
+ },
355
+ shadows: {
356
+ name: "shadows",
357
+ type: "shadows",
358
+ },
359
+ heightReference: {
360
+ name: "heightReference",
361
+ type: "heightReference",
362
+ },
363
+ extrudedHeight: {
364
+ name: "extrudedHeight",
365
+ },
366
+ classificationType: {
367
+ name: "classificationType",
368
+ type: "classificationType",
369
+ },
370
+ });
371
+ }
377
372
  return [feature, computedFeature];
378
373
  }
379
374
  };
@@ -15,13 +15,11 @@ import {
15
15
  Cesium3DTileFeature,
16
16
  Model,
17
17
  Cesium3DTilePointFeature,
18
- GoogleMaps as CesiumGoogleMaps,
19
- Resource,
20
- defaultValue,
21
18
  ImageBasedLighting,
22
19
  Cesium3DTileContent,
23
20
  Color,
24
21
  Viewer,
22
+ createGooglePhotorealistic3DTileset,
25
23
  } from "cesium";
26
24
  import { pick } from "lodash-es";
27
25
  import { MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -57,7 +55,6 @@ import {
57
55
  } from "../utils";
58
56
 
59
57
  import { TilesetFeatureIndex } from "./TilesetFeatureIndex";
60
- import { GoogleMaps } from "./types";
61
58
  import { useClippingBox } from "./useClippingBox";
62
59
  import { useDrawClipping } from "./useDrawClipping";
63
60
 
@@ -77,6 +74,7 @@ const useData = (layer: ComputedLayer | undefined) => {
77
74
  ? data.layers.join(",")
78
75
  : data?.layers
79
76
  : undefined,
77
+ googleMapApiKey: data?.serviceTokens?.googleMapApiKey,
80
78
  };
81
79
  }, [layer]);
82
80
  };
@@ -179,7 +177,7 @@ const convertStyle = (val: any, convert: StyleProperty["convert"]) => {
179
177
 
180
178
  const useFeature = ({
181
179
  id,
182
- tileset,
180
+ tilesetRef,
183
181
  idProperty,
184
182
  layer,
185
183
  viewer,
@@ -189,9 +187,10 @@ const useFeature = ({
189
187
  onComputedFeatureFetch,
190
188
  shouldUseFeatureIndex,
191
189
  isTilesetReady,
190
+ useExternalStyle,
192
191
  }: {
193
192
  id?: string;
194
- tileset: MutableRefObject<Cesium3DTileset | undefined>;
193
+ tilesetRef: MutableRefObject<Cesium3DTileset | undefined>;
195
194
  idProperty?: string;
196
195
  layer?: ComputedLayer;
197
196
  viewer?: Viewer;
@@ -201,6 +200,7 @@ const useFeature = ({
201
200
  selectedFeatureIdsRef: MutableRefObject<string[]>;
202
201
  shouldUseFeatureIndex?: boolean;
203
202
  isTilesetReady: boolean;
203
+ useExternalStyle?: boolean;
204
204
  }) => {
205
205
  const cachedFeaturesRef = useRef<CachedFeature[]>([]);
206
206
  const cachedCalculatedLayerRef = useRef(layer);
@@ -222,44 +222,51 @@ const useFeature = ({
222
222
 
223
223
  const computedFeature = evalFeature(layer, { ...feature?.feature, properties });
224
224
 
225
- const style = computedFeature?.["3dtiles"];
225
+ if (!useExternalStyle) {
226
+ const style = computedFeature?.["3dtiles"];
226
227
 
227
- COMMON_STYLE_PROPERTIES.forEach(({ name, convert }) => {
228
- if (name === "color") {
229
- if (isFeatureSelected) {
230
- raw.color =
231
- typeof layer["3dtiles"]?.selectedFeatureColor === "string"
232
- ? toColor(layer["3dtiles"]?.selectedFeatureColor) ?? raw.color
233
- : raw.color;
234
- return;
235
- }
236
-
237
- raw.color = DEFAULT_FEATURE_COLOR;
238
- }
239
- const val = convertStyle(style?.[name], convert);
240
- if (val !== undefined) {
241
- raw[name] = val;
242
- }
243
- });
244
-
245
- if (raw instanceof Cesium3DTilePointFeature) {
246
- POINT_STYLE_PROPERTIES.forEach(({ name, convert }) => {
228
+ COMMON_STYLE_PROPERTIES.forEach(({ name, convert }) => {
247
229
  const val = convertStyle(style?.[name], convert);
248
- if (val !== undefined) {
249
- raw[name] = val;
230
+
231
+ if (name === "color") {
232
+ // Reset color to default so that new style could update all.
233
+ raw.color = DEFAULT_FEATURE_COLOR;
234
+
235
+ // Apply color from style.
236
+ if (val !== undefined) {
237
+ raw.color = val;
238
+ }
239
+
240
+ // Apply color for selected feature.
241
+ if (isFeatureSelected && typeof layer["3dtiles"]?.selectedFeatureColor === "string") {
242
+ raw.color = toColor(layer["3dtiles"]?.selectedFeatureColor) ?? val;
243
+ }
244
+ } else {
245
+ if (val !== undefined) {
246
+ raw[name] = val;
247
+ }
250
248
  }
251
249
  });
252
- }
253
250
 
254
- if ("style" in raw) {
255
- raw.style = new Cesium3DTileStyle(
256
- // TODO: Convert value if it's necessary
257
- MODEL_STYLE_PROPERTIES.reduce((res, { name, convert }) => {
258
- const val = convertStyle(style?.[name as keyof typeof style], convert);
259
- if (val === undefined) return res;
260
- return { ...res, [name]: val };
261
- }, {}),
262
- );
251
+ if (raw instanceof Cesium3DTilePointFeature) {
252
+ POINT_STYLE_PROPERTIES.forEach(({ name, convert }) => {
253
+ const val = convertStyle(style?.[name], convert);
254
+ if (val !== undefined) {
255
+ raw[name] = val;
256
+ }
257
+ });
258
+ }
259
+
260
+ if ("style" in raw) {
261
+ raw.style = new Cesium3DTileStyle(
262
+ // TODO: Convert value if it's necessary
263
+ MODEL_STYLE_PROPERTIES.reduce((res, { name, convert }) => {
264
+ const val = convertStyle(style?.[name as keyof typeof style], convert);
265
+ if (val === undefined) return res;
266
+ return { ...res, [name]: val };
267
+ }, {}),
268
+ );
269
+ }
263
270
  }
264
271
 
265
272
  attachTag(feature.raw, {
@@ -273,7 +280,7 @@ const useFeature = ({
273
280
  }
274
281
  return;
275
282
  },
276
- [evalFeature, layerId, viewer, shouldUseFeatureIndex, selectedFeatureIdsRef],
283
+ [evalFeature, layerId, viewer, shouldUseFeatureIndex, selectedFeatureIdsRef, useExternalStyle],
277
284
  );
278
285
 
279
286
  const handleTilesetLoad = useCallback(
@@ -324,10 +331,10 @@ const useFeature = ({
324
331
  handleTilesetLoadRef.current = handleTilesetLoad;
325
332
  useEffect(
326
333
  () =>
327
- tileset.current?.tileLoad.addEventListener((t: Cesium3DTile) =>
334
+ tilesetRef.current?.tileLoad.addEventListener((t: Cesium3DTile) =>
328
335
  handleTilesetLoadRef.current(t),
329
336
  ),
330
- [tileset, isTilesetReady],
337
+ [tilesetRef, isTilesetReady],
331
338
  );
332
339
 
333
340
  const handleTilesetUnload = useCallback(
@@ -343,10 +350,10 @@ const useFeature = ({
343
350
  handleTilesetUnloadRef.current = handleTilesetUnload;
344
351
  useEffect(
345
352
  () =>
346
- tileset.current?.tileUnload.addEventListener((t: Cesium3DTile) =>
353
+ tilesetRef.current?.tileUnload.addEventListener((t: Cesium3DTile) =>
347
354
  handleTilesetUnloadRef.current(t),
348
355
  ),
349
- [tileset, isTilesetReady],
356
+ [tilesetRef, isTilesetReady],
350
357
  );
351
358
 
352
359
  useEffect(() => {
@@ -362,7 +369,7 @@ const useFeature = ({
362
369
 
363
370
  // If styles are updated while features are calculating,
364
371
  // we stop calculating features, and reassign styles.
365
- const skippedComputingAt = useRef<number | null>();
372
+ const skippedComputingAt = useRef<number | null>(undefined);
366
373
  useEffect(() => {
367
374
  skippedComputingAt.current = Date.now();
368
375
  }, [pickedAppearance, updateStyle]);
@@ -449,8 +456,8 @@ export const useHooks = ({
449
456
  onLayerFetch?: (value: Partial<Pick<LayerSimple, "properties">>) => void;
450
457
  }) => {
451
458
  const { viewer } = useCesium();
452
- const tilesetRef = useRef<Cesium3DTilesetType>();
453
- const { onLayerLoad } = useContext();
459
+ const tilesetRef = useRef<Cesium3DTilesetType>(undefined);
460
+ const { onLayerLoad, updateCredits } = useContext();
454
461
  const layerIdRef = useRef(layer?.id);
455
462
  layerIdRef.current = layer?.id;
456
463
 
@@ -460,7 +467,6 @@ export const useHooks = ({
460
467
  edgeColor,
461
468
  edgeWidth,
462
469
  experimental_clipping,
463
- apiKey,
464
470
  selectedFeatureColor,
465
471
  disableIndexingFeature,
466
472
  } = property ?? {};
@@ -481,10 +487,12 @@ export const useHooks = ({
481
487
  } = useClippingBox({ clipping: experimental_clipping, boxId });
482
488
 
483
489
  const [style, setStyle] = useState<Cesium3DTileStyle>();
484
- const { url, type, idProperty } = useData(layer);
490
+ const { url, type, idProperty, googleMapApiKey } = useData(layer);
485
491
  const shouldUseFeatureIndex = !disableIndexingFeature && !!idProperty;
486
492
 
487
493
  const [isTilesetReady, setIsTilesetReady] = useState(false);
494
+ const [isTilesetCompReady, setIsTilesetCompReady] = useState(false);
495
+ const [isTilesetRefReady, setIsTilesetRefReady] = useState(false);
488
496
 
489
497
  const prevPlanes = useRef(_planes);
490
498
  const planes = useMemo(() => {
@@ -503,8 +511,9 @@ export const useHooks = ({
503
511
  return prevPlanes.current;
504
512
  }, [_planes]);
505
513
  const clipDirection = direction === "inside" ? -1 : 1;
514
+
506
515
  // Create immutable object
507
- const [clippingPlanes] = useState(
516
+ const [clippingPlanes, setClippingPlanes] = useState<CesiumClippingPlaneCollection>(
508
517
  () =>
509
518
  new CesiumClippingPlaneCollection({
510
519
  planes: planes?.map(
@@ -519,6 +528,27 @@ export const useHooks = ({
519
528
  edgeColor: toColor(edgeColor),
520
529
  }),
521
530
  );
531
+ // Initialize clipping planes
532
+ // This is workaround to reinitialize ClippingPlanes in strict mode.
533
+ useEffect(
534
+ () => () => {
535
+ setClippingPlanes(
536
+ new CesiumClippingPlaneCollection({
537
+ planes: planes?.map(
538
+ plane =>
539
+ new ClippingPlane(
540
+ new Cartesian3(plane.normal?.x, plane.normal?.y, plane.normal?.z),
541
+ (plane.distance || 0) * clipDirection,
542
+ ),
543
+ ),
544
+ unionClippingRegions: direction === "outside",
545
+ edgeWidth: edgeWidth,
546
+ edgeColor: toColor(edgeColor),
547
+ }),
548
+ );
549
+ },
550
+ [], // eslint-disable-line react-hooks/exhaustive-deps
551
+ );
522
552
 
523
553
  const { drawClippingEnabled, drawClippingEdgeProps } = useDrawClipping({
524
554
  ...experimental_clipping?.draw,
@@ -542,6 +572,7 @@ export const useHooks = ({
542
572
  (tileset?.cesiumElement as any)[layerIdField] = layer.id;
543
573
  }
544
574
  tilesetRef.current = tileset?.cesiumElement;
575
+ setIsTilesetRefReady(!!tileset?.cesiumElement);
545
576
  },
546
577
  [id, layer?.id, featureIndex, shouldUseFeatureIndex],
547
578
  );
@@ -578,7 +609,7 @@ export const useHooks = ({
578
609
 
579
610
  useFeature({
580
611
  id,
581
- tileset: tilesetRef,
612
+ tilesetRef,
582
613
  layer,
583
614
  idProperty,
584
615
  viewer,
@@ -588,6 +619,7 @@ export const useHooks = ({
588
619
  selectedFeatureIdsRef,
589
620
  shouldUseFeatureIndex,
590
621
  isTilesetReady,
622
+ useExternalStyle: !!styleUrl,
591
623
  });
592
624
 
593
625
  const [terrainHeightEstimate, setTerrainHeightEstimate] = useState(0);
@@ -703,36 +735,57 @@ export const useHooks = ({
703
735
  }
704
736
  (async () => {
705
737
  const res = await fetch(styleUrl);
706
- if (!res.ok) return;
707
- setStyle(new Cesium3DTileStyle(await res.json()));
738
+ if (!res.ok) {
739
+ console.warn("Failed to fetch style from:", styleUrl);
740
+ return;
741
+ }
742
+ const styleData = await res.json();
743
+ const newStyle = new Cesium3DTileStyle(styleData);
744
+ setStyle(newStyle);
708
745
  })();
709
746
  }, [styleUrl]);
710
747
 
711
- const googleMapResource = useMemo(() => {
712
- if (type !== "google-photorealistic" || !isVisible) return;
713
- // Ref: https://github.com/CesiumGS/cesium/blob/b208135a095073386e5f04a59956ee11a03aa847/packages/engine/Source/Scene/createGooglePhotorealistic3DTileset.js#L30
714
- const googleMaps = CesiumGoogleMaps as GoogleMaps;
715
- // Default key: https://github.com/CesiumGS/cesium/blob/b208135a095073386e5f04a59956ee11a03aa847/packages/engine/Source/Core/GoogleMaps.js#L6C36-L6C36
716
- const key = defaultValue(apiKey, googleMaps.defaultApiKey);
717
- const credit = googleMaps.getDefaultApiKeyCredit(key);
718
- return new Resource({
719
- url: `${googleMaps.mapTilesApiEndpoint}3dtiles/root.json`,
720
- queryParameters: { key },
721
- credits: credit ? [credit] : undefined,
722
- } as Resource.ConstructorOptions);
723
- }, [apiKey, type, isVisible]);
748
+ // Apply style to tileset when both external style and tileset are ready
749
+ useEffect(() => {
750
+ if (style && tilesetRef.current && isTilesetReady) {
751
+ tilesetRef.current.style = style;
752
+ }
753
+ }, [style, isTilesetReady]);
754
+
755
+ const googleMapPhotorealisticResource = useMemo(() => {
756
+ if (type !== "google-photorealistic" || !isVisible) return null;
757
+
758
+ const loadTileset = async () => {
759
+ try {
760
+ if (googleMapApiKey) {
761
+ const tileset = await createGooglePhotorealistic3DTileset(googleMapApiKey);
762
+ return tileset.resource;
763
+ } else {
764
+ const resource = IonResource.fromAssetId(2275207, {
765
+ accessToken: meta?.cesiumIonAccessToken as string | undefined,
766
+ });
767
+ return resource;
768
+ }
769
+ } catch (error) {
770
+ console.error(`Error loading Photorealistic 3D Tiles tileset: ${error}`);
771
+ throw error;
772
+ }
773
+ };
774
+
775
+ return loadTileset();
776
+ }, [type, isVisible, googleMapApiKey, meta?.cesiumIonAccessToken]);
724
777
 
725
778
  const tilesetUrl = useMemo(() => {
726
779
  return type === "osm-buildings" && isVisible
727
780
  ? IonResource.fromAssetId(96188, {
728
781
  accessToken: meta?.cesiumIonAccessToken as string | undefined,
729
782
  }) // https://github.com/CesiumGS/cesium/blob/main/packages/engine/Source/Scene/createOsmBuildings.js#L53
730
- : googleMapResource
731
- ? googleMapResource
783
+ : googleMapPhotorealisticResource && isVisible
784
+ ? googleMapPhotorealisticResource
732
785
  : type === "3dtiles" && isVisible
733
786
  ? url ?? tileset
734
787
  : null;
735
- }, [isVisible, tileset, url, type, meta, googleMapResource]);
788
+ }, [type, isVisible, meta?.cesiumIonAccessToken, googleMapPhotorealisticResource, url, tileset]);
736
789
 
737
790
  const imageBasedLighting = useMemo(() => {
738
791
  if (
@@ -773,13 +826,25 @@ export const useHooks = ({
773
826
 
774
827
  const handleReady = useCallback(
775
828
  (tileset: Cesium3DTileset) => {
776
- setIsTilesetReady(true);
829
+ setIsTilesetCompReady(true);
777
830
  onLayerFetch?.({ properties: tileset.properties });
778
831
  onLayerLoad?.({ layerId: layerIdRef.current });
779
832
  },
780
833
  [onLayerFetch, onLayerLoad],
781
834
  );
782
835
 
836
+ useEffect(() => {
837
+ if (!isTilesetCompReady || !isTilesetRefReady) return;
838
+ setIsTilesetReady(true);
839
+ }, [isTilesetCompReady, isTilesetRefReady]);
840
+
841
+ useEffect(() => {
842
+ updateCredits?.();
843
+ return () => {
844
+ updateCredits?.();
845
+ };
846
+ }, [type, updateCredits]);
847
+
783
848
  return {
784
849
  tilesetUrl,
785
850
  ref,
@@ -1,4 +1,4 @@
1
- import { memo, useMemo } from "react";
1
+ import { memo, useMemo, type JSX } from "react";
2
2
  import { Cesium3DTileset } from "resium";
3
3
 
4
4
  import type { Cesium3DTilesAppearance, ComputedLayer } from "../../..";
@@ -105,7 +105,7 @@ export const useClippingBox = ({
105
105
 
106
106
  const isBoxClicked = useRef(false);
107
107
  const isTopBottomSidePlaneClicked = useRef(false);
108
- const currentCameraPosition = useRef<Camera | undefined>();
108
+ const currentCameraPosition = useRef<Camera | undefined>(undefined);
109
109
 
110
110
  // Coordinates
111
111
  const [coords, setCoords] = useState(coordinates);
@@ -349,7 +349,7 @@ export const useClippingBox = ({
349
349
  [boxId, boxState.isEdgeClicked, boxState.isScalePointClicked, handleUpdateBoxState],
350
350
  );
351
351
 
352
- const hovered = useRef<any>();
352
+ const hovered = useRef<any>(undefined);
353
353
  const handleRawMouseMove = useCallback(
354
354
  (e: any) => {
355
355
  const picked = viewer?.scene.pick(e.endPosition);
@@ -26,6 +26,7 @@ export type Context = {
26
26
  position: [x: number, y: number, z: number],
27
27
  ) => [x: number, y: number] | undefined;
28
28
  isPositionVisible?: (position: [x: number, y: number, z: number]) => boolean;
29
+ updateCredits?: () => void;
29
30
  };
30
31
 
31
32
  export const context = createContext<Context>({});