@npm9912/v-map 0.1.0

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 (438) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/cjs/_commonjsHelpers-B83fTs8d.js +36 -0
  4. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  5. package/dist/cjs/cesium-provider-BiFFyAl9.js +2598 -0
  6. package/dist/cjs/deck-provider-Ctq3Q8a1.js +47824 -0
  7. package/dist/cjs/geotiff-CEwvF9cG.js +47 -0
  8. package/dist/cjs/geotiff-source-RaNzzWkC.js +1522 -0
  9. package/dist/cjs/index-B1oGO1g-.js +10658 -0
  10. package/dist/cjs/index-B8LHqjyg.js +1765 -0
  11. package/dist/cjs/index-BIL4VsgP.js +310 -0
  12. package/dist/cjs/index-Blku2QY8.js +167 -0
  13. package/dist/cjs/index-CJvvX4yx.js +21 -0
  14. package/dist/cjs/index-CbVT-Con.js +699 -0
  15. package/dist/cjs/index-ISOEpMC3.js +20478 -0
  16. package/dist/cjs/index-JSwBbvGA.js +1621 -0
  17. package/dist/cjs/index.browser-DQhD8Jwl.js +6873 -0
  18. package/dist/cjs/index.cjs.js +2 -0
  19. package/dist/cjs/layer-extension-B_olS0rc.js +65 -0
  20. package/dist/cjs/leaflet-provider-DOqfs7g5.js +1815 -0
  21. package/dist/cjs/loader.cjs.js +13 -0
  22. package/dist/cjs/main-dist-7TykwFci.js +2655 -0
  23. package/dist/cjs/messages-D7h4m8Tx.js +186 -0
  24. package/dist/cjs/openlayers-provider-Dfeg6L4n.js +1604 -0
  25. package/dist/cjs/polygon-layer-B9PrN7vr.js +1300 -0
  26. package/dist/cjs/scenegraph-layer-DwNoxQdi.js +2530 -0
  27. package/dist/cjs/styleconfig-CVRqArk-.js +23 -0
  28. package/dist/cjs/v-map-builder.cjs.entry.js +3786 -0
  29. package/dist/cjs/v-map-layer-geojson_12.cjs.entry.js +40894 -0
  30. package/dist/cjs/v-map-layer-helper-iAzxAg9I.js +285 -0
  31. package/dist/cjs/v-map-layer-terrain-geotiff.cjs.entry.js +258 -0
  32. package/dist/cjs/v-map-layercontrol.cjs.entry.js +247 -0
  33. package/dist/cjs/v-map.cjs.js +25 -0
  34. package/dist/cjs/v-map.v-map-layer-osm.v-map-layergroup-BsXp3BoL.js +582 -0
  35. package/dist/cjs/v-map_3.cjs.entry.js +12 -0
  36. package/dist/collection/collection-manifest.json +30 -0
  37. package/dist/collection/components/v-map/v-map.css +3 -0
  38. package/dist/collection/components/v-map/v-map.js +467 -0
  39. package/dist/collection/components/v-map/v-map.test.js +33 -0
  40. package/dist/collection/components/v-map-builder/v-map-builder.css +1 -0
  41. package/dist/collection/components/v-map-builder/v-map-builder.js +913 -0
  42. package/dist/collection/components/v-map-builder/v-map-builder.test.js +56 -0
  43. package/dist/collection/components/v-map-layer-geojson/v-map-layer-geojson.js +862 -0
  44. package/dist/collection/components/v-map-layer-geojson/v-map-layer-geojson.test.js +42 -0
  45. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.css +4 -0
  46. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.js +500 -0
  47. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.test.js +38 -0
  48. package/dist/collection/components/v-map-layer-google/v-map-layer-google.css +1 -0
  49. package/dist/collection/components/v-map-layer-google/v-map-layer-google.js +442 -0
  50. package/dist/collection/components/v-map-layer-osm/error-api.test.js +108 -0
  51. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.css +4 -0
  52. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.js +311 -0
  53. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.test.js +36 -0
  54. package/dist/collection/components/v-map-layer-scatterplot/v-map-layer-scatterplot.css +1 -0
  55. package/dist/collection/components/v-map-layer-scatterplot/v-map-layer-scatterplot.js +305 -0
  56. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.css +3 -0
  57. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.js +548 -0
  58. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.test.js +36 -0
  59. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.css +3 -0
  60. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.js +735 -0
  61. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.test.js +42 -0
  62. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.css +3 -0
  63. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.js +449 -0
  64. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.test.js +50 -0
  65. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.css +1 -0
  66. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.js +448 -0
  67. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.test.js +39 -0
  68. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.css +1 -0
  69. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.js +489 -0
  70. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.test.js +43 -0
  71. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.css +1 -0
  72. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.js +811 -0
  73. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.test.js +34 -0
  74. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.css +1 -0
  75. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.js +453 -0
  76. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.test.js +36 -0
  77. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.css +1 -0
  78. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.js +331 -0
  79. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.test.js +28 -0
  80. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.css +74 -0
  81. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.js +277 -0
  82. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.test.js +134 -0
  83. package/dist/collection/components/v-map-layergroup/v-map-layergroup.css +4 -0
  84. package/dist/collection/components/v-map-layergroup/v-map-layergroup.js +212 -0
  85. package/dist/collection/components/v-map-layergroup/v-map-layergroup.test.js +39 -0
  86. package/dist/collection/components/v-map-style/v-map-style.css +38 -0
  87. package/dist/collection/components/v-map-style/v-map-style.js +492 -0
  88. package/dist/collection/components/v-map-style/v-map-style.unit.js +62 -0
  89. package/dist/collection/index.js +1 -0
  90. package/dist/collection/layer/v-map-layer-helper.js +281 -0
  91. package/dist/collection/layer/v-map-layer-helper.unit.js +234 -0
  92. package/dist/collection/lib/cesium-loader.js +58 -0
  93. package/dist/collection/lib/ensure-importmap.js +12 -0
  94. package/dist/collection/lib/ensure-importmap.unit.js +57 -0
  95. package/dist/collection/lib/versions.gen.js +6 -0
  96. package/dist/collection/lib/vstyle.js +8 -0
  97. package/dist/collection/map-provider/cesium/CesiumGeoTIFFTerrainProvider.js +285 -0
  98. package/dist/collection/map-provider/cesium/CesiumLayerGroups.js +159 -0
  99. package/dist/collection/map-provider/cesium/GeoTIFFImageryProvider.js +192 -0
  100. package/dist/collection/map-provider/cesium/GeoTIFFImageryProvider.test.js +57 -0
  101. package/dist/collection/map-provider/cesium/cesium-provider.js +1408 -0
  102. package/dist/collection/map-provider/cesium/i-layer.js +1 -0
  103. package/dist/collection/map-provider/cesium/layer-manager.js +467 -0
  104. package/dist/collection/map-provider/deck/DeckGLGeoTIFFLayer.js +483 -0
  105. package/dist/collection/map-provider/deck/DeckGLGeoTIFFTerrainLayer.js +410 -0
  106. package/dist/collection/map-provider/deck/LayerGroupWithModel.js +169 -0
  107. package/dist/collection/map-provider/deck/LayerGroups.js +192 -0
  108. package/dist/collection/map-provider/deck/LayerModel.js +1 -0
  109. package/dist/collection/map-provider/deck/RenderableGroup.js +1 -0
  110. package/dist/collection/map-provider/deck/deck-provider.js +1563 -0
  111. package/dist/collection/map-provider/geotiff/geotiff-source.js +172 -0
  112. package/dist/collection/map-provider/geotiff/utils/AABB2D.js +24 -0
  113. package/dist/collection/map-provider/geotiff/utils/BVHNode2D.js +166 -0
  114. package/dist/collection/map-provider/geotiff/utils/GeoTIFFTileProcessor.js +484 -0
  115. package/dist/collection/map-provider/geotiff/utils/Triangle.js +1 -0
  116. package/dist/collection/map-provider/geotiff/utils/Triangulation.js +321 -0
  117. package/dist/collection/map-provider/geotiff/utils/colormap-utils.js +190 -0
  118. package/dist/collection/map-provider/geotiff/utils/normalization-utils.js +122 -0
  119. package/dist/collection/map-provider/geotiff/utils/sampling-utils.js +108 -0
  120. package/dist/collection/map-provider/leaflet/GeoTIFFGridLayer.js +147 -0
  121. package/dist/collection/map-provider/leaflet/WCSGridLayer.js +124 -0
  122. package/dist/collection/map-provider/leaflet/google-map-tiles-layer.js +352 -0
  123. package/dist/collection/map-provider/leaflet/leaflet-helpers.js +94 -0
  124. package/dist/collection/map-provider/leaflet/leaflet-provider.js +1095 -0
  125. package/dist/collection/map-provider/ol/CustomGeoTiff.js +145 -0
  126. package/dist/collection/map-provider/ol/openlayers-helper.js +26 -0
  127. package/dist/collection/map-provider/ol/openlayers-provider.js +1427 -0
  128. package/dist/collection/map-provider/provider-factory.js +44 -0
  129. package/dist/collection/map-provider/provider-factory.unit.js +66 -0
  130. package/dist/collection/testing/browser-test-utils.js +49 -0
  131. package/dist/collection/testing/e2e-testing.js +122 -0
  132. package/dist/collection/testing/e2e-utils.js +70 -0
  133. package/dist/collection/testing/geotiff-test-server.js +100 -0
  134. package/dist/collection/testing/mocks/geostyler-lyrx-parser.js +12 -0
  135. package/dist/collection/testing/mocks/geostyler-mapbox-parser.js +12 -0
  136. package/dist/collection/testing/mocks/geostyler-qgis-parser.js +12 -0
  137. package/dist/collection/testing/mocks/geostyler-sld-parser.js +13 -0
  138. package/dist/collection/testing/mocks/geostyler-style.js +5 -0
  139. package/dist/collection/testing/setupTests.browser.js +1 -0
  140. package/dist/collection/testing/setupTests.stencil.js +20 -0
  141. package/dist/collection/testing/setupTests.vitest.js +59 -0
  142. package/dist/collection/testing/stencil-testing-wrapper.js +43 -0
  143. package/dist/collection/testing/styleMock.js +1 -0
  144. package/dist/collection/types/color.js +1 -0
  145. package/dist/collection/types/cssmode.js +1 -0
  146. package/dist/collection/types/flavour.js +1 -0
  147. package/dist/collection/types/layerconfig.js +1 -0
  148. package/dist/collection/types/lonlat.js +1 -0
  149. package/dist/collection/types/mapinitoptions.js +1 -0
  150. package/dist/collection/types/mapprovider.js +1 -0
  151. package/dist/collection/types/provideroptions.js +1 -0
  152. package/dist/collection/types/styleconfig.js +19 -0
  153. package/dist/collection/types/styling.js +13 -0
  154. package/dist/collection/types/styling.unit.js +37 -0
  155. package/dist/collection/types/vmaplayer.js +1 -0
  156. package/dist/collection/utils/async-mutex.js +28 -0
  157. package/dist/collection/utils/diff.js +142 -0
  158. package/dist/collection/utils/diff.unit.js +59 -0
  159. package/dist/collection/utils/dom-env.js +43 -0
  160. package/dist/collection/utils/dom-env.unit.js +92 -0
  161. package/dist/collection/utils/events.js +8 -0
  162. package/dist/collection/utils/logger.js +183 -0
  163. package/dist/collection/utils/logger.unit.js +98 -0
  164. package/dist/collection/utils/messages.js +12 -0
  165. package/dist/collection/utils/spatial-utils.js +27 -0
  166. package/dist/collection/utils/spatial-utils.unit.js +24 -0
  167. package/dist/components/_commonjsHelpers.js +1 -0
  168. package/dist/components/cesium-provider.js +1 -0
  169. package/dist/components/deck-provider.js +1 -0
  170. package/dist/components/events.js +1 -0
  171. package/dist/components/geotiff-source.js +1 -0
  172. package/dist/components/geotiff.js +4 -0
  173. package/dist/components/index.browser.js +15 -0
  174. package/dist/components/index.d.ts +35 -0
  175. package/dist/components/index.js +1 -0
  176. package/dist/components/index2.js +1 -0
  177. package/dist/components/index3.js +1 -0
  178. package/dist/components/index4.js +1 -0
  179. package/dist/components/index5.js +1 -0
  180. package/dist/components/index6.js +1 -0
  181. package/dist/components/index7.js +1 -0
  182. package/dist/components/index8.js +7 -0
  183. package/dist/components/layer-extension.js +1 -0
  184. package/dist/components/leaflet-provider.js +1 -0
  185. package/dist/components/main-dist.js +1 -0
  186. package/dist/components/messages.js +1 -0
  187. package/dist/components/openlayers-provider.js +1 -0
  188. package/dist/components/polygon-layer.js +1 -0
  189. package/dist/components/scenegraph-layer.js +1 -0
  190. package/dist/components/styleconfig.js +1 -0
  191. package/dist/components/styling.js +1 -0
  192. package/dist/components/v-map-builder.d.ts +11 -0
  193. package/dist/components/v-map-builder.js +2 -0
  194. package/dist/components/v-map-layer-geojson.d.ts +11 -0
  195. package/dist/components/v-map-layer-geojson.js +1 -0
  196. package/dist/components/v-map-layer-geojson2.js +1 -0
  197. package/dist/components/v-map-layer-geotiff.d.ts +11 -0
  198. package/dist/components/v-map-layer-geotiff.js +1 -0
  199. package/dist/components/v-map-layer-geotiff2.js +1 -0
  200. package/dist/components/v-map-layer-google.d.ts +11 -0
  201. package/dist/components/v-map-layer-google.js +1 -0
  202. package/dist/components/v-map-layer-google2.js +1 -0
  203. package/dist/components/v-map-layer-helper.js +1 -0
  204. package/dist/components/v-map-layer-osm.d.ts +11 -0
  205. package/dist/components/v-map-layer-osm.js +1 -0
  206. package/dist/components/v-map-layer-osm2.js +1 -0
  207. package/dist/components/v-map-layer-scatterplot.d.ts +11 -0
  208. package/dist/components/v-map-layer-scatterplot.js +1 -0
  209. package/dist/components/v-map-layer-scatterplot2.js +1 -0
  210. package/dist/components/v-map-layer-terrain-geotiff.d.ts +11 -0
  211. package/dist/components/v-map-layer-terrain-geotiff.js +1 -0
  212. package/dist/components/v-map-layer-terrain.d.ts +11 -0
  213. package/dist/components/v-map-layer-terrain.js +1 -0
  214. package/dist/components/v-map-layer-terrain2.js +1 -0
  215. package/dist/components/v-map-layer-tile3d.d.ts +11 -0
  216. package/dist/components/v-map-layer-tile3d.js +1 -0
  217. package/dist/components/v-map-layer-tile3d2.js +1 -0
  218. package/dist/components/v-map-layer-wcs.d.ts +11 -0
  219. package/dist/components/v-map-layer-wcs.js +1 -0
  220. package/dist/components/v-map-layer-wcs2.js +1 -0
  221. package/dist/components/v-map-layer-wfs.d.ts +11 -0
  222. package/dist/components/v-map-layer-wfs.js +1 -0
  223. package/dist/components/v-map-layer-wfs2.js +1 -0
  224. package/dist/components/v-map-layer-wkt.d.ts +11 -0
  225. package/dist/components/v-map-layer-wkt.js +1 -0
  226. package/dist/components/v-map-layer-wkt2.js +1 -0
  227. package/dist/components/v-map-layer-wms.d.ts +11 -0
  228. package/dist/components/v-map-layer-wms.js +1 -0
  229. package/dist/components/v-map-layer-wms2.js +1 -0
  230. package/dist/components/v-map-layer-xyz.d.ts +11 -0
  231. package/dist/components/v-map-layer-xyz.js +1 -0
  232. package/dist/components/v-map-layer-xyz2.js +1 -0
  233. package/dist/components/v-map-layercontrol.d.ts +11 -0
  234. package/dist/components/v-map-layercontrol.js +1 -0
  235. package/dist/components/v-map-layergroup.d.ts +11 -0
  236. package/dist/components/v-map-layergroup.js +1 -0
  237. package/dist/components/v-map-layergroup2.js +1 -0
  238. package/dist/components/v-map-style.d.ts +11 -0
  239. package/dist/components/v-map-style.js +1 -0
  240. package/dist/components/v-map-style2.js +10 -0
  241. package/dist/components/v-map.d.ts +11 -0
  242. package/dist/components/v-map.js +1 -0
  243. package/dist/components/v-map2.js +1 -0
  244. package/dist/esm/_commonjsHelpers-E-ZsRS8r.js +32 -0
  245. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  246. package/dist/esm/cesium-provider-BJfAup3w.js +2596 -0
  247. package/dist/esm/deck-provider-C7U9VDEq.js +47709 -0
  248. package/dist/esm/geotiff-BEWxTIfH.js +45 -0
  249. package/dist/esm/geotiff-source-esnDnC-u.js +1516 -0
  250. package/dist/esm/index-B1zwA4IC.js +685 -0
  251. package/dist/esm/index-BBpiaTpT.js +165 -0
  252. package/dist/esm/index-BIEmlzCf.js +1697 -0
  253. package/dist/esm/index-BUHa4Jj0.js +307 -0
  254. package/dist/esm/index-DbSdn93t.js +20461 -0
  255. package/dist/esm/index-RpJarvr_.js +10656 -0
  256. package/dist/esm/index-jN06TXUp.js +14 -0
  257. package/dist/esm/index-jzneDarq.js +1613 -0
  258. package/dist/esm/index.browser-DhQAXuA7.js +6860 -0
  259. package/dist/esm/index.js +1 -0
  260. package/dist/esm/layer-extension-CZXK5goK.js +63 -0
  261. package/dist/esm/leaflet-provider-Q41TB6ku.js +1794 -0
  262. package/dist/esm/loader.js +11 -0
  263. package/dist/esm/main-dist-CwnA7_Xn.js +2652 -0
  264. package/dist/esm/messages-CMKJzsgL.js +180 -0
  265. package/dist/esm/openlayers-provider-CMsDsQTQ.js +1602 -0
  266. package/dist/esm/polygon-layer-ByhxGhWC.js +1295 -0
  267. package/dist/esm/scenegraph-layer-09K_B6DT.js +2526 -0
  268. package/dist/esm/styleconfig-B-bAcABs.js +21 -0
  269. package/dist/esm/v-map-builder.entry.js +3784 -0
  270. package/dist/esm/v-map-layer-geojson_12.entry.js +40881 -0
  271. package/dist/esm/v-map-layer-helper-Dys44Cgo.js +283 -0
  272. package/dist/esm/v-map-layer-terrain-geotiff.entry.js +256 -0
  273. package/dist/esm/v-map-layercontrol.entry.js +245 -0
  274. package/dist/esm/v-map.js +21 -0
  275. package/dist/esm/v-map.v-map-layer-osm.v-map-layergroup-B4pFHuSf.js +572 -0
  276. package/dist/esm/v-map_3.entry.js +4 -0
  277. package/dist/index.cjs.js +1 -0
  278. package/dist/index.js +1 -0
  279. package/dist/types/cesium-augment.d.ts +5 -0
  280. package/dist/types/components/v-map/v-map.d.ts +70 -0
  281. package/dist/types/components/v-map/v-map.test.d.ts +1 -0
  282. package/dist/types/components/v-map-builder/v-map-builder.d.ts +48 -0
  283. package/dist/types/components/v-map-builder/v-map-builder.test.d.ts +1 -0
  284. package/dist/types/components/v-map-layer-geojson/v-map-layer-geojson.d.ts +129 -0
  285. package/dist/types/components/v-map-layer-geojson/v-map-layer-geojson.test.d.ts +1 -0
  286. package/dist/types/components/v-map-layer-geotiff/v-map-layer-geotiff.d.ts +74 -0
  287. package/dist/types/components/v-map-layer-geotiff/v-map-layer-geotiff.test.d.ts +1 -0
  288. package/dist/types/components/v-map-layer-google/v-map-layer-google.d.ts +78 -0
  289. package/dist/types/components/v-map-layer-osm/error-api.test.d.ts +1 -0
  290. package/dist/types/components/v-map-layer-osm/v-map-layer-osm.d.ts +50 -0
  291. package/dist/types/components/v-map-layer-osm/v-map-layer-osm.test.d.ts +1 -0
  292. package/dist/types/components/v-map-layer-scatterplot/v-map-layer-scatterplot.d.ts +54 -0
  293. package/dist/types/components/v-map-layer-terrain/v-map-layer-terrain.d.ts +74 -0
  294. package/dist/types/components/v-map-layer-terrain/v-map-layer-terrain.test.d.ts +1 -0
  295. package/dist/types/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.d.ts +117 -0
  296. package/dist/types/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.test.d.ts +1 -0
  297. package/dist/types/components/v-map-layer-tile3d/v-map-layer-tile3d.d.ts +69 -0
  298. package/dist/types/components/v-map-layer-tile3d/v-map-layer-tile3d.test.d.ts +1 -0
  299. package/dist/types/components/v-map-layer-wcs/v-map-layer-wcs.d.ts +47 -0
  300. package/dist/types/components/v-map-layer-wcs/v-map-layer-wcs.test.d.ts +1 -0
  301. package/dist/types/components/v-map-layer-wfs/v-map-layer-wfs.d.ts +59 -0
  302. package/dist/types/components/v-map-layer-wfs/v-map-layer-wfs.test.d.ts +1 -0
  303. package/dist/types/components/v-map-layer-wkt/v-map-layer-wkt.d.ts +132 -0
  304. package/dist/types/components/v-map-layer-wkt/v-map-layer-wkt.test.d.ts +1 -0
  305. package/dist/types/components/v-map-layer-wms/v-map-layer-wms.d.ts +76 -0
  306. package/dist/types/components/v-map-layer-wms/v-map-layer-wms.test.d.ts +1 -0
  307. package/dist/types/components/v-map-layer-xyz/v-map-layer-xyz.d.ts +59 -0
  308. package/dist/types/components/v-map-layer-xyz/v-map-layer-xyz.test.d.ts +1 -0
  309. package/dist/types/components/v-map-layercontrol/v-map-layercontrol.d.ts +44 -0
  310. package/dist/types/components/v-map-layercontrol/v-map-layercontrol.test.d.ts +1 -0
  311. package/dist/types/components/v-map-layergroup/v-map-layergroup.d.ts +31 -0
  312. package/dist/types/components/v-map-layergroup/v-map-layergroup.test.d.ts +1 -0
  313. package/dist/types/components/v-map-style/v-map-style.d.ts +75 -0
  314. package/dist/types/components/v-map-style/v-map-style.unit.d.ts +1 -0
  315. package/dist/types/components.d.ts +2391 -0
  316. package/dist/types/globals.d.ts +16 -0
  317. package/dist/types/index.d.ts +10 -0
  318. package/dist/types/layer/v-map-layer-helper.d.ts +45 -0
  319. package/dist/types/layer/v-map-layer-helper.unit.d.ts +1 -0
  320. package/dist/types/leaflet-augment.d.ts +15 -0
  321. package/dist/types/lib/cesium-loader.d.ts +3 -0
  322. package/dist/types/lib/ensure-importmap.d.ts +3 -0
  323. package/dist/types/lib/ensure-importmap.unit.d.ts +1 -0
  324. package/dist/types/lib/versions.gen.d.ts +5 -0
  325. package/dist/types/lib/vstyle.d.ts +44 -0
  326. package/dist/types/map-provider/cesium/CesiumGeoTIFFTerrainProvider.d.ts +92 -0
  327. package/dist/types/map-provider/cesium/CesiumLayerGroups.d.ts +64 -0
  328. package/dist/types/map-provider/cesium/GeoTIFFImageryProvider.d.ts +75 -0
  329. package/dist/types/map-provider/cesium/GeoTIFFImageryProvider.test.d.ts +1 -0
  330. package/dist/types/map-provider/cesium/cesium-provider.d.ts +87 -0
  331. package/dist/types/map-provider/cesium/i-layer.d.ts +11 -0
  332. package/dist/types/map-provider/cesium/layer-manager.d.ts +31 -0
  333. package/dist/types/map-provider/deck/DeckGLGeoTIFFLayer.d.ts +91 -0
  334. package/dist/types/map-provider/deck/DeckGLGeoTIFFTerrainLayer.d.ts +82 -0
  335. package/dist/types/map-provider/deck/LayerGroupWithModel.d.ts +55 -0
  336. package/dist/types/map-provider/deck/LayerGroups.d.ts +63 -0
  337. package/dist/types/map-provider/deck/LayerModel.d.ts +8 -0
  338. package/dist/types/map-provider/deck/RenderableGroup.d.ts +20 -0
  339. package/dist/types/map-provider/deck/deck-provider.d.ts +92 -0
  340. package/dist/types/map-provider/geotiff/geotiff-source.d.ts +30 -0
  341. package/dist/types/map-provider/geotiff/utils/AABB2D.d.ts +28 -0
  342. package/dist/types/map-provider/geotiff/utils/BVHNode2D.d.ts +36 -0
  343. package/dist/types/map-provider/geotiff/utils/GeoTIFFTileProcessor.d.ts +116 -0
  344. package/dist/types/map-provider/geotiff/utils/Triangle.d.ts +5 -0
  345. package/dist/types/map-provider/geotiff/utils/Triangulation.d.ts +94 -0
  346. package/dist/types/map-provider/geotiff/utils/colormap-utils.d.ts +47 -0
  347. package/dist/types/map-provider/geotiff/utils/normalization-utils.d.ts +39 -0
  348. package/dist/types/map-provider/geotiff/utils/sampling-utils.d.ts +13 -0
  349. package/dist/types/map-provider/leaflet/GeoTIFFGridLayer.d.ts +34 -0
  350. package/dist/types/map-provider/leaflet/WCSGridLayer.d.ts +38 -0
  351. package/dist/types/map-provider/leaflet/google-map-tiles-layer.d.ts +73 -0
  352. package/dist/types/map-provider/leaflet/leaflet-helpers.d.ts +6 -0
  353. package/dist/types/map-provider/leaflet/leaflet-provider.d.ts +73 -0
  354. package/dist/types/map-provider/ol/CustomGeoTiff.d.ts +14 -0
  355. package/dist/types/map-provider/ol/openlayers-helper.d.ts +2 -0
  356. package/dist/types/map-provider/ol/openlayers-provider.d.ts +80 -0
  357. package/dist/types/map-provider/provider-factory.d.ts +12 -0
  358. package/dist/types/map-provider/provider-factory.unit.d.ts +1 -0
  359. package/dist/types/namespaces.d.ts +3 -0
  360. package/dist/types/ol-augment.d.ts +3 -0
  361. package/dist/types/ol-override.d.ts +7 -0
  362. package/dist/types/ol.d.ts +10 -0
  363. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  364. package/dist/types/testing/browser-test-utils.d.ts +6 -0
  365. package/dist/types/testing/e2e-testing.d.ts +5 -0
  366. package/dist/types/testing/e2e-utils.d.ts +4 -0
  367. package/dist/types/testing/geotiff-test-server.d.ts +5 -0
  368. package/dist/types/testing/mocks/geostyler-lyrx-parser.d.ts +11 -0
  369. package/dist/types/testing/mocks/geostyler-mapbox-parser.d.ts +11 -0
  370. package/dist/types/testing/mocks/geostyler-qgis-parser.d.ts +11 -0
  371. package/dist/types/testing/mocks/geostyler-sld-parser.d.ts +11 -0
  372. package/dist/types/testing/mocks/geostyler-style.d.ts +5 -0
  373. package/dist/types/testing/setupTests.browser.d.ts +1 -0
  374. package/dist/types/testing/setupTests.stencil.d.ts +1 -0
  375. package/dist/types/testing/setupTests.vitest.d.ts +1 -0
  376. package/dist/types/testing/stencil-testing-wrapper.d.ts +3 -0
  377. package/dist/types/types/color.d.ts +1 -0
  378. package/dist/types/types/cssmode.d.ts +1 -0
  379. package/dist/types/types/flavour.d.ts +1 -0
  380. package/dist/types/types/layerconfig.d.ts +207 -0
  381. package/dist/types/types/lonlat.d.ts +1 -0
  382. package/dist/types/types/mapinitoptions.d.ts +4 -0
  383. package/dist/types/types/mapprovider.d.ts +46 -0
  384. package/dist/types/types/provideroptions.d.ts +8 -0
  385. package/dist/types/types/styleconfig.d.ts +27 -0
  386. package/dist/types/types/styling.d.ts +24 -0
  387. package/dist/types/types/styling.unit.d.ts +1 -0
  388. package/dist/types/types/vmaplayer.d.ts +10 -0
  389. package/dist/types/utils/async-mutex.d.ts +7 -0
  390. package/dist/types/utils/diff.d.ts +64 -0
  391. package/dist/types/utils/diff.unit.d.ts +1 -0
  392. package/dist/types/utils/dom-env.d.ts +5 -0
  393. package/dist/types/utils/dom-env.unit.d.ts +1 -0
  394. package/dist/types/utils/events.d.ts +29 -0
  395. package/dist/types/utils/logger.d.ts +47 -0
  396. package/dist/types/utils/logger.unit.d.ts +1 -0
  397. package/dist/types/utils/messages.d.ts +12 -0
  398. package/dist/types/utils/spatial-utils.d.ts +6 -0
  399. package/dist/types/utils/spatial-utils.unit.d.ts +1 -0
  400. package/dist/types/versions.d.ts +7 -0
  401. package/dist/v-map/index.esm.js +0 -0
  402. package/dist/v-map/p--vVleK-M.js +1 -0
  403. package/dist/v-map/p-09d10db0.entry.js +1 -0
  404. package/dist/v-map/p-5eba6058.entry.js +10 -0
  405. package/dist/v-map/p-6b102336.entry.js +1 -0
  406. package/dist/v-map/p-B-bAcABs.js +1 -0
  407. package/dist/v-map/p-BBpiaTpT.js +1 -0
  408. package/dist/v-map/p-BdijL4Av.js +1 -0
  409. package/dist/v-map/p-Be3r33VF.js +4 -0
  410. package/dist/v-map/p-BeFu0ap4.js +1 -0
  411. package/dist/v-map/p-BxFJezdK.js +1 -0
  412. package/dist/v-map/p-CMKJzsgL.js +1 -0
  413. package/dist/v-map/p-CXfA_q8m.js +1 -0
  414. package/dist/v-map/p-CZqY0yW4.js +1 -0
  415. package/dist/v-map/p-CafTHT9i.js +1 -0
  416. package/dist/v-map/p-DCTHyf58.js +1 -0
  417. package/dist/v-map/p-DQuL1Twl.js +1 -0
  418. package/dist/v-map/p-DR9McdNX.js +1 -0
  419. package/dist/v-map/p-Dckgonw8.js +1 -0
  420. package/dist/v-map/p-DhQAXuA7.js +15 -0
  421. package/dist/v-map/p-DmICdG34.js +7 -0
  422. package/dist/v-map/p-DrOQ9V4h.js +1 -0
  423. package/dist/v-map/p-DvHXtWUg.js +1 -0
  424. package/dist/v-map/p-E-ZsRS8r.js +1 -0
  425. package/dist/v-map/p-MyTSFnEk.js +1 -0
  426. package/dist/v-map/p-RpJarvr_.js +1 -0
  427. package/dist/v-map/p-WaMDUuAz.js +1 -0
  428. package/dist/v-map/p-aa410e64.entry.js +2 -0
  429. package/dist/v-map/p-c21c93fe.entry.js +1 -0
  430. package/dist/v-map/p-jzneDarq.js +2 -0
  431. package/dist/v-map/p-uiIP-taz.js +1 -0
  432. package/dist/v-map/v-map.esm.js +1 -0
  433. package/loader/cdn.js +1 -0
  434. package/loader/index.cjs.js +1 -0
  435. package/loader/index.d.ts +24 -0
  436. package/loader/index.es2017.js +1 -0
  437. package/loader/index.js +2 -0
  438. package/package.json +193 -0
