@deck.gl/carto 8.8.14 → 8.8.16

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 (93) hide show
  1. package/dist/dist.dev.js +42815 -42680
  2. package/dist/es5/api/layer-map.js +24 -11
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/api/maps-v3-client.js +2 -4
  5. package/dist/es5/api/maps-v3-client.js.map +1 -1
  6. package/dist/es5/api/parseMap.js +57 -19
  7. package/dist/es5/api/parseMap.js.map +1 -1
  8. package/dist/es5/index.js +0 -20
  9. package/dist/es5/index.js.map +1 -1
  10. package/dist/es5/layers/carto-layer.js +19 -2
  11. package/dist/es5/layers/carto-layer.js.map +1 -1
  12. package/dist/es5/layers/h3-tile-layer.js +10 -1
  13. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  14. package/dist/es5/layers/quadbin-layer.js.map +1 -1
  15. package/dist/es5/layers/quadbin-tile-layer.js +10 -1
  16. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
  17. package/dist/es5/layers/quadbin-tileset-2d.js +13 -11
  18. package/dist/es5/layers/quadbin-tileset-2d.js.map +1 -1
  19. package/dist/es5/layers/quadbin-utils.js +6 -82
  20. package/dist/es5/layers/quadbin-utils.js.map +1 -1
  21. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +10 -2
  22. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  23. package/dist/es5/layers/schema/spatialjson-utils.js +4 -3
  24. package/dist/es5/layers/schema/spatialjson-utils.js.map +1 -1
  25. package/dist/es5/layers/spatial-index-tile-layer.js +21 -0
  26. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
  27. package/dist/esm/api/layer-map.js +13 -2
  28. package/dist/esm/api/layer-map.js.map +1 -1
  29. package/dist/esm/api/maps-v3-client.js +2 -4
  30. package/dist/esm/api/maps-v3-client.js.map +1 -1
  31. package/dist/esm/api/parseMap.js +64 -20
  32. package/dist/esm/api/parseMap.js.map +1 -1
  33. package/dist/esm/index.js +0 -1
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/layers/carto-layer.js +18 -0
  36. package/dist/esm/layers/carto-layer.js.map +1 -1
  37. package/dist/esm/layers/h3-tile-layer.js +6 -1
  38. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  39. package/dist/esm/layers/quadbin-layer.js.map +1 -1
  40. package/dist/esm/layers/quadbin-tile-layer.js +6 -1
  41. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
  42. package/dist/esm/layers/quadbin-tileset-2d.js +12 -10
  43. package/dist/esm/layers/quadbin-tileset-2d.js.map +1 -1
  44. package/dist/esm/layers/quadbin-utils.js +2 -67
  45. package/dist/esm/layers/quadbin-utils.js.map +1 -1
  46. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +10 -2
  47. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  48. package/dist/esm/layers/schema/spatialjson-utils.js +4 -3
  49. package/dist/esm/layers/schema/spatialjson-utils.js.map +1 -1
  50. package/dist/esm/layers/spatial-index-tile-layer.js +20 -0
  51. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
  52. package/dist.min.js +4 -4
  53. package/package.json +9 -8
  54. package/src/api/layer-map.ts +14 -5
  55. package/src/api/maps-v3-client.ts +2 -7
  56. package/src/api/parseMap.ts +39 -22
  57. package/src/index.ts +0 -5
  58. package/src/layers/carto-layer.ts +9 -2
  59. package/src/layers/h3-tile-layer.ts +7 -1
  60. package/src/layers/quadbin-layer.ts +1 -1
  61. package/src/layers/quadbin-tile-layer.ts +7 -1
  62. package/src/layers/quadbin-tileset-2d.ts +14 -12
  63. package/src/layers/quadbin-utils.ts +4 -85
  64. package/src/layers/schema/carto-spatial-tile-loader.ts +9 -3
  65. package/src/layers/schema/spatialjson-utils.ts +4 -4
  66. package/src/layers/spatial-index-tile-layer.ts +29 -1
  67. package/typed/api/layer-map.d.ts +5 -1
  68. package/typed/api/layer-map.d.ts.map +1 -1
  69. package/typed/api/maps-v3-client.d.ts +1 -0
  70. package/typed/api/maps-v3-client.d.ts.map +1 -1
  71. package/typed/api/parseMap.d.ts +1 -0
  72. package/typed/api/parseMap.d.ts.map +1 -1
  73. package/typed/index.d.ts +0 -1
  74. package/typed/index.d.ts.map +1 -1
  75. package/typed/layers/carto-layer.d.ts.map +1 -1
  76. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  77. package/typed/layers/quadbin-layer.d.ts +1 -1
  78. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
  79. package/typed/layers/quadbin-tileset-2d.d.ts +6 -5
  80. package/typed/layers/quadbin-tileset-2d.d.ts.map +1 -1
  81. package/typed/layers/quadbin-utils.d.ts +2 -12
  82. package/typed/layers/quadbin-utils.d.ts.map +1 -1
  83. package/typed/layers/quadkey-tile-layer.d.ts +21 -0
  84. package/typed/layers/quadkey-tile-layer.d.ts.map +1 -0
  85. package/typed/layers/quadkey-tileset-2d.d.ts +15 -0
  86. package/typed/layers/quadkey-tileset-2d.d.ts.map +1 -0
  87. package/typed/layers/schema/carto-spa-tile.d.ts +57 -0
  88. package/typed/layers/schema/carto-spa-tile.d.ts.map +1 -0
  89. package/typed/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
  90. package/typed/layers/schema/spatialjson-utils.d.ts +1 -1
  91. package/typed/layers/schema/spatialjson-utils.d.ts.map +1 -1
  92. package/typed/layers/spatial-index-tile-layer.d.ts +11 -1
  93. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
@@ -1,77 +1,12 @@
1
1
  import { worldToLngLat } from '@math.gl/web-mercator';
2
+ import { cellToTile } from 'quadbin';
2
3
  const TILE_SIZE = 512;
