@reearth/core 0.0.7-alpha.6 → 0.0.7-alpha.61

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 (515) hide show
  1. package/LICENSE +177 -0
  2. package/dist/core.js +70991 -60887
  3. package/dist/core.umd.cjs +666 -680
  4. package/dist/{index-DqatWUTw.js → index-CUJ6HGQn.js} +1021 -908
  5. package/dist/index.d.ts +157 -71
  6. package/package.json +88 -74
  7. package/src/Map/ClusteredLayers/index.tsx +1 -1
  8. package/src/Map/Geoid/index.tsx +68 -0
  9. package/src/Map/Geoid/types.ts +8 -0
  10. package/src/Map/Layer/hooks.ts +7 -4
  11. package/src/Map/Layer/index.tsx +3 -1
  12. package/src/Map/Layers/hooks.ts +35 -8
  13. package/src/Map/Layers/index.tsx +13 -2
  14. package/src/Map/Layers/keys.ts +1 -0
  15. package/src/Map/Sketch/hooks.ts +454 -411
  16. package/src/Map/Sketch/index.tsx +68 -21
  17. package/src/Map/Sketch/sketchMachine.ts +427 -102
  18. package/src/Map/Sketch/sketchMachine.typegen.ts +58 -1
  19. package/src/Map/Sketch/types.ts +10 -20
  20. package/src/Map/Sketch/usePluginSketchLayer.ts +105 -0
  21. package/src/Map/Sketch/useSketch.ts +558 -0
  22. package/src/Map/Sketch/useSketchFeature.ts +198 -0
  23. package/src/Map/SpatialId/constants.ts +21 -0
  24. package/src/Map/SpatialId/hooks.ts +448 -0
  25. package/src/Map/SpatialId/index.tsx +63 -0
  26. package/src/Map/SpatialId/types.ts +68 -0
  27. package/src/Map/SpatialId/utils.ts +65 -0
  28. package/src/Map/hooks.ts +54 -8
  29. package/src/Map/index.tsx +42 -9
  30. package/src/Map/ref.ts +32 -3
  31. package/src/Map/types/index.ts +39 -3
  32. package/src/Map/types/viewerProperty.ts +10 -0
  33. package/src/Map/useTimelineManager.ts +4 -10
  34. package/src/Map/utils.ts +1 -1
  35. package/src/Visualizer/Error.tsx +4 -1
  36. package/src/Visualizer/context.tsx +5 -5
  37. package/src/Visualizer/coreContext.tsx +3 -1
  38. package/src/Visualizer/hooks.ts +56 -22
  39. package/src/Visualizer/index.stories.tsx +15 -0
  40. package/src/Visualizer/index.tsx +25 -6
  41. package/src/Visualizer/useViewport.ts +1 -1
  42. package/src/engines/Cesium/Feature/Box/hooks/box.ts +4 -4
  43. package/src/engines/Cesium/Feature/Box/hooks/edge.ts +1 -1
  44. package/src/engines/Cesium/Feature/Box/hooks/side.ts +1 -1
  45. package/src/engines/Cesium/Feature/Box/utils.ts +6 -0
  46. package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +0 -1
  47. package/src/engines/Cesium/Feature/Frustum/getFieldOfView.ts +2 -0
  48. package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +0 -1
  49. package/src/engines/Cesium/Feature/HeatMap/HeatmapMesh.tsx +1 -1
  50. package/src/engines/Cesium/Feature/Marker/index.tsx +1 -1
  51. package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -2
  52. package/src/engines/Cesium/Feature/Model/index.tsx +3 -3
  53. package/src/engines/Cesium/Feature/PhotoOverlay/hooks.ts +2 -2
  54. package/src/engines/Cesium/Feature/PhotoOverlay/index.tsx +3 -1
  55. package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +0 -1
  56. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  57. package/src/engines/Cesium/Feature/Raster/index.stories.tsx +0 -1
  58. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  59. package/src/engines/Cesium/Feature/Resource/index.stories.tsx +0 -1
  60. package/src/engines/Cesium/Feature/Resource/index.tsx +1 -27
  61. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  62. package/src/engines/Cesium/Feature/Tileset/hooks.ts +136 -71
  63. package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +0 -1
  64. package/src/engines/Cesium/Feature/Tileset/index.tsx +1 -1
  65. package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +2 -2
  66. package/src/engines/Cesium/Feature/Tileset/useDrawClipping.ts +2 -2
  67. package/src/engines/Cesium/Feature/context.ts +1 -0
  68. package/src/engines/Cesium/Feature/index.tsx +9 -5
  69. package/src/engines/Cesium/Feature/utils.tsx +20 -12
  70. package/src/engines/Cesium/PostProcesses/hbao/AmbientOcclusion.tsx +7 -4
  71. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  72. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  73. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  74. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  75. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  76. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  77. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +126 -35
  78. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  79. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  80. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  81. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  82. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  83. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  84. package/src/engines/Cesium/common.ts +55 -18
  85. package/src/engines/Cesium/core/Clock.tsx +1 -1
  86. package/src/engines/Cesium/core/Globe/index.tsx +73 -0
  87. package/src/engines/Cesium/core/Globe/useTerrainProviderPromise.ts +79 -0
  88. package/src/engines/Cesium/core/Imagery.test.ts +29 -11
  89. package/src/engines/Cesium/core/Imagery.tsx +22 -6
  90. package/src/engines/Cesium/core/Indicator/Indicator.tsx +2 -2
  91. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +13 -6
  92. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryLayer.tsx +2 -1
  93. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryProvider.ts +3 -4
  94. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  95. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/helpers.ts +1 -1
  96. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  97. package/src/engines/Cesium/core/presets.ts +24 -28
  98. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  99. package/src/engines/Cesium/hooks/useCamera.ts +2 -2
  100. package/src/engines/Cesium/hooks/useCameraLimiter.ts +1 -1
  101. package/src/engines/Cesium/hooks/useEngineRef.ts +52 -5
  102. package/src/engines/Cesium/hooks/useExplicitRender.ts +2 -2
  103. package/src/engines/Cesium/hooks/useInstance.ts +1 -1
  104. package/src/engines/Cesium/hooks/useLayerDragDrop.ts +3 -3
  105. package/src/engines/Cesium/hooks/useLayerSelectWithRect.ts +2 -2
  106. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +115 -67
  107. package/src/engines/Cesium/hooks/useViewerProperty.ts +1 -1
  108. package/src/engines/Cesium/hooks.ts +55 -14
  109. package/src/engines/Cesium/index.stories.tsx +0 -1
  110. package/src/engines/Cesium/index.tsx +20 -6
  111. package/src/engines/Cesium/pickMany.ts +2 -0
  112. package/src/engines/Cesium/types.ts +1 -1
  113. package/src/engines/Cesium/utils/mouse.ts +1 -1
  114. package/src/engines/Cesium/utils/utils.ts +1 -1
  115. package/src/mantle/atoms/compute.test.ts +4 -4
  116. package/src/mantle/atoms/compute.ts +8 -4
  117. package/src/mantle/compat/forward.ts +1 -1
  118. package/src/mantle/data/geojson.ts +53 -22
  119. package/src/mantle/data/georss.ts +2 -2
  120. package/src/mantle/data/gml.ts +2 -2
  121. package/src/mantle/data/gpx.ts +2 -2
  122. package/src/mantle/data/shapefile/parseZip.ts +1 -0
  123. package/src/mantle/evaluator/simple/expression/README.md +392 -0
  124. package/src/mantle/evaluator/simple/expression/expression.test.ts +137 -0
  125. package/src/mantle/evaluator/simple/expression/node.ts +10 -12
  126. package/src/mantle/evaluator/simple/expression/variableReplacer.test.ts +178 -0
  127. package/src/mantle/evaluator/simple/expression/variableReplacer.ts +24 -11
  128. package/src/mantle/types/appearance.ts +4 -2
  129. package/src/mantle/types/index.ts +3 -0
  130. package/src/{Visualizer → shared}/interactionMode.ts +3 -2
  131. package/src/test/setup.ts +1 -1
  132. package/src/test/utils.tsx +1 -1
  133. package/src/types/modules.d.ts +96 -0
  134. package/src/utils/StringMatcher.ts +1 -1
  135. package/src/utils/image.ts +2 -12
  136. package/src/utils/use-delayed-count.ts +1 -1
  137. package/src/utils/use-dnd/drop.ts +1 -1
  138. package/src/utils/util.ts +1 -1
  139. package/src/utils/value.ts +2 -2
  140. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  141. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  142. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  143. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  144. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  145. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  146. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  147. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  148. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  149. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  150. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  151. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  152. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  153. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  154. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  155. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  156. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  157. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  158. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  159. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  160. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  161. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  162. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  163. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  164. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  165. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  166. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  167. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  168. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  169. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  170. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  171. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  172. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  173. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  174. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  175. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  176. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  177. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  178. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  179. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  180. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  181. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  182. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  183. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  184. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  185. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  186. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  187. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  188. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  189. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  190. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  191. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  192. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  193. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  194. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  195. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  196. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  197. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  198. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  199. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  200. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  201. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  202. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  203. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  204. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  205. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  206. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  207. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  208. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  209. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  210. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  211. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  212. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  213. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  214. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  215. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  216. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  217. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  218. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  219. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  220. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  221. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  222. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  223. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  271. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  272. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  273. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  274. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  275. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  276. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  277. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  278. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  279. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  280. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  281. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  282. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  283. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  284. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  285. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  286. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  287. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  288. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  289. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  290. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  291. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  292. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  293. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  294. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  295. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  296. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  297. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  298. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  299. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  300. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  301. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  302. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  303. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  304. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  305. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  306. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  307. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  308. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  309. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  310. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  311. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  312. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  313. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  314. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  315. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  316. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  317. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  318. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  319. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  320. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  321. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  322. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  323. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  324. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  325. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  326. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  327. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  328. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  329. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  330. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  331. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  332. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  333. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  334. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  335. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  336. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  337. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  338. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  339. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  340. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  341. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  342. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  343. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  344. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  345. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  346. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  347. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  348. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  349. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  350. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  351. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  352. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  353. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  354. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  355. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  356. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  357. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  358. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  359. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  360. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  361. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  362. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  363. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  364. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  365. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  366. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  367. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  368. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  369. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  370. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  371. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  372. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  373. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  374. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  375. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  376. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  377. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  378. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  379. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  380. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  381. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  382. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  383. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  384. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  385. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  386. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  387. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  388. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  389. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  390. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  391. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  392. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  393. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  394. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  395. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  396. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  397. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  398. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  399. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  400. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  401. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  402. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  403. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  404. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  405. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  406. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  407. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  408. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  409. package/dist/cesium/Widgets/lighter.css +0 -237
  410. package/dist/cesium/Widgets/lighterShared.css +0 -46
  411. package/dist/cesium/Widgets/shared.css +0 -103
  412. package/dist/cesium/Widgets/widgets.css +0 -1346
  413. package/dist/cesium/Workers/chunk-2YD5QWGR.js +0 -28
  414. package/dist/cesium/Workers/chunk-3T4KR75X.js +0 -26
  415. package/dist/cesium/Workers/chunk-46KFVW24.js +0 -26
  416. package/dist/cesium/Workers/chunk-4EI6PP43.js +0 -28
  417. package/dist/cesium/Workers/chunk-4RS52VIY.js +0 -26
  418. package/dist/cesium/Workers/chunk-4YLYA3DC.js +0 -26
  419. package/dist/cesium/Workers/chunk-5ENAGXBI.js +0 -26
  420. package/dist/cesium/Workers/chunk-5VIB3TI5.js +0 -26
  421. package/dist/cesium/Workers/chunk-6NGZLDFZ.js +0 -26
  422. package/dist/cesium/Workers/chunk-6RGNWVZ2.js +0 -27
  423. package/dist/cesium/Workers/chunk-7AZZVJ52.js +0 -26
  424. package/dist/cesium/Workers/chunk-AMXAQQEL.js +0 -26
  425. package/dist/cesium/Workers/chunk-AQW44ZPC.js +0 -26
  426. package/dist/cesium/Workers/chunk-CPCMDW6Z.js +0 -26
  427. package/dist/cesium/Workers/chunk-DNL2WDRL.js +0 -26
  428. package/dist/cesium/Workers/chunk-ERW7V247.js +0 -26
  429. package/dist/cesium/Workers/chunk-EYRIA4TP.js +0 -26
  430. package/dist/cesium/Workers/chunk-F7RQIJML.js +0 -26
  431. package/dist/cesium/Workers/chunk-FPZMU6QP.js +0 -26
  432. package/dist/cesium/Workers/chunk-FZDVQW7A.js +0 -26
  433. package/dist/cesium/Workers/chunk-GAZ2U4FO.js +0 -26
  434. package/dist/cesium/Workers/chunk-I44IOOT4.js +0 -26
  435. package/dist/cesium/Workers/chunk-IALXUAD4.js +0 -26
  436. package/dist/cesium/Workers/chunk-IXBUEUZL.js +0 -26
  437. package/dist/cesium/Workers/chunk-J3GCYV5K.js +0 -26
  438. package/dist/cesium/Workers/chunk-KGSZTFHZ.js +0 -26
  439. package/dist/cesium/Workers/chunk-KKKPU2CI.js +0 -26
  440. package/dist/cesium/Workers/chunk-KTEJE5KE.js +0 -26
  441. package/dist/cesium/Workers/chunk-KYZ3DYY6.js +0 -26
  442. package/dist/cesium/Workers/chunk-L2QG4MRI.js +0 -26
  443. package/dist/cesium/Workers/chunk-MCE3KFYN.js +0 -26
  444. package/dist/cesium/Workers/chunk-MMLDGXML.js +0 -26
  445. package/dist/cesium/Workers/chunk-MTBRPBDQ.js +0 -26
  446. package/dist/cesium/Workers/chunk-OKT6VBRK.js +0 -26
  447. package/dist/cesium/Workers/chunk-PHYDKLSY.js +0 -26
  448. package/dist/cesium/Workers/chunk-PWPX3224.js +0 -26
  449. package/dist/cesium/Workers/chunk-QHOVE6WG.js +0 -26
  450. package/dist/cesium/Workers/chunk-QJ6MBL22.js +0 -26
  451. package/dist/cesium/Workers/chunk-QKO6VIG2.js +0 -26
  452. package/dist/cesium/Workers/chunk-QVEE4QL2.js +0 -26
  453. package/dist/cesium/Workers/chunk-RXQOQZ7S.js +0 -26
  454. package/dist/cesium/Workers/chunk-S3ZKQKMM.js +0 -26
  455. package/dist/cesium/Workers/chunk-SFEUMZSK.js +0 -26
  456. package/dist/cesium/Workers/chunk-T75MW4X3.js +0 -26
  457. package/dist/cesium/Workers/chunk-TVO2A75R.js +0 -66
  458. package/dist/cesium/Workers/chunk-UHR36K45.js +0 -27
  459. package/dist/cesium/Workers/chunk-UKJCDZOR.js +0 -26
  460. package/dist/cesium/Workers/chunk-VKVIYER6.js +0 -26
  461. package/dist/cesium/Workers/chunk-VPIQWTRZ.js +0 -26
  462. package/dist/cesium/Workers/chunk-XSX5HRFC.js +0 -26
  463. package/dist/cesium/Workers/chunk-Z5WQQHSL.js +0 -26
  464. package/dist/cesium/Workers/chunk-Z7B2VEL5.js +0 -26
  465. package/dist/cesium/Workers/combineGeometry.js +0 -26
  466. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  467. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  468. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  469. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  470. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  471. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  472. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  473. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  474. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  475. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  476. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  477. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  478. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  479. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  480. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  481. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  482. package/dist/cesium/Workers/createGeometry.js +0 -26
  483. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  484. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  485. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  486. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  487. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  488. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  489. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  490. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  491. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  492. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  493. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  494. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  495. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  496. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  497. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  498. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  499. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  500. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  501. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  502. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  503. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  504. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  505. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  506. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  507. package/dist/cesium/Workers/decodeDraco.js +0 -26
  508. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  509. package/dist/cesium/Workers/decodeI3S.js +0 -26
  510. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  511. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  512. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  513. package/src/engines/Cesium/core/Globe.tsx +0 -104
  514. /package/src/{Visualizer → shared}/featureFlags.ts +0 -0
  515. /package/src/{Map/Sketch/utils.ts → utils/use-window-event.ts} +0 -0
