@deck.gl/carto 8.8.0-beta.4 → 8.8.1

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 (64) hide show
  1. package/dist/dist.dev.js +1253 -107
  2. package/dist/es5/index.js +23 -3
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/layers/carto-layer.js +3 -3
  5. package/dist/es5/layers/carto-layer.js.map +1 -1
  6. package/dist/es5/layers/h3-tile-layer.js +26 -3
  7. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  8. package/dist/es5/layers/h3-tileset-2d.js +19 -13
  9. package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
  10. package/dist/es5/layers/quadbin-layer.js +71 -0
  11. package/dist/es5/layers/quadbin-layer.js.map +1 -0
  12. package/dist/es5/layers/{quadkey-tile-layer.js → quadbin-tile-layer.js} +17 -17
  13. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -0
  14. package/dist/es5/layers/{quadkey-tileset-2d.js → quadbin-tileset-2d.js} +25 -57
  15. package/dist/es5/layers/quadbin-tileset-2d.js.map +1 -0
  16. package/dist/es5/layers/quadbin-utils.js +122 -0
  17. package/dist/es5/layers/quadbin-utils.js.map +1 -0
  18. package/dist/esm/index.js +2 -1
  19. package/dist/esm/index.js.map +1 -1
  20. package/dist/esm/layers/carto-layer.js +3 -3
  21. package/dist/esm/layers/carto-layer.js.map +1 -1
  22. package/dist/esm/layers/h3-tile-layer.js +20 -3
  23. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  24. package/dist/esm/layers/h3-tileset-2d.js +20 -16
  25. package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
  26. package/dist/esm/layers/quadbin-layer.js +29 -0
  27. package/dist/esm/layers/quadbin-layer.js.map +1 -0
  28. package/dist/esm/layers/{quadkey-tile-layer.js → quadbin-tile-layer.js} +10 -10
  29. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -0
  30. package/dist/esm/layers/quadbin-tileset-2d.js +37 -0
  31. package/dist/esm/layers/quadbin-tileset-2d.js.map +1 -0
  32. package/dist/esm/layers/quadbin-utils.js +88 -0
  33. package/dist/esm/layers/quadbin-utils.js.map +1 -0
  34. package/dist.min.js +138 -138
  35. package/package.json +2 -2
  36. package/src/index.ts +6 -1
  37. package/src/layers/carto-layer.ts +7 -7
  38. package/src/layers/h3-tile-layer.ts +24 -3
  39. package/src/layers/h3-tileset-2d.ts +20 -10
  40. package/src/layers/quadbin-layer.ts +43 -0
  41. package/src/layers/{quadkey-tile-layer.ts → quadbin-tile-layer.ts} +15 -13
  42. package/src/layers/quadbin-tileset-2d.ts +34 -0
  43. package/src/layers/quadbin-utils.ts +102 -0
  44. package/typed/index.d.ts +2 -1
  45. package/typed/index.d.ts.map +1 -1
  46. package/typed/layers/carto-layer.d.ts +2 -2
  47. package/typed/layers/carto-layer.d.ts.map +1 -1
  48. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  49. package/typed/layers/h3-tileset-2d.d.ts +6 -0
  50. package/typed/layers/h3-tileset-2d.d.ts.map +1 -1
  51. package/typed/layers/quadbin-layer.d.ts +20 -0
  52. package/typed/layers/quadbin-layer.d.ts.map +1 -0
  53. package/typed/layers/quadbin-tile-layer.d.ts +21 -0
  54. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -0
  55. package/typed/layers/quadbin-tileset-2d.d.ts +13 -0
  56. package/typed/layers/quadbin-tileset-2d.d.ts.map +1 -0
  57. package/typed/layers/quadbin-utils.d.ts +11 -0
  58. package/typed/layers/quadbin-utils.d.ts.map +1 -0
  59. package/dist/es5/layers/quadkey-tile-layer.js.map +0 -1
  60. package/dist/es5/layers/quadkey-tileset-2d.js.map +0 -1
  61. package/dist/esm/layers/quadkey-tile-layer.js.map +0 -1
  62. package/dist/esm/layers/quadkey-tileset-2d.js +0 -71
  63. package/dist/esm/layers/quadkey-tileset-2d.js.map +0 -1
  64. package/src/layers/quadkey-tileset-2d.ts +0 -59
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { CompositeLayer } from '@deck.gl/core';
3
- import { QuadkeyLayer } from '@deck.gl/geo-layers';
4
- import QuadkeyTileset2D from './quadkey-tileset-2d';
3
+ import QuadbinLayer from './quadbin-layer';
4
+ import QuadbinTileset2D from './quadbin-tileset-2d';
5
5
  import SpatialIndexTileLayer from './spatial-index-tile-layer';
