@deck.gl/carto 9.0.0-beta.1 → 9.0.0-beta.11

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 (502) hide show
  1. package/{typed → dist}/api/carto-api-error.d.ts +1 -1
  2. package/dist/api/carto-api-error.d.ts.map +1 -0
  3. package/dist/api/carto-api-error.js +47 -0
  4. package/{typed → dist}/api/common.d.ts +2 -2
  5. package/{typed → dist}/api/common.d.ts.map +1 -1
  6. package/dist/{esm/api → api}/common.js +6 -6
  7. package/{typed → dist}/api/endpoints.d.ts +1 -1
  8. package/dist/api/endpoints.d.ts.map +1 -0
  9. package/dist/api/endpoints.js +22 -0
  10. package/{typed → dist}/api/fetch-map.d.ts.map +1 -1
  11. package/dist/api/fetch-map.js +196 -0
  12. package/dist/api/index.d.ts +7 -0
  13. package/dist/api/index.d.ts.map +1 -0
  14. package/dist/api/index.js +3 -0
  15. package/{typed → dist}/api/layer-map.d.ts +6 -6
  16. package/dist/api/layer-map.d.ts.map +1 -0
  17. package/dist/api/layer-map.js +373 -0
  18. package/dist/api/parse-map.js +250 -0
  19. package/{typed → dist}/api/query.d.ts +1 -1
  20. package/dist/api/query.d.ts.map +1 -0
  21. package/dist/api/query.js +24 -0
  22. package/dist/api/request-with-parameters.d.ts +8 -0
  23. package/dist/api/request-with-parameters.d.ts.map +1 -0
  24. package/dist/api/request-with-parameters.js +50 -0
  25. package/{typed → dist}/api/types.d.ts +18 -1
  26. package/dist/api/types.d.ts.map +1 -0
  27. package/dist/api/types.js +20 -0
  28. package/dist/basemap.js +9 -0
  29. package/dist/cartoRasterTile-worker.js +22 -58
  30. package/dist/cartoSpatialTile-worker.js +19 -52
  31. package/dist/cartoVectorTile-worker.js +19 -52
  32. package/dist/constants.d.ts +5 -0
  33. package/dist/constants.d.ts.map +1 -0
  34. package/dist/constants.js +4 -0
  35. package/dist/dist.dev.js +2001 -1714
  36. package/dist/index.cjs +2721 -0
  37. package/dist/index.cjs.map +7 -0
  38. package/dist/index.d.ts +37 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +34 -0
  41. package/{typed → dist}/layers/h3-tile-layer.d.ts +2 -2
  42. package/dist/layers/h3-tile-layer.d.ts.map +1 -0
  43. package/dist/layers/h3-tile-layer.js +66 -0
  44. package/{typed → dist}/layers/h3-tileset-2d.d.ts +4 -1
  45. package/dist/layers/h3-tileset-2d.d.ts.map +1 -0
  46. package/dist/layers/h3-tileset-2d.js +120 -0
  47. package/dist/layers/point-label-layer.js +150 -0
  48. package/dist/layers/quadbin-layer.js +21 -0
  49. package/{typed → dist}/layers/quadbin-tile-layer.d.ts +3 -3
  50. package/dist/layers/quadbin-tile-layer.d.ts.map +1 -0
  51. package/dist/layers/quadbin-tile-layer.js +49 -0
  52. package/dist/layers/quadbin-tileset-2d.js +27 -0
  53. package/dist/layers/quadbin-utils.js +21 -0
  54. package/dist/layers/raster-layer-vertex.glsl.d.ts +3 -0
  55. package/dist/layers/raster-layer-vertex.glsl.js +68 -0
  56. package/{typed → dist}/layers/raster-layer.d.ts.map +1 -1
  57. package/dist/layers/raster-layer.js +95 -0
  58. package/{typed → dist}/layers/raster-tile-layer.d.ts +3 -3
  59. package/dist/layers/raster-tile-layer.d.ts.map +1 -0
  60. package/dist/layers/raster-tile-layer.js +45 -0
  61. package/dist/layers/schema/carto-properties-tile-loader.js +21 -0
  62. package/{typed → dist}/layers/schema/carto-properties-tile.d.ts +1 -1
  63. package/dist/layers/schema/carto-properties-tile.d.ts.map +1 -0
  64. package/dist/layers/schema/carto-properties-tile.js +14 -0
  65. package/{typed → dist}/layers/schema/carto-raster-tile-loader.d.ts +3 -3
  66. package/dist/layers/schema/carto-raster-tile-loader.d.ts.map +1 -0
  67. package/dist/layers/schema/carto-raster-tile-loader.js +35 -0
  68. package/{typed → dist}/layers/schema/carto-raster-tile.d.ts.map +1 -1
  69. package/dist/layers/schema/carto-raster-tile.js +44 -0
  70. package/dist/layers/schema/carto-spatial-tile-loader.js +35 -0
  71. package/{typed → dist}/layers/schema/carto-spatial-tile.d.ts +2 -2
  72. package/dist/layers/schema/carto-spatial-tile.d.ts.map +1 -0
  73. package/dist/layers/schema/carto-spatial-tile.js +38 -0
  74. package/dist/layers/schema/carto-tile.js +187 -0
  75. package/dist/layers/schema/carto-vector-tile-loader.js +65 -0
  76. package/dist/layers/schema/fast-pbf.js +7 -0
  77. package/dist/layers/schema/spatialjson-utils.js +15 -0
  78. package/dist/layers/schema/tile-loader-utils.js +6 -0
  79. package/{typed → dist}/layers/spatial-index-tile-layer.d.ts +1 -1
  80. package/{typed → dist}/layers/spatial-index-tile-layer.d.ts.map +1 -1
  81. package/dist/layers/spatial-index-tile-layer.js +67 -0
  82. package/{typed → dist}/layers/utils.d.ts +3 -3
  83. package/dist/layers/utils.d.ts.map +1 -0
  84. package/dist/layers/utils.js +74 -0
  85. package/{typed → dist}/layers/vector-tile-layer.d.ts +6 -5
  86. package/dist/layers/vector-tile-layer.d.ts.map +1 -0
  87. package/dist/layers/vector-tile-layer.js +106 -0
  88. package/{typed → dist}/sources/base-source.d.ts +2 -2
  89. package/dist/sources/base-source.d.ts.map +1 -0
  90. package/dist/sources/base-source.js +56 -0
  91. package/dist/sources/boundary-query-source.d.ts +11 -0
  92. package/dist/sources/boundary-query-source.d.ts.map +1 -0
  93. package/dist/sources/boundary-query-source.js +19 -0
  94. package/{typed → dist}/sources/boundary-table-source.d.ts +2 -2
  95. package/dist/sources/boundary-table-source.d.ts.map +1 -0
  96. package/dist/sources/boundary-table-source.js +16 -0
  97. package/{typed → dist}/sources/h3-query-source.d.ts +1 -1
  98. package/dist/sources/h3-query-source.d.ts.map +1 -0
  99. package/dist/sources/h3-query-source.js +19 -0
  100. package/{typed → dist}/sources/h3-table-source.d.ts +1 -1
  101. package/dist/sources/h3-table-source.d.ts.map +1 -0
  102. package/dist/sources/h3-table-source.js +16 -0
  103. package/{typed → dist}/sources/h3-tileset-source.d.ts +1 -1
  104. package/dist/sources/h3-tileset-source.d.ts.map +1 -0
  105. package/dist/sources/h3-tileset-source.js +6 -0
  106. package/dist/sources/index.d.ts +28 -0
  107. package/dist/sources/index.d.ts.map +1 -0
  108. package/dist/sources/index.js +13 -0
  109. package/{typed → dist}/sources/quadbin-query-source.d.ts +1 -1
  110. package/dist/sources/quadbin-query-source.d.ts.map +1 -0
  111. package/dist/sources/quadbin-query-source.js +19 -0
  112. package/{typed → dist}/sources/quadbin-table-source.d.ts +1 -1
  113. package/dist/sources/quadbin-table-source.d.ts.map +1 -0
  114. package/dist/sources/quadbin-table-source.js +16 -0
  115. package/{typed → dist}/sources/quadbin-tileset-source.d.ts +1 -1
  116. package/{typed → dist}/sources/quadbin-tileset-source.d.ts.map +1 -1
  117. package/dist/sources/quadbin-tileset-source.js +6 -0
  118. package/{typed → dist}/sources/raster-source.d.ts +1 -1
  119. package/dist/sources/raster-source.d.ts.map +1 -0
  120. package/dist/sources/raster-source.js +6 -0
  121. package/{typed → dist}/sources/types.d.ts +45 -7
  122. package/dist/sources/types.d.ts.map +1 -0
  123. package/dist/sources/types.js +1 -0
  124. package/dist/sources/vector-query-source.d.ts +4 -0
  125. package/dist/sources/vector-query-source.d.ts.map +1 -0
  126. package/dist/sources/vector-query-source.js +22 -0
  127. package/dist/sources/vector-table-source.d.ts +4 -0
  128. package/dist/sources/vector-table-source.d.ts.map +1 -0
  129. package/dist/sources/vector-table-source.js +19 -0
  130. package/{typed → dist}/sources/vector-tileset-source.d.ts +1 -1
  131. package/{typed → dist}/sources/vector-tileset-source.d.ts.map +1 -1
  132. package/dist/sources/vector-tileset-source.js +6 -0
  133. package/{typed → dist}/style/color-bins-style.d.ts +2 -2
  134. package/dist/style/color-bins-style.d.ts.map +1 -0
  135. package/dist/style/color-bins-style.js +21 -0
  136. package/{typed → dist}/style/color-categories-style.d.ts +2 -2
  137. package/dist/style/color-categories-style.d.ts.map +1 -0
  138. package/dist/style/color-categories-style.js +25 -0
  139. package/{typed → dist}/style/color-continuous-style.d.ts +2 -2
  140. package/dist/style/color-continuous-style.d.ts.map +1 -0
  141. package/dist/style/color-continuous-style.js +21 -0
  142. package/dist/style/palette.js +62 -0
  143. package/dist/style/utils.js +11 -0
  144. package/{typed → dist}/utils.d.ts +1 -1
  145. package/dist/utils.d.ts.map +1 -0
  146. package/dist/utils.js +45 -0
  147. package/dist/workers/cartoRasterTile.js +3 -0
  148. package/dist/workers/cartoSpatialTile.js +3 -0
  149. package/dist/workers/cartoVectorTile.js +3 -0
  150. package/dist.min.js +50 -94
  151. package/package.json +31 -26
  152. package/src/api/common.ts +5 -3
  153. package/src/api/fetch-map.ts +13 -4
  154. package/src/api/query.ts +1 -1
  155. package/src/api/request-with-parameters.ts +46 -38
  156. package/src/api/types.ts +20 -0
  157. package/src/constants.ts +5 -0
  158. package/src/index.ts +11 -7
  159. package/src/layers/h3-tile-layer.ts +5 -3
  160. package/src/layers/h3-tileset-2d.ts +56 -26
  161. package/src/layers/quadbin-tile-layer.ts +3 -1
  162. package/src/layers/raster-layer-vertex.glsl.ts +2 -2
  163. package/src/layers/raster-layer.ts +10 -16
  164. package/src/layers/raster-tile-layer.ts +3 -1
  165. package/src/layers/schema/carto-raster-tile-loader.ts +5 -5
  166. package/src/layers/schema/carto-raster-tile.ts +3 -4
  167. package/src/layers/spatial-index-tile-layer.ts +7 -3
  168. package/src/layers/vector-tile-layer.ts +19 -8
  169. package/src/sources/base-source.ts +9 -5
  170. package/src/sources/boundary-query-source.ts +27 -9
  171. package/src/sources/boundary-table-source.ts +13 -8
  172. package/src/sources/h3-query-source.ts +2 -1
  173. package/src/sources/h3-table-source.ts +2 -6
  174. package/src/sources/index.ts +7 -0
  175. package/src/sources/quadbin-query-source.ts +2 -1
  176. package/src/sources/quadbin-table-source.ts +2 -6
  177. package/src/sources/types.ts +49 -7
  178. package/src/sources/vector-query-source.ts +38 -4
  179. package/src/sources/vector-table-source.ts +32 -4
  180. package/src/utils.ts +5 -1
  181. package/dist/es5/api/carto-api-error.js +0 -83
  182. package/dist/es5/api/carto-api-error.js.map +0 -1
  183. package/dist/es5/api/common.js +0 -25
  184. package/dist/es5/api/common.js.map +0 -1
  185. package/dist/es5/api/endpoints.js +0 -61
  186. package/dist/es5/api/endpoints.js.map +0 -1
  187. package/dist/es5/api/fetch-map.js +0 -566
  188. package/dist/es5/api/fetch-map.js.map +0 -1
  189. package/dist/es5/api/index.js +0 -30
  190. package/dist/es5/api/index.js.map +0 -1
  191. package/dist/es5/api/layer-map.js +0 -634
  192. package/dist/es5/api/layer-map.js.map +0 -1
  193. package/dist/es5/api/parse-map.js +0 -347
  194. package/dist/es5/api/parse-map.js.map +0 -1
  195. package/dist/es5/api/query.js +0 -81
  196. package/dist/es5/api/query.js.map +0 -1
  197. package/dist/es5/api/request-with-parameters.js +0 -150
  198. package/dist/es5/api/request-with-parameters.js.map +0 -1
  199. package/dist/es5/api/types.js +0 -21
  200. package/dist/es5/api/types.js.map +0 -1
  201. package/dist/es5/basemap.js +0 -17
  202. package/dist/es5/basemap.js.map +0 -1
  203. package/dist/es5/index.js +0 -205
  204. package/dist/es5/index.js.map +0 -1
  205. package/dist/es5/layers/h3-tile-layer.js +0 -128
  206. package/dist/es5/layers/h3-tile-layer.js.map +0 -1
  207. package/dist/es5/layers/h3-tileset-2d.js +0 -172
  208. package/dist/es5/layers/h3-tileset-2d.js.map +0 -1
  209. package/dist/es5/layers/point-label-layer.js +0 -263
  210. package/dist/es5/layers/point-label-layer.js.map +0 -1
  211. package/dist/es5/layers/quadbin-layer.js +0 -72
  212. package/dist/es5/layers/quadbin-layer.js.map +0 -1
  213. package/dist/es5/layers/quadbin-tile-layer.js +0 -103
  214. package/dist/es5/layers/quadbin-tile-layer.js.map +0 -1
  215. package/dist/es5/layers/quadbin-tileset-2d.js +0 -76
  216. package/dist/es5/layers/quadbin-tileset-2d.js.map +0 -1
  217. package/dist/es5/layers/quadbin-utils.js +0 -60
  218. package/dist/es5/layers/quadbin-utils.js.map +0 -1
  219. package/dist/es5/layers/raster-layer-vertex.glsl.js +0 -9
  220. package/dist/es5/layers/raster-layer-vertex.glsl.js.map +0 -1
  221. package/dist/es5/layers/raster-layer.js +0 -174
  222. package/dist/es5/layers/raster-layer.js.map +0 -1
  223. package/dist/es5/layers/raster-tile-layer.js +0 -91
  224. package/dist/es5/layers/raster-tile-layer.js.map +0 -1
  225. package/dist/es5/layers/schema/carto-properties-tile-loader.js +0 -60
  226. package/dist/es5/layers/schema/carto-properties-tile-loader.js.map +0 -1
  227. package/dist/es5/layers/schema/carto-properties-tile.js +0 -38
  228. package/dist/es5/layers/schema/carto-properties-tile.js.map +0 -1
  229. package/dist/es5/layers/schema/carto-raster-tile-loader.js +0 -89
  230. package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +0 -1
  231. package/dist/es5/layers/schema/carto-raster-tile.js +0 -79
  232. package/dist/es5/layers/schema/carto-raster-tile.js.map +0 -1
  233. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +0 -81
  234. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +0 -1
  235. package/dist/es5/layers/schema/carto-spatial-tile.js +0 -80
  236. package/dist/es5/layers/schema/carto-spatial-tile.js.map +0 -1
  237. package/dist/es5/layers/schema/carto-tile.js +0 -269
  238. package/dist/es5/layers/schema/carto-tile.js.map +0 -1
  239. package/dist/es5/layers/schema/carto-vector-tile-loader.js +0 -120
  240. package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +0 -1
  241. package/dist/es5/layers/schema/fast-pbf.js +0 -14
  242. package/dist/es5/layers/schema/fast-pbf.js.map +0 -1
  243. package/dist/es5/layers/schema/spatialjson-utils.js +0 -42
  244. package/dist/es5/layers/schema/spatialjson-utils.js.map +0 -1
  245. package/dist/es5/layers/schema/tile-loader-utils.js +0 -17
  246. package/dist/es5/layers/schema/tile-loader-utils.js.map +0 -1
  247. package/dist/es5/layers/spatial-index-tile-layer.js +0 -126
  248. package/dist/es5/layers/spatial-index-tile-layer.js.map +0 -1
  249. package/dist/es5/layers/utils.js +0 -131
  250. package/dist/es5/layers/utils.js.map +0 -1
  251. package/dist/es5/layers/vector-tile-layer.js +0 -248
  252. package/dist/es5/layers/vector-tile-layer.js.map +0 -1
  253. package/dist/es5/sources/base-source.js +0 -128
  254. package/dist/es5/sources/base-source.js.map +0 -1
  255. package/dist/es5/sources/boundary-query-source.js +0 -51
  256. package/dist/es5/sources/boundary-query-source.js.map +0 -1
  257. package/dist/es5/sources/boundary-table-source.js +0 -51
  258. package/dist/es5/sources/boundary-table-source.js.map +0 -1
  259. package/dist/es5/sources/h3-query-source.js +0 -56
  260. package/dist/es5/sources/h3-query-source.js.map +0 -1
  261. package/dist/es5/sources/h3-table-source.js +0 -56
  262. package/dist/es5/sources/h3-table-source.js.map +0 -1
  263. package/dist/es5/sources/h3-tileset-source.js +0 -43
  264. package/dist/es5/sources/h3-tileset-source.js.map +0 -1
  265. package/dist/es5/sources/index.js +0 -110
  266. package/dist/es5/sources/index.js.map +0 -1
  267. package/dist/es5/sources/quadbin-query-source.js +0 -56
  268. package/dist/es5/sources/quadbin-query-source.js.map +0 -1
  269. package/dist/es5/sources/quadbin-table-source.js +0 -56
  270. package/dist/es5/sources/quadbin-table-source.js.map +0 -1
  271. package/dist/es5/sources/quadbin-tileset-source.js +0 -43
  272. package/dist/es5/sources/quadbin-tileset-source.js.map +0 -1
  273. package/dist/es5/sources/raster-source.js +0 -43
  274. package/dist/es5/sources/raster-source.js.map +0 -1
  275. package/dist/es5/sources/types.js +0 -2
  276. package/dist/es5/sources/types.js.map +0 -1
  277. package/dist/es5/sources/vector-query-source.js +0 -51
  278. package/dist/es5/sources/vector-query-source.js.map +0 -1
  279. package/dist/es5/sources/vector-table-source.js +0 -51
  280. package/dist/es5/sources/vector-table-source.js.map +0 -1
  281. package/dist/es5/sources/vector-tileset-source.js +0 -43
  282. package/dist/es5/sources/vector-tileset-source.js.map +0 -1
  283. package/dist/es5/style/color-bins-style.js +0 -37
  284. package/dist/es5/style/color-bins-style.js.map +0 -1
  285. package/dist/es5/style/color-categories-style.js +0 -65
  286. package/dist/es5/style/color-categories-style.js.map +0 -1
  287. package/dist/es5/style/color-continuous-style.js +0 -37
  288. package/dist/es5/style/color-continuous-style.js.map +0 -1
  289. package/dist/es5/style/palette.js +0 -81
  290. package/dist/es5/style/palette.js.map +0 -1
  291. package/dist/es5/style/utils.js +0 -28
  292. package/dist/es5/style/utils.js.map +0 -1
  293. package/dist/es5/utils.js +0 -65
  294. package/dist/es5/utils.js.map +0 -1
  295. package/dist/es5/workers/cartoRasterTile.js +0 -10
  296. package/dist/es5/workers/cartoRasterTile.js.map +0 -1
  297. package/dist/es5/workers/cartoSpatialTile.js +0 -10
  298. package/dist/es5/workers/cartoSpatialTile.js.map +0 -1
  299. package/dist/es5/workers/cartoVectorTile.js +0 -10
  300. package/dist/es5/workers/cartoVectorTile.js.map +0 -1
  301. package/dist/esm/api/carto-api-error.js +0 -46
  302. package/dist/esm/api/carto-api-error.js.map +0 -1
  303. package/dist/esm/api/common.js.map +0 -1
  304. package/dist/esm/api/endpoints.js +0 -41
  305. package/dist/esm/api/endpoints.js.map +0 -1
  306. package/dist/esm/api/fetch-map.js +0 -298
  307. package/dist/esm/api/fetch-map.js.map +0 -1
  308. package/dist/esm/api/index.js +0 -4
  309. package/dist/esm/api/index.js.map +0 -1
  310. package/dist/esm/api/layer-map.js +0 -520
  311. package/dist/esm/api/layer-map.js.map +0 -1
  312. package/dist/esm/api/parse-map.js +0 -343
  313. package/dist/esm/api/parse-map.js.map +0 -1
  314. package/dist/esm/api/query.js +0 -40
  315. package/dist/esm/api/query.js.map +0 -1
  316. package/dist/esm/api/request-with-parameters.js +0 -82
  317. package/dist/esm/api/request-with-parameters.js.map +0 -1
  318. package/dist/esm/api/types.js +0 -14
  319. package/dist/esm/api/types.js.map +0 -1
  320. package/dist/esm/basemap.js +0 -10
  321. package/dist/esm/basemap.js.map +0 -1
  322. package/dist/esm/index.js +0 -35
  323. package/dist/esm/index.js.map +0 -1
  324. package/dist/esm/layers/h3-tile-layer.js +0 -77
  325. package/dist/esm/layers/h3-tile-layer.js.map +0 -1
  326. package/dist/esm/layers/h3-tileset-2d.js +0 -119
  327. package/dist/esm/layers/h3-tileset-2d.js.map +0 -1
  328. package/dist/esm/layers/point-label-layer.js +0 -194
  329. package/dist/esm/layers/point-label-layer.js.map +0 -1
  330. package/dist/esm/layers/quadbin-layer.js +0 -31
  331. package/dist/esm/layers/quadbin-layer.js.map +0 -1
  332. package/dist/esm/layers/quadbin-tile-layer.js +0 -51
  333. package/dist/esm/layers/quadbin-tile-layer.js.map +0 -1
  334. package/dist/esm/layers/quadbin-tileset-2d.js +0 -39
  335. package/dist/esm/layers/quadbin-tileset-2d.js.map +0 -1
  336. package/dist/esm/layers/quadbin-utils.js +0 -23
  337. package/dist/esm/layers/quadbin-utils.js.map +0 -1
  338. package/dist/esm/layers/raster-layer-vertex.glsl.js +0 -99
  339. package/dist/esm/layers/raster-layer-vertex.glsl.js.map +0 -1
  340. package/dist/esm/layers/raster-layer.js +0 -108
  341. package/dist/esm/layers/raster-layer.js.map +0 -1
  342. package/dist/esm/layers/raster-tile-layer.js +0 -48
  343. package/dist/esm/layers/raster-tile-layer.js.map +0 -1
  344. package/dist/esm/layers/schema/carto-properties-tile-loader.js +0 -23
  345. package/dist/esm/layers/schema/carto-properties-tile-loader.js.map +0 -1
  346. package/dist/esm/layers/schema/carto-properties-tile.js +0 -18
  347. package/dist/esm/layers/schema/carto-properties-tile.js.map +0 -1
  348. package/dist/esm/layers/schema/carto-raster-tile-loader.js +0 -54
  349. package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +0 -1
  350. package/dist/esm/layers/schema/carto-raster-tile.js +0 -51
  351. package/dist/esm/layers/schema/carto-raster-tile.js.map +0 -1
  352. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +0 -44
  353. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +0 -1
  354. package/dist/esm/layers/schema/carto-spatial-tile.js +0 -47
  355. package/dist/esm/layers/schema/carto-spatial-tile.js.map +0 -1
  356. package/dist/esm/layers/schema/carto-tile.js +0 -197
  357. package/dist/esm/layers/schema/carto-tile.js.map +0 -1
  358. package/dist/esm/layers/schema/carto-vector-tile-loader.js +0 -82
  359. package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +0 -1
  360. package/dist/esm/layers/schema/fast-pbf.js +0 -7
  361. package/dist/esm/layers/schema/fast-pbf.js.map +0 -1
  362. package/dist/esm/layers/schema/spatialjson-utils.js +0 -27
  363. package/dist/esm/layers/schema/spatialjson-utils.js.map +0 -1
  364. package/dist/esm/layers/schema/tile-loader-utils.js +0 -7
  365. package/dist/esm/layers/schema/tile-loader-utils.js.map +0 -1
  366. package/dist/esm/layers/spatial-index-tile-layer.js +0 -86
  367. package/dist/esm/layers/spatial-index-tile-layer.js.map +0 -1
  368. package/dist/esm/layers/utils.js +0 -85
  369. package/dist/esm/layers/utils.js.map +0 -1
  370. package/dist/esm/layers/vector-tile-layer.js +0 -143
  371. package/dist/esm/layers/vector-tile-layer.js.map +0 -1
  372. package/dist/esm/sources/base-source.js +0 -72
  373. package/dist/esm/sources/base-source.js.map +0 -1
  374. package/dist/esm/sources/boundary-query-source.js +0 -21
  375. package/dist/esm/sources/boundary-query-source.js.map +0 -1
  376. package/dist/esm/sources/boundary-table-source.js +0 -21
  377. package/dist/esm/sources/boundary-table-source.js.map +0 -1
  378. package/dist/esm/sources/h3-query-source.js +0 -27
  379. package/dist/esm/sources/h3-query-source.js.map +0 -1
  380. package/dist/esm/sources/h3-table-source.js +0 -27
  381. package/dist/esm/sources/h3-table-source.js.map +0 -1
  382. package/dist/esm/sources/h3-tileset-source.js +0 -11
  383. package/dist/esm/sources/h3-tileset-source.js.map +0 -1
  384. package/dist/esm/sources/index.js +0 -14
  385. package/dist/esm/sources/index.js.map +0 -1
  386. package/dist/esm/sources/quadbin-query-source.js +0 -27
  387. package/dist/esm/sources/quadbin-query-source.js.map +0 -1
  388. package/dist/esm/sources/quadbin-table-source.js +0 -27
  389. package/dist/esm/sources/quadbin-table-source.js.map +0 -1
  390. package/dist/esm/sources/quadbin-tileset-source.js +0 -11
  391. package/dist/esm/sources/quadbin-tileset-source.js.map +0 -1
  392. package/dist/esm/sources/raster-source.js +0 -11
  393. package/dist/esm/sources/raster-source.js.map +0 -1
  394. package/dist/esm/sources/types.js +0 -2
  395. package/dist/esm/sources/types.js.map +0 -1
  396. package/dist/esm/sources/vector-query-source.js +0 -20
  397. package/dist/esm/sources/vector-query-source.js.map +0 -1
  398. package/dist/esm/sources/vector-table-source.js +0 -20
  399. package/dist/esm/sources/vector-table-source.js.map +0 -1
  400. package/dist/esm/sources/vector-tileset-source.js +0 -11
  401. package/dist/esm/sources/vector-tileset-source.js.map +0 -1
  402. package/dist/esm/style/color-bins-style.js +0 -19
  403. package/dist/esm/style/color-bins-style.js.map +0 -1
  404. package/dist/esm/style/color-categories-style.js +0 -24
  405. package/dist/esm/style/color-categories-style.js.map +0 -1
  406. package/dist/esm/style/color-continuous-style.js +0 -19
  407. package/dist/esm/style/color-continuous-style.js.map +0 -1
  408. package/dist/esm/style/palette.js +0 -51
  409. package/dist/esm/style/palette.js.map +0 -1
  410. package/dist/esm/style/utils.js +0 -15
  411. package/dist/esm/style/utils.js.map +0 -1
  412. package/dist/esm/utils.js +0 -51
  413. package/dist/esm/utils.js.map +0 -1
  414. package/dist/esm/workers/cartoRasterTile.js +0 -4
  415. package/dist/esm/workers/cartoRasterTile.js.map +0 -1
  416. package/dist/esm/workers/cartoSpatialTile.js +0 -4
  417. package/dist/esm/workers/cartoSpatialTile.js.map +0 -1
  418. package/dist/esm/workers/cartoVectorTile.js +0 -4
  419. package/dist/esm/workers/cartoVectorTile.js.map +0 -1
  420. package/src/.DS_Store +0 -0
  421. package/typed/api/carto-api-error.d.ts.map +0 -1
  422. package/typed/api/endpoints.d.ts.map +0 -1
  423. package/typed/api/index.d.ts +0 -7
  424. package/typed/api/index.d.ts.map +0 -1
  425. package/typed/api/layer-map.d.ts.map +0 -1
  426. package/typed/api/query.d.ts.map +0 -1
  427. package/typed/api/request-with-parameters.d.ts +0 -9
  428. package/typed/api/request-with-parameters.d.ts.map +0 -1
  429. package/typed/api/types.d.ts.map +0 -1
  430. package/typed/index.d.ts +0 -37
  431. package/typed/index.d.ts.map +0 -1
  432. package/typed/layers/h3-tile-layer.d.ts.map +0 -1
  433. package/typed/layers/h3-tileset-2d.d.ts.map +0 -1
  434. package/typed/layers/quadbin-tile-layer.d.ts.map +0 -1
  435. package/typed/layers/raster-layer-vertex.glsl.d.ts +0 -3
  436. package/typed/layers/raster-tile-layer.d.ts.map +0 -1
  437. package/typed/layers/schema/carto-properties-tile.d.ts.map +0 -1
  438. package/typed/layers/schema/carto-raster-tile-loader.d.ts.map +0 -1
  439. package/typed/layers/schema/carto-spatial-tile.d.ts.map +0 -1
  440. package/typed/layers/utils.d.ts.map +0 -1
  441. package/typed/layers/vector-tile-layer.d.ts.map +0 -1
  442. package/typed/sources/base-source.d.ts.map +0 -1
  443. package/typed/sources/boundary-query-source.d.ts +0 -10
  444. package/typed/sources/boundary-query-source.d.ts.map +0 -1
  445. package/typed/sources/boundary-table-source.d.ts.map +0 -1
  446. package/typed/sources/h3-query-source.d.ts.map +0 -1
  447. package/typed/sources/h3-table-source.d.ts.map +0 -1
  448. package/typed/sources/h3-tileset-source.d.ts.map +0 -1
  449. package/typed/sources/index.d.ts +0 -27
  450. package/typed/sources/index.d.ts.map +0 -1
  451. package/typed/sources/quadbin-query-source.d.ts.map +0 -1
  452. package/typed/sources/quadbin-table-source.d.ts.map +0 -1
  453. package/typed/sources/raster-source.d.ts.map +0 -1
  454. package/typed/sources/types.d.ts.map +0 -1
  455. package/typed/sources/vector-query-source.d.ts +0 -4
  456. package/typed/sources/vector-query-source.d.ts.map +0 -1
  457. package/typed/sources/vector-table-source.d.ts +0 -4
  458. package/typed/sources/vector-table-source.d.ts.map +0 -1
  459. package/typed/style/color-bins-style.d.ts.map +0 -1
  460. package/typed/style/color-categories-style.d.ts.map +0 -1
  461. package/typed/style/color-continuous-style.d.ts.map +0 -1
  462. package/typed/utils.d.ts.map +0 -1
  463. /package/{typed → dist}/api/fetch-map.d.ts +0 -0
  464. /package/{typed → dist}/api/parse-map.d.ts +0 -0
  465. /package/{typed → dist}/api/parse-map.d.ts.map +0 -0
  466. /package/{typed → dist}/basemap.d.ts +0 -0
  467. /package/{typed → dist}/basemap.d.ts.map +0 -0
  468. /package/{typed → dist}/layers/point-label-layer.d.ts +0 -0
  469. /package/{typed → dist}/layers/point-label-layer.d.ts.map +0 -0
  470. /package/{typed → dist}/layers/quadbin-layer.d.ts +0 -0
  471. /package/{typed → dist}/layers/quadbin-layer.d.ts.map +0 -0
  472. /package/{typed → dist}/layers/quadbin-tileset-2d.d.ts +0 -0
  473. /package/{typed → dist}/layers/quadbin-tileset-2d.d.ts.map +0 -0
  474. /package/{typed → dist}/layers/quadbin-utils.d.ts +0 -0
  475. /package/{typed → dist}/layers/quadbin-utils.d.ts.map +0 -0
  476. /package/{typed → dist}/layers/raster-layer-vertex.glsl.d.ts.map +0 -0
  477. /package/{typed → dist}/layers/raster-layer.d.ts +0 -0
  478. /package/{typed → dist}/layers/schema/carto-properties-tile-loader.d.ts +0 -0
  479. /package/{typed → dist}/layers/schema/carto-properties-tile-loader.d.ts.map +0 -0
  480. /package/{typed → dist}/layers/schema/carto-raster-tile.d.ts +0 -0
  481. /package/{typed → dist}/layers/schema/carto-spatial-tile-loader.d.ts +0 -0
  482. /package/{typed → dist}/layers/schema/carto-spatial-tile-loader.d.ts.map +0 -0
  483. /package/{typed → dist}/layers/schema/carto-tile.d.ts +0 -0
  484. /package/{typed → dist}/layers/schema/carto-tile.d.ts.map +0 -0
  485. /package/{typed → dist}/layers/schema/carto-vector-tile-loader.d.ts +0 -0
  486. /package/{typed → dist}/layers/schema/carto-vector-tile-loader.d.ts.map +0 -0
  487. /package/{typed → dist}/layers/schema/fast-pbf.d.ts +0 -0
  488. /package/{typed → dist}/layers/schema/fast-pbf.d.ts.map +0 -0
  489. /package/{typed → dist}/layers/schema/spatialjson-utils.d.ts +0 -0
  490. /package/{typed → dist}/layers/schema/spatialjson-utils.d.ts.map +0 -0
  491. /package/{typed → dist}/layers/schema/tile-loader-utils.d.ts +0 -0
  492. /package/{typed → dist}/layers/schema/tile-loader-utils.d.ts.map +0 -0
  493. /package/{typed → dist}/style/palette.d.ts +0 -0
  494. /package/{typed → dist}/style/palette.d.ts.map +0 -0
  495. /package/{typed → dist}/style/utils.d.ts +0 -0
  496. /package/{typed → dist}/style/utils.d.ts.map +0 -0
  497. /package/{typed → dist}/workers/cartoRasterTile.d.ts +0 -0
  498. /package/{typed → dist}/workers/cartoRasterTile.d.ts.map +0 -0
  499. /package/{typed → dist}/workers/cartoSpatialTile.d.ts +0 -0
  500. /package/{typed → dist}/workers/cartoSpatialTile.d.ts.map +0 -0
  501. /package/{typed → dist}/workers/cartoVectorTile.d.ts +0 -0
  502. /package/{typed → dist}/workers/cartoVectorTile.d.ts.map +0 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,2721 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+
