@reearth/core 0.0.7-alpha.7 → 0.0.7-alpha.70

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 (516) hide show
  1. package/LICENSE +177 -0
  2. package/dist/core.js +71433 -61051
  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 +195 -73
  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 +45 -12
  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 +640 -237
  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/customProvider.ts +32 -0
  32. package/src/Map/types/index.ts +42 -3
  33. package/src/Map/types/viewerProperty.ts +12 -1
  34. package/src/Map/useTimelineManager.ts +4 -10
  35. package/src/Map/utils.ts +1 -1
  36. package/src/Visualizer/Error.tsx +4 -1
  37. package/src/Visualizer/context.tsx +5 -5
  38. package/src/Visualizer/coreContext.tsx +3 -1
  39. package/src/Visualizer/hooks.ts +56 -22
  40. package/src/Visualizer/index.stories.tsx +15 -0
  41. package/src/Visualizer/index.tsx +29 -6
  42. package/src/Visualizer/useViewport.ts +1 -1
  43. package/src/engines/Cesium/Feature/Box/hooks/box.ts +4 -4
  44. package/src/engines/Cesium/Feature/Box/hooks/edge.ts +1 -1
  45. package/src/engines/Cesium/Feature/Box/hooks/side.ts +1 -1
  46. package/src/engines/Cesium/Feature/Box/utils.ts +6 -0
  47. package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +0 -1
  48. package/src/engines/Cesium/Feature/Frustum/getFieldOfView.ts +2 -0
  49. package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +0 -1
  50. package/src/engines/Cesium/Feature/HeatMap/HeatmapMesh.tsx +1 -1
  51. package/src/engines/Cesium/Feature/Marker/index.tsx +1 -1
  52. package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -2
  53. package/src/engines/Cesium/Feature/Model/index.tsx +3 -3
  54. package/src/engines/Cesium/Feature/PhotoOverlay/hooks.ts +2 -2
  55. package/src/engines/Cesium/Feature/PhotoOverlay/index.tsx +3 -1
  56. package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +0 -1
  57. package/src/engines/Cesium/Feature/Polygon/index.tsx +6 -4
  58. package/src/engines/Cesium/Feature/Raster/index.stories.tsx +0 -1
  59. package/src/engines/Cesium/Feature/Raster/mvt.ts +2 -1
  60. package/src/engines/Cesium/Feature/Resource/index.stories.tsx +0 -1
  61. package/src/engines/Cesium/Feature/Resource/index.tsx +1 -27
  62. package/src/engines/Cesium/Feature/Resource/utils.ts +86 -91
  63. package/src/engines/Cesium/Feature/Tileset/hooks.ts +273 -87
  64. package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +0 -1
  65. package/src/engines/Cesium/Feature/Tileset/index.tsx +7 -14
  66. package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +2 -2
  67. package/src/engines/Cesium/Feature/Tileset/useDrawClipping.ts +2 -2
  68. package/src/engines/Cesium/Feature/context.ts +3 -0
  69. package/src/engines/Cesium/Feature/index.tsx +27 -10
  70. package/src/engines/Cesium/Feature/utils.tsx +20 -12
  71. package/src/engines/Cesium/PostProcesses/hbao/AmbientOcclusion.tsx +7 -4
  72. package/src/engines/Cesium/Sketch/ControlPoint.tsx +128 -24
  73. package/src/engines/Cesium/Sketch/ExtrudedControlPoints.tsx +70 -25
  74. package/src/engines/Cesium/Sketch/ExtrudedMeasurement.tsx +3 -1
  75. package/src/engines/Cesium/Sketch/ExtrudedPolygonEntity.tsx +14 -14
  76. package/src/engines/Cesium/Sketch/PolylineEntity.tsx +7 -4
  77. package/src/engines/Cesium/Sketch/SurfaceAddingPoints.tsx +60 -0
  78. package/src/engines/Cesium/Sketch/SurfaceControlPoints.tsx +126 -35
  79. package/src/engines/Cesium/Sketch/constants.ts +5 -0
  80. package/src/engines/Cesium/Sketch/index.tsx +68 -29
  81. package/src/engines/Cesium/SpatialId/CoordinateIndicator.tsx +28 -0
  82. package/src/engines/Cesium/SpatialId/SpatialIdSpace.tsx +33 -0
  83. package/src/engines/Cesium/SpatialId/VerticalSpaceIndicator.tsx +32 -0
  84. package/src/engines/Cesium/SpatialId/index.ts +3 -0
  85. package/src/engines/Cesium/common.ts +55 -18
  86. package/src/engines/Cesium/core/Clock.tsx +1 -1
  87. package/src/engines/Cesium/core/Globe/index.tsx +69 -0
  88. package/src/engines/Cesium/core/Globe/useTerrainProviderPromise.ts +81 -0
  89. package/src/engines/Cesium/core/Imagery.test.ts +299 -42
  90. package/src/engines/Cesium/core/Imagery.tsx +282 -54
  91. package/src/engines/Cesium/core/Indicator/Indicator.tsx +2 -2
  92. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImagery.tsx +13 -6
  93. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryLayer.tsx +2 -1
  94. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapLabelImageryProvider.ts +3 -4
  95. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/JapanGSIOptimalBVmapVectorMapLabel.tsx +14 -2
  96. package/src/engines/Cesium/core/labels/JapanGSIOptimalBVmapVectorMapLabel/helpers.ts +1 -1
  97. package/src/engines/Cesium/core/labels/LabelImageryLayers.tsx +10 -1
  98. package/src/engines/Cesium/core/presets.ts +122 -48
  99. package/src/engines/Cesium/helpers/getGeometryFromEntity.ts +55 -0
  100. package/src/engines/Cesium/hooks/useCamera.ts +2 -2
  101. package/src/engines/Cesium/hooks/useCameraLimiter.ts +1 -1
  102. package/src/engines/Cesium/hooks/useEngineRef.ts +52 -5
  103. package/src/engines/Cesium/hooks/useExplicitRender.ts +2 -2
  104. package/src/engines/Cesium/hooks/useInstance.ts +1 -1
  105. package/src/engines/Cesium/hooks/useLayerDragDrop.ts +3 -3
  106. package/src/engines/Cesium/hooks/useLayerSelectWithRect.ts +2 -2
  107. package/src/engines/Cesium/hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts +115 -67
  108. package/src/engines/Cesium/hooks/useViewerProperty.ts +1 -1
  109. package/src/engines/Cesium/hooks.ts +68 -17
  110. package/src/engines/Cesium/index.stories.tsx +0 -1
  111. package/src/engines/Cesium/index.tsx +38 -8
  112. package/src/engines/Cesium/pickMany.ts +2 -0
  113. package/src/engines/Cesium/types.ts +1 -1
  114. package/src/engines/Cesium/utils/mouse.ts +1 -1
  115. package/src/engines/Cesium/utils/utils.ts +1 -1
  116. package/src/mantle/atoms/compute.test.ts +4 -4
  117. package/src/mantle/atoms/compute.ts +8 -4
  118. package/src/mantle/compat/forward.ts +1 -1
  119. package/src/mantle/data/geojson.ts +49 -26
  120. package/src/mantle/data/georss.ts +2 -2
  121. package/src/mantle/data/gml.ts +2 -2
  122. package/src/mantle/data/gpx.ts +2 -2
  123. package/src/mantle/data/shapefile/parseZip.ts +1 -0
  124. package/src/mantle/evaluator/simple/expression/README.md +392 -0
  125. package/src/mantle/evaluator/simple/expression/expression.test.ts +137 -0
  126. package/src/mantle/evaluator/simple/expression/node.ts +10 -12
  127. package/src/mantle/evaluator/simple/expression/variableReplacer.test.ts +178 -0
  128. package/src/mantle/evaluator/simple/expression/variableReplacer.ts +24 -11
  129. package/src/mantle/types/appearance.ts +4 -2
  130. package/src/mantle/types/index.ts +5 -0
  131. package/src/{Visualizer → shared}/interactionMode.ts +3 -2
  132. package/src/test/setup.ts +1 -1
  133. package/src/test/utils.tsx +1 -1
  134. package/src/types/modules.d.ts +96 -0
  135. package/src/utils/StringMatcher.ts +1 -1
  136. package/src/utils/image.ts +2 -12
  137. package/src/utils/use-delayed-count.ts +1 -1
  138. package/src/utils/use-dnd/drop.ts +1 -1
  139. package/src/utils/util.ts +1 -1
  140. package/src/utils/value.ts +2 -2
  141. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  142. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  143. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  144. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  145. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  146. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  147. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  148. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  149. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  150. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  151. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  152. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  153. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  154. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  155. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  156. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  157. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  158. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  159. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  160. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  161. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  162. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  163. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  164. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  165. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  166. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  167. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  168. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  169. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  170. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  171. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  172. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  173. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  174. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  175. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  176. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  177. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  178. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  179. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  180. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  181. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  182. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  183. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  184. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  185. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  186. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  187. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  188. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  189. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  190. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  191. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  192. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  193. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  194. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  195. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  196. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  197. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  198. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  199. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  200. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  201. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  202. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  203. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  204. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  205. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  206. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  207. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  208. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  209. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  210. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  211. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  212. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  213. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  214. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  215. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  216. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  217. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  218. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  219. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  220. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  221. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  222. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  223. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  224. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  260. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  261. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  262. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  263. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  264. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  265. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  266. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  267. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  268. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  269. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  270. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  271. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  272. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  273. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  274. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  275. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  276. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  277. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  278. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  279. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  280. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  281. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  282. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  283. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  284. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  285. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  286. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  287. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  288. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  289. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  290. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  291. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  292. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  293. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  294. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  295. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  296. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  297. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  298. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  299. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  300. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  301. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  302. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  303. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  304. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  305. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  306. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  307. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  308. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  309. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  310. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  311. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  312. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  313. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  314. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  315. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  316. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  317. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  318. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  319. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  320. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  321. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  322. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  323. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  324. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  325. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  326. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  327. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  328. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  329. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  330. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  331. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  332. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  333. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  334. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  335. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  336. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  337. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  338. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  339. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  340. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  341. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  342. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  343. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  344. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  345. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  346. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  347. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  348. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  349. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  350. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  351. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  352. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  353. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  354. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  355. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  356. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  357. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  358. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  359. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  360. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  361. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  362. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  363. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  364. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  365. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  366. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  367. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  368. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  369. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  370. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  371. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  372. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  373. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  374. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  375. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  376. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  377. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  378. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  379. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  380. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  381. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  382. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  383. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  384. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  385. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  386. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  387. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  388. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  389. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  390. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  391. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  392. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  393. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  394. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  395. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  396. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  397. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  398. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  399. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  400. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  401. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  402. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  403. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  404. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  405. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  406. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  407. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  408. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  409. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  410. package/dist/cesium/Widgets/lighter.css +0 -237
  411. package/dist/cesium/Widgets/lighterShared.css +0 -46
  412. package/dist/cesium/Widgets/shared.css +0 -103
  413. package/dist/cesium/Widgets/widgets.css +0 -1346
  414. package/dist/cesium/Workers/chunk-2YD5QWGR.js +0 -28
  415. package/dist/cesium/Workers/chunk-3T4KR75X.js +0 -26
  416. package/dist/cesium/Workers/chunk-46KFVW24.js +0 -26
  417. package/dist/cesium/Workers/chunk-4EI6PP43.js +0 -28
  418. package/dist/cesium/Workers/chunk-4RS52VIY.js +0 -26
  419. package/dist/cesium/Workers/chunk-4YLYA3DC.js +0 -26
  420. package/dist/cesium/Workers/chunk-5ENAGXBI.js +0 -26
  421. package/dist/cesium/Workers/chunk-5VIB3TI5.js +0 -26
  422. package/dist/cesium/Workers/chunk-6NGZLDFZ.js +0 -26
  423. package/dist/cesium/Workers/chunk-6RGNWVZ2.js +0 -27
  424. package/dist/cesium/Workers/chunk-7AZZVJ52.js +0 -26
  425. package/dist/cesium/Workers/chunk-AMXAQQEL.js +0 -26
  426. package/dist/cesium/Workers/chunk-AQW44ZPC.js +0 -26
  427. package/dist/cesium/Workers/chunk-CPCMDW6Z.js +0 -26
  428. package/dist/cesium/Workers/chunk-DNL2WDRL.js +0 -26
  429. package/dist/cesium/Workers/chunk-ERW7V247.js +0 -26
  430. package/dist/cesium/Workers/chunk-EYRIA4TP.js +0 -26
  431. package/dist/cesium/Workers/chunk-F7RQIJML.js +0 -26
  432. package/dist/cesium/Workers/chunk-FPZMU6QP.js +0 -26
  433. package/dist/cesium/Workers/chunk-FZDVQW7A.js +0 -26
  434. package/dist/cesium/Workers/chunk-GAZ2U4FO.js +0 -26
  435. package/dist/cesium/Workers/chunk-I44IOOT4.js +0 -26
  436. package/dist/cesium/Workers/chunk-IALXUAD4.js +0 -26
  437. package/dist/cesium/Workers/chunk-IXBUEUZL.js +0 -26
  438. package/dist/cesium/Workers/chunk-J3GCYV5K.js +0 -26
  439. package/dist/cesium/Workers/chunk-KGSZTFHZ.js +0 -26
  440. package/dist/cesium/Workers/chunk-KKKPU2CI.js +0 -26
  441. package/dist/cesium/Workers/chunk-KTEJE5KE.js +0 -26
  442. package/dist/cesium/Workers/chunk-KYZ3DYY6.js +0 -26
  443. package/dist/cesium/Workers/chunk-L2QG4MRI.js +0 -26
  444. package/dist/cesium/Workers/chunk-MCE3KFYN.js +0 -26
  445. package/dist/cesium/Workers/chunk-MMLDGXML.js +0 -26
  446. package/dist/cesium/Workers/chunk-MTBRPBDQ.js +0 -26
  447. package/dist/cesium/Workers/chunk-OKT6VBRK.js +0 -26
  448. package/dist/cesium/Workers/chunk-PHYDKLSY.js +0 -26
  449. package/dist/cesium/Workers/chunk-PWPX3224.js +0 -26
  450. package/dist/cesium/Workers/chunk-QHOVE6WG.js +0 -26
  451. package/dist/cesium/Workers/chunk-QJ6MBL22.js +0 -26
  452. package/dist/cesium/Workers/chunk-QKO6VIG2.js +0 -26
  453. package/dist/cesium/Workers/chunk-QVEE4QL2.js +0 -26
  454. package/dist/cesium/Workers/chunk-RXQOQZ7S.js +0 -26
  455. package/dist/cesium/Workers/chunk-S3ZKQKMM.js +0 -26
  456. package/dist/cesium/Workers/chunk-SFEUMZSK.js +0 -26
  457. package/dist/cesium/Workers/chunk-T75MW4X3.js +0 -26
  458. package/dist/cesium/Workers/chunk-TVO2A75R.js +0 -66
  459. package/dist/cesium/Workers/chunk-UHR36K45.js +0 -27
  460. package/dist/cesium/Workers/chunk-UKJCDZOR.js +0 -26
  461. package/dist/cesium/Workers/chunk-VKVIYER6.js +0 -26
  462. package/dist/cesium/Workers/chunk-VPIQWTRZ.js +0 -26
  463. package/dist/cesium/Workers/chunk-XSX5HRFC.js +0 -26
  464. package/dist/cesium/Workers/chunk-Z5WQQHSL.js +0 -26
  465. package/dist/cesium/Workers/chunk-Z7B2VEL5.js +0 -26
  466. package/dist/cesium/Workers/combineGeometry.js +0 -26
  467. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  468. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  469. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  470. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  471. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  472. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  473. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  474. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  475. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  476. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  477. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  478. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  479. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  480. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  481. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  482. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  483. package/dist/cesium/Workers/createGeometry.js +0 -26
  484. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  485. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  486. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  487. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  488. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  489. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  490. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  491. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  492. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  493. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  494. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  495. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  496. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  497. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  498. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  499. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  500. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  501. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  502. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  503. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  504. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  505. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  506. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  507. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  508. package/dist/cesium/Workers/decodeDraco.js +0 -26
  509. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  510. package/dist/cesium/Workers/decodeI3S.js +0 -26
  511. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  512. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  513. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  514. package/src/engines/Cesium/core/Globe.tsx +0 -104
  515. /package/src/{Visualizer → shared}/featureFlags.ts +0 -0
  516. /package/src/{Map/Sketch/utils.ts → utils/use-window-event.ts} +0 -0
