@reearth/core 0.0.7-alpha.4 → 0.0.7-alpha.41

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 (452) hide show
  1. package/dist/core.js +44858 -39524
  2. package/dist/core.umd.cjs +3910 -3868
  3. package/dist/{index-DqatWUTw.js → index-DqGWVPtz.js} +0 -1
  4. package/dist/index.d.ts +141 -24
  5. package/package.json +29 -9
  6. package/src/Map/Geoid/index.tsx +68 -0
  7. package/src/Map/Geoid/types.ts +8 -0
  8. package/src/Map/Layer/hooks.ts +6 -3
  9. package/src/Map/Layer/index.tsx +2 -0
  10. package/src/Map/Layers/hooks.ts +27 -0
  11. package/src/Map/Layers/index.tsx +12 -1
  12. package/src/Map/Layers/keys.ts +1 -0
  13. package/src/Map/Sketch/hooks.ts +450 -407
  14. package/src/Map/Sketch/index.tsx +65 -18
  15. package/src/Map/Sketch/sketchMachine.ts +359 -4
  16. package/src/Map/Sketch/sketchMachine.typegen.ts +58 -1
  17. package/src/Map/Sketch/types.ts +10 -20
  18. package/src/Map/Sketch/usePluginSketchLayer.ts +105 -0
  19. package/src/Map/Sketch/useSketch.ts +559 -0
  20. package/src/Map/Sketch/useSketchFeature.ts +198 -0
  21. package/src/Map/SpatialId/constants.ts +21 -0
  22. package/src/Map/SpatialId/hooks.ts +448 -0
  23. package/src/Map/SpatialId/index.tsx +63 -0
  24. package/src/Map/SpatialId/types.ts +68 -0
  25. package/src/Map/SpatialId/utils.ts +65 -0
  26. package/src/Map/hooks.ts +54 -8
  27. package/src/Map/index.tsx +40 -7
  28. package/src/Map/ref.ts +30 -0
  29. package/src/Map/types/index.ts +37 -1
  30. package/src/Map/types/viewerProperty.ts +10 -0
  31. package/src/Visualizer/coreContext.tsx +2 -0
  32. package/src/Visualizer/hooks.ts +46 -12
  33. package/src/Visualizer/index.tsx +22 -3
  34. package/src/Visualizer/interactionMode.ts +2 -1
  35. package/src/engines/Cesium/Feature/Model/index.tsx +3 -3
  36. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  37. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  38. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  39. package/src/engines/Cesium/Feature/Tileset/hooks.ts +75 -35
  40. package/src/engines/Cesium/Feature/context.ts +1 -0
  41. package/src/engines/Cesium/Feature/index.tsx +6 -2
  42. package/src/engines/Cesium/Feature/utils.tsx +9 -5
  43. package/src/engines/Cesium/Shaders/OverriddenShaders/GlobeFS/IBL.glsl +6 -10
  44. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  45. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  46. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  47. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  48. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  49. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  50. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +125 -35
  51. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  52. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  53. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  54. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  55. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  56. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  57. package/src/engines/Cesium/common.ts +52 -16
  58. package/src/engines/Cesium/core/Globe.tsx +11 -2
  59. package/src/engines/Cesium/core/Imagery.tsx +16 -3
  60. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +8 -1
  61. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  62. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  63. package/src/engines/Cesium/core/presets.ts +10 -27
  64. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  65. package/src/engines/Cesium/hooks/useEngineRef.ts +46 -1
  66. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +1 -1
  67. package/src/engines/Cesium/hooks.ts +45 -4
  68. package/src/engines/Cesium/index.tsx +16 -3
  69. package/src/engines/Cesium/types.ts +1 -1
  70. package/src/mantle/atoms/compute.ts +5 -1
  71. package/src/mantle/data/geojson.ts +53 -22
  72. package/src/mantle/evaluator/simple/expression/expression.test.ts +72 -0
  73. package/src/mantle/evaluator/simple/expression/node.ts +10 -12
  74. package/src/mantle/types/appearance.ts +12 -10
  75. package/src/mantle/types/index.ts +3 -0
  76. package/src/utils/image.ts +1 -11
  77. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  78. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  79. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  80. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  81. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  82. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  83. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  84. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  85. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  86. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  87. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  88. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  89. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  90. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  91. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  92. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  93. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  94. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  95. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  96. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  97. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  98. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  99. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  100. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  101. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  102. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  103. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  104. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  105. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  106. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  107. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  108. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  109. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  110. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  111. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  112. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  113. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  114. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  115. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  116. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  117. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  118. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  119. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  120. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  121. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  122. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  123. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  124. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  125. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  126. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  127. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  128. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  129. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  130. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  131. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  132. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  133. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  134. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  135. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  136. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  137. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  138. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  139. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  140. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  141. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  142. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  143. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  144. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  145. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  146. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  147. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  148. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  149. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  150. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  151. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  152. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  153. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  154. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  155. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  156. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  157. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  158. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  159. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  160. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  161. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  162. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  163. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  164. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  165. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  166. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  167. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  168. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  169. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  170. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  171. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  172. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  173. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  174. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  175. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  176. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  177. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  178. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  179. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  180. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  181. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  182. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  183. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  184. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  185. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  186. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  187. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  188. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  189. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  190. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  191. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  192. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  193. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  194. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  195. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  196. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  197. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  198. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  199. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  200. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  201. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  202. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  203. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  204. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  205. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  206. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  207. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  208. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  209. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  210. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  211. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  212. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  213. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  214. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  215. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  216. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  217. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  218. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  219. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  220. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  221. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  222. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  223. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  271. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  272. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  273. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  274. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  275. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  276. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  277. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  278. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  279. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  280. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  281. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  282. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  283. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  284. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  285. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  286. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  287. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  288. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  289. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  290. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  291. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  292. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  293. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  294. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  295. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  296. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  297. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  298. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  299. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  300. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  301. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  302. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  303. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  304. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  305. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  306. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  307. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  308. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  309. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  310. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  311. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  312. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  313. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  314. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  315. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  316. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  317. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  318. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  319. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  320. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  321. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  322. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  323. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  324. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  325. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  326. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  327. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  328. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  329. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  330. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  331. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  332. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  333. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  334. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  335. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  336. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  337. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  338. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  339. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  340. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  341. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  342. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  343. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  344. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  345. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  346. package/dist/cesium/Widgets/lighter.css +0 -237
  347. package/dist/cesium/Widgets/lighterShared.css +0 -46
  348. package/dist/cesium/Widgets/shared.css +0 -103
  349. package/dist/cesium/Widgets/widgets.css +0 -1346
  350. package/dist/cesium/Workers/chunk-2ED5WI77.js +0 -26
  351. package/dist/cesium/Workers/chunk-2MBPFWCP.js +0 -26
  352. package/dist/cesium/Workers/chunk-3C74MLG3.js +0 -26
  353. package/dist/cesium/Workers/chunk-45U7TTT3.js +0 -26
  354. package/dist/cesium/Workers/chunk-4N7SRDH5.js +0 -26
  355. package/dist/cesium/Workers/chunk-4T6AS6BZ.js +0 -26
  356. package/dist/cesium/Workers/chunk-5AG2MVRM.js +0 -26
  357. package/dist/cesium/Workers/chunk-5Z6L2FHX.js +0 -26
  358. package/dist/cesium/Workers/chunk-6AUUBDOF.js +0 -26
  359. package/dist/cesium/Workers/chunk-74N6MC2V.js +0 -26
  360. package/dist/cesium/Workers/chunk-7VJK3KHI.js +0 -26
  361. package/dist/cesium/Workers/chunk-7VZHIB6P.js +0 -26
  362. package/dist/cesium/Workers/chunk-7X2YQ6I4.js +0 -27
  363. package/dist/cesium/Workers/chunk-B2SKQ7LU.js +0 -26
  364. package/dist/cesium/Workers/chunk-B4TQDFIE.js +0 -26
  365. package/dist/cesium/Workers/chunk-B6TRTFAA.js +0 -26
  366. package/dist/cesium/Workers/chunk-BK3HCS7I.js +0 -26
  367. package/dist/cesium/Workers/chunk-BOPB43LN.js +0 -26
  368. package/dist/cesium/Workers/chunk-C6DMEJQ7.js +0 -26
  369. package/dist/cesium/Workers/chunk-CN7UN2OZ.js +0 -26
  370. package/dist/cesium/Workers/chunk-CSISXEG7.js +0 -26
  371. package/dist/cesium/Workers/chunk-CUOR5F7T.js +0 -28
  372. package/dist/cesium/Workers/chunk-DGCK3LD2.js +0 -30
  373. package/dist/cesium/Workers/chunk-DXEZYE3K.js +0 -62
  374. package/dist/cesium/Workers/chunk-EXBFEYPQ.js +0 -26
  375. package/dist/cesium/Workers/chunk-FK5KFB6H.js +0 -26
  376. package/dist/cesium/Workers/chunk-HPBHKP5S.js +0 -26
  377. package/dist/cesium/Workers/chunk-JCJ24DHF.js +0 -26
  378. package/dist/cesium/Workers/chunk-JEWHFDAA.js +0 -26
  379. package/dist/cesium/Workers/chunk-JZLZJJQD.js +0 -26
  380. package/dist/cesium/Workers/chunk-KRZBI2MU.js +0 -26
  381. package/dist/cesium/Workers/chunk-KTTUANTJ.js +0 -26
  382. package/dist/cesium/Workers/chunk-LDCAXLGS.js +0 -26
  383. package/dist/cesium/Workers/chunk-LOPN5R3I.js +0 -26
  384. package/dist/cesium/Workers/chunk-MDLPQIMP.js +0 -26
  385. package/dist/cesium/Workers/chunk-MRR3RGFO.js +0 -26
  386. package/dist/cesium/Workers/chunk-NPBZI5YA.js +0 -26
  387. package/dist/cesium/Workers/chunk-NUSW5B6A.js +0 -26
  388. package/dist/cesium/Workers/chunk-OUXRUXNB.js +0 -26
  389. package/dist/cesium/Workers/chunk-QPOPEH3M.js +0 -26
  390. package/dist/cesium/Workers/chunk-R2AN7EKC.js +0 -26
  391. package/dist/cesium/Workers/chunk-RURL6ZX2.js +0 -26
  392. package/dist/cesium/Workers/chunk-SUQM3OSW.js +0 -28
  393. package/dist/cesium/Workers/chunk-UBIRX2SP.js +0 -26
  394. package/dist/cesium/Workers/chunk-VAKC5J5C.js +0 -26
  395. package/dist/cesium/Workers/chunk-VHNZBQTR.js +0 -27
  396. package/dist/cesium/Workers/chunk-VKV642QV.js +0 -26
  397. package/dist/cesium/Workers/chunk-VMSXG4OA.js +0 -26
  398. package/dist/cesium/Workers/chunk-VQZSIOZW.js +0 -26
  399. package/dist/cesium/Workers/chunk-WZUWQMI7.js +0 -26
  400. package/dist/cesium/Workers/chunk-YBI55DLZ.js +0 -26
  401. package/dist/cesium/Workers/chunk-YEJWCH6C.js +0 -26
  402. package/dist/cesium/Workers/chunk-YPDO7SPO.js +0 -26
  403. package/dist/cesium/Workers/chunk-ZYWD6OQH.js +0 -26
  404. package/dist/cesium/Workers/combineGeometry.js +0 -26
  405. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  406. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  407. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  408. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  409. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  410. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  411. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  412. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  413. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  414. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  415. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  416. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  417. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  418. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  419. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  420. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  421. package/dist/cesium/Workers/createGeometry.js +0 -26
  422. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  423. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  424. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  425. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  426. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  427. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  428. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  429. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  430. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  431. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  432. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  433. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  434. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  435. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  436. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  437. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  438. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  439. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  440. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  441. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  442. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  443. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  444. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  445. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  446. package/dist/cesium/Workers/decodeDraco.js +0 -26
  447. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  448. package/dist/cesium/Workers/decodeI3S.js +0 -26
  449. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  450. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  451. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  452. /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,
