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

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 (441) hide show
  1. package/dist/core.js +44685 -39512
  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 +110 -17
  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 +437 -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/hooks.ts +293 -0
  20. package/src/Map/SpatialId/index.tsx +36 -0
  21. package/src/Map/SpatialId/types.ts +45 -0
  22. package/src/Map/SpatialId/utils.ts +79 -0
  23. package/src/Map/hooks.ts +51 -1
  24. package/src/Map/index.tsx +35 -0
  25. package/src/Map/ref.ts +21 -0
  26. package/src/Map/types/index.ts +29 -1
  27. package/src/Map/types/viewerProperty.ts +2 -0
  28. package/src/Visualizer/coreContext.tsx +2 -0
  29. package/src/Visualizer/hooks.ts +40 -2
  30. package/src/Visualizer/index.tsx +22 -1
  31. package/src/Visualizer/interactionMode.ts +2 -1
  32. package/src/engines/Cesium/Feature/Polygon/index.tsx +5 -3
  33. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  34. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  35. package/src/engines/Cesium/Feature/Tileset/hooks.ts +52 -24
  36. package/src/engines/Cesium/Feature/context.ts +1 -0
  37. package/src/engines/Cesium/Feature/index.tsx +6 -2
  38. package/src/engines/Cesium/Feature/utils.tsx +9 -4
  39. package/src/engines/Cesium/Shaders/OverriddenShaders/GlobeFS/IBL.glsl +6 -10
  40. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  41. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  42. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  43. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  44. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  45. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  46. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +125 -35
  47. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  48. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  49. package/src/engines/Cesium/SpatialId/index.tsx +42 -0
  50. package/src/engines/Cesium/common.ts +46 -12
  51. package/src/engines/Cesium/core/Globe.tsx +11 -2
  52. package/src/engines/Cesium/core/Imagery.tsx +16 -3
  53. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +8 -1
  54. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  55. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  56. package/src/engines/Cesium/core/presets.ts +0 -11
  57. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  58. package/src/engines/Cesium/hooks/useEngineRef.ts +46 -1
  59. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +1 -1
  60. package/src/engines/Cesium/hooks.ts +45 -4
  61. package/src/engines/Cesium/index.tsx +16 -3
  62. package/src/mantle/atoms/compute.ts +5 -1
  63. package/src/mantle/data/geojson.ts +53 -22
  64. package/src/mantle/types/appearance.ts +2 -2
  65. package/src/mantle/types/index.ts +3 -0
  66. package/src/utils/image.ts +1 -11
  67. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  68. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  69. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  70. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  71. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  72. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  73. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  74. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  75. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  76. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  77. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  78. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  79. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  80. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  81. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  82. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  83. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  84. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  85. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  86. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  87. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  88. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  89. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  90. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  91. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  92. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  93. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  94. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  95. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  96. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  97. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  98. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  99. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  100. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  101. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  102. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  103. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  104. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  105. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  106. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  107. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  108. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  109. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  110. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  111. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  112. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  113. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  114. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  115. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  116. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  117. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  118. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  119. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  120. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  121. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  122. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  123. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  124. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  125. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  126. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  127. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  128. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  129. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  130. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  131. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  132. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  133. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  134. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  135. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  136. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  137. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  138. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  139. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  140. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  141. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  142. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  143. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  144. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  145. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  146. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  147. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  148. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  149. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  150. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  151. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  152. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  153. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  154. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  155. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  156. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  157. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  158. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  159. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  160. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  161. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  162. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  163. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  164. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  165. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  166. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  167. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  168. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  169. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  170. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  171. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  172. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  173. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  174. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  175. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  176. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  177. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  178. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  179. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  180. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  181. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  182. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  183. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  184. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  185. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  186. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  187. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  188. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  189. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  190. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  191. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  192. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  193. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  194. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  195. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  196. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  197. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  198. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  199. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  200. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  201. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  202. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  203. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  204. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  205. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  206. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  207. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  208. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  209. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  210. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  211. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  212. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  213. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  214. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  215. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  216. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  217. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  218. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  219. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  220. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  221. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  222. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  223. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  267. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  268. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  269. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  270. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  271. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  272. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  273. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  274. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  275. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  276. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  277. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  278. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  279. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  280. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  281. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  282. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  283. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  284. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  285. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  286. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  287. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  288. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  289. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  290. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  291. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  292. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  293. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  294. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  295. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  296. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  297. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  298. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  299. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  300. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  301. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  302. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  303. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  304. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  305. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  306. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  307. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  308. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  309. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  310. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  311. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  312. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  313. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  314. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  315. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  316. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  317. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  318. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  319. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  320. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  321. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  322. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  323. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  324. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  325. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  326. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  327. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  328. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  329. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  330. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  331. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  332. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  333. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  334. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  335. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  336. package/dist/cesium/Widgets/lighter.css +0 -237
  337. package/dist/cesium/Widgets/lighterShared.css +0 -46
  338. package/dist/cesium/Widgets/shared.css +0 -103
  339. package/dist/cesium/Widgets/widgets.css +0 -1346
  340. package/dist/cesium/Workers/chunk-2ED5WI77.js +0 -26
  341. package/dist/cesium/Workers/chunk-2MBPFWCP.js +0 -26
  342. package/dist/cesium/Workers/chunk-3C74MLG3.js +0 -26
  343. package/dist/cesium/Workers/chunk-45U7TTT3.js +0 -26
  344. package/dist/cesium/Workers/chunk-4N7SRDH5.js +0 -26
  345. package/dist/cesium/Workers/chunk-4T6AS6BZ.js +0 -26
  346. package/dist/cesium/Workers/chunk-5AG2MVRM.js +0 -26
  347. package/dist/cesium/Workers/chunk-5Z6L2FHX.js +0 -26
  348. package/dist/cesium/Workers/chunk-6AUUBDOF.js +0 -26
  349. package/dist/cesium/Workers/chunk-74N6MC2V.js +0 -26
  350. package/dist/cesium/Workers/chunk-7VJK3KHI.js +0 -26
  351. package/dist/cesium/Workers/chunk-7VZHIB6P.js +0 -26
  352. package/dist/cesium/Workers/chunk-7X2YQ6I4.js +0 -27
  353. package/dist/cesium/Workers/chunk-B2SKQ7LU.js +0 -26
  354. package/dist/cesium/Workers/chunk-B4TQDFIE.js +0 -26
  355. package/dist/cesium/Workers/chunk-B6TRTFAA.js +0 -26
  356. package/dist/cesium/Workers/chunk-BK3HCS7I.js +0 -26
  357. package/dist/cesium/Workers/chunk-BOPB43LN.js +0 -26
  358. package/dist/cesium/Workers/chunk-C6DMEJQ7.js +0 -26
  359. package/dist/cesium/Workers/chunk-CN7UN2OZ.js +0 -26
  360. package/dist/cesium/Workers/chunk-CSISXEG7.js +0 -26
  361. package/dist/cesium/Workers/chunk-CUOR5F7T.js +0 -28
  362. package/dist/cesium/Workers/chunk-DGCK3LD2.js +0 -30
  363. package/dist/cesium/Workers/chunk-DXEZYE3K.js +0 -62
  364. package/dist/cesium/Workers/chunk-EXBFEYPQ.js +0 -26
  365. package/dist/cesium/Workers/chunk-FK5KFB6H.js +0 -26
  366. package/dist/cesium/Workers/chunk-HPBHKP5S.js +0 -26
  367. package/dist/cesium/Workers/chunk-JCJ24DHF.js +0 -26
  368. package/dist/cesium/Workers/chunk-JEWHFDAA.js +0 -26
  369. package/dist/cesium/Workers/chunk-JZLZJJQD.js +0 -26
  370. package/dist/cesium/Workers/chunk-KRZBI2MU.js +0 -26
  371. package/dist/cesium/Workers/chunk-KTTUANTJ.js +0 -26
  372. package/dist/cesium/Workers/chunk-LDCAXLGS.js +0 -26
  373. package/dist/cesium/Workers/chunk-LOPN5R3I.js +0 -26
  374. package/dist/cesium/Workers/chunk-MDLPQIMP.js +0 -26
  375. package/dist/cesium/Workers/chunk-MRR3RGFO.js +0 -26
  376. package/dist/cesium/Workers/chunk-NPBZI5YA.js +0 -26
  377. package/dist/cesium/Workers/chunk-NUSW5B6A.js +0 -26
  378. package/dist/cesium/Workers/chunk-OUXRUXNB.js +0 -26
  379. package/dist/cesium/Workers/chunk-QPOPEH3M.js +0 -26
  380. package/dist/cesium/Workers/chunk-R2AN7EKC.js +0 -26
  381. package/dist/cesium/Workers/chunk-RURL6ZX2.js +0 -26
  382. package/dist/cesium/Workers/chunk-SUQM3OSW.js +0 -28
  383. package/dist/cesium/Workers/chunk-UBIRX2SP.js +0 -26
  384. package/dist/cesium/Workers/chunk-VAKC5J5C.js +0 -26
  385. package/dist/cesium/Workers/chunk-VHNZBQTR.js +0 -27
  386. package/dist/cesium/Workers/chunk-VKV642QV.js +0 -26
  387. package/dist/cesium/Workers/chunk-VMSXG4OA.js +0 -26
  388. package/dist/cesium/Workers/chunk-VQZSIOZW.js +0 -26
  389. package/dist/cesium/Workers/chunk-WZUWQMI7.js +0 -26
  390. package/dist/cesium/Workers/chunk-YBI55DLZ.js +0 -26
  391. package/dist/cesium/Workers/chunk-YEJWCH6C.js +0 -26
  392. package/dist/cesium/Workers/chunk-YPDO7SPO.js +0 -26
  393. package/dist/cesium/Workers/chunk-ZYWD6OQH.js +0 -26
  394. package/dist/cesium/Workers/combineGeometry.js +0 -26
  395. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  396. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  397. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  398. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  399. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  400. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  401. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  402. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  403. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  404. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  405. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  406. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  407. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  408. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  409. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  410. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  411. package/dist/cesium/Workers/createGeometry.js +0 -26
  412. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  413. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  414. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  415. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  416. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  417. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  418. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  419. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  420. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  421. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  422. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  423. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  424. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  425. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  426. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  427. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  428. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  429. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  430. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  431. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  432. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  433. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  434. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  435. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  436. package/dist/cesium/Workers/decodeDraco.js +0 -26
  437. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  438. package/dist/cesium/Workers/decodeI3S.js +0 -26
  439. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  440. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  441. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
