@deck.gl/carto 9.0.40 → 9.1.0-beta.3

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 (290) hide show
  1. package/dist/api/basemap.d.ts +2 -1
  2. package/dist/api/basemap.d.ts.map +1 -1
  3. package/dist/api/basemap.js +4 -0
  4. package/dist/api/basemap.js.map +1 -0
  5. package/dist/api/fetch-map.d.ts.map +1 -1
  6. package/dist/api/fetch-map.js +33 -28
  7. package/dist/api/fetch-map.js.map +1 -0
  8. package/dist/api/index.d.ts +1 -4
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +4 -2
  11. package/dist/api/index.js.map +1 -0
  12. package/dist/api/layer-map.d.ts.map +1 -1
  13. package/dist/api/layer-map.js +7 -3
  14. package/dist/api/layer-map.js.map +1 -0
  15. package/dist/api/parse-map.d.ts.map +1 -1
  16. package/dist/api/parse-map.js +4 -0
  17. package/dist/api/parse-map.js.map +1 -0
  18. package/dist/api/types.d.ts +0 -56
  19. package/dist/api/types.d.ts.map +1 -1
  20. package/dist/api/types.js +5 -20
  21. package/dist/api/types.js.map +1 -0
  22. package/dist/basemap.d.ts +2 -1
  23. package/dist/basemap.d.ts.map +1 -1
  24. package/dist/basemap.js +5 -1
  25. package/dist/basemap.js.map +1 -0
  26. package/dist/cartoRasterTile-worker.js +147 -18
  27. package/dist/cartoSpatialTile-worker.js +150 -19
  28. package/dist/cartoVectorTile-worker.js +151 -19
  29. package/dist/constants.d.ts +0 -3
  30. package/dist/constants.d.ts.map +1 -1
  31. package/dist/constants.js +4 -3
  32. package/dist/constants.js.map +1 -0
  33. package/dist/dist.dev.js +4262 -3235
  34. package/dist/index.cjs +263 -555
  35. package/dist/index.cjs.map +4 -4
  36. package/dist/index.d.ts +20 -21
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +12 -7
  39. package/dist/index.js.map +1 -0
  40. package/dist/layers/cluster-tile-layer.d.ts +1 -1
  41. package/dist/layers/cluster-tile-layer.d.ts.map +1 -1
  42. package/dist/layers/cluster-tile-layer.js +5 -0
  43. package/dist/layers/cluster-tile-layer.js.map +1 -0
  44. package/dist/layers/cluster-utils.d.ts.map +1 -1
  45. package/dist/layers/cluster-utils.js +4 -0
  46. package/dist/layers/cluster-utils.js.map +1 -0
  47. package/dist/layers/h3-tile-layer.d.ts +1 -1
  48. package/dist/layers/h3-tile-layer.d.ts.map +1 -1
  49. package/dist/layers/h3-tile-layer.js +4 -0
  50. package/dist/layers/h3-tile-layer.js.map +1 -0
  51. package/dist/layers/h3-tileset-2d.d.ts.map +1 -1
  52. package/dist/layers/h3-tileset-2d.js +4 -0
  53. package/dist/layers/h3-tileset-2d.js.map +1 -0
  54. package/dist/layers/heatmap-tile-layer.d.ts +1 -1
  55. package/dist/layers/heatmap-tile-layer.d.ts.map +1 -1
  56. package/dist/layers/heatmap-tile-layer.js +24 -7
  57. package/dist/layers/heatmap-tile-layer.js.map +1 -0
  58. package/dist/layers/heatmap.d.ts +3 -3
  59. package/dist/layers/heatmap.d.ts.map +1 -1
  60. package/dist/layers/heatmap.js +70 -36
  61. package/dist/layers/heatmap.js.map +1 -0
  62. package/dist/layers/point-label-layer.d.ts.map +1 -1
  63. package/dist/layers/point-label-layer.js +6 -2
  64. package/dist/layers/point-label-layer.js.map +1 -0
  65. package/dist/layers/post-process-utils.d.ts +1 -1
  66. package/dist/layers/post-process-utils.d.ts.map +1 -1
  67. package/dist/layers/post-process-utils.js +11 -6
  68. package/dist/layers/post-process-utils.js.map +1 -0
  69. package/dist/layers/quadbin-layer.d.ts.map +1 -1
  70. package/dist/layers/quadbin-layer.js +4 -0
  71. package/dist/layers/quadbin-layer.js.map +1 -0
  72. package/dist/layers/quadbin-tile-layer.d.ts +1 -1
  73. package/dist/layers/quadbin-tile-layer.d.ts.map +1 -1
  74. package/dist/layers/quadbin-tile-layer.js +4 -0
  75. package/dist/layers/quadbin-tile-layer.js.map +1 -0
  76. package/dist/layers/quadbin-tileset-2d.d.ts.map +1 -1
  77. package/dist/layers/quadbin-tileset-2d.js +4 -0
  78. package/dist/layers/quadbin-tileset-2d.js.map +1 -0
  79. package/dist/layers/quadbin-utils.d.ts.map +1 -1
  80. package/dist/layers/quadbin-utils.js +4 -0
  81. package/dist/layers/quadbin-utils.js.map +1 -0
  82. package/dist/layers/raster-layer-vertex.glsl.d.ts +1 -1
  83. package/dist/layers/raster-layer-vertex.glsl.d.ts.map +1 -1
  84. package/dist/layers/raster-layer-vertex.glsl.js +21 -25
  85. package/dist/layers/raster-layer-vertex.glsl.js.map +1 -0
  86. package/dist/layers/raster-layer.d.ts +6 -6
  87. package/dist/layers/raster-layer.d.ts.map +1 -1
  88. package/dist/layers/raster-layer.js +7 -1
  89. package/dist/layers/raster-layer.js.map +1 -0
  90. package/dist/layers/raster-tile-layer.d.ts +1 -1
  91. package/dist/layers/raster-tile-layer.d.ts.map +1 -1
  92. package/dist/layers/raster-tile-layer.js +4 -0
  93. package/dist/layers/raster-tile-layer.js.map +1 -0
  94. package/dist/layers/schema/carto-properties-tile-loader.d.ts.map +1 -1
  95. package/dist/layers/schema/carto-properties-tile-loader.js +4 -0
  96. package/dist/layers/schema/carto-properties-tile-loader.js.map +1 -0
  97. package/dist/layers/schema/carto-properties-tile.d.ts.map +1 -1
  98. package/dist/layers/schema/carto-properties-tile.js +4 -0
  99. package/dist/layers/schema/carto-properties-tile.js.map +1 -0
  100. package/dist/layers/schema/carto-raster-tile-loader.d.ts.map +1 -1
  101. package/dist/layers/schema/carto-raster-tile-loader.js +6 -1
  102. package/dist/layers/schema/carto-raster-tile-loader.js.map +1 -0
  103. package/dist/layers/schema/carto-raster-tile.d.ts.map +1 -1
  104. package/dist/layers/schema/carto-raster-tile.js +4 -0
  105. package/dist/layers/schema/carto-raster-tile.js.map +1 -0
  106. package/dist/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
  107. package/dist/layers/schema/carto-spatial-tile-loader.js +5 -1
  108. package/dist/layers/schema/carto-spatial-tile-loader.js.map +1 -0
  109. package/dist/layers/schema/carto-spatial-tile.d.ts.map +1 -1
  110. package/dist/layers/schema/carto-spatial-tile.js +4 -0
  111. package/dist/layers/schema/carto-spatial-tile.js.map +1 -0
  112. package/dist/layers/schema/carto-tile.d.ts.map +1 -1
  113. package/dist/layers/schema/carto-tile.js +4 -0
  114. package/dist/layers/schema/carto-tile.js.map +1 -0
  115. package/dist/layers/schema/carto-vector-tile-loader.d.ts.map +1 -1
  116. package/dist/layers/schema/carto-vector-tile-loader.js +5 -1
  117. package/dist/layers/schema/carto-vector-tile-loader.js.map +1 -0
  118. package/dist/layers/schema/fast-pbf.d.ts.map +1 -1
  119. package/dist/layers/schema/fast-pbf.js +4 -0
  120. package/dist/layers/schema/fast-pbf.js.map +1 -0
  121. package/dist/layers/schema/spatialjson-utils.d.ts.map +1 -1
  122. package/dist/layers/schema/spatialjson-utils.js +4 -0
  123. package/dist/layers/schema/spatialjson-utils.js.map +1 -0
  124. package/dist/layers/schema/tile-loader-utils.d.ts.map +1 -1
  125. package/dist/layers/schema/tile-loader-utils.js +4 -0
  126. package/dist/layers/schema/tile-loader-utils.js.map +1 -0
  127. package/dist/layers/spatial-index-tile-layer.d.ts.map +1 -1
  128. package/dist/layers/spatial-index-tile-layer.js +4 -0
  129. package/dist/layers/spatial-index-tile-layer.js.map +1 -0
  130. package/dist/layers/utils.d.ts +2 -2
  131. package/dist/layers/utils.d.ts.map +1 -1
  132. package/dist/layers/utils.js +4 -0
  133. package/dist/layers/utils.js.map +1 -0
  134. package/dist/layers/vector-tile-layer.d.ts +1 -1
  135. package/dist/layers/vector-tile-layer.d.ts.map +1 -1
  136. package/dist/layers/vector-tile-layer.js +4 -0
  137. package/dist/layers/vector-tile-layer.js.map +1 -0
  138. package/dist/style/color-bins-style.d.ts.map +1 -1
  139. package/dist/style/color-bins-style.js +4 -0
  140. package/dist/style/color-bins-style.js.map +1 -0
  141. package/dist/style/color-categories-style.d.ts.map +1 -1
  142. package/dist/style/color-categories-style.js +4 -0
  143. package/dist/style/color-categories-style.js.map +1 -0
  144. package/dist/style/color-continuous-style.d.ts.map +1 -1
  145. package/dist/style/color-continuous-style.js +4 -0
  146. package/dist/style/color-continuous-style.js.map +1 -0
  147. package/dist/style/palette.d.ts.map +1 -1
  148. package/dist/style/palette.js +4 -0
  149. package/dist/style/palette.js.map +1 -0
  150. package/dist/style/utils.d.ts.map +1 -1
  151. package/dist/style/utils.js +4 -0
  152. package/dist/style/utils.js.map +1 -0
  153. package/dist/utils.d.ts.map +1 -1
  154. package/dist/utils.js +4 -0
  155. package/dist/utils.js.map +1 -0
  156. package/dist/workers/cartoRasterTile.js +4 -0
  157. package/dist/workers/cartoRasterTile.js.map +1 -0
  158. package/dist/workers/cartoSpatialTile.js +4 -0
  159. package/dist/workers/cartoSpatialTile.js.map +1 -0
  160. package/dist/workers/cartoVectorTile.js +4 -0
  161. package/dist/workers/cartoVectorTile.js.map +1 -0
  162. package/dist.min.js +113 -73
  163. package/package.json +13 -11
  164. package/src/api/basemap.ts +6 -1
  165. package/src/api/fetch-map.ts +56 -61
  166. package/src/api/index.ts +5 -13
  167. package/src/api/layer-map.ts +7 -3
  168. package/src/api/parse-map.ts +4 -0
  169. package/src/api/types.ts +4 -75
  170. package/src/basemap.ts +6 -2
  171. package/src/constants.ts +4 -4
  172. package/src/index.ts +19 -18
  173. package/src/layers/cluster-tile-layer.ts +6 -1
  174. package/src/layers/cluster-utils.ts +4 -0
  175. package/src/layers/h3-tile-layer.ts +5 -1
  176. package/src/layers/h3-tileset-2d.ts +4 -0
  177. package/src/layers/heatmap-tile-layer.ts +29 -8
  178. package/src/layers/heatmap.ts +8 -2
  179. package/src/layers/point-label-layer.ts +6 -2
  180. package/src/layers/post-process-utils.ts +11 -6
  181. package/src/layers/quadbin-layer.ts +4 -0
  182. package/src/layers/quadbin-tile-layer.ts +5 -1
  183. package/src/layers/quadbin-tileset-2d.ts +4 -0
  184. package/src/layers/quadbin-utils.ts +4 -0
  185. package/src/layers/raster-layer-vertex.glsl.ts +21 -27
  186. package/src/layers/raster-layer.ts +7 -1
  187. package/src/layers/raster-tile-layer.ts +6 -2
  188. package/src/layers/schema/carto-properties-tile-loader.ts +4 -0
  189. package/src/layers/schema/carto-properties-tile.ts +4 -0
  190. package/src/layers/schema/carto-raster-tile-loader.ts +7 -1
  191. package/src/layers/schema/carto-raster-tile.ts +4 -0
  192. package/src/layers/schema/carto-spatial-tile-loader.ts +4 -0
  193. package/src/layers/schema/carto-spatial-tile.ts +4 -0
  194. package/src/layers/schema/carto-tile.ts +4 -0
  195. package/src/layers/schema/carto-vector-tile-loader.ts +4 -0
  196. package/src/layers/schema/fast-pbf.ts +4 -0
  197. package/src/layers/schema/spatialjson-utils.ts +4 -0
  198. package/src/layers/schema/tile-loader-utils.ts +4 -0
  199. package/src/layers/spatial-index-tile-layer.ts +4 -0
  200. package/src/layers/utils.ts +5 -1
  201. package/src/layers/vector-tile-layer.ts +5 -1
  202. package/src/style/color-bins-style.ts +4 -0
  203. package/src/style/color-categories-style.ts +4 -0
  204. package/src/style/color-continuous-style.ts +4 -0
  205. package/src/style/palette.ts +4 -0
  206. package/src/style/utils.ts +4 -0
  207. package/src/utils.ts +4 -0
  208. package/src/workers/cartoRasterTile.ts +4 -0
  209. package/src/workers/cartoSpatialTile.ts +4 -0
  210. package/src/workers/cartoVectorTile.ts +4 -0
  211. package/dist/api/carto-api-error.d.ts +0 -19
  212. package/dist/api/carto-api-error.d.ts.map +0 -1
  213. package/dist/api/carto-api-error.js +0 -48
  214. package/dist/api/common.d.ts +0 -5
  215. package/dist/api/common.d.ts.map +0 -1
  216. package/dist/api/common.js +0 -5
  217. package/dist/api/endpoints.d.ts +0 -23
  218. package/dist/api/endpoints.d.ts.map +0 -1
  219. package/dist/api/endpoints.js +0 -22
  220. package/dist/api/query.d.ts +0 -4
  221. package/dist/api/query.d.ts.map +0 -1
  222. package/dist/api/query.js +0 -26
  223. package/dist/api/request-with-parameters.d.ts +0 -9
  224. package/dist/api/request-with-parameters.d.ts.map +0 -1
  225. package/dist/api/request-with-parameters.js +0 -86
  226. package/dist/sources/base-source.d.ts +0 -5
  227. package/dist/sources/base-source.d.ts.map +0 -1
  228. package/dist/sources/base-source.js +0 -60
  229. package/dist/sources/boundary-query-source.d.ts +0 -10
  230. package/dist/sources/boundary-query-source.d.ts.map +0 -1
  231. package/dist/sources/boundary-query-source.js +0 -18
  232. package/dist/sources/boundary-table-source.d.ts +0 -8
  233. package/dist/sources/boundary-table-source.d.ts.map +0 -1
  234. package/dist/sources/boundary-table-source.js +0 -15
  235. package/dist/sources/h3-query-source.d.ts +0 -4
  236. package/dist/sources/h3-query-source.d.ts.map +0 -1
  237. package/dist/sources/h3-query-source.js +0 -22
  238. package/dist/sources/h3-table-source.d.ts +0 -4
  239. package/dist/sources/h3-table-source.d.ts.map +0 -1
  240. package/dist/sources/h3-table-source.js +0 -19
  241. package/dist/sources/h3-tileset-source.d.ts +0 -4
  242. package/dist/sources/h3-tileset-source.d.ts.map +0 -1
  243. package/dist/sources/h3-tileset-source.js +0 -6
  244. package/dist/sources/index.d.ts +0 -28
  245. package/dist/sources/index.d.ts.map +0 -1
  246. package/dist/sources/index.js +0 -13
  247. package/dist/sources/quadbin-query-source.d.ts +0 -4
  248. package/dist/sources/quadbin-query-source.d.ts.map +0 -1
  249. package/dist/sources/quadbin-query-source.js +0 -22
  250. package/dist/sources/quadbin-table-source.d.ts +0 -4
  251. package/dist/sources/quadbin-table-source.d.ts.map +0 -1
  252. package/dist/sources/quadbin-table-source.js +0 -19
  253. package/dist/sources/quadbin-tileset-source.d.ts +0 -4
  254. package/dist/sources/quadbin-tileset-source.d.ts.map +0 -1
  255. package/dist/sources/quadbin-tileset-source.js +0 -6
  256. package/dist/sources/raster-source.d.ts +0 -4
  257. package/dist/sources/raster-source.d.ts.map +0 -1
  258. package/dist/sources/raster-source.js +0 -9
  259. package/dist/sources/types.d.ts +0 -219
  260. package/dist/sources/types.d.ts.map +0 -1
  261. package/dist/sources/types.js +0 -1
  262. package/dist/sources/vector-query-source.d.ts +0 -4
  263. package/dist/sources/vector-query-source.d.ts.map +0 -1
  264. package/dist/sources/vector-query-source.js +0 -22
  265. package/dist/sources/vector-table-source.d.ts +0 -4
  266. package/dist/sources/vector-table-source.d.ts.map +0 -1
  267. package/dist/sources/vector-table-source.js +0 -19
  268. package/dist/sources/vector-tileset-source.d.ts +0 -4
  269. package/dist/sources/vector-tileset-source.d.ts.map +0 -1
  270. package/dist/sources/vector-tileset-source.js +0 -6
  271. package/src/api/carto-api-error.ts +0 -68
  272. package/src/api/common.ts +0 -6
  273. package/src/api/endpoints.ts +0 -69
  274. package/src/api/query.ts +0 -42
  275. package/src/api/request-with-parameters.ts +0 -117
  276. package/src/sources/base-source.ts +0 -79
  277. package/src/sources/boundary-query-source.ts +0 -39
  278. package/src/sources/boundary-table-source.ts +0 -33
  279. package/src/sources/h3-query-source.ts +0 -55
  280. package/src/sources/h3-table-source.ts +0 -51
  281. package/src/sources/h3-tileset-source.ts +0 -14
  282. package/src/sources/index.ts +0 -45
  283. package/src/sources/quadbin-query-source.ts +0 -56
  284. package/src/sources/quadbin-table-source.ts +0 -52
  285. package/src/sources/quadbin-tileset-source.ts +0 -14
  286. package/src/sources/raster-source.ts +0 -17
  287. package/src/sources/types.ts +0 -231
  288. package/src/sources/vector-query-source.ts +0 -57
  289. package/src/sources/vector-table-source.ts +0 -51
  290. package/src/sources/vector-tileset-source.ts +0 -14
