@reearth/core 0.0.7-alpha.7 → 0.0.7-alpha.70

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 (516) hide show
  1. package/LICENSE +177 -0
  2. package/dist/core.js +71433 -61051
  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 +195 -73
  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 +45 -12
  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 +640 -237
  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/customProvider.ts +32 -0
  32. package/src/Map/types/index.ts +42 -3
  33. package/src/Map/types/viewerProperty.ts +12 -1
  34. package/src/Map/useTimelineManager.ts +4 -10
  35. package/src/Map/utils.ts +1 -1
  36. package/src/Visualizer/Error.tsx +4 -1
  37. package/src/Visualizer/context.tsx +5 -5
  38. package/src/Visualizer/coreContext.tsx +3 -1
  39. package/src/Visualizer/hooks.ts +56 -22
  40. package/src/Visualizer/index.stories.tsx +15 -0
  41. package/src/Visualizer/index.tsx +29 -6
  42. package/src/Visualizer/useViewport.ts +1 -1
  43. package/src/engines/Cesium/Feature/Box/hooks/box.ts +4 -4
  44. package/src/engines/Cesium/Feature/Box/hooks/edge.ts +1 -1
  45. package/src/engines/Cesium/Feature/Box/hooks/side.ts +1 -1
  46. package/src/engines/Cesium/Feature/Box/utils.ts +6 -0
  47. package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +0 -1
  48. package/src/engines/Cesium/Feature/Frustum/getFieldOfView.ts +2 -0
  49. package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +0 -1
  50. package/src/engines/Cesium/Feature/HeatMap/HeatmapMesh.tsx +1 -1
  51. package/src/engines/Cesium/Feature/Marker/index.tsx +1 -1
  52. package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -2
  53. package/src/engines/Cesium/Feature/Model/index.tsx +3 -3
  54. package/src/engines/Cesium/Feature/PhotoOverlay/hooks.ts +2 -2
  55. package/src/engines/Cesium/Feature/PhotoOverlay/index.tsx +3 -1
  56. package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +0 -1
  57. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  58. package/src/engines/Cesium/Feature/Raster/index.stories.tsx +0 -1
  59. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  60. package/src/engines/Cesium/Feature/Resource/index.stories.tsx +0 -1
  61. package/src/engines/Cesium/Feature/Resource/index.tsx +1 -27
  62. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  63. package/src/engines/Cesium/Feature/Tileset/hooks.ts +273 -87
  64. package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +0 -1
  65. package/src/engines/Cesium/Feature/Tileset/index.tsx +7 -14
  66. package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +2 -2
  67. package/src/engines/Cesium/Feature/Tileset/useDrawClipping.ts +2 -2
  68. package/src/engines/Cesium/Feature/context.ts +3 -0
  69. package/src/engines/Cesium/Feature/index.tsx +27 -10
  70. package/src/engines/Cesium/Feature/utils.tsx +20 -12
  71. package/src/engines/Cesium/PostProcesses/hbao/AmbientOcclusion.tsx +7 -4
  72. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  73. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  74. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  75. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  76. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  77. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  78. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +126 -35
  79. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  80. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  81. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  82. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  83. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  84. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  85. package/src/engines/Cesium/common.ts +55 -18
  86. package/src/engines/Cesium/core/Clock.tsx +1 -1
  87. package/src/engines/Cesium/core/Globe/index.tsx +69 -0
  88. package/src/engines/Cesium/core/Globe/useTerrainProviderPromise.ts +81 -0
  89. package/src/engines/Cesium/core/Imagery.test.ts +299 -42
  90. package/src/engines/Cesium/core/Imagery.tsx +282 -54
  91. package/src/engines/Cesium/core/Indicator/Indicator.tsx +2 -2
  92. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +13 -6
  93. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryLayer.tsx +2 -1
  94. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryProvider.ts +3 -4
  95. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  96. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/helpers.ts +1 -1
  97. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  98. package/src/engines/Cesium/core/presets.ts +122 -48
  99. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  100. package/src/engines/Cesium/hooks/useCamera.ts +2 -2
  101. package/src/engines/Cesium/hooks/useCameraLimiter.ts +1 -1
  102. package/src/engines/Cesium/hooks/useEngineRef.ts +52 -5
  103. package/src/engines/Cesium/hooks/useExplicitRender.ts +2 -2
  104. package/src/engines/Cesium/hooks/useInstance.ts +1 -1
  105. package/src/engines/Cesium/hooks/useLayerDragDrop.ts +3 -3
  106. package/src/engines/Cesium/hooks/useLayerSelectWithRect.ts +2 -2
  107. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +115 -67
  108. package/src/engines/Cesium/hooks/useViewerProperty.ts +1 -1
  109. package/src/engines/Cesium/hooks.ts +68 -17
  110. package/src/engines/Cesium/index.stories.tsx +0 -1
  111. package/src/engines/Cesium/index.tsx +38 -8
  112. package/src/engines/Cesium/pickMany.ts +2 -0
  113. package/src/engines/Cesium/types.ts +1 -1
  114. package/src/engines/Cesium/utils/mouse.ts +1 -1
  115. package/src/engines/Cesium/utils/utils.ts +1 -1
  116. package/src/mantle/atoms/compute.test.ts +4 -4
  117. package/src/mantle/atoms/compute.ts +8 -4
  118. package/src/mantle/compat/forward.ts +1 -1
  119. package/src/mantle/data/geojson.ts +49 -26
  120. package/src/mantle/data/georss.ts +2 -2
  121. package/src/mantle/data/gml.ts +2 -2
  122. package/src/mantle/data/gpx.ts +2 -2
  123. package/src/mantle/data/shapefile/parseZip.ts +1 -0
  124. package/src/mantle/evaluator/simple/expression/README.md +392 -0
  125. package/src/mantle/evaluator/simple/expression/expression.test.ts +137 -0
  126. package/src/mantle/evaluator/simple/expression/node.ts +10 -12
  127. package/src/mantle/evaluator/simple/expression/variableReplacer.test.ts +178 -0
  128. package/src/mantle/evaluator/simple/expression/variableReplacer.ts +24 -11
  129. package/src/mantle/types/appearance.ts +4 -2
  130. package/src/mantle/types/index.ts +5 -0
  131. package/src/{Visualizer → shared}/interactionMode.ts +3 -2
  132. package/src/test/setup.ts +1 -1
  133. package/src/test/utils.tsx +1 -1
  134. package/src/types/modules.d.ts +96 -0
  135. package/src/utils/StringMatcher.ts +1 -1
  136. package/src/utils/image.ts +2 -12
  137. package/src/utils/use-delayed-count.ts +1 -1
  138. package/src/utils/use-dnd/drop.ts +1 -1
  139. package/src/utils/util.ts +1 -1
  140. package/src/utils/value.ts +2 -2
  141. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  142. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  143. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  144. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  145. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  146. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  147. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  148. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  149. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  150. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  151. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  152. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  153. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  154. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  155. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  156. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  157. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  158. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  159. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  160. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  161. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  162. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  163. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  164. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  165. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  166. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  167. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  168. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  169. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  170. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  171. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  172. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  173. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  174. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  175. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  176. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  177. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  178. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  179. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  180. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  181. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  182. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  183. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  184. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  185. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  186. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  187. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  188. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  189. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  190. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  191. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  192. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  193. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  194. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  195. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  196. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  197. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  198. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  199. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  200. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  201. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  202. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  203. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  204. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  205. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  206. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  207. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  208. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  209. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  210. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  211. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  212. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  213. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  214. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  215. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  216. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  217. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  218. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  219. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  220. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  221. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  222. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  223. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  224. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  271. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  272. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  273. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  274. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  275. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  276. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  277. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  278. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  279. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  280. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  281. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  282. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  283. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  284. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  285. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  286. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  287. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  288. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  289. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  290. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  291. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  292. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  293. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  294. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  295. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  296. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  297. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  298. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  299. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  300. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  301. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  302. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  303. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  304. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  305. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  306. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  307. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  308. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  309. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  310. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  311. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  312. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  313. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  314. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  315. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  316. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  317. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  318. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  319. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  320. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  321. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  322. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  323. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  324. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  325. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  326. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  327. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  328. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  329. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  330. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  331. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  332. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  333. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  334. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  335. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  336. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  337. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  338. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  339. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  340. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  341. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  342. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  343. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  344. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  345. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  346. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  347. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  348. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  349. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  350. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  351. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  352. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  353. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  354. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  355. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  356. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  357. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  358. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  359. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  360. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  361. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  362. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  363. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  364. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  365. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  366. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  367. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  368. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  369. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  370. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  371. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  372. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  373. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  374. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  375. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  376. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  377. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  378. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  379. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  380. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  381. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  382. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  383. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  384. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  385. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  386. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  387. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  388. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  389. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  390. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  391. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  392. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  393. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  394. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  395. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  396. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  397. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  398. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  399. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  400. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  401. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  402. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  403. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  404. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  405. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  406. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  407. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  408. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  409. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  410. package/dist/cesium/Widgets/lighter.css +0 -237
  411. package/dist/cesium/Widgets/lighterShared.css +0 -46
  412. package/dist/cesium/Widgets/shared.css +0 -103
  413. package/dist/cesium/Widgets/widgets.css +0 -1346
  414. package/dist/cesium/Workers/chunk-2YD5QWGR.js +0 -28
  415. package/dist/cesium/Workers/chunk-3T4KR75X.js +0 -26
  416. package/dist/cesium/Workers/chunk-46KFVW24.js +0 -26
  417. package/dist/cesium/Workers/chunk-4EI6PP43.js +0 -28
  418. package/dist/cesium/Workers/chunk-4RS52VIY.js +0 -26
  419. package/dist/cesium/Workers/chunk-4YLYA3DC.js +0 -26
  420. package/dist/cesium/Workers/chunk-5ENAGXBI.js +0 -26
  421. package/dist/cesium/Workers/chunk-5VIB3TI5.js +0 -26
  422. package/dist/cesium/Workers/chunk-6NGZLDFZ.js +0 -26
  423. package/dist/cesium/Workers/chunk-6RGNWVZ2.js +0 -27
  424. package/dist/cesium/Workers/chunk-7AZZVJ52.js +0 -26
  425. package/dist/cesium/Workers/chunk-AMXAQQEL.js +0 -26
  426. package/dist/cesium/Workers/chunk-AQW44ZPC.js +0 -26
  427. package/dist/cesium/Workers/chunk-CPCMDW6Z.js +0 -26
  428. package/dist/cesium/Workers/chunk-DNL2WDRL.js +0 -26
  429. package/dist/cesium/Workers/chunk-ERW7V247.js +0 -26
  430. package/dist/cesium/Workers/chunk-EYRIA4TP.js +0 -26
  431. package/dist/cesium/Workers/chunk-F7RQIJML.js +0 -26
  432. package/dist/cesium/Workers/chunk-FPZMU6QP.js +0 -26
  433. package/dist/cesium/Workers/chunk-FZDVQW7A.js +0 -26
  434. package/dist/cesium/Workers/chunk-GAZ2U4FO.js +0 -26
  435. package/dist/cesium/Workers/chunk-I44IOOT4.js +0 -26
  436. package/dist/cesium/Workers/chunk-IALXUAD4.js +0 -26
  437. package/dist/cesium/Workers/chunk-IXBUEUZL.js +0 -26
  438. package/dist/cesium/Workers/chunk-J3GCYV5K.js +0 -26
  439. package/dist/cesium/Workers/chunk-KGSZTFHZ.js +0 -26
  440. package/dist/cesium/Workers/chunk-KKKPU2CI.js +0 -26
  441. package/dist/cesium/Workers/chunk-KTEJE5KE.js +0 -26
  442. package/dist/cesium/Workers/chunk-KYZ3DYY6.js +0 -26
  443. package/dist/cesium/Workers/chunk-L2QG4MRI.js +0 -26
  444. package/dist/cesium/Workers/chunk-MCE3KFYN.js +0 -26
  445. package/dist/cesium/Workers/chunk-MMLDGXML.js +0 -26
  446. package/dist/cesium/Workers/chunk-MTBRPBDQ.js +0 -26
  447. package/dist/cesium/Workers/chunk-OKT6VBRK.js +0 -26
  448. package/dist/cesium/Workers/chunk-PHYDKLSY.js +0 -26
  449. package/dist/cesium/Workers/chunk-PWPX3224.js +0 -26
  450. package/dist/cesium/Workers/chunk-QHOVE6WG.js +0 -26
  451. package/dist/cesium/Workers/chunk-QJ6MBL22.js +0 -26
  452. package/dist/cesium/Workers/chunk-QKO6VIG2.js +0 -26
  453. package/dist/cesium/Workers/chunk-QVEE4QL2.js +0 -26
  454. package/dist/cesium/Workers/chunk-RXQOQZ7S.js +0 -26
  455. package/dist/cesium/Workers/chunk-S3ZKQKMM.js +0 -26
  456. package/dist/cesium/Workers/chunk-SFEUMZSK.js +0 -26
  457. package/dist/cesium/Workers/chunk-T75MW4X3.js +0 -26
  458. package/dist/cesium/Workers/chunk-TVO2A75R.js +0 -66
  459. package/dist/cesium/Workers/chunk-UHR36K45.js +0 -27
  460. package/dist/cesium/Workers/chunk-UKJCDZOR.js +0 -26
  461. package/dist/cesium/Workers/chunk-VKVIYER6.js +0 -26
  462. package/dist/cesium/Workers/chunk-VPIQWTRZ.js +0 -26
  463. package/dist/cesium/Workers/chunk-XSX5HRFC.js +0 -26
  464. package/dist/cesium/Workers/chunk-Z5WQQHSL.js +0 -26
  465. package/dist/cesium/Workers/chunk-Z7B2VEL5.js +0 -26
  466. package/dist/cesium/Workers/combineGeometry.js +0 -26
  467. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  468. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  469. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  470. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  471. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  472. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  473. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  474. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  475. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  476. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  477. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  478. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  479. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  480. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  481. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  482. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  483. package/dist/cesium/Workers/createGeometry.js +0 -26
  484. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  485. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  486. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  487. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  488. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  489. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  490. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  491. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  492. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  493. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  494. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  495. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  496. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  497. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  498. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  499. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  500. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  501. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  502. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  503. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  504. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  505. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  506. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  507. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  508. package/dist/cesium/Workers/decodeDraco.js +0 -26
  509. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  510. package/dist/cesium/Workers/decodeI3S.js +0 -26
  511. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  512. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  513. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  514. package/src/engines/Cesium/core/Globe.tsx +0 -104
  515. /package/src/{Visualizer → shared}/featureFlags.ts +0 -0
  516. /package/src/{Map/Sketch/utils.ts → utils/use-window-event.ts} +0 -0