26
+ // dist/index.js
27
+ var dist_exports = {};
28
+ __export(dist_exports, {
29
+ BASEMAP: () => basemap_default,
30
+ CARTO_LAYERS: () => CARTO_LAYERS,
31
+ CARTO_SOURCES: () => CARTO_SOURCES,
32
+ CartoAPIError: () => CartoAPIError,
33
+ H3TileLayer: () => H3TileLayer,
34
+ QuadbinTileLayer: () => QuadbinTileLayer,
35
+ RasterTileLayer: () => RasterTileLayer,
36
+ SOURCE_DEFAULTS: () => SOURCE_DEFAULTS,
37
+ VectorTileLayer: () => VectorTileLayer,
38
+ _PointLabelLayer: () => PointLabelLayer,
39
+ boundaryQuerySource: () => boundaryQuerySource,
40
+ boundaryTableSource: () => boundaryTableSource,
41
+ colorBins: () => colorBins,
42
+ colorCategories: () => colorCategories,
43
+ colorContinuous: () => colorContinuous,
44
+ fetchMap: () => fetchMap,
45
+ h3QuerySource: () => h3QuerySource,
46
+ h3TableSource: () => h3TableSource,
47
+ h3TilesetSource: () => h3TilesetSource,
48
+ quadbinQuerySource: () => quadbinQuerySource,
49
+ quadbinTableSource: () => quadbinTableSource,
50
+ quadbinTilesetSource: () => quadbinTilesetSource,
51
+ query: () => query,
52
+ rasterSource: () => rasterSource,
53
+ vectorQuerySource: () => vectorQuerySource,
54
+ vectorTableSource: () => vectorTableSource,
55
+ vectorTilesetSource: () => vectorTilesetSource
56
+ });
57
+ module.exports = __toCommonJS(dist_exports);
58
+
59
+ // dist/layers/h3-tile-layer.js
60
+ var import_core5 = require("@deck.gl/core");
61
+ var import_geo_layers3 = require("@deck.gl/geo-layers");
62
+
63
+ // dist/layers/h3-tileset-2d.js
64
+ var import_geo_layers = require("@deck.gl/geo-layers");
65
+ var import_h3_js = require("h3-js");
66
+ var MAX_LATITUDE = 85.051128;
67
+ function padBoundingBox({ west, north, east, south }, resolution) {
68
+ const corners = [
69
+ [north, east],
70
+ [south, east],
71
+ [south, west],
72
+ [north, west]
73
+ ];
74
+ const cornerCells = corners.map((c) => (0, import_h3_js.latLngToCell)(c[0], c[1], resolution));
75
+ const cornerEdgeLengths = cornerCells.map((c) => Math.max(...(0, import_h3_js.originToDirectedEdges)(c).map((e) => (0, import_h3_js.edgeLength)(e, import_h3_js.UNITS.rads))) * 180 / Math.PI);
76
+ const bufferLat = Math.max(...cornerEdgeLengths);
77
+ const bufferLon = Math.min(180, bufferLat / Math.cos((north + south) / 2 * Math.PI / 180));
78
+ return {
79
+ north: Math.min(north + bufferLat, MAX_LATITUDE),
80
+ east: east + bufferLon,
81
+ south: Math.max(south - bufferLat, -MAX_LATITUDE),
82
+ west: west - bufferLon
83
+ };
84
+ }
85
+ function getHexagonsInBoundingBox({ west, north, east, south }, resolution) {
86
+ const longitudeSpan = Math.abs(east - west);
87
+ if (longitudeSpan > 180) {
88
+ const nSegments = Math.ceil(longitudeSpan / 180);
89
+ let h3Indices = [];
90
+ for (let s = 0; s < nSegments; s++) {
91
+ const segmentWest = west + s * 180;
92
+ const segmentEast = Math.min(segmentWest + 179.9999999, east);
93
+ h3Indices = h3Indices.concat(getHexagonsInBoundingBox({ west: segmentWest, north, east: segmentEast, south }, resolution));
94
+ }
95
+ return [...new Set(h3Indices)];
96
+ }
97
+ const polygon = [
98
+ [north, east],
99
+ [south, east],
100
+ [south, west],
101
+ [north, west],
102
+ [north, east]
103
+ ];
104
+ return (0, import_h3_js.polygonToCells)(polygon, resolution);
105
+ }
106
+ function tileToBoundingBox(index) {
107
+ const coordinates = (0, import_h3_js.cellToBoundary)(index);
108
+ const latitudes = coordinates.map((c) => c[0]);
109
+ const longitudes = coordinates.map((c) => c[1]);
110
+ const west = Math.min(...longitudes);
111
+ const south = Math.min(...latitudes);
112
+ const east = Math.max(...longitudes);
113
+ const north = Math.max(...latitudes);
114
+ return { west, south, east, north };
115
+ }
116
+ var BIAS = 2;
117
+ function getHexagonResolution(viewport, tileSize) {
118
+ const zoomOffset = Math.log2(tileSize / 512);
119
+ const hexagonScaleFactor = 2 / 3 * (viewport.zoom - zoomOffset);
120
+ const latitudeScaleFactor = Math.log(1 / Math.cos(Math.PI * viewport.latitude / 180));
121
+ return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));
122
+ }
123
+ var H3Tileset2D = class extends import_geo_layers._Tileset2D {
124
+ getTileIndices({ viewport, minZoom, maxZoom }) {
125
+ if (viewport.latitude === void 0)
126
+ return [];
127
+ const [west, south, east, north] = viewport.getBounds();
128
+ const { tileSize } = this.opts;
129
+ let z = getHexagonResolution(viewport, tileSize);
130
+ let indices;
131
+ if (typeof minZoom === "number" && Number.isFinite(minZoom) && z < minZoom) {
132
+ return [];
133
+ }
134
+ if (typeof maxZoom === "number" && Number.isFinite(maxZoom) && z > maxZoom) {
135
+ z = maxZoom;
136
+ const center = (0, import_h3_js.latLngToCell)(viewport.latitude, viewport.longitude, maxZoom);
137
+ indices = (0, import_h3_js.gridDisk)(center, 1);
138
+ } else {
139
+ const paddedBounds = padBoundingBox({ west, north, east, south }, z);
140
+ indices = getHexagonsInBoundingBox(paddedBounds, z);
141
+ }
142
+ return indices.map((i) => ({ i }));
143
+ }
144
+ getTileId({ i }) {
145
+ return i;
146
+ }
147
+ getTileMetadata({ i }) {
148
+ return { bbox: tileToBoundingBox(i) };
149
+ }
150
+ getTileZoom({ i }) {
151
+ return (0, import_h3_js.getResolution)(i);
152
+ }
153
+ getParentIndex(index) {
154
+ const resolution = (0, import_h3_js.getResolution)(index.i);
155
+ const i = (0, import_h3_js.cellToParent)(index.i, resolution - 1);
156
+ return { i };
157
+ }
158
+ };
159
+
160
+ // dist/layers/spatial-index-tile-layer.js
161
+ var import_core2 = require("@loaders.gl/core");
162
+
163
+ // dist/layers/schema/fast-pbf.js
164
+ function readPackedTypedArray(TypedArray, pbf, obj) {
165
+ const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;
166
+ obj.value = new TypedArray(pbf.buf.buffer.slice(pbf.pos, end));
167
+ pbf.pos = end;
168
+ return obj.value;
169
+ }
170
+
171
+ // dist/layers/schema/carto-raster-tile.js
172
+ var ARRAY_TYPES = {
173
+ uint8: Uint8Array,
174
+ uint16: Uint16Array,
175
+ uint32: Uint32Array,
176
+ uint64: BigUint64Array,
177
+ int8: Int8Array,
178
+ int16: Int16Array,
179
+ int32: Int32Array,
180
+ int64: BigInt64Array,
181
+ float32: Float32Array,
182
+ float64: Float64Array
183
+ };
184
+ var BandReader = class {
185
+ static read(pbf, end) {
186
+ return pbf.readFields(BandReader._readField, { name: "", type: "", data: null }, end);
187
+ }
188
+ static _readField(tag, obj, pbf) {
189
+ if (tag === 1)
190
+ obj.name = pbf.readString();
191
+ else if (tag === 2)
192
+ obj.type = pbf.readString();
193
+ else if (tag === 3) {
194
+ const TypedArray = ARRAY_TYPES[obj.type];
195
+ if (!TypedArray) {
196
+ throw Error(`Invalid data type: ${obj.type}`);
197
+ }
198
+ obj.data = {};
199
+ readPackedTypedArray(TypedArray, pbf, obj.data);
200
+ }
201
+ }
202
+ };
203
+ var TileReader = class {
204
+ static read(pbf, end) {
205
+ return pbf.readFields(TileReader._readField, { blockSize: 0, bands: [] }, end);
206
+ }
207
+ static _readField(tag, obj, pbf) {
208
+ if (tag === 1)
209
+ obj.blockSize = pbf.readVarint();
210
+ else if (tag === 2)
211
+ obj.bands.push(BandReader.read(pbf, pbf.readVarint() + pbf.pos));
212
+ }
213
+ };
214
+
215
+ // dist/layers/schema/tile-loader-utils.js
216
+ var import_pbf = __toESM(require("pbf"), 1);
217
+ function parsePbf(buffer, TileReader5) {
218
+ const pbf = new import_pbf.default(buffer);
219
+ const tile = TileReader5.read(pbf);
220
+ return tile;
221
+ }
222
+
223
+ // dist/utils.js
224
+ var import_core = require("@deck.gl/core");
225
+ function assert(condition, message) {
226
+ import_core.log.assert(condition, message);
227
+ }
228
+ function createBinaryProxy(data, index) {
229
+ const { properties, numericProps } = data;
230
+ return new Proxy(properties[index] || {}, {
231
+ get(target, property) {
232
+ if (property in numericProps) {
233
+ return numericProps[property].value[index];
234
+ }
235
+ return target[property];
236
+ },
237
+ has(target, property) {
238
+ return property in numericProps || property in target;
239
+ }
240
+ });
241
+ }
242
+ function getWorkerUrl(id4, version) {
243
+ return `https://unpkg.com/@deck.gl/carto@${version}/dist/${id4}-worker.js`;
244
+ }
245
+ function scaleIdentity() {
246
+ let unknown;
247
+ function scale(x) {
248
+ return x === null ? unknown : x;
249
+ }
250
+ scale.invert = scale;
251
+ scale.domain = scale.range = (d) => d;
252
+ scale.unknown = (u) => {
253
+ if (u) {
254
+ unknown = u;
255
+ }
256
+ return unknown;
257
+ };
258
+ scale.copy = () => {
259
+ const scaleCopy = scaleIdentity();
260
+ scaleCopy.unknown(unknown);
261
+ return scaleCopy;
262
+ };
263
+ return scale;
264
+ }
265
+
266
+ // dist/layers/schema/carto-raster-tile-loader.js
267
+ var VERSION = true ? "9.0.0-beta.11" : "latest";
268
+ var id = "cartoRasterTile";
269
+ var DEFAULT_OPTIONS = {
270
+ cartoRasterTile: {
271
+ workerUrl: getWorkerUrl(id, VERSION)
272
+ }
273
+ };
274
+ var CartoRasterTileLoader = {
275
+ name: "CARTO Raster Tile",
276
+ version: VERSION,
277
+ id,
278
+ module: "carto",
279
+ extensions: ["pbf"],
280
+ mimeTypes: ["application/vnd.carto-raster-tile"],
281
+ category: "geometry",
282
+ parse: async (arrayBuffer, options) => parseCartoRasterTile(arrayBuffer, options),
283
+ parseSync: parseCartoRasterTile,
284
+ worker: true,
285
+ options: DEFAULT_OPTIONS
286
+ };
287
+ function parseCartoRasterTile(arrayBuffer, options) {
288
+ if (!arrayBuffer)
289
+ return null;
290
+ const { bands, blockSize } = parsePbf(arrayBuffer, TileReader);
291
+ const numericProps = {};
292
+ for (let i = 0; i < bands.length; i++) {
293
+ const { name, data } = bands[i];
294
+ numericProps[name] = data;
295
+ }
296
+ return { blockSize, cells: { numericProps, properties: [] } };
297
+ }
298
+ var carto_raster_tile_loader_default = CartoRasterTileLoader;
299
+
300
+ // dist/layers/schema/carto-tile.js
301
+ var KeyValueObjectReader = class {
302
+ static read(pbf, end) {
303
+ return pbf.readFields(KeyValueObjectReader._readField, { key: "", value: null }, end);
304
+ }
305
+ static _readField(tag, obj, pbf) {
306
+ if (tag === 1)
307
+ obj.key = pbf.readString();
308
+ else if (tag === 2)
309
+ obj.value = pbf.readString();
310
+ }
311
+ };
312
+ var PropertiesReader = class {
313
+ static read(pbf, end) {
314
+ return pbf.readFields(PropertiesReader._readField, {}, end);
315
+ }
316
+ static _readField(tag, obj, pbf) {
317
+ if (tag === 1) {
318
+ const { key, value } = KeyValueObjectReader.read(pbf, pbf.readVarint() + pbf.pos);
319
+ obj[key] = value;
320
+ }
321
+ }
322
+ };
323
+ var DoublesReader = class {
324
+ static read(pbf, end) {
325
+ const { value, size } = pbf.readFields(DoublesReader._readField, { value: [], size: 0 }, end);
326
+ return { value: new Float32Array(value), size };
327
+ }
328
+ static _readField(tag, obj, pbf) {
329
+ if (tag === 1)
330
+ readPackedTypedArray(Float64Array, pbf, obj);
331
+ else if (tag === 2)
332
+ obj.size = pbf.readVarint(true);
333
+ }
334
+ };
335
+ var IntsReader = class {
336
+ static read(pbf, end) {
337
+ const { value, size } = pbf.readFields(IntsReader._readField, { value: [], size: 0 }, end);
338
+ return { value: new Uint32Array(value), size };
339
+ }
340
+ static _readField(tag, obj, pbf) {
341
+ if (tag === 1)
342
+ pbf.readPackedVarint(obj.value);
343
+ else if (tag === 2)
344
+ obj.size = pbf.readVarint(true);
345
+ }
346
+ };
347
+ var FieldsReader = class {
348
+ static read(pbf, end) {
349
+ return pbf.readFields(FieldsReader._readField, { id: 0 }, end);
350
+ }
351
+ static _readField(tag, obj, pbf) {
352
+ if (tag === 1)
353
+ obj.id = pbf.readVarint();
354
+ }
355
+ };
356
+ var NumericPropReader = class {
357
+ static read(pbf, end) {
358
+ return pbf.readFields(NumericPropReader._readField, { value: [] }, end);
359
+ }
360
+ static _readField(tag, obj, pbf) {
361
+ if (tag === 1)
362
+ readPackedTypedArray(Float64Array, pbf, obj);
363
+ }
364
+ };
365
+ var NumericPropKeyValueReader = class {
366
+ static read(pbf, end) {
367
+ return pbf.readFields(NumericPropKeyValueReader._readField, { key: "", value: null }, end);
368
+ }
369
+ static _readField(tag, obj, pbf) {
370
+ if (tag === 1)
371
+ obj.key = pbf.readString();
372
+ else if (tag === 2)
373
+ obj.value = NumericPropReader.read(pbf, pbf.readVarint() + pbf.pos);
374
+ }
375
+ };
376
+ var PointsReader = class {
377
+ static read(pbf, end) {
378
+ return pbf.readFields(PointsReader._readField, {
379
+ positions: null,
380
+ globalFeatureIds: null,
381
+ featureIds: null,
382
+ properties: [],
383
+ numericProps: {},
384
+ fields: []
385
+ }, end);
386
+ }
387
+ static _readField(tag, obj, pbf) {
388
+ if (tag === 1)
389
+ obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
390
+ else if (tag === 2)
391
+ obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
392
+ else if (tag === 3)
393
+ obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
394
+ else if (tag === 4)
395
+ obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
396
+ else if (tag === 5) {
397
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
398
+ obj.numericProps[entry.key] = entry.value;
399
+ } else if (tag === 6)
400
+ obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
401
+ }
402
+ };
403
+ var LinesReader = class {
404
+ static read(pbf, end) {
405
+ return pbf.readFields(LinesReader._readField, {
406
+ positions: null,
407
+ pathIndices: null,
408
+ globalFeatureIds: null,
409
+ featureIds: null,
410
+ properties: [],
411
+ numericProps: {},
412
+ fields: []
413
+ }, end);
414
+ }
415
+ static _readField(tag, obj, pbf) {
416
+ if (tag === 1)
417
+ obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
418
+ else if (tag === 2)
419
+ obj.pathIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
420
+ else if (tag === 3)
421
+ obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
422
+ else if (tag === 4)
423
+ obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
424
+ else if (tag === 5)
425
+ obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
426
+ else if (tag === 6) {
427
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
428
+ obj.numericProps[entry.key] = entry.value;
429
+ } else if (tag === 7)
430
+ obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
431
+ }
432
+ };
433
+ var PolygonsReader = class {
434
+ static read(pbf, end) {
435
+ return pbf.readFields(PolygonsReader._readField, {
436
+ positions: null,
437
+ polygonIndices: null,
438
+ globalFeatureIds: null,
439
+ featureIds: null,
440
+ primitivePolygonIndices: null,
441
+ triangles: null,
442
+ properties: [],
443
+ numericProps: {},
444
+ fields: []
445
+ }, end);
446
+ }
447
+ static _readField(tag, obj, pbf) {
448
+ if (tag === 1)
449
+ obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
450
+ else if (tag === 2)
451
+ obj.polygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
452
+ else if (tag === 3)
453
+ obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
454
+ else if (tag === 4)
455
+ obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
456
+ else if (tag === 5)
457
+ obj.primitivePolygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
458
+ else if (tag === 6)
459
+ obj.triangles = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
460
+ else if (tag === 7)
461
+ obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
462
+ else if (tag === 8) {
463
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
464
+ obj.numericProps[entry.key] = entry.value;
465
+ } else if (tag === 9)
466
+ obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
467
+ }
468
+ };
469
+ var TileReader2 = class {
470
+ static read(pbf, end) {
471
+ return pbf.readFields(TileReader2._readField, { points: null, lines: null, polygons: null }, end);
472
+ }
473
+ static _readField(tag, obj, pbf) {
474
+ if (tag === 1)
475
+ obj.points = PointsReader.read(pbf, pbf.readVarint() + pbf.pos);
476
+ else if (tag === 2)
477
+ obj.lines = LinesReader.read(pbf, pbf.readVarint() + pbf.pos);
478
+ else if (tag === 3)
479
+ obj.polygons = PolygonsReader.read(pbf, pbf.readVarint() + pbf.pos);
480
+ }
481
+ };
482
+
483
+ // dist/layers/schema/carto-spatial-tile.js
484
+ var IndicesReader = class {
485
+ static read(pbf, end) {
486
+ return pbf.readFields(IndicesReader._readField, { value: [] }, end);
487
+ }
488
+ static _readField(tag, obj, pbf) {
489
+ if (tag === 1)
490
+ readPackedTypedArray(BigUint64Array, pbf, obj);
491
+ }
492
+ };
493
+ var CellsReader = class {
494
+ static read(pbf, end) {
495
+ return pbf.readFields(CellsReader._readField, { indices: null, properties: [], numericProps: {} }, end);
496
+ }
497
+ static _readField(tag, obj, pbf) {
498
+ if (tag === 1)
499
+ obj.indices = IndicesReader.read(pbf, pbf.readVarint() + pbf.pos);
500
+ else if (tag === 2)
501
+ obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
502
+ else if (tag === 3) {
503
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
504
+ obj.numericProps[entry.key] = entry.value;
505
+ }
506
+ }
507
+ };
508
+ var TileReader3 = class {
509
+ static read(pbf, end) {
510
+ return pbf.readFields(TileReader3._readField, { scheme: 0, cells: null }, end);
511
+ }
512
+ static _readField(tag, obj, pbf) {
513
+ if (tag === 1)
514
+ obj.scheme = pbf.readVarint();
515
+ else if (tag === 2)
516
+ obj.cells = CellsReader.read(pbf, pbf.readVarint() + pbf.pos);
517
+ }
518
+ };
519
+
520
+ // dist/layers/schema/spatialjson-utils.js
521
+ var import_quadbin = require("quadbin");
522
+ function binaryToSpatialjson(binary) {
523
+ const { cells, scheme } = binary;
524
+ const count = cells.indices.value.length;
525
+ const spatial = [];
526
+ for (let i = 0; i < count; i++) {
527
+ const id4 = scheme === "h3" ? (0, import_quadbin.bigIntToHex)(cells.indices.value[i]) : cells.indices.value[i];
528
+ const properties = { ...cells.properties[i] };
529
+ for (const key of Object.keys(cells.numericProps)) {
530
+ properties[key] = cells.numericProps[key].value[i];
531
+ }
532
+ spatial.push({ id: id4, properties });
533
+ }
534
+ return spatial;
535
+ }
536
+
537
+ // dist/layers/schema/carto-spatial-tile-loader.js
538
+ var VERSION2 = true ? "9.0.0-beta.11" : "latest";
539
+ var id2 = "cartoSpatialTile";
540
+ var DEFAULT_OPTIONS2 = {
541
+ cartoSpatialTile: {
542
+ scheme: "quadbin",
543
+ workerUrl: getWorkerUrl(id2, VERSION2)
544
+ }
545
+ };
546
+ var CartoSpatialTileLoader = {
547
+ name: "CARTO Spatial Tile",
548
+ version: VERSION2,
549
+ id: id2,
550
+ module: "carto",
551
+ extensions: ["pbf"],
552
+ mimeTypes: ["application/vnd.carto-spatial-tile"],
553
+ category: "geometry",
554
+ parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),
555
+ parseSync: parseCartoSpatialTile,
556
+ worker: true,
557
+ options: DEFAULT_OPTIONS2
558
+ };
559
+ function parseCartoSpatialTile(arrayBuffer, options) {
560
+ var _a;
561
+ if (!arrayBuffer)
562
+ return null;
563
+ const tile = parsePbf(arrayBuffer, TileReader3);
564
+ const { cells } = tile;
565
+ const scheme = (_a = options == null ? void 0 : options.cartoSpatialTile) == null ? void 0 : _a.scheme;
566
+ const data = { cells, scheme };
567
+ return binaryToSpatialjson(data);
568
+ }
569
+ var carto_spatial_tile_loader_default = CartoSpatialTileLoader;
570
+
571
+ // dist/layers/spatial-index-tile-layer.js
572
+ var import_geo_layers2 = require("@deck.gl/geo-layers");
573
+
574
+ // dist/constants.js
575
+ var DEFAULT_TILE_SIZE = 512;
576
+ var DEFAULT_TILE_RESOLUTION = 0.5;
577
+ var DEFAULT_AGGREGATION_RES_LEVEL_H3 = 4;
578
+ var DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN = 6;
579
+
580
+ // dist/layers/spatial-index-tile-layer.js
581
+ (0, import_core2.registerLoaders)([carto_raster_tile_loader_default, carto_spatial_tile_loader_default]);
582
+ function isFeatureIdDefined(value) {
583
+ return value !== void 0 && value !== null && value !== "";
584
+ }
585
+ var defaultProps = {
586
+ tileSize: DEFAULT_TILE_SIZE
587
+ };
588
+ var _SpatialIndexTileLayer = class extends import_geo_layers2.TileLayer {
589
+ _updateAutoHighlight(info) {
590
+ const { hoveredFeatureId } = this.state;
591
+ const hoveredFeature = info.object;
592
+ let newHoveredFeatureId = null;
593
+ if (hoveredFeature) {
594
+ newHoveredFeatureId = hoveredFeature.id;
595
+ }
596
+ if (hoveredFeatureId !== newHoveredFeatureId) {
597
+ let { highlightColor } = this.props;
598
+ if (typeof highlightColor === "function") {
599
+ highlightColor = highlightColor(info);
600
+ }
601
+ this.setState({
602
+ highlightColor,
603
+ hoveredFeatureId: newHoveredFeatureId
604
+ });
605
+ }
606
+ }
607
+ getSubLayerPropsByTile(tile) {
608
+ return {
609
+ highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
610
+ highlightColor: this.state.highlightColor
611
+ };
612
+ }
613
+ getHighlightedObjectIndex(tile) {
614
+ const { hoveredFeatureId } = this.state;
615
+ const data = tile.content;
616
+ const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);
617
+ if (!isFeatureIdPresent || !Array.isArray(data) || !this._featureInTile(tile, hoveredFeatureId)) {
618
+ return -1;
619
+ }
620
+ return data.findIndex((feature) => feature.id === hoveredFeatureId);
621
+ }
622
+ _featureInTile(tile, featureId) {
623
+ const tileset = this.state.tileset;
624
+ const tileZoom = tileset.getTileZoom(tile.index);
625
+ const KEY = tile.index.q ? "q" : "i";
626
+ let featureIndex = { [KEY]: featureId };
627
+ let featureZoom = tileset.getTileZoom(featureIndex);
628
+ while (!(featureZoom <= tileZoom)) {
629
+ featureIndex = tileset.getParentIndex(featureIndex);
630
+ featureZoom = tileset.getTileZoom(featureIndex);
631
+ }
632
+ return featureIndex[KEY] === tile.index[KEY];
633
+ }
634
+ };
635
+ var SpatialIndexTileLayer = _SpatialIndexTileLayer;
636
+ (() => {
637
+ _SpatialIndexTileLayer.layerName = "SpatialIndexTileLayer";
638
+ })();
639
+ (() => {
640
+ _SpatialIndexTileLayer.defaultProps = defaultProps;
641
+ })();
642
+
643
+ // dist/layers/utils.js
644
+ var import_core3 = require("@deck.gl/core");
645
+ var import_core4 = require("@deck.gl/core");
646
+ function injectAccessToken(loadOptions, accessToken) {
647
+ var _a, _b, _c;
648
+ if (!((_b = (_a = loadOptions == null ? void 0 : loadOptions.fetch) == null ? void 0 : _a.headers) == null ? void 0 : _b.Authorization)) {
649
+ loadOptions.fetch = {
650
+ ...loadOptions.fetch,
651
+ headers: { ...(_c = loadOptions.fetch) == null ? void 0 : _c.headers, Authorization: `Bearer ${accessToken}` }
652
+ };
653
+ }
654
+ }
655
+ function mergeBoundaryData(geometry, properties) {
656
+ const mapping = {};
657
+ for (const { geoid, ...rest } of properties.properties) {
658
+ if (geoid in mapping) {
659
+ import_core3.log.warn("Duplicate geoid key in boundary mapping, using first occurance")();
660
+ } else {
661
+ mapping[geoid] = rest;
662
+ }
663
+ }
664
+ for (const type of ["points", "lines", "polygons"]) {
665
+ const geom = geometry[type];
666
+ if (geom.positions.value.length === 0) {
667
+ continue;
668
+ }
669
+ geom.properties = geom.properties.map(({ geoid }) => mapping[geoid]);
670
+ const { positions, globalFeatureIds } = geom;
671
+ let indices = null;
672
+ if (type === "lines")
673
+ indices = geom.pathIndices.value;
674
+ if (type === "polygons")
675
+ indices = geom.polygonIndices.value;
676
+ const length = positions.value.length / positions.size;
677
+ for (const key in properties.numericProps) {
678
+ const sourceProp = properties.numericProps[key].value;
679
+ const TypedArray = sourceProp.constructor;
680
+ const destProp = new TypedArray(length);
681
+ geom.numericProps[key] = { value: destProp, size: 1 };
682
+ if (!indices) {
683
+ for (let i = 0; i < length; i++) {
684
+ const featureId = globalFeatureIds.value[i];
685
+ destProp[i] = sourceProp[featureId];
686
+ }
687
+ } else {
688
+ for (let i = 0; i < indices.length - 1; i++) {
689
+ const startIndex = indices[i];
690
+ const endIndex = indices[i + 1];
691
+ const featureId = globalFeatureIds.value[startIndex];
692
+ destProp.fill(sourceProp[featureId], startIndex, endIndex);
693
+ }
694
+ }
695
+ }
696
+ }
697
+ return geometry;
698
+ }
699
+ var TilejsonPropType = {
700
+ type: "object",
701
+ value: null,
702
+ validate: (value, propType) => propType.optional && value === null || typeof value === "object" && Array.isArray(value.tiles) && value.tiles.every((url) => typeof url === "string"),
703
+ equal: (value1, value2) => {
704
+ return (0, import_core4._deepEqual)(value1, value2, 2);
705
+ },
706
+ async: true
707
+ };
708
+
709
+ // dist/layers/h3-tile-layer.js
710
+ var renderSubLayers = (props) => {
711
+ const { data } = props;
712
+ const { index } = props.tile;
713
+ if (!data || !data.length)
714
+ return null;
715
+ return new import_geo_layers3.H3HexagonLayer(props, {
716
+ getHexagon: (d) => d.id,
717
+ centerHexagon: index,
718
+ highPrecision: true
719
+ });
720
+ };
721
+ var defaultProps2 = {
722
+ data: TilejsonPropType,
723
+ tileSize: DEFAULT_TILE_SIZE
724
+ };
725
+ var _H3TileLayer = class extends import_core5.CompositeLayer {
726
+ initializeState() {
727
+ import_geo_layers3.H3HexagonLayer._checkH3Lib();
728
+ }
729
+ getLoadOptions() {
730
+ const loadOptions = super.getLoadOptions() || {};
731
+ const tileJSON = this.props.data;
732
+ injectAccessToken(loadOptions, tileJSON.accessToken);
733
+ loadOptions.cartoSpatialTile = { ...loadOptions.cartoSpatialTile, scheme: "h3" };
734
+ return loadOptions;
735
+ }
736
+ renderLayers() {
737
+ const tileJSON = this.props.data;
738
+ if (!tileJSON)
739
+ return null;
740
+ const { tiles: data } = tileJSON;
741
+ let { minresolution, maxresolution } = tileJSON;
742
+ if (this.props.minZoom) {
743
+ minresolution = Math.max(minresolution, getHexagonResolution({ zoom: this.props.minZoom, latitude: 0 }, this.props.tileSize));
744
+ }
745
+ if (this.props.maxZoom) {
746
+ maxresolution = Math.min(maxresolution, getHexagonResolution({ zoom: this.props.maxZoom, latitude: 0 }, this.props.tileSize));
747
+ }
748
+ return [
749
+ new SpatialIndexTileLayer(this.props, {
750
+ id: `h3-tile-layer-${this.props.id}`,
751
+ data,
752
+ TilesetClass: H3Tileset2D,
753
+ renderSubLayers,
754
+ minZoom: minresolution,
755
+ maxZoom: maxresolution,
756
+ loadOptions: this.getLoadOptions()
757
+ })
758
+ ];
759
+ }
760
+ };
761
+ var H3TileLayer = _H3TileLayer;
762
+ (() => {
763
+ _H3TileLayer.layerName = "H3TileLayer";
764
+ })();
765
+ (() => {
766
+ _H3TileLayer.defaultProps = defaultProps2;
767
+ })();
768
+
769
+ // dist/layers/point-label-layer.js
770
+ var import_core6 = require("@deck.gl/core");
771
+ var import_layers = require("@deck.gl/layers");
772
+ var [LEFT, TOP, RIGHT, BOTTOM] = [0, 1, 2, 3];
773
+ var _EnhancedTextBackgroundLayer = class extends import_layers._TextBackgroundLayer {
774
+ getShaders() {
775
+ const shaders = super.getShaders();
776
+ let vs = shaders.vs;
777
+ vs = vs.replaceAll("padding.", "_padding.");
778
+ vs = vs.replace("void main(void) {", "void main(void) {\n vec4 _padding = padding + instancePixelOffsets.xyxy * vec4(1.0, 1.0, -1.0, -1.0);");
779
+ return { ...shaders, vs };
780
+ }
781
+ };
782
+ var EnhancedTextBackgroundLayer = _EnhancedTextBackgroundLayer;
783
+ (() => {
784
+ _EnhancedTextBackgroundLayer.layerName = "EnhancedTextBackgroundLayer";
785
+ })();
786
+ var _EnhancedTextLayer = class extends import_layers.TextLayer {
787
+ filterSubLayer({ layer, renderPass }) {
788
+ const background = layer.id.includes("primary-background");
789
+ if (renderPass === "collision") {
790
+ return background;
791
+ }
792
+ return !background;
793
+ }
794
+ };
795
+ var EnhancedTextLayer = _EnhancedTextLayer;
796
+ (() => {
797
+ _EnhancedTextLayer.layerName = "EnhancedTextLayer";
798
+ })();
799
+ var defaultProps3 = {
800
+ ...import_layers.TextLayer.defaultProps,
801
+ getRadius: { type: "accessor", value: 1 },
802
+ radiusScale: { type: "number", min: 0, value: 1 }
803
+ };
804
+ var _PointLabelLayer = class extends import_core6.CompositeLayer {
805
+ calculatePixelOffset(secondary) {
806
+ const { getTextAnchor: anchor, getAlignmentBaseline: alignment, getRadius, getSecondaryText, radiusScale, secondarySizeScale, sizeScale } = this.props;
807
+ const xMult = anchor === "middle" ? 0 : anchor === "start" ? 1 : -1;
808
+ const yMult = alignment === "center" ? 0 : alignment === "bottom" ? 1 : -1;
809
+ const xPadding = sizeScale / 4;
810
+ const yPadding = sizeScale * (1 + 1 / 4);
811
+ const secondaryOffset = 0.6 * (1 - yMult) * sizeScale;
812
+ let yOffset = secondary ? secondaryOffset : 0;
813
+ if (anchor === "middle" && alignment === "top" && getSecondaryText) {
814
+ yOffset -= secondaryOffset;
815
+ yOffset -= secondarySizeScale;
816
+ yOffset += sizeScale;
817
+ }
818
+ const radiusPadding = 1 + 1 / 4;
819
+ return typeof getRadius === "function" ? (d, info) => {
820
+ const r = (info ? getRadius(d, info) : 1) * radiusScale * radiusPadding;
821
+ return [xMult * (r + xPadding), yMult * (r + yPadding) + yOffset];
822
+ } : [
823
+ xMult * (getRadius * radiusScale * radiusPadding + xPadding),
824
+ yMult * (getRadius * radiusScale * radiusPadding + yPadding) + yOffset
825
+ ];
826
+ }
827
+ calculateBackgroundPadding() {
828
+ const { getTextAnchor: anchor, getAlignmentBaseline: alignment, sizeScale } = this.props;
829
+ const paddingX = 12 * sizeScale;
830
+ const paddingY = 3 * sizeScale;
831
+ const backgroundPadding = [0, 0, 0, 0];
832
+ if (alignment === "top") {
833
+ backgroundPadding[TOP] = paddingY;
834
+ } else if (alignment === "bottom") {
835
+ backgroundPadding[BOTTOM] = paddingY;
836
+ } else {
837
+ backgroundPadding[TOP] = 0.5 * paddingY;
838
+ backgroundPadding[BOTTOM] = 0.5 * paddingY;
839
+ }
840
+ if (anchor === "start") {
841
+ backgroundPadding[LEFT] = paddingX;
842
+ } else if (anchor === "end") {
843
+ backgroundPadding[RIGHT] = paddingX;
844
+ } else {
845
+ backgroundPadding[LEFT] = 0.5 * paddingX;
846
+ backgroundPadding[RIGHT] = 0.5 * paddingX;
847
+ }
848
+ return backgroundPadding;
849
+ }
850
+ renderTextLayer(id4, { updateTriggers: updateTriggersOverride = {}, ...props }) {
851
+ const { data, characterSet, fontFamily, fontSettings, fontWeight, outlineColor, outlineWidth, sizeScale, radiusScale, getAlignmentBaseline, getColor, getPosition, getTextAnchor, updateTriggers } = this.props;
852
+ return new EnhancedTextLayer(this.getSubLayerProps({
853
+ id: id4,
854
+ data,
855
+ characterSet,
856
+ fontFamily,
857
+ fontSettings,
858
+ fontWeight,
859
+ outlineColor,
860
+ outlineWidth,
861
+ sizeScale,
862
+ getAlignmentBaseline,
863
+ getColor,
864
+ getPosition,
865
+ getTextAnchor,
866
+ updateTriggers: {
867
+ ...updateTriggers,
868
+ ...updateTriggersOverride,
869
+ getPixelOffset: [
870
+ updateTriggers.getRadius,
871
+ updateTriggers.getTextAnchor,
872
+ updateTriggers.getAlignmentBaseline,
873
+ radiusScale,
874
+ sizeScale
875
+ ]
876
+ }
877
+ }), {
878
+ getSize: 1,
879
+ _subLayerProps: { background: { type: EnhancedTextBackgroundLayer } }
880
+ }, props);
881
+ }
882
+ renderLayers() {
883
+ const { getText, getSecondaryColor, getSecondaryText, secondaryOutlineColor, secondarySizeScale, updateTriggers } = this.props;
884
+ const getPixelOffset = this.calculatePixelOffset(false);
885
+ const backgroundPadding = this.calculateBackgroundPadding();
886
+ const out = [
887
+ this.renderTextLayer(`${updateTriggers.getText}-primary`, {
888
+ backgroundPadding,
889
+ getText,
890
+ getPixelOffset,
891
+ background: true
892
+ }),
893
+ Boolean(getSecondaryText) && this.renderTextLayer(`${updateTriggers.getSecondaryText}-secondary`, {
894
+ getText: getSecondaryText,
895
+ getPixelOffset: this.calculatePixelOffset(true),
896
+ getAlignmentBaseline: "top",
897
+ ...getSecondaryColor && { getColor: getSecondaryColor },
898
+ ...secondarySizeScale && { sizeScale: secondarySizeScale },
899
+ ...secondaryOutlineColor && { outlineColor: secondaryOutlineColor }
900
+ })
901
+ ];
902
+ return out;
903
+ }
904
+ };
905
+ var PointLabelLayer = _PointLabelLayer;
906
+ (() => {
907
+ _PointLabelLayer.layerName = "PointLabelLayer";
908
+ })();
909
+ (() => {
910
+ _PointLabelLayer.defaultProps = defaultProps3;
911
+ })();
912
+
913
+ // dist/layers/quadbin-tile-layer.js
914
+ var import_core7 = require("@deck.gl/core");
915
+
916
+ // dist/layers/quadbin-layer.js
917
+ var import_geo_layers4 = require("@deck.gl/geo-layers");
918
+
919
+ // dist/layers/quadbin-utils.js
920
+ var import_web_mercator = require("@math.gl/web-mercator");
921
+ var import_quadbin2 = require("quadbin");
922
+ var TILE_SIZE = 512;
923
+ function quadbinToOffset(quadbin) {
924
+ const { x, y, z } = (0, import_quadbin2.cellToTile)(quadbin);
925
+ const scale = TILE_SIZE / (1 << z);
926
+ return [x * scale, TILE_SIZE - y * scale, scale];
927
+ }
928
+ function quadbinToWorldBounds(quadbin, coverage) {
929
+ const [xOffset, yOffset, scale] = quadbinToOffset(quadbin);
930
+ return [
931
+ [xOffset, yOffset],
932
+ [xOffset + coverage * scale, yOffset - coverage * scale]
933
+ ];
934
+ }
935
+ function getQuadbinPolygon(quadbin, coverage = 1) {
936
+ const [topLeft, bottomRight] = quadbinToWorldBounds(quadbin, coverage);
937
+ const [w, n] = (0, import_web_mercator.worldToLngLat)(topLeft);
938
+ const [e, s] = (0, import_web_mercator.worldToLngLat)(bottomRight);
939
+ return [e, n, e, s, w, s, w, n, e, n];
940
+ }
941
+
942
+ // dist/layers/quadbin-layer.js
943
+ var defaultProps4 = {
944
+ getQuadbin: { type: "accessor", value: (d) => d.quadbin }
945
+ };
946
+ var _QuadbinLayer = class extends import_geo_layers4._GeoCellLayer {
947
+ indexToBounds() {
948
+ const { data, extruded, getQuadbin } = this.props;
949
+ const coverage = extruded ? 0.99 : 1;
950
+ return {
951
+ data,
952
+ _normalize: false,
953
+ positionFormat: "XY",
954
+ getPolygon: (x, objectInfo) => getQuadbinPolygon(getQuadbin(x, objectInfo), coverage),
955
+ updateTriggers: { getPolygon: coverage }
956
+ };
957
+ }
958
+ };
959
+ var QuadbinLayer = _QuadbinLayer;
960
+ (() => {
961
+ _QuadbinLayer.layerName = "QuadbinLayer";
962
+ })();
963
+ (() => {
964
+ _QuadbinLayer.defaultProps = defaultProps4;
965
+ })();
966
+
967
+ // dist/layers/quadbin-tileset-2d.js
968
+ var import_geo_layers5 = require("@deck.gl/geo-layers");
969
+ var import_quadbin3 = require("quadbin");
970
+ var QuadbinTileset2D = class extends import_geo_layers5._Tileset2D {
971
+ getTileIndices(opts) {
972
+ return super.getTileIndices(opts).map(import_quadbin3.tileToCell).map((q) => ({ q, i: (0, import_quadbin3.bigIntToHex)(q) }));
973
+ }
974
+ getTileId({ q, i }) {
975
+ return i || (0, import_quadbin3.bigIntToHex)(q);
976
+ }
977
+ getTileMetadata({ q }) {
978
+ return super.getTileMetadata((0, import_quadbin3.cellToTile)(q));
979
+ }
980
+ getTileZoom({ q }) {
981
+ return Number((0, import_quadbin3.getResolution)(q));
982
+ }
983
+ getParentIndex({ q }) {
984
+ return { q: (0, import_quadbin3.cellToParent)(q) };
985
+ }
986
+ };
987
+
988
+ // dist/layers/quadbin-tile-layer.js
989
+ var import_quadbin4 = require("quadbin");
990
+ var renderSubLayers2 = (props) => {
991
+ const { data } = props;
992
+ if (!data || !data.length)
993
+ return null;
994
+ const isBigInt = typeof data[0].id === "bigint";
995
+ return new QuadbinLayer(props, {
996
+ getQuadbin: isBigInt ? (d) => d.id : (d) => (0, import_quadbin4.hexToBigInt)(d.id)
997
+ });
998
+ };
999
+ var defaultProps5 = {
1000
+ data: TilejsonPropType,
1001
+ tileSize: DEFAULT_TILE_SIZE
1002
+ };
1003
+ var _QuadbinTileLayer = class extends import_core7.CompositeLayer {
1004
+ getLoadOptions() {
1005
+ const loadOptions = super.getLoadOptions() || {};
1006
+ const tileJSON = this.props.data;
1007
+ injectAccessToken(loadOptions, tileJSON.accessToken);
1008
+ loadOptions.cartoSpatialTile = { ...loadOptions.cartoSpatialTile, scheme: "quadbin" };
1009
+ return loadOptions;
1010
+ }
1011
+ renderLayers() {
1012
+ const tileJSON = this.props.data;
1013
+ if (!tileJSON)
1014
+ return null;
1015
+ const { tiles: data, maxresolution: maxZoom } = tileJSON;
1016
+ return [
1017
+ new SpatialIndexTileLayer(this.props, {
1018
+ id: `quadbin-tile-layer-${this.props.id}`,
1019
+ data,
1020
+ TilesetClass: QuadbinTileset2D,
1021
+ renderSubLayers: renderSubLayers2,
1022
+ maxZoom,
1023
+ loadOptions: this.getLoadOptions()
1024
+ })
1025
+ ];
1026
+ }
1027
+ };
1028
+ var QuadbinTileLayer = _QuadbinTileLayer;
1029
+ (() => {
1030
+ _QuadbinTileLayer.layerName = "QuadbinTileLayer";
1031
+ })();
1032
+ (() => {
1033
+ _QuadbinTileLayer.defaultProps = defaultProps5;
1034
+ })();
1035
+
1036
+ // dist/layers/raster-tile-layer.js
1037
+ var import_core9 = require("@deck.gl/core");
1038
+
1039
+ // dist/layers/raster-layer.js
1040
+ var import_core8 = require("@deck.gl/core");
1041
+ var import_layers2 = require("@deck.gl/layers");
1042
+
1043
+ // dist/layers/raster-layer-vertex.glsl.js
1044
+ var raster_layer_vertex_glsl_default = `#version 300 es
1045
+ #define SHADER_NAME raster-layer-vertex-shader
1046
+ in vec3 positions;
1047
+ in vec3 normals;
1048
+ in float instanceElevations;
1049
+ in vec4 instanceFillColors;
1050
+ in vec4 instanceLineColors;
1051
+ in vec3 instancePickingColors;
1052
+ uniform float opacity;
1053
+ uniform bool extruded;
1054
+ uniform bool stroked;
1055
+ uniform bool isStroke;
1056
+ uniform float coverage;
1057
+ uniform float elevationScale;
1058
+ uniform float widthScale;
1059
+ uniform vec3 offset;
1060
+ out vec4 vColor;
1061
+ #ifdef FLAT_SHADING
1062
+ out vec4 position_commonspace;
1063
+ #endif
1064
+ void main(void) {
1065
+ vec2 common_position = offset.xy;
1066
+ float scale = offset.z;
1067
+ int yIndex = - (gl_InstanceID / BLOCK_WIDTH);
1068
+ int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);
1069
+ common_position += scale * vec2(float(xIndex), float(yIndex));
1070
+ vec4 color = isStroke ? instanceLineColors : instanceFillColors;
1071
+ float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);
1072
+ float cellWidth = coverage * scale;
1073
+ geometry.position = vec4(common_position, 0.0, 1.0);
1074
+ if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
1075
+ geometry.position.xyz -= project_uCommonOrigin;
1076
+ }
1077
+ float elevation = 0.0;
1078
+ float strokeOffsetRatio = 1.0;
1079
+ if (extruded) {
1080
+ elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;
1081
+ } else if (stroked) {
1082
+ float halfOffset = project_pixel_size(widthScale) / cellWidth;
1083
+ if (isStroke) {
1084
+ strokeOffsetRatio -= sign(positions.z) * halfOffset;
1085
+ } else {
1086
+ strokeOffsetRatio -= halfOffset;
1087
+ }
1088
+ }
1089
+ geometry.pickingColor = instancePickingColors;
1090
+ vec2 offset = (vec2(0.5) + positions.xy * strokeOffsetRatio) * cellWidth * shouldRender;
1091
+ vec3 pos = vec3(offset, project_size(elevation));
1092
+ DECKGL_FILTER_SIZE(pos, geometry);
1093
+ geometry.position.xyz += pos;
1094
+ gl_Position = project_common_position_to_clipspace(geometry.position);
1095
+ geometry.normal = project_normal(normals);
1096
+ DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
1097
+ if (extruded && !isStroke) {
1098
+ #ifdef FLAT_SHADING
1099
+ position_commonspace = geometry.position;
1100
+ vColor = vec4(color.rgb, color.a * opacity);
1101
+ #else
1102
+ vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);
1103
+ vColor = vec4(lightColor, color.a * opacity);
1104
+ #endif
1105
+ } else {
1106
+ vColor = vec4(color.rgb, color.a * opacity);
1107
+ }
1108
+ DECKGL_FILTER_COLOR(vColor, geometry);
1109
+ }
1110
+ `;
1111
+
1112
+ // dist/layers/raster-layer.js
1113
+ var defaultProps6 = {
1114
+ ...import_layers2.ColumnLayer.defaultProps,
1115
+ extruded: false,
1116
+ diskResolution: 4,
1117
+ vertices: [
1118
+ [-0.5, -0.5],
1119
+ [0.5, -0.5],
1120
+ [0.5, 0.5],
1121
+ [-0.5, 0.5]
1122
+ ]
1123
+ };
1124
+ var _RasterColumnLayer = class extends import_layers2.ColumnLayer {
1125
+ getShaders() {
1126
+ const shaders = super.getShaders();
1127
+ const data = this.props.data;
1128
+ const BLOCK_WIDTH = data.data.blockSize ?? Math.sqrt(data.length);
1129
+ return { ...shaders, defines: { ...shaders.defines, BLOCK_WIDTH }, vs: raster_layer_vertex_glsl_default };
1130
+ }
1131
+ initializeState() {
1132
+ const attributeManager = this.getAttributeManager();
1133
+ attributeManager.addInstanced({
1134
+ instanceElevations: {
1135
+ size: 1,
1136
+ transition: true,
1137
+ accessor: "getElevation"
1138
+ },
1139
+ instanceFillColors: {
1140
+ size: this.props.colorFormat.length,
1141
+ type: "unorm8",
1142
+ transition: true,
1143
+ accessor: "getFillColor",
1144
+ defaultValue: [0, 0, 0, 255]
1145
+ },
1146
+ instanceLineColors: {
1147
+ size: this.props.colorFormat.length,
1148
+ type: "unorm8",
1149
+ transition: true,
1150
+ accessor: "getLineColor",
1151
+ defaultValue: [255, 255, 255, 255]
1152
+ }
1153
+ });
1154
+ }
1155
+ };
1156
+ var RasterColumnLayer = _RasterColumnLayer;
1157
+ (() => {
1158
+ _RasterColumnLayer.layerName = "RasterColumnLayer";
1159
+ })();
1160
+ var _RasterLayer = class extends import_core8.CompositeLayer {
1161
+ renderLayers() {
1162
+ const { data, getElevation, getFillColor, getLineColor, getLineWidth, tileIndex, updateTriggers } = this.props;
1163
+ if (!data || !tileIndex)
1164
+ return null;
1165
+ const blockSize = data.blockSize ?? 0;
1166
+ const [xOffset, yOffset, scale] = quadbinToOffset(tileIndex);
1167
+ const offset = [xOffset, yOffset, scale / blockSize];
1168
+ const CellLayer = this.getSubLayerClass("column", RasterColumnLayer);
1169
+ return new CellLayer(this.props, this.getSubLayerProps({
1170
+ id: "cell",
1171
+ updateTriggers,
1172
+ getElevation: this.getSubLayerAccessor(getElevation),
1173
+ getFillColor: this.getSubLayerAccessor(getFillColor),
1174
+ getLineColor: this.getSubLayerAccessor(getLineColor),
1175
+ getLineWidth: this.getSubLayerAccessor(getLineWidth)
1176
+ }), {
1177
+ data: {
1178
+ data,
1179
+ length: blockSize * blockSize
1180
+ },
1181
+ offset
1182
+ });
1183
+ }
1184
+ getSubLayerAccessor(accessor) {
1185
+ if (typeof accessor !== "function") {
1186
+ return super.getSubLayerAccessor(accessor);
1187
+ }
1188
+ return (object, info) => {
1189
+ const { data, index } = info;
1190
+ const binaryData = data.data;
1191
+ const proxy = createBinaryProxy(binaryData.cells, index);
1192
+ return accessor({ properties: proxy }, info);
1193
+ };
1194
+ }
1195
+ };
1196
+ var RasterLayer = _RasterLayer;
1197
+ (() => {
1198
+ _RasterLayer.layerName = "RasterLayer";
1199
+ })();
1200
+ (() => {
1201
+ _RasterLayer.defaultProps = defaultProps6;
1202
+ })();
1203
+
1204
+ // dist/layers/raster-tile-layer.js
1205
+ var renderSubLayers3 = (props) => {
1206
+ var _a, _b;
1207
+ const tileIndex = (_b = (_a = props.tile) == null ? void 0 : _a.index) == null ? void 0 : _b.q;
1208
+ if (!tileIndex)
1209
+ return null;
1210
+ return new RasterLayer(props, { tileIndex });
1211
+ };
1212
+ var defaultProps7 = {
1213
+ data: TilejsonPropType,
1214
+ tileSize: DEFAULT_TILE_SIZE
1215
+ };
1216
+ var _RasterTileLayer = class extends import_core9.CompositeLayer {
1217
+ getLoadOptions() {
1218
+ const loadOptions = super.getLoadOptions() || {};
1219
+ const tileJSON = this.props.data;
1220
+ injectAccessToken(loadOptions, tileJSON.accessToken);
1221
+ return loadOptions;
1222
+ }
1223
+ renderLayers() {
1224
+ const tileJSON = this.props.data;
1225
+ if (!tileJSON)
1226
+ return null;
1227
+ const { tiles: data, minzoom: minZoom, maxzoom: maxZoom } = tileJSON;
1228
+ return [
1229
+ new SpatialIndexTileLayer(this.props, {
1230
+ id: `raster-tile-layer-${this.props.id}`,
1231
+ data,
1232
+ TilesetClass: QuadbinTileset2D,
1233
+ renderSubLayers: renderSubLayers3,
1234
+ minZoom,
1235
+ maxZoom,
1236
+ loadOptions: this.getLoadOptions()
1237
+ })
1238
+ ];
1239
+ }
1240
+ };
1241
+ var RasterTileLayer = _RasterTileLayer;
1242
+ (() => {
1243
+ _RasterTileLayer.layerName = "RasterTileLayer";
1244
+ })();
1245
+ (() => {
1246
+ _RasterTileLayer.defaultProps = defaultProps7;
1247
+ })();
1248
+
1249
+ // dist/layers/vector-tile-layer.js
1250
+ var import_core10 = require("@loaders.gl/core");
1251
+
1252
+ // dist/layers/schema/carto-properties-tile.js
1253
+ var TileReader4 = class {
1254
+ static read(pbf, end) {
1255
+ return pbf.readFields(TileReader4._readField, { properties: [], numericProps: {} }, end);
1256
+ }
1257
+ static _readField(tag, obj, pbf) {
1258
+ if (tag === 1)
1259
+ obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
1260
+ else if (tag === 2) {
1261
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
1262
+ obj.numericProps[entry.key] = entry.value;
1263
+ }
1264
+ }
1265
+ };
1266
+
1267
+ // dist/layers/schema/carto-properties-tile-loader.js
1268
+ var CartoPropertiesTileLoader = {
1269
+ name: "CARTO Properties Tile",
1270
+ version: "1",
1271
+ id: "cartoPropertiesTile",
1272
+ module: "carto",
1273
+ extensions: ["pbf"],
1274
+ mimeTypes: ["application/vnd.carto-properties-tile"],
1275
+ category: "geometry",
1276
+ worker: false,
1277
+ parse: async (arrayBuffer, options) => parseCartoPropertiesTile(arrayBuffer, options),
1278
+ parseSync: parseCartoPropertiesTile,
1279
+ options: {}
1280
+ };
1281
+ function parseCartoPropertiesTile(arrayBuffer, options) {
1282
+ if (!arrayBuffer)
1283
+ return null;
1284
+ return parsePbf(arrayBuffer, TileReader4);
1285
+ }
1286
+ var carto_properties_tile_loader_default = CartoPropertiesTileLoader;
1287
+
1288
+ // dist/layers/schema/carto-vector-tile-loader.js
1289
+ var import_earcut = __toESM(require("earcut"), 1);
1290
+ var VERSION3 = true ? "9.0.0-beta.11" : "latest";
1291
+ var id3 = "cartoVectorTile";
1292
+ var DEFAULT_OPTIONS3 = {
1293
+ cartoVectorTile: {
1294
+ workerUrl: getWorkerUrl(id3, VERSION3)
1295
+ }
1296
+ };
1297
+ var CartoVectorTileLoader = {
1298
+ name: "CARTO Vector Tile",
1299
+ version: VERSION3,
1300
+ id: id3,
1301
+ module: "carto",
1302
+ extensions: ["pbf"],
1303
+ mimeTypes: ["application/vnd.carto-vector-tile"],
1304
+ category: "geometry",
1305
+ parse: async (arrayBuffer, options) => parseCartoVectorTile(arrayBuffer, options),
1306
+ parseSync: parseCartoVectorTile,
1307
+ worker: true,
1308
+ options: DEFAULT_OPTIONS3
1309
+ };
1310
+ function triangulatePolygon(polygons, target, { startPosition, endPosition, indices }) {
1311
+ const coordLength = polygons.positions.size;
1312
+ const start = startPosition * coordLength;
1313
+ const end = endPosition * coordLength;
1314
+ const polygonPositions = polygons.positions.value.subarray(start, end);
1315
+ const holes = indices.slice(1).map((n) => n - startPosition);
1316
+ const triangles = (0, import_earcut.default)(polygonPositions, holes, coordLength);
1317
+ for (let t = 0, tl = triangles.length; t < tl; ++t) {
1318
+ target.push(startPosition + triangles[t]);
1319
+ }
1320
+ }
1321
+ function triangulate(polygons) {
1322
+ const { polygonIndices, primitivePolygonIndices } = polygons;
1323
+ const triangles = [];
1324
+ let rangeStart = 0;
1325
+ for (let i = 0; i < polygonIndices.value.length - 1; i++) {
1326
+ const startPosition = polygonIndices.value[i];
1327
+ const endPosition = polygonIndices.value[i + 1];
1328
+ const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);
1329
+ const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);
1330
+ rangeStart = rangeEnd;
1331
+ triangulatePolygon(polygons, triangles, { startPosition, endPosition, indices });
1332
+ }
1333
+ polygons.triangles = { value: new Uint32Array(triangles), size: 1 };
1334
+ }
1335
+ function parseCartoVectorTile(arrayBuffer, options) {
1336
+ if (!arrayBuffer)
1337
+ return null;
1338
+ const tile = parsePbf(arrayBuffer, TileReader2);
1339
+ if (tile.polygons && !tile.polygons.triangles) {
1340
+ triangulate(tile.polygons);
1341
+ }
1342
+ return tile;
1343
+ }
1344
+ var carto_vector_tile_loader_default = CartoVectorTileLoader;
1345
+
1346
+ // dist/layers/vector-tile-layer.js
1347
+ var import_extensions = require("@deck.gl/extensions");
1348
+ var import_geo_layers6 = require("@deck.gl/geo-layers");
1349
+ var import_layers3 = require("@deck.gl/layers");
1350
+ var import_gis = require("@loaders.gl/gis");
1351
+ (0, import_core10.registerLoaders)([carto_properties_tile_loader_default, carto_vector_tile_loader_default]);
1352
+ var defaultProps8 = {
1353
+ ...import_geo_layers6.MVTLayer.defaultProps,
1354
+ data: TilejsonPropType,
1355
+ dataComparator: TilejsonPropType.equal,
1356
+ tileSize: DEFAULT_TILE_SIZE
1357
+ };
1358
+ var _VectorTileLayer = class extends import_geo_layers6.MVTLayer {
1359
+ constructor(...propObjects) {
1360
+ super(...propObjects);
1361
+ }
1362
+ initializeState() {
1363
+ super.initializeState();
1364
+ this.setState({ binary: true });
1365
+ }
1366
+ updateState(parameters) {
1367
+ const { props } = parameters;
1368
+ if (props.data) {
1369
+ super.updateState(parameters);
1370
+ const formatTiles = new URL(props.data.tiles[0]).searchParams.get("formatTiles");
1371
+ const mvt = formatTiles === "mvt";
1372
+ this.setState({ mvt });
1373
+ }
1374
+ }
1375
+ getLoadOptions() {
1376
+ const loadOptions = super.getLoadOptions() || {};
1377
+ const tileJSON = this.props.data;
1378
+ injectAccessToken(loadOptions, tileJSON.accessToken);
1379
+ loadOptions.gis = { format: "binary" };
1380
+ return loadOptions;
1381
+ }
1382
+ async getTileData(tile) {
1383
+ const tileJSON = this.props.data;
1384
+ const { tiles, properties_tiles } = tileJSON;
1385
+ const url = (0, import_geo_layers6._getURLFromTemplate)(tiles, tile);
1386
+ if (!url) {
1387
+ return Promise.reject("Invalid URL");
1388
+ }
1389
+ const loadOptions = this.getLoadOptions();
1390
+ const { fetch: fetch2 } = this.props;
1391
+ const { signal } = tile;
1392
+ const geometryFetch = fetch2(url, { propName: "data", layer: this, loadOptions, signal });
1393
+ if (!properties_tiles) {
1394
+ return await geometryFetch;
1395
+ }
1396
+ const propertiesUrl = (0, import_geo_layers6._getURLFromTemplate)(properties_tiles, tile);
1397
+ if (!propertiesUrl) {
1398
+ return Promise.reject("Invalid properties URL");
1399
+ }
1400
+ const attributesFetch = fetch2(propertiesUrl, {
1401
+ propName: "data",
1402
+ layer: this,
1403
+ loadOptions,
1404
+ signal
1405
+ });
1406
+ const [geometry, attributes] = await Promise.all([geometryFetch, attributesFetch]);
1407
+ if (!geometry)
1408
+ return null;
1409
+ return attributes ? mergeBoundaryData(geometry, attributes) : geometry;
1410
+ }
1411
+ renderSubLayers(props) {
1412
+ if (props.data === null) {
1413
+ return null;
1414
+ }
1415
+ if (this.state.mvt) {
1416
+ return super.renderSubLayers(props);
1417
+ }
1418
+ const tileBbox = props.tile.bbox;
1419
+ const { west, south, east, north } = tileBbox;
1420
+ const subLayerProps = {
1421
+ ...props,
1422
+ autoHighlight: false,
1423
+ extensions: [new import_extensions.ClipExtension(), ...props.extensions || []],
1424
+ clipBounds: [west, south, east, north]
1425
+ };
1426
+ const subLayer = new import_layers3.GeoJsonLayer(subLayerProps);
1427
+ return subLayer;
1428
+ }
1429
+ getPickingInfo(params) {
1430
+ const info = super.getPickingInfo(params);
1431
+ if (this.state.binary && info.index !== -1) {
1432
+ const { data } = params.sourceLayer.props;
1433
+ info.object = (0, import_gis.binaryToGeojson)(data, {
1434
+ globalFeatureId: info.index
1435
+ });
1436
+ }
1437
+ return info;
1438
+ }
1439
+ };
1440
+ var VectorTileLayer = _VectorTileLayer;
1441
+ (() => {
1442
+ _VectorTileLayer.layerName = "VectorTileLayer";
1443
+ })();
1444
+ (() => {
1445
+ _VectorTileLayer.defaultProps = defaultProps8;
1446
+ })();
1447
+
1448
+ // dist/basemap.js
1449
+ var baseUrl = "https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json";
1450
+ var basemap_default = {
1451
+ VOYAGER: baseUrl.replace("{basemap}", "voyager"),
1452
+ POSITRON: baseUrl.replace("{basemap}", "positron"),
1453
+ DARK_MATTER: baseUrl.replace("{basemap}", "dark-matter"),
1454
+ VOYAGER_NOLABELS: baseUrl.replace("{basemap}", "voyager-nolabels"),
1455
+ POSITRON_NOLABELS: baseUrl.replace("{basemap}", "positron-nolabels"),
1456
+ DARK_MATTER_NOLABELS: baseUrl.replace("{basemap}", "dark-matter-nolabels")
1457
+ };
1458
+
1459
+ // dist/style/color-bins-style.js
1460
+ var import_d3_scale = require("d3-scale");
1461
+
1462
+ // dist/style/palette.js
1463
+ var cartoColors = __toESM(require("cartocolor"), 1);
1464
+ var DEFAULT_PALETTE = "PurpOr";
1465
+ var NULL_COLOR = [204, 204, 204];
1466
+ var OTHERS_COLOR = [119, 119, 119];
1467
+ function getPalette(name, numCategories) {
1468
+ const palette = cartoColors[name];
1469
+ let paletteIndex = numCategories;
1470
+ assert(palette, `Palette "${name}" not found. Expected a CARTOColors string`);
1471
+ const palettesColorVariants = Object.keys(palette).filter((p) => p !== "tags").map(Number);
1472
+ const longestPaletteIndex = Math.max(...palettesColorVariants);
1473
+ const smallestPaletteIndex = Math.min(...palettesColorVariants);
1474
+ if (!Number.isInteger(numCategories) || numCategories > longestPaletteIndex) {
1475
+ paletteIndex = longestPaletteIndex;
1476
+ } else if (numCategories < smallestPaletteIndex) {
1477
+ paletteIndex = smallestPaletteIndex;
1478
+ }
1479
+ let colors = palette[paletteIndex];
1480
+ if (palette.tags && palette.tags.includes("qualitative")) {
1481
+ colors = colors.slice(0, -1);
1482
+ }
1483
+ return colors.map((c) => hexToRgb(c));
1484
+ }
1485
+ function hexToRgb(hex) {
1486
+ let result = /^#?([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$/i.exec(hex);
1487
+ if (result) {
1488
+ return [
1489
+ parseInt(result[1] + result[1], 16),
1490
+ parseInt(result[2] + result[2], 16),
1491
+ parseInt(result[3] + result[3], 16),
1492
+ 255
1493
+ ];
1494
+ }
1495
+ result = /^#?([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$/i.exec(hex);
1496
+ if (result) {
1497
+ return [
1498
+ parseInt(result[1] + result[1], 16),
1499
+ parseInt(result[2] + result[2], 16),
1500
+ parseInt(result[3] + result[3], 16),
1501
+ parseInt(result[4] + result[4], 16)
1502
+ ];
1503
+ }
1504
+ result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
1505
+ if (result) {
1506
+ return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16), 255];
1507
+ }
1508
+ result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
1509
+ assert(result, `Hexadecimal color "${hex}" was not parsed correctly`);
1510
+ return [
1511
+ parseInt(result[1], 16),
1512
+ parseInt(result[2], 16),
1513
+ parseInt(result[3], 16),
1514
+ parseInt(result[4], 16)
1515
+ ];
1516
+ }
1517
+
1518
+ // dist/style/utils.js
1519
+ var ALLOWED_ATTR_TYPES = Object.freeze(["function", "string"]);
1520
+ function getAttrValue(attr, d) {
1521
+ var _a;
1522
+ assert(typeof d === "object", 'Expected "data" to be an object');
1523
+ assert(ALLOWED_ATTR_TYPES.includes(typeof attr), 'Expected "attr" to be a function or string');
1524
+ if (typeof attr === "function") {
1525
+ return attr(d);
1526
+ }
1527
+ return (_a = d == null ? void 0 : d.properties) == null ? void 0 : _a[attr];
1528
+ }
1529
+
1530
+ // dist/style/color-bins-style.js
1531
+ function colorBins({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR }) {
1532
+ assert(Array.isArray(domain), 'Expected "domain" to be an array of numbers');
1533
+ const palette = typeof colors === "string" ? getPalette(colors, domain.length + 1) : colors;
1534
+ const color = (0, import_d3_scale.scaleThreshold)().domain(domain).range(palette);
1535
+ return (d) => {
1536
+ const value = getAttrValue(attr, d);
1537
+ return typeof value === "number" && Number.isFinite(value) ? color(value) : nullColor;
1538
+ };
1539
+ }
1540
+
1541
+ // dist/style/color-categories-style.js
1542
+ function colorCategories({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR, othersColor = OTHERS_COLOR }) {
1543
+ assert(Array.isArray(domain), 'Expected "domain" to be an array of numbers or strings');
1544
+ const colorsByCategory = {};
1545
+ const palette = typeof colors === "string" ? getPalette(colors, domain.length) : colors;
1546
+ for (const [i, c] of domain.entries()) {
1547
+ colorsByCategory[c] = palette[i];
1548
+ }
1549
+ return (d) => {
1550
+ const value = getAttrValue(attr, d);
1551
+ return typeof value === "number" && Number.isFinite(value) || typeof value === "string" ? colorsByCategory[value] || othersColor : nullColor;
1552
+ };
1553
+ }
1554
+
1555
+ // dist/style/color-continuous-style.js
1556
+ var import_d3_scale2 = require("d3-scale");
1557
+ function colorContinuous({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR }) {
1558
+ assert(Array.isArray(domain), 'Expected "domain" to be an array of numbers');
1559
+ const palette = typeof colors === "string" ? getPalette(colors, domain.length) : colors;
1560
+ const color = (0, import_d3_scale2.scaleLinear)().domain(domain).range(palette);
1561
+ return (d) => {
1562
+ const value = getAttrValue(attr, d);
1563
+ return typeof value === "number" && Number.isFinite(value) ? color(value) : nullColor;
1564
+ };
1565
+ }
1566
+
1567
+ // dist/api/carto-api-error.js
1568
+ var CartoAPIError = class extends Error {
1569
+ constructor(error, errorContext, response) {
1570
+ let responseString = "Failed to connect";
1571
+ if (response) {
1572
+ responseString = "Server returned: ";
1573
+ if (response.status === 400) {
1574
+ responseString += "Bad request";
1575
+ } else if (response.status === 401 || response.status === 403) {
1576
+ responseString += "Unauthorized access";
1577
+ } else if (response.status === 404) {
1578
+ responseString += "Not found";
1579
+ } else {
1580
+ responseString += "Error";
1581
+ }
1582
+ responseString += ` (${response.status}):`;
1583
+ }
1584
+ responseString += ` ${error.message || error}`;
1585
+ let message = `${errorContext.requestType} API request failed`;
1586
+ message += `
1587
+ ${responseString}`;
1588
+ for (const key of Object.keys(errorContext)) {
1589
+ if (key === "requestType")
1590
+ continue;
1591
+ message += `
1592
+ ${formatErrorKey(key)}: ${errorContext[key]}`;
1593
+ }
1594
+ message += "\n";
1595
+ super(message);
1596
+ this.name = "CartoAPIError";
1597
+ this.response = response;
1598
+ this.error = error;
1599
+ this.errorContext = errorContext;
1600
+ }
1601
+ };
1602
+ function formatErrorKey(key) {
1603
+ return key.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase());
1604
+ }
1605
+
1606
+ // dist/api/common.js
1607
+ var import_core11 = require("@deck.gl/core");
1608
+ var DEFAULT_API_BASE_URL = "https://gcp-us-east1.api.carto.com";
1609
+ var DEFAULT_CLIENT = "deck-gl-carto";
1610
+ var V3_MINOR_VERSION = "3.4";
1611
+ var MAX_GET_LENGTH = 8192;
1612
+ var DEFAULT_PARAMETERS = {
1613
+ v: V3_MINOR_VERSION,
1614
+ deckglVersion: import_core11.VERSION
1615
+ };
1616
+ var DEFAULT_HEADERS = {
1617
+ Accept: "application/json",
1618
+ "Content-Type": "application/json"
1619
+ };
1620
+
1621
+ // dist/api/endpoints.js
1622
+ function joinPath(...args) {
1623
+ return args.map((part) => part.endsWith("/") ? part.slice(0, -1) : part).join("/");
1624
+ }
1625
+ function buildV3Path(apiBaseUrl, version, endpoint, ...rest) {
1626
+ return joinPath(apiBaseUrl, version, endpoint, ...rest);
1627
+ }
1628
+ function buildPublicMapUrl({ apiBaseUrl, cartoMapId }) {
1629
+ return buildV3Path(apiBaseUrl, "v3", "maps", "public", cartoMapId);
1630
+ }
1631
+ function buildStatsUrl({ attribute, apiBaseUrl, connectionName, source, type }) {
1632
+ if (type === "query") {
1633
+ return buildV3Path(apiBaseUrl, "v3", "stats", connectionName, attribute);
1634
+ }
1635
+ return buildV3Path(apiBaseUrl, "v3", "stats", connectionName, source, attribute);
1636
+ }
1637
+ function buildSourceUrl({ apiBaseUrl, connectionName, endpoint }) {
1638
+ return buildV3Path(apiBaseUrl, "v3", "maps", connectionName, endpoint);
1639
+ }
1640
+ function buildQueryUrl({ apiBaseUrl, connectionName }) {
1641
+ return buildV3Path(apiBaseUrl, "v3", "sql", connectionName, "query");
1642
+ }
1643
+
1644
+ // dist/api/request-with-parameters.js
1645
+ function encodeParameter(name, value) {
1646
+ return `${name}=${encodeURIComponent(value)}`;
1647
+ }
1648
+ var REQUEST_CACHE = /* @__PURE__ */ new Map();
1649
+ async function requestWithParameters({ baseUrl: baseUrl2, parameters, headers: customHeaders, errorContext }) {
1650
+ const key = createCacheKey(baseUrl2, parameters || {}, customHeaders || {});
1651
+ if (REQUEST_CACHE.has(key)) {
1652
+ return REQUEST_CACHE.get(key);
1653
+ }
1654
+ const url = parameters ? createURLWithParameters(baseUrl2, parameters) : baseUrl2;
1655
+ const headers = { ...DEFAULT_HEADERS, ...customHeaders };
1656
+ const fetchPromise = url.length > MAX_GET_LENGTH ? fetch(baseUrl2, { method: "POST", body: JSON.stringify(parameters), headers }) : fetch(url, { headers });
1657
+ let response;
1658
+ const jsonPromise = fetchPromise.then((_response) => {
1659
+ response = _response;
1660
+ return response.json();
1661
+ }).then((json) => {
1662
+ if (!response || !response.ok) {
1663
+ throw new Error(json.error);
1664
+ }
1665
+ return json;
1666
+ }).catch((error) => {
1667
+ REQUEST_CACHE.delete(key);
1668
+ throw new CartoAPIError(error, errorContext, response);
1669
+ });
1670
+ REQUEST_CACHE.set(key, jsonPromise);
1671
+ return jsonPromise;
1672
+ }
1673
+ function createCacheKey(baseUrl2, parameters, headers) {
1674
+ const parameterEntries = Object.entries(parameters).sort(([a], [b]) => a > b ? 1 : -1);
1675
+ const headerEntries = Object.entries(headers).sort(([a], [b]) => a > b ? 1 : -1);
1676
+ return JSON.stringify({ baseUrl: baseUrl2, parameters: parameterEntries, headers: headerEntries });
1677
+ }
1678
+ function createURLWithParameters(baseUrl2, parameters) {
1679
+ const encodedParameters = Object.entries({ ...DEFAULT_PARAMETERS, ...parameters }).map(([key, value]) => {
1680
+ return encodeParameter(key, value);
1681
+ });
1682
+ return `${baseUrl2}?${encodedParameters.join("&")}`;
1683
+ }
1684
+
1685
+ // dist/sources/base-source.js
1686
+ var SOURCE_DEFAULTS = {
1687
+ apiBaseUrl: DEFAULT_API_BASE_URL,
1688
+ clientId: DEFAULT_CLIENT,
1689
+ format: "tilejson",
1690
+ headers: {}
1691
+ };
1692
+ async function baseSource(endpoint, options, urlParameters) {
1693
+ const { accessToken, connectionName, cache, ...optionalOptions } = options;
1694
+ const mergedOptions = { ...SOURCE_DEFAULTS, accessToken, connectionName, endpoint };
1695
+ for (const key in optionalOptions) {
1696
+ if (optionalOptions[key]) {
1697
+ mergedOptions[key] = optionalOptions[key];
1698
+ }
1699
+ }
1700
+ const baseUrl2 = buildSourceUrl(mergedOptions);
1701
+ const { clientId, format } = mergedOptions;
1702
+ const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };
1703
+ const parameters = { client: clientId, ...urlParameters };
1704
+ const errorContext = {
1705
+ requestType: "Map instantiation",
1706
+ connection: options.connectionName,
1707
+ type: endpoint,
1708
+ source: JSON.stringify(parameters, void 0, 2)
1709
+ };
1710
+ const mapInstantiation = await requestWithParameters({
1711
+ baseUrl: baseUrl2,
1712
+ parameters,
1713
+ headers,
1714
+ errorContext
1715
+ });
1716
+ const dataUrl = mapInstantiation[format].url[0];
1717
+ if (cache) {
1718
+ cache.value = parseInt(new URL(dataUrl).searchParams.get("cache") || "", 10);
1719
+ }
1720
+ errorContext.requestType = "Map data";
1721
+ if (format === "tilejson") {
1722
+ const json = await requestWithParameters({
1723
+ baseUrl: dataUrl,
1724
+ headers,
1725
+ errorContext
1726
+ });
1727
+ if (accessToken) {
1728
+ json.accessToken = accessToken;
1729
+ }
1730
+ return json;
1731
+ }
1732
+ return await requestWithParameters({
1733
+ baseUrl: dataUrl,
1734
+ headers,
1735
+ errorContext
1736
+ });
1737
+ }
1738
+
1739
+ // dist/sources/boundary-query-source.js
1740
+ var boundaryQuerySource = async function(options) {
1741
+ const { columns, filters, tilesetTableName, matchingColumn = "id", propertiesSqlQuery, queryParameters } = options;
1742
+ const urlParameters = {
1743
+ tilesetTableName,
1744
+ matchingColumn,
1745
+ propertiesSqlQuery
1746
+ };
1747
+ if (columns) {
1748
+ urlParameters.columns = columns.join(",");
1749
+ }
1750
+ if (filters) {
1751
+ urlParameters.filters = JSON.stringify(filters);
1752
+ }
1753
+ if (queryParameters) {
1754
+ urlParameters.queryParameters = JSON.stringify(queryParameters);
1755
+ }
1756
+ return baseSource("boundary", options, urlParameters);
1757
+ };
1758
+
1759
+ // dist/sources/boundary-table-source.js
1760
+ var boundaryTableSource = async function(options) {
1761
+ const { filters, tilesetTableName, columns, matchingColumn = "id", propertiesTableName } = options;
1762
+ const urlParameters = {
1763
+ tilesetTableName,
1764
+ matchingColumn,
1765
+ propertiesTableName
1766
+ };
1767
+ if (columns) {
1768
+ urlParameters.columns = columns.join(",");
1769
+ }
1770
+ if (filters) {
1771
+ urlParameters.filters = JSON.stringify(filters);
1772
+ }
1773
+ return baseSource("boundary", options, urlParameters);
1774
+ };
1775
+
1776
+ // dist/sources/h3-query-source.js
1777
+ var h3QuerySource = async function(options) {
1778
+ const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3, sqlQuery, spatialDataColumn = "h3", queryParameters } = options;
1779
+ const urlParameters = {
1780
+ aggregationExp,
1781
+ spatialDataColumn,
1782
+ spatialDataType: "h3",
1783
+ q: sqlQuery
1784
+ };
1785
+ if (aggregationResLevel) {
1786
+ urlParameters.aggregationResLevel = String(aggregationResLevel);
1787
+ }
1788
+ if (queryParameters) {
1789
+ urlParameters.queryParameters = JSON.stringify(queryParameters);
1790
+ }
1791
+ return baseSource("query", options, urlParameters);
1792
+ };
1793
+
1794
+ // dist/sources/h3-table-source.js
1795
+ var h3TableSource = async function(options) {
1796
+ const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3, spatialDataColumn = "h3", tableName } = options;
1797
+ const urlParameters = {
1798
+ aggregationExp,
1799
+ name: tableName,
1800
+ spatialDataColumn,
1801
+ spatialDataType: "h3"
1802
+ };
1803
+ if (aggregationResLevel) {
1804
+ urlParameters.aggregationResLevel = String(aggregationResLevel);
1805
+ }
1806
+ return baseSource("table", options, urlParameters);
1807
+ };
1808
+
1809
+ // dist/sources/h3-tileset-source.js
1810
+ var h3TilesetSource = async function(options) {
1811
+ const { tableName } = options;
1812
+ const urlParameters = { name: tableName };
1813
+ return baseSource("tileset", options, urlParameters);
1814
+ };
1815
+
1816
+ // dist/sources/raster-source.js
1817
+ var rasterSource = async function(options) {
1818
+ const { tableName } = options;
1819
+ const urlParameters = { name: tableName };
1820
+ return baseSource("raster", options, urlParameters);
1821
+ };
1822
+
1823
+ // dist/sources/quadbin-query-source.js
1824
+ var quadbinQuerySource = async function(options) {
1825
+ const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN, sqlQuery, spatialDataColumn = "quadbin", queryParameters } = options;
1826
+ const urlParameters = {
1827
+ aggregationExp,
1828
+ q: sqlQuery,
1829
+ spatialDataColumn,
1830
+ spatialDataType: "quadbin"
1831
+ };
1832
+ if (aggregationResLevel) {
1833
+ urlParameters.aggregationResLevel = String(aggregationResLevel);
1834
+ }
1835
+ if (queryParameters) {
1836
+ urlParameters.queryParameters = JSON.stringify(queryParameters);
1837
+ }
1838
+ return baseSource("query", options, urlParameters);
1839
+ };
1840
+
1841
+ // dist/sources/quadbin-table-source.js
1842
+ var quadbinTableSource = async function(options) {
1843
+ const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN, spatialDataColumn = "quadbin", tableName } = options;
1844
+ const urlParameters = {
1845
+ aggregationExp,
1846
+ name: tableName,
1847
+ spatialDataColumn,
1848
+ spatialDataType: "quadbin"
1849
+ };
1850
+ if (aggregationResLevel) {
1851
+ urlParameters.aggregationResLevel = String(aggregationResLevel);
1852
+ }
1853
+ return baseSource("table", options, urlParameters);
1854
+ };
1855
+
1856
+ // dist/sources/quadbin-tileset-source.js
1857
+ var quadbinTilesetSource = async function(options) {
1858
+ const { tableName } = options;
1859
+ const urlParameters = { name: tableName };
1860
+ return baseSource("tileset", options, urlParameters);
1861
+ };
1862
+
1863
+ // dist/sources/vector-query-source.js
1864
+ var vectorQuerySource = async function(options) {
1865
+ const { columns, filters, spatialDataColumn = "geom", sqlQuery, tileResolution = DEFAULT_TILE_RESOLUTION, queryParameters } = options;
1866
+ const urlParameters = {
1867
+ spatialDataColumn,
1868
+ spatialDataType: "geo",
1869
+ tileResolution: tileResolution.toString(),
1870
+ q: sqlQuery
1871
+ };
1872
+ if (columns) {
1873
+ urlParameters.columns = columns.join(",");
1874
+ }
1875
+ if (filters) {
1876
+ urlParameters.filters = JSON.stringify(filters);
1877
+ }
1878
+ if (queryParameters) {
1879
+ urlParameters.queryParameters = JSON.stringify(queryParameters);
1880
+ }
1881
+ return baseSource("query", options, urlParameters);
1882
+ };
1883
+
1884
+ // dist/sources/vector-table-source.js
1885
+ var vectorTableSource = async function(options) {
1886
+ const { columns, filters, spatialDataColumn = "geom", tableName, tileResolution = DEFAULT_TILE_RESOLUTION } = options;
1887
+ const urlParameters = {
1888
+ name: tableName,
1889
+ spatialDataColumn,
1890
+ spatialDataType: "geo",
1891
+ tileResolution: tileResolution.toString()
1892
+ };
1893
+ if (columns) {
1894
+ urlParameters.columns = columns.join(",");
1895
+ }
1896
+ if (filters) {
1897
+ urlParameters.filters = JSON.stringify(filters);
1898
+ }
1899
+ return baseSource("table", options, urlParameters);
1900
+ };
1901
+
1902
+ // dist/sources/vector-tileset-source.js
1903
+ var vectorTilesetSource = async function(options) {
1904
+ const { tableName } = options;
1905
+ const urlParameters = { name: tableName };
1906
+ return baseSource("tileset", options, urlParameters);
1907
+ };
1908
+
1909
+ // dist/api/parse-map.js
1910
+ var import_constants12 = require("@luma.gl/constants");
1911
+ var import_core12 = require("@deck.gl/core");
1912
+
1913
+ // dist/api/layer-map.js
1914
+ var import_d3_array = require("d3-array");
1915
+ var import_d3_color = require("d3-color");
1916
+ var import_d3_scale3 = require("d3-scale");
1917
+ var import_d3_format = require("d3-format");
1918
+ var import_moment_timezone = __toESM(require("moment-timezone"), 1);
1919
+ var import_aggregation_layers = require("@deck.gl/aggregation-layers");
1920
+ var import_layers4 = require("@deck.gl/layers");
1921
+ var import_geo_layers7 = require("@deck.gl/geo-layers");
1922
+ var SCALE_FUNCS = {
1923
+ linear: import_d3_scale3.scaleLinear,
1924
+ ordinal: import_d3_scale3.scaleOrdinal,
1925
+ log: import_d3_scale3.scaleLog,
1926
+ point: import_d3_scale3.scalePoint,
1927
+ quantile: import_d3_scale3.scaleQuantile,
1928
+ quantize: import_d3_scale3.scaleQuantize,
1929
+ sqrt: import_d3_scale3.scaleSqrt,
1930
+ custom: import_d3_scale3.scaleThreshold,
1931
+ identity: scaleIdentity
1932
+ };
1933
+ function identity(v) {
1934
+ return v;
1935
+ }
1936
+ var UNKNOWN_COLOR = "#868d91";
1937
+ var AGGREGATION = {
1938
+ average: "MEAN",
1939
+ maximum: "MAX",
1940
+ minimum: "MIN",
1941
+ sum: "SUM"
1942
+ };
1943
+ var OPACITY_MAP = {
1944
+ getFillColor: "opacity",
1945
+ getLineColor: "strokeOpacity",
1946
+ getTextColor: "opacity"
1947
+ };
1948
+ var AGGREGATION_FUNC = {
1949
+ "count unique": (values, accessor) => (0, import_d3_array.groupSort)(values, (v) => v.length, accessor).length,
1950
+ median: import_d3_array.median,
1951
+ mode: (values, accessor) => (0, import_d3_array.groupSort)(values, (v) => v.length, accessor).pop(),
1952
+ stddev: import_d3_array.deviation,
1953
+ variance: import_d3_array.variance
1954
+ };
1955
+ var hexToRGBA = (c) => {
1956
+ const { r, g, b, opacity } = (0, import_d3_color.rgb)(c);
1957
+ return [r, g, b, 255 * opacity];
1958
+ };
1959
+ var sharedPropMap = {
1960
+ color: "getFillColor",
1961
+ isVisible: "visible",
1962
+ label: "cartoLabel",
1963
+ textLabel: {
1964
+ alignment: "getTextAlignmentBaseline",
1965
+ anchor: "getTextAnchor",
1966
+ color: "getTextColor",
1967
+ size: "getTextSize"
1968
+ },
1969
+ visConfig: {
1970
+ enable3d: "extruded",
1971
+ elevationScale: "elevationScale",
1972
+ filled: "filled",
1973
+ strokeColor: "getLineColor",
1974
+ stroked: "stroked",
1975
+ thickness: "getLineWidth",
1976
+ radius: "getPointRadius",
1977
+ wireframe: "wireframe"
1978
+ }
1979
+ };
1980
+ var customMarkersPropsMap = {
1981
+ color: "getIconColor",
1982
+ visConfig: {
1983
+ radius: "getIconSize"
1984
+ }
1985
+ };
1986
+ var aggregationVisConfig = {
1987
+ colorAggregation: (x) => ({ colorAggregation: AGGREGATION[x] || AGGREGATION.sum }),
1988
+ colorRange: (x) => ({ colorRange: x.colors.map(hexToRGBA) }),
1989
+ coverage: "coverage",
1990
+ elevationPercentile: ["elevationLowerPercentile", "elevationUpperPercentile"],
1991
+ percentile: ["lowerPercentile", "upperPercentile"]
1992
+ };
1993
+ var defaultProps9 = {
1994
+ lineMiterLimit: 2,
1995
+ lineWidthUnits: "pixels",
1996
+ pointRadiusUnits: "pixels",
1997
+ rounded: true,
1998
+ wrapLongitude: false
1999
+ };
2000
+ function mergePropMaps(a = {}, b = {}) {
2001
+ return { ...a, ...b, visConfig: { ...a.visConfig, ...b.visConfig } };
2002
+ }
2003
+ function getLayer(type, config, dataset) {
2004
+ var _a, _b;
2005
+ let basePropMap = sharedPropMap;
2006
+ if ((_a = config.visConfig) == null ? void 0 : _a.customMarkers) {
2007
+ basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);
2008
+ }
2009
+ if (type === "mvt" || type === "tileset" || type === "h3" || type === "quadbin") {
2010
+ return getTileLayer(dataset, basePropMap);
2011
+ }
2012
+ const geoColumn = dataset == null ? void 0 : dataset.geoColumn;
2013
+ const getPosition = (d) => d[geoColumn].coordinates;
2014
+ const hexagonId = (_b = config.columns) == null ? void 0 : _b.hex_id;
2015
+ const layerTypeDefs = {
2016
+ point: {
2017
+ Layer: import_layers4.GeoJsonLayer,
2018
+ propMap: {
2019
+ columns: {
2020
+ altitude: (x) => ({ parameters: { depthTest: Boolean(x) } })
2021
+ },
2022
+ visConfig: { outline: "stroked" }
2023
+ }
2024
+ },
2025
+ geojson: {
2026
+ Layer: import_layers4.GeoJsonLayer
2027
+ },
2028
+ grid: {
2029
+ Layer: import_aggregation_layers.CPUGridLayer,
2030
+ propMap: { visConfig: { ...aggregationVisConfig, worldUnitSize: (x) => ({ cellSize: 1e3 * x }) } },
2031
+ defaultProps: { getPosition }
2032
+ },
2033
+ heatmap: {
2034
+ Layer: import_aggregation_layers.HeatmapLayer,
2035
+ propMap: { visConfig: { ...aggregationVisConfig, radius: "radiusPixels" } },
2036
+ defaultProps: { getPosition }
2037
+ },
2038
+ hexagon: {
2039
+ Layer: import_aggregation_layers.HexagonLayer,
2040
+ propMap: { visConfig: { ...aggregationVisConfig, worldUnitSize: (x) => ({ radius: 1e3 * x }) } },
2041
+ defaultProps: { getPosition }
2042
+ },
2043
+ hexagonId: {
2044
+ Layer: import_geo_layers7.H3HexagonLayer,
2045
+ propMap: { visConfig: { coverage: "coverage" } },
2046
+ defaultProps: { getHexagon: (d) => d[hexagonId], stroked: false }
2047
+ }
2048
+ };
2049
+ const layer = layerTypeDefs[type];
2050
+ assert(layer, `Unsupported layer type: ${type}`);
2051
+ return {
2052
+ ...layer,
2053
+ propMap: mergePropMaps(basePropMap, layer.propMap),
2054
+ defaultProps: { ...defaultProps9, ...layer.defaultProps }
2055
+ };
2056
+ }
2057
+ function layerFromTileDataset(scheme, type) {
2058
+ if (type === "raster") {
2059
+ return RasterTileLayer;
2060
+ }
2061
+ if (scheme === "h3") {
2062
+ return H3TileLayer;
2063
+ }
2064
+ if (scheme === "quadbin") {
2065
+ return QuadbinTileLayer;
2066
+ }
2067
+ return VectorTileLayer;
2068
+ }
2069
+ function getTileLayer(dataset, basePropMap) {
2070
+ const { aggregationExp, aggregationResLevel, data: { scheme } } = dataset;
2071
+ return {
2072
+ Layer: layerFromTileDataset(scheme),
2073
+ propMap: basePropMap,
2074
+ defaultProps: {
2075
+ ...defaultProps9,
2076
+ ...aggregationExp && { aggregationExp },
2077
+ ...aggregationResLevel && { aggregationResLevel },
2078
+ uniqueIdProperty: "geoid"
2079
+ }
2080
+ };
2081
+ }
2082
+ function domainFromAttribute(attribute, scaleType, scaleLength) {
2083
+ if (scaleType === "ordinal" || scaleType === "point") {
2084
+ return attribute.categories.map((c) => c.category).filter((c) => c !== void 0 && c !== null);
2085
+ }
2086
+ if (scaleType === "quantile" && attribute.quantiles) {
2087
+ return attribute.quantiles.global ? attribute.quantiles.global[scaleLength] : attribute.quantiles[scaleLength];
2088
+ }
2089
+ let { min } = attribute;
2090
+ if (scaleType === "log" && min === 0) {
2091
+ min = 1e-5;
2092
+ }
2093
+ return [min, attribute.max];
2094
+ }
2095
+ function domainFromValues(values, scaleType) {
2096
+ if (scaleType === "ordinal" || scaleType === "point") {
2097
+ return (0, import_d3_array.groupSort)(values, (g) => -g.length, (d) => d);
2098
+ } else if (scaleType === "quantile") {
2099
+ return values.sort((a, b) => a - b);
2100
+ } else if (scaleType === "log") {
2101
+ const [d0, d1] = (0, import_d3_array.extent)(values);
2102
+ return [d0 === 0 ? 1e-5 : d0, d1];
2103
+ }
2104
+ return (0, import_d3_array.extent)(values);
2105
+ }
2106
+ function calculateDomain(data, name, scaleType, scaleLength) {
2107
+ if (data.tilestats) {
2108
+ const { attributes } = data.tilestats.layers[0];
2109
+ const attribute = attributes.find((a) => a.attribute === name);
2110
+ return domainFromAttribute(attribute, scaleType, scaleLength);
2111
+ } else if (data.features) {
2112
+ const values = data.features.map(({ properties }) => properties[name]);
2113
+ return domainFromValues(values, scaleType);
2114
+ } else if (Array.isArray(data) && data[0][name] !== void 0) {
2115
+ const values = data.map((properties) => properties[name]);
2116
+ return domainFromValues(values, scaleType);
2117
+ }
2118
+ return [0, 1];
2119
+ }
2120
+ function normalizeAccessor(accessor, data) {
2121
+ if (data.features || data.tilestats) {
2122
+ return (object, info) => {
2123
+ if (object) {
2124
+ return accessor(object.properties || object.__source.object.properties);
2125
+ }
2126
+ const { data: data2, index } = info;
2127
+ const proxy = createBinaryProxy(data2, index);
2128
+ return accessor(proxy);
2129
+ };
2130
+ }
2131
+ return accessor;
2132
+ }
2133
+ function opacityToAlpha(opacity) {
2134
+ return opacity !== void 0 ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
2135
+ }
2136
+ function getAccessorKeys(name, aggregation) {
2137
+ let keys = [name];
2138
+ if (aggregation) {
2139
+ keys = keys.concat([aggregation, aggregation.toUpperCase()].map((a) => `${name}_${a}`));
2140
+ }
2141
+ return keys;
2142
+ }
2143
+ function findAccessorKey(keys, properties) {
2144
+ for (const key of keys) {
2145
+ if (key in properties) {
2146
+ return [key];
2147
+ }
2148
+ }
2149
+ throw new Error(`Could not find property for any accessor key: ${keys}`);
2150
+ }
2151
+ function getColorValueAccessor({ name }, colorAggregation, data) {
2152
+ const aggregator = AGGREGATION_FUNC[colorAggregation];
2153
+ const accessor = (values) => aggregator(values, (p) => p[name]);
2154
+ return normalizeAccessor(accessor, data);
2155
+ }
2156
+ function getColorAccessor({ name, colorColumn }, scaleType, { aggregation, range }, opacity, data) {
2157
+ const scale = calculateLayerScale(colorColumn || name, scaleType, range, data);
2158
+ const alpha = opacityToAlpha(opacity);
2159
+ let accessorKeys = getAccessorKeys(name, aggregation);
2160
+ const accessor = (properties) => {
2161
+ if (!(accessorKeys[0] in properties)) {
2162
+ accessorKeys = findAccessorKey(accessorKeys, properties);
2163
+ }
2164
+ const propertyValue = properties[accessorKeys[0]];
2165
+ const { r, g, b } = (0, import_d3_color.rgb)(scale(propertyValue));
2166
+ return [r, g, b, propertyValue === null ? 0 : alpha];
2167
+ };
2168
+ return normalizeAccessor(accessor, data);
2169
+ }
2170
+ function calculateLayerScale(name, scaleType, range, data) {
2171
+ const scale = SCALE_FUNCS[scaleType]();
2172
+ let domain = [];
2173
+ let scaleColor = [];
2174
+ if (scaleType !== "identity") {
2175
+ const { colorMap, colors } = range;
2176
+ if (Array.isArray(colorMap)) {
2177
+ colorMap.forEach(([value, color]) => {
2178
+ domain.push(value);
2179
+ scaleColor.push(color);
2180
+ });
2181
+ } else {
2182
+ domain = calculateDomain(data, name, scaleType, colors.length);
2183
+ scaleColor = colors;
2184
+ }
2185
+ if (scaleType === "ordinal") {
2186
+ domain = domain.slice(0, scaleColor.length);
2187
+ }
2188
+ }
2189
+ scale.domain(domain);
2190
+ scale.range(scaleColor);
2191
+ scale.unknown(UNKNOWN_COLOR);
2192
+ return scale;
2193
+ }
2194
+ var FALLBACK_ICON = "data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==";
2195
+ function getIconUrlAccessor(field, range, { fallbackUrl, maxIconSize, useMaskedIcons }, data) {
2196
+ const urlToUnpackedIcon = (url) => ({
2197
+ id: `${url}@@${maxIconSize}`,
2198
+ url,
2199
+ width: maxIconSize,
2200
+ height: maxIconSize,
2201
+ mask: useMaskedIcons
2202
+ });
2203
+ let unknownValue = fallbackUrl || FALLBACK_ICON;
2204
+ if (range == null ? void 0 : range.othersMarker) {
2205
+ unknownValue = range.othersMarker;
2206
+ }
2207
+ const unknownIcon = urlToUnpackedIcon(unknownValue);
2208
+ if (!range || !field) {
2209
+ return () => unknownIcon;
2210
+ }
2211
+ const mapping = {};
2212
+ for (const { value, markerUrl } of range.markerMap) {
2213
+ if (markerUrl) {
2214
+ mapping[value] = urlToUnpackedIcon(markerUrl);
2215
+ }
2216
+ }
2217
+ const accessor = (properties) => {
2218
+ const propertyValue = properties[field.name];
2219
+ return mapping[propertyValue] || unknownIcon;
2220
+ };
2221
+ return normalizeAccessor(accessor, data);
2222
+ }
2223
+ function getMaxMarkerSize(visConfig, visualChannels) {
2224
+ const { radiusRange, radius } = visConfig;
2225
+ const { radiusField, sizeField } = visualChannels;
2226
+ const field = radiusField || sizeField;
2227
+ return Math.ceil(radiusRange && field ? radiusRange[1] : radius);
2228
+ }
2229
+ function negateAccessor(accessor) {
2230
+ return typeof accessor === "function" ? (d, i) => -accessor(d, i) : -accessor;
2231
+ }
2232
+ function getSizeAccessor({ name }, scaleType, aggregation, range, data) {
2233
+ const scale = scaleType ? SCALE_FUNCS[scaleType]() : identity;
2234
+ if (scaleType) {
2235
+ if (aggregation !== "count") {
2236
+ scale.domain(calculateDomain(data, name, scaleType));
2237
+ }
2238
+ scale.range(range);
2239
+ }
2240
+ let accessorKeys = getAccessorKeys(name, aggregation);
2241
+ const accessor = (properties) => {
2242
+ if (!(accessorKeys[0] in properties)) {
2243
+ accessorKeys = findAccessorKey(accessorKeys, properties);
2244
+ }
2245
+ const propertyValue = properties[accessorKeys[0]];
2246
+ return scale(propertyValue);
2247
+ };
2248
+ return normalizeAccessor(accessor, data);
2249
+ }
2250
+ var FORMATS = {
2251
+ date: (s) => import_moment_timezone.default.utc(s).format("MM/DD/YY HH:mm:ssa"),
2252
+ integer: (0, import_d3_format.format)("i"),
2253
+ float: (0, import_d3_format.format)(".5f"),
2254
+ timestamp: (s) => import_moment_timezone.default.utc(s).format("X"),
2255
+ default: String
2256
+ };
2257
+ function getTextAccessor({ name, type }, data) {
2258
+ const format = FORMATS[type] || FORMATS.default;
2259
+ const accessor = (properties) => {
2260
+ return format(properties[name]);
2261
+ };
2262
+ return normalizeAccessor(accessor, data);
2263
+ }
2264
+
2265
+ // dist/api/parse-map.js
2266
+ var import_extensions2 = require("@deck.gl/extensions");
2267
+ var collisionFilterExtension = new import_extensions2.CollisionFilterExtension();
2268
+ function parseMap(json) {
2269
+ const { keplerMapConfig, datasets, token } = json;
2270
+ assert(keplerMapConfig.version === "v1", "Only support Kepler v1");
2271
+ const { mapState, mapStyle } = keplerMapConfig.config;
2272
+ const { layers, layerBlending, interactionConfig } = keplerMapConfig.config.visState;
2273
+ return {
2274
+ id: json.id,
2275
+ title: json.title,
2276
+ description: json.description,
2277
+ createdAt: json.createdAt,
2278
+ updatedAt: json.updatedAt,
2279
+ initialViewState: mapState,
2280
+ mapStyle,
2281
+ token,
2282
+ layers: layers.reverse().map(({ id: id4, type, config, visualChannels }) => {
2283
+ try {
2284
+ const { dataId } = config;
2285
+ const dataset = datasets.find((d) => d.id === dataId);
2286
+ assert(dataset, `No dataset matching dataId: ${dataId}`);
2287
+ const { data } = dataset;
2288
+ assert(data, `No data loaded for dataId: ${dataId}`);
2289
+ const { Layer, propMap, defaultProps: defaultProps10 } = getLayer(type, config, dataset);
2290
+ const styleProps = createStyleProps(config, propMap);
2291
+ return new Layer({
2292
+ id: id4,
2293
+ data,
2294
+ ...defaultProps10,
2295
+ ...createInteractionProps(interactionConfig),
2296
+ ...styleProps,
2297
+ ...createChannelProps(id4, type, config, visualChannels, data),
2298
+ ...createParametersProp(layerBlending, styleProps.parameters || {}),
2299
+ ...createLoadOptions(token)
2300
+ });
2301
+ } catch (e) {
2302
+ import_core12.log.error(e.message)();
2303
+ return void 0;
2304
+ }
2305
+ })
2306
+ };
2307
+ }
2308
+ function createParametersProp(layerBlending, parameters) {
2309
+ if (layerBlending === "additive") {
2310
+ parameters.blendFunc = [770, 772];
2311
+ parameters.blendEquation = 32774;
2312
+ } else if (layerBlending === "subtractive") {
2313
+ parameters.blendFunc = [1, 775, 770, 772];
2314
+ parameters.blendEquation = [32778, 32774];
2315
+ }
2316
+ return Object.keys(parameters).length ? { parameters } : {};
2317
+ }
2318
+ function createInteractionProps(interactionConfig) {
2319
+ const pickable = interactionConfig && interactionConfig.tooltip.enabled;
2320
+ return {
2321
+ autoHighlight: pickable,
2322
+ pickable
2323
+ };
2324
+ }
2325
+ function mapProps(source, target, mapping) {
2326
+ for (const sourceKey in mapping) {
2327
+ const sourceValue = source[sourceKey];
2328
+ const targetKey = mapping[sourceKey];
2329
+ if (sourceValue === void 0) {
2330
+ continue;
2331
+ }
2332
+ if (typeof targetKey === "string") {
2333
+ target[targetKey] = sourceValue;
2334
+ } else if (typeof targetKey === "function") {
2335
+ const [key, value] = Object.entries(targetKey(sourceValue))[0];
2336
+ target[key] = value;
2337
+ } else if (typeof targetKey === "object") {
2338
+ mapProps(sourceValue, target, targetKey);
2339
+ }
2340
+ }
2341
+ }
2342
+ function createStyleProps(config, mapping) {
2343
+ const result = {};
2344
+ mapProps(config, result, mapping);
2345
+ if (result.stroked && !result.getLineColor) {
2346
+ result.getLineColor = result.getFillColor;
2347
+ }
2348
+ for (const colorAccessor in OPACITY_MAP) {
2349
+ if (Array.isArray(result[colorAccessor])) {
2350
+ const color = [...result[colorAccessor]];
2351
+ const opacityKey = OPACITY_MAP[colorAccessor];
2352
+ const opacity = config.visConfig[opacityKey];
2353
+ color[3] = opacityToAlpha(opacity);
2354
+ result[colorAccessor] = color;
2355
+ }
2356
+ }
2357
+ result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];
2358
+ return result;
2359
+ }
2360
+ function createChannelProps(id4, type, config, visualChannels, data) {
2361
+ var _a;
2362
+ const { colorField, colorScale, radiusField, radiusScale, sizeField, sizeScale, strokeColorField, strokeColorScale } = visualChannels;
2363
+ let { heightField, heightScale } = visualChannels;
2364
+ if (type === "hexagonId") {
2365
+ heightField = sizeField;
2366
+ heightScale = sizeScale;
2367
+ }
2368
+ const { textLabel, visConfig } = config;
2369
+ const result = {};
2370
+ if (type === "grid" || type === "hexagon") {
2371
+ result.colorScaleType = colorScale;
2372
+ if (colorField) {
2373
+ const { colorAggregation } = config.visConfig;
2374
+ if (!AGGREGATION[colorAggregation]) {
2375
+ result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);
2376
+ } else {
2377
+ result.getColorWeight = (d) => d[colorField.name];
2378
+ }
2379
+ }
2380
+ } else if (colorField) {
2381
+ const { colorAggregation: aggregation, colorRange: range } = visConfig;
2382
+ result.getFillColor = getColorAccessor(
2383
+ colorField,
2384
+ colorScale,
2385
+ { aggregation, range },
2386
+ visConfig.opacity,
2387
+ data
2388
+ );
2389
+ }
2390
+ if (type === "point") {
2391
+ const altitude = (_a = config.columns) == null ? void 0 : _a.altitude;
2392
+ if (altitude) {
2393
+ result.dataTransform = (data2) => {
2394
+ data2.features.forEach(({ geometry, properties }) => {
2395
+ const { type: type2, coordinates } = geometry;
2396
+ if (type2 === "Point") {
2397
+ coordinates[2] = properties[altitude];
2398
+ }
2399
+ });
2400
+ return data2;
2401
+ };
2402
+ }
2403
+ }
2404
+ if (radiusField || sizeField) {
2405
+ result.getPointRadius = getSizeAccessor(
2406
+ radiusField || sizeField,
2407
+ radiusScale || sizeScale,
2408
+ visConfig.sizeAggregation,
2409
+ visConfig.radiusRange || visConfig.sizeRange,
2410
+ data
2411
+ );
2412
+ }
2413
+ if (strokeColorField) {
2414
+ const fallbackOpacity = type === "point" ? visConfig.opacity : 1;
2415
+ const opacity = visConfig.strokeOpacity !== void 0 ? visConfig.strokeOpacity : fallbackOpacity;
2416
+ const { strokeColorAggregation: aggregation, strokeColorRange: range } = visConfig;
2417
+ result.getLineColor = getColorAccessor(
2418
+ strokeColorField,
2419
+ strokeColorScale,
2420
+ { aggregation, range },
2421
+ opacity,
2422
+ data
2423
+ );
2424
+ }
2425
+ if (heightField && visConfig.enable3d) {
2426
+ result.getElevation = getSizeAccessor(
2427
+ heightField,
2428
+ heightScale,
2429
+ visConfig.heightAggregation,
2430
+ visConfig.heightRange || visConfig.sizeRange,
2431
+ data
2432
+ );
2433
+ }
2434
+ if (visConfig.customMarkers) {
2435
+ const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);
2436
+ const { getPointRadius, getFillColor } = result;
2437
+ const { customMarkersUrl, customMarkersRange, filled: useMaskedIcons } = visConfig;
2438
+ result.pointType = "icon";
2439
+ result.getIcon = getIconUrlAccessor(visualChannels.customMarkersField, customMarkersRange, { fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons }, data);
2440
+ result._subLayerProps = {
2441
+ "points-icon": {
2442
+ loadOptions: {
2443
+ image: {
2444
+ type: "imagebitmap"
2445
+ },
2446
+ imagebitmap: {
2447
+ resizeWidth: maxIconSize,
2448
+ resizeHeight: maxIconSize,
2449
+ resizeQuality: "high"
2450
+ }
2451
+ }
2452
+ }
2453
+ };
2454
+ if (getFillColor && useMaskedIcons) {
2455
+ result.getIconColor = getFillColor;
2456
+ }
2457
+ if (getPointRadius) {
2458
+ result.getIconSize = getPointRadius;
2459
+ }
2460
+ if (visualChannels.rotationField) {
2461
+ result.getIconAngle = negateAccessor(getSizeAccessor(visualChannels.rotationField, void 0, null, void 0, data));
2462
+ }
2463
+ } else if (type === "point" || type === "tileset") {
2464
+ result.pointType = "circle";
2465
+ }
2466
+ if (textLabel && textLabel.length && textLabel[0].field) {
2467
+ const [mainLabel, secondaryLabel] = textLabel;
2468
+ const collisionGroup = id4;
2469
+ ({
2470
+ alignment: result.getTextAlignmentBaseline,
2471
+ anchor: result.getTextAnchor,
2472
+ color: result.getTextColor,
2473
+ outlineColor: result.textOutlineColor,
2474
+ size: result.textSizeScale
2475
+ } = mainLabel);
2476
+ const { color: getSecondaryColor, field: secondaryField, outlineColor: secondaryOutlineColor, size: secondarySizeScale } = secondaryLabel || {};
2477
+ result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);
2478
+ const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);
2479
+ result.pointType = `${result.pointType}+text`;
2480
+ result.textCharacterSet = "auto";
2481
+ result.textFontFamily = "Inter, sans";
2482
+ result.textFontSettings = { sdf: true };
2483
+ result.textFontWeight = 600;
2484
+ result.textOutlineWidth = 3;
2485
+ result._subLayerProps = {
2486
+ ...result._subLayerProps,
2487
+ "points-text": {
2488
+ type: PointLabelLayer,
2489
+ extensions: [collisionFilterExtension],
2490
+ collisionEnabled: true,
2491
+ collisionGroup,
2492
+ ...result.getPointRadius ? { getRadius: result.getPointRadius } : { radiusScale: visConfig.radius },
2493
+ ...secondaryField && {
2494
+ getSecondaryText,
2495
+ getSecondaryColor,
2496
+ secondarySizeScale,
2497
+ secondaryOutlineColor
2498
+ }
2499
+ }
2500
+ };
2501
+ }
2502
+ return result;
2503
+ }
2504
+ function createLoadOptions(accessToken) {
2505
+ return {
2506
+ loadOptions: { fetch: { headers: { Authorization: `Bearer ${accessToken}` } } }
2507
+ };
2508
+ }
2509
+
2510
+ // dist/api/fetch-map.js
2511
+ async function _fetchMapDataset(dataset, accessToken, apiBaseUrl, clientId, headers) {
2512
+ const { aggregationExp, aggregationResLevel, connectionName, columns, format, geoColumn, source, type, queryParameters } = dataset;
2513
+ const cache = {};
2514
+ const globalOptions = {
2515
+ accessToken,
2516
+ apiBaseUrl,
2517
+ cache,
2518
+ clientId,
2519
+ connectionName,
2520
+ format,
2521
+ headers
2522
+ };
2523
+ if (type === "tileset") {
2524
+ dataset.data = await vectorTilesetSource({ ...globalOptions, tableName: source });
2525
+ } else {
2526
+ const [spatialDataType, spatialDataColumn] = geoColumn ? geoColumn.split(":") : ["geom"];
2527
+ if (spatialDataType === "geom") {
2528
+ const options = { ...globalOptions, spatialDataColumn };
2529
+ if (type === "table") {
2530
+ dataset.data = await vectorTableSource({ ...options, columns, tableName: source });
2531
+ } else if (type === "query") {
2532
+ dataset.data = await vectorQuerySource({
2533
+ ...options,
2534
+ columns,
2535
+ sqlQuery: source,
2536
+ queryParameters
2537
+ });
2538
+ }
2539
+ } else if (spatialDataType === "h3") {
2540
+ const options = { ...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn };
2541
+ if (type === "table") {
2542
+ dataset.data = await h3TableSource({ ...options, tableName: source });
2543
+ } else if (type === "query") {
2544
+ dataset.data = await h3QuerySource({ ...options, sqlQuery: source, queryParameters });
2545
+ }
2546
+ } else if (spatialDataType === "quadbin") {
2547
+ const options = { ...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn };
2548
+ if (type === "table") {
2549
+ dataset.data = await quadbinTableSource({ ...options, tableName: source });
2550
+ } else if (type === "query") {
2551
+ dataset.data = await quadbinQuerySource({ ...options, sqlQuery: source, queryParameters });
2552
+ }
2553
+ }
2554
+ }
2555
+ let cacheChanged = true;
2556
+ if (cache.value) {
2557
+ cacheChanged = dataset.cache !== cache.value;
2558
+ dataset.cache = cache.value;
2559
+ }
2560
+ return cacheChanged;
2561
+ }
2562
+ async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
2563
+ const { connectionName, data, id: id4, source, type, queryParameters } = dataset;
2564
+ const errorContext = {
2565
+ requestType: "Tile stats",
2566
+ connection: connectionName,
2567
+ type,
2568
+ source
2569
+ };
2570
+ if (!("tilestats" in data)) {
2571
+ throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id4}`), errorContext);
2572
+ }
2573
+ const baseUrl2 = buildStatsUrl({ attribute, apiBaseUrl, ...dataset });
2574
+ const client = new URLSearchParams(data.tiles[0]).get("client");
2575
+ const headers = { Authorization: `Bearer ${accessToken}` };
2576
+ const parameters = {};
2577
+ if (client) {
2578
+ parameters.client = client;
2579
+ }
2580
+ if (type === "query") {
2581
+ parameters.q = source;
2582
+ if (queryParameters) {
2583
+ parameters.queryParameters = JSON.stringify(queryParameters);
2584
+ }
2585
+ }
2586
+ const stats = await requestWithParameters({
2587
+ baseUrl: baseUrl2,
2588
+ headers,
2589
+ parameters,
2590
+ errorContext
2591
+ });
2592
+ const { attributes } = data.tilestats.layers[0];
2593
+ const index = attributes.findIndex((d) => d.attribute === attribute);
2594
+ attributes[index] = stats;
2595
+ return true;
2596
+ }
2597
+ async function fillInMapDatasets({ datasets, token }, clientId, apiBaseUrl, headers) {
2598
+ const promises = datasets.map((dataset) => _fetchMapDataset(dataset, token, apiBaseUrl, clientId, headers));
2599
+ return await Promise.all(promises);
2600
+ }
2601
+ async function fillInTileStats({ datasets, keplerMapConfig, token }, apiBaseUrl) {
2602
+ var _a;
2603
+ const attributes = [];
2604
+ const { layers } = keplerMapConfig.config.visState;
2605
+ for (const layer of layers) {
2606
+ for (const channel of Object.keys(layer.visualChannels)) {
2607
+ const attribute = (_a = layer.visualChannels[channel]) == null ? void 0 : _a.name;
2608
+ if (attribute) {
2609
+ const dataset = datasets.find((d) => d.id === layer.config.dataId);
2610
+ if (dataset && dataset.type !== "tileset" && dataset.data.tilestats) {
2611
+ attributes.push({ attribute, dataset });
2612
+ }
2613
+ }
2614
+ }
2615
+ }
2616
+ const filteredAttributes = [];
2617
+ for (const a of attributes) {
2618
+ if (!filteredAttributes.find(({ attribute, dataset }) => attribute === a.attribute && dataset === a.dataset)) {
2619
+ filteredAttributes.push(a);
2620
+ }
2621
+ }
2622
+ const promises = filteredAttributes.map(({ attribute, dataset }) => _fetchTilestats(attribute, dataset, token, apiBaseUrl));
2623
+ return await Promise.all(promises);
2624
+ }
2625
+ async function fetchMap({ apiBaseUrl = DEFAULT_API_BASE_URL, cartoMapId, clientId = DEFAULT_CLIENT, headers = {}, autoRefresh, onNewData }) {
2626
+ assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: "XXXX-XXXX-XXXX"})');
2627
+ assert(apiBaseUrl, "Must define apiBaseUrl");
2628
+ if (autoRefresh || onNewData) {
2629
+ assert(onNewData, "Must define `onNewData` when using autoRefresh");
2630
+ assert(typeof onNewData === "function", "`onNewData` must be a function");
2631
+ assert(typeof autoRefresh === "number" && autoRefresh > 0, "`autoRefresh` must be a positive number");
2632
+ }
2633
+ const baseUrl2 = buildPublicMapUrl({ apiBaseUrl, cartoMapId });
2634
+ const errorContext = { requestType: "Public map", mapId: cartoMapId };
2635
+ const map = await requestWithParameters({ baseUrl: baseUrl2, headers, errorContext });
2636
+ let stopAutoRefresh;
2637
+ if (autoRefresh) {
2638
+ const intervalId = setInterval(async () => {
2639
+ const changed = await fillInMapDatasets(map, clientId, apiBaseUrl, {
2640
+ ...headers,
2641
+ "If-Modified-Since": new Date().toUTCString()
2642
+ });
2643
+ if (onNewData && changed.some((v) => v === true)) {
2644
+ onNewData(parseMap(map));
2645
+ }
2646
+ }, autoRefresh * 1e3);
2647
+ stopAutoRefresh = () => {
2648
+ clearInterval(intervalId);
2649
+ };
2650
+ }
2651
+ const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(({ type }) => type === "geojson" || type === "point");
2652
+ const geojsonDatasetIds = geojsonLayers.map(({ config }) => config.dataId);
2653
+ map.datasets.forEach((dataset) => {
2654
+ if (geojsonDatasetIds.includes(dataset.id)) {
2655
+ const { config } = geojsonLayers.find(({ config: config2 }) => config2.dataId === dataset.id);
2656
+ dataset.format = "geojson";
2657
+ if (!dataset.geoColumn && config.columns.geojson) {
2658
+ dataset.geoColumn = config.columns.geojson;
2659
+ }
2660
+ }
2661
+ });
2662
+ await fillInMapDatasets(map, clientId, apiBaseUrl, headers);
2663
+ await fillInTileStats(map, apiBaseUrl);
2664
+ const out = { ...parseMap(map), ...{ stopAutoRefresh } };
2665
+ const textLayers = out.layers.filter((layer) => {
2666
+ const pointType = layer.props.pointType || "";
2667
+ return pointType.includes("text");
2668
+ });
2669
+ if (textLayers.length && window.FontFace && !document.fonts.check("12px Inter")) {
2670
+ const font = new FontFace("Inter", "url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)");
2671
+ await font.load().then((f) => document.fonts.add(f));
2672
+ }
2673
+ return out;
2674
+ }
2675
+
2676
+ // dist/api/query.js
2677
+ var query = async function(options) {
2678
+ const { apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl, connectionName, sqlQuery, queryParameters } = options;
2679
+ const urlParameters = { q: sqlQuery };
2680
+ if (queryParameters) {
2681
+ urlParameters.queryParameters = JSON.stringify(queryParameters);
2682
+ }
2683
+ const baseUrl2 = buildQueryUrl({ apiBaseUrl, connectionName });
2684
+ const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };
2685
+ const errorContext = {
2686
+ requestType: "SQL",
2687
+ connection: options.connectionName,
2688
+ type: "query",
2689
+ source: JSON.stringify(urlParameters, void 0, 2)
2690
+ };
2691
+ return await requestWithParameters({
2692
+ baseUrl: baseUrl2,
2693
+ parameters: urlParameters,
2694
+ headers,
2695
+ errorContext
2696
+ });
2697
+ };
2698
+
2699
+ // dist/index.js
2700
+ var CARTO_LAYERS = {
2701
+ H3TileLayer,
2702
+ _PointLabelLayer: PointLabelLayer,
2703
+ QuadbinTileLayer,
2704
+ RasterTileLayer,
2705
+ VectorTileLayer
2706
+ };
2707
+ var CARTO_SOURCES = {
2708
+ boundaryQuerySource,
2709
+ boundaryTableSource,
2710
+ h3QuerySource,
2711
+ h3TableSource,
2712
+ h3TilesetSource,
2713
+ rasterSource,
2714
+ quadbinQuerySource,
2715
+ quadbinTableSource,
2716
+ quadbinTilesetSource,
2717
+ vectorQuerySource,
2718
+ vectorTableSource,
2719
+ vectorTilesetSource
2720
+ };
2721
+ //# sourceMappingURL=index.cjs.map