@reearth/core 0.0.7-alpha.6 → 0.0.7-alpha.61

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 (515) hide show
  1. package/LICENSE +177 -0
  2. package/dist/core.js +70991 -60887
  3. package/dist/core.umd.cjs +666 -680
  4. package/dist/{index-DqatWUTw.js → index-CUJ6HGQn.js} +1021 -908
  5. package/dist/index.d.ts +157 -71
  6. package/package.json +88 -74
  7. package/src/Map/ClusteredLayers/index.tsx +1 -1
  8. package/src/Map/Geoid/index.tsx +68 -0
  9. package/src/Map/Geoid/types.ts +8 -0
  10. package/src/Map/Layer/hooks.ts +7 -4
  11. package/src/Map/Layer/index.tsx +3 -1
  12. package/src/Map/Layers/hooks.ts +35 -8
  13. package/src/Map/Layers/index.tsx +13 -2
  14. package/src/Map/Layers/keys.ts +1 -0
  15. package/src/Map/Sketch/hooks.ts +454 -411
  16. package/src/Map/Sketch/index.tsx +68 -21
  17. package/src/Map/Sketch/sketchMachine.ts +427 -102
  18. package/src/Map/Sketch/sketchMachine.typegen.ts +58 -1
  19. package/src/Map/Sketch/types.ts +10 -20
  20. package/src/Map/Sketch/usePluginSketchLayer.ts +105 -0
  21. package/src/Map/Sketch/useSketch.ts +558 -0
  22. package/src/Map/Sketch/useSketchFeature.ts +198 -0
  23. package/src/Map/SpatialId/constants.ts +21 -0
  24. package/src/Map/SpatialId/hooks.ts +448 -0
  25. package/src/Map/SpatialId/index.tsx +63 -0
  26. package/src/Map/SpatialId/types.ts +68 -0
  27. package/src/Map/SpatialId/utils.ts +65 -0
  28. package/src/Map/hooks.ts +54 -8
  29. package/src/Map/index.tsx +42 -9
  30. package/src/Map/ref.ts +32 -3
  31. package/src/Map/types/index.ts +39 -3
  32. package/src/Map/types/viewerProperty.ts +10 -0
  33. package/src/Map/useTimelineManager.ts +4 -10
  34. package/src/Map/utils.ts +1 -1
  35. package/src/Visualizer/Error.tsx +4 -1
  36. package/src/Visualizer/context.tsx +5 -5
  37. package/src/Visualizer/coreContext.tsx +3 -1
  38. package/src/Visualizer/hooks.ts +56 -22
  39. package/src/Visualizer/index.stories.tsx +15 -0
  40. package/src/Visualizer/index.tsx +25 -6
  41. package/src/Visualizer/useViewport.ts +1 -1
  42. package/src/engines/Cesium/Feature/Box/hooks/box.ts +4 -4
  43. package/src/engines/Cesium/Feature/Box/hooks/edge.ts +1 -1
  44. package/src/engines/Cesium/Feature/Box/hooks/side.ts +1 -1
  45. package/src/engines/Cesium/Feature/Box/utils.ts +6 -0
  46. package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +0 -1
  47. package/src/engines/Cesium/Feature/Frustum/getFieldOfView.ts +2 -0
  48. package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +0 -1
  49. package/src/engines/Cesium/Feature/HeatMap/HeatmapMesh.tsx +1 -1
  50. package/src/engines/Cesium/Feature/Marker/index.tsx +1 -1
  51. package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -2
  52. package/src/engines/Cesium/Feature/Model/index.tsx +3 -3
  53. package/src/engines/Cesium/Feature/PhotoOverlay/hooks.ts +2 -2
  54. package/src/engines/Cesium/Feature/PhotoOverlay/index.tsx +3 -1
  55. package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +0 -1
  56. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  57. package/src/engines/Cesium/Feature/Raster/index.stories.tsx +0 -1
  58. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  59. package/src/engines/Cesium/Feature/Resource/index.stories.tsx +0 -1
  60. package/src/engines/Cesium/Feature/Resource/index.tsx +1 -27
  61. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  62. package/src/engines/Cesium/Feature/Tileset/hooks.ts +136 -71
  63. package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +0 -1
  64. package/src/engines/Cesium/Feature/Tileset/index.tsx +1 -1
  65. package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +2 -2
  66. package/src/engines/Cesium/Feature/Tileset/useDrawClipping.ts +2 -2
  67. package/src/engines/Cesium/Feature/context.ts +1 -0
  68. package/src/engines/Cesium/Feature/index.tsx +9 -5
  69. package/src/engines/Cesium/Feature/utils.tsx +20 -12
  70. package/src/engines/Cesium/PostProcesses/hbao/AmbientOcclusion.tsx +7 -4
  71. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  72. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  73. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  74. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  75. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  76. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  77. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +126 -35
  78. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  79. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  80. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  81. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  82. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  83. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  84. package/src/engines/Cesium/common.ts +55 -18
  85. package/src/engines/Cesium/core/Clock.tsx +1 -1
  86. package/src/engines/Cesium/core/Globe/index.tsx +73 -0
  87. package/src/engines/Cesium/core/Globe/useTerrainProviderPromise.ts +79 -0
  88. package/src/engines/Cesium/core/Imagery.test.ts +29 -11
  89. package/src/engines/Cesium/core/Imagery.tsx +22 -6
  90. package/src/engines/Cesium/core/Indicator/Indicator.tsx +2 -2
  91. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +13 -6
  92. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryLayer.tsx +2 -1
  93. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryProvider.ts +3 -4
  94. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  95. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/helpers.ts +1 -1
  96. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  97. package/src/engines/Cesium/core/presets.ts +24 -28
  98. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  99. package/src/engines/Cesium/hooks/useCamera.ts +2 -2
  100. package/src/engines/Cesium/hooks/useCameraLimiter.ts +1 -1
  101. package/src/engines/Cesium/hooks/useEngineRef.ts +52 -5
  102. package/src/engines/Cesium/hooks/useExplicitRender.ts +2 -2
  103. package/src/engines/Cesium/hooks/useInstance.ts +1 -1
  104. package/src/engines/Cesium/hooks/useLayerDragDrop.ts +3 -3
  105. package/src/engines/Cesium/hooks/useLayerSelectWithRect.ts +2 -2
  106. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +115 -67
  107. package/src/engines/Cesium/hooks/useViewerProperty.ts +1 -1
  108. package/src/engines/Cesium/hooks.ts +55 -14
  109. package/src/engines/Cesium/index.stories.tsx +0 -1
  110. package/src/engines/Cesium/index.tsx +20 -6
  111. package/src/engines/Cesium/pickMany.ts +2 -0
  112. package/src/engines/Cesium/types.ts +1 -1
  113. package/src/engines/Cesium/utils/mouse.ts +1 -1
  114. package/src/engines/Cesium/utils/utils.ts +1 -1
  115. package/src/mantle/atoms/compute.test.ts +4 -4
  116. package/src/mantle/atoms/compute.ts +8 -4
  117. package/src/mantle/compat/forward.ts +1 -1
  118. package/src/mantle/data/geojson.ts +53 -22
  119. package/src/mantle/data/georss.ts +2 -2
  120. package/src/mantle/data/gml.ts +2 -2
  121. package/src/mantle/data/gpx.ts +2 -2
  122. package/src/mantle/data/shapefile/parseZip.ts +1 -0
  123. package/src/mantle/evaluator/simple/expression/README.md +392 -0
  124. package/src/mantle/evaluator/simple/expression/expression.test.ts +137 -0
  125. package/src/mantle/evaluator/simple/expression/node.ts +10 -12
  126. package/src/mantle/evaluator/simple/expression/variableReplacer.test.ts +178 -0
  127. package/src/mantle/evaluator/simple/expression/variableReplacer.ts +24 -11
  128. package/src/mantle/types/appearance.ts +4 -2
  129. package/src/mantle/types/index.ts +3 -0
  130. package/src/{Visualizer → shared}/interactionMode.ts +3 -2
  131. package/src/test/setup.ts +1 -1
  132. package/src/test/utils.tsx +1 -1
  133. package/src/types/modules.d.ts +96 -0
  134. package/src/utils/StringMatcher.ts +1 -1
  135. package/src/utils/image.ts +2 -12
  136. package/src/utils/use-delayed-count.ts +1 -1
  137. package/src/utils/use-dnd/drop.ts +1 -1
  138. package/src/utils/util.ts +1 -1
  139. package/src/utils/value.ts +2 -2
  140. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  141. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  142. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  143. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  144. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  145. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  146. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  147. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  148. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  149. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  150. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  151. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  152. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  153. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  154. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  155. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  156. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  157. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  158. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  159. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  160. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  161. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  162. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  163. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  164. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  165. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  166. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  167. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  168. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  169. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  170. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  171. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  172. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  173. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  174. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  175. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  176. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  177. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  178. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  179. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  180. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  181. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  182. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  183. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  184. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  185. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  186. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  187. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  188. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  189. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  190. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  191. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  192. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  193. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  194. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  195. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  196. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  197. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  198. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  199. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  200. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  201. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  202. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  203. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  204. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  205. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  206. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  207. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  208. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  209. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  210. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  211. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  212. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  213. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  214. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  215. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  216. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  217. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  218. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  219. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  220. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  221. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  222. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  223. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  271. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  272. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  273. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  274. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  275. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  276. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  277. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  278. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  279. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  280. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  281. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  282. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  283. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  284. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  285. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  286. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  287. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  288. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  289. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  290. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  291. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  292. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  293. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  294. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  295. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  296. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  297. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  298. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  299. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  300. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  301. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  302. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  303. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  304. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  305. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  306. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  307. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  308. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  309. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  310. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  311. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  312. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  313. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  314. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  315. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  316. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  317. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  318. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  319. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  320. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  321. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  322. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  323. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  324. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  325. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  326. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  327. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  328. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  329. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  330. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  331. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  332. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  333. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  334. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  335. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  336. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  337. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  338. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  339. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  340. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  341. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  342. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  343. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  344. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  345. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  346. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  347. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  348. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  349. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  350. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  351. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  352. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  353. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  354. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  355. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  356. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  357. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  358. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  359. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  360. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  361. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  362. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  363. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  364. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  365. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  366. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  367. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  368. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  369. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  370. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  371. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  372. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  373. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  374. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  375. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  376. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  377. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  378. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  379. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  380. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  381. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  382. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  383. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  384. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  385. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  386. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  387. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  388. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  389. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  390. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  391. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  392. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  393. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  394. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  395. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  396. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  397. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  398. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  399. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  400. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  401. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  402. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  403. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  404. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  405. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  406. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  407. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  408. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  409. package/dist/cesium/Widgets/lighter.css +0 -237
  410. package/dist/cesium/Widgets/lighterShared.css +0 -46
  411. package/dist/cesium/Widgets/shared.css +0 -103
  412. package/dist/cesium/Widgets/widgets.css +0 -1346
  413. package/dist/cesium/Workers/chunk-2YD5QWGR.js +0 -28
  414. package/dist/cesium/Workers/chunk-3T4KR75X.js +0 -26
  415. package/dist/cesium/Workers/chunk-46KFVW24.js +0 -26
  416. package/dist/cesium/Workers/chunk-4EI6PP43.js +0 -28
  417. package/dist/cesium/Workers/chunk-4RS52VIY.js +0 -26
  418. package/dist/cesium/Workers/chunk-4YLYA3DC.js +0 -26
  419. package/dist/cesium/Workers/chunk-5ENAGXBI.js +0 -26
  420. package/dist/cesium/Workers/chunk-5VIB3TI5.js +0 -26
  421. package/dist/cesium/Workers/chunk-6NGZLDFZ.js +0 -26
  422. package/dist/cesium/Workers/chunk-6RGNWVZ2.js +0 -27
  423. package/dist/cesium/Workers/chunk-7AZZVJ52.js +0 -26
  424. package/dist/cesium/Workers/chunk-AMXAQQEL.js +0 -26
  425. package/dist/cesium/Workers/chunk-AQW44ZPC.js +0 -26
  426. package/dist/cesium/Workers/chunk-CPCMDW6Z.js +0 -26
  427. package/dist/cesium/Workers/chunk-DNL2WDRL.js +0 -26
  428. package/dist/cesium/Workers/chunk-ERW7V247.js +0 -26
  429. package/dist/cesium/Workers/chunk-EYRIA4TP.js +0 -26
  430. package/dist/cesium/Workers/chunk-F7RQIJML.js +0 -26
  431. package/dist/cesium/Workers/chunk-FPZMU6QP.js +0 -26
  432. package/dist/cesium/Workers/chunk-FZDVQW7A.js +0 -26
  433. package/dist/cesium/Workers/chunk-GAZ2U4FO.js +0 -26
  434. package/dist/cesium/Workers/chunk-I44IOOT4.js +0 -26
  435. package/dist/cesium/Workers/chunk-IALXUAD4.js +0 -26
  436. package/dist/cesium/Workers/chunk-IXBUEUZL.js +0 -26
  437. package/dist/cesium/Workers/chunk-J3GCYV5K.js +0 -26
  438. package/dist/cesium/Workers/chunk-KGSZTFHZ.js +0 -26
  439. package/dist/cesium/Workers/chunk-KKKPU2CI.js +0 -26
  440. package/dist/cesium/Workers/chunk-KTEJE5KE.js +0 -26
  441. package/dist/cesium/Workers/chunk-KYZ3DYY6.js +0 -26
  442. package/dist/cesium/Workers/chunk-L2QG4MRI.js +0 -26
  443. package/dist/cesium/Workers/chunk-MCE3KFYN.js +0 -26
  444. package/dist/cesium/Workers/chunk-MMLDGXML.js +0 -26
  445. package/dist/cesium/Workers/chunk-MTBRPBDQ.js +0 -26
  446. package/dist/cesium/Workers/chunk-OKT6VBRK.js +0 -26
  447. package/dist/cesium/Workers/chunk-PHYDKLSY.js +0 -26
  448. package/dist/cesium/Workers/chunk-PWPX3224.js +0 -26
  449. package/dist/cesium/Workers/chunk-QHOVE6WG.js +0 -26
  450. package/dist/cesium/Workers/chunk-QJ6MBL22.js +0 -26
  451. package/dist/cesium/Workers/chunk-QKO6VIG2.js +0 -26
  452. package/dist/cesium/Workers/chunk-QVEE4QL2.js +0 -26
  453. package/dist/cesium/Workers/chunk-RXQOQZ7S.js +0 -26
  454. package/dist/cesium/Workers/chunk-S3ZKQKMM.js +0 -26
  455. package/dist/cesium/Workers/chunk-SFEUMZSK.js +0 -26
  456. package/dist/cesium/Workers/chunk-T75MW4X3.js +0 -26
  457. package/dist/cesium/Workers/chunk-TVO2A75R.js +0 -66
  458. package/dist/cesium/Workers/chunk-UHR36K45.js +0 -27
  459. package/dist/cesium/Workers/chunk-UKJCDZOR.js +0 -26
  460. package/dist/cesium/Workers/chunk-VKVIYER6.js +0 -26
  461. package/dist/cesium/Workers/chunk-VPIQWTRZ.js +0 -26
  462. package/dist/cesium/Workers/chunk-XSX5HRFC.js +0 -26
  463. package/dist/cesium/Workers/chunk-Z5WQQHSL.js +0 -26
  464. package/dist/cesium/Workers/chunk-Z7B2VEL5.js +0 -26
  465. package/dist/cesium/Workers/combineGeometry.js +0 -26
  466. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  467. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  468. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  469. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  470. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  471. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  472. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  473. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  474. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  475. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  476. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  477. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  478. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  479. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  480. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  481. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  482. package/dist/cesium/Workers/createGeometry.js +0 -26
  483. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  484. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  485. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  486. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  487. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  488. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  489. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  490. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  491. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  492. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  493. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  494. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  495. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  496. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  497. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  498. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  499. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  500. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  501. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  502. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  503. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  504. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  505. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  506. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  507. package/dist/cesium/Workers/decodeDraco.js +0 -26
  508. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  509. package/dist/cesium/Workers/decodeI3S.js +0 -26
  510. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  511. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  512. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  513. package/src/engines/Cesium/core/Globe.tsx +0 -104
  514. /package/src/{Visualizer → shared}/featureFlags.ts +0 -0
  515. /package/src/{Map/Sketch/utils.ts → utils/use-window-event.ts} +0 -0