@@ -2,6 +2,7 @@ import {
2
2
  Cesium3DTileset as Cesium3DTilesetType,
3
3
  Cesium3DTileStyle,
4
4
  IonResource,
5
+ Resource,
5
6
  ClippingPlane,
6
7
  ClippingPlaneCollection as CesiumClippingPlaneCollection,
7
8
  Cartesian3,
@@ -15,16 +16,22 @@ import {
15
16
  Cesium3DTileFeature,
16
17
  Model,
17
18
  Cesium3DTilePointFeature,
18
- GoogleMaps as CesiumGoogleMaps,
19
- Resource,
20
- defaultValue,
21
19
  ImageBasedLighting,
22
20
  Cesium3DTileContent,
23
21
  Color,
24
22
  Viewer,
23
+ createGooglePhotorealistic3DTileset,
25
24
  } from "cesium";
26
25
  import { pick } from "lodash-es";
27
- import { MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from "react";
26
+ import {
27
+ MutableRefObject,
28
+ useCallback,
29
+ useEffect,
30
+ useLayoutEffect,
31
+ useMemo,
32
+ useRef,
33
+ useState,
34
+ } from "react";
28
35
  import { CesiumComponentRef, useCesium } from "resium";
29
36
 
30
37
  import type {
@@ -57,7 +64,6 @@ import {
57
64
  } from "../utils";
58
65
 
59
66
  import { TilesetFeatureIndex } from "./TilesetFeatureIndex";
60
- import { GoogleMaps } from "./types";
61
67
  import { useClippingBox } from "./useClippingBox";
62
68
  import { useDrawClipping } from "./useDrawClipping";
63
69
 
@@ -77,6 +83,8 @@ const useData = (layer: ComputedLayer | undefined) => {
77
83
  ? data.layers.join(",")
78
84
  : data?.layers
79
85
  : undefined,
86
+ googleMapApiKey: data?.serviceTokens?.googleMapApiKey,
87
+ provider: data?.provider,
80
88
  };
81
89
  }, [layer]);
82
90
  };