6
6
 
7
7
  const renderSubLayers = props => {
@@ -9,15 +9,15 @@ const renderSubLayers = props => {
9
9
  data
10
10
  } = props;
11
11
  if (!data || !data.length) return null;
12
- return new QuadkeyLayer(props, {
13
- getQuadkey: d => d.id
12
+ return new QuadbinLayer(props, {
13
+ getQuadbin: d => d.id
14
14
  });
15
15
  };
16
16
 
17
17
  const defaultProps = {
18
18
  aggregationResLevel: 6
19
19
  };
20
- export default class QuadkeyTileLayer extends CompositeLayer {
20
+ export default class QuadbinTileLayer extends CompositeLayer {
21
21
  constructor(...args) {
22
22
  super(...args);
23
23
 
@@ -54,9 +54,9 @@ export default class QuadkeyTileLayer extends CompositeLayer {
54
54
  } = this.state;
55
55
  const maxZoom = parseInt(tileJSON === null || tileJSON === void 0 ? void 0 : tileJSON.maxresolution);
56
56
  return [new SpatialIndexTileLayer(this.props, {
57
- id: "quadkey-tile-layer-".concat(this.props.id),
57
+ id: "quadbin-tile-layer-".concat(this.props.id),
58
58
  data,
59
- TilesetClass: QuadkeyTileset2D,
59
+ TilesetClass: QuadbinTileset2D,
60
60
  renderSubLayers,
61
61
  maxZoom
62
62
  })];
@@ -64,7 +64,7 @@ export default class QuadkeyTileLayer extends CompositeLayer {
64
64
 
65
65
  }
66
66
 
67
- _defineProperty(QuadkeyTileLayer, "layerName", 'QuadkeyTileLayer');
67
+ _defineProperty(QuadbinTileLayer, "layerName", 'QuadbinTileLayer');
68
68
 
69
- _defineProperty(QuadkeyTileLayer, "defaultProps", defaultProps);
70
- //# sourceMappingURL=quadkey-tile-layer.js.map
69
+ _defineProperty(QuadbinTileLayer, "defaultProps", defaultProps);
70
+ //# sourceMappingURL=quadbin-tile-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/layers/quadbin-tile-layer.ts"],"names":["CompositeLayer","QuadbinLayer","QuadbinTileset2D","SpatialIndexTileLayer","renderSubLayers","props","data","length","getQuadbin","d","id","defaultProps","aggregationResLevel","QuadbinTileLayer","initializeState","setState","tileJSON","updateState","changeFlags","dataChanged","tiles","renderLayers","state","maxZoom","parseInt","maxresolution","TilesetClass"],"mappings":";AAAA,SACEA,cADF,QAOO,eAPP;AAQA,OAAOC,YAAP,MAA8C,iBAA9C;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,OAAOC,qBAAP,MAAkC,4BAAlC;;AAEA,MAAMC,eAAe,GAAGC,KAAK,IAAI;AAC/B,QAAM;AAACC,IAAAA;AAAD,MAASD,KAAf;AACA,MAAI,CAACC,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B,OAAO,IAAP;AAC3B,SAAO,IAAIN,YAAJ,CAAiBI,KAAjB,EAAwB;AAC7BG,IAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACC;AADU,GAAxB,CAAP;AAGD,CAND;;AAQA,MAAMC,YAAiD,GAAG;AACxDC,EAAAA,mBAAmB,EAAE;AADmC,CAA1D;AAaA,eAAe,MAAMC,gBAAN,SAA6Db,cAA7D,CAEb;AAAA;AAAA;;AAAA;AAAA;;AAQAc,EAAAA,eAAe,GAAS;AACtB,SAAKC,QAAL,CAAc;AAACT,MAAAA,IAAI,EAAE,IAAP;AAAaU,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACC,IAAAA;AAAD,GAAD,EAA8C;AACvD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAACb,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMW,QAAQ,GAAGV,IAAjB;AACAA,MAAAA,IAAI,GAAIU,QAAD,CAAkBI,KAAzB;AACA,WAAKL,QAAL,CAAc;AAACT,QAAAA,IAAD;AAAOU,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDK,EAAAA,YAAY,GAA8B;AACxC,UAAM;AAACf,MAAAA,IAAD;AAAOU,MAAAA;AAAP,QAAmB,KAAKM,KAA9B;AACA,UAAMC,OAAO,GAAGC,QAAQ,CAACR,QAAD,aAACA,QAAD,uBAACA,QAAQ,CAAES,aAAX,CAAxB;AACA,WAAO,CACL,IAAItB,qBAAJ,CAA0B,KAAKE,KAA/B,EAAsC;AACpCK,MAAAA,EAAE,+BAAwB,KAAKL,KAAL,CAAWK,EAAnC,CADkC;AAEpCJ,MAAAA,IAFoC;AAIpCoB,MAAAA,YAAY,EAAExB,gBAJsB;AAKpCE,MAAAA,eALoC;AAMpCmB,MAAAA;AANoC,KAAtC,CADK,CAAP;AAUD;;AAlCD;;gBAFmBV,gB,eAGA,kB;;gBAHAA,gB,kBAIGF,Y","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport QuadbinLayer, {QuadbinLayerProps} from './quadbin-layer';\nimport QuadbinTileset2D from './quadbin-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n if (!data || !data.length) return null;\n return new QuadbinLayer(props, {\n getQuadbin: d => d.id\n });\n};\n\nconst defaultProps: DefaultProps<QuadbinTileLayerProps> = {\n aggregationResLevel: 6\n};\n\n/** All properties supported by QuadbinTileLayer. */\nexport type QuadbinTileLayerProps<DataT = any> = _QuadbinTileLayerProps<DataT> &\n CompositeLayerProps<DataT>;\n\n/** Properties added by QuadbinTileLayer. */\ntype _QuadbinTileLayerProps<DataT> = QuadbinLayerProps<DataT> & {\n aggregationResLevel?: number;\n};\n\nexport default class QuadbinTileLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<\n ExtraProps & Required<_QuadbinTileLayerProps<DataT>>\n> {\n static layerName = 'QuadbinTileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\n initializeState(): void {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({changeFlags}: UpdateParameters<this>): void {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = (tileJSON as any).tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {data, tileJSON} = this.state;\n const maxZoom = parseInt(tileJSON?.maxresolution);\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `quadbin-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadbinTileset2D as any,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n"],"file":"quadbin-tile-layer.js"}
@@ -0,0 +1,37 @@
1
+ import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers';
2
+ import { tileToQuadbin, quadbinToTile, quadbinParent, quadbinZoom } from './quadbin-utils';
3
+ export default class QuadbinTileset2D extends Tileset2D {
4
+ getTileIndices(opts) {
5
+ return super.getTileIndices(opts).map(tileToQuadbin).map(i => ({
6
+ i
7
+ }));
8
+ }
9
+
10
+ getTileId({
11
+ i
12
+ }) {
13
+ return i;
14
+ }
15
+
16
+ getTileMetadata({
17
+ i
18
+ }) {
19
+ return super.getTileMetadata(quadbinToTile(i));
20
+ }
21
+
22
+ getTileZoom({
23
+ i
24
+ }) {
25
+ return Number(quadbinZoom(i));
26
+ }
27
+
28
+ getParentIndex({
29
+ i
30
+ }) {
31
+ return {
32
+ i: quadbinParent(i)
33
+ };
34
+ }
35
+
36
+ }
37
+ //# sourceMappingURL=quadbin-tileset-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/layers/quadbin-tileset-2d.ts"],"names":["_Tileset2D","Tileset2D","tileToQuadbin","quadbinToTile","quadbinParent","quadbinZoom","QuadbinTileset2D","getTileIndices","opts","map","i","getTileId","getTileMetadata","getTileZoom","Number","getParentIndex"],"mappings":"AAAA,SAAQA,UAAU,IAAIC,SAAtB,QAAsC,qBAAtC;AACA,SAAQC,aAAR,EAAuBC,aAAvB,EAAsCC,aAAtC,EAAqDC,WAArD,QAAuE,iBAAvE;AAIA,eAAe,MAAMC,gBAAN,SAA+BL,SAA/B,CAAyC;AAEtDM,EAAAA,cAAc,CAACC,IAAD,EAA2B;AACvC,WAAO,MACJD,cADI,CACWC,IADX,EAEJC,GAFI,CAEAP,aAFA,EAGJO,GAHI,CAGAC,CAAC,KAAK;AAACA,MAAAA;AAAD,KAAL,CAHD,CAAP;AAID;;AAGDC,EAAAA,SAAS,CAAC;AAACD,IAAAA;AAAD,GAAD,EAAgC;AACvC,WAAOA,CAAP;AACD;;AAGDE,EAAAA,eAAe,CAAC;AAACF,IAAAA;AAAD,GAAD,EAAwB;AACrC,WAAO,MAAME,eAAN,CAAsBT,aAAa,CAACO,CAAD,CAAnC,CAAP;AACD;;AAGDG,EAAAA,WAAW,CAAC;AAACH,IAAAA;AAAD,GAAD,EAAgC;AACzC,WAAOI,MAAM,CAACT,WAAW,CAACK,CAAD,CAAZ,CAAb;AACD;;AAGDK,EAAAA,cAAc,CAAC;AAACL,IAAAA;AAAD,GAAD,EAA0C;AACtD,WAAO;AAACA,MAAAA,CAAC,EAAEN,aAAa,CAACM,CAAD;AAAjB,KAAP;AACD;;AA3BqD","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\nimport {tileToQuadbin, quadbinToTile, quadbinParent, quadbinZoom} from './quadbin-utils';\n\ntype QuadbinTileIndex = {i: string};\n\nexport default class QuadbinTileset2D extends Tileset2D {\n // @ts-expect-error for spatial indices, TileSet2d should be parametrized by TileIndexT\n getTileIndices(opts): QuadbinTileIndex[] {\n return super\n .getTileIndices(opts)\n .map(tileToQuadbin)\n .map(i => ({i}));\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileId({i}: QuadbinTileIndex): string {\n return i;\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileMetadata({i}: QuadbinTileIndex) {\n return super.getTileMetadata(quadbinToTile(i));\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileZoom({i}: QuadbinTileIndex): number {\n return Number(quadbinZoom(i));\n }\n\n // @ts-expect-error TileIndex must be generic\n getParentIndex({i}: QuadbinTileIndex): QuadbinTileIndex {\n return {i: quadbinParent(i)};\n }\n}\n"],"file":"quadbin-tileset-2d.js"}
@@ -0,0 +1,88 @@
1
+ import { worldToLngLat } from '@math.gl/web-mercator';
2
+ const TILE_SIZE = 512;
3
+ const B = [0x5555555555555555n, 0x3333333333333333n, 0x0f0f0f0f0f0f0f0fn, 0x00ff00ff00ff00ffn, 0x0000ffff0000ffffn, 0x00000000ffffffffn];
4
+ const S = [0n, 1n, 2n, 4n, 8n, 16n];
5
+
6
+ function indexToBigInt(index) {
7
+ return BigInt("0x".concat(index));
8
+ }
9
+
10
+ function bigIntToIndex(quadbin) {
11
+ return quadbin.toString(16);
12
+ }
13
+
14
+ export function tileToQuadbin(tile) {
15
+ if (tile.z < 0 || tile.z > 26) {
16
+ throw new Error('Wrong zoom');
17
+ }
18
+
19
+ const z = BigInt(tile.z);
20
+ let x = BigInt(tile.x) << 32n - z;
21
+ let y = BigInt(tile.y) << 32n - z;
22
+
23
+ for (let i = 0; i < 5; i++) {
24
+ const s = S[5 - i];
25
+ const b = B[4 - i];
26
+ x = (x | x << s) & b;
27
+ y = (y | y << s) & b;
28
+ }
29
+
30
+ const quadbin = 0x4000000000000000n | 1n << 59n | z << 52n | (x | y << 1n) >> 12n | 0xfffffffffffffn >> z * 2n;
31
+ return bigIntToIndex(quadbin);
32
+ }
33
+ export function quadbinToTile(index) {
34
+ const quadbin = indexToBigInt(index);
35
+ const mode = quadbin >> 59n & 7n;
36
+ const modeDep = quadbin >> 57n & 3n;
37
+ const z = quadbin >> 52n & 0x1fn;
38
+ const q = (quadbin & 0xfffffffffffffn) << 12n;
39
+
40
+ if (mode !== 1n && modeDep !== 0n) {
41
+ throw new Error('Wrong mode');
42
+ }
43
+
44
+ let x = q;
45
+ let y = q >> 1n;
46
+
47
+ for (let i = 0; i < 6; i++) {
48
+ const s = S[i];
49
+ const b = B[i];
50
+ x = (x | x >> s) & b;
51
+ y = (y | y >> s) & b;
52
+ }
53
+
54
+ x = x >> 32n - z;
55
+ y = y >> 32n - z;
56
+ return {
57
+ z: Number(z),
58
+ x: Number(x),
59
+ y: Number(y)
60
+ };
61
+ }
62
+ export function quadbinZoom(index) {
63
+ const quadbin = indexToBigInt(index);
64
+ return quadbin >> 52n & 0x1fn;
65
+ }
66
+ export function quadbinParent(index) {
67
+ const quadbin = indexToBigInt(index);
68
+ const zparent = quadbinZoom(index) - 1n;
69
+ const parent = quadbin & ~(0x1fn << 52n) | zparent << 52n | 0xfffffffffffffn >> zparent * 2n;
70
+ return bigIntToIndex(parent);
71
+ }
72
+ export function quadbinToWorldBounds(quadbin) {
73
+ const {
74
+ x,
75
+ y,
76
+ z
77
+ } = quadbinToTile(quadbin);
78
+ const mask = 1 << z;
79
+ const scale = mask / TILE_SIZE;
80
+ return [[x / scale, TILE_SIZE - y / scale], [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]];
81
+ }
82
+ export function getQuadbinPolygon(quadbin) {
83
+ const [topLeft, bottomRight] = quadbinToWorldBounds(quadbin);
84
+ const [w, n] = worldToLngLat(topLeft);
85
+ const [e, s] = worldToLngLat(bottomRight);
86
+ return [e, n, e, s, w, s, w, n, e, n];
87
+ }
88
+ //# sourceMappingURL=quadbin-utils.js.map
@@ -0,0 +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":"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","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\nfunction indexToBigInt(index: string): bigint {\n return BigInt(`0x${index}`);\n}\n\nfunction 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"}