@@ -1,6 +1,6 @@
1
- import { renderHook, act, waitFor } from "@testing-library/react";
1
+ import { renderHook, waitFor } from "@testing-library/react";
2
2
  import { useAtom } from "jotai";
3
- import { useMemo } from "react";
3
+ import { act, useMemo } from "react";
4
4
  import { test, expect, vi, beforeEach } from "vitest";
5
5
 
6
6
  import * as DataCache from "../data";
@@ -79,7 +79,7 @@ test("computeAtom", async () => {
79
79
  result.current.set({ type: "setLayer", layer });
80
80
  });
81
81
 
82
- expect(result.current.result).toEqual({
82
+ (expect(result.current.result).toEqual({
83
83
  id: "xxx",
84
84
  layer,
85
85
  status: "ready",
@@ -94,7 +94,7 @@ test("computeAtom", async () => {
94
94
  features: [],
95
95
  originalFeatures: [],
96
96
  }),
97
- );
97
+ ));
98
98
 
99
99
  // delete delegatedDataTypes
100
100
  act(() => {
@@ -43,7 +43,7 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
43
43
  });
44
44
 
45
45
  const layer = atom<Layer | undefined>(undefined);
46
- const overrides = atom<Record<string, any> | undefined, Record<string, any> | undefined>(
46
+ const overrides = atom<Record<string, any> | undefined, [Record<string, any> | undefined], void>(
47
47
  undefined,
48
48
  (_, set, value) => {
49
49
  set(overrides, pick(value, appearanceKeys));
@@ -68,7 +68,7 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
68
68
  features: get(finalFeatures) ?? [],
69
69
  originalFeatures:
70
70
  currentLayer.type === "simple" && currentLayer.data
71
- ? get(dataAtoms.getAll)(currentLayer.id, currentLayer.data)?.flat() ?? []
71
+ ? (get(dataAtoms.getAll)(currentLayer.id, currentLayer.data)?.flat() ?? [])
72
72
  : [],
73
73
  properties: currentLayer.type === "simple" ? currentLayer.properties : undefined,
74
74
  ...get(computedResult)?.layer,
@@ -109,7 +109,11 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
109
109
  return true;
110
110
  }
111
111
 
112
- const curFeatures = processGeoJSON(currentLayer.data.value);
112
+ const curFeatures = processGeoJSON(
113
+ currentLayer.data.value,
114
+ undefined,
115
+ currentLayer.data.idProperty,
116
+ );
113
117
  if (curFeatures.length === prevFeatures?.length) {
114
118
  return !curFeatures.every((cur, i) => {
115
119
  const prev = prevFeatures[i];
@@ -304,7 +308,7 @@ export function computeAtom(cache?: typeof globalDataFeaturesCache) {
304
308
  await set(compute, { forceUpdateData: true });
305
309
  });
306
310
 
307
- return atom<ComputedLayer | undefined, Command>(
311
+ return atom<ComputedLayer | undefined, [Command], void>(
308
312
  g => g(get),
309
313
  async (_, s, value) => {
310
314
  switch (value.type) {
@@ -9,7 +9,7 @@ import { LegacyCluster } from "./types";
9
9
  import type { LegacyLayer } from ".";
10
10
 
11
11
  export function convertLegacyLayer(l: LegacyLayer | undefined): Layer | undefined {
12
- return l ? convertLegacyLayerGroup(l) ?? convertLegacyLayerItem(l) : undefined;
12
+ return l ? (convertLegacyLayerGroup(l) ?? convertLegacyLayerItem(l)) : undefined;
13
13
  }
14
14
 
15
15
  function convertLegacyLayerCommon(l: LegacyLayer): any {
@@ -10,62 +10,85 @@ export async function fetchGeoJSON(
10
10
  options?: FetchOptions,
11
11
  ): Promise<Feature[] | void> {
12
12
  const d = data.url ? await (await f(data.url, options)).json() : data.value;
13
- return processGeoJSON(d, range);
13
+ return processGeoJSON(d, range, data.idProperty);
14
14
  }
15
15
 
16
- export function processGeoJSON(geojson: GeoJSON, range?: DataRange): Feature[] {
16
+ export function processGeoJSON(
17
+ geojson: GeoJSON,
18
+ range?: DataRange,
19
+ idProperty?: string,
20
+ ): Feature[] {
17
21
  if (geojson.type === "FeatureCollection") {
18
- return geojson.features.flatMap(f => processGeoJSON(f, range));
22
+ return geojson.features.flatMap(f => processGeoJSON(f, range, idProperty));
19
23
  }
20
24
 
21
25
  if (geojson.type === "Feature") {
22
26
  const geo = geojson.geometry;
23
27
  if (geo.type === "GeometryCollection") {
24
28
  return geo.geometries.flatMap(geometry => {
25
- return processGeoJSON({
26
- ...geojson,
27
- geometry,
28
- });
29
+ return processGeoJSON(
30
+ {
31
+ ...geojson,
32
+ geometry,
33
+ },
34
+ undefined,
35
+ idProperty,
36
+ );
29
37
  });
30
38
  }
31
39
  if (geo.type === "MultiPoint") {
32
40
  return geo.coordinates.flatMap(coord => {
33
- return processGeoJSON({
34
- ...geojson,
35
- geometry: {
36
- type: "Point",
37
- coordinates: coord,
41
+ return processGeoJSON(
42
+ {
43
+ ...geojson,
44
+ geometry: {
45
+ type: "Point",
46
+ coordinates: coord,
47
+ },
38
48
  },
39
- });
49
+ undefined,
50
+ idProperty,
51
+ );
40
52
  });
41
53
  }
42
54
  if (geo.type === "MultiLineString") {
43
55
  return geo.coordinates.flatMap(coord => {
44
- return processGeoJSON({
45
- ...geojson,
46
- geometry: {
47
- type: "LineString",
48
- coordinates: coord,
56
+ return processGeoJSON(
57
+ {
58
+ ...geojson,
59
+ geometry: {
60
+ type: "LineString",
61
+ coordinates: coord,
62
+ },
49
63
  },
50
- });
64
+ undefined,
65
+ idProperty,
66
+ );
51
67
  });
52
68
  }
53
69
  if (geo.type === "MultiPolygon") {
54
70
  return geo.coordinates.flatMap(coord => {
55
- return processGeoJSON({
56
- ...geojson,
57
- geometry: {
58
- type: "Polygon",
59
- coordinates: coord,
71
+ return processGeoJSON(
72
+ {
73
+ ...geojson,
74
+ geometry: {
75
+ type: "Polygon",
76
+ coordinates: coord,
77
+ },
60
78
  },
61
- });
79
+ undefined,
80
+ idProperty,
81
+ );
62
82
  });
63
83
  }
64
84
 
65
85
  return [
66
86
  {
67
87
  type: "feature",
68
- id: generateRandomString(12),
88
+ id:
89
+ idProperty && geojson.properties && geojson.properties[idProperty]
90
+ ? geojson.properties[idProperty]
91
+ : generateRandomString(12),
69
92
  geometry:
70
93
  geo.type === "Point" || geo.type === "LineString" || geo.type === "Polygon"
71
94
  ? geo
@@ -1,4 +1,4 @@
1
- import { XMLParser, X2jOptionsOptional } from "fast-xml-parser";
1
+ import { XMLParser, type X2jOptions } from "fast-xml-parser";
2
2
 
3
3
  import type { Data, DataRange, Feature, Geometry } from "../types";
4
4
 
@@ -28,7 +28,7 @@ function handler(xmlDataStr: string) {
28
28
  }
29
29
 
30
30
  function parseBuffer(xmlDataStr: string) {
31
- const options: X2jOptionsOptional = {
31
+ const options: X2jOptions = {
32
32
  ignoreAttributes: false,
33
33
  attributeNamePrefix: "",
34
34
  };
@@ -1,4 +1,4 @@
1
- import { XMLParser, X2jOptionsOptional } from "fast-xml-parser";
1
+ import { XMLParser, X2jOptions } from "fast-xml-parser";
2
2
 
3
3
  import type { Data, DataRange, Feature, Geometry } from "../types";
4
4
 
@@ -21,7 +21,7 @@ function handler(xmlDataStr: string) {
21
21
  }
22
22
 
23
23
  function parseBuffer(xmlDataStr: string) {
24
- const options: X2jOptionsOptional = {
24
+ const options: X2jOptions = {
25
25
  ignoreAttributes: false,
26
26
  attributeNamePrefix: "",
27
27
  };
@@ -243,7 +243,7 @@ const parseGPXWithCustomParser = (
243
243
  extensions[name] = parseFloat(
244
244
  (extension as Element).innerHTML != undefined
245
245
  ? (extension as Element).innerHTML
246
- : (extension as Element).childNodes[0].textContent ?? "",
246
+ : ((extension as Element).childNodes[0].textContent ?? ""),
247
247
  );
248
248
  }
249
249
 
@@ -325,7 +325,7 @@ const getElementValue = (parent: Element, tag: string): string => {
325
325
  if (element !== null) {
326
326
  return element.innerHTML != undefined
327
327
  ? element.innerHTML
328
- : element.childNodes[0].textContent ?? "";
328
+ : (element.childNodes[0].textContent ?? "");
329
329
  } else return "";
330
330
  };
331
331
 
@@ -3,6 +3,7 @@ import proj4 from "proj4";
3
3
 
4
4
  import { parseDbf } from "./parseDbf";
5
5
  import { parseShp } from "./parseShp";
6
+
6
7
  import { combine } from ".";
7
8
 
8
9
  export async function parseZip(buffer: ArrayBuffer): Promise<GeoJSON.GeoJSON | GeoJSON.GeoJSON[]> {
@@ -0,0 +1,392 @@
1
+ # Expression Evaluator
2
+
3
+ A powerful expression evaluator for evaluating dynamic expressions with feature properties, supporting various operators, functions, and property access methods.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Basic Usage](#basic-usage)
8
+ - [Property Access](#property-access)
9
+ - [Operators](#operators)
10
+ - [Functions](#functions)
11
+ - [Data Types](#data-types)
12
+ - [Advanced Features](#advanced-features)
13
+
14
+ ## Basic Usage
15
+
16
+ ```typescript
17
+ import { Expression } from "./expression";
18
+
19
+ const feature = {
20
+ properties: {
21
+ height: 100,
22
+ name: "Building A",
23
+ },
24
+ };
25
+
26
+ const expr = new Expression("${height} > 50", feature);
27
+ const result = expr.evaluate(); // true
28
+ ```
29
+
30
+ ## Property Access
31
+
32
+ ### 1. Standard Property Names (No Spaces)
33
+
34
+ For properties without spaces or special characters, use the simple syntax:
35
+
36
+ ```typescript
37
+ ${propertyName}
38
+ ${height}
39
+ ${temperature}
40
+ ```
41
+
42
+ **Example:**
43
+ ```typescript
44
+ const feature = {
45
+ properties: {
46
+ height: 100,
47
+ width: 50,
48
+ },
49
+ };
50
+
51
+ const expr = new Expression("${height} * ${width}", feature);
52
+ expr.evaluate(); // 5000
53
+ ```
54
+
55
+ ### 2. Quoted Property Names (With Spaces)
56
+
57
+ **✨ NEW:** For properties with spaces or special characters, wrap the property name in quotes:
58
+
59
+ ```typescript
60
+ ${"property name"} // Double quotes (recommended)
61
+ ${'property name'} // Single quotes
62
+ ```
63
+
64
+ **Example:**
65
+ ```typescript
66
+ const feature = {
67
+ properties: {
68
+ "user name": "Alice",
69
+ "user score": 95,
70
+ "email@address": "alice@example.com",
71
+ "user-info:age": 25,
72
+ },
73
+ };
74
+
75
+ // Access properties with spaces
76
+ const expr1 = new Expression('${"user name"}', feature);
77
+ expr1.evaluate(); // "Alice"
78
+
79
+ // Use in conditionals
80
+ const expr2 = new Expression('${"user score"} > 90 ? "Excellent" : "Good"', feature);
81
+ expr2.evaluate(); // "Excellent"
82
+
83
+ // Arithmetic operations
84
+ const expr3 = new Expression('${"user-info:age"} + 5', feature);
85
+ expr3.evaluate(); // 30
86
+
87
+ // Properties with special characters
88
+ const expr4 = new Expression('${"email@address"} !== ""', feature);
89
+ expr4.evaluate(); // true
90
+ ```
91
+
92
+ **Supported Characters in Quoted Names:**
93
+ - Spaces: `${"user name"}`
94
+ - Hyphens: `${"user-info"}`
95
+ - Colons: `${"category:name"}`
96
+ - At signs: `${"email@domain"}`
97
+ - Any other special characters
98
+
99
+ ### 3. Special Variables
100
+
101
+ ```typescript
102
+ ${id} // Access feature.id
103
+ ${rootProperties} // Access entire feature.properties object
104
+ ```
105
+
106
+ **Example:**
107
+ ```typescript
108
+ const feature = {
109
+ id: "feature-123",
110
+ properties: {
111
+ height: 100,
112
+ },
113
+ };
114
+
115
+ const expr = new Expression('${id}', feature);
116
+ expr.evaluate(); // "feature-123"
117
+ ```
118
+
119
+ ## Operators
120
+
121
+ ### Comparison Operators
122
+
123
+ ```typescript
124
+ ${height} > 50 // Greater than
125
+ ${height} >= 50 // Greater than or equal
126
+ ${height} < 100 // Less than
127
+ ${height} <= 100 // Less than or equal
128
+ ${height} === 50 // Strict equality
129
+ ${height} !== 50 // Strict inequality
130
+ ${height} == 50 // Loose equality (with type coercion)
131
+ ${height} != 50 // Loose inequality
132
+ ```
133
+
134
+ ### Arithmetic Operators
135
+
136
+ ```typescript
137
+ ${a} + ${b} // Addition
138
+ ${a} - ${b} // Subtraction
139
+ ${a} * ${b} // Multiplication
140
+ ${a} / ${b} // Division
141
+ ${a} % ${b} // Modulo
142
+ ```
143
+
144
+ ### Logical Operators
145
+
146
+ ```typescript
147
+ ${a} && ${b} // Logical AND
148
+ ${a} || ${b} // Logical OR
149
+ !${a} // Logical NOT
150
+ ```
151
+
152
+ ### Conditional (Ternary) Operator
153
+
154
+ ```typescript
155
+ ${condition} ? ${trueValue} : ${falseValue}
156
+ ```
157
+
158
+ **Example:**
159
+ ```typescript
160
+ const expr = new Expression('${height} > 100 ? "Tall" : "Short"', feature);
161
+ ```
162
+
163
+ ## Functions
164
+
165
+ ### Type Conversion Functions
166
+
167
+ ```typescript
168
+ Boolean(${value}) // Convert to boolean
169
+ Number(${value}) // Convert to number
170
+ String(${value}) // Convert to string
171
+ ```
172
+
173
+ ### Math Functions
174
+
175
+ ```typescript
176
+ abs(${value}) // Absolute value
177
+ sqrt(${value}) // Square root
178
+ ceil(${value}) // Round up
179
+ floor(${value}) // Round down
180
+ round(${value}) // Round to nearest integer
181
+ sin(${value}) // Sine
182
+ cos(${value}) // Cosine
183
+ tan(${value}) // Tangent
184
+ ```
185
+
186
+ ### Utility Functions
187
+
188
+ ```typescript
189
+ isNaN(${value}) // Check if Not a Number
190
+ isFinite(${value}) // Check if finite number
191
+ ```
192
+
193
+ ### Color Functions
194
+
195
+ ```typescript
196
+ color("red") // Named color
197
+ color("#ff0000") // Hex color
198
+ color("#ff0000", 0.5) // Hex color with alpha
199
+ rgb(255, 0, 0) // RGB color
200
+ rgba(255, 0, 0, 0.5) // RGBA color
201
+ hsl(0, 100, 50) // HSL color
202
+ hsla(0, 100, 50, 0.5) // HSLA color
203
+ ```
204
+
205
+ **Example:**
206
+ ```typescript
207
+ const expr = new Expression('${height} > 100 ? color("red") : color("blue")', feature);
208
+ ```
209
+
210
+ ## Data Types
211
+
212
+ ### Supported Types
213
+
214
+ - **Numbers**: `42`, `3.14`, `Infinity`, `NaN`
215
+ - **Strings**: `"hello"`, `'world'`
216
+ - **Booleans**: `true`, `false`
217
+ - **Null**: `null`
218
+ - **Undefined**: `undefined`
219
+ - **Arrays**: `[1, 2, 3]`
220
+ - **Colors**: Result of color functions
221
+
222
+ ### Constants
223
+
224
+ ```typescript
225
+ Math.PI // 3.141592653589793
226
+ Math.E // 2.718281828459045
227
+ Number.POSITIVE_INFINITY
228
+ NaN
229
+ Infinity
230
+ undefined
231
+ ```
232
+
233
+ ## Advanced Features
234
+
235
+ ### String Interpolation
236
+
237
+ Within string literals, you can interpolate property values:
238
+
239
+ ```typescript
240
+ "Hello, ${name}!"
241
+ "Height: ${height}m"
242
+ ```
243
+
244
+ **Note:** String interpolation only supports simple property names (without spaces). For properties with spaces or special characters, use concatenation instead (see below).
245
+
246
+ **Example:**
247
+ ```typescript
248
+ const feature = {
249
+ properties: {
250
+ name: "Building A",
251
+ height: 100,
252
+ },
253
+ };
254
+
255
+ const expr = new Expression('"Building: ${name}, Height: ${height}m"', feature);
256
+ expr.evaluate(); // "Building: Building A, Height: 100m"
257
+ ```
258
+
259
+ **For properties with spaces, use concatenation:**
260
+ ```typescript
261
+ const feature = {
262
+ properties: {
263
+ "building name": "Tower A",
264
+ floors: 30,
265
+ },
266
+ };
267
+
268
+ // Use concatenation with + operator
269
+ const expr = new Expression('${"building name"} + " has " + ${floors} + " floors"', feature);
270
+ expr.evaluate(); // "Tower A has 30 floors"
271
+ ```
272
+
273
+ ### Array Comparisons
274
+
275
+ The equality operators support checking if a value is in an array:
276
+
277
+ ```typescript
278
+ ${value} == [1, 2, 3] // Check if value is in array
279
+ ${value} != [1, 2, 3] // Check if value is not in array
280
+ ```
281
+
282
+ **Example:**
283
+ ```typescript
284
+ const feature = {
285
+ properties: {
286
+ status: "active",
287
+ },
288
+ };
289
+
290
+ const expr = new Expression('${status} == ["active", "pending"]', feature);
291
+ expr.evaluate(); // true
292
+ ```
293
+
294
+ ### Defines (Variable Substitution)
295
+
296
+ You can define placeholder values that get substituted before evaluation:
297
+
298
+ ```typescript
299
+ const defines = {
300
+ MAX_HEIGHT: "100",
301
+ MIN_HEIGHT: "10",
302
+ };
303
+
304
+ const expr = new Expression("${height} > ${MAX_HEIGHT}", feature, defines);
305
+ // Becomes: "${height} > 100"
306
+ ```
307
+
308
+ ### Expression Caching
309
+
310
+ Expressions are cached automatically for better performance. To clear caches:
311
+
312
+ ```typescript
313
+ import { clearExpressionCaches } from "./expression";
314
+
315
+ clearExpressionCaches(expressionString, feature, defines);
316
+ ```
317
+
318
+ ## Property Name Comparison
319
+
320
+ | Syntax | Use Case | Example |
321
+ |--------|----------|---------|
322
+ | `${name}` | Simple properties (no spaces) | `${height}`, `${temperature}` |
323
+ | `${"property name"}` | Properties with spaces/special chars | `${"user name"}`, `${"email@domain"}` |
324
+ | `${rootProperties}` | Access entire properties object | `${rootProperties["dynamic-key"]}` |
325
+
326
+ ## Complete Example
327
+
328
+ ```typescript
329
+ import { Expression } from "./expression";
330
+
331
+ const feature = {
332
+ id: "building-001",
333
+ properties: {
334
+ "building name": "Tower A",
335
+ "building height": 150,
336
+ "building color": "blue",
337
+ floors: 30,
338
+ status: "active",
339
+ "contact info": {
340
+ "email address": "info@tower-a.com",
341
+ },
342
+ },
343
+ };
344
+
345
+ // Simple comparison
346
+ const expr1 = new Expression('${"building height"} > 100', feature);
347
+ console.log(expr1.evaluate()); // true
348
+
349
+ // Conditional with color
350
+ const expr2 = new Expression(
351
+ '${"building height"} > 100 ? color("red") : color("green")',
352
+ feature
353
+ );
354
+ console.log(expr2.evaluate()); // #ff0000 (red)
355
+
356
+ // String concatenation (for properties with spaces)
357
+ const expr3 = new Expression(
358
+ '${"building name"} + " has " + ${floors} + " floors"',
359
+ feature
360
+ );
361
+ console.log(expr3.evaluate()); // "Tower A has 30 floors"
362
+
363
+ // Array membership check
364
+ const expr4 = new Expression(
365
+ '${status} == ["active", "pending"]',
366
+ feature
367
+ );
368
+ console.log(expr4.evaluate()); // true
369
+ ```
370
+
371
+ ## Migration Guide
372
+
373
+ ### From Standard Syntax to Quoted Syntax
374
+
375
+ If you have properties with spaces, you need to update your expressions:
376
+
377
+ **Before (doesn't work):**
378
+ ```typescript
379
+ ${user name} // ❌ Fails: interpreted as two separate identifiers
380
+ ```
381
+
382
+ **After (works):**
383
+ ```typescript
384
+ ${"user name"} // ✅ Works: quoted property name
385
+ ```
386
+
387
+ ### Best Practices
388
+
389
+ 1. **Use simple syntax** for properties without spaces: `${height}`
390
+ 2. **Use quoted syntax** for properties with spaces: `${"user name"}`
391
+ 3. **Prefer double quotes** for consistency: `${"property"}` instead of `${'property'}`
392
+ 4. **Avoid special characters in property names** when possible to keep expressions simple