@@ -179,7 +187,7 @@ const convertStyle = (val: any, convert: StyleProperty["convert"]) => {
179
187
 
180
188
  const useFeature = ({
181
189
  id,
182
- tileset,
190
+ tilesetRef,
183
191
  idProperty,
184
192
  layer,
185
193
  viewer,
@@ -189,9 +197,10 @@ const useFeature = ({
189
197
  onComputedFeatureFetch,
190
198
  shouldUseFeatureIndex,
191
199
  isTilesetReady,
200
+ useExternalStyle,
192
201
  }: {
193
202
  id?: string;
194
- tileset: MutableRefObject<Cesium3DTileset | undefined>;
203
+ tilesetRef: MutableRefObject<Cesium3DTileset | undefined>;
195
204
  idProperty?: string;
196
205
  layer?: ComputedLayer;
197
206
  viewer?: Viewer;
@@ -201,6 +210,7 @@ const useFeature = ({
201
210
  selectedFeatureIdsRef: MutableRefObject<string[]>;
202
211
  shouldUseFeatureIndex?: boolean;
203
212
  isTilesetReady: boolean;
213
+ useExternalStyle?: boolean;
204
214
  }) => {
205
215
  const cachedFeaturesRef = useRef<CachedFeature[]>([]);
206
216
  const cachedCalculatedLayerRef = useRef(layer);
@@ -222,44 +232,51 @@ const useFeature = ({
222
232
 
223
233
  const computedFeature = evalFeature(layer, { ...feature?.feature, properties });
224
234
 
225
- const style = computedFeature?.["3dtiles"];
226
-
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
- });
235
+ if (!useExternalStyle) {
236
+ const style = computedFeature?.["3dtiles"];
244
237
 
245
- if (raw instanceof Cesium3DTilePointFeature) {
246
- POINT_STYLE_PROPERTIES.forEach(({ name, convert }) => {
238
+ COMMON_STYLE_PROPERTIES.forEach(({ name, convert }) => {
247
239
  const val = convertStyle(style?.[name], convert);
248
- if (val !== undefined) {
249
- raw[name] = val;
240
+
241
+ if (name === "color") {
242
+ // Reset color to default so that new style could update all.
243
+ raw.color = DEFAULT_FEATURE_COLOR;
244
+
245
+ // Apply color from style.
246
+ if (val !== undefined) {
247
+ raw.color = val;
248
+ }
249
+
250
+ // Apply color for selected feature.
251
+ if (isFeatureSelected && typeof layer["3dtiles"]?.selectedFeatureColor === "string") {
252
+ raw.color = toColor(layer["3dtiles"]?.selectedFeatureColor) ?? val;
253
+ }
254
+ } else {
255
+ if (val !== undefined) {
256
+ raw[name] = val;
257
+ }
250
258
  }
251
259
  });
252
- }
253
260
 
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
- );
261
+ if (raw instanceof Cesium3DTilePointFeature) {
262
+ POINT_STYLE_PROPERTIES.forEach(({ name, convert }) => {
263
+ const val = convertStyle(style?.[name], convert);
264
+ if (val !== undefined) {
265
+ raw[name] = val;
266
+ }
267
+ });
268
+ }
269
+
270
+ if ("style" in raw) {
271
+ raw.style = new Cesium3DTileStyle(
272
+ // TODO: Convert value if it's necessary
273
+ MODEL_STYLE_PROPERTIES.reduce((res, { name, convert }) => {
274
+ const val = convertStyle(style?.[name as keyof typeof style], convert);
275
+ if (val === undefined) return res;
276
+ return { ...res, [name]: val };
277
+ }, {}),
278
+ );
279
+ }
263
280
  }
264
281
 
265
282
  attachTag(feature.raw, {
@@ -273,7 +290,7 @@ const useFeature = ({
273
290
  }
274
291
  return;
275
292
  },
276
- [evalFeature, layerId, viewer, shouldUseFeatureIndex, selectedFeatureIdsRef],
293
+ [evalFeature, layerId, viewer, shouldUseFeatureIndex, selectedFeatureIdsRef, useExternalStyle],
277
294
  );
278
295
 
279
296
  const handleTilesetLoad = useCallback(
@@ -324,10 +341,10 @@ const useFeature = ({
324
341
  handleTilesetLoadRef.current = handleTilesetLoad;
325
342
  useEffect(
326
343
  () =>
327
- tileset.current?.tileLoad.addEventListener((t: Cesium3DTile) =>
344
+ tilesetRef.current?.tileLoad.addEventListener((t: Cesium3DTile) =>
328
345
  handleTilesetLoadRef.current(t),
329
346
  ),
330
- [tileset, isTilesetReady],
347
+ [tilesetRef, isTilesetReady],
331
348
  );
332
349
 
333
350
  const handleTilesetUnload = useCallback(
@@ -343,10 +360,10 @@ const useFeature = ({
343
360
  handleTilesetUnloadRef.current = handleTilesetUnload;
344
361
  useEffect(
345
362
  () =>
346
- tileset.current?.tileUnload.addEventListener((t: Cesium3DTile) =>
363
+ tilesetRef.current?.tileUnload.addEventListener((t: Cesium3DTile) =>
347
364
  handleTilesetUnloadRef.current(t),
348
365
  ),
349
- [tileset, isTilesetReady],
366
+ [tilesetRef, isTilesetReady],
350
367
  );
351
368
 
352
369
  useEffect(() => {
@@ -362,7 +379,7 @@ const useFeature = ({
362
379
 
363
380
  // If styles are updated while features are calculating,
364
381
  // we stop calculating features, and reassign styles.
365
- const skippedComputingAt = useRef<number | null>();
382
+ const skippedComputingAt = useRef<number | null>(undefined);
366
383
  useEffect(() => {
367
384
  skippedComputingAt.current = Date.now();
368
385
  }, [pickedAppearance, updateStyle]);
@@ -449,8 +466,8 @@ export const useHooks = ({
449
466
  onLayerFetch?: (value: Partial<Pick<LayerSimple, "properties">>) => void;
450
467
  }) => {
451
468
  const { viewer } = useCesium();
452
- const tilesetRef = useRef<Cesium3DTilesetType>();
453
- const { onLayerLoad } = useContext();
469
+ const tilesetRef = useRef<Cesium3DTilesetType>(undefined);
470
+ const { onLayerLoad, updateCredits, customProvider } = useContext();
454
471
  const layerIdRef = useRef(layer?.id);
455
472
  layerIdRef.current = layer?.id;
456
473
 
@@ -460,7 +477,6 @@ export const useHooks = ({
460
477
  edgeColor,
461
478
  edgeWidth,
462
479
  experimental_clipping,
463
- apiKey,
464
480
  selectedFeatureColor,
465
481
  disableIndexingFeature,
466
482
  } = property ?? {};
@@ -481,10 +497,53 @@ export const useHooks = ({
481
497
  } = useClippingBox({ clipping: experimental_clipping, boxId });
482
498
 
483
499
  const [style, setStyle] = useState<Cesium3DTileStyle>();
484
- const { url, type, idProperty } = useData(layer);
500
+ const { url, type, idProperty, googleMapApiKey, provider } = useData(layer);
501
+ const cesiumIonAccessToken =
502
+ typeof meta?.cesiumIonAccessToken === "string" ? meta.cesiumIonAccessToken : undefined;
485
503
  const shouldUseFeatureIndex = !disableIndexingFeature && !!idProperty;
486
504
 
487
505
  const [isTilesetReady, setIsTilesetReady] = useState(false);
506
+ const [isTilesetCompReady, setIsTilesetCompReady] = useState(false);
507
+ const [isTilesetRefReady, setIsTilesetRefReady] = useState(false);
508
+
509
+ const reearthGooglePhotorealisticUrl = useMemo(
510
+ () =>
511
+ customProvider?.layers?.providers?.find(
512
+ p => p.id === "reearth_google_photorealistic_3d_tiles",
513
+ )?.url,
514
+ [customProvider],
515
+ );
516
+
517
+ const tilesetKey = useMemo(
518
+ () =>
519
+ generateIDWithMD5(
520
+ JSON.stringify({
521
+ type,
522
+ url,
523
+ tileset,
524
+ provider,
525
+ googleMapApiKey,
526
+ reearthGooglePhotorealisticUrl,
527
+ cesiumIonAccessToken:
528
+ type === "osm-buildings" ||
529
+ (type === "google-photorealistic" && (provider === "cesium-ion" || !googleMapApiKey))
530
+ ? cesiumIonAccessToken
531
+ : undefined,
532
+ }),
533
+ ),
534
+ [
535
+ type,
536
+ url,
537
+ tileset,
538
+ provider,
539
+ googleMapApiKey,
540
+ reearthGooglePhotorealisticUrl,
541
+ cesiumIonAccessToken,
542
+ ],
543
+ );
544
+ const currentTilesetKeyRef = useRef(tilesetKey);
545
+ currentTilesetKeyRef.current = tilesetKey;
546
+ const tilesetRefKeyRef = useRef<string | undefined>(undefined);
488
547
 
489
548
  const prevPlanes = useRef(_planes);
490
549
  const planes = useMemo(() => {
@@ -503,8 +562,9 @@ export const useHooks = ({
503
562
  return prevPlanes.current;
504
563
  }, [_planes]);
505
564
  const clipDirection = direction === "inside" ? -1 : 1;
565
+
506
566
  // Create immutable object
507
- const [clippingPlanes] = useState(
567
+ const [clippingPlanes, setClippingPlanes] = useState<CesiumClippingPlaneCollection>(
508
568
  () =>
509
569
  new CesiumClippingPlaneCollection({
510
570
  planes: planes?.map(
@@ -519,6 +579,27 @@ export const useHooks = ({
519
579
  edgeColor: toColor(edgeColor),
520
580
  }),
521
581
  );
582
+ // Initialize clipping planes
583
+ // This is workaround to reinitialize ClippingPlanes in strict mode.
584
+ useEffect(
585
+ () => () => {
586
+ setClippingPlanes(
587
+ new CesiumClippingPlaneCollection({
588
+ planes: planes?.map(
589
+ plane =>
590
+ new ClippingPlane(
591
+ new Cartesian3(plane.normal?.x, plane.normal?.y, plane.normal?.z),
592
+ (plane.distance || 0) * clipDirection,
593
+ ),
594
+ ),
595
+ unionClippingRegions: direction === "outside",
596
+ edgeWidth: edgeWidth,
597
+ edgeColor: toColor(edgeColor),
598
+ }),
599
+ );
600
+ },
601
+ [], // eslint-disable-line react-hooks/exhaustive-deps
602
+ );
522
603
 
523
604
  const { drawClippingEnabled, drawClippingEdgeProps } = useDrawClipping({
524
605
  ...experimental_clipping?.draw,
@@ -531,19 +612,25 @@ export const useHooks = ({
531
612
 
532
613
  const ref = useCallback(
533
614
  (tileset: CesiumComponentRef<Cesium3DTilesetType> | null) => {
534
- if (tileset?.cesiumElement) {
535
- attachTag(tileset.cesiumElement, {
615
+ const cesiumElement = tileset?.cesiumElement;
616
+ if (tilesetKey !== currentTilesetKeyRef.current) {
617
+ return;
618
+ }
619
+ if (cesiumElement) {
620
+ attachTag(cesiumElement, {
536
621
  layerId: layer?.id || id,
537
622
  featureIndex: shouldUseFeatureIndex ? featureIndex : undefined,
538
623
  appearanceType: "3dtiles",
539
624
  });
540
625
  }
541
- if (layer?.id && tileset?.cesiumElement) {
542
- (tileset?.cesiumElement as any)[layerIdField] = layer.id;
626
+ if (layer?.id && cesiumElement) {
627
+ (cesiumElement as any)[layerIdField] = layer.id;
543
628
  }
544
- tilesetRef.current = tileset?.cesiumElement;
629
+ tilesetRef.current = cesiumElement;
630
+ tilesetRefKeyRef.current = cesiumElement ? tilesetKey : undefined;
631
+ setIsTilesetRefReady(!!cesiumElement);
545
632
  },
546
- [id, layer?.id, featureIndex, shouldUseFeatureIndex],
633
+ [id, layer?.id, featureIndex, shouldUseFeatureIndex, tilesetKey],
547
634
  );
548
635
 
549
636
  const selectedFeatureIdsRef = useRef<string[]>([]);
@@ -551,6 +638,20 @@ export const useHooks = ({
551
638
  selectedFeatureColorRef.current = selectedFeatureColor;
552
639
  const [selectedFeatureColorMap] = useState(() => new Map<string, Color>());
553
640
 
641
+ // The Cesium3DTileset child remounts when tilesetKey changes, while this hook stays mounted.
642
+ useLayoutEffect(() => {
643
+ setIsTilesetCompReady(false);
644
+ setIsTilesetReady(false);
645
+ if (tilesetRefKeyRef.current !== tilesetKey) {
646
+ tilesetRef.current = undefined;
647
+ tilesetRefKeyRef.current = undefined;
648
+ setIsTilesetRefReady(false);
649
+ }
650
+ featureIndex.records.clear();
651
+ selectedFeatureIdsRef.current = [];
652
+ selectedFeatureColorMap.clear();
653
+ }, [tilesetKey, featureIndex, selectedFeatureColorMap]);
654
+
554
655
  useEffect(() => {
555
656
  if (!tilesetRef.current || !shouldUseFeatureIndex || !isTilesetReady) return;
556
657
  Object.assign(tilesetRef.current, {
@@ -578,7 +679,7 @@ export const useHooks = ({
578
679
 
579
680
  useFeature({
580
681
  id,
581
- tileset: tilesetRef,
682
+ tilesetRef,
582
683
  layer,
583
684
  idProperty,
584
685
  viewer,
@@ -588,6 +689,7 @@ export const useHooks = ({
588
689
  selectedFeatureIdsRef,
589
690
  shouldUseFeatureIndex,
590
691
  isTilesetReady,
692
+ useExternalStyle: !!styleUrl,
591
693
  });
592
694
 
593
695
  const [terrainHeightEstimate, setTerrainHeightEstimate] = useState(0);
@@ -703,36 +805,88 @@ export const useHooks = ({
703
805
  }
704
806
  (async () => {
705
807
  const res = await fetch(styleUrl);
706
- if (!res.ok) return;
707
- setStyle(new Cesium3DTileStyle(await res.json()));
808
+ if (!res.ok) {
809
+ console.warn("Failed to fetch style from:", styleUrl);
810
+ return;
811
+ }
812
+ const styleData = await res.json();
813
+ const newStyle = new Cesium3DTileStyle(styleData);
814
+ setStyle(newStyle);
708
815
  })();
709
816
  }, [styleUrl]);
710
817
 
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]);
724
-
725
- const tilesetUrl = useMemo(() => {
726
- return type === "osm-buildings" && isVisible
727
- ? IonResource.fromAssetId(96188, {
728
- accessToken: meta?.cesiumIonAccessToken as string | undefined,
729
- }) // https://github.com/CesiumGS/cesium/blob/main/packages/engine/Source/Scene/createOsmBuildings.js#L53
730
- : googleMapResource
731
- ? googleMapResource
732
- : type === "3dtiles" && isVisible
733
- ? url ?? tileset
734
- : null;
735
- }, [isVisible, tileset, url, type, meta, googleMapResource]);
818
+ // Apply style to tileset when both external style and tileset are ready
819
+ useEffect(() => {
820
+ if (style && tilesetRef.current && isTilesetReady) {
821
+ tilesetRef.current.style = style;
822
+ }
823
+ }, [style, isTilesetReady]);
824
+
825
+ const googleMapPhotorealisticResource = useMemo((): string | Promise<Resource> | null => {
826
+ if (type !== "google-photorealistic" || !isVisible) return null;
827
+
828
+ // For Re:Earth provider, use the custom URL from customProvider or layer data
829
+ if (provider === "reearth") {
830
+ return reearthGooglePhotorealisticUrl || url || null;
831
+ }
832
+
833
+ // Otherwise load via Google API key or Cesium Ion.
834
+ const loadTileset = async (): Promise<Resource> => {
835
+ try {
836
+ if (provider === "cesium-ion" || !googleMapApiKey) {
837
+ const resource = await IonResource.fromAssetId(2275207, {
838
+ accessToken: cesiumIonAccessToken,
839
+ });
840
+ return resource;
841
+ }
842
+ const tileset = await createGooglePhotorealistic3DTileset({
843
+ key: googleMapApiKey,
844
+ });
845
+ return tileset.resource;
846
+ } catch (error) {
847
+ console.error(`Error loading Photorealistic 3D Tiles tileset: ${error}`);
848
+ throw error;
849
+ }
850
+ };
851
+
852
+ return loadTileset();
853
+ }, [
854
+ type,
855
+ isVisible,
856
+ googleMapApiKey,
857
+ cesiumIonAccessToken,
858
+ provider,
859
+ reearthGooglePhotorealisticUrl,
860
+ url,
861
+ ]);
862
+
863
+ const tilesetUrl = useMemo((): string | Resource | Promise<Resource> | null => {
864
+ if (!isVisible) return null;
865
+
866
+ // Google Photorealistic 3D Tiles
867
+ if (googleMapPhotorealisticResource) {
868
+ return googleMapPhotorealisticResource;
869
+ }
870
+
871
+ // Re:Earth Buildings — use layer's own url if provided, otherwise fall back to public service
872
+ if (type === "reearth-buildings") {
873
+ return url ?? "https://buildings.reearth.land/tileset.json";
874
+ }
875
+
876
+ // OSM Buildings — only available via Cesium Ion.
877
+ if (type === "osm-buildings") {
878
+ return IonResource.fromAssetId(96188, {
879
+ accessToken: cesiumIonAccessToken,
880
+ }); // https://github.com/CesiumGS/cesium/blob/main/packages/engine/Source/Scene/createOsmBuildings.js#L53
881
+ }
882
+
883
+ // Standard 3D Tiles with explicit URL
884
+ if (type === "3dtiles") {
885
+ return url ?? tileset ?? null;
886
+ }
887
+
888
+ return null;
889
+ }, [type, isVisible, googleMapPhotorealisticResource, url, tileset, cesiumIonAccessToken]);
736
890
 
737
891
  const imageBasedLighting = useMemo(() => {
738
892
  if (
@@ -773,14 +927,45 @@ export const useHooks = ({
773
927
 
774
928
  const handleReady = useCallback(
775
929
  (tileset: Cesium3DTileset) => {
776
- setIsTilesetReady(true);
930
+ if (tilesetKey !== currentTilesetKeyRef.current) {
931
+ return;
932
+ }
933
+ setIsTilesetCompReady(true);
777
934
  onLayerFetch?.({ properties: tileset.properties });
778
935
  onLayerLoad?.({ layerId: layerIdRef.current });
779
936
  },
780
- [onLayerFetch, onLayerLoad],
937
+ [onLayerFetch, onLayerLoad, tilesetKey],
938
+ );
939
+
940
+ const handleError = useCallback(
941
+ (error: unknown) => {
942
+ if (tilesetKey !== currentTilesetKeyRef.current) {
943
+ return;
944
+ }
945
+ tilesetRef.current = undefined;
946
+ tilesetRefKeyRef.current = undefined;
947
+ setIsTilesetCompReady(false);
948
+ setIsTilesetRefReady(false);
949
+ setIsTilesetReady(false);
950
+ console.error("Error loading Cesium 3D Tileset:", error);
951
+ },
952
+ [tilesetKey],
781
953
  );
782
954
 
955
+ useEffect(() => {
956
+ if (!isTilesetCompReady || !isTilesetRefReady) return;
957
+ setIsTilesetReady(true);
958
+ }, [isTilesetCompReady, isTilesetRefReady]);
959
+
960
+ useEffect(() => {
961
+ updateCredits?.();
962
+ return () => {
963
+ updateCredits?.();
964
+ };
965
+ }, [type, updateCredits]);
966
+
783
967
  return {
968
+ tilesetKey,
784
969
  tilesetUrl,
785
970
  ref,
786
971
  style,
@@ -790,5 +975,6 @@ export const useHooks = ({
790
975
  builtinBoxProps,
791
976
  imageBasedLighting,
792
977
  handleReady,
978
+ handleError,
793
979
  };
794
980
  };
@@ -5,7 +5,6 @@ import { Map, Props } from "../../../../Map";
5
5
 
6
6
  export default {
7
7
  component: Map,
8
- parameters: { actions: { argTypesRegex: "^on.*" } },
9
8
  } as Meta;
10
9
 
11
10
  const Template: StoryFn<Props> = args => <Map {...args} />;
@@ -1,4 +1,4 @@
1
- import { memo, useMemo } from "react";
1
+ import { useMemo, type JSX } from "react";
2
2
  import { Cesium3DTileset } from "resium";
3
3
 
4
4
  import type { Cesium3DTilesAppearance, ComputedLayer } from "../../..";
@@ -37,6 +37,7 @@ function Tileset({
37
37
  property ?? {};
38
38
  const boxId = `${layer?.id}_box`;
39
39
  const {
40
+ tilesetKey,
40
41
  tilesetUrl,
41
42
  ref,
42
43
  style,
@@ -46,6 +47,7 @@ function Tileset({
46
47
  builtinBoxProps,
47
48
  imageBasedLighting,
48
49
  handleReady,
50
+ handleError,
49
51
  } = useHooks({
50
52
  id,
51
53
  boxId,
@@ -72,6 +74,7 @@ function Tileset({
72
74
  return !isVisible || !tilesetUrl ? null : (
73
75
  <>
74
76
  <Cesium3DTileset
77
+ key={tilesetKey}
75
78
  ref={ref}
76
79
  url={tilesetUrl}
77
80
  customShader={
@@ -88,8 +91,10 @@ function Tileset({
88
91
  colorBlendMode={colorBlendModeFor3DTile(colorBlendMode)}
89
92
  imageBasedLighting={imageBasedLighting}
90
93
  onReady={handleReady}
94
+ onError={handleError}
91
95
  debugWireframe={showWireframe}
92
96
  debugShowBoundingVolume={showBoundingVolume}
97
+ showCreditsOnScreen
93
98
  />
94
99
  {builtinBoxProps && (
95
100
  <Box
@@ -110,19 +115,7 @@ function Tileset({
110
115
  );
111
116
  }
112
117
 
113
- export default memo(
114
- Tileset,
115
- (prev, next) =>
116
- prev.id === next.id &&
117
- prev.isVisible === next.isVisible &&
118
- prev.property === next.property &&
119
- prev.layer?.layer === next.layer?.layer &&
120
- prev.viewerProperty === next.viewerProperty &&
121
- prev.meta === next.meta &&
122
- prev.evalFeature === next.evalFeature &&
123
- prev.onComputedFeatureFetch === next.onComputedFeatureFetch &&
124
- prev.onFeatureDelete === next.onFeatureDelete,
125
- );
118
+ export default Tileset;
126
119
 
127
120
  export const config: FeatureComponentConfig = {
128
121
  noFeature: true,
@@ -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);
@@ -69,11 +69,11 @@ export const useDrawClipping = ({
69
69
  const polygon = turf.polygon([surfacePoints.map(p => [p.lng, p.lat])]);
70
70
  const center = turf.centroid(polygon);
71
71
  const baseHeight = viewer?.scene
72
- ? (await sampleTerrainHeight(
72
+ ? ((await sampleTerrainHeight(
73
73
  viewer?.scene,
74
74
  center.geometry.coordinates[0],
75
75
  center.geometry.coordinates[1],
76
- )) ?? 0
76
+ )) ?? 0)
77
77
  : 0;
78
78
  setBaseHeight(baseHeight);
79
79
 
@@ -3,12 +3,14 @@ import { createContext, useContext as useReactContext } from "react";
3
3
 
4
4
  import type { Camera, LayerSelectionReason } from "../..";
5
5
  import { LayerEditEvent, LayerLoadEvent, LayerVisibilityEvent } from "../../../Map";
6
+ import type { CustomProviderConfig } from "../../../Map/types/customProvider";
6
7
  import { TimelineManagerRef } from "../../../Map/useTimelineManager";
7
8
  import type { FlyTo } from "../../../types";
8
9
 
9
10
  export type Context = {
10
11
  selectionReason?: LayerSelectionReason;
11
12
  timelineManagerRef?: TimelineManagerRef;
13
+ customProvider?: CustomProviderConfig;
12
14
  getCamera?: () => Camera | undefined;
13
15
  flyTo?: FlyTo;
14
16
  onLayerEdit?: (e: LayerEditEvent) => void;
@@ -26,6 +28,7 @@ export type Context = {
26
28
  position: [x: number, y: number, z: number],
27
29
  ) => [x: number, y: number] | undefined;
28
30
  isPositionVisible?: (position: [x: number, y: number, z: number]) => boolean;
31
+ updateCredits?: () => void;
29
32
  };
30
33
 
31
34
  export const context = createContext<Context>({});