3
- const B = [0x5555555555555555n, 0x3333333333333333n, 0x0f0f0f0f0f0f0f0fn, 0x00ff00ff00ff00ffn, 0x0000ffff0000ffffn, 0x00000000ffffffffn];
4
- const S = [0n, 1n, 2n, 4n, 8n, 16n];
5
- export function indexToBigInt(index) {
6
- return BigInt("0x".concat(index));
7
- }
8
- export function bigIntToIndex(quadbin) {
9
- return quadbin.toString(16);
10
- }
11
- export function tileToQuadbin(tile) {
12
- if (tile.z < 0 || tile.z > 26) {
13
- throw new Error('Wrong zoom');
14
- }
15
-
16
- const z = BigInt(tile.z);
17
- let x = BigInt(tile.x) << 32n - z;
18
- let y = BigInt(tile.y) << 32n - z;
19
-
20
- for (let i = 0; i < 5; i++) {
21
- const s = S[5 - i];
22
- const b = B[4 - i];
23
- x = (x | x << s) & b;
24
- y = (y | y << s) & b;
25
- }
26
-
27
- const quadbin = 0x4000000000000000n | 1n << 59n | z << 52n | (x | y << 1n) >> 12n | 0xfffffffffffffn >> z * 2n;
28
- return bigIntToIndex(quadbin);
29
- }
30
- export function quadbinToTile(index) {
31
- const quadbin = indexToBigInt(index);
32
- const mode = quadbin >> 59n & 7n;
33
- const modeDep = quadbin >> 57n & 3n;
34
- const z = quadbin >> 52n & 0x1fn;
35
- const q = (quadbin & 0xfffffffffffffn) << 12n;
36
-
37
- if (mode !== 1n && modeDep !== 0n) {
38
- throw new Error('Wrong mode');
39
- }
40
-
41
- let x = q;
42
- let y = q >> 1n;
43
-
44
- for (let i = 0; i < 6; i++) {
45
- const s = S[i];
46
- const b = B[i];
47
- x = (x | x >> s) & b;
48
- y = (y | y >> s) & b;
49
- }
50
-
51
- x = x >> 32n - z;
52
- y = y >> 32n - z;
53
- return {
54
- z: Number(z),
55
- x: Number(x),
56
- y: Number(y)
57
- };
58
- }
59
- export function quadbinZoom(index) {
60
- const quadbin = indexToBigInt(index);
61
- return quadbin >> 52n & 0x1fn;
62
- }
63
- export function quadbinParent(index) {
64
- const quadbin = indexToBigInt(index);
65
- const zparent = quadbinZoom(index) - 1n;
66
- const parent = quadbin & ~(0x1fn << 52n) | zparent << 52n | 0xfffffffffffffn >> zparent * 2n;
67
- return bigIntToIndex(parent);
68
- }
69
4
  export function quadbinToWorldBounds(quadbin) {
70
5
  const {
71
6
  x,
72
7
  y,
73
8
  z
74
- } = quadbinToTile(quadbin);
9
+ } = cellToTile(quadbin);
75
10
  const mask = 1 << z;
76
11
  const scale = mask / TILE_SIZE;
