@reearth/core 0.0.7-alpha.3 → 0.0.7-alpha.31

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 (445) hide show
  1. package/dist/core.js +44780 -39501
  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 +119 -25
  5. package/package.json +29 -9
  6. package/src/Map/Layer/hooks.ts +6 -3
  7. package/src/Map/Layer/index.tsx +2 -0
  8. package/src/Map/Layers/hooks.ts +27 -0
  9. package/src/Map/Layers/index.tsx +12 -1
  10. package/src/Map/Layers/keys.ts +1 -0
  11. package/src/Map/Sketch/hooks.ts +449 -406
  12. package/src/Map/Sketch/index.tsx +65 -18
  13. package/src/Map/Sketch/sketchMachine.ts +359 -4
  14. package/src/Map/Sketch/sketchMachine.typegen.ts +58 -1
  15. package/src/Map/Sketch/types.ts +10 -20
  16. package/src/Map/Sketch/usePluginSketchLayer.ts +105 -0
  17. package/src/Map/Sketch/useSketch.ts +559 -0
  18. package/src/Map/Sketch/useSketchFeature.ts +198 -0
  19. package/src/Map/SpatialId/constants.ts +16 -0
  20. package/src/Map/SpatialId/hooks.ts +382 -0
  21. package/src/Map/SpatialId/index.tsx +60 -0
  22. package/src/Map/SpatialId/types.ts +68 -0
  23. package/src/Map/SpatialId/utils.ts +64 -0
  24. package/src/Map/hooks.ts +50 -8
  25. package/src/Map/index.tsx +36 -7
  26. package/src/Map/ref.ts +21 -0
  27. package/src/Map/types/index.ts +29 -1
  28. package/src/Map/types/viewerProperty.ts +2 -0
  29. package/src/Visualizer/coreContext.tsx +2 -0
  30. package/src/Visualizer/hooks.ts +46 -12
  31. package/src/Visualizer/index.tsx +22 -3
  32. package/src/Visualizer/interactionMode.ts +2 -1
  33. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  34. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  35. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  36. package/src/engines/Cesium/Feature/Tileset/hooks.ts +52 -24
  37. package/src/engines/Cesium/Feature/context.ts +1 -0
  38. package/src/engines/Cesium/Feature/index.tsx +6 -2
  39. package/src/engines/Cesium/Feature/utils.tsx +9 -4
  40. package/src/engines/Cesium/Shaders/OverriddenShaders/GlobeFS/IBL.glsl +6 -10
  41. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  42. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  43. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  44. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  45. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  46. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  47. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +125 -35
  48. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  49. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  50. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  51. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  52. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  53. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  54. package/src/engines/Cesium/common.ts +46 -12
  55. package/src/engines/Cesium/core/Globe.tsx +11 -2
  56. package/src/engines/Cesium/core/Imagery.tsx +16 -3
  57. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +8 -1
  58. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  59. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  60. package/src/engines/Cesium/core/presets.ts +0 -11
  61. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  62. package/src/engines/Cesium/hooks/useEngineRef.ts +46 -1
  63. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +1 -1
  64. package/src/engines/Cesium/hooks.ts +45 -4
  65. package/src/engines/Cesium/index.tsx +16 -3
  66. package/src/mantle/atoms/compute.ts +5 -1
  67. package/src/mantle/data/geojson.ts +53 -22
  68. package/src/mantle/types/appearance.ts +2 -2
  69. package/src/mantle/types/index.ts +3 -0
  70. package/src/utils/image.ts +1 -11
  71. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  72. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  73. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  74. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  75. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  76. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  77. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  78. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  79. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  80. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  81. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  82. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  83. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  84. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  85. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  86. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  87. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  88. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  89. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  90. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  91. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  92. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  93. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  94. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  95. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  96. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  97. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  98. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  99. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  100. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  101. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  102. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  103. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  104. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  105. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  106. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  107. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  108. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  109. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  110. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  111. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  112. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  113. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  114. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  115. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  116. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  117. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  118. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  119. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  120. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  121. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  122. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  123. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  124. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  125. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  126. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  127. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  128. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  129. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  130. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  131. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  132. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  133. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  134. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  135. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  136. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  137. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  138. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  139. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  140. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  141. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  142. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  143. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  144. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  145. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  146. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  147. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  148. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  149. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  150. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  151. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  152. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  153. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  154. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  155. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  156. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  157. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  158. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  159. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  160. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  161. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  162. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  163. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  164. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  165. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  166. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  167. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  168. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  169. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  170. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  171. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  172. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  173. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  174. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  175. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  176. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  177. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  178. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  179. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  180. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  181. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  182. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  183. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  184. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  185. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  186. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  187. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  188. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  189. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  190. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  191. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  192. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  193. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  194. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  195. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  196. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  197. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  198. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  199. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  200. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  201. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  202. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  203. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  204. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  205. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  206. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  207. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  208. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  209. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  210. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  211. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  212. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  213. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  214. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  215. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  216. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  217. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  218. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  219. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  220. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  221. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  222. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  223. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  271. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  272. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  273. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  274. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  275. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  276. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  277. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  278. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  279. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  280. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  281. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  282. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  283. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  284. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  285. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  286. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  287. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  288. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  289. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  290. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  291. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  292. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  293. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  294. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  295. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  296. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  297. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  298. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  299. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  300. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  301. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  302. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  303. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  304. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  305. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  306. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  307. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  308. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  309. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  310. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  311. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  312. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  313. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  314. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  315. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  316. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  317. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  318. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  319. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  320. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  321. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  322. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  323. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  324. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  325. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  326. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  327. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  328. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  329. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  330. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  331. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  332. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  333. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  334. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  335. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  336. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  337. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  338. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  339. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  340. package/dist/cesium/Widgets/lighter.css +0 -237
  341. package/dist/cesium/Widgets/lighterShared.css +0 -46
  342. package/dist/cesium/Widgets/shared.css +0 -103
  343. package/dist/cesium/Widgets/widgets.css +0 -1346
  344. package/dist/cesium/Workers/chunk-2ED5WI77.js +0 -26
  345. package/dist/cesium/Workers/chunk-2MBPFWCP.js +0 -26
  346. package/dist/cesium/Workers/chunk-3C74MLG3.js +0 -26
  347. package/dist/cesium/Workers/chunk-45U7TTT3.js +0 -26
  348. package/dist/cesium/Workers/chunk-4N7SRDH5.js +0 -26
  349. package/dist/cesium/Workers/chunk-4T6AS6BZ.js +0 -26
  350. package/dist/cesium/Workers/chunk-5AG2MVRM.js +0 -26
  351. package/dist/cesium/Workers/chunk-5Z6L2FHX.js +0 -26
  352. package/dist/cesium/Workers/chunk-6AUUBDOF.js +0 -26
  353. package/dist/cesium/Workers/chunk-74N6MC2V.js +0 -26
  354. package/dist/cesium/Workers/chunk-7VJK3KHI.js +0 -26
  355. package/dist/cesium/Workers/chunk-7VZHIB6P.js +0 -26
  356. package/dist/cesium/Workers/chunk-7X2YQ6I4.js +0 -27
  357. package/dist/cesium/Workers/chunk-B2SKQ7LU.js +0 -26
  358. package/dist/cesium/Workers/chunk-B4TQDFIE.js +0 -26
  359. package/dist/cesium/Workers/chunk-B6TRTFAA.js +0 -26
  360. package/dist/cesium/Workers/chunk-BK3HCS7I.js +0 -26
  361. package/dist/cesium/Workers/chunk-BOPB43LN.js +0 -26
  362. package/dist/cesium/Workers/chunk-C6DMEJQ7.js +0 -26
  363. package/dist/cesium/Workers/chunk-CN7UN2OZ.js +0 -26
  364. package/dist/cesium/Workers/chunk-CSISXEG7.js +0 -26
  365. package/dist/cesium/Workers/chunk-CUOR5F7T.js +0 -28
  366. package/dist/cesium/Workers/chunk-DGCK3LD2.js +0 -30
  367. package/dist/cesium/Workers/chunk-DXEZYE3K.js +0 -62
  368. package/dist/cesium/Workers/chunk-EXBFEYPQ.js +0 -26
  369. package/dist/cesium/Workers/chunk-FK5KFB6H.js +0 -26
  370. package/dist/cesium/Workers/chunk-HPBHKP5S.js +0 -26
  371. package/dist/cesium/Workers/chunk-JCJ24DHF.js +0 -26
  372. package/dist/cesium/Workers/chunk-JEWHFDAA.js +0 -26
  373. package/dist/cesium/Workers/chunk-JZLZJJQD.js +0 -26
  374. package/dist/cesium/Workers/chunk-KRZBI2MU.js +0 -26
  375. package/dist/cesium/Workers/chunk-KTTUANTJ.js +0 -26
  376. package/dist/cesium/Workers/chunk-LDCAXLGS.js +0 -26
  377. package/dist/cesium/Workers/chunk-LOPN5R3I.js +0 -26
  378. package/dist/cesium/Workers/chunk-MDLPQIMP.js +0 -26
  379. package/dist/cesium/Workers/chunk-MRR3RGFO.js +0 -26
  380. package/dist/cesium/Workers/chunk-NPBZI5YA.js +0 -26
  381. package/dist/cesium/Workers/chunk-NUSW5B6A.js +0 -26
  382. package/dist/cesium/Workers/chunk-OUXRUXNB.js +0 -26
  383. package/dist/cesium/Workers/chunk-QPOPEH3M.js +0 -26
  384. package/dist/cesium/Workers/chunk-R2AN7EKC.js +0 -26
  385. package/dist/cesium/Workers/chunk-RURL6ZX2.js +0 -26
  386. package/dist/cesium/Workers/chunk-SUQM3OSW.js +0 -28
  387. package/dist/cesium/Workers/chunk-UBIRX2SP.js +0 -26
  388. package/dist/cesium/Workers/chunk-VAKC5J5C.js +0 -26
  389. package/dist/cesium/Workers/chunk-VHNZBQTR.js +0 -27
  390. package/dist/cesium/Workers/chunk-VKV642QV.js +0 -26
  391. package/dist/cesium/Workers/chunk-VMSXG4OA.js +0 -26
  392. package/dist/cesium/Workers/chunk-VQZSIOZW.js +0 -26
  393. package/dist/cesium/Workers/chunk-WZUWQMI7.js +0 -26
  394. package/dist/cesium/Workers/chunk-YBI55DLZ.js +0 -26
  395. package/dist/cesium/Workers/chunk-YEJWCH6C.js +0 -26
  396. package/dist/cesium/Workers/chunk-YPDO7SPO.js +0 -26
  397. package/dist/cesium/Workers/chunk-ZYWD6OQH.js +0 -26
  398. package/dist/cesium/Workers/combineGeometry.js +0 -26
  399. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  400. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  401. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  402. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  403. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  404. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  405. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  406. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  407. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  408. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  409. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  410. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  411. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  412. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  413. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  414. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  415. package/dist/cesium/Workers/createGeometry.js +0 -26
  416. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  417. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  418. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  419. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  420. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  421. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  422. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  423. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  424. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  425. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  426. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  427. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  428. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  429. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  430. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  431. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  432. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  433. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  434. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  435. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  436. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  437. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  438. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  439. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  440. package/dist/cesium/Workers/decodeDraco.js +0 -26
  441. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  442. package/dist/cesium/Workers/decodeI3S.js +0 -26
  443. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  444. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  445. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