@@ -27,6 +27,7 @@ import type {
27
27
  import { e2eAccessToken, setE2ECesiumViewer } from "../../e2eConfig";
28
28
  import { ComputedFeature, DataType, SelectedFeatureInfo, LatLng, Camera } from "../../mantle";
29
29
  import {
30
+ Credits,
30
31
  LayerLoadEvent,
31
32
  LayerSelectWithRectEnd,
32
33
  LayerSelectWithRectMove,
@@ -35,9 +36,9 @@ import {
35
36
  RequestingRenderMode,
36
37
  } from "../../Map";
37
38
  import { TimelineManagerRef } from "../../Map/useTimelineManager";
38
- import { FEATURE_FLAGS } from "../../Visualizer/featureFlags";
39
+ import { FEATURE_FLAGS } from "../../shared/featureFlags";
39
40
 
40
- import { isSelectable } from "./common";
41
+ import { getCredits, isSelectable } from "./common";
41
42
  import { getTag, type Context as FeatureContext } from "./Feature";
42
43
  import { arrayToCartecian3 } from "./helpers/sphericalHaromic";
43
44
  import useCamera from "./hooks/useCamera";
@@ -89,6 +90,7 @@ export default ({
89
90
  onLayerLoad,
90
91
  onCameraChange,
91
92
  onMount,
93
+ onCreditsUpdate,
92
94
  }: {
93
95
  ref: React.ForwardedRef<EngineRef>;
94
96
  property?: ViewerProperty;
@@ -97,7 +99,7 @@ export default ({
97
99
  layerId?: string;
98
100
  featureId?: string;
99
101
  };
100
- layersRef?: RefObject<LayersRef>;
102
+ layersRef?: RefObject<LayersRef | null>;
101
103
  selectionReason?: LayerSelectionReason;
102
104
  meta?: Record<string, unknown>;
103
105
  featureFlags: number;
@@ -128,6 +130,7 @@ export default ({
128
130
  onLayerLoad?: (e: LayerLoadEvent) => void;
129
131
  onCameraChange?: (camera: Camera) => void;
130
132
  onMount?: () => void;
133
+ onCreditsUpdate?: (credits: Credits) => void;
131
134
  }) => {
132
135
  const cesium = useRef<CesiumComponentRef<CesiumViewer>>(null);
133
136
 
@@ -237,8 +240,8 @@ export default ({
237
240
  | Primitive
238
241
  | GroundPrimitive
239
242
  | ImageryLayer
240
- >();
241
- const prevSelectedImageryFeatureId = useRef<string | undefined>();
243
+ >(undefined);
244
+ const prevSelectedImageryFeatureId = useRef<string | undefined>(undefined);
242
245
 
243
246
  // manage layer selection
244
247
  useEffect(() => {
@@ -334,8 +337,8 @@ export default ({
334
337
 
335
338
  if (entity) {
336
339
  const layer = tag?.layerId
337
- ? layersRef?.current?.overriddenLayers().find(l => l.id === tag.layerId) ??
338
- layersRef?.current?.findById(tag.layerId)
340
+ ? (layersRef?.current?.overriddenLayers().find(l => l.id === tag.layerId) ??
341
+ layersRef?.current?.findById(tag.layerId))
339
342
  : undefined;
340
343
  // Sometimes only featureId is specified, so we need to sync entity tag.
341
344
  onLayerSelect?.(
@@ -462,8 +465,8 @@ export default ({
462
465
  if (target && "id" in target && target.id instanceof Entity && isSelectable(target.id)) {
463
466
  const tag = getTag(target.id);
464
467
  const layer = tag?.layerId
465
- ? layersRef?.current?.overriddenLayers().find(l => l.id === tag.layerId) ??
466
- layersRef?.current?.findById(tag.layerId)
468
+ ? (layersRef?.current?.overriddenLayers().find(l => l.id === tag.layerId) ??
469
+ layersRef?.current?.findById(tag.layerId))
467
470
  : undefined;
468
471
  onLayerSelect?.(
469
472
  tag?.layerId,
@@ -557,8 +560,11 @@ export default ({
557
560
  if (pickRay) {
558
561
  const l = await scene.imageryLayers.pickImageryLayerFeatures(pickRay, scene);
559
562
 
560
- // NOTE: For now we only send the first selected feature to onLayerSelect instead of sending all of them: @pyshx
561
- const f = l?.[0];
563
+ // Find the topmost overlaid feature.
564
+ const f = l?.findLast(f => {
565
+ const appearanceType = f?.data?.appearanceType;
566
+ return appearanceType && f?.data?.feature?.[appearanceType]?.show !== false;
567
+ });
562
568
 
563
569
  const appearanceType = f?.data?.appearanceType;
564
570
 
@@ -581,8 +587,8 @@ export default ({
581
587
  }
582
588
 
583
589
  const layer = tag?.layerId
584
- ? layersRef?.current?.overriddenLayers().find(l => l.id === tag.layerId) ??
585
- layersRef?.current?.findById(tag.layerId)
590
+ ? (layersRef?.current?.overriddenLayers().find(l => l.id === tag.layerId) ??
591
+ layersRef?.current?.findById(tag.layerId))
586
592
  : undefined;
587
593
  const content = getEntityContent(
588
594
  f.data.feature ?? f,
@@ -648,6 +654,22 @@ export default ({
648
654
  viewer.scene.requestRender();
649
655
  }, []);
650
656
 
657
+ const onCreditsUpdateRef = useRef(onCreditsUpdate);
658
+ onCreditsUpdateRef.current = onCreditsUpdate;
659
+ const updateCredits = useCallback(() => {
660
+ if (!onCreditsUpdateRef.current) return;
661
+ // currently we don't have a proper way to get the credits update event
662
+ // wait for 3 seconds to get latest credits
663
+ // some internal property is been used here.
664
+ setTimeout(() => {
665
+ if (!onCreditsUpdateRef.current) return;
666
+ const viewer = cesium.current?.cesiumElement;
667
+ if (!viewer || viewer.isDestroyed()) return;
668
+ const credits = getCredits(viewer);
669
+ onCreditsUpdateRef.current(credits);
670
+ }, 3000);
671
+ }, []);
672
+
651
673
  const context = useMemo<FeatureContext>(
652
674
  () => ({
653
675
  selectionReason,
@@ -662,8 +684,17 @@ export default ({
662
684
  toXYZ: engineAPI.toXYZ,
663
685
  toWindowPosition: engineAPI.toWindowPosition,
664
686
  isPositionVisible: engineAPI.isPositionVisible,
687
+ updateCredits,
665
688
  }),
666
- [selectionReason, engineAPI, onLayerEdit, onLayerVisibility, onLayerLoad, timelineManagerRef],
689
+ [
690
+ selectionReason,
691
+ engineAPI,
692
+ onLayerEdit,
693
+ onLayerVisibility,
694
+ onLayerLoad,
695
+ timelineManagerRef,
696
+ updateCredits,
697
+ ],
667
698
  );
668
699
 
669
700
  useEffect(() => {
@@ -728,6 +759,14 @@ export default ({
728
759
  unmountCamera?.();
729
760
  }, [unmountCamera]);
730
761
 
762
+ const handleTilesChange = useCallback(() => {
763
+ updateCredits();
764
+ }, [updateCredits]);
765
+
766
+ const handleTerrainProviderChange = useCallback(() => {
767
+ updateCredits();
768
+ }, [updateCredits]);
769
+
731
770
  return {
732
771
  cesium,
733
772
  cesiumIonAccessToken,
@@ -747,6 +786,8 @@ export default ({
747
786
  handleClick,
748
787
  handleMount,
749
788
  handleUnmount,
789
+ handleTilesChange,
790
+ handleTerrainProviderChange,
750
791
  };
751
792
  };
752
793
 
@@ -6,7 +6,6 @@ import { engine } from ".";
6
6
 
7
7
  export default {
8
8
  component: Map,
9
- parameters: { actions: { argTypesRegex: "^on.*" } },
10
9
  } as Meta;
11
10
 
12
11
  const Template: StoryFn<Props> = args => <Map {...args} />;
@@ -47,6 +47,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
47
47
  shouldRender,
48
48
  layerSelectionReason,
49
49
  meta,
50
+ displayCredits,
50
51
  layersRef,
51
52
  featureFlags,
52
53
  requestingRenderMode,
@@ -63,6 +64,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
63
64
  onMount,
64
65
  onLayerVisibility,
65
66
  onLayerLoad,
67
+ onCreditsUpdate,
66
68
  },
67
69
  ref,
68
70
  ) => {
@@ -85,6 +87,8 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
85
87
  handleClick,
86
88
  handleMount,
87
89
  handleUnmount,
90
+ handleTilesChange,
91
+ handleTerrainProviderChange,
88
92
  } = useHooks({
89
93
  ref,
90
94
  property,
@@ -112,6 +116,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
112
116
  onLayerLoad,
113
117
  onCameraChange,
114
118
  onMount,
119
+ onCreditsUpdate,
115
120
  });
116
121
 
117
122
  return (
@@ -133,7 +138,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
133
138
  navigationHelpButton={false}
134
139
  projectionPicker={false}
135
140
  sceneModePicker={false}
136
- creditContainer={creditContainer}
141
+ creditContainer={displayCredits ? undefined : creditContainer}
137
142
  style={{
138
143
  width: small ? "300px" : "auto",
139
144
  height: small ? "300px" : "100%",
@@ -155,10 +160,15 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
155
160
  onMouseMove={mouseEventHandles.mouseMove}
156
161
  onMouseEnter={mouseEventHandles.mouseEnter}
157
162
  onMouseLeave={mouseEventHandles.mouseLeave}
158
- onWheel={mouseEventHandles.wheel}>
163
+ onWheel={mouseEventHandles.wheel}
164
+ automaticallyTrackDataSourceClocks={false}>
159
165
  <Event onMount={handleMount} onUnmount={handleUnmount} />
160
166
  <Clock timelineManagerRef={timelineManagerRef} />
161
- <ImageryLayers tiles={property?.tiles} cesiumIonAccessToken={cesiumIonAccessToken} />
167
+ <ImageryLayers
168
+ tiles={property?.tiles}
169
+ cesiumIonAccessToken={cesiumIonAccessToken}
170
+ onTilesChange={handleTilesChange}
171
+ />
162
172
  <LabelImageryLayers tileLabels={property?.tileLabels} />
163
173
  <Indicator property={property} timelineManagerRef={timelineManagerRef} />
164
174
  <ScreenSpaceEventHandler useDefault>
@@ -201,7 +211,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
201
211
  <ScreenSpaceCameraController
202
212
  maximumZoomDistance={
203
213
  property?.camera?.limiter?.enabled
204
- ? property.camera?.limiter?.targetArea?.height ?? Number.POSITIVE_INFINITY
214
+ ? (property.camera?.limiter?.targetArea?.height ?? Number.POSITIVE_INFINITY)
205
215
  : Number.POSITIVE_INFINITY
206
216
  }
207
217
  enableCollisionDetection={!property?.camera?.allowEnterGround}
@@ -236,7 +246,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
236
246
  light={sceneLight}
237
247
  mode={sceneMode}
238
248
  msaaSamples={sceneMsaaSamples}
239
- useDepthPicking={false}
249
+ useDepthPicking={true}
240
250
  useWebVR={!!property?.scene?.vr || undefined} // NOTE: useWebVR={false} will crash Cesium
241
251
  debugShowFramesPerSecond={!!property?.debug?.showFramesPerSecond}
242
252
  verticalExaggerationRelativeHeight={property?.scene?.verticalExaggerationRelativeHeight}
@@ -252,7 +262,11 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
252
262
  saturationShift={property?.sky?.skyAtmosphere?.saturationShift}
253
263
  brightnessShift={property?.sky?.skyAtmosphere?.brightnessShift}
254
264
  />
255
- <Globe property={property} cesiumIonAccessToken={cesiumIonAccessToken} />
265
+ <Globe
266
+ property={property}
267
+ cesiumIonAccessToken={cesiumIonAccessToken}
268
+ onTerrainProviderChange={handleTerrainProviderChange}
269
+ />
256
270
  <featureContext.Provider value={context}>{ready ? children : null}</featureContext.Provider>
257
271
  <AmbientOcclusion
258
272
  {...AMBIENT_OCCLUSION_QUALITY[property?.render?.ambientOcclusion?.quality || "low"]}
@@ -152,6 +152,8 @@ function getPickCullingVolume(
152
152
  const camera = scene.camera;
153
153
  const frustum = camera.frustum;
154
154
  invariant(frustum instanceof PerspectiveFrustum);
155
+ invariant(frustum.fovy !== undefined);
156
+ invariant(frustum.aspectRatio !== undefined);
155
157
 
156
158
  const near = frustum.near;
157
159
  const tanPhi = Math.tan(frustum.fovy / 2);
@@ -21,4 +21,4 @@ export type PrivateCesiumGlobe = Globe & {
21
21
  };
22
22
  };
23
23
 
24
- export type CursorType = "default" | "auto" | "help" | "pointer" | "grab" | "crosshair";
24
+ export type CursorType = "default" | "auto" | "help" | "pointer" | "grab" | "crosshair" | "wait";
@@ -10,7 +10,7 @@ export const makeMouseEventProps = (viewer: Viewer, e: CesiumMovementEvent) => {
10
10
  const props: MouseEventProps = {
11
11
  x: position?.x,
12
12
  y: position?.y,
13
- ...(position ? getLocationFromScreen(viewer.scene, position.x, position.y, true) ?? {} : {}),
13
+ ...(position ? (getLocationFromScreen(viewer.scene, position.x, position.y, true) ?? {}) : {}),
14
14
  };
15
15
  return props;
16
16
  };
@@ -357,7 +357,7 @@ export const getEntityContent = (
357
357
  },
358
358
  };
359
359
 
360
- return defaultContent ? content[defaultContent] : content.attributes ?? content.description;
360
+ return defaultContent ? content[defaultContent] : (content.attributes ?? content.description);
361
361
  };
362
362
 
363
363
  function propertiesToTableContent(properties: Record<string, any>): { key: string; value: any }[] {
@@ -1,6 +1,6 @@
1
- import { renderHook, act, waitFor } from "@testing-library/react";
1
+ import { renderHook, waitFor } from "@testing-library/react";
2
2
  import { useAtom } from "jotai";
3
- import { useMemo } from "react";
3
+ import { act, useMemo } from "react";
4
4
  import { test, expect, vi, beforeEach } from "vitest";
5
5
 
6
6
  import * as DataCache from "../data";
@@ -79,7 +79,7 @@ test("computeAtom", async () => {
79
79
  result.current.set({ type: "setLayer", layer });
80
80
  });
81
81
 
82
- expect(result.current.result).toEqual({
82
+ (expect(result.current.result).toEqual({
83
83
  id: "xxx",
84
84
  layer,
85
85
  status: "ready",
@@ -94,7 +94,7 @@ test("computeAtom", async () => {
94
94
  features: [],
95
95
  originalFeatures: [],
96
96
  }),
97
- );
97
+ ));
98
98
 
99
99
  // delete delegatedDataTypes
100
100
  act(() => {
@@ -43,7 +43,7 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
43
43
  });
44
44
 
45
45
  const layer = atom<Layer | undefined>(undefined);
46
- const overrides = atom<Record<string, any> | undefined, Record<string, any> | undefined>(
46
+ const overrides = atom<Record<string, any> | undefined, [Record<string, any> | undefined], void>(
47
47
  undefined,
48
48
  (_, set, value) => {
49
49
  set(overrides, pick(value, appearanceKeys));
@@ -68,7 +68,7 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
68
68
  features: get(finalFeatures) ?? [],
69
69
  originalFeatures:
70
70
  currentLayer.type === "simple" && currentLayer.data
71
- ? get(dataAtoms.getAll)(currentLayer.id, currentLayer.data)?.flat() ?? []
71
+ ? (get(dataAtoms.getAll)(currentLayer.id, currentLayer.data)?.flat() ?? [])
72
72
  : [],
73
73
  properties: currentLayer.type === "simple" ? currentLayer.properties : undefined,
74
74
  ...get(computedResult)?.layer,
@@ -109,7 +109,11 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
109
109
  return true;
110
110
  }
111
111
 
112
- const curFeatures = processGeoJSON(currentLayer.data.value);
112
+ const curFeatures = processGeoJSON(
113
+ currentLayer.data.value,
114
+ undefined,
115
+ currentLayer.data.idProperty,
116
+ );
113
117
  if (curFeatures.length === prevFeatures?.length) {
114
118
  return !curFeatures.every((cur, i) => {
115
119
  const prev = prevFeatures[i];
@@ -304,7 +308,7 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
304
308
  await set(compute, { forceUpdateData: true });
305
309
  });
306
310
 
307
- return atom<ComputedLayer | undefined, Command>(
311
+ return atom<ComputedLayer | undefined, [Command], void>(
308
312
  g => g(get),
309
313
  async (_, s, value) => {
310
314
  switch (value.type) {
@@ -9,7 +9,7 @@ import { LegacyCluster } from "./types";
9
9
  import type { LegacyLayer } from ".";
10
10
 
11
11
  export function convertLegacyLayer(l: LegacyLayer | undefined): Layer | undefined {
12
- return l ? convertLegacyLayerGroup(l) ?? convertLegacyLayerItem(l) : undefined;
12
+ return l ? (convertLegacyLayerGroup(l) ?? convertLegacyLayerItem(l)) : undefined;
13
13
  }
14
14
 
15
15
  function convertLegacyLayerCommon(l: LegacyLayer): any {
@@ -10,54 +10,85 @@ export async function fetchGeoJSON(
10
10
  options?: FetchOptions,
11
11
  ): Promise<Feature[] | void> {
12
12
  const d = data.url ? await (await f(data.url, options)).json() : data.value;
13
- return processGeoJSON(d, range);
13
+ return processGeoJSON(d, range, data.idProperty);
14
14
  }
15
15
 
16
- export function processGeoJSON(geojson: GeoJSON, range?: DataRange): Feature[] {
16
+ export function processGeoJSON(
17
+ geojson: GeoJSON,
18
+ range?: DataRange,
19
+ idProperty?: string,
20
+ ): Feature[] {
17
21
  if (geojson.type === "FeatureCollection") {
18
- return geojson.features.flatMap(f => processGeoJSON(f, range));
22
+ return geojson.features.flatMap(f => processGeoJSON(f, range, idProperty));
19
23
  }
20
24
 
21
25
  if (geojson.type === "Feature") {
22
26
  const geo = geojson.geometry;
27
+ if (geo.type === "GeometryCollection") {
28
+ return geo.geometries.flatMap(geometry => {
29
+ return processGeoJSON(
30
+ {
31
+ ...geojson,
32
+ geometry,
33
+ },
34
+ undefined,
35
+ idProperty,
36
+ );
37
+ });
38
+ }
23
39
  if (geo.type === "MultiPoint") {
24
40
  return geo.coordinates.flatMap(coord => {
25
- return processGeoJSON({
26
- ...geojson,
27
- geometry: {
28
- type: "Point",
29
- coordinates: coord,
41
+ return processGeoJSON(
42
+ {
43
+ ...geojson,
44
+ geometry: {
45
+ type: "Point",
46
+ coordinates: coord,
47
+ },
30
48
  },
31
- });
49
+ undefined,
50
+ idProperty,
51
+ );
32
52
  });
33
53
  }
34
54
  if (geo.type === "MultiLineString") {
35
55
  return geo.coordinates.flatMap(coord => {
36
- return processGeoJSON({
37
- ...geojson,
38
- geometry: {
39
- type: "LineString",
40
- coordinates: coord,
56
+ return processGeoJSON(
57
+ {
58
+ ...geojson,
59
+ geometry: {
60
+ type: "LineString",
61
+ coordinates: coord,
62
+ },
41
63
  },
42
- });
64
+ undefined,
65
+ idProperty,
66
+ );
43
67
  });
44
68
  }
45
69
  if (geo.type === "MultiPolygon") {
46
70
  return geo.coordinates.flatMap(coord => {
47
- return processGeoJSON({
48
- ...geojson,
49
- geometry: {
50
- type: "Polygon",
51
- coordinates: coord,
71
+ return processGeoJSON(
72
+ {
73
+ ...geojson,
74
+ geometry: {
75
+ type: "Polygon",
76
+ coordinates: coord,
77
+ },
52
78
  },
53
- });
79
+ undefined,
80
+ idProperty,
81
+ );
54
82
  });
55
83
  }
56
84
 
57
85
  return [
58
86
  {
59
87
  type: "feature",
60
- id: generateRandomString(12),
88
+ id:
89
+ idProperty && geojson.properties && geojson.properties[idProperty]
90
+ ? geojson.properties[idProperty]
91
+ : generateRandomString(12),
61
92
  geometry:
62
93
  geo.type === "Point" || geo.type === "LineString" || geo.type === "Polygon"
63
94
  ? geo
@@ -1,4 +1,4 @@
1
- import { XMLParser, X2jOptionsOptional } from "fast-xml-parser";
1
+ import { XMLParser, type X2jOptions } from "fast-xml-parser";
2
2
 
3
3
  import type { Data, DataRange, Feature, Geometry } from "../types";
4
4
 
@@ -28,7 +28,7 @@ function handler(xmlDataStr: string) {
28
28
  }
29
29
 
30
30
  function parseBuffer(xmlDataStr: string) {
31
- const options: X2jOptionsOptional = {
31
+ const options: X2jOptions = {
32
32
  ignoreAttributes: false,
33
33
  attributeNamePrefix: "",
34
34
  };
@@ -1,4 +1,4 @@
1
- import { XMLParser, X2jOptionsOptional } from "fast-xml-parser";
1
+ import { XMLParser, X2jOptions } from "fast-xml-parser";
2
2
 
3
3
  import type { Data, DataRange, Feature, Geometry } from "../types";
4
4
 
@@ -21,7 +21,7 @@ function handler(xmlDataStr: string) {
21
21
  }
22
22
 
23
23
  function parseBuffer(xmlDataStr: string) {
24
- const options: X2jOptionsOptional = {
24
+ const options: X2jOptions = {
25
25
  ignoreAttributes: false,
26
26
  attributeNamePrefix: "",
27
27
  };
@@ -243,7 +243,7 @@ const parseGPXWithCustomParser = (
243
243
  extensions[name] = parseFloat(
244
244
  (extension as Element).innerHTML != undefined
245
245
  ? (extension as Element).innerHTML
246
- : (extension as Element).childNodes[0].textContent ?? "",
246
+ : ((extension as Element).childNodes[0].textContent ?? ""),
247
247
  );
248
248
  }
249
249
 
@@ -325,7 +325,7 @@ const getElementValue = (parent: Element, tag: string): string => {
325
325
  if (element !== null) {
326
326
  return element.innerHTML != undefined
327
327
  ? element.innerHTML
328
- : element.childNodes[0].textContent ?? "";
328
+ : (element.childNodes[0].textContent ?? "");
329
329
  } else return "";
330
330
  };
331
331
 
@@ -3,6 +3,7 @@ import proj4 from "proj4";
3
3
 
4
4
  import { parseDbf } from "./parseDbf";
5
5
  import { parseShp } from "./parseShp";
6
+
6
7
  import { combine } from ".";
7
8
 
8
9
  export async function parseZip(buffer: ArrayBuffer): Promise<GeoJSON.GeoJSON | GeoJSON.GeoJSON[]> {