@@ -37,7 +38,7 @@ import {
37
38
  import { TimelineManagerRef } from "../../Map/useTimelineManager";
38
39
  import { FEATURE_FLAGS } from "../../Visualizer/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;
@@ -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
 
@@ -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
 
@@ -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
 
@@ -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%",
@@ -158,7 +163,11 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
158
163
  onWheel={mouseEventHandles.wheel}>
159
164
  <Event onMount={handleMount} onUnmount={handleUnmount} />
160
165
  <Clock timelineManagerRef={timelineManagerRef} />
161
- <ImageryLayers tiles={property?.tiles} cesiumIonAccessToken={cesiumIonAccessToken} />
166
+ <ImageryLayers
167
+ tiles={property?.tiles}
168
+ cesiumIonAccessToken={cesiumIonAccessToken}
169
+ onTilesChange={handleTilesChange}
170
+ />
162
171
  <LabelImageryLayers tileLabels={property?.tileLabels} />
163
172
  <Indicator property={property} timelineManagerRef={timelineManagerRef} />
164
173
  <ScreenSpaceEventHandler useDefault>
@@ -252,7 +261,11 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
252
261
  saturationShift={property?.sky?.skyAtmosphere?.saturationShift}
253
262
  brightnessShift={property?.sky?.skyAtmosphere?.brightnessShift}
254
263
  />
255
- <Globe property={property} cesiumIonAccessToken={cesiumIonAccessToken} />
264
+ <Globe
265
+ property={property}
266
+ cesiumIonAccessToken={cesiumIonAccessToken}
267
+ onTerrainProviderChange={handleTerrainProviderChange}
268
+ />
256
269
  <featureContext.Provider value={context}>{ready ? children : null}</featureContext.Provider>
257
270
  <AmbientOcclusion
258
271
  {...AMBIENT_OCCLUSION_QUALITY[property?.render?.ambientOcclusion?.quality || "low"]}
@@ -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";
@@ -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];
@@ -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
@@ -26,6 +26,14 @@ describe("replaceDefines", () => {
26
26
  });