package/src/Map/utils.ts CHANGED
@@ -6,7 +6,7 @@ export function useGet<T>(value: T): () => T {
6
6
  return useCallback(() => ref.current, []);
7
7
  }
8
8
 
9
- export function wrapRef<T>(ref: RefObject<T>, keys: FunctionKeys<T>): WrappedRef<T> {
9
+ export function wrapRef<T>(ref: RefObject<T | null>, keys: FunctionKeys<T>): WrappedRef<T> {
10
10
  return Object.fromEntries(
11
11
  (Object.keys(keys) as (keyof T)[]).map(k => {
12
12
  return [k, (...args: any[]) => (ref.current?.[k] as any)?.(...args)];
@@ -1,10 +1,13 @@
1
1
  import type { FallbackProps } from "react-error-boundary";
2
2
 
3
3
  export default function Error({ error, resetErrorBoundary }: FallbackProps) {
4
+ const err = error as Error;
5
+ const errorMessage = err?.message ?? String(error);
6
+
4
7
  return (
5
8
  <div>
6
9
  <h1>Oops! An Error Occurred</h1>
7
- <p>{error.message}</p>
10
+ <p>{errorMessage}</p>
8
11
  <p>
9
12
  <button style={{ color: "#fff" }} onClick={resetErrorBoundary}>
10
13
  Retry
@@ -2,11 +2,11 @@ import { FC, PropsWithChildren, RefObject, createContext, useContext, useMemo }
2
2
 
3
3
  import { MapRef } from "../Map";
4
4
 
5
- const context = createContext<RefObject<MapRef> | undefined>(undefined);
5
+ const context = createContext<RefObject<MapRef | null> | undefined>(undefined);
6
6
 
7
- export type Context = RefObject<MapRef>;
7
+ export type Context = RefObject<MapRef | null>;
8
8
 
9
- export const useVisualizer = (): RefObject<MapRef> => {
9
+ export const useVisualizer = (): RefObject<MapRef | null> => {
10
10
  const value = useContext(context);
11
11
  if (!value) {
12
12
  throw new Error("Visualizer is not declared. You have to use this hook inside of Visualizer");
@@ -14,11 +14,11 @@ export const useVisualizer = (): RefObject<MapRef> => {
14
14
  return value;
15
15
  };
16
16
 
17
- const filterMapRefToContext = (mapRef: RefObject<MapRef>): Context => {
17
+ const filterMapRefToContext = (mapRef: RefObject<MapRef | null>): Context => {
18
18
  return mapRef as Context;
19
19
  };
20
20
 
21
- export const VisualizerProvider: FC<PropsWithChildren<{ mapRef: RefObject<MapRef> }>> = ({
21
+ export const VisualizerProvider: FC<PropsWithChildren<{ mapRef: RefObject<MapRef | null> }>> = ({
22
22
  mapRef,
23
23
  children,
24
24
  }) => {
@@ -9,8 +9,8 @@ import {
9
9
  LayerSelectWithRectStart,
10
10
  } from "../Map";
11
11
  import { SketchEventCallback, SketchType } from "../Map/Sketch/types";
12
+ import { InteractionModeType } from "../shared/interactionMode";
12
13
 
13
- import { InteractionModeType } from "./interactionMode";
14
14
  import { Viewport } from "./useViewport";
15
15
 
16
16
  type CoreContext = {
@@ -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,
@@ -17,9 +16,9 @@ import type {
17
16
  } from "../Map";
18
17
  import { SketchEventCallback, SketchEventProps, SketchType } from "../Map/Sketch/types";
19
18
  import { TimelineManagerRef } from "../Map/useTimelineManager";
19
+ import type { InteractionModeType } from "../shared/interactionMode";
20
+ import { INTERACTION_MODES } from "../shared/interactionMode";
20
21
 
21
- import type { InteractionModeType } from "./interactionMode";
22
- import { INTERACTION_MODES } from "./interactionMode";
23
22
  import useCoreAPI from "./useCoreAPI";
24
23
  import useViewport from "./useViewport";
25
24
 
@@ -56,7 +55,7 @@ export default function useHooks(
56
55
  ) {
57
56
  const mapRef = useRef<MapRef>(null);
58
57
 
59
- useImperativeHandle(ref, () => mapRef.current, []);
58
+ useImperativeHandle(ref, () => mapRef.current as MapRef, []);
60
59
 
61
60
  const wrapperRef = useRef<HTMLDivElement>(null);
62
61
 
@@ -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(
@@ -108,7 +119,7 @@ export default function useHooks(
108
119
  [selectedLayer, onLayerSelect],
109
120
  );
110
121
 
111
- const timelineManagerRef: TimelineManagerRef = useRef();
122
+ const timelineManagerRef: TimelineManagerRef = useRef(undefined);
112
123
 
113
124
  // camera
114
125
  const [camera, changeCamera] = useValue(initialCamera, onCameraChange);
@@ -119,24 +130,22 @@ 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
- const onLayerEditRef = useRef<(e: LayerEditEvent) => void>();
148
+ const onLayerEditRef = useRef<(e: LayerEditEvent) => void>(undefined);
140
149
  const onLayerEdit = useCallback((cb: (e: LayerEditEvent) => void) => {
141
150
  onLayerEditRef.current = cb;
142
151
  }, []);
@@ -145,7 +154,7 @@ export default function useHooks(
145
154
  }, []);
146
155
 
147
156
  // layer visiblity
148
- const onLayerVisibilityRef = useRef<(e: LayerVisibilityEvent) => void>();
157
+ const onLayerVisibilityRef = useRef<(e: LayerVisibilityEvent) => void>(undefined);
149
158
  const onLayerVisibility = useCallback((cb: (e: LayerVisibilityEvent) => void) => {
150
159
  onLayerVisibilityRef.current = cb;
151
160
  }, []);
@@ -154,7 +163,7 @@ export default function useHooks(
154
163
  }, []);
155
164
 
156
165
  // layer load
157
- const onLayerLoadRef = useRef<(e: LayerLoadEvent) => void>();
166
+ const onLayerLoadRef = useRef<(e: LayerLoadEvent) => void>(undefined);
158
167
  const onLayerLoad = useCallback((cb: (e: LayerLoadEvent) => void) => {
159
168
  onLayerLoadRef.current = cb;
160
169
  }, []);
@@ -163,21 +172,21 @@ export default function useHooks(
163
172
  }, []);
164
173
 
165
174
  // multiple feature selection
166
- const onLayerSelectWithRectStartRef = useRef<(e: LayerSelectWithRectStart) => void>();
175
+ const onLayerSelectWithRectStartRef = useRef<(e: LayerSelectWithRectStart) => void>(undefined);
167
176
  const onLayerSelectWithRectStart = useCallback((cb: (e: LayerSelectWithRectStart) => void) => {
168
177
  onLayerSelectWithRectStartRef.current = cb;
169
178
  }, []);
170
179
  const handleLayerSelectWithRectStart = useCallback((e: LayerSelectWithRectStart) => {
171
180
  onLayerSelectWithRectStartRef.current?.(e);
172
181
  }, []);
173
- const onLayerSelectWithRectMoveRef = useRef<(e: LayerSelectWithRectMove) => void>();
182
+ const onLayerSelectWithRectMoveRef = useRef<(e: LayerSelectWithRectMove) => void>(undefined);
174
183
  const onLayerSelectWithRectMove = useCallback((cb: (e: LayerSelectWithRectMove) => void) => {
175
184
  onLayerSelectWithRectMoveRef.current = cb;
176
185
  }, []);
177
186
  const handleLayerSelectWithRectMove = useCallback((e: LayerSelectWithRectMove) => {
178
187
  onLayerSelectWithRectMoveRef.current?.(e);
179
188
  }, []);
180
- const onLayerSelectWithRectEndRef = useRef<(e: LayerSelectWithRectEnd) => void>();
189
+ const onLayerSelectWithRectEndRef = useRef<(e: LayerSelectWithRectEnd) => void>(undefined);
181
190
  const onLayerSelectWithRectEnd = useCallback((cb: (e: LayerSelectWithRectEnd) => void) => {
182
191
  onLayerSelectWithRectEndRef.current = cb;
183
192
  }, []);
@@ -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,
@@ -1,5 +1,6 @@
1
1
  import { Meta, StoryObj } from "@storybook/react";
2
2
  import { ComponentProps, FC, useEffect, useState } from "react";
3
+ import { fn } from "storybook/test";
3
4
 
4
5
  import { useVisualizer } from "./context";
5
6
 
@@ -7,6 +8,20 @@ import { CoreVisualizer } from ".";
7
8
 
8
9
  export default {
9
10
  component: CoreVisualizer,
11
+ args: {
12
+ // Explicit action handlers for callback props
13
+ onMount: fn(),
14
+ onLayerSelect: fn(),
15
+ onCameraChange: fn(),
16
+ onLayerDrag: fn(),
17
+ onLayerDrop: fn(),
18
+ onLayerEdit: fn(),
19
+ onLayerSelectWithRectStart: fn(),
20
+ onLayerSelectWithRectMove: fn(),
21
+ onLayerSelectWithRectEnd: fn(),
22
+ onLayerVisibility: fn(),
23
+ onLayerLoad: fn(),
24
+ },
10
25
  } as Meta;
11
26
 
12
27
  type Story = StoryObj<typeof CoreVisualizer>;
@@ -12,22 +12,23 @@ import {
12
12
  type LatLng,
13
13
  type Cluster,
14
14
  type ComputedLayer,
15
+ type Credits,
15
16
  } from "../Map";
16
17
  import { SketchFeature, SketchType } from "../Map/Sketch/types";
18
+ import type { InteractionModeType } from "../shared/interactionMode";
17
19
 
18
20
  import { VisualizerProvider } from "./context";
19
21
  import { coreContext } from "./coreContext";
20
22
  import { engines, type EngineType } from "./engines";
21
23
  import Err from "./Error";
22
24
  import useHooks from "./hooks";
23
- import type { InteractionModeType } from "./interactionMode";
24
25
 
25
26
  export { useVisualizer, type Context as VisualizerContext } from "./context";
26
27
  export * from "./engines";
27
28
  export * from "./useViewport";
28
29
  export * from "./coreContext";
29
- export * from "./featureFlags";
30
- export * from "./interactionMode";
30
+ export * from "../shared/featureFlags";
31
+ export * from "../shared/interactionMode";
31
32
 
32
33
  export type CoreVisualizerProps = {
33
34
  engine?: EngineType;
@@ -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?: Credits) => void;
62
68
  };
63
69
 
64
70
  export const CoreVisualizer = memo(
@@ -79,6 +85,7 @@ export const CoreVisualizer = memo(
79
85
  interactionMode,
80
86
  shouldRender,
81
87
  meta,
88
+ displayCredits = true,
82
89
  style,
83
90
  zoomedLayerId,
84
91
  children,
@@ -90,6 +97,10 @@ export const CoreVisualizer = memo(
90
97
  onMount,
91
98
  onSketchTypeChangeProp,
92
99
  onSketchFeatureCreate,
100
+ onSketchFeatureUpdate,
101
+ onSketchFeatureDelete,
102
+ onAPIReady,
103
+ onCreditsUpdate,
93
104
  },
94
105
  ref: Ref<MapRef | null>,
95
106
  ) => {
@@ -101,10 +112,10 @@ export const CoreVisualizer = memo(
101
112
  featureFlags,
102
113
  isLayerDragging,
103
114
  timelineManagerRef,
104
- cursor,
105
115
  cameraForceHorizontalRoll,
106
116
  coreContextValue,
107
117
  containerStyle,
118
+ overriddenInteractionMode,
108
119
  handleLayerSelect,
109
120
  handleLayerDrag,
110
121
  handleLayerDrop,
@@ -112,6 +123,8 @@ export const CoreVisualizer = memo(
112
123
  handleCameraChange,
113
124
  handleInteractionModeChange,
114
125
  handleSketchPluginFeatureCreate,
126
+ handleSketchPluginFeatureUpdate,
127
+ handleSketchPluginFeatureDelete,
115
128
  handleSketchTypeChange,
116
129
  handleLayerVisibility,
117
130
  handleLayerLoad,
@@ -152,6 +165,7 @@ export const CoreVisualizer = memo(
152
165
  isLayerDragging={isLayerDragging}
153
166
  isLayerDraggable={isEditable}
154
167
  meta={meta}
168
+ displayCredits={displayCredits}
155
169
  style={style}
156
170
  featureFlags={featureFlags}
157
171
  shouldRender={shouldRender}
@@ -160,9 +174,8 @@ export const CoreVisualizer = memo(
160
174
  small={small}
161
175
  ready={ready}
162
176
  timelineManagerRef={timelineManagerRef}
163
- interactionMode={interactionMode}
177
+ interactionMode={overriddenInteractionMode}
164
178
  selectedFeature={selectedFeature}
165
- cursor={cursor}
166
179
  onCameraChange={handleCameraChange}
167
180
  onLayerDrag={handleLayerDrag}
168
181
  onLayerDrop={handleLayerDrop}
@@ -171,6 +184,10 @@ export const CoreVisualizer = memo(
171
184
  overrideInteractionMode={handleInteractionModeChange}
172
185
  onSketchFeatureCreate={onSketchFeatureCreate}
173
186
  onSketchPluginFeatureCreate={handleSketchPluginFeatureCreate}
187
+ onSketchFeatureUpdate={onSketchFeatureUpdate}
188
+ onSketchPluginFeatureUpdate={handleSketchPluginFeatureUpdate}
189
+ onSketchFeatureDelete={onSketchFeatureDelete}
190
+ onSketchPluginFeatureDelete={handleSketchPluginFeatureDelete}
174
191
  onSketchTypeChange={handleSketchTypeChange}
175
192
  onMount={onMount}
176
193
  onLayerVisibility={handleLayerVisibility}
@@ -178,6 +195,8 @@ export const CoreVisualizer = memo(
178
195
  onLayerSelectWithRectStart={handleLayerSelectWithRectStart}
179
196
  onLayerSelectWithRectMove={handleLayerSelectWithRectMove}
180
197
  onLayerSelectWithRectEnd={handleLayerSelectWithRectEnd}
198
+ onAPIReady={onAPIReady}
199
+ onCreditsUpdate={onCreditsUpdate}
181
200
  />
182
201
  <coreContext.Provider value={coreContextValue}>{children}</coreContext.Provider>
183
202
  </div>
@@ -10,7 +10,7 @@ export type Viewport = {
10
10
  };
11
11
 
12
12
  type Props = {
13
- wrapperRef: RefObject<HTMLDivElement>;
13
+ wrapperRef: RefObject<HTMLDivElement | null>;
14
14
  };
15
15
 
16
16
  export default ({ wrapperRef }: Props) => {
@@ -127,7 +127,7 @@ export const useHooks = ({
127
127
  );
128
128
 
129
129
  // ScalePoint event handlers
130
- const currentPointIndex = useRef<number>();
130
+ const currentPointIndex = useRef<number>(undefined);
131
131
  const handlePointMouseDown: PointEventCallback = useCallback(
132
132
  (_, { index }) => {
133
133
  if (!viewer) {
@@ -138,7 +138,7 @@ export const useHooks = ({
138
138
  },
139
139
  [viewer],
140
140
  );
141
- const prevMousePosition2dForPoint = useRef<Cartesian2>();
141
+ const prevMousePosition2dForPoint = useRef<Cartesian2>(undefined);
142
142
  const handlePointMouseMove: PointEventCallback = useCallback(
143
143
  (e, { position, oppositePosition, pointLocal, index, layerId }) => {
144
144
  if (
@@ -282,7 +282,7 @@ export const useHooks = ({
282
282
  }, [viewer]);
283
283
 
284
284
  // Edge event handlers
285
- const currentEdgeIndex = useRef<number>();
285
+ const currentEdgeIndex = useRef<number>(undefined);
286
286
  const handleEdgeMouseDown: EdgeEventCallback = useCallback(
287
287
  (_, { index }) => {
288
288
  if (!viewer) {
@@ -293,7 +293,7 @@ export const useHooks = ({
293
293
  },
294
294
  [viewer],
295
295
  );
296
- const prevMouseXAxisForEdge = useRef<number>();
296
+ const prevMouseXAxisForEdge = useRef<number>(undefined);
297
297
  const handleEdgeMouseMove: EdgeEventCallback = useCallback(
298
298
  (e, { index, layerId }) => {
299
299
  if (currentEdgeIndex.current !== index) {
@@ -59,7 +59,7 @@ export const useHooks = ({
59
59
  () =>
60
60
  new ColorMaterialProperty(
61
61
  new CallbackProperty(
62
- () => (isEdgeHovered.current ? hoverColor ?? fillColor : fillColor),
62
+ () => (isEdgeHovered.current ? (hoverColor ?? fillColor) : fillColor),
63
63
  false,
64
64
  ),
65
65
  ),
@@ -54,7 +54,7 @@ export const useHooks = ({
54
54
  const [outlineColorCb] = useState(
55
55
  () =>
56
56
  new CallbackProperty(
57
- () => (isActiveRef.current ? activeOutlineColor ?? outlineColor : outlineColor),
57
+ () => (isActiveRef.current ? (activeOutlineColor ?? outlineColor) : outlineColor),
58
58
  false,
59
59
  ),
60
60
  );
@@ -68,11 +68,17 @@ function screenProjectVector(
68
68
  ray.origin = position;
69
69
  ray.direction = direction;
70
70
  const nearPoint2d = scene.cartesianToCanvasCoordinates(Ray.getPoint(ray, 0), new Cartesian2());
71
+ if (!nearPoint2d) {
72
+ return result;
73
+ }
71
74
 
72
75
  const farPoint2d = scene.cartesianToCanvasCoordinates(
73
76
  Ray.getPoint(ray, length),
74
77
  new Cartesian2(),
75
78
  );
79
+ if (!farPoint2d) {
80
+ return result;
81
+ }
76
82
  const screenVector2d = Cartesian2.subtract(farPoint2d, nearPoint2d, result);
77
83
  return screenVector2d;
78
84
  }
@@ -5,7 +5,6 @@ import { Map, Props } from "../../../../Map";
5
5
 
6
6
  export default {
7
7
  component: Map,
8
- parameters: { actions: { argTypesRegex: "^on.*" } },
9
8
  } as Meta;
10
9
 
11
10
  const Template: StoryFn<Props> = args => <Map {...args} />;
@@ -7,6 +7,7 @@ export function getFieldOfView(camera: Camera, zoom: number): number {
7
7
  const fov = getFieldOfViewSeparate(camera, zoom, cartesianScratch);
8
8
  const frustum = camera.frustum;
9
9
  invariant(frustum instanceof PerspectiveFrustum);
10
+ invariant(frustum.aspectRatio !== undefined);
10
11
  return frustum.aspectRatio > 1 ? fov.x : fov.y;
11
12
  }
12
13
 
@@ -17,6 +18,7 @@ export function getFieldOfViewSeparate(
17
18
  ): Cartesian2 {
18
19
  const frustum = camera.frustum;
19
20
  invariant(frustum instanceof PerspectiveFrustum);
21
+ invariant(frustum.aspectRatio !== undefined);
20
22
  result.x = Math.atan(Math.pow(2, 1 - zoom)) * 2;
21
23
  result.y = 2 * Math.atan(frustum.aspectRatio * Math.tan(result.x / 2));
22
24
  return result;
@@ -5,7 +5,6 @@ import { Map, Props } from "../../../../Map";
5
5
 
6
6
  export default {
7
7
  component: Map,
8
- parameters: { actions: { argTypesRegex: "^on.*" } },
9
8
  } as Meta;
10
9
 
11
10
  const Template: StoryFn<Props> = args => <Map {...args} />;
@@ -62,7 +62,7 @@ export const HeatmapMesh = memo(
62
62
  ) => {
63
63
  const { scene } = useCesium();
64
64
  const groundPrimitives = scene?.groundPrimitives;
65
- const primitiveRef = useRef<GroundPrimitive>();
65
+ const primitiveRef = useRef<GroundPrimitive>(undefined);
66
66
 
67
67
  const material = useConstant(() =>
68
68
  createHeatmapMeshMaterial({
@@ -228,7 +228,7 @@ export default function Marker({ property, id, isVisible, geometry, layer, featu
228
228
  position={
229
229
  useTransition
230
230
  ? (translateCallbackProperty as unknown as PositionProperty)
231
- : translatedCoords ?? pos
231
+ : (translatedCoords ?? pos)
232
232
  }
233
233
  layerId={layer?.id}
234
234
  featureId={feature?.id}
@@ -5,7 +5,6 @@ import { Map, Props } from "../../../../Map";
5
5
 
6
6
  export default {
7
7
  component: Map,
8
- parameters: { actions: { argTypesRegex: "^on.*" } },
9
8
  } as Meta;
10
9
 
11
10
  const Template: StoryFn<Props> = args => <Map {...args} />;
@@ -32,7 +31,7 @@ Default.args = {
32
31
  },
33
32
  },
34
33
  model: {
35
- url: "/BoxAnimated.glb",
34
+ url: "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Box/glTF-Binary/Box.glb",
36
35
  scale: 1000000,
37
36
  },
38
37
  },
@@ -32,9 +32,7 @@ export type Props = FeatureProps<Property>;
32
32
 
33
33
  export type Property = ModelAppearance & {
34
34
  location?: { lat: number; lng: number };
35
- height?: number;
36
35
  };
37
-
38
36
  export default function Model({
39
37
  id,
40
38
  isVisible,
@@ -50,7 +48,9 @@ export default function Model({
50
48
  const coordinates = useMemo(
51
49
  () =>
52
50
  geometry?.type === "Point"
53
- ? geometry.coordinates
51
+ ? property?.height === undefined
52
+ ? geometry.coordinates
53
+ : [...geometry.coordinates.slice(0, 2), property.height]
54
54
  : property?.location
55
55
  ? [property.location.lng, property.location.lat, property.height ?? 0]
56
56
  : undefined,
@@ -34,7 +34,7 @@ export default function ({ isSelected, camera }: { isSelected?: boolean; camera?
34
34
  cameraRef.current = camera;
35
35
  const storytelling = useRef(false);
36
36
  storytelling.current = selectionReason?.reason === "storytelling";
37
- const prevCamera = useRef<Camera>();
37
+ const prevCamera = useRef<Camera>(undefined);
38
38
 
39
39
  // camera flight
40
40
  useEffect(() => {
@@ -55,7 +55,7 @@ export default function ({ isSelected, camera }: { isSelected?: boolean; camera?
55
55
  );
56
56
  } else if (mode === 2) {
57
57
  const fov =
58
- (prevMode ?? 0) === 1 ? cameraRef.current?.fov : prevCamera.current?.fov ?? defaultFOV;
58
+ (prevMode ?? 0) === 1 ? cameraRef.current?.fov : (prevCamera.current?.fov ?? defaultFOV);
59
59
  flyTo?.(
60
60
  { fov },
61
61
  {
@@ -120,7 +120,9 @@ export default function PhotoOverlay({
120
120
  alignItems: "center",
121
121
  transition:
122
122
  photoOverlayImageTransiton === "entering" || photoOverlayImageTransiton === "exiting"
123
- ? `all ${photoOverlayImageTransiton === "exiting" ? photoExitDuration : photoDuration}s ease`
123
+ ? `all ${
124
+ photoOverlayImageTransiton === "exiting" ? photoExitDuration : photoDuration
125
+ }s ease`
124
126
  : undefined,
125
127
  opacity:
126
128
  photoOverlayImageTransiton === "entering" || photoOverlayImageTransiton === "entered"
@@ -5,7 +5,6 @@ import { Map, Props } from "../../../../Map";
5
5
 
6
6
  export default {
7
7
  component: Map,
8
- parameters: { actions: { argTypesRegex: "^on.*" } },
9
8
  } as Meta;
10
9
 
11
10
  const Template: StoryFn<Props> = args => <Map {...args} />;