77
12
  return [[x / scale, TILE_SIZE - y / scale], [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/quadbin-utils.ts"],"names":["worldToLngLat","TILE_SIZE","B","S","indexToBigInt","index","BigInt","bigIntToIndex","quadbin","toString","tileToQuadbin","tile","z","Error","x","y","i","s","b","quadbinToTile","mode","modeDep","q","Number","quadbinZoom","quadbinParent","zparent","parent","quadbinToWorldBounds","mask","scale","getQuadbinPolygon","topLeft","bottomRight","w","n","e"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,uBAA5B;AAEA,MAAMC,SAAS,GAAG,GAAlB;AAEA,MAAMC,CAAC,GAAG,CACR,mBADQ,EAER,mBAFQ,EAGR,mBAHQ,EAIR,mBAJQ,EAKR,mBALQ,EAMR,mBANQ,CAAV;AAQA,MAAMC,CAAC,GAAG,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,GAArB,CAAV;AAEA,OAAO,SAASC,aAAT,CAAuBC,KAAvB,EAA8C;AACnD,SAAOC,MAAM,aAAMD,KAAN,EAAb;AACD;AAED,OAAO,SAASE,aAAT,CAAuBC,OAAvB,EAAgD;AACrD,SAAOA,OAAO,CAACC,QAAR,CAAiB,EAAjB,CAAP;AACD;AAED,OAAO,SAASC,aAAT,CAAuBC,IAAvB,EAAqC;AAC1C,MAAIA,IAAI,CAACC,CAAL,GAAS,CAAT,IAAcD,IAAI,CAACC,CAAL,GAAS,EAA3B,EAA+B;AAC7B,UAAM,IAAIC,KAAJ,CAAU,YAAV,CAAN;AACD;;AACD,QAAMD,CAAC,GAAGN,MAAM,CAACK,IAAI,CAACC,CAAN,CAAhB;AACA,MAAIE,CAAC,GAAGR,MAAM,CAACK,IAAI,CAACG,CAAN,CAAN,IAAmB,MAAMF,CAAjC;AACA,MAAIG,CAAC,GAAGT,MAAM,CAACK,IAAI,CAACI,CAAN,CAAN,IAAmB,MAAMH,CAAjC;;AAEA,OAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1B,UAAMC,CAAC,GAAGd,CAAC,CAAC,IAAIa,CAAL,CAAX;AACA,UAAME,CAAC,GAAGhB,CAAC,CAAC,IAAIc,CAAL,CAAX;AACAF,IAAAA,CAAC,GAAG,CAACA,CAAC,GAAIA,CAAC,IAAIG,CAAX,IAAiBC,CAArB;AACAH,IAAAA,CAAC,GAAG,CAACA,CAAC,GAAIA,CAAC,IAAIE,CAAX,IAAiBC,CAArB;AACD;;AAED,QAAMV,OAAO,GACX,sBACC,MAAM,GADP,GAECI,CAAC,IAAI,GAFN,GAGC,CAACE,CAAC,GAAIC,CAAC,IAAI,EAAX,KAAmB,GAHpB,GAIC,oBAAqBH,CAAC,GAAG,EAL5B;AAMA,SAAOL,aAAa,CAACC,OAAD,CAApB;AACD;AAED,OAAO,SAASW,aAAT,CAAuBd,KAAvB,EAAsC;AAC3C,QAAMG,OAAO,GAAGJ,aAAa,CAACC,KAAD,CAA7B;AACA,QAAMe,IAAI,GAAIZ,OAAO,IAAI,GAAZ,GAAmB,EAAhC;AACA,QAAMa,OAAO,GAAIb,OAAO,IAAI,GAAZ,GAAmB,EAAnC;AACA,QAAMI,CAAC,GAAIJ,OAAO,IAAI,GAAZ,GAAmB,KAA7B;AACA,QAAMc,CAAC,GAAG,CAACd,OAAO,GAAG,gBAAX,KAAgC,GAA1C;;AAEA,MAAIY,IAAI,KAAK,EAAT,IAAeC,OAAO,KAAK,EAA/B,EAAmC;AACjC,UAAM,IAAIR,KAAJ,CAAU,YAAV,CAAN;AACD;;AAED,MAAIC,CAAC,GAAGQ,CAAR;AACA,MAAIP,CAAC,GAAGO,CAAC,IAAI,EAAb;;AAEA,OAAK,IAAIN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1B,UAAMC,CAAC,GAAGd,CAAC,CAACa,CAAD,CAAX;AACA,UAAME,CAAC,GAAGhB,CAAC,CAACc,CAAD,CAAX;AACAF,IAAAA,CAAC,GAAG,CAACA,CAAC,GAAIA,CAAC,IAAIG,CAAX,IAAiBC,CAArB;AACAH,IAAAA,CAAC,GAAG,CAACA,CAAC,GAAIA,CAAC,IAAIE,CAAX,IAAiBC,CAArB;AACD;;AAEDJ,EAAAA,CAAC,GAAGA,CAAC,IAAK,MAAMF,CAAhB;AACAG,EAAAA,CAAC,GAAGA,CAAC,IAAK,MAAMH,CAAhB;AAEA,SAAO;AAACA,IAAAA,CAAC,EAAEW,MAAM,CAACX,CAAD,CAAV;AAAeE,IAAAA,CAAC,EAAES,MAAM,CAACT,CAAD,CAAxB;AAA6BC,IAAAA,CAAC,EAAEQ,MAAM,CAACR,CAAD;AAAtC,GAAP;AACD;AAED,OAAO,SAASS,WAAT,CAAqBnB,KAArB,EAAoC;AACzC,QAAMG,OAAO,GAAGJ,aAAa,CAACC,KAAD,CAA7B;AACA,SAAQG,OAAO,IAAI,GAAZ,GAAmB,KAA1B;AACD;AAED,OAAO,SAASiB,aAAT,CAAuBpB,KAAvB,EAAsC;AAC3C,QAAMG,OAAO,GAAGJ,aAAa,CAACC,KAAD,CAA7B;AACA,QAAMqB,OAAO,GAAGF,WAAW,CAACnB,KAAD,CAAX,GAAqB,EAArC;AACA,QAAMsB,MAAM,GACTnB,OAAO,GAAG,EAAE,SAAS,GAAX,CAAX,GAA+BkB,OAAO,IAAI,GAA1C,GAAkD,oBAAqBA,OAAO,GAAG,EADnF;AAEA,SAAOnB,aAAa,CAACoB,MAAD,CAApB;AACD;AAED,OAAO,SAASC,oBAAT,CAA8BpB,OAA9B,EAAqE;AAC1E,QAAM;AAACM,IAAAA,CAAD;AAAIC,IAAAA,CAAJ;AAAOH,IAAAA;AAAP,MAAYO,aAAa,CAACX,OAAD,CAA/B;AACA,QAAMqB,IAAI,GAAG,KAAKjB,CAAlB;AACA,QAAMkB,KAAK,GAAGD,IAAI,GAAG5B,SAArB;AACA,SAAO,CACL,CAACa,CAAC,GAAGgB,KAAL,EAAY7B,SAAS,GAAGc,CAAC,GAAGe,KAA5B,CADK,EAEL,CAAC,CAAChB,CAAC,GAAG,IAAL,IAAagB,KAAd,EAAqB7B,SAAS,GAAG,CAACc,CAAC,GAAG,IAAL,IAAae,KAA9C,CAFK,CAAP;AAID;AAED,OAAO,SAASC,iBAAT,CAA2BvB,OAA3B,EAAsD;AAC3D,QAAM,CAACwB,OAAD,EAAUC,WAAV,IAAyBL,oBAAoB,CAACpB,OAAD,CAAnD;AACA,QAAM,CAAC0B,CAAD,EAAIC,CAAJ,IAASnC,aAAa,CAACgC,OAAD,CAA5B;AACA,QAAM,CAACI,CAAD,EAAInB,CAAJ,IAASjB,aAAa,CAACiC,WAAD,CAA5B;AACA,SAAO,CAACG,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUnB,CAAV,EAAaiB,CAAb,EAAgBjB,CAAhB,EAAmBiB,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\n\nconst TILE_SIZE = 512;\n\nconst B = [\n 0x5555555555555555n,\n 0x3333333333333333n,\n 0x0f0f0f0f0f0f0f0fn,\n 0x00ff00ff00ff00ffn,\n 0x0000ffff0000ffffn,\n 0x00000000ffffffffn\n];\nconst S = [0n, 1n, 2n, 4n, 8n, 16n];\n\nexport function indexToBigInt(index: string): bigint {\n return BigInt(`0x${index}`);\n}\n\nexport function bigIntToIndex(quadbin: bigint): string {\n return quadbin.toString(16);\n}\n\nexport function tileToQuadbin(tile): string {\n if (tile.z < 0 || tile.z > 26) {\n throw new Error('Wrong zoom');\n }\n const z = BigInt(tile.z);\n let x = BigInt(tile.x) << (32n - z);\n let y = BigInt(tile.y) << (32n - z);\n\n for (let i = 0; i < 5; i++) {\n const s = S[5 - i];\n const b = B[4 - i];\n x = (x | (x << s)) & b;\n y = (y | (y << s)) & b;\n }\n\n const quadbin =\n 0x4000000000000000n |\n (1n << 59n) | // | (mode << 59) | (mode_dep << 57)\n (z << 52n) |\n ((x | (y << 1n)) >> 12n) |\n (0xfffffffffffffn >> (z * 2n));\n return bigIntToIndex(quadbin);\n}\n\nexport function quadbinToTile(index: string) {\n const quadbin = indexToBigInt(index);\n const mode = (quadbin >> 59n) & 7n;\n const modeDep = (quadbin >> 57n) & 3n;\n const z = (quadbin >> 52n) & 0x1fn;\n const q = (quadbin & 0xfffffffffffffn) << 12n;\n\n if (mode !== 1n && modeDep !== 0n) {\n throw new Error('Wrong mode');\n }\n\n let x = q;\n let y = q >> 1n;\n\n for (let i = 0; i < 6; i++) {\n const s = S[i];\n const b = B[i];\n x = (x | (x >> s)) & b;\n y = (y | (y >> s)) & b;\n }\n\n x = x >> (32n - z);\n y = y >> (32n - z);\n\n return {z: Number(z), x: Number(x), y: Number(y)};\n}\n\nexport function quadbinZoom(index: string) {\n const quadbin = indexToBigInt(index);\n return (quadbin >> 52n) & 0x1fn;\n}\n\nexport function quadbinParent(index: string) {\n const quadbin = indexToBigInt(index);\n const zparent = quadbinZoom(index) - 1n;\n const parent =\n (quadbin & ~(0x1fn << 52n)) | (zparent << 52n) | (0xfffffffffffffn >> (zparent * 2n));\n return bigIntToIndex(parent);\n}\n\nexport function quadbinToWorldBounds(quadbin: string): [number[], number[]] {\n const {x, y, z} = quadbinToTile(quadbin);\n const mask = 1 << z;\n const scale = mask / TILE_SIZE;\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]\n ];\n}\n\nexport function getQuadbinPolygon(quadbin: string): number[] {\n const [topLeft, bottomRight] = quadbinToWorldBounds(quadbin);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadbin-utils.js"}
1
+ {"version":3,"sources":["../../../src/layers/quadbin-utils.ts"],"names":["worldToLngLat","cellToTile","TILE_SIZE","quadbinToWorldBounds","quadbin","x","y","z","mask","scale","getQuadbinPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,uBAA5B;AACA,SAAQC,UAAR,QAAyB,SAAzB;AAEA,MAAMC,SAAS,GAAG,GAAlB;AAEA,OAAO,SAASC,oBAAT,CAA8BC,OAA9B,EAAqE;AAC1E,QAAM;AAACC,IAAAA,CAAD;AAAIC,IAAAA,CAAJ;AAAOC,IAAAA;AAAP,MAAYN,UAAU,CAACG,OAAD,CAA5B;AACA,QAAMI,IAAI,GAAG,KAAKD,CAAlB;AACA,QAAME,KAAK,GAAGD,IAAI,GAAGN,SAArB;AACA,SAAO,CACL,CAACG,CAAC,GAAGI,KAAL,EAAYP,SAAS,GAAGI,CAAC,GAAGG,KAA5B,CADK,EAEL,CAAC,CAACJ,CAAC,GAAG,IAAL,IAAaI,KAAd,EAAqBP,SAAS,GAAG,CAACI,CAAC,GAAG,IAAL,IAAaG,KAA9C,CAFK,CAAP;AAID;AAED,OAAO,SAASC,iBAAT,CAA2BN,OAA3B,EAAsD;AAC3D,QAAM,CAACO,OAAD,EAAUC,WAAV,IAAyBT,oBAAoB,CAACC,OAAD,CAAnD;AACA,QAAM,CAACS,CAAD,EAAIC,CAAJ,IAASd,aAAa,CAACW,OAAD,CAA5B;AACA,QAAM,CAACI,CAAD,EAAIC,CAAJ,IAAShB,aAAa,CAACY,WAAD,CAA5B;AACA,SAAO,CAACG,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaH,CAAb,EAAgBG,CAAhB,EAAmBH,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\nimport {cellToTile} from 'quadbin';\n\nconst TILE_SIZE = 512;\n\nexport function quadbinToWorldBounds(quadbin: bigint): [number[], number[]] {\n const {x, y, z} = cellToTile(quadbin);\n const mask = 1 << z;\n const scale = mask / TILE_SIZE;\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]\n ];\n}\n\nexport function getQuadbinPolygon(quadbin: bigint): number[] {\n const [topLeft, bottomRight] = quadbinToWorldBounds(quadbin);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadbin-utils.js"}
@@ -12,19 +12,27 @@ const CartoSpatialTileLoader = {
12
12
  worker: false,
13
13
  parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),
14
14
  parseSync: parseCartoSpatialTile,
15
- options: {}
15
+ options: {
16
+ cartoSpatialTile: {
17
+ scheme: 'quadbin'
18
+ }
19
+ }
16
20
  };
17
21
 
18
22
  function parseCartoSpatialTile(arrayBuffer, options) {
23
+ var _options$cartoSpatial;
24
+
19
25
  if (!arrayBuffer) return null;
20
26
  const tile = parsePbf(arrayBuffer, TileReader);
21
27
  const {
22
28
  cells
23
29
  } = tile;
30
+ const scheme = options === null || options === void 0 ? void 0 : (_options$cartoSpatial = options.cartoSpatialTile) === null || _options$cartoSpatial === void 0 ? void 0 : _options$cartoSpatial.scheme;
24
31
  const data = {
25
32
  cells: { ...cells,
26
33
  properties: unpackProperties(cells.properties)
27
- }
34
+ },
35
+ scheme
28
36
  };
29
37
  return binaryToSpatialjson(data);
30
38
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/carto-spatial-tile-loader.ts"],"names":["TileReader","parsePbf","unpackProperties","binaryToSpatialjson","CartoSpatialTileLoader","name","version","id","module","extensions","mimeTypes","category","worker","parse","arrayBuffer","options","parseCartoSpatialTile","parseSync","tile","cells","data","properties"],"mappings":"AAEA,SAAcA,UAAd,QAA+B,sBAA/B;AACA,SAAQC,QAAR,EAAkBC,gBAAlB,QAAyC,qBAAzC;AACA,SAAQC,mBAAR,QAA+C,qBAA/C;AAEA,MAAMC,sBAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,oBADyC;AAE/CC,EAAAA,OAAO,EAAE,GAFsC;AAG/CC,EAAAA,EAAE,EAAE,kBAH2C;AAI/CC,EAAAA,MAAM,EAAE,OAJuC;AAK/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALmC;AAM/CC,EAAAA,SAAS,EAAE,CAAC,oCAAD,CANoC;AAO/CC,EAAAA,QAAQ,EAAE,UAPqC;AAQ/CC,EAAAA,MAAM,EAAE,KARuC;AAS/CC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgCC,qBAAqB,CAACF,WAAD,EAAcC,OAAd,CATb;AAU/CE,EAAAA,SAAS,EAAED,qBAVoC;AAW/CD,EAAAA,OAAO,EAAE;AAXsC,CAAjD;;AAcA,SAASC,qBAAT,CACEF,WADF,EAEEC,OAFF,EAGsB;AACpB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,QAAMI,IAAU,GAAGjB,QAAQ,CAACa,WAAD,EAAcd,UAAd,CAA3B;AAEA,QAAM;AAACmB,IAAAA;AAAD,MAAUD,IAAhB;AACA,QAAME,IAAI,GAAG;AACXD,IAAAA,KAAK,EAAE,EAAC,GAAGA,KAAJ;AAAWE,MAAAA,UAAU,EAAEnB,gBAAgB,CAACiB,KAAK,CAACE,UAAP;AAAvC;AADI,GAAb;AAIA,SAAOlB,mBAAmB,CAACiB,IAAD,CAA1B;AACD;;AAED,eAAehB,sBAAf","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {Tile, TileReader} from './carto-spatial-tile';\nimport {parsePbf, unpackProperties} from './tile-loader-utils';\nimport {binaryToSpatialjson, SpatialJson} from './spatialjson-utils';\n\nconst CartoSpatialTileLoader: LoaderWithParser = {\n name: 'CARTO Spatial Tile',\n version: '1',\n id: 'cartoSpatialTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n options: {}\n};\n\nfunction parseCartoSpatialTile(\n arrayBuffer: ArrayBuffer,\n options?: LoaderOptions\n): SpatialJson | null {\n if (!arrayBuffer) return null;\n const tile: Tile = parsePbf(arrayBuffer, TileReader);\n\n const {cells} = tile;\n const data = {\n cells: {...cells, properties: unpackProperties(cells.properties)}\n };\n\n return binaryToSpatialjson(data);\n}\n\nexport default CartoSpatialTileLoader;\n"],"file":"carto-spatial-tile-loader.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/carto-spatial-tile-loader.ts"],"names":["TileReader","parsePbf","unpackProperties","binaryToSpatialjson","CartoSpatialTileLoader","name","version","id","module","extensions","mimeTypes","category","worker","parse","arrayBuffer","options","parseCartoSpatialTile","parseSync","cartoSpatialTile","scheme","tile","cells","data","properties"],"mappings":"AAEA,SAAcA,UAAd,QAA+B,sBAA/B;AACA,SAAQC,QAAR,EAAkBC,gBAAlB,QAAyC,qBAAzC;AACA,SAAqBC,mBAArB,QAA4D,qBAA5D;AAEA,MAAMC,sBAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,oBADyC;AAE/CC,EAAAA,OAAO,EAAE,GAFsC;AAG/CC,EAAAA,EAAE,EAAE,kBAH2C;AAI/CC,EAAAA,MAAM,EAAE,OAJuC;AAK/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALmC;AAM/CC,EAAAA,SAAS,EAAE,CAAC,oCAAD,CANoC;AAO/CC,EAAAA,QAAQ,EAAE,UAPqC;AAQ/CC,EAAAA,MAAM,EAAE,KARuC;AAS/CC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgCC,qBAAqB,CAACF,WAAD,EAAcC,OAAd,CATb;AAU/CE,EAAAA,SAAS,EAAED,qBAVoC;AAW/CD,EAAAA,OAAO,EAAE;AACPG,IAAAA,gBAAgB,EAAE;AAChBC,MAAAA,MAAM,EAAE;AADQ;AADX;AAXsC,CAAjD;;AAkBA,SAASH,qBAAT,CACEF,WADF,EAEEC,OAFF,EAGsB;AAAA;;AACpB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,QAAMM,IAAU,GAAGnB,QAAQ,CAACa,WAAD,EAAcd,UAAd,CAA3B;AAEA,QAAM;AAACqB,IAAAA;AAAD,MAAUD,IAAhB;AACA,QAAMD,MAAM,GAAGJ,OAAH,aAAGA,OAAH,gDAAGA,OAAO,CAAEG,gBAAZ,0DAAG,sBAA2BC,MAA1C;AACA,QAAMG,IAAI,GAAG;AACXD,IAAAA,KAAK,EAAE,EAAC,GAAGA,KAAJ;AAAWE,MAAAA,UAAU,EAAErB,gBAAgB,CAACmB,KAAK,CAACE,UAAP;AAAvC,KADI;AAEXJ,IAAAA;AAFW,GAAb;AAKA,SAAOhB,mBAAmB,CAACmB,IAAD,CAA1B;AACD;;AAED,eAAelB,sBAAf","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {Tile, TileReader} from './carto-spatial-tile';\nimport {parsePbf, unpackProperties} from './tile-loader-utils';\nimport {IndexScheme, binaryToSpatialjson, SpatialJson} from './spatialjson-utils';\n\nconst CartoSpatialTileLoader: LoaderWithParser = {\n name: 'CARTO Spatial Tile',\n version: '1',\n id: 'cartoSpatialTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n options: {\n cartoSpatialTile: {\n scheme: 'quadbin'\n } as {scheme: IndexScheme}\n }\n};\n\nfunction parseCartoSpatialTile(\n arrayBuffer: ArrayBuffer,\n options?: LoaderOptions\n): SpatialJson | null {\n if (!arrayBuffer) return null;\n const tile: Tile = parsePbf(arrayBuffer, TileReader);\n\n const {cells} = tile;\n const scheme = options?.cartoSpatialTile?.scheme;\n const data = {\n cells: {...cells, properties: unpackProperties(cells.properties)},\n scheme\n };\n\n return binaryToSpatialjson(data);\n}\n\nexport default CartoSpatialTileLoader;\n"],"file":"carto-spatial-tile-loader.js"}
@@ -1,13 +1,14 @@
1
- import { bigIntToIndex } from '../quadbin-utils';
1
+ import { bigIntToHex } from 'quadbin';
2
2
  export function binaryToSpatialjson(binary) {
3
3
  const {
4
- cells
4
+ cells,
5
+ scheme
5
6
  } = binary;
6
7
  const count = cells.indices.value.length;
7
8
  const spatial = [];
8
9
 
9
10
  for (let i = 0; i < count; i++) {
10
- const id = bigIntToIndex(cells.indices.value[i]);
11
+ const id = scheme === 'h3' ? bigIntToHex(cells.indices.value[i]) : cells.indices.value[i];
11
12
  const properties = { ...cells.properties[i]
12
13
  };
13
14
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/spatialjson-utils.ts"],"names":["bigIntToIndex","binaryToSpatialjson","binary","cells","count","indices","value","length","spatial","i","id","properties","key","Object","keys","numericProps","push"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,kBAA5B;AAmBA,OAAO,SAASC,mBAAT,CAA6BC,MAA7B,EAAiE;AACtE,QAAM;AAACC,IAAAA;AAAD,MAAUD,MAAhB;AACA,QAAME,KAAK,GAAGD,KAAK,CAACE,OAAN,CAAcC,KAAd,CAAoBC,MAAlC;AACA,QAAMC,OAAc,GAAG,EAAvB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,KAApB,EAA2BK,CAAC,EAA5B,EAAgC;AAC9B,UAAMC,EAAE,GAAGV,aAAa,CAACG,KAAK,CAACE,OAAN,CAAcC,KAAd,CAAoBG,CAApB,CAAD,CAAxB;AAEA,UAAME,UAAU,GAAG,EAAC,GAAGR,KAAK,CAACQ,UAAN,CAAiBF,CAAjB;AAAJ,KAAnB;;AACA,SAAK,MAAMG,GAAX,IAAkBC,MAAM,CAACC,IAAP,CAAYX,KAAK,CAACY,YAAlB,CAAlB,EAAmD;AACjDJ,MAAAA,UAAU,CAACC,GAAD,CAAV,GAAkBT,KAAK,CAACY,YAAN,CAAmBH,GAAnB,EAAwBN,KAAxB,CAA8BG,CAA9B,CAAlB;AACD;;AACDD,IAAAA,OAAO,CAACQ,IAAR,CAAa;AAACN,MAAAA,EAAD;AAAKC,MAAAA;AAAL,KAAb;AACD;;AAED,SAAOH,OAAP;AACD","sourcesContent":["import {bigIntToIndex} from '../quadbin-utils';\n\nexport type IndexScheme = 'h3' | 'quadbin';\ntype TypedArray = Float32Array | Float64Array;\n\nexport type Indices = {value: BigUint64Array};\nexport type NumericProps = Record<string, {value: number[] | TypedArray}>;\nexport type Properties = Record<string, string | number | boolean | null>;\nexport type Cells = {\n indices: Indices;\n numericProps: NumericProps;\n properties: Properties[];\n};\nexport type SpatialBinary = {scheme?: IndexScheme; cells: Cells};\nexport type SpatialJson = {\n id: string;\n properties: Properties;\n}[];\n\nexport function binaryToSpatialjson(binary: SpatialBinary): SpatialJson {\n const {cells} = binary;\n const count = cells.indices.value.length;\n const spatial: any[] = [];\n for (let i = 0; i < count; i++) {\n const id = bigIntToIndex(cells.indices.value[i]);\n\n const properties = {...cells.properties[i]};\n for (const key of Object.keys(cells.numericProps)) {\n properties[key] = cells.numericProps[key].value[i];\n }\n spatial.push({id, properties});\n }\n\n return spatial;\n}\n"],"file":"spatialjson-utils.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/spatialjson-utils.ts"],"names":["bigIntToHex","binaryToSpatialjson","binary","cells","scheme","count","indices","value","length","spatial","i","id","properties","key","Object","keys","numericProps","push"],"mappings":"AAAA,SAAQA,WAAR,QAA0B,SAA1B;AAmBA,OAAO,SAASC,mBAAT,CAA6BC,MAA7B,EAAiE;AACtE,QAAM;AAACC,IAAAA,KAAD;AAAQC,IAAAA;AAAR,MAAkBF,MAAxB;AACA,QAAMG,KAAK,GAAGF,KAAK,CAACG,OAAN,CAAcC,KAAd,CAAoBC,MAAlC;AACA,QAAMC,OAAc,GAAG,EAAvB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,KAApB,EAA2BK,CAAC,EAA5B,EAAgC;AAC9B,UAAMC,EAAE,GAAGP,MAAM,KAAK,IAAX,GAAkBJ,WAAW,CAACG,KAAK,CAACG,OAAN,CAAcC,KAAd,CAAoBG,CAApB,CAAD,CAA7B,GAAwDP,KAAK,CAACG,OAAN,CAAcC,KAAd,CAAoBG,CAApB,CAAnE;AAEA,UAAME,UAAU,GAAG,EAAC,GAAGT,KAAK,CAACS,UAAN,CAAiBF,CAAjB;AAAJ,KAAnB;;AACA,SAAK,MAAMG,GAAX,IAAkBC,MAAM,CAACC,IAAP,CAAYZ,KAAK,CAACa,YAAlB,CAAlB,EAAmD;AACjDJ,MAAAA,UAAU,CAACC,GAAD,CAAV,GAAkBV,KAAK,CAACa,YAAN,CAAmBH,GAAnB,EAAwBN,KAAxB,CAA8BG,CAA9B,CAAlB;AACD;;AACDD,IAAAA,OAAO,CAACQ,IAAR,CAAa;AAACN,MAAAA,EAAD;AAAKC,MAAAA;AAAL,KAAb;AACD;;AAED,SAAOH,OAAP;AACD","sourcesContent":["import {bigIntToHex} from 'quadbin';\n\nexport type IndexScheme = 'h3' | 'quadbin';\ntype TypedArray = Float32Array | Float64Array;\n\nexport type Indices = {value: BigUint64Array};\nexport type NumericProps = Record<string, {value: number[] | TypedArray}>;\nexport type Properties = Record<string, string | number | boolean | null>;\nexport type Cells = {\n indices: Indices;\n numericProps: NumericProps;\n properties: Properties[];\n};\nexport type SpatialBinary = {scheme?: IndexScheme; cells: Cells};\nexport type SpatialJson = {\n id: string | bigint;\n properties: Properties;\n}[];\n\nexport function binaryToSpatialjson(binary: SpatialBinary): SpatialJson {\n const {cells, scheme} = binary;\n const count = cells.indices.value.length;\n const spatial: any[] = [];\n for (let i = 0; i < count; i++) {\n const id = scheme === 'h3' ? bigIntToHex(cells.indices.value[i]) : cells.indices.value[i];\n\n const properties = {...cells.properties[i]};\n for (const key of Object.keys(cells.numericProps)) {\n properties[key] = cells.numericProps[key].value[i];\n }\n spatial.push({id, properties});\n }\n\n return spatial;\n}\n"],"file":"spatialjson-utils.js"}
@@ -9,6 +9,9 @@ function isFeatureIdDefined(value) {
9
9
  return value !== undefined && value !== null && value !== '';
10
10
  }
11
11
 
12
+ const defaultProps = {
13
+ aggregationResLevel: 4
14
+ };
12
15
  export default class SpatialIndexTileLayer extends TileLayer {
13
16
  getTileData(tile) {
14
17
  const {
@@ -48,6 +51,21 @@ export default class SpatialIndexTileLayer extends TileLayer {
48
51
  });
49
52
  }
50
53
 
54
+ updateState(params) {
55
+ const {
56
+ props,
57
+ oldProps
58
+ } = params;
59
+
60
+ if (props.aggregationResLevel !== oldProps.aggregationResLevel) {
61
+ this.setState({
62
+ tileset: null
63
+ });
64
+ }
65
+
66
+ super.updateState(params);
67
+ }
68
+
51
69
  _updateAutoHighlight(info) {
52
70
  const {
53
71
  hoveredFeatureId
@@ -99,4 +117,6 @@ export default class SpatialIndexTileLayer extends TileLayer {
99
117
  }
100
118
 
101
119
  _defineProperty(SpatialIndexTileLayer, "layerName", 'SpatialIndexTileLayer');
120
+
121
+ _defineProperty(SpatialIndexTileLayer, "defaultProps", defaultProps);
102
122
  //# sourceMappingURL=spatial-index-tile-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.ts"],"names":["registerLoaders","CartoSpatialTileLoader","TileLayer","_getURLFromTemplate","TILE_FORMATS","isFeatureIdDefined","value","undefined","SpatialIndexTileLayer","getTileData","tile","data","fetch","props","signal","url","Array","isArray","Promise","reject","loadOptions","getLoadOptions","formatTiles","BINARY","mimeType","propName","layer","_updateAutoHighlight","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","setState","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isFeatureIdPresent","findIndex","feature"],"mappings":"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","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport CartoSpatialTileLoader from './schema/carto-spatial-tile-loader';\nregisterLoaders([CartoSpatialTileLoader]);\n\nimport {PickingInfo} from '@deck.gl/core';\nimport {\n TileLayer,\n _getURLFromTemplate,\n _Tile2DHeader as Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {TILE_FORMATS} from '../api/maps-api-common';\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default class SpatialIndexTileLayer<ExtraProps = {}> extends TileLayer<any, ExtraProps> {\n static layerName = 'SpatialIndexTileLayer';\n\n getTileData(tile: TileLoadProps) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? _getURLFromTemplate(data, tile) : null;\n if (!tile.url) {\n return Promise.reject('Invalid URL');\n }\n\n if (getTileData) {\n return getTileData(tile);\n }\n\n let loadOptions = this.getLoadOptions();\n // @ts-ignore\n const {formatTiles} = this.props;\n\n // The backend doesn't yet support our custom mime-type, so force it here\n // TODO remove entire `getTileData` method once backend sends the correct mime-type\n if (formatTiles === TILE_FORMATS.BINARY) {\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/vnd.carto-spatial-tile'\n };\n }\n\n return fetch(tile.url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {hoveredFeatureId} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile: Tile2DHeader) {\n const {hoveredFeatureId} = this.state;\n const data = tile.content;\n\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (!isFeatureIdPresent || !Array.isArray(data)) {\n return -1;\n }\n\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n}\n"],"file":"spatial-index-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.ts"],"names":["registerLoaders","CartoSpatialTileLoader","TileLayer","_getURLFromTemplate","TILE_FORMATS","isFeatureIdDefined","value","undefined","defaultProps","aggregationResLevel","SpatialIndexTileLayer","getTileData","tile","data","fetch","props","signal","url","Array","isArray","Promise","reject","loadOptions","getLoadOptions","formatTiles","BINARY","mimeType","propName","layer","updateState","params","oldProps","setState","tileset","_updateAutoHighlight","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isFeatureIdPresent","findIndex","feature"],"mappings":";AAAA,SAAQA,eAAR,QAA8B,kBAA9B;AAEA,OAAOC,sBAAP,MAAmC,oCAAnC;AACAD,eAAe,CAAC,CAACC,sBAAD,CAAD,CAAf;AAGA,SACEC,SADF,EAGEC,mBAHF,QAMO,qBANP;AAOA,SAAQC,YAAR,QAA2B,wBAA3B;;AAEA,SAASC,kBAAT,CAA4BC,KAA5B,EAAqD;AACnD,SAAOA,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAK,EAA1D;AACD;;AAED,MAAME,YAAsD,GAAG;AAC7DC,EAAAA,mBAAmB,EAAE;AADwC,CAA/D;AAaA,eAAe,MAAMC,qBAAN,SAAkER,SAAlE,CAGb;AAIAS,EAAAA,WAAW,CAACC,IAAD,EAAsB;AAC/B,UAAM;AAACC,MAAAA,IAAD;AAAOF,MAAAA,WAAP;AAAoBG,MAAAA;AAApB,QAA6B,KAAKC,KAAxC;AACA,UAAM;AAACC,MAAAA;AAAD,QAAWJ,IAAjB;AAEAA,IAAAA,IAAI,CAACK,GAAL,GACE,OAAOJ,IAAP,KAAgB,QAAhB,IAA4BK,KAAK,CAACC,OAAN,CAAcN,IAAd,CAA5B,GAAkDV,mBAAmB,CAACU,IAAD,EAAOD,IAAP,CAArE,GAAoF,IADtF;;AAEA,QAAI,CAACA,IAAI,CAACK,GAAV,EAAe;AACb,aAAOG,OAAO,CAACC,MAAR,CAAe,aAAf,CAAP;AACD;;AAED,QAAIV,WAAJ,EAAiB;AACf,aAAOA,WAAW,CAACC,IAAD,CAAlB;AACD;;AAED,QAAIU,WAAW,GAAG,KAAKC,cAAL,EAAlB;AAEA,UAAM;AAACC,MAAAA;AAAD,QAAgB,KAAKT,KAA3B;;AAIA,QAAIS,WAAW,KAAKpB,YAAY,CAACqB,MAAjC,EAAyC;AACvCH,MAAAA,WAAW,GAAG,EACZ,GAAGA,WADS;AAEZI,QAAAA,QAAQ,EAAE;AAFE,OAAd;AAID;;AAED,WAAOZ,KAAK,CAACF,IAAI,CAACK,GAAN,EAAW;AAACU,MAAAA,QAAQ,EAAE,MAAX;AAAmBC,MAAAA,KAAK,EAAE,IAA1B;AAAgCN,MAAAA,WAAhC;AAA6CN,MAAAA;AAA7C,KAAX,CAAZ;AACD;;AAEDa,EAAAA,WAAW,CAACC,MAAD,EAAiC;AAC1C,UAAM;AAACf,MAAAA,KAAD;AAAQgB,MAAAA;AAAR,QAAoBD,MAA1B;;AACA,QAAIf,KAAK,CAACN,mBAAN,KAA8BsB,QAAQ,CAACtB,mBAA3C,EAAgE;AAE9D,WAAKuB,QAAL,CAAc;AAACC,QAAAA,OAAO,EAAE;AAAV,OAAd;AACD;;AACD,UAAMJ,WAAN,CAAkBC,MAAlB;AACD;;AAESI,EAAAA,oBAAoB,CAACC,IAAD,EAA0B;AACtD,UAAM;AAACC,MAAAA;AAAD,QAAqB,KAAKC,KAAhC;AACA,UAAMC,cAAc,GAAGH,IAAI,CAACI,MAA5B;AACA,QAAIC,mBAAJ;;AAEA,QAAIF,cAAJ,EAAoB;AAClBE,MAAAA,mBAAmB,GAAGF,cAAc,CAACG,EAArC;AACD;;AAED,QAAIL,gBAAgB,KAAKI,mBAAzB,EAA8C;AAC5C,UAAI;AAACE,QAAAA;AAAD,UAAmB,KAAK3B,KAA5B;;AACA,UAAI,OAAO2B,cAAP,KAA0B,UAA9B,EAA0C;AACxCA,QAAAA,cAAc,GAAGA,cAAc,CAACP,IAAD,CAA/B;AACD;;AAED,WAAKH,QAAL,CAAc;AACZU,QAAAA,cADY;AAEZN,QAAAA,gBAAgB,EAAEI;AAFN,OAAd;AAID;AACF;;AAEDG,EAAAA,sBAAsB,CAAC/B,IAAD,EAAqB;AACzC,WAAO;AACLgC,MAAAA,sBAAsB,EAAE,KAAKC,yBAAL,CAA+BjC,IAA/B,CADnB;AAEL8B,MAAAA,cAAc,EAAE,KAAKL,KAAL,CAAWK;AAFtB,KAAP;AAID;;AAEDG,EAAAA,yBAAyB,CAACjC,IAAD,EAAqB;AAC5C,UAAM;AAACwB,MAAAA;AAAD,QAAqB,KAAKC,KAAhC;AACA,UAAMxB,IAAI,GAAGD,IAAI,CAACkC,OAAlB;AAEA,UAAMC,kBAAkB,GAAG1C,kBAAkB,CAAC+B,gBAAD,CAA7C;;AACA,QAAI,CAACW,kBAAD,IAAuB,CAAC7B,KAAK,CAACC,OAAN,CAAcN,IAAd,CAA5B,EAAiD;AAC/C,aAAO,CAAC,CAAR;AACD;;AAED,WAAOA,IAAI,CAACmC,SAAL,CAAeC,OAAO,IAAIA,OAAO,CAACR,EAAR,KAAeL,gBAAzC,CAAP;AACD;;AAlFD;;gBAHmB1B,qB,eAIA,uB;;gBAJAA,qB,kBAKGF,Y","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport {DefaultProps, UpdateParameters} from '@deck.gl/core';\nimport CartoSpatialTileLoader from './schema/carto-spatial-tile-loader';\nregisterLoaders([CartoSpatialTileLoader]);\n\nimport {PickingInfo} from '@deck.gl/core';\nimport {\n TileLayer,\n TileLayerProps,\n _getURLFromTemplate,\n _Tile2DHeader as Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {TILE_FORMATS} from '../api/maps-api-common';\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nconst defaultProps: DefaultProps<SpatialIndexTileLayerProps> = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by SpatialIndexTileLayer. */\nexport type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps<DataT> &\n TileLayer<DataT>;\n\n/** Properties added by SpatialIndexTileLayer. */\ntype _SpatialIndexTileLayerProps<DataT> = {\n aggregationResLevel?: number;\n};\n\nexport default class SpatialIndexTileLayer<DataT = any, ExtraProps = {}> extends TileLayer<\n DataT,\n ExtraProps & Required<_SpatialIndexTileLayerProps<DataT>>\n> {\n static layerName = 'SpatialIndexTileLayer';\n static defaultProps = defaultProps;\n\n getTileData(tile: TileLoadProps) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? _getURLFromTemplate(data, tile) : null;\n if (!tile.url) {\n return Promise.reject('Invalid URL');\n }\n\n if (getTileData) {\n return getTileData(tile);\n }\n\n let loadOptions = this.getLoadOptions();\n // @ts-ignore\n const {formatTiles} = this.props;\n\n // The backend doesn't yet support our custom mime-type, so force it here\n // TODO remove entire `getTileData` method once backend sends the correct mime-type\n if (formatTiles === TILE_FORMATS.BINARY) {\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/vnd.carto-spatial-tile'\n };\n }\n\n return fetch(tile.url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n updateState(params: UpdateParameters<this>) {\n const {props, oldProps} = params;\n if (props.aggregationResLevel !== oldProps.aggregationResLevel) {\n // Tileset cache is invalid when resLevel changes\n this.setState({tileset: null});\n }\n super.updateState(params);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {hoveredFeatureId} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile: Tile2DHeader) {\n const {hoveredFeatureId} = this.state;\n const data = tile.content;\n\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (!isFeatureIdPresent || !Array.isArray(data)) {\n return -1;\n }\n\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n}\n"],"file":"spatial-index-tile-layer.js"}