@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
@@ -0,0 +1,68 @@
1
+ import { Space } from "@reearth/spatial-id-sdk";
2
+
3
+ export type SpatialIdSpaceType = {
4
+ id: string;
5
+ space: Space;
6
+ wsen: [number, number, number, number];
7
+ height: number;
8
+ extrudedHeight: number;
9
+ color?: string;
10
+ outlineColor?: string;
11
+ };
12
+
13
+ export type VerticalSpaceIndicatorType = {
14
+ id: string;
15
+ wsen: [number, number, number, number];
16
+ height: number;
17
+ extrudedHeight: number;
18
+ color: string;
19
+ outlineColor: string;
20
+ };
21
+
22
+ export type CoordinateSelectorType = {
23
+ id: string;
24
+ spaceId: string;
25
+ wsen: [number, number, number, number];
26
+ color: string;
27
+ };
28
+
29
+ export type SpatialIdPickSpaceOptions = {
30
+ zoom?: number;
31
+ maxHeight?: number;
32
+ minHeight?: number;
33
+ dataOnly?: boolean;
34
+ rightClickToExit?: boolean;
35
+ color?: string;
36
+ outlineColor?: string;
37
+ groundIndicatorColor?: string;
38
+ selectorColor?: string;
39
+ selectorOutlineColor?: string;
40
+ verticalSpaceIndicatorColor?: string;
41
+ verticalSpaceIndicatorOutlineColor?: string;
42
+ };
43
+
44
+ export type SpatialIdRef = {
45
+ pickSpace: (options?: SpatialIdPickSpaceOptions) => void;
46
+ exitPickSpace: () => void;
47
+ onSpacePick: (cb: (space: SpatialIdSpaceData) => void) => void;
48
+ };
49
+
50
+ export type SpatialIdSpacePickingState = "idle" | "coordinate" | "floor";
51
+
52
+ export type SpatialIdSpaceData = {
53
+ id: string;
54
+ center: { lat: number; lng: number; alt?: number };
55
+ alt: number;
56
+ zoom: number;
57
+ zfxy: {
58
+ z: number;
59
+ f: number;
60
+ x: number;
61
+ y: number;
62
+ };
63
+ zfxyStr: string;
64
+ tilehash: string;
65
+ hilbertTilehash: string;
66
+ hilbertIndex: string;
67
+ vertices: [number, number, number][];
68
+ };
@@ -0,0 +1,64 @@
1
+ import { v4 as uuid } from "uuid";
2
+
3
+ import { Space } from "@reearth/spatial-id-sdk";
4
+
5
+ import { SpatialIdSpaceType, SpatialIdSpaceData } from "./types";
6
+
7
+ const getRectangeParamsFromSpace = (space: Space) => {
8
+ const vertices = space.vertices3d();
9
+ const wsen: [number, number, number, number] = [
10
+ vertices[0][0],
11
+ vertices[1][1],
12
+ vertices[2][0],
13
+ vertices[3][1],
14
+ ];
15
+ const height = vertices[0][2];
16
+ const extrudedHeight = vertices[4][2];
17
+ return { wsen, height, extrudedHeight };
18
+ };
19
+
20
+ export const createSpatialIdSpace = (
21
+ lng: number,
22
+ lat: number,
23
+ alt: number,
24
+ zoom: number,
25
+ ): SpatialIdSpaceType => {
26
+ const space = new Space({ lat, lng, alt }, zoom);
27
+ const { wsen, height, extrudedHeight } = getRectangeParamsFromSpace(space);
28
+
29
+ return {
30
+ id: uuid(),
31
+ space,
32
+ wsen,
33
+ height,
34
+ extrudedHeight,
35
+ };
36
+ };
37
+
38
+ export const getSpaceData = (space: Space): SpatialIdSpaceData => {
39
+ return {
40
+ id: space.id,
41
+ center: space.center,
42
+ alt: space.alt,
43
+ zoom: space.zoom,
44
+ zfxy: space.zfxy,
45
+ zfxyStr: space.zfxyStr,
46
+ tilehash: space.tilehash,
47
+ hilbertTilehash: space.hilbertTilehash,
48
+ hilbertIndex: space.hilbertIndex.toString(),
49
+ vertices: space.vertices3d(),
50
+ };
51
+ };
52
+
53
+ export const getVerticalLimits = (
54
+ maxHeigth: number,
55
+ minHeight: number,
56
+ zoom: number,
57
+ ): { top: number; bottom: number } => {
58
+ // lat/lng doesn't matter
59
+ const topSpace = new Space({ lat: 0, lng: 0, alt: maxHeigth }, zoom);
60
+ const bottomSpace = new Space({ lat: 0, lng: 0, alt: minHeight }, zoom);
61
+ const { height } = getRectangeParamsFromSpace(topSpace);
62
+ const { extrudedHeight } = getRectangeParamsFromSpace(bottomSpace);
63
+ return { top: height, bottom: extrudedHeight };
64
+ };
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 { SketchEditingFeature } from ".";
17
18
 