27
27
  expect(result).toBe("(value1) + (value2)");
28
28
  });
29
+
30
+ test("should handle Japanese text with multiple variables", () => {
31
+ const result = replaceDefines("${住所} (${人数}人)", {
32
+ 住所: "東京都渋谷区",
33
+ 人数: "5",
34
+ });
35
+ expect(result).toBe("(東京都渋谷区) ((5)人)");
36
+ });
29
37
  });
30
38
 
31
39
  describe("removeBackslashes", () => {
@@ -40,6 +48,70 @@ describe("removeBackslashes", () => {
40
48
  });
41
49
  });
42
50
 
51
+ describe("Expression evaluation", () => {
52
+ test("should evaluate Japanese expression with feature properties as string literal", () => {
53
+ const expressionString = '"${住所} (${人数}人)"';
54
+ const feature = {
55
+ properties: {
56
+ 住所: "緑町",
57
+ 人数: 2,
58
+ },
59
+ } as Feature;
60
+
61
+ const expression = new Expression(expressionString, feature);
62
+ const result = expression.evaluate();
63
+
64
+ expect(result).toBe("緑町 (2人)");
65
+ });
66
+
67
+ test("should evaluate Japanese expression with two spaces - user observation", () => {
68
+ const expressionString = '"${住所} (${人数}人)"';
69
+ const feature = {
70
+ properties: {
71
+ 住所: "緑町",
72
+ 人数: 2,
73
+ },
74
+ } as Feature;
75
+
76
+ const expression = new Expression(expressionString, feature);
77
+ const result = expression.evaluate();
78
+
79
+ expect(result).toBe("緑町 (2人)");
80
+ });
81
+
82
+ test("should evaluate expression with multiple variables", () => {
83
+ const expressionString = '"${name}: ${住所} (${人数}人) - ${status}"';
84
+ const feature = {
85
+ properties: {
86
+ name: "太郎",
87
+ 住所: "緑町",
88
+ 人数: 2,
89
+ status: "完了",
90
+ },
91
+ } as Feature;
92
+
93
+ const expression = new Expression(expressionString, feature);
94
+ const result = expression.evaluate();
95
+
96
+ expect(result).toBe("太郎: 緑町 (2人) - 完了");
97
+ });
98
+
99
+ test("should evaluate Japanese expression without quotes - shows the issue", () => {
100
+ const expressionString = "${住所} (${人数}人)";
101
+ const feature = {
102
+ properties: {
103
+ 住所: "緑町",
104
+ 人数: 2,
105
+ },
106
+ } as Feature;
107
+
108
+ expect(() => {
109
+ const expression = new Expression(expressionString, feature);
110
+ expression.evaluate();
111
+ }).toThrow('Unexpected function call "czm_住所"');
112
+ });
113
+ });
114
+
43
115
  describe("expression caches", () => {
44
116
  beforeEach(() => {
45
117
  EXPRESSION_CACHES.clear();
@@ -175,18 +175,16 @@ export class Node {
175
175
  }
176
176
  _evaluateVariableString(feature?: Feature) {
177
177
  const variableRegex = /\${(.*?)}/g;
178
- let result = this._value;
179
- let match = variableRegex.exec(result);
180
- while (match !== null) {
181
- const placeholder = match[0];
182
- const variableName = match[1];
183
- let property = feature?.properties[variableName];
184
- if (typeof property === "undefined") {
185
- property = "";
186
- }
187
- result = result.replace(placeholder, property);
188
- match = variableRegex.exec(result);
189
- }
178
+ const result = this._value.replace(
179
+ variableRegex,
180
+ (_placeholder: string, variableName: string) => {
181
+ let property = feature?.properties[variableName];
182
+ if (typeof property === "undefined") {
183
+ property = "";
184
+ }
185
+ return property;
186
+ },
187
+ );
190
188
  return result;
191
189
  }
192
190
  _evaluateVariable(feature?: Feature) {
@@ -60,14 +60,14 @@ export type MarkerAppearance = {
60
60
  label?: boolean;
61
61
  labelText?: string;
62
62
  labelPosition?:
63
- | "left"
64
- | "right"
65
- | "top"
66
- | "bottom"
67
- | "lefttop"
68
- | "leftbottom"
69
- | "righttop"
70
- | "rightbottom";
63
+ | "left"
64
+ | "right"
65
+ | "top"
66
+ | "bottom"
67
+ | "lefttop"
68
+ | "leftbottom"
69
+ | "righttop"
70
+ | "rightbottom";
71
71
  labelTypography?: Typography;
72
72
  labelBackground?: boolean;
73
73
  labelBackgroundColor?: string;
@@ -102,6 +102,7 @@ export type PolygonAppearance = {
102
102
  stroke?: boolean;
103
103
  strokeColor?: string;
104
104
  strokeWidth?: number;
105
+ height?: number;
105
106
  heightReference?: "none" | "clamp" | "relative";
106
107
  shadows?: "disabled" | "enabled" | "cast_only" | "receive_only";
107
108
  lineJoin?: CanvasLineJoin;
@@ -156,6 +157,7 @@ export type ModelAppearance = {
156
157
  model?: string; // For compat
157
158
  url?: string;
158
159
  heightReference?: "none" | "clamp" | "relative";
160
+ height?: number;
159
161
  heading?: number;
160
162
  pitch?: number;
161
163
  roll?: number;
@@ -191,16 +193,16 @@ export type FrustumAppearance = {
191
193
 
192
194
  export type Cesium3DTilesAppearance = {
193
195
  show?: boolean;
196
+ height?: number;
194
197
  color?: string;
195
198
  styleUrl?: string;
196
199
  shadows?: "disabled" | "enabled" | "cast_only" | "receive_only";
197
- colorBlendMode?: "highlight" | "replace" | "mix" | "default";
200
+ colorBlendMode?: "highlight" | "replace" | "mix";
198
201
  edgeWidth?: number;
199
202
  edgeColor?: string;
200
203
  selectedFeatureColor?: string; // This doesn't support expression
201
204
  disableIndexingFeature?: boolean;
202
205
  tileset?: string;
203
- apiKey?: string;
204
206
  experimental_clipping?: EXPERIMENTAL_clipping;
205
207
  pointSize?: number;
206
208
  meta?: unknown;
@@ -76,6 +76,9 @@ export type Data = {
76
76
  updateInterval?: number; // milliseconds
77
77
  parameters?: Record<string, any>;
78
78
  idProperty?: string;
79
+ serviceTokens?: {
80
+ googleMapApiKey?: string;
81
+ };
79
82
  time?: {
80
83
  property?: string;
81
84
  interval?: number; // milliseconds
@@ -1,4 +1,4 @@
1
- import { useState, useEffect, useMemo, useRef } from "react";
1
+ import { useState, useEffect, useRef } from "react";
2
2
 
3
3
  export const useImage = (src?: string): HTMLImageElement | undefined => {
4
4
  const imgRef = useRef<HTMLImageElement>();
@@ -23,13 +23,3 @@ export const useImage = (src?: string): HTMLImageElement | undefined => {
23
23
 
24
24
  return img;
25
25
  };
26
-
27
- export const useCanvas = (cb: (canvas: HTMLCanvasElement) => void): string => {
28
- const can = useMemo(() => document.createElement("canvas"), []);
29
- const [data, setData] = useState<string>("");
30
- useEffect(() => {
31
- cb(can);
32
- setData(can.toDataURL());
33
- }, [can, cb]);
34
- return data;
35
- };