@@ -12,6 +12,7 @@ import {
12
12
  type LatLng,
13
13
  type Cluster,
14
14
  type ComputedLayer,
15
+ type Credit,
15
16
  } from "../Map";
16
17
  import { SketchFeature, SketchType } from "../Map/Sketch/types";
17
18
 
@@ -46,6 +47,7 @@ export type CoreVisualizerProps = {
46
47
  ready?: boolean;
47
48
  hiddenLayers?: string[];
48
49
  zoomedLayerId?: string;
50
+ displayCredits?: boolean;
49
51
  onCameraChange?: (camera: Camera) => void;
50
52
  onLayerDrop?: (layerId: string, propertyKey: string, position: LatLng | undefined) => void;
51
53
  onLayerSelect?: (
@@ -58,7 +60,11 @@ export type CoreVisualizerProps = {
58
60
  onMount?: () => void;
59
61
  onSketchTypeChangeProp?: (type: SketchType | undefined) => void;
60
62
  onSketchFeatureCreate?: (feature: SketchFeature | null) => void;
63
+ onSketchFeatureUpdate?: (feature: SketchFeature | null) => void;
64
+ onSketchFeatureDelete?: (layerId: string, featureId: string) => void;
61
65
  onInteractionModeChange?: (mode: InteractionModeType) => void;
66
+ onAPIReady?: () => void;
67
+ onCreditsUpdate?: (credits: Credit[]) => void;
62
68
  };
63
69
 
64
70
  export const CoreVisualizer = memo(
@@ -79,6 +85,7 @@ export const CoreVisualizer = memo(
79
85
  interactionMode,
80
86
  shouldRender,
81
87
  meta,
88
+ displayCredits = true,
82
89
  style,
83
90
  zoomedLayerId,
84
91
  children,
@@ -90,6 +97,10 @@ export const CoreVisualizer = memo(
90
97
  onMount,
91
98
  onSketchTypeChangeProp,
92
99
  onSketchFeatureCreate,
100
+ onSketchFeatureUpdate,
101
+ onSketchFeatureDelete,
102
+ onAPIReady,
103
+ onCreditsUpdate,
93
104
  },
94
105
  ref: Ref<MapRef | null>,
95
106
  ) => {
@@ -101,10 +112,10 @@ export const CoreVisualizer = memo(
101
112
  featureFlags,
102
113
  isLayerDragging,
103
114
  timelineManagerRef,
104
- cursor,
105
115
  cameraForceHorizontalRoll,
106
116
  coreContextValue,
107
117
  containerStyle,
118
+ overriddenInteractionMode,
108
119
  handleLayerSelect,
109
120
  handleLayerDrag,
110
121
  handleLayerDrop,
@@ -112,6 +123,8 @@ export const CoreVisualizer = memo(
112
123
  handleCameraChange,
113
124
  handleInteractionModeChange,
114
125
  handleSketchPluginFeatureCreate,
126
+ handleSketchPluginFeatureUpdate,
127
+ handleSketchPluginFeatureDelete,
115
128
  handleSketchTypeChange,
116
129
  handleLayerVisibility,
117
130
  handleLayerLoad,
@@ -152,6 +165,7 @@ export const CoreVisualizer = memo(
152
165
  isLayerDragging={isLayerDragging}
153
166
  isLayerDraggable={isEditable}
154
167
  meta={meta}
168
+ displayCredits={displayCredits}
155
169
  style={style}
156
170
  featureFlags={featureFlags}
157
171
  shouldRender={shouldRender}
@@ -160,9 +174,8 @@ export const CoreVisualizer = memo(
160
174
  small={small}
161
175
  ready={ready}
162
176
  timelineManagerRef={timelineManagerRef}
163
- interactionMode={interactionMode}
177
+ interactionMode={overriddenInteractionMode}
164
178
  selectedFeature={selectedFeature}
165
- cursor={cursor}
166
179
  onCameraChange={handleCameraChange}
167
180
  onLayerDrag={handleLayerDrag}
168
181
  onLayerDrop={handleLayerDrop}
@@ -171,6 +184,10 @@ export const CoreVisualizer = memo(
171
184
  overrideInteractionMode={handleInteractionModeChange}
172
185
  onSketchFeatureCreate={onSketchFeatureCreate}
173
186
  onSketchPluginFeatureCreate={handleSketchPluginFeatureCreate}
187
+ onSketchFeatureUpdate={onSketchFeatureUpdate}
188
+ onSketchPluginFeatureUpdate={handleSketchPluginFeatureUpdate}
189
+ onSketchFeatureDelete={onSketchFeatureDelete}
190
+ onSketchPluginFeatureDelete={handleSketchPluginFeatureDelete}
174
191
  onSketchTypeChange={handleSketchTypeChange}
175
192
  onMount={onMount}
176
193
  onLayerVisibility={handleLayerVisibility}
@@ -178,6 +195,8 @@ export const CoreVisualizer = memo(
178
195
  onLayerSelectWithRectStart={handleLayerSelectWithRectStart}
179
196
  onLayerSelectWithRectMove={handleLayerSelectWithRectMove}
180
197
  onLayerSelectWithRectEnd={handleLayerSelectWithRectEnd}
198
+ onAPIReady={onAPIReady}
199
+ onCreditsUpdate={onCreditsUpdate}
181
200
  />
182
201
  <coreContext.Provider value={coreContextValue}>{children}</coreContext.Provider>
183
202
  </div>
@@ -1,6 +1,6 @@
1
1
  import { FEATURE_FLAGS } from "./featureFlags";
2
2
 
3
- export type InteractionModeType = "default" | "move" | "selection" | "sketch";
3
+ export type InteractionModeType = "default" | "move" | "selection" | "sketch" | "spatialId";
4
4
 
5
5
  // If you would like enable a feature in a specific mode,
6
6
  // just set the feature's flag here to that mode.
@@ -22,4 +22,5 @@ export const INTERACTION_MODES: Record<InteractionModeType, number> = {
22
22
  FEATURE_FLAGS.CAMERA_ZOOM |
23
23
  FEATURE_FLAGS.CAMERA_TILT,
24
24
  sketch: FEATURE_FLAGS.SKETCH | FEATURE_FLAGS.CAMERA_ZOOM | FEATURE_FLAGS.CAMERA_TILT,
25
+ spatialId: FEATURE_FLAGS.CAMERA_ZOOM | FEATURE_FLAGS.CAMERA_TILT,
25
26
  };
@@ -54,6 +54,7 @@ export default function Polygon({
54
54
  fillColor,
55
55
  strokeColor,
56
56
  strokeWidth = 1,
57
+ height,
57
58
  heightReference: hr,
58
59
  shadows,
59
60
  extrudedHeight,
@@ -83,7 +84,7 @@ export default function Polygon({
83
84
  coordiantes && stroke && !disableWorkaround
84
85
  ? coordiantes.flatMap(hole => [
85
86
  // bottom
86
- hole.map(c => Cartesian3.fromDegrees(c[0], c[1], c[2] ?? 0)),
87
+ hole.map(c => Cartesian3.fromDegrees(c[0], c[1], c[2] ?? height)),
87
88
  ...(extrudedHeight
88
89
  ? [
89
90
  // top
@@ -92,14 +93,14 @@ export default function Polygon({
92
93
  ...hole
93
94
  .slice(0, -1)
94
95
  .map(c => [
95
- Cartesian3.fromDegrees(c[0], c[1], 0),
96
+ Cartesian3.fromDegrees(c[0], c[1], height ?? 0),
96
97
  Cartesian3.fromDegrees(c[0], c[1], extrudedHeight),
97
98
  ]),
98
99
  ]
99
100
  : []),
100
101
  ])
101
102
  : [],
102
- [coordiantes, stroke, disableWorkaround],
103
+ [coordiantes, stroke, disableWorkaround, height, extrudedHeight],
103
104
  );
104
105
 
105
106
  const memoStrokeColor = useMemo(
@@ -127,7 +128,7 @@ export default function Polygon({
127
128
  );
128
129
 
129
130
  const extrudedHeightProperty: { extrudedHeight: number } | undefined = useMemo(
130
- () => (extrudedHeight ? { extrudedHeight } : undefined),
131
+ () => (extrudedHeight !== undefined ? { extrudedHeight } : undefined),
131
132
  [extrudedHeight],
132
133
  );
133
134
 
@@ -152,6 +153,7 @@ export default function Polygon({
152
153
  outline={!!memoStrokeColor}
153
154
  outlineColor={memoStrokeColor}
154
155
  outlineWidth={strokeWidth}
156
+ height={height}
155
157
  heightReference={heightReference(hr)}
156
158
  shadows={shadowMode(shadows)}
157
159
  distanceDisplayCondition={distanceDisplayCondition}
@@ -1,6 +1,7 @@
1
- import { MVTImageryProvider } from "@reearth/cesium-mvt-imagery-provider";
2
1
  import { useMemo } from "react";
3
2
 
3
+ import { MVTImageryProvider } from "@reearth/cesium-mvt-imagery-provider";
4
+
4
5
  import { extractSimpleLayer } from "../utils";
5
6
 
6
7
  import { useData, useImageryProvider } from "./hooks";
@@ -1,15 +1,9 @@
1
- import {
2
- Entity,
3
- Cartesian3,
4
- PolygonHierarchy,
5
- PointGraphics,
6
- BillboardGraphics,
7
- JulianDate,
8
- } from "cesium";
1
+ import { Entity, PointGraphics, BillboardGraphics, JulianDate } from "cesium";
9
2
 
10
3
  import { EvalFeature } from "../../..";
11
4
  import { AppearanceTypes, ComputedFeature, ComputedLayer, Feature } from "../../../../mantle";
12
- import { heightReference, shadowMode, toColor } from "../../common";
5
+ import { heightReference, shadowMode, toColor, classificationType } from "../../common";
6
+ import { getMarkerCoordinates, getGeometryFromEntity } from "../../helpers/getGeometryFromEntity";
13
7
  import { convertEntityDescription, convertEntityProperties } from "../../utils/utils";
14
8
  import { attachTag, extractSimpleLayer, getTag, Tag } from "../utils";
15
9
 
@@ -39,7 +33,7 @@ type EntityAppearanceKey<AName extends SupportedAppearanceKey> = AName extends "
39
33
  ? keyof Pick<Entity, "point" | "billboard" | "label">
40
34
  : keyof Pick<Entity, CesiumEntityAppearanceKey>;
41
35
 
42
- type AppearancePropertyKeyType = "color" | "heightReference" | "shadows";
36
+ type AppearancePropertyKeyType = "color" | "heightReference" | "shadows" | "classificationType";
43
37
 
44
38
  export function attachProperties<
45
39
  AName extends SupportedAppearanceKey,
@@ -93,6 +87,9 @@ export function attachProperties<
93
87
  break;
94
88
  case "heightReference":
95
89
  value = heightReference(value);
90
+ break;
91
+ case "classificationType":
92
+ value = classificationType(value);
96
93
  }
97
94
 
98
95
  if (value === (entity[propertyName] as any)[entityPropertyKey]) {
@@ -132,16 +129,14 @@ export const attachStyle = (
132
129
  const point = hasAppearance(layer, entity, ["marker", "point"]);
133
130
  const billboard = hasAppearance(layer, entity, ["marker", "billboard"]);
134
131
  const label = hasAppearance(layer, entity, ["marker", "label"]);
135
- if (point || billboard || label) {
136
- const position = entity.position?.getValue(currentTime);
137
- const coordinates = [position?.x ?? 0, position?.y ?? 0, position?.z ?? 0];
132
+ if (entity.point || entity.billboard || entity.label) {
133
+ const coordinates = getMarkerCoordinates(entity, currentTime);
134
+ const geometry = getGeometryFromEntity(currentTime, entity);
135
+
138
136
  const feature: Feature = {
139
137
  type: "feature",
140
138
  id: makeFeatureId(entity),
141
- geometry: {
142
- type: "Point",
143
- coordinates,
144
- },
139
+ geometry,
145
140
  properties: convertEntityProperties(currentTime, entity),
146
141
  metaData: {
147
142
  description: convertEntityDescription(currentTime, entity),
@@ -261,21 +256,14 @@ export const attachStyle = (
261
256
  return [feature, computedFeature];
262
257
  }
263
258
 
264
- if (hasAppearance(layer, entity, ["polyline", "polyline"])) {
259
+ if (entity.polyline) {
265
260
  const entityPosition = entity.position?.getValue(currentTime);
266
- const positions = entity.polyline?.positions?.getValue(currentTime) as Cartesian3[];
267
- const coordinates = positions?.map(position => [
268
- position?.x ?? 0,
269
- position?.y ?? 0,
270
- position?.z ?? 0,
271
- ]);
261
+ const geometry = getGeometryFromEntity(currentTime, entity);
262
+
272
263
  const feature: Feature = {
273
264
  type: "feature",
274
265
  id: makeFeatureId(entity),
275
- geometry: {
276
- type: "LineString",
277
- coordinates,
278
- },
266
+ geometry,
279
267
  properties: convertEntityProperties(currentTime, entity),
280
268
  metaData: {
281
269
  description: convertEntityDescription(currentTime, entity),
@@ -290,42 +278,43 @@ export const attachStyle = (
290
278
  if (!computedFeature) {
291
279
  return;
292
280
  }
293
- attachProperties(entity, computedFeature, ["polyline", "polyline"], {
294
- show: {
295
- name: "show",
296
- default: true,
297
- },
298
- width: {
299
- name: "strokeWidth",
300
- },
301
- material: {
302
- name: "strokeColor",
303
- type: "color",
304
- },
305
- shadows: {
306
- name: "shadows",
307
- type: "shadows",
308
- },
309
- clampToGround: {
310
- name: "clampToGround",
311
- },
312
- });
281
+ if (hasAppearance(layer, entity, ["polyline", "polyline"])) {
282
+ attachProperties(entity, computedFeature, ["polyline", "polyline"], {
283
+ show: {
284
+ name: "show",
285
+ default: true,
286
+ },
287
+ width: {
288
+ name: "strokeWidth",
289
+ },
290
+ material: {
291
+ name: "strokeColor",
292
+ type: "color",
293
+ },
294
+ shadows: {
295
+ name: "shadows",
296
+ type: "shadows",
297
+ },
298
+ clampToGround: {
299
+ name: "clampToGround",
300
+ },
301
+ classificationType: {
302
+ name: "classificationType",
303
+ type: "classificationType",
304
+ },
305
+ });
306
+ }
313
307
  return [feature, computedFeature];
314
308
  }
315
309
 
316
- if (hasAppearance(layer, entity, ["polygon", "polygon"])) {
310
+ if (entity.polygon) {
317
311
  const entityPosition = entity.position?.getValue(currentTime);
318
- const hierarchy = entity.polygon?.hierarchy?.getValue(currentTime) as PolygonHierarchy;
319
- const coordinates = hierarchy?.holes?.map(hole =>
320
- hole.positions.map(position => [position?.x ?? 0, position?.y ?? 0, position?.z ?? 0]),
321
- );
312
+ const geometry = getGeometryFromEntity(currentTime, entity);
313
+
322
314
  const feature: Feature = {
323
315
  type: "feature",
324
316
  id: makeFeatureId(entity),
325
- geometry: {
326
- type: "Polygon",
327
- coordinates,
328
- },
317
+ geometry,
329
318
  properties: convertEntityProperties(currentTime, entity),
330
319
  metaData: {
331
320
  description: convertEntityDescription(currentTime, entity),
@@ -340,40 +329,46 @@ export const attachStyle = (
340
329
  if (!computedFeature) {
341
330
  return;
342
331
  }
343
- attachProperties(entity, computedFeature, ["polygon", "polygon"], {
344
- show: {
345
- name: "show",
346
- default: true,
347
- },
348
- fill: {
349
- name: "fill",
350
- },
351
- material: {
352
- name: "fillColor",
353
- type: "color",
354
- },
355
- outline: {
356
- name: "stroke",
357
- },
358
- outlineColor: {
359
- name: "strokeColor",
360
- type: "color",
361
- },
362
- outlineWidth: {
363
- name: "strokeWidth",
364
- },
365
- shadows: {
366
- name: "shadows",
367
- type: "shadows",
368
- },
369
- heightReference: {
370
- name: "heightReference",
371
- type: "heightReference",
372
- },
373
- extrudedHeight: {
374
- name: "extrudedHeight",
375
- },
376
- });
332
+ if (hasAppearance(layer, entity, ["polygon", "polygon"])) {
333
+ attachProperties(entity, computedFeature, ["polygon", "polygon"], {
334
+ show: {
335
+ name: "show",
336
+ default: true,
337
+ },
338
+ fill: {
339
+ name: "fill",
340
+ },
341
+ material: {
342
+ name: "fillColor",
343
+ type: "color",
344
+ },
345
+ outline: {
346
+ name: "stroke",
347
+ },
348
+ outlineColor: {
349
+ name: "strokeColor",
350
+ type: "color",
351
+ },
352
+ outlineWidth: {
353
+ name: "strokeWidth",
354
+ },
355
+ shadows: {
356
+ name: "shadows",
357
+ type: "shadows",
358
+ },
359
+ heightReference: {
360
+ name: "heightReference",
361
+ type: "heightReference",
362
+ },
363
+ extrudedHeight: {
364
+ name: "extrudedHeight",
365
+ },
366
+ classificationType: {
367
+ name: "classificationType",
368
+ type: "classificationType",
369
+ },
370
+ });
371
+ }
377
372
  return [feature, computedFeature];
378
373
  }
379
374
  };
@@ -15,13 +15,11 @@ import {
15
15
  Cesium3DTileFeature,
16
16
  Model,
17
17
  Cesium3DTilePointFeature,
18
- GoogleMaps as CesiumGoogleMaps,
19
- Resource,
20
- defaultValue,
21
18
  ImageBasedLighting,
22
19
  Cesium3DTileContent,
23
20
  Color,
24
21
  Viewer,
22
+ createGooglePhotorealistic3DTileset,
25
23
  } from "cesium";
26
24
  import { pick } from "lodash-es";
27
25
  import { MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -57,7 +55,6 @@ import {
57
55
  } from "../utils";
58
56
 
59
57
  import { TilesetFeatureIndex } from "./TilesetFeatureIndex";
60
- import { GoogleMaps } from "./types";
61
58
  import { useClippingBox } from "./useClippingBox";
62
59
  import { useDrawClipping } from "./useDrawClipping";
63
60
 
@@ -77,6 +74,7 @@ const useData = (layer: ComputedLayer | undefined) => {
77
74
  ? data.layers.join(",")
78
75
  : data?.layers
79
76
  : undefined,
77
+ googleMapApiKey: data?.serviceTokens?.googleMapApiKey,
80
78
  };
81
79
  }, [layer]);
82
80
  };
@@ -450,7 +448,7 @@ export const useHooks = ({
450
448
  }) => {
451
449
  const { viewer } = useCesium();
452
450
  const tilesetRef = useRef<Cesium3DTilesetType>();
453
- const { onLayerLoad } = useContext();
451
+ const { onLayerLoad, updateCredits } = useContext();
454
452
  const layerIdRef = useRef(layer?.id);
455
453
  layerIdRef.current = layer?.id;
456
454
 
@@ -460,7 +458,6 @@ export const useHooks = ({
460
458
  edgeColor,
461
459
  edgeWidth,
462
460
  experimental_clipping,
463
- apiKey,
464
461
  selectedFeatureColor,
465
462
  disableIndexingFeature,
466
463
  } = property ?? {};
@@ -481,7 +478,7 @@ export const useHooks = ({
481
478
  } = useClippingBox({ clipping: experimental_clipping, boxId });
482
479
 
483
480
  const [style, setStyle] = useState<Cesium3DTileStyle>();
484
- const { url, type, idProperty } = useData(layer);
481
+ const { url, type, idProperty, googleMapApiKey } = useData(layer);
485
482
  const shouldUseFeatureIndex = !disableIndexingFeature && !!idProperty;
486
483
 
487
484
  const [isTilesetReady, setIsTilesetReady] = useState(false);
@@ -503,8 +500,9 @@ export const useHooks = ({
503
500
  return prevPlanes.current;
504
501
  }, [_planes]);
505
502
  const clipDirection = direction === "inside" ? -1 : 1;
503
+
506
504
  // Create immutable object
507
- const [clippingPlanes] = useState(
505
+ const [clippingPlanes, setClippingPlanes] = useState<CesiumClippingPlaneCollection>(
508
506
  () =>
509
507
  new CesiumClippingPlaneCollection({
510
508
  planes: planes?.map(
@@ -519,6 +517,27 @@ export const useHooks = ({
519
517
  edgeColor: toColor(edgeColor),
520
518
  }),
521
519
  );
520
+ // Initialize clipping planes
521
+ // This is workaround to reinitialize ClippingPlanes in strict mode.
522
+ useEffect(
523
+ () => () => {
524
+ setClippingPlanes(
525
+ new CesiumClippingPlaneCollection({
526
+ planes: planes?.map(
527
+ plane =>
528
+ new ClippingPlane(
529
+ new Cartesian3(plane.normal?.x, plane.normal?.y, plane.normal?.z),
530
+ (plane.distance || 0) * clipDirection,
531
+ ),
532
+ ),
533
+ unionClippingRegions: direction === "outside",
534
+ edgeWidth: edgeWidth,
535
+ edgeColor: toColor(edgeColor),
536
+ }),
537
+ );
538
+ },
539
+ [], // eslint-disable-line react-hooks/exhaustive-deps
540
+ );
522
541
 
523
542
  const { drawClippingEnabled, drawClippingEdgeProps } = useDrawClipping({
524
543
  ...experimental_clipping?.draw,
@@ -708,31 +727,33 @@ export const useHooks = ({
708
727
  })();
709
728
  }, [styleUrl]);
710
729
 
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]);
730
+ const googleMapPhotorealisticResource = useMemo(() => {
731
+ if (type !== "google-photorealistic" || !isVisible) return null;
732
+
733
+ const loadTileset = async () => {
734
+ try {
735
+ const tileset = await createGooglePhotorealistic3DTileset(googleMapApiKey);
736
+ return tileset.resource;
737
+ } catch (error) {
738
+ console.error(`Error loading Photorealistic 3D Tiles tileset: ${error}`);
739
+ throw error;
740
+ }
741
+ };
742
+
743
+ return loadTileset();
744
+ }, [type, isVisible, googleMapApiKey]);
724
745
 
725
746
  const tilesetUrl = useMemo(() => {
726
747
  return type === "osm-buildings" && isVisible
727
748
  ? IonResource.fromAssetId(96188, {
728
749
  accessToken: meta?.cesiumIonAccessToken as string | undefined,
729
750
  }) // https://github.com/CesiumGS/cesium/blob/main/packages/engine/Source/Scene/createOsmBuildings.js#L53
730
- : googleMapResource
731
- ? googleMapResource
751
+ : googleMapPhotorealisticResource && isVisible
752
+ ? googleMapPhotorealisticResource
732
753
  : type === "3dtiles" && isVisible
733
754
  ? url ?? tileset
734
755
  : null;
735
- }, [isVisible, tileset, url, type, meta, googleMapResource]);
756
+ }, [type, isVisible, meta?.cesiumIonAccessToken, googleMapPhotorealisticResource, url, tileset]);
736
757
 
737
758
  const imageBasedLighting = useMemo(() => {
738
759
  if (
@@ -780,6 +801,13 @@ export const useHooks = ({
780
801
  [onLayerFetch, onLayerLoad],
781
802
  );
782
803
 
804
+ useEffect(() => {
805
+ updateCredits?.();
806
+ return () => {
807
+ updateCredits?.();
808
+ };
809
+ }, [type, updateCredits]);
810
+
783
811
  return {
784
812
  tilesetUrl,
785
813
  ref,
@@ -26,6 +26,7 @@ export type Context = {
26
26
  position: [x: number, y: number, z: number],
27
27
  ) => [x: number, y: number] | undefined;
28
28
  isPositionVisible?: (position: [x: number, y: number, z: number]) => boolean;
29
+ updateCredits?: () => void;
29
30
  };
30
31
 
31
32
  export const context = createContext<Context>({});
@@ -96,6 +96,7 @@ const FEATURE_DELEGATE_THRESHOLD = 6000;
96
96
  export default function Feature({
97
97
  layer,
98
98
  isHidden,
99
+ sketchEditingFeature,
99
100
  ...props
100
101
  }: FeatureComponentProps): JSX.Element | null {
101
102
  const data = extractSimpleLayerData(layer);
@@ -131,7 +132,10 @@ export default function Feature({
131
132
  const useSceneSpecularEnvironmentMaps =
132
133
  !!props.viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps;
133
134
 
134
- const isVisible = layer.layer.visible !== false && !isHidden;
135
+ const isVisible =
136
+ layer.layer.visible !== false &&
137
+ !isHidden &&
138
+ !(sketchEditingFeature?.layerId === layer.id && sketchEditingFeature?.feature?.id === f?.id);
135
139
 
136
140
  const componentId =
137
141
  urlMD5 +
@@ -140,7 +144,7 @@ export default function Feature({
140
144
  f?.id ?? ""
141
145
  }_${k}_${isVisible}_${useSceneSphericalHarmonicCoefficients}_${useSceneSpecularEnvironmentMaps}_${
142
146
  JSON.stringify(f?.[k]) ?? ""
143
- }_${JSON.stringify(layer.transition) ?? ""}`,
147
+ }_${JSON.stringify(layer.transition) ?? ""}_${JSON.stringify(f?.geometry) ?? ""}`,
144
148
  );
145
149
 
146
150
  if (cacheable) {
@@ -23,9 +23,10 @@ import {
23
23
  ComponentType,
24
24
  ForwardedRef,
25
25
  forwardRef,
26
+ useCallback,
26
27
  useLayoutEffect,
27
28
  useMemo,
28
- useRef,
29
+ useState,
29
30
  } from "react";
30
31
  import { type CesiumComponentRef, Entity } from "resium";
31
32
 
@@ -86,10 +87,11 @@ function EntityExtComponent(
86
87
  }: ComponentProps<typeof Entity> & Tag,
87
88
  ref: ForwardedRef<CesiumComponentRef<CesiumEntity>>,
88
89
  ) {
89
- const r = useRef<CesiumComponentRef<CesiumEntity>>(null);
90
+ const [entity, setEntity] = useState<CesiumComponentRef<CesiumEntity> | null>(null);
90
91
 
91
92
  useLayoutEffect(() => {
92
- attachTag(r.current?.cesiumElement, {
93
+ if (!entity?.cesiumElement) return;
94
+ attachTag(entity.cesiumElement, {
93
95
  layerId: layerId || props.id,
94
96
  featureId,
95
97
  draggable,
@@ -105,9 +107,12 @@ function EntityExtComponent(
105
107
  props.id,
106
108
  unselectable,
107
109
  hideIndicator,
110
+ entity,
108
111
  ]);
109
112
 
110
- return <Entity ref={composeRefs(ref, r)} {...props} />;
113
+ const handleRef = useCallback((r: CesiumComponentRef<CesiumEntity>) => setEntity(r), []);
114
+
115
+ return <Entity ref={composeRefs(ref, handleRef)} {...props} />;
111
116
  }
112
117
 
113
118
  export function attachTag(