18
19
  export type { MapRef } from "./ref";
19
20
 
@@ -24,12 +25,12 @@ export const REQUEST_RENDER_ONCE = 1;
24
25
  export default function ({
25
26
  ref,
26
27
  timelineManagerRef,
27
- cursor,
28
28
  onLayerSelect,
29
+ onMount,
30
+ onAPIReady,
29
31
  }: {
30
32
  ref: Ref<MapRef>;
31
33
  timelineManagerRef?: TimelineManagerRef;
32
- cursor?: CursorType;
33
34
  onLayerSelect?: (
34
35
  layerId: string | undefined,
35
36
  featureId: string | undefined,
@@ -37,10 +38,19 @@ export default function ({
37
38
  options?: LayerSelectionReason,
38
39
  info?: SelectedFeatureInfo,
39
40
  ) => void;
41
+ onMount?: () => void;
42
+ onAPIReady?: () => void;
40
43
  }) {
44
+ const [mapAPIReady, setMapAPIReady] = useState({
45
+ engine: false,
46
+ layers: false,
47
+ sketch: false,
48
+ spatialId: false,
49
+ });
41
50
  const engineRef = useRef<EngineRef>(null);
42
51
  const layersRef = useRef<LayersRef>(null);
43
52
  const sketchRef = useRef<SketchRef>(null);
53
+ const spatialIdRef = useRef<SpatialIdRef>(null);
44
54
  const requestingRenderMode = useRef<RequestingRenderMode>(NO_REQUEST_RENDER);
45
55
 
46
56
  useImperativeHandle(
@@ -50,11 +60,24 @@ export default function ({
50
60
  engineRef,
51
61
  layersRef,
52
62
  sketchRef,
63
+ spatialIdRef,
53
64
  timelineManagerRef,
54
65
  }),
55
66
  [timelineManagerRef],
56
67
  );
57
68
 
69
+ useEffect(() => {
70
+ if (
71
+ onAPIReady &&
72
+ mapAPIReady.engine &&
73
+ mapAPIReady.layers &&
74
+ mapAPIReady.sketch &&
75
+ mapAPIReady.spatialId
76
+ ) {
77
+ onAPIReady?.();
78
+ }
79
+ }, [onAPIReady, mapAPIReady]);
80
+
58
81
  // selectLayer logic
59
82
  // 1. Map/hooks(here) is the source
60
83
  // 1.2 State updates propagate up, through onLayerSelect, to update
@@ -105,19 +128,38 @@ export default function ({
105
128
  timelineManagerRef,
106
129
  });
107
130
 
108
- useEffect(() => {
109
- if (cursor) {
110
- engineRef.current?.setCursor(cursor);
111
- }
112
- }, [cursor]);
131
+ const [sketchEditingFeature, setSketchEditingFeature] = useState<
132
+ SketchEditingFeature | undefined
133
+ >();
134
+
135
+ const handleEngineMount = useCallback(() => {
136
+ setMapAPIReady(s => ({ ...s, engine: true }));
137
+ onMount?.();
138
+ }, [onMount]);
139
+ const handleLayersMount = useCallback(() => {
140
+ setMapAPIReady(s => ({ ...s, layers: true }));
141
+ }, []);
142
+ const handleSketchMount = useCallback(() => {
143
+ setMapAPIReady(s => ({ ...s, sketch: true }));
144
+ }, []);
145
+ const handleSpatialIdMount = useCallback(() => {
146
+ setMapAPIReady(s => ({ ...s, spatialId: true }));
147
+ }, []);
113
148
 
114
149
  return {
115
150
  engineRef,
116
151
  layersRef,
117
152
  sketchRef,
153
+ spatialIdRef,
118
154
  selectedLayer,
119
155
  requestingRenderMode,
120
156
  handleLayerSelect,
121
157
  handleEngineLayerSelect,
158
+ sketchEditingFeature,
159
+ setSketchEditingFeature,
160
+ handleEngineMount,
161
+ handleLayersMount,
162
+ handleSketchMount,
163
+ handleSpatialIdMount,
122
164
  };
123
165
  }
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";
@@ -29,11 +30,10 @@ export type { TimelineCommitter, TimelineManagerRef } from "./useTimelineManager
29
30
 
30
31
  export type { MapRef } from "./hooks";
31
32
 
32
- export type CursorType = "auto" | "grab" | "crosshair";
33
-
34
33
  export type Props = {
35
34
  engines?: Record<string, Engine>;
36
35
  engine?: string;
36
+ onAPIReady?: () => void;
37
37
  } & Omit<
38
38
  LayersProps,
39
39
  | "Feature"
@@ -44,9 +44,7 @@ export type Props = {
44
44
  | "viewerProperty"
45
45
  > &
46
46
  Omit<EngineProps, "onLayerSelect" | "layerSelectionReason" | "selectedLayerId"> &
47
- Omit<SketchProps, "layersRef" | "engineRef" | "SketchComponent"> & {
48
- cursor?: CursorType;
49
- };
47
+ Omit<SketchProps, "layersRef" | "engineRef" | "SketchComponent">;
50
48
 
51
49
  function MapFn(
52
50
  {
@@ -61,13 +59,18 @@ function MapFn(
61
59
  timelineManagerRef,
62
60
  interactionMode,
63
61
  selectedFeature,
64
- cursor,
65
62
  onLayerSelect,
66
63
  overrideInteractionMode,
67
64
  onSketchTypeChange,
68
65
  onSketchFeatureCreate,
69
66
  onSketchPluginFeatureCreate,
67
+ onSketchFeatureUpdate,
68
+ onSketchPluginFeatureUpdate,
69
+ onSketchFeatureDelete,
70
+ onSketchPluginFeatureDelete,
70
71
  featureFlags = INTERACTION_MODES.default,
72
+ onMount,
73
+ onAPIReady,
71
74
  ...props
72
75
  }: Props,
73
76
  ref: Ref<MapRef>,
@@ -78,15 +81,23 @@ function MapFn(
78
81
  engineRef,
79
82
  layersRef,
80
83
  sketchRef,
84
+ spatialIdRef,
81
85
  selectedLayer,
82
86
  requestingRenderMode,
83
87
  handleLayerSelect,
84
88
  handleEngineLayerSelect,
89
+ sketchEditingFeature,
90
+ setSketchEditingFeature,
91
+ handleEngineMount,
92
+ handleLayersMount,
93
+ handleSketchMount,
94
+ handleSpatialIdMount,
85
95
  } = useHooks({
86
96
  ref,
87
97
  timelineManagerRef,
88
- cursor,
89
98
  onLayerSelect,
99
+ onMount,
100
+ onAPIReady,
90
101
  });
91
102
 
92
103
  const selectedLayerIds = useMemo(
@@ -111,6 +122,7 @@ function MapFn(
111
122
  timelineManagerRef={timelineManagerRef}
112
123
  onLayerSelect={handleEngineLayerSelect}
113
124
  featureFlags={featureFlags}
125
+ onMount={handleEngineMount}
114
126
  {...props}>
115
127
  <Layers
116
128
  ref={layersRef}
@@ -128,7 +140,9 @@ function MapFn(
128
140
  meta={props.meta}
129
141
  viewerProperty={props.property}
130
142
  requestingRenderMode={requestingRenderMode}
143
+ sketchEditingFeature={sketchEditingFeature}
131
144
  onLayerSelect={handleLayerSelect}
145
+ onMount={handleLayersMount}
132
146
  />
133
147
  <Sketch
134
148
  ref={sketchRef}
@@ -142,6 +156,21 @@ function MapFn(
142
156
  onSketchTypeChange={onSketchTypeChange}
143
157
  onSketchFeatureCreate={onSketchFeatureCreate}
144
158
  onSketchPluginFeatureCreate={onSketchPluginFeatureCreate}
159
+ onSketchFeatureUpdate={onSketchFeatureUpdate}
160
+ onSketchPluginFeatureUpdate={onSketchPluginFeatureUpdate}
161
+ onSketchFeatureDelete={onSketchFeatureDelete}
162
+ onSketchPluginFeatureDelete={onSketchPluginFeatureDelete}
163
+ sketchEditingFeature={sketchEditingFeature}
164
+ onSketchEditFeature={setSketchEditingFeature}
165
+ onMount={handleSketchMount}
166
+ />
167
+ <SpatialId
168
+ ref={spatialIdRef}
169
+ engineRef={engineRef}
170
+ interactionMode={interactionMode}
171
+ terrainEnabled={!!props.property?.terrain?.enabled}
172
+ overrideInteractionMode={overrideInteractionMode}
173
+ onMount={handleSpatialIdMount}
145
174
  />
146
175
  </Engine>
147
176
  ) : 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;
@@ -7,7 +7,6 @@ import type {
7
7
  Camera,
8
8
  ComputedLayer,
9
9
  LayerEditEvent,
10
- CursorType,
11
10
  LayerVisibilityEvent,
12
11
  LayerLoadEvent,
13
12
  LayerSelectWithRectStart,
@@ -82,12 +81,24 @@ export default function useHooks(
82
81
  reason: LayerSelectionReason | undefined,
83
82
  info: SelectedFeatureInfo | undefined,
84
83
  ) => {
85
- if (selectedLayer.layerId === layerId && selectedLayer.featureId === featureId) return;
84
+ const isSketchLayer =
85
+ selectedLayer.layer?.layer.type === "simple" &&
86
+ selectedLayer.layer?.layer?.data?.isSketchLayer;
87
+ // Sketch layer feature has a fixed featureId, we need to exclude it from the skip condition
88
+ if (
89
+ selectedLayer.layerId === layerId &&
90
+ selectedLayer.featureId === featureId &&
91
+ !isSketchLayer
92
+ )
93
+ return;
86
94
 
87
95
  const computedLayer = await layer?.();
88
96
  const computedFeature =
89
97
  layerId && featureId
90
- ? mapRef.current?.engine.findComputedFeatureById?.(layerId, featureId) ?? info?.feature
98
+ ? (isSketchLayer
99
+ ? computedLayer?.features?.find(f => f.id === featureId)
100
+ : mapRef.current?.engine.findComputedFeatureById?.(layerId, featureId)) ??
101
+ info?.feature
91
102
  : undefined;
92
103
 
93
104
  selectFeature(
@@ -119,21 +130,19 @@ export default function useHooks(
119
130
  }, []);
120
131
 
121
132
  // interaction mode
122
- const [_interactionMode, changeInteractionMode] = useValue(
123
- initialInteractionMode,
133
+ const [interactionMode, changeInteractionMode] = useValue(
134
+ initialInteractionMode || "default",
124
135
  onInteractionModeChange,
125
136
  );
126
- const interactionMode = _interactionMode || "default";
127
137
 
128
- const [cursor, setCursor] = useState<CursorType>("auto");
129
138
  useEffect(() => {
130
- setCursor(
131
- interactionMode === "sketch" ? "crosshair" : interactionMode === "move" ? "grab" : "auto",
132
- );
139
+ if (interactionMode === "default") {
140
+ mapRef?.current?.engine?.setCursor("auto");
141
+ }
133
142
  }, [interactionMode]);
134
143
 
135
144
  // feature flags
136
- const featureFlags = INTERACTION_MODES[interactionMode];
145
+ const featureFlags = INTERACTION_MODES[interactionMode ?? "default"];
137
146
 
138
147
  // layer edit
139
148
  const onLayerEditRef = useRef<(e: LayerEditEvent) => void>();
@@ -194,6 +203,25 @@ export default function useHooks(
194
203
  onSketchPluginFeatureCreateCallbacksRef.current.forEach(fn => fn(props));
195
204
  }, []);
196
205
 
206
+ const onSketchPluginFeatureUpdateCallbacksRef = useRef<SketchEventCallback[]>([]);
207
+ const onSketchPluginFeatureUpdate = useCallback((cb: SketchEventCallback) => {
208
+ onSketchPluginFeatureUpdateCallbacksRef.current.push(cb);
209
+ }, []);
210
+ const handleSketchPluginFeatureUpdate = useCallback((props: SketchEventProps) => {
211
+ onSketchPluginFeatureUpdateCallbacksRef.current.forEach(fn => fn(props));
212
+ }, []);
213
+
214
+ const onSketchPluginFeatureDeleteCallbacksRef = useRef<SketchEventCallback[]>([]);
215
+ const onSketchPluginFeatureDelete = useCallback((cb: SketchEventCallback) => {
216
+ onSketchPluginFeatureDeleteCallbacksRef.current.push(cb);
217
+ }, []);
218
+ const handleSketchPluginFeatureDelete = useCallback(
219
+ (props: { layerId: string; featureId: string }) => {
220
+ onSketchPluginFeatureDeleteCallbacksRef.current.forEach(fn => fn(props));
221
+ },
222
+ [],
223
+ );
224
+
197
225
  const onSketchTypeChangeCallbacksRef = useRef<((type: SketchType | undefined) => void)[]>([]);
198
226
  const onSketchTypeChange = useCallback((cb: (type: SketchType | undefined) => void) => {
199
227
  onSketchTypeChangeCallbacksRef.current.push(cb);
@@ -244,6 +272,8 @@ export default function useHooks(
244
272
  handleCameraForceHorizontalRollChange,
245
273
  handleInteractionModeChange: changeInteractionMode,
246
274
  onSketchPluginFeatureCreate,
275
+ onSketchPluginFeatureUpdate,
276
+ onSketchPluginFeatureDelete,
247
277
  onSketchTypeChange,
248
278
  onLayerVisibility,
249
279
  onLayerLoad,
@@ -261,6 +291,8 @@ export default function useHooks(
261
291
  handleCameraForceHorizontalRollChange,
262
292
  onLayerEdit,
263
293
  onSketchPluginFeatureCreate,
294
+ onSketchPluginFeatureUpdate,
295
+ onSketchPluginFeatureDelete,
264
296
  onSketchTypeChange,
265
297
  onLayerVisibility,
266
298
  onLayerLoad,
@@ -290,10 +322,10 @@ export default function useHooks(
290
322
  featureFlags,
291
323
  isLayerDragging,
292
324
  timelineManagerRef,
293
- cursor,
294
325
  cameraForceHorizontalRoll,
295
326
  coreContextValue,
296
327
  containerStyle,
328
+ overriddenInteractionMode: interactionMode,
297
329
  handleLayerSelect,
298
330
  handleLayerDrag,
299
331
  handleLayerDrop,
@@ -301,6 +333,8 @@ export default function useHooks(
301
333
  handleCameraChange: changeCamera,
302
334
  handleInteractionModeChange: changeInteractionMode,
303
335
  handleSketchPluginFeatureCreate,
336
+ handleSketchPluginFeatureUpdate,
337
+ handleSketchPluginFeatureDelete,
304
338
  handleSketchTypeChange,
305
339
  handleLayerVisibility,
306
340
  handleLayerLoad,