@@ -0,0 +1,1295 @@
1
+ import { L as Layer, p as project32, a as picking, U as UNIT, M as Model, c as color, i as gouraudMaterial, G as Geometry, j as defaultLogger, m as modifyPolygonWindingDirection, W as WINDING, k as phongMaterial, C as CompositeLayer, r as replaceInRange, l as createIterable, n as normalize, f as SolidPolygonLayer, P as PathLayer } from './deck-provider-C7U9VDEq.js';
2
+
3
+ // deck.gl
4
+ // SPDX-License-Identifier: MIT
5
+ // Copyright (c) vis.gl contributors
6
+ const uniformBlock$1 = `\
7
+ uniform arcUniforms {
8
+ bool greatCircle;
9
+ bool useShortestPath;
10
+ float numSegments;
11
+ float widthScale;
12
+ float widthMinPixels;
13
+ float widthMaxPixels;
14
+ highp int widthUnits;
15
+ } arc;
16
+ `;
17
+ const arcUniforms = {
18
+ name: 'arc',
19
+ vs: uniformBlock$1,
20
+ fs: uniformBlock$1,
21
+ uniformTypes: {
22
+ greatCircle: 'f32',
23
+ useShortestPath: 'f32',
24
+ numSegments: 'f32',
25
+ widthScale: 'f32',
26
+ widthMinPixels: 'f32',
27
+ widthMaxPixels: 'f32',
28
+ widthUnits: 'i32'
29
+ }
30
+ };
31
+
32
+ // deck.gl
33
+ // SPDX-License-Identifier: MIT
34
+ // Copyright (c) vis.gl contributors
35
+ var vs$2 = `\
36
+ #version 300 es
37
+ #define SHADER_NAME arc-layer-vertex-shader
38
+ in vec4 instanceSourceColors;
39
+ in vec4 instanceTargetColors;
40
+ in vec3 instanceSourcePositions;
41
+ in vec3 instanceSourcePositions64Low;
42
+ in vec3 instanceTargetPositions;
43
+ in vec3 instanceTargetPositions64Low;
44
+ in vec3 instancePickingColors;
45
+ in float instanceWidths;
46
+ in float instanceHeights;
47
+ in float instanceTilts;
48
+ out vec4 vColor;
49
+ out vec2 uv;
50
+ out float isValid;
51
+ float paraboloid(float distance, float sourceZ, float targetZ, float ratio) {
52
+ float deltaZ = targetZ - sourceZ;
53
+ float dh = distance * instanceHeights;
54
+ if (dh == 0.0) {
55
+ return sourceZ + deltaZ * ratio;
56
+ }
57
+ float unitZ = deltaZ / dh;
58
+ float p2 = unitZ * unitZ + 1.0;
59
+ float dir = step(deltaZ, 0.0);
60
+ float z0 = mix(sourceZ, targetZ, dir);
61
+ float r = mix(ratio, 1.0 - ratio, dir);
62
+ return sqrt(r * (p2 - r)) * dh + z0;
63
+ }
64
+ vec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {
65
+ vec2 dir_screenspace = normalize(line_clipspace * project.viewportSize);
66
+ dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);
67
+ return dir_screenspace * offset_direction * width / 2.0;
68
+ }
69
+ float getSegmentRatio(float index) {
70
+ return smoothstep(0.0, 1.0, index / (arc.numSegments - 1.0));
71
+ }
72
+ vec3 interpolateFlat(vec3 source, vec3 target, float segmentRatio) {
73
+ float distance = length(source.xy - target.xy);
74
+ float z = paraboloid(distance, source.z, target.z, segmentRatio);
75
+ float tiltAngle = radians(instanceTilts);
76
+ vec2 tiltDirection = normalize(target.xy - source.xy);
77
+ vec2 tilt = vec2(-tiltDirection.y, tiltDirection.x) * z * sin(tiltAngle);
78
+ return vec3(
79
+ mix(source.xy, target.xy, segmentRatio) + tilt,
80
+ z * cos(tiltAngle)
81
+ );
82
+ }
83
+ float getAngularDist (vec2 source, vec2 target) {
84
+ vec2 sourceRadians = radians(source);
85
+ vec2 targetRadians = radians(target);
86
+ vec2 sin_half_delta = sin((sourceRadians - targetRadians) / 2.0);
87
+ vec2 shd_sq = sin_half_delta * sin_half_delta;
88
+ float a = shd_sq.y + cos(sourceRadians.y) * cos(targetRadians.y) * shd_sq.x;
89
+ return 2.0 * asin(sqrt(a));
90
+ }
91
+ vec3 interpolateGreatCircle(vec3 source, vec3 target, vec3 source3D, vec3 target3D, float angularDist, float t) {
92
+ vec2 lngLat;
93
+ if(abs(angularDist - PI) < 0.001) {
94
+ lngLat = (1.0 - t) * source.xy + t * target.xy;
95
+ } else {
96
+ float a = sin((1.0 - t) * angularDist);
97
+ float b = sin(t * angularDist);
98
+ vec3 p = source3D.yxz * a + target3D.yxz * b;
99
+ lngLat = degrees(vec2(atan(p.y, -p.x), atan(p.z, length(p.xy))));
100
+ }
101
+ float z = paraboloid(angularDist * EARTH_RADIUS, source.z, target.z, t);
102
+ return vec3(lngLat, z);
103
+ }
104
+ void main(void) {
105
+ geometry.worldPosition = instanceSourcePositions;
106
+ geometry.worldPositionAlt = instanceTargetPositions;
107
+ float segmentIndex = float(gl_VertexID / 2);
108
+ float segmentSide = mod(float(gl_VertexID), 2.) == 0. ? -1. : 1.;
109
+ float segmentRatio = getSegmentRatio(segmentIndex);
110
+ float prevSegmentRatio = getSegmentRatio(max(0.0, segmentIndex - 1.0));
111
+ float nextSegmentRatio = getSegmentRatio(min(arc.numSegments - 1.0, segmentIndex + 1.0));
112
+ float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));
113
+ isValid = 1.0;
114
+ uv = vec2(segmentRatio, segmentSide);
115
+ geometry.uv = uv;
116
+ geometry.pickingColor = instancePickingColors;
117
+ vec4 curr;
118
+ vec4 next;
119
+ vec3 source;
120
+ vec3 target;
121
+ if ((arc.greatCircle || project.projectionMode == PROJECTION_MODE_GLOBE) && project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
122
+ source = project_globe_(vec3(instanceSourcePositions.xy, 0.0));
123
+ target = project_globe_(vec3(instanceTargetPositions.xy, 0.0));
124
+ float angularDist = getAngularDist(instanceSourcePositions.xy, instanceTargetPositions.xy);
125
+ vec3 prevPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, prevSegmentRatio);
126
+ vec3 currPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, segmentRatio);
127
+ vec3 nextPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, nextSegmentRatio);
128
+ if (abs(currPos.x - prevPos.x) > 180.0) {
129
+ indexDir = -1.0;
130
+ isValid = 0.0;
131
+ } else if (abs(currPos.x - nextPos.x) > 180.0) {
132
+ indexDir = 1.0;
133
+ isValid = 0.0;
134
+ }
135
+ nextPos = indexDir < 0.0 ? prevPos : nextPos;
136
+ nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;
137
+ if (isValid == 0.0) {
138
+ nextPos.x += nextPos.x > 0.0 ? -360.0 : 360.0;
139
+ float t = ((currPos.x > 0.0 ? 180.0 : -180.0) - currPos.x) / (nextPos.x - currPos.x);
140
+ currPos = mix(currPos, nextPos, t);
141
+ segmentRatio = mix(segmentRatio, nextSegmentRatio, t);
142
+ }
143
+ vec3 currPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, segmentRatio);
144
+ vec3 nextPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, nextSegmentRatio);
145
+ curr = project_position_to_clipspace(currPos, currPos64Low, vec3(0.0), geometry.position);
146
+ next = project_position_to_clipspace(nextPos, nextPos64Low, vec3(0.0));
147
+ } else {
148
+ vec3 source_world = instanceSourcePositions;
149
+ vec3 target_world = instanceTargetPositions;
150
+ if (arc.useShortestPath) {
151
+ source_world.x = mod(source_world.x + 180., 360.0) - 180.;
152
+ target_world.x = mod(target_world.x + 180., 360.0) - 180.;
153
+ float deltaLng = target_world.x - source_world.x;
154
+ if (deltaLng > 180.) target_world.x -= 360.;
155
+ if (deltaLng < -180.) source_world.x -= 360.;
156
+ }
157
+ source = project_position(source_world, instanceSourcePositions64Low);
158
+ target = project_position(target_world, instanceTargetPositions64Low);
159
+ float antiMeridianX = 0.0;
160
+ if (arc.useShortestPath) {
161
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
162
+ antiMeridianX = -(project.coordinateOrigin.x + 180.) / 360. * TILE_SIZE;
163
+ }
164
+ float thresholdRatio = (antiMeridianX - source.x) / (target.x - source.x);
165
+ if (prevSegmentRatio <= thresholdRatio && nextSegmentRatio > thresholdRatio) {
166
+ isValid = 0.0;
167
+ indexDir = sign(segmentRatio - thresholdRatio);
168
+ segmentRatio = thresholdRatio;
169
+ }
170
+ }
171
+ nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;
172
+ vec3 currPos = interpolateFlat(source, target, segmentRatio);
173
+ vec3 nextPos = interpolateFlat(source, target, nextSegmentRatio);
174
+ if (arc.useShortestPath) {
175
+ if (nextPos.x < antiMeridianX) {
176
+ currPos.x += TILE_SIZE;
177
+ nextPos.x += TILE_SIZE;
178
+ }
179
+ }
180
+ curr = project_common_position_to_clipspace(vec4(currPos, 1.0));
181
+ next = project_common_position_to_clipspace(vec4(nextPos, 1.0));
182
+ geometry.position = vec4(currPos, 1.0);
183
+ }
184
+ float widthPixels = clamp(
185
+ project_size_to_pixel(instanceWidths * arc.widthScale, arc.widthUnits),
186
+ arc.widthMinPixels, arc.widthMaxPixels
187
+ );
188
+ vec3 offset = vec3(
189
+ getExtrusionOffset((next.xy - curr.xy) * indexDir, segmentSide, widthPixels),
190
+ 0.0);
191
+ DECKGL_FILTER_SIZE(offset, geometry);
192
+ DECKGL_FILTER_GL_POSITION(curr, geometry);
193
+ gl_Position = curr + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);
194
+ vec4 color = mix(instanceSourceColors, instanceTargetColors, segmentRatio);
195
+ vColor = vec4(color.rgb, color.a * layer.opacity);
196
+ DECKGL_FILTER_COLOR(vColor, geometry);
197
+ }
198
+ `;
199
+
200
+ // deck.gl
201
+ // SPDX-License-Identifier: MIT
202
+ // Copyright (c) vis.gl contributors
203
+ var fs$2 = `\
204
+ #version 300 es
205
+ #define SHADER_NAME arc-layer-fragment-shader
206
+ precision highp float;
207
+ in vec4 vColor;
208
+ in vec2 uv;
209
+ in float isValid;
210
+ out vec4 fragColor;
211
+ void main(void) {
212
+ if (isValid == 0.0) {
213
+ discard;
214
+ }
215
+ fragColor = vColor;
216
+ geometry.uv = uv;
217
+ DECKGL_FILTER_COLOR(fragColor, geometry);
218
+ }
219
+ `;
220
+
221
+ // deck.gl
222
+ // SPDX-License-Identifier: MIT
223
+ // Copyright (c) vis.gl contributors
224
+ const DEFAULT_COLOR$2 = [0, 0, 0, 255];
225
+ const defaultProps$3 = {
226
+ getSourcePosition: { type: 'accessor', value: (x) => x.sourcePosition },
227
+ getTargetPosition: { type: 'accessor', value: (x) => x.targetPosition },
228
+ getSourceColor: { type: 'accessor', value: DEFAULT_COLOR$2 },
229
+ getTargetColor: { type: 'accessor', value: DEFAULT_COLOR$2 },
230
+ getWidth: { type: 'accessor', value: 1 },
231
+ getHeight: { type: 'accessor', value: 1 },
232
+ getTilt: { type: 'accessor', value: 0 },
233
+ greatCircle: false,
234
+ numSegments: { type: 'number', value: 50, min: 1 },
235
+ widthUnits: 'pixels',
236
+ widthScale: { type: 'number', value: 1, min: 0 },
237
+ widthMinPixels: { type: 'number', value: 0, min: 0 },
238
+ widthMaxPixels: { type: 'number', value: Number.MAX_SAFE_INTEGER, min: 0 }
239
+ };
240
+ /** Render raised arcs joining pairs of source and target coordinates. */
241
+ class ArcLayer extends Layer {
242
+ getBounds() {
243
+ return this.getAttributeManager()?.getBounds([
244
+ 'instanceSourcePositions',
245
+ 'instanceTargetPositions'
246
+ ]);
247
+ }
248
+ getShaders() {
249
+ return super.getShaders({ vs: vs$2, fs: fs$2, modules: [project32, picking, arcUniforms] }); // 'project' module added by default.
250
+ }
251
+ // This layer has its own wrapLongitude logic
252
+ get wrapLongitude() {
253
+ return false;
254
+ }
255
+ initializeState() {
256
+ const attributeManager = this.getAttributeManager();
257
+ /* eslint-disable max-len */
258
+ attributeManager.addInstanced({
259
+ instanceSourcePositions: {
260
+ size: 3,
261
+ type: 'float64',
262
+ fp64: this.use64bitPositions(),
263
+ transition: true,
264
+ accessor: 'getSourcePosition'
265
+ },
266
+ instanceTargetPositions: {
267
+ size: 3,
268
+ type: 'float64',
269
+ fp64: this.use64bitPositions(),
270
+ transition: true,
271
+ accessor: 'getTargetPosition'
272
+ },
273
+ instanceSourceColors: {
274
+ size: this.props.colorFormat.length,
275
+ type: 'unorm8',
276
+ transition: true,
277
+ accessor: 'getSourceColor',
278
+ defaultValue: DEFAULT_COLOR$2
279
+ },
280
+ instanceTargetColors: {
281
+ size: this.props.colorFormat.length,
282
+ type: 'unorm8',
283
+ transition: true,
284
+ accessor: 'getTargetColor',
285
+ defaultValue: DEFAULT_COLOR$2
286
+ },
287
+ instanceWidths: {
288
+ size: 1,
289
+ transition: true,
290
+ accessor: 'getWidth',
291
+ defaultValue: 1
292
+ },
293
+ instanceHeights: {
294
+ size: 1,
295
+ transition: true,
296
+ accessor: 'getHeight',
297
+ defaultValue: 1
298
+ },
299
+ instanceTilts: {
300
+ size: 1,
301
+ transition: true,
302
+ accessor: 'getTilt',
303
+ defaultValue: 0
304
+ }
305
+ });
306
+ /* eslint-enable max-len */
307
+ }
308
+ updateState(params) {
309
+ super.updateState(params);
310
+ if (params.changeFlags.extensionsChanged) {
311
+ this.state.model?.destroy();
312
+ this.state.model = this._getModel();
313
+ this.getAttributeManager().invalidateAll();
314
+ }
315
+ }
316
+ draw({ uniforms }) {
317
+ const { widthUnits, widthScale, widthMinPixels, widthMaxPixels, greatCircle, wrapLongitude, numSegments } = this.props;
318
+ const arcProps = {
319
+ numSegments,
320
+ widthUnits: UNIT[widthUnits],
321
+ widthScale,
322
+ widthMinPixels,
323
+ widthMaxPixels,
324
+ greatCircle,
325
+ useShortestPath: wrapLongitude
326
+ };
327
+ const model = this.state.model;
328
+ model.shaderInputs.setProps({ arc: arcProps });
329
+ model.setVertexCount(numSegments * 2);
330
+ model.draw(this.context.renderPass);
331
+ }
332
+ _getModel() {
333
+ return new Model(this.context.device, {
334
+ ...this.getShaders(),
335
+ id: this.props.id,
336
+ bufferLayout: this.getAttributeManager().getBufferLayouts(),
337
+ topology: 'triangle-strip',
338
+ isInstanced: true
339
+ });
340
+ }
341
+ }
342
+ ArcLayer.layerName = 'ArcLayer';
343
+ ArcLayer.defaultProps = defaultProps$3;
344
+
345
+ // deck.gl
346
+ // SPDX-License-Identifier: MIT
347
+ // Copyright (c) vis.gl contributors
348
+ const wgslUniformBlock = /* wgsl */ `\
349
+ struct PointCloudUniforms {
350
+ radiusPixels: f32,
351
+ sizeUnits: i32,
352
+ };
353
+
354
+ @group(0) @binding(3)
355
+ var<uniform> pointCloud: PointCloudUniforms;
356
+ `;
357
+ const glslUniformBlock = `\
358
+ uniform pointCloudUniforms {
359
+ float radiusPixels;
360
+ highp int sizeUnits;
361
+ } pointCloud;
362
+ `;
363
+ const pointCloudUniforms = {
364
+ name: 'pointCloud',
365
+ source: wgslUniformBlock,
366
+ vs: glslUniformBlock,
367
+ fs: glslUniformBlock,
368
+ uniformTypes: {
369
+ radiusPixels: 'f32',
370
+ sizeUnits: 'i32'
371
+ }
372
+ };
373
+
374
+ // deck.gl
375
+ // SPDX-License-Identifier: MIT
376
+ // Copyright (c) vis.gl contributors
377
+ var vs$1 = `\
378
+ #version 300 es
379
+ #define SHADER_NAME point-cloud-layer-vertex-shader
380
+ in vec3 positions;
381
+ in vec3 instanceNormals;
382
+ in vec4 instanceColors;
383
+ in vec3 instancePositions;
384
+ in vec3 instancePositions64Low;
385
+ in vec3 instancePickingColors;
386
+ out vec4 vColor;
387
+ out vec2 unitPosition;
388
+ void main(void) {
389
+ geometry.worldPosition = instancePositions;
390
+ geometry.normal = project_normal(instanceNormals);
391
+ unitPosition = positions.xy;
392
+ geometry.uv = unitPosition;
393
+ geometry.pickingColor = instancePickingColors;
394
+ vec3 offset = vec3(positions.xy * project_size_to_pixel(pointCloud.radiusPixels, pointCloud.sizeUnits), 0.0);
395
+ DECKGL_FILTER_SIZE(offset, geometry);
396
+ gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.), geometry.position);
397
+ DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
398
+ gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);
399
+ vec3 lightColor = lighting_getLightColor(instanceColors.rgb, project.cameraPosition, geometry.position.xyz, geometry.normal);
400
+ vColor = vec4(lightColor, instanceColors.a * layer.opacity);
401
+ DECKGL_FILTER_COLOR(vColor, geometry);
402
+ }
403
+ `;
404
+
405
+ // deck.gl
406
+ // SPDX-License-Identifier: MIT
407
+ // Copyright (c) vis.gl contributors
408
+ var fs$1 = `\
409
+ #version 300 es
410
+ #define SHADER_NAME point-cloud-layer-fragment-shader
411
+ precision highp float;
412
+ in vec4 vColor;
413
+ in vec2 unitPosition;
414
+ out vec4 fragColor;
415
+ void main(void) {
416
+ geometry.uv = unitPosition.xy;
417
+ float distToCenter = length(unitPosition);
418
+ if (distToCenter > 1.0) {
419
+ discard;
420
+ }
421
+ fragColor = vColor;
422
+ DECKGL_FILTER_COLOR(fragColor, geometry);
423
+ }
424
+ `;
425
+
426
+ // deck.gl
427
+ // SPDX-License-Identifier: MIT
428
+ // Copyright (c) vis.gl contributors
429
+ var source = /* wgsl */ `\
430
+ struct ConstantAttributes {
431
+ instanceNormals: vec3<f32>,
432
+ instanceColors: vec4<f32>,
433
+ instancePositions: vec3<f32>,
434
+ instancePositions64Low: vec3<f32>,
435
+ instancePickingColors: vec3<f32>
436
+ };
437
+
438
+ const constants = ConstantAttributes(
439
+ vec3<f32>(1.0, 0.0, 0.0),
440
+ vec4<f32>(0.0, 0.0, 0.0, 1.0),
441
+ vec3<f32>(0.0),
442
+ vec3<f32>(0.0),
443
+ vec3<f32>(0.0)
444
+ );
445
+
446
+ struct Attributes {
447
+ @builtin(instance_index) instanceIndex : u32,
448
+ @builtin(vertex_index) vertexIndex : u32,
449
+ @location(0) positions: vec3<f32>,
450
+ @location(1) instancePositions: vec3<f32>,
451
+ @location(2) instancePositions64Low: vec3<f32>,
452
+ @location(3) instanceNormals: vec3<f32>,
453
+ @location(4) instanceColors: vec4<f32>,
454
+ @location(5) instancePickingColors: vec3<f32>
455
+ };
456
+
457
+ struct Varyings {
458
+ @builtin(position) position: vec4<f32>,
459
+ @location(0) vColor: vec4<f32>,
460
+ @location(1) unitPosition: vec2<f32>,
461
+ };
462
+
463
+ @vertex
464
+ fn vertexMain(attributes: Attributes) -> Varyings {
465
+ var varyings: Varyings;
466
+
467
+ // var geometry: Geometry;
468
+ // geometry.worldPosition = instancePositions;
469
+ // geometry.normal = project_normal(instanceNormals);
470
+
471
+ // position on the containing square in [-1, 1] space
472
+ varyings.unitPosition = attributes.positions.xy;
473
+ geometry.uv = varyings.unitPosition;
474
+ geometry.pickingColor = attributes.instancePickingColors;
475
+
476
+ // Find the center of the point and add the current vertex
477
+ let offset = vec3<f32>(attributes.positions.xy * project_unit_size_to_pixel(pointCloud.radiusPixels, pointCloud.sizeUnits), 0.0);
478
+ // DECKGL_FILTER_SIZE(offset, geometry);
479
+
480
+ varyings.position = project_position_to_clipspace(attributes.instancePositions, attributes.instancePositions64Low, vec3<f32>(0.0)); // TODO , geometry.position);
481
+ // DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
482
+ let clipPixels = project_pixel_size_to_clipspace(offset.xy);
483
+ varyings.position.x += clipPixels.x;
484
+ varyings.position.y += clipPixels.y;
485
+
486
+ // Apply lighting
487
+ let lightColor = lighting_getLightColor2(attributes.instanceColors.rgb, project.cameraPosition, geometry.position.xyz, geometry.normal);
488
+
489
+ // Apply opacity to instance color, or return instance picking color
490
+ varyings.vColor = vec4(lightColor, attributes.instanceColors.a * color.opacity);
491
+ // DECKGL_FILTER_COLOR(vColor, geometry);
492
+
493
+ return varyings;
494
+ }
495
+
496
+ @fragment
497
+ fn fragmentMain(varyings: Varyings) -> @location(0) vec4<f32> {
498
+ // var geometry: Geometry;
499
+ // geometry.uv = unitPosition.xy;
500
+
501
+ let distToCenter = length(varyings.unitPosition);
502
+ if (distToCenter > 1.0) {
503
+ discard;
504
+ }
505
+
506
+ var fragColor: vec4<f32>;
507
+
508
+ fragColor = varyings.vColor;
509
+ // DECKGL_FILTER_COLOR(fragColor, geometry);
510
+
511
+ // Apply premultiplied alpha as required by transparent canvas
512
+ fragColor = deckgl_premultiplied_alpha(fragColor);
513
+
514
+ return fragColor;
515
+ }
516
+ `;
517
+
518
+ // deck.gl
519
+ // SPDX-License-Identifier: MIT
520
+ // Copyright (c) vis.gl contributors
521
+ const DEFAULT_COLOR$1 = [0, 0, 0, 255];
522
+ const DEFAULT_NORMAL = [0, 0, 1];
523
+ const defaultProps$2 = {
524
+ sizeUnits: 'pixels',
525
+ pointSize: { type: 'number', min: 0, value: 10 }, // point radius in pixels
526
+ getPosition: { type: 'accessor', value: (x) => x.position },
527
+ getNormal: { type: 'accessor', value: DEFAULT_NORMAL },
528
+ getColor: { type: 'accessor', value: DEFAULT_COLOR$1 },
529
+ material: true,
530
+ // Depreated
531
+ radiusPixels: { deprecatedFor: 'pointSize' }
532
+ };
533
+ // support loaders.gl point cloud format
534
+ function normalizeData(data) {
535
+ const { header, attributes } = data;
536
+ if (!header || !attributes) {
537
+ return;
538
+ }
539
+ data.length = header.vertexCount;
540
+ if (attributes.POSITION) {
541
+ attributes.instancePositions = attributes.POSITION;
542
+ }
543
+ if (attributes.NORMAL) {
544
+ attributes.instanceNormals = attributes.NORMAL;
545
+ }
546
+ if (attributes.COLOR_0) {
547
+ const { size, value } = attributes.COLOR_0;
548
+ attributes.instanceColors = { size, type: 'unorm8', value };
549
+ }
550
+ }
551
+ /** Render a point cloud with 3D positions, normals and colors. */
552
+ class PointCloudLayer extends Layer {
553
+ getShaders() {
554
+ return super.getShaders({
555
+ vs: vs$1,
556
+ fs: fs$1,
557
+ source,
558
+ modules: [project32, color, gouraudMaterial, picking, pointCloudUniforms]
559
+ });
560
+ }
561
+ initializeState() {
562
+ this.getAttributeManager().addInstanced({
563
+ instancePositions: {
564
+ size: 3,
565
+ type: 'float64',
566
+ fp64: this.use64bitPositions(),
567
+ transition: true,
568
+ accessor: 'getPosition'
569
+ },
570
+ instanceNormals: {
571
+ size: 3,
572
+ transition: true,
573
+ accessor: 'getNormal',
574
+ defaultValue: DEFAULT_NORMAL
575
+ },
576
+ instanceColors: {
577
+ size: this.props.colorFormat.length,
578
+ type: 'unorm8',
579
+ transition: true,
580
+ accessor: 'getColor',
581
+ defaultValue: DEFAULT_COLOR$1
582
+ }
583
+ });
584
+ }
585
+ updateState(params) {
586
+ const { changeFlags, props } = params;
587
+ super.updateState(params);
588
+ if (changeFlags.extensionsChanged) {
589
+ this.state.model?.destroy();
590
+ this.state.model = this._getModel();
591
+ this.getAttributeManager().invalidateAll();
592
+ }
593
+ if (changeFlags.dataChanged) {
594
+ normalizeData(props.data);
595
+ }
596
+ }
597
+ draw({ uniforms }) {
598
+ const { pointSize, sizeUnits } = this.props;
599
+ const model = this.state.model;
600
+ const pointCloudProps = {
601
+ sizeUnits: UNIT[sizeUnits],
602
+ radiusPixels: pointSize
603
+ };
604
+ model.shaderInputs.setProps({ pointCloud: pointCloudProps });
605
+ if (this.context.device.type === 'webgpu') {
606
+ // @ts-expect-error TODO - this line was needed during WebGPU port
607
+ model.instanceCount = this.props.data.length;
608
+ }
609
+ model.draw(this.context.renderPass);
610
+ }
611
+ _getModel() {
612
+ // TODO(ibgreen): WebGPU complication: Matching attachment state of the renderpass requires including a depth buffer
613
+ const parameters = this.context.device.type === 'webgpu'
614
+ ? {
615
+ depthWriteEnabled: true,
616
+ depthCompare: 'less-equal'
617
+ }
618
+ : undefined;
619
+ // a triangle that minimally cover the unit circle
620
+ const positions = [];
621
+ for (let i = 0; i < 3; i++) {
622
+ const angle = (i / 3) * Math.PI * 2;
623
+ positions.push(Math.cos(angle) * 2, Math.sin(angle) * 2, 0);
624
+ }
625
+ return new Model(this.context.device, {
626
+ ...this.getShaders(),
627
+ id: this.props.id,
628
+ bufferLayout: this.getAttributeManager().getBufferLayouts(),
629
+ geometry: new Geometry({
630
+ topology: 'triangle-list',
631
+ attributes: {
632
+ positions: new Float32Array(positions)
633
+ }
634
+ }),
635
+ parameters,
636
+ isInstanced: true
637
+ });
638
+ }
639
+ }
640
+ PointCloudLayer.layerName = 'PointCloudLayer';
641
+ PointCloudLayer.defaultProps = defaultProps$2;
642
+
643
+ // deck.gl
644
+ // SPDX-License-Identifier: MIT
645
+ // Copyright (c) vis.gl contributors
646
+ class ColumnGeometry extends Geometry {
647
+ constructor(props) {
648
+ const { indices, attributes } = tesselateColumn(props);
649
+ super({
650
+ ...props,
651
+ indices,
652
+ // @ts-expect-error
653
+ attributes
654
+ });
655
+ }
656
+ }
657
+ /* eslint-disable max-statements, complexity */
658
+ function tesselateColumn(props) {
659
+ const { radius, height = 1, nradial = 10 } = props;
660
+ let { vertices } = props;
661
+ if (vertices) {
662
+ defaultLogger.assert(vertices.length >= nradial); // `vertices` must contain at least `diskResolution` points
663
+ vertices = vertices.flatMap(v => [v[0], v[1]]);
664
+ modifyPolygonWindingDirection(vertices, WINDING.COUNTER_CLOCKWISE);
665
+ }
666
+ const isExtruded = height > 0;
667
+ const vertsAroundEdge = nradial + 1; // loop
668
+ const numVertices = isExtruded
669
+ ? vertsAroundEdge * 3 + 1 // top, side top edge, side bottom edge, one additional degenerage vertex
670
+ : nradial; // top
671
+ const stepAngle = (Math.PI * 2) / nradial;
672
+ // Used for wireframe
673
+ const indices = new Uint16Array(isExtruded ? nradial * 3 * 2 : 0); // top loop, side vertical, bottom loop
674
+ const positions = new Float32Array(numVertices * 3);
675
+ const normals = new Float32Array(numVertices * 3);
676
+ let i = 0;
677
+ // side tesselation: 0, 1, 2, 3, 4, 5, ...
678
+ //
679
+ // 0 - 2 - 4 ... top
680
+ // | / | / |
681
+ // 1 - 3 - 5 ... bottom
682
+ //
683
+ if (isExtruded) {
684
+ for (let j = 0; j < vertsAroundEdge; j++) {
685
+ const a = j * stepAngle;
686
+ const vertexIndex = j % nradial;
687
+ const sin = Math.sin(a);
688
+ const cos = Math.cos(a);
689
+ for (let k = 0; k < 2; k++) {
690
+ positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;
691
+ positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;
692
+ positions[i + 2] = (1 / 2 - k) * height;
693
+ normals[i + 0] = vertices ? vertices[vertexIndex * 2] : cos;
694
+ normals[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin;
695
+ i += 3;
696
+ }
697
+ }
698
+ // duplicate the last vertex to create proper degenerate triangle.
699
+ positions[i + 0] = positions[i - 3];
700
+ positions[i + 1] = positions[i - 2];
701
+ positions[i + 2] = positions[i - 1];
702
+ i += 3;
703
+ }
704
+ // The column geometry is rendered as a triangle strip, so
705
+ // in order to render sides and top in one go we need to use degenerate triangles.
706
+ // Duplicate last vertex of side trinagles and first vertex of the top cap to preserve winding order.
707
+ // top tesselation: 0, -1, 1, -2, 2, -3, 3, ...
708
+ //
709
+ // 0 -- 1
710
+ // / \
711
+ // -1 2
712
+ // | |
713
+ // -2 3
714
+ // \ /
715
+ // -3 -- 4
716
+ //
717
+ for (let j = isExtruded ? 0 : 1; j < vertsAroundEdge; j++) {
718
+ const v = Math.floor(j / 2) * Math.sign(0.5 - (j % 2));
719
+ const a = v * stepAngle;
720
+ const vertexIndex = (v + nradial) % nradial;
721
+ const sin = Math.sin(a);
722
+ const cos = Math.cos(a);
723
+ positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;
724
+ positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;
725
+ positions[i + 2] = height / 2;
726
+ normals[i + 2] = 1;
727
+ i += 3;
728
+ }
729
+ if (isExtruded) {
730
+ let index = 0;
731
+ for (let j = 0; j < nradial; j++) {
732
+ // top loop
733
+ indices[index++] = j * 2 + 0;
734
+ indices[index++] = j * 2 + 2;
735
+ // side vertical
736
+ indices[index++] = j * 2 + 0;
737
+ indices[index++] = j * 2 + 1;
738
+ // bottom loop
739
+ indices[index++] = j * 2 + 1;
740
+ indices[index++] = j * 2 + 3;
741
+ }
742
+ }
743
+ return {
744
+ indices,
745
+ attributes: {
746
+ POSITION: { size: 3, value: positions },
747
+ NORMAL: { size: 3, value: normals }
748
+ }
749
+ };
750
+ }
751
+
752
+ // deck.gl
753
+ // SPDX-License-Identifier: MIT
754
+ // Copyright (c) vis.gl contributors
755
+ const uniformBlock = `\
756
+ uniform columnUniforms {
757
+ float radius;
758
+ float angle;
759
+ vec2 offset;
760
+ bool extruded;
761
+ bool stroked;
762
+ bool isStroke;
763
+ float coverage;
764
+ float elevationScale;
765
+ float edgeDistance;
766
+ float widthScale;
767
+ float widthMinPixels;
768
+ float widthMaxPixels;
769
+ highp int radiusUnits;
770
+ highp int widthUnits;
771
+ } column;
772
+ `;
773
+ const columnUniforms = {
774
+ name: 'column',
775
+ vs: uniformBlock,
776
+ fs: uniformBlock,
777
+ uniformTypes: {
778
+ radius: 'f32',
779
+ angle: 'f32',
780
+ offset: 'vec2<f32>',
781
+ extruded: 'f32',
782
+ stroked: 'f32',
783
+ isStroke: 'f32',
784
+ coverage: 'f32',
785
+ elevationScale: 'f32',
786
+ edgeDistance: 'f32',
787
+ widthScale: 'f32',
788
+ widthMinPixels: 'f32',
789
+ widthMaxPixels: 'f32',
790
+ radiusUnits: 'i32',
791
+ widthUnits: 'i32'
792
+ }
793
+ };
794
+
795
+ // deck.gl
796
+ // SPDX-License-Identifier: MIT
797
+ // Copyright (c) vis.gl contributors
798
+ var vs = `#version 300 es
799
+ #define SHADER_NAME column-layer-vertex-shader
800
+ in vec3 positions;
801
+ in vec3 normals;
802
+ in vec3 instancePositions;
803
+ in float instanceElevations;
804
+ in vec3 instancePositions64Low;
805
+ in vec4 instanceFillColors;
806
+ in vec4 instanceLineColors;
807
+ in float instanceStrokeWidths;
808
+ in vec3 instancePickingColors;
809
+ out vec4 vColor;
810
+ #ifdef FLAT_SHADING
811
+ out vec3 cameraPosition;
812
+ out vec4 position_commonspace;
813
+ #endif
814
+ void main(void) {
815
+ geometry.worldPosition = instancePositions;
816
+ vec4 color = column.isStroke ? instanceLineColors : instanceFillColors;
817
+ mat2 rotationMatrix = mat2(cos(column.angle), sin(column.angle), -sin(column.angle), cos(column.angle));
818
+ float elevation = 0.0;
819
+ float strokeOffsetRatio = 1.0;
820
+ if (column.extruded) {
821
+ elevation = instanceElevations * (positions.z + 1.0) / 2.0 * column.elevationScale;
822
+ } else if (column.stroked) {
823
+ float widthPixels = clamp(
824
+ project_size_to_pixel(instanceStrokeWidths * column.widthScale, column.widthUnits),
825
+ column.widthMinPixels, column.widthMaxPixels) / 2.0;
826
+ float halfOffset = project_pixel_size(widthPixels) / project_size(column.edgeDistance * column.coverage * column.radius);
827
+ if (column.isStroke) {
828
+ strokeOffsetRatio -= sign(positions.z) * halfOffset;
829
+ } else {
830
+ strokeOffsetRatio -= halfOffset;
831
+ }
832
+ }
833
+ float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);
834
+ float dotRadius = column.radius * column.coverage * shouldRender;
835
+ geometry.pickingColor = instancePickingColors;
836
+ vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);
837
+ vec3 centroidPosition64Low = instancePositions64Low;
838
+ vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + column.offset) * dotRadius;
839
+ if (column.radiusUnits == UNIT_METERS) {
840
+ offset = project_size(offset);
841
+ } else if (column.radiusUnits == UNIT_PIXELS) {
842
+ offset = project_pixel_size(offset);
843
+ }
844
+ vec3 pos = vec3(offset, 0.);
845
+ DECKGL_FILTER_SIZE(pos, geometry);
846
+ gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);
847
+ geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));
848
+ DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
849
+ if (column.extruded && !column.isStroke) {
850
+ #ifdef FLAT_SHADING
851
+ cameraPosition = project.cameraPosition;
852
+ position_commonspace = geometry.position;
853
+ vColor = vec4(color.rgb, color.a * layer.opacity);
854
+ #else
855
+ vec3 lightColor = lighting_getLightColor(color.rgb, project.cameraPosition, geometry.position.xyz, geometry.normal);
856
+ vColor = vec4(lightColor, color.a * layer.opacity);
857
+ #endif
858
+ } else {
859
+ vColor = vec4(color.rgb, color.a * layer.opacity);
860
+ }
861
+ DECKGL_FILTER_COLOR(vColor, geometry);
862
+ }
863
+ `;
864
+
865
+ // deck.gl
866
+ // SPDX-License-Identifier: MIT
867
+ // Copyright (c) vis.gl contributors
868
+ var fs = `#version 300 es
869
+ #define SHADER_NAME column-layer-fragment-shader
870
+ precision highp float;
871
+ out vec4 fragColor;
872
+ in vec4 vColor;
873
+ #ifdef FLAT_SHADING
874
+ in vec3 cameraPosition;
875
+ in vec4 position_commonspace;
876
+ #endif
877
+ void main(void) {
878
+ fragColor = vColor;
879
+ geometry.uv = vec2(0.);
880
+ #ifdef FLAT_SHADING
881
+ if (column.extruded && !column.isStroke && !bool(picking.isActive)) {
882
+ vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));
883
+ fragColor.rgb = lighting_getLightColor(vColor.rgb, cameraPosition, position_commonspace.xyz, normal);
884
+ }
885
+ #endif
886
+ DECKGL_FILTER_COLOR(fragColor, geometry);
887
+ }
888
+ `;
889
+
890
+ // deck.gl
891
+ // SPDX-License-Identifier: MIT
892
+ // Copyright (c) vis.gl contributors
893
+ const DEFAULT_COLOR = [0, 0, 0, 255];
894
+ const defaultProps$1 = {
895
+ diskResolution: { type: 'number', min: 4, value: 20 },
896
+ vertices: null,
897
+ radius: { type: 'number', min: 0, value: 1000 },
898
+ angle: { type: 'number', value: 0 },
899
+ offset: { type: 'array', value: [0, 0] },
900
+ coverage: { type: 'number', min: 0, max: 1, value: 1 },
901
+ elevationScale: { type: 'number', min: 0, value: 1 },
902
+ radiusUnits: 'meters',
903
+ lineWidthUnits: 'meters',
904
+ lineWidthScale: 1,
905
+ lineWidthMinPixels: 0,
906
+ lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
907
+ extruded: true,
908
+ wireframe: false,
909
+ filled: true,
910
+ stroked: false,
911
+ flatShading: false,
912
+ getPosition: { type: 'accessor', value: (x) => x.position },
913
+ getFillColor: { type: 'accessor', value: DEFAULT_COLOR },
914
+ getLineColor: { type: 'accessor', value: DEFAULT_COLOR },
915
+ getLineWidth: { type: 'accessor', value: 1 },
916
+ getElevation: { type: 'accessor', value: 1000 },
917
+ material: true,
918
+ getColor: { deprecatedFor: ['getFillColor', 'getLineColor'] }
919
+ };
920
+ /** Render extruded cylinders (tessellated regular polygons) at given coordinates. */
921
+ class ColumnLayer extends Layer {
922
+ getShaders() {
923
+ const defines = {};
924
+ const { flatShading } = this.props;
925
+ if (flatShading) {
926
+ defines.FLAT_SHADING = 1;
927
+ }
928
+ return super.getShaders({
929
+ vs,
930
+ fs,
931
+ defines,
932
+ modules: [project32, flatShading ? phongMaterial : gouraudMaterial, picking, columnUniforms]
933
+ });
934
+ }
935
+ /**
936
+ * DeckGL calls initializeState when GL context is available
937
+ * Essentially a deferred constructor
938
+ */
939
+ initializeState() {
940
+ const attributeManager = this.getAttributeManager();
941
+ /* eslint-disable max-len */
942
+ attributeManager.addInstanced({
943
+ instancePositions: {
944
+ size: 3,
945
+ type: 'float64',
946
+ fp64: this.use64bitPositions(),
947
+ transition: true,
948
+ accessor: 'getPosition'
949
+ },
950
+ instanceElevations: {
951
+ size: 1,
952
+ transition: true,
953
+ accessor: 'getElevation'
954
+ },
955
+ instanceFillColors: {
956
+ size: this.props.colorFormat.length,
957
+ type: 'unorm8',
958
+ transition: true,
959
+ accessor: 'getFillColor',
960
+ defaultValue: DEFAULT_COLOR
961
+ },
962
+ instanceLineColors: {
963
+ size: this.props.colorFormat.length,
964
+ type: 'unorm8',
965
+ transition: true,
966
+ accessor: 'getLineColor',
967
+ defaultValue: DEFAULT_COLOR
968
+ },
969
+ instanceStrokeWidths: {
970
+ size: 1,
971
+ accessor: 'getLineWidth',
972
+ transition: true
973
+ }
974
+ });
975
+ /* eslint-enable max-len */
976
+ }
977
+ updateState(params) {
978
+ super.updateState(params);
979
+ const { props, oldProps, changeFlags } = params;
980
+ const regenerateModels = changeFlags.extensionsChanged || props.flatShading !== oldProps.flatShading;
981
+ if (regenerateModels) {
982
+ this.state.models?.forEach(model => model.destroy());
983
+ this.setState(this._getModels());
984
+ this.getAttributeManager().invalidateAll();
985
+ }
986
+ const instanceCount = this.getNumInstances();
987
+ this.state.fillModel.setInstanceCount(instanceCount);
988
+ this.state.wireframeModel.setInstanceCount(instanceCount);
989
+ if (regenerateModels ||
990
+ props.diskResolution !== oldProps.diskResolution ||
991
+ props.vertices !== oldProps.vertices ||
992
+ (props.extruded || props.stroked) !== (oldProps.extruded || oldProps.stroked)) {
993
+ this._updateGeometry(props);
994
+ }
995
+ }
996
+ getGeometry(diskResolution, vertices, hasThinkness) {
997
+ const geometry = new ColumnGeometry({
998
+ radius: 1,
999
+ height: hasThinkness ? 2 : 0,
1000
+ vertices,
1001
+ nradial: diskResolution
1002
+ });
1003
+ let meanVertexDistance = 0;
1004
+ if (vertices) {
1005
+ for (let i = 0; i < diskResolution; i++) {
1006
+ const p = vertices[i];
1007
+ const d = Math.sqrt(p[0] * p[0] + p[1] * p[1]);
1008
+ meanVertexDistance += d / diskResolution;
1009
+ }
1010
+ }
1011
+ else {
1012
+ meanVertexDistance = 1;
1013
+ }
1014
+ this.setState({
1015
+ edgeDistance: Math.cos(Math.PI / diskResolution) * meanVertexDistance
1016
+ });
1017
+ return geometry;
1018
+ }
1019
+ _getModels() {
1020
+ const shaders = this.getShaders();
1021
+ const bufferLayout = this.getAttributeManager().getBufferLayouts();
1022
+ const fillModel = new Model(this.context.device, {
1023
+ ...shaders,
1024
+ id: `${this.props.id}-fill`,
1025
+ bufferLayout,
1026
+ isInstanced: true
1027
+ });
1028
+ const wireframeModel = new Model(this.context.device, {
1029
+ ...shaders,
1030
+ id: `${this.props.id}-wireframe`,
1031
+ bufferLayout,
1032
+ isInstanced: true
1033
+ });
1034
+ return {
1035
+ fillModel,
1036
+ wireframeModel,
1037
+ models: [wireframeModel, fillModel]
1038
+ };
1039
+ }
1040
+ _updateGeometry({ diskResolution, vertices, extruded, stroked }) {
1041
+ const geometry = this.getGeometry(diskResolution, vertices, extruded || stroked);
1042
+ this.setState({
1043
+ fillVertexCount: geometry.attributes.POSITION.value.length / 3
1044
+ });
1045
+ const fillModel = this.state.fillModel;
1046
+ const wireframeModel = this.state.wireframeModel;
1047
+ fillModel.setGeometry(geometry);
1048
+ fillModel.setTopology('triangle-strip');
1049
+ // Disable indices
1050
+ fillModel.setIndexBuffer(null);
1051
+ wireframeModel.setGeometry(geometry);
1052
+ wireframeModel.setTopology('line-list');
1053
+ }
1054
+ draw({ uniforms }) {
1055
+ const { lineWidthUnits, lineWidthScale, lineWidthMinPixels, lineWidthMaxPixels, radiusUnits, elevationScale, extruded, filled, stroked, wireframe, offset, coverage, radius, angle } = this.props;
1056
+ const fillModel = this.state.fillModel;
1057
+ const wireframeModel = this.state.wireframeModel;
1058
+ const { fillVertexCount, edgeDistance } = this.state;
1059
+ const columnProps = {
1060
+ radius,
1061
+ angle: (angle / 180) * Math.PI,
1062
+ offset,
1063
+ extruded,
1064
+ stroked,
1065
+ coverage,
1066
+ elevationScale,
1067
+ edgeDistance,
1068
+ radiusUnits: UNIT[radiusUnits],
1069
+ widthUnits: UNIT[lineWidthUnits],
1070
+ widthScale: lineWidthScale,
1071
+ widthMinPixels: lineWidthMinPixels,
1072
+ widthMaxPixels: lineWidthMaxPixels
1073
+ };
1074
+ // When drawing 3d: draw wireframe first so it doesn't get occluded by depth test
1075
+ if (extruded && wireframe) {
1076
+ wireframeModel.shaderInputs.setProps({
1077
+ column: {
1078
+ ...columnProps,
1079
+ isStroke: true
1080
+ }
1081
+ });
1082
+ wireframeModel.draw(this.context.renderPass);
1083
+ }
1084
+ if (filled) {
1085
+ // model.setProps({isIndexed: false});
1086
+ fillModel.setVertexCount(fillVertexCount);
1087
+ fillModel.shaderInputs.setProps({
1088
+ column: {
1089
+ ...columnProps,
1090
+ isStroke: false
1091
+ }
1092
+ });
1093
+ fillModel.draw(this.context.renderPass);
1094
+ }
1095
+ // When drawing 2d: draw fill before stroke so that the outline is always on top
1096
+ if (!extruded && stroked) {
1097
+ // model.setProps({isIndexed: false});
1098
+ // The width of the stroke is achieved by flattening the side of the cylinder.
1099
+ // Skip the last 1/3 of the vertices which is the top.
1100
+ fillModel.setVertexCount((fillVertexCount * 2) / 3);
1101
+ fillModel.shaderInputs.setProps({
1102
+ column: {
1103
+ ...columnProps,
1104
+ isStroke: true
1105
+ }
1106
+ });
1107
+ fillModel.draw(this.context.renderPass);
1108
+ }
1109
+ }
1110
+ }
1111
+ ColumnLayer.layerName = 'ColumnLayer';
1112
+ ColumnLayer.defaultProps = defaultProps$1;
1113
+
1114
+ // deck.gl
1115
+ // SPDX-License-Identifier: MIT
1116
+ // Copyright (c) vis.gl contributors
1117
+ const defaultLineColor = [0, 0, 0, 255];
1118
+ const defaultFillColor = [0, 0, 0, 255];
1119
+ const defaultProps = {
1120
+ stroked: true,
1121
+ filled: true,
1122
+ extruded: false,
1123
+ elevationScale: 1,
1124
+ wireframe: false,
1125
+ _normalize: true,
1126
+ _windingOrder: 'CW',
1127
+ lineWidthUnits: 'meters',
1128
+ lineWidthScale: 1,
1129
+ lineWidthMinPixels: 0,
1130
+ lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
1131
+ lineJointRounded: false,
1132
+ lineMiterLimit: 4,
1133
+ getPolygon: { type: 'accessor', value: (f) => f.polygon },
1134
+ // Polygon fill color
1135
+ getFillColor: { type: 'accessor', value: defaultFillColor },
1136
+ // Point, line and polygon outline color
1137
+ getLineColor: { type: 'accessor', value: defaultLineColor },
1138
+ // Line and polygon outline accessors
1139
+ getLineWidth: { type: 'accessor', value: 1 },
1140
+ // Polygon extrusion accessor
1141
+ getElevation: { type: 'accessor', value: 1000 },
1142
+ // Optional material for 'lighting' shader module
1143
+ material: true
1144
+ };
1145
+ /** A composite layer that renders filled, stroked and/or extruded polygons. */
1146
+ class PolygonLayer extends CompositeLayer {
1147
+ initializeState() {
1148
+ this.state = {
1149
+ paths: [],
1150
+ pathsDiff: null
1151
+ };
1152
+ if (this.props.getLineDashArray) {
1153
+ defaultLogger.removed('getLineDashArray', 'PathStyleExtension')();
1154
+ }
1155
+ }
1156
+ updateState({ changeFlags }) {
1157
+ const geometryChanged = changeFlags.dataChanged ||
1158
+ (changeFlags.updateTriggersChanged &&
1159
+ (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon));
1160
+ if (geometryChanged && Array.isArray(changeFlags.dataChanged)) {
1161
+ const paths = this.state.paths.slice();
1162
+ const pathsDiff = changeFlags.dataChanged.map(dataRange => replaceInRange({
1163
+ data: paths,
1164
+ getIndex: p => p.__source.index,
1165
+ dataRange,
1166
+ replace: this._getPaths(dataRange)
1167
+ }));
1168
+ this.setState({ paths, pathsDiff });
1169
+ }
1170
+ else if (geometryChanged) {
1171
+ this.setState({
1172
+ paths: this._getPaths(),
1173
+ pathsDiff: null
1174
+ });
1175
+ }
1176
+ }
1177
+ _getPaths(dataRange = {}) {
1178
+ const { data, getPolygon, positionFormat, _normalize } = this.props;
1179
+ const paths = [];
1180
+ const positionSize = positionFormat === 'XY' ? 2 : 3;
1181
+ const { startRow, endRow } = dataRange;
1182
+ const { iterable, objectInfo } = createIterable(data, startRow, endRow);
1183
+ for (const object of iterable) {
1184
+ objectInfo.index++;
1185
+ let polygon = getPolygon(object, objectInfo);
1186
+ if (_normalize) {
1187
+ polygon = normalize(polygon, positionSize);
1188
+ }
1189
+ const { holeIndices } = polygon;
1190
+ const positions = polygon.positions || polygon;
1191
+ if (holeIndices) {
1192
+ // split the positions array into `holeIndices.length + 1` rings
1193
+ // holeIndices[-1] falls back to 0
1194
+ // holeIndices[holeIndices.length] falls back to positions.length
1195
+ for (let i = 0; i <= holeIndices.length; i++) {
1196
+ const path = positions.slice(holeIndices[i - 1] || 0, holeIndices[i] || positions.length);
1197
+ paths.push(this.getSubLayerRow({ path }, object, objectInfo.index));
1198
+ }
1199
+ }
1200
+ else {
1201
+ paths.push(this.getSubLayerRow({ path: positions }, object, objectInfo.index));
1202
+ }
1203
+ }
1204
+ return paths;
1205
+ }
1206
+ /* eslint-disable complexity */
1207
+ renderLayers() {
1208
+ // Layer composition props
1209
+ const { data, _dataDiff, stroked, filled, extruded, wireframe, _normalize, _windingOrder, elevationScale, transitions, positionFormat } = this.props;
1210
+ // Rendering props underlying layer
1211
+ const { lineWidthUnits, lineWidthScale, lineWidthMinPixels, lineWidthMaxPixels, lineJointRounded, lineMiterLimit, lineDashJustified } = this.props;
1212
+ // Accessor props for underlying layers
1213
+ const { getFillColor, getLineColor, getLineWidth, getLineDashArray, getElevation, getPolygon, updateTriggers, material } = this.props;
1214
+ const { paths, pathsDiff } = this.state;
1215
+ const FillLayer = this.getSubLayerClass('fill', SolidPolygonLayer);
1216
+ const StrokeLayer = this.getSubLayerClass('stroke', PathLayer);
1217
+ // Filled Polygon Layer
1218
+ const polygonLayer = this.shouldRenderSubLayer('fill', paths) &&
1219
+ new FillLayer({
1220
+ _dataDiff,
1221
+ extruded,
1222
+ elevationScale,
1223
+ filled,
1224
+ wireframe,
1225
+ _normalize,
1226
+ _windingOrder,
1227
+ getElevation,
1228
+ getFillColor,
1229
+ getLineColor: extruded && wireframe ? getLineColor : defaultLineColor,
1230
+ material,
1231
+ transitions
1232
+ }, this.getSubLayerProps({
1233
+ id: 'fill',
1234
+ updateTriggers: updateTriggers && {
1235
+ getPolygon: updateTriggers.getPolygon,
1236
+ getElevation: updateTriggers.getElevation,
1237
+ getFillColor: updateTriggers.getFillColor,
1238
+ // using a legacy API to invalid lineColor attributes
1239
+ // if (extruded && wireframe) has changed
1240
+ lineColors: extruded && wireframe,
1241
+ getLineColor: updateTriggers.getLineColor
1242
+ }
1243
+ }), {
1244
+ data,
1245
+ positionFormat,
1246
+ getPolygon
1247
+ });
1248
+ // Polygon line layer
1249
+ const polygonLineLayer = !extruded &&
1250
+ stroked &&
1251
+ this.shouldRenderSubLayer('stroke', paths) &&
1252
+ new StrokeLayer({
1253
+ _dataDiff: pathsDiff && (() => pathsDiff),
1254
+ widthUnits: lineWidthUnits,
1255
+ widthScale: lineWidthScale,
1256
+ widthMinPixels: lineWidthMinPixels,
1257
+ widthMaxPixels: lineWidthMaxPixels,
1258
+ jointRounded: lineJointRounded,
1259
+ miterLimit: lineMiterLimit,
1260
+ dashJustified: lineDashJustified,
1261
+ // Already normalized
1262
+ _pathType: 'loop',
1263
+ transitions: transitions && {
1264
+ getWidth: transitions.getLineWidth,
1265
+ getColor: transitions.getLineColor,
1266
+ getPath: transitions.getPolygon
1267
+ },
1268
+ getColor: this.getSubLayerAccessor(getLineColor),
1269
+ getWidth: this.getSubLayerAccessor(getLineWidth),
1270
+ getDashArray: this.getSubLayerAccessor(getLineDashArray)
1271
+ }, this.getSubLayerProps({
1272
+ id: 'stroke',
1273
+ updateTriggers: updateTriggers && {
1274
+ getWidth: updateTriggers.getLineWidth,
1275
+ getColor: updateTriggers.getLineColor,
1276
+ getDashArray: updateTriggers.getLineDashArray
1277
+ }
1278
+ }), {
1279
+ data: paths,
1280
+ positionFormat,
1281
+ getPath: x => x.path
1282
+ });
1283
+ return [
1284
+ // If not extruded: flat fill layer is drawn below outlines
1285
+ !extruded && polygonLayer,
1286
+ polygonLineLayer,
1287
+ // If extruded: draw fill layer last for correct blending behavior
1288
+ extruded && polygonLayer
1289
+ ];
1290
+ }
1291
+ }
1292
+ PolygonLayer.layerName = 'PolygonLayer';
1293
+ PolygonLayer.defaultProps = defaultProps;
1294
+
1295
+ export { ArcLayer as A, ColumnLayer as C, PointCloudLayer as P, PolygonLayer as a };