@@ -1,3 +1,8 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {ShaderModule} from '@luma.gl/shadertools';
1
6
  import {getResolution} from 'quadbin';
2
7
 
3
8
  import {
@@ -15,7 +20,7 @@ import {HeatmapProps, heatmap} from './heatmap';
15
20
  import {RTTModifier, PostProcessModifier} from './post-process-utils';
16
21
  import QuadbinTileLayer, {QuadbinTileLayerProps} from './quadbin-tile-layer';
17
22
  import {TilejsonPropType} from './utils';
18
- import {TilejsonResult} from '../sources';
23
+ import {TilejsonResult} from '@carto/api-client';
19
24
  import {_Tile2DHeader as Tile2DHeader} from '@deck.gl/geo-layers';
20
25
  import {Texture, TextureProps} from '@luma.gl/core';
21
26
 
@@ -64,6 +69,21 @@ function colorRangeToFlatArray(colorRange: Color[]): Uint8Array {
64
69
  return flatArray;
65
70
  }
66
71
 
72
+ const uniformBlock = `\
73
+ uniform densityUniforms {
74
+ float factor;
75
+ } density;
76
+ `;
77
+
78
+ type DensityProps = {factor: number};
79
+ const densityUniforms = {
80
+ name: 'density',
81
+ vs: uniformBlock,
82
+ uniformTypes: {
83
+ factor: 'f32'
84
+ }
85
+ } as const satisfies ShaderModule<DensityProps>;
86
+
67
87
  // Modified polygon layer to draw offscreen and output value expected by heatmap
68
88
  class RTTSolidPolygonLayer extends RTTModifier(SolidPolygonLayer) {
69
89
  static layerName = 'RTTSolidPolygonLayer';
@@ -71,16 +91,13 @@ class RTTSolidPolygonLayer extends RTTModifier(SolidPolygonLayer) {
71
91
  getShaders(type) {
72
92
  const shaders = super.getShaders(type);
73
93
  shaders.inject = {
74
- 'vs:#decl': `
75
- uniform float densityFactor;
76
- `,
77
94
  'vs:#main-end': `
78
95
  // Value from getWeight accessor
79
96
  float weight = elevations;
80
97
 
81
98
  // Keep "power" delivered to screen constant when tiles update
82
- // by outputting normalized density
83
- weight *= densityFactor;
99
+ // by outputting normalized density
100
+ weight *= density.factor;
84
101
 
85
102
  // Pack float into 3 channels to pass to heatmap shader
86
103
  // SCALE value important, as we don't want to saturate
@@ -93,15 +110,18 @@ uniform float densityFactor;
93
110
  vColor = vec4(mod(vec3(weight, floor(weight / SHIFT.yz)), 256.0), 255.0) / 255.0;
94
111
  `
95
112
  };
113
+ shaders.modules = [...shaders.modules, densityUniforms];
96
114
  return shaders;
97
115
  }
98
116
 
99
117
  draw(this, opts: any) {
100
118
  const cell = this.props!.data[0];
101
119
  const maxDensity = this.props.elevationScale;
102
- const densityFactor = unitDensityForCell(cell.id) / maxDensity;
120
+ const densityProps: DensityProps = {
121
+ factor: unitDensityForCell(cell.id) / maxDensity
122
+ };
103
123
  for (const model of this.state.models) {
104
- model.setUniforms({densityFactor});
124
+ model.shaderInputs.setProps({density: densityProps});
105
125
  }
106
126
 
107
127
  super.draw(opts);
@@ -305,6 +325,7 @@ class HeatmapTileLayer<DataT = any, ExtraProps extends {} = {}> extends Composit
305
325
  (colorTexture as any).setSubImageData({data: colors});
306
326
  } else {
307
327
  colorTexture?.destroy();
328
+ // @ts-ignore TODO v9.1
308
329
  colorTexture = this.context.device.createTexture({
309
330
  ...TEXTURE_PROPS,
310
331
  data: colors,
@@ -1,6 +1,9 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import type {ShaderPass} from '@luma.gl/shadertools';
2
6
  import {Texture} from '@luma.gl/core';
3
- const glsl = (s: TemplateStringsArray) => `${s}`;
4
7
 
5
8
  /**
6
9
  * @filter Heatmap
@@ -11,7 +14,7 @@ const glsl = (s: TemplateStringsArray) => `${s}`;
11
14
  * @param opacity Output opacity
12
15
  */
13
16
 
14
- const fs = glsl`\
17
+ const fs = /* glsl */ `\
15
18
  uniform heatmapUniforms {
16
19
  vec2 colorDomain;
17
20
  vec2 delta;
@@ -134,6 +137,7 @@ export const heatmap = {
134
137
  opacity: 'f32',
135
138
  radiusPixels: 'f32'
136
139
  },
140
+ // @ts-ignore TODO v9.1
137
141
  getUniforms: opts => {
138
142
  if (!opts) return {};
139
143
  const {
@@ -155,7 +159,9 @@ export const heatmap = {
155
159
  },
156
160
  fs,
157
161
  passes: [
162
+ // @ts-expect-error Seems typing in luma.gl should be Partial<>
158
163
  {sampler: true, uniforms: {delta: [1, 0]}},
164
+ // @ts-expect-error Seems typing in luma.gl should be Partial<>
159
165
  {sampler: true, uniforms: {delta: [0, 1]}}
160
166
  ]
161
167
  } as const satisfies ShaderPass<HeatmapProps & PassProps>;
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {
2
6
  Accessor,
3
7
  Color,
@@ -24,10 +28,10 @@ class EnhancedTextBackgroundLayer extends TextBackgroundLayer {
24
28
 
25
29
  // Modify shader so that the padding is offset by the pixel offset to ensure the padding
26
30
  // always captures the anchor point. As padding is uniform we cannot pass it a per-label value
27
- vs = vs.replaceAll('padding.', '_padding.');
31
+ vs = vs.replaceAll('textBackground.padding.', '_padding.');
28
32
  vs = vs.replace(
29
33
  'void main(void) {',
30
- 'void main(void) {\n vec4 _padding = padding + instancePixelOffsets.xyxy * vec4(1.0, 1.0, -1.0, -1.0);'
34
+ 'void main(void) {\n vec4 _padding = textBackground.padding + instancePixelOffsets.xyxy * vec4(1.0, 1.0, -1.0, -1.0);'
31
35
  );
32
36
 
33
37
  return {...shaders, vs};
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {Framebuffer, TextureProps} from '@luma.gl/core';
2
6
  import type {ShaderPass} from '@luma.gl/shadertools';
3
7
  import {
@@ -68,8 +72,8 @@ export function RTTModifier<T extends _ConstructorOf<Layer>>(BaseLayer: T): T {
68
72
  static layerName = `RTT-${BaseLayer.layerName}`;
69
73
 
70
74
  draw(this: RTTLayer, opts: any) {
71
- const {moduleParameters} = opts;
72
- const {picking} = moduleParameters;
75
+ const {shaderModuleProps} = opts;
76
+ const {picking} = shaderModuleProps;
73
77
  const postProcessLayer = getPostProcessLayer(this);
74
78
 
75
79
  if (!picking.isActive) {
@@ -134,10 +138,11 @@ export function PostProcessModifier<T extends Constructor<DrawableCompositeLayer
134
138
 
135
139
  _resizeBuffers(this: PostProcessLayer, opts: any) {
136
140
  // TODO we could likely render to a smaller buffer for better perf
137
- const {moduleParameters} = opts;
141
+ const {shaderModuleProps} = opts;
138
142
  const {viewport} = this.context;
139
- const width = moduleParameters.devicePixelRatio * viewport.width;
140
- const height = moduleParameters.devicePixelRatio * viewport.height;
143
+ const {devicePixelRatio} = shaderModuleProps.project;
144
+ const width = devicePixelRatio * viewport.width;
145
+ const height = devicePixelRatio * viewport.height;
141
146
  this.internalState.renderBuffers.forEach((fbo: Framebuffer) => fbo.resize({width, height}));
142
147
  }
143
148
 
@@ -192,7 +197,7 @@ export function PostProcessModifier<T extends Constructor<DrawableCompositeLayer
192
197
  }
193
198
 
194
199
  const fs = /* glsl */ `\
195
- vec4 copy_filterColor(vec4 color, vec2 texSize, vec2 texCoord) {
200
+ vec4 copy_filterColor_ext(vec4 color, vec2 texSize, vec2 texCoord) {
196
201
  return color;
197
202
  }
198
203
  `;
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {AccessorFunction, DefaultProps} from '@deck.gl/core';
2
6
  import {
3
7
  _GeoCellLayer as GeoCellLayer,
@@ -1,9 +1,13 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {CompositeLayer, CompositeLayerProps, Layer, LayersList, DefaultProps} from '@deck.gl/core';
2
6
  import QuadbinLayer, {QuadbinLayerProps} from './quadbin-layer';
3
7
  import QuadbinTileset2D from './quadbin-tileset-2d';
4
8
  import SpatialIndexTileLayer, {SpatialIndexTileLayerProps} from './spatial-index-tile-layer';
5
9
  import {hexToBigInt} from 'quadbin';
6
- import type {TilejsonResult} from '../sources/types';
10
+ import type {TilejsonResult} from '@carto/api-client';
7
11
  import {injectAccessToken, TilejsonPropType} from './utils';
8
12
  import {DEFAULT_TILE_SIZE} from '../constants';
9
13
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';
2
6
  import {bigIntToHex, cellToParent, cellToTile, getResolution, tileToCell} from 'quadbin';
3
7
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {worldToLngLat} from '@math.gl/web-mercator';
2
6
  import {cellToTile} from 'quadbin';
3
7
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  export default `\
2
6
  #version 300 es
3
7
  #define SHADER_NAME raster-layer-vertex-shader
@@ -11,16 +15,6 @@ in vec4 instanceLineColors;
11
15
 
12
16
  in vec3 instancePickingColors;
13
17
 
14
- // Custom uniforms
15
- uniform float opacity;
16
- uniform bool extruded;
17
- uniform bool stroked;
18
- uniform bool isStroke;
19
- uniform float coverage;
20
- uniform float elevationScale;
21
- uniform float widthScale;
22
- uniform vec3 offset;
23
-
24
18
  // Result
25
19
  out vec4 vColor;
26
20
  #ifdef FLAT_SHADING
@@ -29,8 +23,8 @@ out vec4 position_commonspace;
29
23
 
30
24
  void main(void) {
31
25
  // Rather than positioning using attribute, layout pixel grid using gl_InstanceID
32
- vec2 tileOrigin = offset.xy;
33
- float scale = offset.z;
26
+ vec2 tileOrigin = column.offset.xy;
27
+ float scale = column.widthScale; // Re-use widthScale prop to pass cell scale
34
28
 
35
29
  int yIndex = - (gl_InstanceID / BLOCK_WIDTH);
36
30
  int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);
@@ -38,18 +32,18 @@ void main(void) {
38
32
  // Avoid precision issues by applying 0.5 offset here, rather than when laying out vertices
39
33
  vec2 cellCenter = scale * vec2(float(xIndex) + 0.5, float(yIndex) - 0.5);
40
34
 
41
- vec4 color = isStroke ? instanceLineColors : instanceFillColors;
35
+ vec4 color = column.isStroke ? instanceLineColors : instanceFillColors;
42
36
 
43
37
  // if alpha == 0.0 or z < 0.0, do not render element
44
38
  float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);
45
- float cellWidth = coverage * scale;
39
+ float cellWidth = column.coverage * scale;
46
40
 
47
41
  // Get position directly from quadbin, rather than projecting
48
42
  // Important to set geometry.position before using project_ methods below
49
43
  // as geometry.worldPosition is not set (we don't know our lat/long)
50
44
  geometry.position = vec4(tileOrigin + cellCenter, 0.0, 1.0);
51
- if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
52
- geometry.position.xyz -= project_uCommonOrigin;
45
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
46
+ geometry.position.xyz -= project.commonOrigin;
53
47
  }
54
48
 
55
49
  // calculate elevation, if 3d not enabled set to 0
@@ -58,11 +52,11 @@ void main(void) {
58
52
  // calculate stroke offset
59
53
  float strokeOffsetRatio = 1.0;
60
54
 
61
- if (extruded) {
62
- elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;
63
- } else if (stroked) {
64
- float halfOffset = project_pixel_size(widthScale) / cellWidth;
65
- if (isStroke) {
55
+ if (column.extruded) {
56
+ elevation = instanceElevations * (positions.z + 1.0) / 2.0 * column.elevationScale;
57
+ } else if (column.stroked) {
58
+ float halfOffset = project_pixel_size(column.widthScale) / cellWidth;
59
+ if (column.isStroke) {
66
60
  strokeOffsetRatio -= sign(positions.z) * halfOffset;
67
61
  } else {
68
62
  strokeOffsetRatio -= halfOffset;
@@ -72,7 +66,7 @@ void main(void) {
72
66
  geometry.pickingColor = instancePickingColors;
73
67
 
74
68
  // Cell coordinates centered on origin
75
- vec2 base = positions.xy * scale * strokeOffsetRatio * coverage * shouldRender;
69
+ vec2 base = positions.xy * scale * strokeOffsetRatio * column.coverage * shouldRender;
76
70
  vec3 cell = vec3(base, project_size(elevation));
77
71
  DECKGL_FILTER_SIZE(cell, geometry);
78
72
 
@@ -83,16 +77,16 @@ void main(void) {
83
77
  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
84
78
 
85
79
  // Light calculations
86
- if (extruded && !isStroke) {
80
+ if (column.extruded && !column.isStroke) {
87
81
  #ifdef FLAT_SHADING
88
82
  position_commonspace = geometry.position;
89
- vColor = vec4(color.rgb, color.a * opacity);
83
+ vColor = vec4(color.rgb, color.a * layer.opacity);
90
84
  #else
91
- vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);
92
- vColor = vec4(lightColor, color.a * opacity);
85
+ vec3 lightColor = lighting_getLightColor(color.rgb, project.cameraPosition, geometry.position.xyz, geometry.normal);
86
+ vColor = vec4(lightColor, color.a * layer.opacity);
93
87
  #endif
94
88
  } else {
95
- vColor = vec4(color.rgb, color.a * opacity);
89
+ vColor = vec4(color.rgb, color.a * layer.opacity);
96
90
  }
97
91
 
98
92
  DECKGL_FILTER_COLOR(vColor, geometry);
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {
2
6
  Accessor,
3
7
  CompositeLayer,
@@ -115,7 +119,8 @@ export default class RasterLayer<DataT = any, ExtraProps = {}> extends Composite
115
119
 
116
120
  const blockSize = data.blockSize ?? 0;
117
121
  const [xOffset, yOffset, scale] = quadbinToOffset(tileIndex);
118
- const offset = [xOffset, yOffset, scale / blockSize];
122
+ const offset = [xOffset, yOffset];
123
+ const lineWidthScale = scale / blockSize;
119
124
 
120
125
  // Filled Column Layer
121
126
  const CellLayer = this.getSubLayerClass('column', RasterColumnLayer);
@@ -138,6 +143,7 @@ export default class RasterLayer<DataT = any, ExtraProps = {}> extends Composite
138
143
  },
139
144
  dataComparator: wrappedDataComparator,
140
145
  offset,
146
+ lineWidthScale, // Re-use widthScale prop to pass cell scale,
141
147
  highlightedObjectIndex,
142
148
  highlightColor,
143
149
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {
2
6
  CompositeLayer,
3
7
  CompositeLayerProps,
@@ -8,7 +12,7 @@ import {
8
12
  } from '@deck.gl/core';
9
13
  import RasterLayer, {RasterLayerProps} from './raster-layer';
10
14
  import QuadbinTileset2D from './quadbin-tileset-2d';
11
- import type {TilejsonResult} from '../sources/types';
15
+ import type {TilejsonResult} from '@carto/api-client';
12
16
  import {injectAccessToken, TilejsonPropType} from './utils';
13
17
  import {DEFAULT_TILE_SIZE} from '../constants';
14
18
  import {TileLayer, TileLayerProps} from '@deck.gl/geo-layers';
@@ -61,7 +65,7 @@ export default class RasterTileLayer<
61
65
  }
62
66
 
63
67
  renderLayers(): Layer | null | LayersList {
64
- const tileJSON = this.props.data as TilejsonResult & {raster_metadata: any};
68
+ const tileJSON = this.props.data as TilejsonResult;
65
69
  if (!tileJSON) return null;
66
70
 
67
71
  const {tiles: data, minzoom: minZoom, maxzoom: maxZoom, raster_metadata: metadata} = tileJSON;
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
2
6
 
3
7
  import {Tile, TileReader} from './carto-properties-tile';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {NumericProp, NumericPropKeyValueReader, PropertiesReader} from './carto-tile';
2
6
 
3
7
  // Tile ========================================
@@ -1,4 +1,9 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
6
+ import type {RasterMetadata} from '@carto/api-client';
2
7
 
3
8
  import {TileReader} from './carto-raster-tile';
4
9
  import {parsePbf} from './tile-loader-utils';
@@ -10,7 +15,7 @@ const id = 'cartoRasterTile';
10
15
 
11
16
  type CartoRasterTileLoaderOptions = LoaderOptions & {
12
17
  cartoRasterTile?: {
13
- metadata: {compression: 'gzip' | null} | null;
18
+ metadata: RasterMetadata | null;
14
19
  workerUrl: string;
15
20
  };
16
21
  };
@@ -52,6 +57,7 @@ function parseCartoRasterTile(
52
57
  ): Raster | null {
53
58
  const metadata = options?.cartoRasterTile?.metadata;
54
59
  if (!arrayBuffer || !metadata) return null;
60
+ // @ts-expect-error Upstream type needs to be updated
55
61
  TileReader.compression = metadata.compression;
56
62
  const out = parsePbf(arrayBuffer, TileReader);
57
63
  const {bands, blockSize} = out;
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {readPackedTypedArray} from './fast-pbf';
2
6
 
3
7
  const ARRAY_TYPES = {
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
2
6
 
3
7
  import {Tile, TileReader} from './carto-spatial-tile';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {readPackedTypedArray} from './fast-pbf';
2
6
  import {Indices, IndexScheme} from './spatialjson-utils';
3
7
  import {NumericProp, NumericPropKeyValueReader, PropertiesReader} from './carto-tile';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {readPackedTypedArray} from './fast-pbf';
2
6
 
3
7
  // KeyValueObject ========================================
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import earcut from 'earcut';
2
6
  import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
3
7
  import type {BinaryFeatureCollection, BinaryPolygonFeature, TypedArray} from '@loaders.gl/schema';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {GZipCompression} from '@loaders.gl/compression';
2
6
 
3
7
  type ReadPackedOptions = {
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {bigIntToHex} from 'quadbin';
2
6
 
3
7
  export type IndexScheme = 'h3' | 'quadbin';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import Protobuf from 'pbf';
2
6
 
3
7
  export function parsePbf(buffer: ArrayBuffer, TileReader) {
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {registerLoaders} from '@loaders.gl/core';
2
6
  import {DefaultProps, LayerProps} from '@deck.gl/core';
3
7
  import CartoRasterTileLoader from './schema/carto-raster-tile-loader';
@@ -1,8 +1,12 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {log} from '@deck.gl/core';
2
6
  import {Tile as PropertiesTile} from './schema/carto-properties-tile';
3
7
  import {Tile as VectorTile} from './schema/carto-tile';
4
8
  import {_deepEqual as deepEqual} from '@deck.gl/core';
5
- import type {TilejsonResult} from '../sources/types';
9
+ import type {TilejsonResult} from '@carto/api-client';
6
10
 
7
11
  /**
8
12
  * Adds access token to Authorization header in loadOptions
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {registerLoaders} from '@loaders.gl/core';
2
6
  import CartoPropertiesTileLoader from './schema/carto-properties-tile-loader';
3
7
  import CartoVectorTileLoader from './schema/carto-vector-tile-loader';
@@ -15,7 +19,7 @@ import {
15
19
  } from '@deck.gl/geo-layers';
16
20
  import {GeoJsonLayer} from '@deck.gl/layers';
17
21
 
18
- import type {TilejsonResult} from '../sources/types';
22
+ import type {TilejsonResult} from '@carto/api-client';
19
23
  import {TilejsonPropType, injectAccessToken, mergeBoundaryData} from './utils';
20
24
  import {DEFAULT_TILE_SIZE} from '../constants';
21
25
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {scaleThreshold} from 'd3-scale';
2
6
  import {AccessorFunction, Color} from '@deck.gl/core';
3
7
  import {Feature} from 'geojson';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {AccessorFunction, Color} from '@deck.gl/core';
2
6
  import {Feature} from 'geojson';
3
7
  import getPalette, {DEFAULT_PALETTE, NULL_COLOR, OTHERS_COLOR} from './palette';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {AccessorFunction, Color} from '@deck.gl/core';
2
6
  import {scaleLinear} from 'd3-scale';
3
7
  import {Feature} from 'geojson';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import * as cartoColors from 'cartocolor';
2
6
  import {assert} from '../utils';
3
7
  import {Color} from '@deck.gl/core';
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {Feature} from 'geojson';
2
6
  import {assert} from '../utils';
3
7
 
package/src/utils.ts CHANGED
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {log} from '@deck.gl/core';
2
6
  import type {Properties, NumericProps} from './layers/schema/spatialjson-utils';
3
7
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {createLoaderWorker} from '@loaders.gl/loader-utils';
2
6
  import CartoRasterTileLoader from '../layers/schema/carto-raster-tile-loader';
3
7
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {createLoaderWorker} from '@loaders.gl/loader-utils';
2
6
  import CartoSpatialTileLoader from '../layers/schema/carto-spatial-tile-loader';
3
7
 
@@ -1,3 +1,7 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {createLoaderWorker} from '@loaders.gl/loader-utils';
2
6
  import CartoVectorTileLoader from '../layers/schema/carto-vector-tile-loader';
3
7
 
@@ -1,19 +0,0 @@
1
- import type { APIErrorContext } from "./types.js";
2
- /**
3
- *
4
- * Custom error for reported errors in CARTO Maps API.
5
- * Provides useful debugging information in console and context for applications.
6
- *
7
- */
8
- export declare class CartoAPIError extends Error {
9
- /** Source error from server */
10
- error: Error;
11
- /** Context (API call & parameters) in which error occured */
12
- errorContext: APIErrorContext;
13
- /** Response from server */
14
- response?: Response;
15
- /** JSON Response from server */
16
- responseJson?: any;
17
- constructor(error: Error, errorContext: APIErrorContext, response?: Response, responseJson?: any);
18
- }
19
- //# sourceMappingURL=carto-api-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"carto-api-error.d.ts","sourceRoot":"","sources":["../../src/api/carto-api-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,mBAAgB;AAE7C;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,+BAA+B;IAC/B,KAAK,EAAE,KAAK,CAAC;IAEb,6DAA6D;IAC7D,YAAY,EAAE,eAAe,CAAC;IAE9B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,gCAAgC;IAChC,YAAY,CAAC,EAAE,GAAG,CAAC;gBAGjB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,eAAe,EAC7B,QAAQ,CAAC,EAAE,QAAQ,EACnB,YAAY,CAAC,EAAE,GAAG;CAmCrB"}