package/src/Map/hooks.ts CHANGED
@@ -3,6 +3,7 @@ import { useImperativeHandle, useRef, type Ref, useState, useCallback, useEffect
3
3
  import { SelectedFeatureInfo } from "../mantle";
4
4
 
5
5
  import { type MapRef, mapRef } from "./ref";
6
+ import { SpatialIdRef } from "./SpatialId/types";
6
7
  import type {
7
8
  EngineRef,
8
9
  LayersRef,
@@ -13,7 +14,7 @@ import type {
13
14
  } from "./types";
14
15
  import useTimelineManager, { TimelineManagerRef } from "./useTimelineManager";
15
16
 
16
- import { CursorType } from ".";
17
+ import { CursorType, SketchEditingFeature } from ".";
17
18
 
18
19
  export type { MapRef } from "./ref";
19
20
 
@@ -26,6 +27,8 @@ export default function ({
26
27
  timelineManagerRef,
27
28
  cursor,
28
29
  onLayerSelect,
30
+ onMount,
31
+ onAPIReady,
29
32
  }: {
30
33
  ref: Ref<MapRef>;
31
34
  timelineManagerRef?: TimelineManagerRef;
@@ -37,10 +40,19 @@ export default function ({
37
40
  options?: LayerSelectionReason,
38
41
  info?: SelectedFeatureInfo,
39
42
  ) => void;
43
+ onMount?: () => void;
44
+ onAPIReady?: () => void;
40
45
  }) {
46
+ const [mapAPIReady, setMapAPIReady] = useState({
47
+ engine: false,
48
+ layers: false,
49
+ sketch: false,
50
+ spatialId: false,
51
+ });
41
52
  const engineRef = useRef<EngineRef>(null);
42
53
  const layersRef = useRef<LayersRef>(null);
43
54
  const sketchRef = useRef<SketchRef>(null);
55
+ const spatialIdRef = useRef<SpatialIdRef>(null);
44
56
  const requestingRenderMode = useRef<RequestingRenderMode>(NO_REQUEST_RENDER);
45
57
 
46
58
  useImperativeHandle(
@@ -50,11 +62,24 @@ export default function ({
50
62
  engineRef,
51
63
  layersRef,
52
64
  sketchRef,
65
+ spatialIdRef,
53
66
  timelineManagerRef,
54
67
  }),
55
68
  [timelineManagerRef],
56
69
  );
57
70
 
71
+ useEffect(() => {
72
+ if (
73
+ onAPIReady &&
74
+ mapAPIReady.engine &&
75
+ mapAPIReady.layers &&
76
+ mapAPIReady.sketch &&
77
+ mapAPIReady.spatialId
78
+ ) {
79
+ onAPIReady?.();
80
+ }
81
+ }, [onAPIReady, mapAPIReady]);
82
+
58
83
  // selectLayer logic
59
84
  // 1. Map/hooks(here) is the source
60
85
  // 1.2 State updates propagate up, through onLayerSelect, to update
@@ -111,13 +136,38 @@ export default function ({
111
136
  }
112
137
  }, [cursor]);
113
138
 
139
+ const [sketchEditingFeature, setSketchEditingFeature] = useState<
140
+ SketchEditingFeature | undefined
141
+ >();
142
+
143
+ const handleEngineMount = useCallback(() => {
144
+ setMapAPIReady(s => ({ ...s, engine: true }));
145
+ onMount?.();
146
+ }, [onMount]);
147
+ const handleLayersMount = useCallback(() => {
148
+ setMapAPIReady(s => ({ ...s, layers: true }));
149
+ }, []);
150
+ const handleSketchMount = useCallback(() => {
151
+ setMapAPIReady(s => ({ ...s, sketch: true }));
152
+ }, []);
153
+ const handleSpatialIdMount = useCallback(() => {
154
+ setMapAPIReady(s => ({ ...s, spatialId: true }));
155
+ }, []);
156
+
114
157
  return {
115
158
  engineRef,
116
159
  layersRef,
117
160
  sketchRef,
161
+ spatialIdRef,
118
162
  selectedLayer,
119
163
  requestingRenderMode,
120
164
  handleLayerSelect,
121
165
  handleEngineLayerSelect,
166
+ sketchEditingFeature,
167
+ setSketchEditingFeature,
168
+ handleEngineMount,
169
+ handleLayersMount,
170
+ handleSketchMount,
171
+ handleSpatialIdMount,
122
172
  };
123
173
  }
package/src/Map/index.tsx CHANGED
@@ -5,6 +5,7 @@ import { INTERACTION_MODES } from "../Visualizer/interactionMode";
5
5
  import useHooks, { MapRef } from "./hooks";
6
6
  import Layers, { type Props as LayersProps } from "./Layers";
7
7
  import Sketch, { SketchProps } from "./Sketch";
8
+ import SpatialId from "./SpatialId";
8
9
  import type { Engine, EngineProps } from "./types";
9
10
 
10
11
  export * from "./types";
@@ -34,6 +35,7 @@ export type CursorType = "auto" | "grab" | "crosshair";
34
35
  export type Props = {
35
36
  engines?: Record<string, Engine>;
36
37
  engine?: string;
38
+ onAPIReady?: () => void;
37
39
  } & Omit<
38
40
  LayersProps,
39
41
  | "Feature"
@@ -67,7 +69,13 @@ function MapFn(
67
69
  onSketchTypeChange,
68
70
  onSketchFeatureCreate,
69
71
  onSketchPluginFeatureCreate,
72
+ onSketchFeatureUpdate,
73
+ onSketchPluginFeatureUpdate,
74
+ onSketchFeatureDelete,
75
+ onSketchPluginFeatureDelete,
70
76
  featureFlags = INTERACTION_MODES.default,
77
+ onMount,
78
+ onAPIReady,
71
79
  ...props
72
80
  }: Props,
73
81
  ref: Ref<MapRef>,
@@ -78,15 +86,24 @@ function MapFn(
78
86
  engineRef,
79
87
  layersRef,
80
88
  sketchRef,
89
+ spatialIdRef,
81
90
  selectedLayer,
82
91
  requestingRenderMode,
83
92
  handleLayerSelect,
84
93
  handleEngineLayerSelect,
94
+ sketchEditingFeature,
95
+ setSketchEditingFeature,
96
+ handleEngineMount,
97
+ handleLayersMount,
98
+ handleSketchMount,
99
+ handleSpatialIdMount,
85
100
  } = useHooks({
86
101
  ref,
87
102
  timelineManagerRef,
88
103
  cursor,
89
104
  onLayerSelect,
105
+ onMount,
106
+ onAPIReady,
90
107
  });
91
108
 
92
109
  const selectedLayerIds = useMemo(
@@ -111,6 +128,7 @@ function MapFn(
111
128
  timelineManagerRef={timelineManagerRef}
112
129
  onLayerSelect={handleEngineLayerSelect}
113
130
  featureFlags={featureFlags}
131
+ onMount={handleEngineMount}
114
132
  {...props}>
115
133
  <Layers
116
134
  ref={layersRef}
@@ -128,7 +146,9 @@ function MapFn(
128
146
  meta={props.meta}
129
147
  viewerProperty={props.property}
130
148
  requestingRenderMode={requestingRenderMode}
149
+ sketchEditingFeature={sketchEditingFeature}
131
150
  onLayerSelect={handleLayerSelect}
151
+ onMount={handleLayersMount}
132
152
  />
133
153
  <Sketch
134
154
  ref={sketchRef}
@@ -142,6 +162,21 @@ function MapFn(
142
162
  onSketchTypeChange={onSketchTypeChange}
143
163
  onSketchFeatureCreate={onSketchFeatureCreate}
144
164
  onSketchPluginFeatureCreate={onSketchPluginFeatureCreate}
165
+ onSketchFeatureUpdate={onSketchFeatureUpdate}
166
+ onSketchPluginFeatureUpdate={onSketchPluginFeatureUpdate}
167
+ onSketchFeatureDelete={onSketchFeatureDelete}
168
+ onSketchPluginFeatureDelete={onSketchPluginFeatureDelete}
169
+ sketchEditingFeature={sketchEditingFeature}
170
+ onSketchEditFeature={setSketchEditingFeature}
171
+ onMount={handleSketchMount}
172
+ />
173
+ <SpatialId
174
+ ref={spatialIdRef}
175
+ engineRef={engineRef}
176
+ interactionMode={interactionMode}
177
+ terrainEnabled={!!props.property?.terrain?.enabled}
178
+ overrideInteractionMode={overrideInteractionMode}
179
+ onMount={handleSpatialIdMount}
145
180
  />
146
181
  </Engine>
147
182
  ) : null;
package/src/Map/ref.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { RefObject } from "react";
2
2
 
3
+ import { SpatialIdRef } from "./SpatialId/types";
3
4
  import type { EngineRef, LayersRef, SketchRef } from "./types";
4
5
  import { TimelineManagerRef } from "./useTimelineManager";
5
6
  import { FunctionKeys, WrappedRef, wrapRef } from "./utils";
@@ -8,6 +9,7 @@ export type MapRef = {
8
9
  engine: WrappedRef<EngineRef>;
9
10
  layers: WrappedRef<LayersRef>;
10
11
  sketch: WrappedRef<SketchRef>;
12
+ spatialId?: WrappedRef<SpatialIdRef>;
11
13
  timeline?: TimelineManagerRef;
12
14
  };
13
15
 
@@ -82,6 +84,7 @@ const engineRefKeys: FunctionKeys<EngineRef> = {
82
84
  unselectFeatures: 1,
83
85
  pickManyFromViewport: 1,
84
86
  getExtrudedHeight: 1,
87
+ getExtrudedPoint: 1,
85
88
  getSurfaceDistance: 1,
86
89
  equalsEpsilon2d: 1,
87
90
  equalsEpsilon3d: 1,
@@ -89,6 +92,8 @@ const engineRefKeys: FunctionKeys<EngineRef> = {
89
92
  setCursor: 1,
90
93
  bringToFront: 1,
91
94
  sendToBack: 1,
95
+ calcRectangleControlPoint: 1,
96
+ getCredits: 1,
92
97
  };
93
98
 
94
99
  const layersRefKeys: FunctionKeys<LayersRef> = {
@@ -103,6 +108,8 @@ const layersRefKeys: FunctionKeys<LayersRef> = {
103
108
  findByTags: 1,
104
109
  hide: 1,
105
110
  isLayer: 1,
111
+ isComputedLayer: 1,
112
+ isTempLayer: 1,
106
113
  layers: 1,
107
114
  override: 1,
108
115
  replace: 1,
@@ -121,23 +128,37 @@ const sketchRefKeys: FunctionKeys<SketchRef> = {
121
128
  setType: 1,
122
129
  getOptions: 1,
123
130
  overrideOptions: 1,
131
+ editFeature: 1,
132
+ applyEdit: 1,
133
+ cancelEdit: 1,
134
+ deleteFeature: 1,
135
+ onEditFeatureChange: 1,
136
+ };
137
+
138
+ const spatialIdRefKeys: FunctionKeys<SpatialIdRef> = {
139
+ pickSpace: 1,
140
+ exitPickSpace: 1,
141
+ onSpacePick: 1,
124
142
  };
125
143
 
126
144
  export function mapRef({
127
145
  engineRef,
128
146
  layersRef,
129
147
  sketchRef,
148
+ spatialIdRef,
130
149
  timelineManagerRef,
131
150
  }: {
132
151
  engineRef: RefObject<EngineRef>;
133
152
  layersRef: RefObject<LayersRef>;
134
153
  sketchRef: RefObject<SketchRef>;
154
+ spatialIdRef: RefObject<SpatialIdRef>;
135
155
  timelineManagerRef?: TimelineManagerRef;
136
156
  }): MapRef {
137
157
  return {
138
158
  engine: wrapRef(engineRef, engineRefKeys),
139
159
  layers: wrapRef(layersRef, layersRefKeys),
140
160
  sketch: wrapRef(sketchRef, sketchRefKeys),
161
+ spatialId: wrapRef(spatialIdRef, spatialIdRefKeys),
141
162
  timeline: timelineManagerRef,
142
163
  };
143
164
  }
@@ -38,7 +38,13 @@ import type {
38
38
  LayerSelectionReason,
39
39
  Ref as LayersRef,
40
40
  } from "../Layers";
41
- import { SketchType, SketchOptions, SketchComponentType } from "../Sketch/types";
41
+ import {
42
+ SketchType,
43
+ SketchOptions,
44
+ SketchComponentType,
45
+ SketchEditFeatureChangeCb,
46
+ SketchEditingFeature,
47
+ } from "../Sketch/types";
42
48
  import type { TimelineManagerRef } from "../useTimelineManager";
43
49
 
44
50
  import type { SceneMode, ViewerProperty } from "./viewerProperty";
@@ -113,7 +119,12 @@ export type EngineRef = {
113
119
  getExtrudedHeight: (
114
120
  position: [x: number, y: number, z: number],
115
121
  windowPosition: [x: number, y: number],
122
+ allowNegative?: boolean,
116
123
  ) => number | undefined;
124
+ getExtrudedPoint: (
125
+ position: [x: number, y: number, z: number],
126
+ extrutedHeight: number,
127
+ ) => Position3d | undefined;
117
128
  getSurfaceDistance: (point1: Cartesian3, point2: Cartesian3) => number | undefined;
118
129
  equalsEpsilon2d: (
119
130
  point1: Position2d,
@@ -196,6 +207,12 @@ export type EngineRef = {
196
207
  // TODO: Get condition as expression for plugin
197
208
  condition?: (f: PickedFeature) => boolean,
198
209
  ) => PickedFeature[] | undefined;
210
+ calcRectangleControlPoint: (
211
+ p1: Position3d,
212
+ p2: Position3d,
213
+ p3: Position3d,
214
+ ) => [p1: Position3d, p2: Position3d, p3: Position3d];
215
+ getCredits: () => Credit[] | undefined;
199
216
  } & MouseEventHandles;
200
217
 
201
218
  export type EngineProps = {
@@ -220,6 +237,7 @@ export type EngineProps = {
220
237
  isLayerDragging?: boolean;
221
238
  shouldRender?: boolean;
222
239
  meta?: Record<string, unknown>;
240
+ displayCredits?: boolean;
223
241
  layersRef?: RefObject<LayersRef>;
224
242
  requestingRenderMode?: MutableRefObject<RequestingRenderMode>;
225
243
  timelineManagerRef?: TimelineManagerRef;
@@ -243,6 +261,7 @@ export type EngineProps = {
243
261
  onLayerSelectWithRectStart?: (e: LayerSelectWithRectStart) => void;
244
262
  onLayerSelectWithRectMove?: (e: LayerSelectWithRectMove) => void;
245
263
  onLayerSelectWithRectEnd?: (e: LayerSelectWithRectEnd) => void;
264
+ onCreditsUpdate?: (credits: Credit[]) => void;
246
265
  };
247
266
 
248
267
  export type LayerEditEvent = {
@@ -360,4 +379,13 @@ export type SketchRef = {
360
379
  setType: (type: SketchType | undefined, from?: "editor" | "plugin") => void;
361
380
  getOptions: () => SketchOptions;
362
381
  overrideOptions: (options: SketchOptions) => void;
382
+ editFeature: (feature: SketchEditingFeature | undefined) => void;
383
+ cancelEdit: (ignoreAutoReSelect?: boolean) => void;
384
+ applyEdit: () => void;
385
+ deleteFeature: (layerId: string, featureId: string) => void;
386
+ onEditFeatureChange: (cb: SketchEditFeatureChangeCb) => void;
387
+ };
388
+
389
+ export type Credit = {
390
+ html?: string;
363
391
  };
@@ -132,6 +132,8 @@ export type TileLabelProperty = {
132
132
  id: string;
133
133
  labelType: "japan_gsi_optimal_bvmap";
134
134
  style: Record<string, any>;
135
+ near?: number;
136
+ far?: number;
135
137
  };
136
138
 
137
139
  export type SkyProperty = {
@@ -26,6 +26,8 @@ type CoreContext = {
26
26
  handleCameraForceHorizontalRollChange?: (enable?: boolean) => void;
27
27
  handleInteractionModeChange?: (mode?: InteractionModeType | undefined) => void;
28
28
  onSketchPluginFeatureCreate?: (cb: SketchEventCallback) => void;
29
+ onSketchPluginFeatureUpdate?: (cb: SketchEventCallback) => void;
30
+ onSketchPluginFeatureDelete?: (cb: SketchEventCallback) => void;
29
31
  onSketchTypeChange?: (cb: (type: SketchType | undefined) => void) => void;
30
32
  onLayerVisibility?: (cb: (e: LayerVisibilityEvent) => void) => void;
31
33
  onLayerLoad?: (cb: (e: LayerLoadEvent) => void) => void;
@@ -82,12 +82,24 @@ export default function useHooks(
82
82
  reason: LayerSelectionReason | undefined,
83
83
  info: SelectedFeatureInfo | undefined,
84
84
  ) => {
85
- if (selectedLayer.layerId === layerId && selectedLayer.featureId === featureId) return;
85
+ const isSketchLayer =
86
+ selectedLayer.layer?.layer.type === "simple" &&
87
+ selectedLayer.layer?.layer?.data?.isSketchLayer;
88
+ // Sketch layer feature has a fixed featureId, we need to exclude it from the skip condition
89
+ if (
90
+ selectedLayer.layerId === layerId &&
91
+ selectedLayer.featureId === featureId &&
92
+ !isSketchLayer
93
+ )
94
+ return;
86
95
 
87
96
  const computedLayer = await layer?.();
88
97
  const computedFeature =
89
98
  layerId && featureId
90
- ? mapRef.current?.engine.findComputedFeatureById?.(layerId, featureId) ?? info?.feature
99
+ ? (isSketchLayer
100
+ ? computedLayer?.features?.find(f => f.id === featureId)
101
+ : mapRef.current?.engine.findComputedFeatureById?.(layerId, featureId)) ??
102
+ info?.feature
91
103
  : undefined;
92
104
 
93
105
  selectFeature(
@@ -194,6 +206,25 @@ export default function useHooks(
194
206
  onSketchPluginFeatureCreateCallbacksRef.current.forEach(fn => fn(props));
195
207
  }, []);
196
208
 
209
+ const onSketchPluginFeatureUpdateCallbacksRef = useRef<SketchEventCallback[]>([]);
210
+ const onSketchPluginFeatureUpdate = useCallback((cb: SketchEventCallback) => {
211
+ onSketchPluginFeatureUpdateCallbacksRef.current.push(cb);
212
+ }, []);
213
+ const handleSketchPluginFeatureUpdate = useCallback((props: SketchEventProps) => {
214
+ onSketchPluginFeatureUpdateCallbacksRef.current.forEach(fn => fn(props));
215
+ }, []);
216
+
217
+ const onSketchPluginFeatureDeleteCallbacksRef = useRef<SketchEventCallback[]>([]);
218
+ const onSketchPluginFeatureDelete = useCallback((cb: SketchEventCallback) => {
219
+ onSketchPluginFeatureDeleteCallbacksRef.current.push(cb);
220
+ }, []);
221
+ const handleSketchPluginFeatureDelete = useCallback(
222
+ (props: { layerId: string; featureId: string }) => {
223
+ onSketchPluginFeatureDeleteCallbacksRef.current.forEach(fn => fn(props));
224
+ },
225
+ [],
226
+ );
227
+
197
228
  const onSketchTypeChangeCallbacksRef = useRef<((type: SketchType | undefined) => void)[]>([]);
198
229
  const onSketchTypeChange = useCallback((cb: (type: SketchType | undefined) => void) => {
199
230
  onSketchTypeChangeCallbacksRef.current.push(cb);
@@ -244,6 +275,8 @@ export default function useHooks(
244
275
  handleCameraForceHorizontalRollChange,
245
276
  handleInteractionModeChange: changeInteractionMode,
246
277
  onSketchPluginFeatureCreate,
278
+ onSketchPluginFeatureUpdate,
279
+ onSketchPluginFeatureDelete,
247
280
  onSketchTypeChange,
248
281
  onLayerVisibility,
249
282
  onLayerLoad,
@@ -261,6 +294,8 @@ export default function useHooks(
261
294
  handleCameraForceHorizontalRollChange,
262
295
  onLayerEdit,
263
296
  onSketchPluginFeatureCreate,
297
+ onSketchPluginFeatureUpdate,
298
+ onSketchPluginFeatureDelete,
264
299
  onSketchTypeChange,
265
300
  onLayerVisibility,
266
301
  onLayerLoad,
@@ -294,6 +329,7 @@ export default function useHooks(
294
329
  cameraForceHorizontalRoll,
295
330
  coreContextValue,
296
331
  containerStyle,
332
+ overriddenInteractionMode: interactionMode,
297
333
  handleLayerSelect,
298
334
  handleLayerDrag,
299
335
  handleLayerDrop,
@@ -301,6 +337,8 @@ export default function useHooks(
301
337
  handleCameraChange: changeCamera,
302
338
  handleInteractionModeChange: changeInteractionMode,
303
339
  handleSketchPluginFeatureCreate,
340
+ handleSketchPluginFeatureUpdate,
341
+ handleSketchPluginFeatureDelete,
304
342
  handleSketchTypeChange,
305
343
  handleLayerVisibility,
306
344
  handleLayerLoad,
@@ -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
  ) => {
@@ -105,6 +116,7 @@ export const CoreVisualizer = memo(
105
116
  cameraForceHorizontalRoll,
106
117
  coreContextValue,
107
118
  containerStyle,
119
+ overriddenInteractionMode,
108
120
  handleLayerSelect,
109
121
  handleLayerDrag,
110
122
  handleLayerDrop,
@@ -112,6 +124,8 @@ export const CoreVisualizer = memo(
112
124
  handleCameraChange,
113
125
  handleInteractionModeChange,
114
126
  handleSketchPluginFeatureCreate,
127
+ handleSketchPluginFeatureUpdate,
128
+ handleSketchPluginFeatureDelete,
115
129
  handleSketchTypeChange,
116
130
  handleLayerVisibility,
117
131
  handleLayerLoad,
@@ -152,6 +166,7 @@ export const CoreVisualizer = memo(
152
166
  isLayerDragging={isLayerDragging}
153
167
  isLayerDraggable={isEditable}
154
168
  meta={meta}
169
+ displayCredits={displayCredits}
155
170
  style={style}
156
171
  featureFlags={featureFlags}
157
172
  shouldRender={shouldRender}
@@ -160,7 +175,7 @@ export const CoreVisualizer = memo(
160
175
  small={small}
161
176
  ready={ready}
162
177
  timelineManagerRef={timelineManagerRef}
163
- interactionMode={interactionMode}
178
+ interactionMode={overriddenInteractionMode}
164
179
  selectedFeature={selectedFeature}
165
180
  cursor={cursor}
166
181
  onCameraChange={handleCameraChange}
@@ -171,6 +186,10 @@ export const CoreVisualizer = memo(
171
186
  overrideInteractionMode={handleInteractionModeChange}
172
187
  onSketchFeatureCreate={onSketchFeatureCreate}
173
188
  onSketchPluginFeatureCreate={handleSketchPluginFeatureCreate}
189
+ onSketchFeatureUpdate={onSketchFeatureUpdate}
190
+ onSketchPluginFeatureUpdate={handleSketchPluginFeatureUpdate}
191
+ onSketchFeatureDelete={onSketchFeatureDelete}
192
+ onSketchPluginFeatureDelete={handleSketchPluginFeatureDelete}
174
193
  onSketchTypeChange={handleSketchTypeChange}
175
194
  onMount={onMount}
176
195
  onLayerVisibility={handleLayerVisibility}
@@ -178,6 +197,8 @@ export const CoreVisualizer = memo(
178
197
  onLayerSelectWithRectStart={handleLayerSelectWithRectStart}
179
198
  onLayerSelectWithRectMove={handleLayerSelectWithRectMove}
180
199
  onLayerSelectWithRectEnd={handleLayerSelectWithRectEnd}
200
+ onAPIReady={onAPIReady}
201
+ onCreditsUpdate={onCreditsUpdate}
181
202
  />
182
203
  <coreContext.Provider value={coreContextValue}>{children}</coreContext.Provider>
183
204
  </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(
@@ -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";