@deck.gl/carto 8.8.0-alpha.5 → 8.8.0-alpha.6

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 (84) hide show
  1. package/dist/dist.dev.js +88 -48
  2. package/dist/es5/api/layer-map.js +7 -5
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/layers/carto-layer.js.map +1 -1
  5. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  6. package/dist/es5/layers/h3-tile-layer.js +20 -10
  7. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  8. package/dist/es5/layers/h3-tileset-2d.js +1 -1
  9. package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
  10. package/dist/es5/layers/quadkey-tile-layer.js +23 -12
  11. package/dist/es5/layers/quadkey-tile-layer.js.map +1 -1
  12. package/dist/es5/layers/quadkey-tileset-2d.js.map +1 -1
  13. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
  14. package/dist/esm/api/layer-map.js +8 -6
  15. package/dist/esm/api/layer-map.js.map +1 -1
  16. package/dist/esm/layers/carto-layer.js.map +1 -1
  17. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  18. package/dist/esm/layers/h3-tile-layer.js +12 -6
  19. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  20. package/dist/esm/layers/h3-tileset-2d.js +1 -1
  21. package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
  22. package/dist/esm/layers/quadkey-tile-layer.js +15 -8
  23. package/dist/esm/layers/quadkey-tile-layer.js.map +1 -1
  24. package/dist/esm/layers/quadkey-tileset-2d.js.map +1 -1
  25. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
  26. package/dist.min.js +3 -3
  27. package/package.json +4 -3
  28. package/src/api/layer-map.ts +16 -7
  29. package/src/layers/carto-layer.ts +11 -4
  30. package/src/layers/carto-tile-layer.ts +2 -2
  31. package/src/layers/h3-tile-layer.ts +78 -0
  32. package/src/layers/{h3-tileset-2d.js → h3-tileset-2d.ts} +20 -10
  33. package/src/layers/quadkey-tile-layer.ts +68 -0
  34. package/src/layers/{quadkey-tileset-2d.js → quadkey-tileset-2d.ts} +10 -5
  35. package/src/layers/{spatial-index-tile-layer.js → spatial-index-tile-layer.ts} +7 -6
  36. package/typed/api/index.d.ts +4 -0
  37. package/typed/api/index.d.ts.map +1 -0
  38. package/typed/api/layer-map.d.ts +54 -0
  39. package/typed/api/layer-map.d.ts.map +1 -0
  40. package/typed/api/maps-api-common.d.ts +65 -0
  41. package/typed/api/maps-api-common.d.ts.map +1 -0
  42. package/typed/api/maps-client.d.ts +18 -0
  43. package/typed/api/maps-client.d.ts.map +1 -0
  44. package/typed/api/maps-v3-client.d.ts +45 -0
  45. package/typed/api/maps-v3-client.d.ts.map +1 -0
  46. package/typed/api/parseMap.d.ts +11 -0
  47. package/typed/api/parseMap.d.ts.map +1 -0
  48. package/typed/basemap.d.ts +10 -0
  49. package/typed/basemap.d.ts.map +1 -0
  50. package/typed/config.d.ts +26 -0
  51. package/typed/config.d.ts.map +1 -0
  52. package/typed/index.d.ts +12 -0
  53. package/typed/index.d.ts.map +1 -0
  54. package/typed/layers/carto-layer.d.ts +98 -0
  55. package/typed/layers/carto-layer.d.ts.map +1 -0
  56. package/typed/layers/carto-tile-layer.d.ts +63 -0
  57. package/typed/layers/carto-tile-layer.d.ts.map +1 -0
  58. package/typed/layers/h3-tile-layer.d.ts +23 -0
  59. package/typed/layers/h3-tile-layer.d.ts.map +1 -0
  60. package/typed/layers/h3-tileset-2d.d.ts +18 -0
  61. package/typed/layers/h3-tileset-2d.d.ts.map +1 -0
  62. package/typed/layers/quadkey-tile-layer.d.ts +23 -0
  63. package/typed/layers/quadkey-tile-layer.d.ts.map +1 -0
  64. package/typed/layers/quadkey-tileset-2d.d.ts +15 -0
  65. package/typed/layers/quadkey-tileset-2d.d.ts.map +1 -0
  66. package/typed/layers/schema/carto-tile.d.ts +44 -0
  67. package/typed/layers/schema/carto-tile.d.ts.map +1 -0
  68. package/typed/layers/spatial-index-tile-layer.d.ts +11 -0
  69. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -0
  70. package/typed/package.json +6 -0
  71. package/typed/style/color-bins-style.d.ts +9 -0
  72. package/typed/style/color-bins-style.d.ts.map +1 -0
  73. package/typed/style/color-categories-style.d.ts +10 -0
  74. package/typed/style/color-categories-style.d.ts.map +1 -0
  75. package/typed/style/color-continuous-style.d.ts +9 -0
  76. package/typed/style/color-continuous-style.d.ts.map +1 -0
  77. package/typed/style/palette.d.ts +7 -0
  78. package/typed/style/palette.d.ts.map +1 -0
  79. package/typed/style/utils.d.ts +8 -0
  80. package/typed/style/utils.d.ts.map +1 -0
  81. package/typed/utils.d.ts +2 -0
  82. package/typed/utils.d.ts.map +1 -0
  83. package/src/layers/h3-tile-layer.js +0 -52
  84. package/src/layers/quadkey-tile-layer.js +0 -47
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/carto-tile-layer.ts"],"names":["Protobuf","log","ClipExtension","MVTLayer","_getURLFromTemplate","GeoJsonLayer","geojsonToBinary","TileReader","TILE_FORMATS","parseJSON","arrayBuffer","JSON","parse","TextDecoder","decode","parsePbf","buffer","pbf","tile","read","unpackProperties","properties","length","map","item","currentRecord","data","forEach","key","value","parseCartoTile","options","formatTiles","cartoTile","GEOJSON","features","points","lines","polygons","defaultTileFormat","BINARY","CartoTileLoader","name","version","id","module","extensions","mimeTypes","category","worker","parseSync","defaultProps","loaders","CartoTileLayer","getTileData","url","state","Promise","reject","loadOptions","getLoadOptions","fetch","props","signal","mimeType","assert","Object","values","includes","propName","layer","renderSubLayers","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","clipBounds","subLayer"],"mappings":"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","sourcesContent":["/* global TextDecoder */\nimport Protobuf from 'pbf';\nimport {Layer, LayersList, log} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\nimport {\n MVTLayer,\n MVTLayerProps,\n TileLayer,\n _getURLFromTemplate,\n _Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {geojsonToBinary} from '@loaders.gl/gis';\nimport {Properties, Tile, TileReader} from './schema/carto-tile';\nimport {TileFormat, TILE_FORMATS} from '../api/maps-api-common';\nimport {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nfunction parseJSON(arrayBuffer: ArrayBuffer): any {\n return JSON.parse(new TextDecoder().decode(arrayBuffer));\n}\n\nfunction parsePbf(buffer: ArrayBuffer): Tile {\n const pbf = new Protobuf(buffer);\n const tile = TileReader.read(pbf);\n return tile;\n}\n\nfunction unpackProperties(properties: Properties[]) {\n if (!properties || !properties.length) {\n return [];\n }\n return properties.map(item => {\n const currentRecord: Record<string, unknown> = {};\n item.data.forEach(({key, value}) => {\n currentRecord[key] = value;\n });\n return currentRecord;\n });\n}\n\nfunction parseCartoTile(arrayBuffer: ArrayBuffer, options?: LoaderOptions): BinaryFeatures | null {\n if (!arrayBuffer) return null;\n const formatTiles = options && options.cartoTile && options.cartoTile.formatTiles;\n if (formatTiles === TILE_FORMATS.GEOJSON) return geojsonToBinary(parseJSON(arrayBuffer).features);\n\n const tile = parsePbf(arrayBuffer);\n\n const {points, lines, polygons} = tile;\n const data = {\n points: {...points, properties: unpackProperties(points.properties)},\n lines: {...lines, properties: unpackProperties(lines.properties)},\n polygons: {...polygons, properties: unpackProperties(polygons.properties)}\n };\n\n // Note: there is slight, difference in `numericProps` type, however geojson/mvtlayer can cope with this\n return data as unknown as BinaryFeatures;\n}\n\nconst defaultTileFormat = TILE_FORMATS.BINARY;\n\nconst CartoTileLoader: LoaderWithParser = {\n name: 'CARTO Tile',\n version: '1',\n id: 'cartoTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/x-protobuf'],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoTile(arrayBuffer, options),\n parseSync: parseCartoTile,\n options: {\n cartoTile: {\n formatTiles: defaultTileFormat\n }\n }\n};\n\nconst defaultProps = {\n ...MVTLayer.defaultProps,\n formatTiles: defaultTileFormat,\n loaders: [CartoTileLoader]\n};\n\n/** All properties supported by CartoTileLayer. */\nexport type CartoTileLayerProps<DataT extends Feature = Feature> = _CartoTileLayerProps &\n MVTLayerProps<DataT>;\n\n/** Properties added by CartoTileLayer. */\ntype _CartoTileLayerProps = {\n /** Use to override the default tile data format.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n *\n * Only supported when `apiVersion` is `API_VERSIONS.V3` and `format` is `FORMATS.TILEJSON`.\n * */\n formatTiles?: TileFormat;\n};\n\nexport default class CartoTileLayer<\n DataT extends Feature = Feature,\n ExtraProps = {}\n> extends MVTLayer<DataT, Required<_CartoTileLayerProps> & ExtraProps> {\n static layerName = 'CartoTileLayer';\n static defaultProps = defaultProps;\n\n getTileData(tile: TileLoadProps) {\n const url = _getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n\n let loadOptions = this.getLoadOptions();\n const {fetch, formatTiles} = this.props;\n const {signal} = tile;\n\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf'\n };\n\n if (formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n loadOptions.cartoTile = {formatTiles};\n }\n\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: any;\n _offset: number;\n tile: _Tile2DHeader;\n }\n ): GeoJsonLayer | null {\n if (props.data === null) {\n return null;\n }\n\n const tileBbox = props.tile.bbox as any;\n const {west, south, east, north} = tileBbox;\n\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n}\n"],"file":"carto-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/carto-tile-layer.ts"],"names":["Protobuf","log","ClipExtension","MVTLayer","_getURLFromTemplate","GeoJsonLayer","geojsonToBinary","TileReader","TILE_FORMATS","parseJSON","arrayBuffer","JSON","parse","TextDecoder","decode","parsePbf","buffer","pbf","tile","read","unpackProperties","properties","length","map","item","currentRecord","data","forEach","key","value","parseCartoTile","options","formatTiles","cartoTile","GEOJSON","features","points","lines","polygons","defaultTileFormat","BINARY","CartoTileLoader","name","version","id","module","extensions","mimeTypes","category","worker","parseSync","defaultProps","loaders","CartoTileLayer","getTileData","url","state","Promise","reject","loadOptions","getLoadOptions","fetch","props","signal","mimeType","assert","Object","values","includes","propName","layer","renderSubLayers","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","clipBounds","subLayer"],"mappings":"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","sourcesContent":["/* global TextDecoder */\nimport Protobuf from 'pbf';\nimport {log} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\nimport {\n MVTLayer,\n MVTLayerProps,\n TileLayer,\n _getURLFromTemplate,\n _Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {geojsonToBinary} from '@loaders.gl/gis';\nimport {Properties, Tile, TileReader} from './schema/carto-tile';\nimport {TileFormat, TILE_FORMATS} from '../api/maps-api-common';\nimport {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nfunction parseJSON(arrayBuffer: ArrayBuffer): any {\n return JSON.parse(new TextDecoder().decode(arrayBuffer));\n}\n\nfunction parsePbf(buffer: ArrayBuffer): Tile {\n const pbf = new Protobuf(buffer);\n const tile = TileReader.read(pbf);\n return tile;\n}\n\nfunction unpackProperties(properties: Properties[]) {\n if (!properties || !properties.length) {\n return [];\n }\n return properties.map(item => {\n const currentRecord: Record<string, unknown> = {};\n item.data.forEach(({key, value}) => {\n currentRecord[key] = value;\n });\n return currentRecord;\n });\n}\n\nfunction parseCartoTile(arrayBuffer: ArrayBuffer, options?: LoaderOptions): BinaryFeatures | null {\n if (!arrayBuffer) return null;\n const formatTiles = options && options.cartoTile && options.cartoTile.formatTiles;\n if (formatTiles === TILE_FORMATS.GEOJSON) return geojsonToBinary(parseJSON(arrayBuffer).features);\n\n const tile = parsePbf(arrayBuffer);\n\n const {points, lines, polygons} = tile;\n const data = {\n points: {...points, properties: unpackProperties(points.properties)},\n lines: {...lines, properties: unpackProperties(lines.properties)},\n polygons: {...polygons, properties: unpackProperties(polygons.properties)}\n };\n\n // Note: there is slight, difference in `numericProps` type, however geojson/mvtlayer can cope with this\n return data as unknown as BinaryFeatures;\n}\n\nconst defaultTileFormat = TILE_FORMATS.BINARY;\n\nconst CartoTileLoader: LoaderWithParser = {\n name: 'CARTO Tile',\n version: '1',\n id: 'cartoTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/x-protobuf'],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoTile(arrayBuffer, options),\n parseSync: parseCartoTile,\n options: {\n cartoTile: {\n formatTiles: defaultTileFormat\n }\n }\n};\n\nconst defaultProps = {\n ...MVTLayer.defaultProps,\n formatTiles: defaultTileFormat,\n loaders: [CartoTileLoader]\n};\n\n/** All properties supported by CartoTileLayer. */\nexport type CartoTileLayerProps<DataT extends Feature = Feature> = _CartoTileLayerProps &\n MVTLayerProps<DataT>;\n\n/** Properties added by CartoTileLayer. */\ntype _CartoTileLayerProps = {\n /** Use to override the default tile data format.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n *\n * Only supported when `apiVersion` is `API_VERSIONS.V3` and `format` is `FORMATS.TILEJSON`.\n */\n formatTiles?: TileFormat;\n};\n\nexport default class CartoTileLayer<\n DataT extends Feature = Feature,\n ExtraProps = {}\n> extends MVTLayer<DataT, Required<_CartoTileLayerProps> & ExtraProps> {\n static layerName = 'CartoTileLayer';\n static defaultProps = defaultProps;\n\n getTileData(tile: TileLoadProps) {\n const url = _getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n\n let loadOptions = this.getLoadOptions();\n const {fetch, formatTiles} = this.props;\n const {signal} = tile;\n\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf'\n };\n\n if (formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n loadOptions.cartoTile = {formatTiles};\n }\n\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: any;\n _offset: number;\n tile: _Tile2DHeader;\n }\n ): GeoJsonLayer | null {\n if (props.data === null) {\n return null;\n }\n\n const tileBbox = props.tile.bbox as any;\n const {west, south, east, north} = tileBbox;\n\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n}\n"],"file":"carto-tile-layer.js"}
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { CompositeLayer } from '@deck.gl/core';
2
3
  import { H3HexagonLayer } from '@deck.gl/geo-layers';
3
4
  import H3Tileset2D from './h3-tileset-2d';
@@ -12,6 +13,7 @@ const renderSubLayers = props => {
12
13
  } = props.tile;
13
14
  if (!data || !data.length) return null;
14
15
  return new H3HexagonLayer(props, {
16
+ getHexagon: d => d.id,
15
17
  centerHexagon: index,
16
18
  highPrecision: true
17
19
  });
@@ -21,6 +23,12 @@ const defaultProps = {
21
23
  aggregationResLevel: 4
22
24
  };
23
25
  export default class H3TileLayer extends CompositeLayer {
26
+ constructor(...args) {
27
+ super(...args);
28
+
29
+ _defineProperty(this, "state", void 0);
30
+ }
31
+
24
32
  initializeState() {
25
33
  this.setState({
26
34
  data: null,
@@ -29,9 +37,6 @@ export default class H3TileLayer extends CompositeLayer {
29
37
  }
30
38
 
31
39
  updateState({
32
- props,
33
- oldProps,
34
- context,
35
40
  changeFlags
36
41
  }) {
37
42
  if (changeFlags.dataChanged) {
@@ -56,7 +61,6 @@ export default class H3TileLayer extends CompositeLayer {
56
61
  return [new SpatialIndexTileLayer(this.props, {
57
62
  id: "h3-tile-layer-".concat(this.props.id),
58
63
  data,
59
- getHexagon: d => d.id,
60
64
  TilesetClass: H3Tileset2D,
61
65
  renderSubLayers,
62
66
  maxZoom
@@ -64,6 +68,8 @@ export default class H3TileLayer extends CompositeLayer {
64
68
  }
65
69
 
66
70
  }
67
- H3TileLayer.layerName = 'H3TileLayer';
68
- H3TileLayer.defaultProps = defaultProps;
71
+
72
+ _defineProperty(H3TileLayer, "layerName", 'H3TileLayer');
73
+
74
+ _defineProperty(H3TileLayer, "defaultProps", defaultProps);
69
75
  //# sourceMappingURL=h3-tile-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/h3-tile-layer.js"],"names":["CompositeLayer","H3HexagonLayer","H3Tileset2D","SpatialIndexTileLayer","renderSubLayers","props","data","index","tile","length","centerHexagon","highPrecision","defaultProps","aggregationResLevel","H3TileLayer","initializeState","setState","tileJSON","updateState","oldProps","context","changeFlags","dataChanged","tiles","renderLayers","state","maxZoom","parseInt","maxresolution","id","getHexagon","d","TilesetClass","layerName"],"mappings":"AAAA,SAAQA,cAAR,QAA6B,eAA7B;AACA,SAAQC,cAAR,QAA6B,qBAA7B;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,qBAAP,MAAkC,4BAAlC;;AAEA,MAAMC,eAAe,GAAGC,KAAK,IAAI;AAC/B,QAAM;AAACC,IAAAA;AAAD,MAASD,KAAf;AACA,QAAM;AAACE,IAAAA;AAAD,MAAUF,KAAK,CAACG,IAAtB;AACA,MAAI,CAACF,IAAD,IAAS,CAACA,IAAI,CAACG,MAAnB,EAA2B,OAAO,IAAP;AAE3B,SAAO,IAAIR,cAAJ,CAAmBI,KAAnB,EAA0B;AAC/BK,IAAAA,aAAa,EAAEH,KADgB;AAE/BI,IAAAA,aAAa,EAAE;AAFgB,GAA1B,CAAP;AAID,CATD;;AAWA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,mBAAmB,EAAE;AADF,CAArB;AAIA,eAAe,MAAMC,WAAN,SAA0Bd,cAA1B,CAAyC;AACtDe,EAAAA,eAAe,GAAG;AAChB,SAAKC,QAAL,CAAc;AAACV,MAAAA,IAAI,EAAE,IAAP;AAAaW,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACb,IAAAA,KAAD;AAAQc,IAAAA,QAAR;AAAkBC,IAAAA,OAAlB;AAA2BC,IAAAA;AAA3B,GAAD,EAA0C;AACnD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAAChB,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMY,QAAQ,GAAGX,IAAjB;AACAA,MAAAA,IAAI,GAAGW,QAAQ,CAACM,KAAhB;AACA,WAAKP,QAAL,CAAc;AAACV,QAAAA,IAAD;AAAOW,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDO,EAAAA,YAAY,GAAG;AACb,UAAM;AAAClB,MAAAA,IAAD;AAAOW,MAAAA;AAAP,QAAmB,KAAKQ,KAA9B;AACA,UAAMC,OAAO,GAAGC,QAAQ,CAACV,QAAQ,CAACW,aAAV,CAAxB;AACA,WAAO,CACL,IAAIzB,qBAAJ,CAA0B,KAAKE,KAA/B,EAAsC;AACpCwB,MAAAA,EAAE,0BAAmB,KAAKxB,KAAL,CAAWwB,EAA9B,CADkC;AAEpCvB,MAAAA,IAFoC;AAGpCwB,MAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACF,EAHiB;AAIpCG,MAAAA,YAAY,EAAE9B,WAJsB;AAKpCE,MAAAA,eALoC;AAMpCsB,MAAAA;AANoC,KAAtC,CADK,CAAP;AAUD;;AA3BqD;AA8BxDZ,WAAW,CAACmB,SAAZ,GAAwB,aAAxB;AACAnB,WAAW,CAACF,YAAZ,GAA2BA,YAA3B","sourcesContent":["import {CompositeLayer} from '@deck.gl/core';\nimport {H3HexagonLayer} from '@deck.gl/geo-layers';\nimport H3Tileset2D from './h3-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n const {index} = props.tile;\n if (!data || !data.length) return null;\n\n return new H3HexagonLayer(props, {\n centerHexagon: index,\n highPrecision: true\n });\n};\n\nconst defaultProps = {\n aggregationResLevel: 4\n};\n\nexport default class H3TileLayer extends CompositeLayer {\n initializeState() {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = tileJSON.tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers() {\n const {data, tileJSON} = this.state;\n const maxZoom = parseInt(tileJSON.maxresolution);\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `h3-tile-layer-${this.props.id}`,\n data,\n getHexagon: d => d.id,\n TilesetClass: H3Tileset2D,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n\nH3TileLayer.layerName = 'H3TileLayer';\nH3TileLayer.defaultProps = defaultProps;\n"],"file":"h3-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/h3-tile-layer.ts"],"names":["CompositeLayer","H3HexagonLayer","H3Tileset2D","SpatialIndexTileLayer","renderSubLayers","props","data","index","tile","length","getHexagon","d","id","centerHexagon","highPrecision","defaultProps","aggregationResLevel","H3TileLayer","initializeState","setState","tileJSON","updateState","changeFlags","dataChanged","tiles","renderLayers","state","maxZoom","parseInt","maxresolution","TilesetClass"],"mappings":";AAAA,SACEA,cADF,QAMO,eANP;AAOA,SAAQC,cAAR,QAA6B,qBAA7B;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,qBAAP,MAAkC,4BAAlC;;AAEA,MAAMC,eAAe,GAAGC,KAAK,IAAI;AAC/B,QAAM;AAACC,IAAAA;AAAD,MAASD,KAAf;AACA,QAAM;AAACE,IAAAA;AAAD,MAAUF,KAAK,CAACG,IAAtB;AACA,MAAI,CAACF,IAAD,IAAS,CAACA,IAAI,CAACG,MAAnB,EAA2B,OAAO,IAAP;AAE3B,SAAO,IAAIR,cAAJ,CAAmBI,KAAnB,EAA0B;AAC/BK,IAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACC,EADY;AAE/BC,IAAAA,aAAa,EAAEN,KAFgB;AAG/BO,IAAAA,aAAa,EAAE;AAHgB,GAA1B,CAAP;AAKD,CAVD;;AAYA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,mBAAmB,EAAE;AADF,CAArB;AAgBA,eAAe,MAAMC,WAAN,SAAyDjB,cAAzD,CAEb;AAAA;AAAA;;AAAA;AAAA;;AASAkB,EAAAA,eAAe,GAAS;AACtB,SAAKC,QAAL,CAAc;AAACb,MAAAA,IAAI,EAAE,IAAP;AAAac,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACC,IAAAA;AAAD,GAAD,EAA8C;AACvD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAACjB,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMe,QAAQ,GAAGd,IAAjB;AACAA,MAAAA,IAAI,GAAIc,QAAD,CAAkBI,KAAzB;AACA,WAAKL,QAAL,CAAc;AAACb,QAAAA,IAAD;AAAOc,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDK,EAAAA,YAAY,GAA8B;AACxC,UAAM;AAACnB,MAAAA,IAAD;AAAOc,MAAAA;AAAP,QAAmB,KAAKM,KAA9B;AACA,UAAMC,OAAO,GAAGC,QAAQ,CAACR,QAAQ,CAACS,aAAV,CAAxB;AACA,WAAO,CACL,IAAI1B,qBAAJ,CAA0B,KAAKE,KAA/B,EAAsC;AACpCO,MAAAA,EAAE,0BAAmB,KAAKP,KAAL,CAAWO,EAA9B,CADkC;AAEpCN,MAAAA,IAFoC;AAIpCwB,MAAAA,YAAY,EAAE5B,WAJsB;AAKpCE,MAAAA,eALoC;AAMpCuB,MAAAA;AANoC,KAAtC,CADK,CAAP;AAUD;;AAnCD;;gBAFmBV,W,eAGA,a;;gBAHAA,W,kBAIGF,Y","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters\n} from '@deck.gl/core';\nimport {H3HexagonLayer} from '@deck.gl/geo-layers';\nimport H3Tileset2D from './h3-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n const {index} = props.tile;\n if (!data || !data.length) return null;\n\n return new H3HexagonLayer(props, {\n getHexagon: d => d.id,\n centerHexagon: index,\n highPrecision: true\n });\n};\n\nconst defaultProps = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by H3TileLayer. */\nexport type H3TileLayerProps<DataT = any> = _H3TileLayerProps<DataT> & CompositeLayerProps<DataT>;\n\n// TODO: use type from h3-hexagon-layer when available\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype H3HexagonLayerProps<DataT = any> = Record<string, any>;\n\n/** Properties added by H3TileLayer. */\ntype _H3TileLayerProps<DataT = any> = H3HexagonLayerProps<DataT> & {\n aggregationResLevel?: number;\n};\n\nexport default class H3TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<\n ExtraPropsT & Required<_H3TileLayerProps<DataT>>\n> {\n static layerName = 'H3TileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\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: `h3-tile-layer-${this.props.id}`,\n data,\n // @ts-expect-error Tileset2D should be generic over TileIndex\n TilesetClass: H3Tileset2D,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n"],"file":"h3-tile-layer.js"}
@@ -62,7 +62,7 @@ export default class H3Tileset2D extends Tileset2D {
62
62
  }) {
63
63
  const [east, south, west, north] = viewport.getBounds();
64
64
  let z = getHexagonResolution(viewport);
65
- let indices = [];
65
+ let indices;
66
66
 
67
67
  if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {
68
68
  z = minZoom;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/h3-tileset-2d.js"],"names":["_Tileset2D","Tileset2D","polyfill","getRes0Indexes","geoToH3","h3GetResolution","h3ToGeoBoundary","h3ToParent","kRing","getHexagonsInBoundingBox","west","north","east","south","resolution","concat","oversample","h3Indices","Set","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","Math","min","max","BIAS","getHexagonResolution","viewport","hexagonScaleFactor","zoom","latitudeScaleFactor","log","cos","PI","latitude","floor","H3Tileset2D","getTileIndices","minZoom","maxZoom","getBounds","z","indices","Number","isFinite","center","longitude","getTileId","getTileMetadata","bbox","getTileZoom","getParentIndex"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\nimport {\n polyfill,\n getRes0Indexes,\n geoToH3,\n h3GetResolution,\n h3ToGeoBoundary,\n h3ToParent,\n kRing\n} from 'h3-js';\n\nfunction getHexagonsInBoundingBox({west, north, east, south}, resolution) {\n if (resolution === 0) {\n return getRes0Indexes();\n }\n if (east - west > 180) {\n // This is a known issue in h3-js: polyfill does not work correctly\n // when longitude span is larger than 180 degrees.\n return getHexagonsInBoundingBox({west, north, east: 0, south}, resolution).concat(\n getHexagonsInBoundingBox({west: 0, north, east, south}, resolution)\n );\n }\n\n // `polyfill()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 2;\n const h3Indices = polyfill(\n [\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;\n}\n\nfunction tileToBoundingBox(index) {\n const coordinates = h3ToGeoBoundary(index);\n const latitudes = coordinates.map(c => c[0]);\n const longitudes = coordinates.map(c => c[1]);\n const west = Math.min(...longitudes);\n const south = Math.min(...latitudes);\n const east = Math.max(...longitudes);\n const north = Math.max(...latitudes);\n return {west, south, east, north};\n}\n\n// Resolution conversion function. Takes a WebMercatorViewport and returns\n// a H3 resolution such that the screen space size of the hexagons is\n// similar\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\nfunction getHexagonResolution(viewport) {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\n\nexport default class H3Tileset2D extends Tileset2D {\n getTileIndices({viewport, minZoom, maxZoom}) {\n const [east, south, west, north] = viewport.getBounds();\n\n let z = getHexagonResolution(viewport);\n let indices = [];\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n z = minZoom;\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n\n // Once we are at max zoom, getHexagonsInBoundingBox doesn't work, simply\n // get a ring centered on the hexagon in the viewport center\n const center = geoToH3(viewport.latitude, viewport.longitude, maxZoom);\n indices = kRing(center, 1);\n } else {\n indices = getHexagonsInBoundingBox({west, north, east, south}, z);\n }\n\n return indices.map(i => ({i}));\n }\n\n getTileId({i}) {\n return i;\n }\n\n getTileMetadata({i}) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n getTileZoom({i}) {\n return h3GetResolution(i);\n }\n\n getParentIndex(index) {\n const resolution = h3GetResolution(index.i);\n const i = h3ToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
1
+ {"version":3,"sources":["../../../src/layers/h3-tileset-2d.ts"],"names":["_Tileset2D","Tileset2D","polyfill","getRes0Indexes","geoToH3","h3GetResolution","h3ToGeoBoundary","h3ToParent","kRing","getHexagonsInBoundingBox","west","north","east","south","resolution","concat","oversample","h3Indices","Set","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","Math","min","max","BIAS","getHexagonResolution","viewport","hexagonScaleFactor","zoom","latitudeScaleFactor","log","cos","PI","latitude","floor","H3Tileset2D","getTileIndices","minZoom","maxZoom","getBounds","z","indices","Number","isFinite","center","longitude","getTileId","getTileMetadata","bbox","getTileZoom","getParentIndex"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D, GeoBoundingBox} from '@deck.gl/geo-layers';\nimport {\n polyfill,\n getRes0Indexes,\n geoToH3,\n h3GetResolution,\n h3ToGeoBoundary,\n h3ToParent,\n kRing\n} from 'h3-js';\n\nexport type H3TileIndex = {i: string};\n\nfunction getHexagonsInBoundingBox(\n {west, north, east, south}: GeoBoundingBox,\n resolution: number\n): string[] {\n if (resolution === 0) {\n return getRes0Indexes();\n }\n if (east - west > 180) {\n // This is a known issue in h3-js: polyfill does not work correctly\n // when longitude span is larger than 180 degrees.\n return getHexagonsInBoundingBox({west, north, east: 0, south}, resolution).concat(\n getHexagonsInBoundingBox({west: 0, north, east, south}, resolution)\n );\n }\n\n // `polyfill()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 2;\n const h3Indices = polyfill(\n [\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;\n}\n\nfunction tileToBoundingBox(index: string): GeoBoundingBox {\n const coordinates = h3ToGeoBoundary(index);\n const latitudes = coordinates.map(c => c[0]);\n const longitudes = coordinates.map(c => c[1]);\n const west = Math.min(...longitudes);\n const south = Math.min(...latitudes);\n const east = Math.max(...longitudes);\n const north = Math.max(...latitudes);\n return {west, south, east, north};\n}\n\n// Resolution conversion function. Takes a WebMercatorViewport and returns\n// a H3 resolution such that the screen space size of the hexagons is\n// similar\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\nfunction getHexagonResolution(viewport): number {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\n\nexport default class H3Tileset2D extends Tileset2D {\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileIndices({viewport, minZoom, maxZoom}): H3TileIndex[] {\n const [east, south, west, north] = viewport.getBounds();\n\n let z = getHexagonResolution(viewport);\n let indices: string[];\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n z = minZoom;\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n\n // Once we are at max zoom, getHexagonsInBoundingBox doesn't work, simply\n // get a ring centered on the hexagon in the viewport center\n const center = geoToH3(viewport.latitude, viewport.longitude, maxZoom);\n indices = kRing(center, 1);\n } else {\n indices = getHexagonsInBoundingBox({west, north, east, south}, z);\n }\n\n return indices.map(i => ({i}));\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({i}: H3TileIndex): string {\n return i;\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({i}: H3TileIndex) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({i}: H3TileIndex): number {\n return h3GetResolution(i);\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index: H3TileIndex): H3TileIndex {\n const resolution = h3GetResolution(index.i);\n const i = h3ToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { CompositeLayer } from '@deck.gl/core';
2
3
  import { QuadkeyLayer } from '@deck.gl/geo-layers';
3
4
  import QuadkeyTileset2D from './quadkey-tileset-2d';
@@ -8,13 +9,21 @@ const renderSubLayers = props => {
8
9
  data
9
10
  } = props;
10
11
  if (!data || !data.length) return null;
11
- return new QuadkeyLayer(props);
12
+ return new QuadkeyLayer(props, {
13
+ getQuadkey: d => d.id
14
+ });
12
15
  };
13
16
 
14
17
  const defaultProps = {
15
18
  aggregationResLevel: 6
16
19
  };
17
20
  export default class QuadkeyTileLayer extends CompositeLayer {
21
+ constructor(...args) {
22
+ super(...args);
23
+
24
+ _defineProperty(this, "state", void 0);
25
+ }
26
+
18
27
  initializeState() {
19
28
  this.setState({
20
29
  data: null,
@@ -23,9 +32,6 @@ export default class QuadkeyTileLayer extends CompositeLayer {
23
32
  }
24
33
 
25
34
  updateState({
26
- props,
27
- oldProps,
28
- context,
29
35
  changeFlags
30
36
  }) {
31
37
  if (changeFlags.dataChanged) {
@@ -46,11 +52,10 @@ export default class QuadkeyTileLayer extends CompositeLayer {
46
52
  data,
47
53
  tileJSON
48
54
  } = this.state;
49
- const maxZoom = parseInt(tileJSON.maxresolution);
55
+ const maxZoom = parseInt(tileJSON === null || tileJSON === void 0 ? void 0 : tileJSON.maxresolution);
50
56
  return [new SpatialIndexTileLayer(this.props, {
51
57
  id: "quadkey-tile-layer-".concat(this.props.id),
52
58
  data,
53
- getQuadkey: d => d.id,
54
59
  TilesetClass: QuadkeyTileset2D,
55
60
  renderSubLayers,
56
61
  maxZoom
@@ -58,6 +63,8 @@ export default class QuadkeyTileLayer extends CompositeLayer {
58
63
  }
59
64
 
60
65
  }
61
- QuadkeyTileLayer.layerName = 'QuadkeyTileLayer';
62
- QuadkeyTileLayer.defaultProps = defaultProps;
66
+
67
+ _defineProperty(QuadkeyTileLayer, "layerName", 'QuadkeyTileLayer');
68
+
69
+ _defineProperty(QuadkeyTileLayer, "defaultProps", defaultProps);
63
70
  //# sourceMappingURL=quadkey-tile-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/quadkey-tile-layer.js"],"names":["CompositeLayer","QuadkeyLayer","QuadkeyTileset2D","SpatialIndexTileLayer","renderSubLayers","props","data","length","defaultProps","aggregationResLevel","QuadkeyTileLayer","initializeState","setState","tileJSON","updateState","oldProps","context","changeFlags","dataChanged","tiles","renderLayers","state","maxZoom","parseInt","maxresolution","id","getQuadkey","d","TilesetClass","layerName"],"mappings":"AAAA,SAAQA,cAAR,QAA6B,eAA7B;AACA,SAAQC,YAAR,QAA2B,qBAA3B;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,CAAP;AACD,CAJD;;AAMA,MAAMG,YAAY,GAAG;AACnBC,EAAAA,mBAAmB,EAAE;AADF,CAArB;AAIA,eAAe,MAAMC,gBAAN,SAA+BV,cAA/B,CAA8C;AAC3DW,EAAAA,eAAe,GAAG;AAChB,SAAKC,QAAL,CAAc;AAACN,MAAAA,IAAI,EAAE,IAAP;AAAaO,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACT,IAAAA,KAAD;AAAQU,IAAAA,QAAR;AAAkBC,IAAAA,OAAlB;AAA2BC,IAAAA;AAA3B,GAAD,EAA0C;AACnD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAACZ,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMQ,QAAQ,GAAGP,IAAjB;AACAA,MAAAA,IAAI,GAAGO,QAAQ,CAACM,KAAhB;AACA,WAAKP,QAAL,CAAc;AAACN,QAAAA,IAAD;AAAOO,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDO,EAAAA,YAAY,GAAG;AACb,UAAM;AAACd,MAAAA,IAAD;AAAOO,MAAAA;AAAP,QAAmB,KAAKQ,KAA9B;AACA,UAAMC,OAAO,GAAGC,QAAQ,CAACV,QAAQ,CAACW,aAAV,CAAxB;AACA,WAAO,CACL,IAAIrB,qBAAJ,CAA0B,KAAKE,KAA/B,EAAsC;AACpCoB,MAAAA,EAAE,+BAAwB,KAAKpB,KAAL,CAAWoB,EAAnC,CADkC;AAEpCnB,MAAAA,IAFoC;AAGpCoB,MAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACF,EAHiB;AAIpCG,MAAAA,YAAY,EAAE1B,gBAJsB;AAKpCE,MAAAA,eALoC;AAMpCkB,MAAAA;AANoC,KAAtC,CADK,CAAP;AAUD;;AA3B0D;AA8B7DZ,gBAAgB,CAACmB,SAAjB,GAA6B,kBAA7B;AACAnB,gBAAgB,CAACF,YAAjB,GAAgCA,YAAhC","sourcesContent":["import {CompositeLayer} from '@deck.gl/core';\nimport {QuadkeyLayer} from '@deck.gl/geo-layers';\nimport QuadkeyTileset2D from './quadkey-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 QuadkeyLayer(props);\n};\n\nconst defaultProps = {\n aggregationResLevel: 6\n};\n\nexport default class QuadkeyTileLayer extends CompositeLayer {\n initializeState() {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = tileJSON.tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers() {\n const {data, tileJSON} = this.state;\n const maxZoom = parseInt(tileJSON.maxresolution);\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `quadkey-tile-layer-${this.props.id}`,\n data,\n getQuadkey: d => d.id,\n TilesetClass: QuadkeyTileset2D,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n\nQuadkeyTileLayer.layerName = 'QuadkeyTileLayer';\nQuadkeyTileLayer.defaultProps = defaultProps;\n"],"file":"quadkey-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/quadkey-tile-layer.ts"],"names":["CompositeLayer","QuadkeyLayer","QuadkeyTileset2D","SpatialIndexTileLayer","renderSubLayers","props","data","length","getQuadkey","d","id","defaultProps","aggregationResLevel","QuadkeyTileLayer","initializeState","setState","tileJSON","updateState","changeFlags","dataChanged","tiles","renderLayers","state","maxZoom","parseInt","maxresolution","TilesetClass"],"mappings":";AAAA,SACEA,cADF,QAMO,eANP;AAOA,SAAQC,YAAR,QAA8C,qBAA9C;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;AAACG,IAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACC;AAApB,GAAxB,CAAP;AACD,CAJD;;AAMA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,mBAAmB,EAAE;AADF,CAArB;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} from '@deck.gl/core';\nimport {QuadkeyLayer, QuadkeyLayerProps} from '@deck.gl/geo-layers';\nimport QuadkeyTileset2D from './quadkey-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 QuadkeyLayer(props, {getQuadkey: d => d.id});\n};\n\nconst defaultProps = {\n aggregationResLevel: 6\n};\n\n/** All properties supported by QuadkeyTileLayer. */\nexport type QuadkeyTileLayerProps<DataT = any> = _QuadkeyTileLayerProps<DataT> &\n CompositeLayerProps<DataT>;\n\n/** Properties added by QuadkeyTileLayer. */\ntype _QuadkeyTileLayerProps<DataT> = QuadkeyLayerProps<DataT> & {\n aggregationResLevel?: number;\n};\n\nexport default class QuadkeyTileLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<\n ExtraProps & Required<_QuadkeyTileLayerProps<DataT>>\n> {\n static layerName = 'QuadkeyTileLayer';\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: `quadkey-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadkeyTileset2D as any,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n"],"file":"quadkey-tile-layer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/quadkey-tileset-2d.js"],"names":["_Tileset2D","Tileset2D","tileToQuadkey","tile","index","z","b","mask","x","y","toString","i","QuadkeyTileset2D","getTileIndices","opts","map","getTileId","getTileMetadata","getTileZoom","length","getParentIndex","slice"],"mappings":"AAAA,SAAQA,UAAU,IAAIC,SAAtB,QAAsC,qBAAtC;;AAEA,SAASC,aAAT,CAAuBC,IAAvB,EAA6B;AAC3B,MAAIC,KAAK,GAAG,EAAZ;;AACA,OAAK,IAAIC,CAAC,GAAGF,IAAI,CAACE,CAAlB,EAAqBA,CAAC,GAAG,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B,QAAIC,CAAC,GAAG,CAAR;AACA,UAAMC,IAAI,GAAG,KAAMF,CAAC,GAAG,CAAvB;AACA,QAAI,CAACF,IAAI,CAACK,CAAL,GAASD,IAAV,MAAoB,CAAxB,EAA2BD,CAAC;AAC5B,QAAI,CAACH,IAAI,CAACM,CAAL,GAASF,IAAV,MAAoB,CAAxB,EAA2BD,CAAC,IAAI,CAAL;AAC3BF,IAAAA,KAAK,IAAIE,CAAC,CAACI,QAAF,EAAT;AACD;;AACD,SAAO;AAACC,IAAAA,CAAC,EAAEP;AAAJ,GAAP;AACD;;AAED,eAAe,MAAMQ,gBAAN,SAA+BX,SAA/B,CAAyC;AACtDY,EAAAA,cAAc,CAACC,IAAD,EAAO;AACnB,WAAO,MAAMD,cAAN,CAAqBC,IAArB,EAA2BC,GAA3B,CAA+Bb,aAA/B,CAAP;AACD;;AAEDc,EAAAA,SAAS,CAAC;AAACL,IAAAA;AAAD,GAAD,EAAM;AACb,WAAOA,CAAP;AACD;;AAEDM,EAAAA,eAAe,GAAG;AAChB,WAAO,EAAP;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACP,IAAAA;AAAD,GAAD,EAAM;AACf,WAAOA,CAAC,CAACQ,MAAT;AACD;;AAEDC,EAAAA,cAAc,CAAChB,KAAD,EAAQ;AACpB,UAAMO,CAAC,GAAGP,KAAK,CAACO,CAAN,CAAQU,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;AACA,WAAO;AAACV,MAAAA;AAAD,KAAP;AACD;;AApBqD","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\n\nfunction tileToQuadkey(tile) {\n let index = '';\n for (let z = tile.z; z > 0; z--) {\n let b = 0;\n const mask = 1 << (z - 1);\n if ((tile.x & mask) !== 0) b++;\n if ((tile.y & mask) !== 0) b += 2;\n index += b.toString();\n }\n return {i: index};\n}\n\nexport default class QuadkeyTileset2D extends Tileset2D {\n getTileIndices(opts) {\n return super.getTileIndices(opts).map(tileToQuadkey);\n }\n\n getTileId({i}) {\n return i;\n }\n\n getTileMetadata() {\n return {};\n }\n\n getTileZoom({i}) {\n return i.length;\n }\n\n getParentIndex(index) {\n const i = index.i.slice(0, -1);\n return {i};\n }\n}\n"],"file":"quadkey-tileset-2d.js"}
1
+ {"version":3,"sources":["../../../src/layers/quadkey-tileset-2d.ts"],"names":["_Tileset2D","Tileset2D","tileToQuadkey","tile","index","z","b","mask","x","y","toString","i","QuadkeyTileset2D","getTileIndices","opts","map","getTileId","getTileMetadata","getTileZoom","length","getParentIndex","slice"],"mappings":"AAAA,SAAQA,UAAU,IAAIC,SAAtB,QAAsC,qBAAtC;;AAGA,SAASC,aAAT,CAAuBC,IAAvB,EAA+C;AAC7C,MAAIC,KAAK,GAAG,EAAZ;;AACA,OAAK,IAAIC,CAAC,GAAGF,IAAI,CAACE,CAAlB,EAAqBA,CAAC,GAAG,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B,QAAIC,CAAC,GAAG,CAAR;AACA,UAAMC,IAAI,GAAG,KAAMF,CAAC,GAAG,CAAvB;AACA,QAAI,CAACF,IAAI,CAACK,CAAL,GAASD,IAAV,MAAoB,CAAxB,EAA2BD,CAAC;AAC5B,QAAI,CAACH,IAAI,CAACM,CAAL,GAASF,IAAV,MAAoB,CAAxB,EAA2BD,CAAC,IAAI,CAAL;AAC3BF,IAAAA,KAAK,IAAIE,CAAC,CAACI,QAAF,EAAT;AACD;;AACD,SAAO;AAACC,IAAAA,CAAC,EAAEP;AAAJ,GAAP;AACD;;AAED,eAAe,MAAMQ,gBAAN,SAA+BX,SAA/B,CAAyC;AAEtDY,EAAAA,cAAc,CAACC,IAAD,EAA2B;AACvC,WAAO,MAAMD,cAAN,CAAqBC,IAArB,EAA2BC,GAA3B,CAA+Bb,aAA/B,CAAP;AACD;;AAGDc,EAAAA,SAAS,CAAC;AAACL,IAAAA;AAAD,GAAD,EAAwB;AAC/B,WAAOA,CAAP;AACD;;AAEDM,EAAAA,eAAe,GAAG;AAChB,WAAO,EAAP;AACD;;AAGDC,EAAAA,WAAW,CAAC;AAACP,IAAAA;AAAD,GAAD,EAAwB;AACjC,WAAOA,CAAC,CAACQ,MAAT;AACD;;AAGDC,EAAAA,cAAc,CAAChB,KAAD,EAA0B;AACtC,UAAMO,CAAC,GAAGP,KAAK,CAACO,CAAN,CAAQU,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;AACA,WAAO;AAACV,MAAAA;AAAD,KAAP;AACD;;AAxBqD","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\n\ntype QuadkeyTileIndex = {i: string};\nfunction tileToQuadkey(tile): QuadkeyTileIndex {\n let index = '';\n for (let z = tile.z; z > 0; z--) {\n let b = 0;\n const mask = 1 << (z - 1);\n if ((tile.x & mask) !== 0) b++;\n if ((tile.y & mask) !== 0) b += 2;\n index += b.toString();\n }\n return {i: index};\n}\n\nexport default class QuadkeyTileset2D extends Tileset2D {\n // @ts-expect-error for spatial indices, TileSet2d should be parametrized by TileIndexT\n getTileIndices(opts): QuadkeyTileIndex[] {\n return super.getTileIndices(opts).map(tileToQuadkey);\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileId({i}: QuadkeyTileIndex) {\n return i;\n }\n\n getTileMetadata() {\n return {};\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileZoom({i}: QuadkeyTileIndex) {\n return i.length;\n }\n\n // @ts-expect-error TileIndex must be generic\n getParentIndex(index: QuadkeyTileIndex) {\n const i = index.i.slice(0, -1);\n return {i};\n }\n}\n"],"file":"quadkey-tileset-2d.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.js"],"names":["TileLayer","isFeatureIdDefined","value","undefined","SpatialIndexTileLayer","_updateAutoHighlight","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","props","setState","getSubLayerPropsByTile","tile","highlightedObjectIndex","getHighlightedObjectIndex","data","content","isFeatureIdPresent","Array","isArray","findIndex","feature"],"mappings":"AAAA,SAAQA,SAAR,QAAwB,qBAAxB;;AAEA,SAASC,kBAAT,CAA4BC,KAA5B,EAAmC;AACjC,SAAOA,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAK,EAA1D;AACD;;AAED,eAAe,MAAME,qBAAN,SAAoCJ,SAApC,CAA8C;AAC3DK,EAAAA,oBAAoB,CAACC,IAAD,EAAO;AACzB,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,KAAKC,KAA5B;;AACA,UAAI,OAAOD,cAAP,KAA0B,UAA9B,EAA0C;AACxCA,QAAAA,cAAc,GAAGA,cAAc,CAACP,IAAD,CAA/B;AACD;;AAED,WAAKS,QAAL,CAAc;AACZF,QAAAA,cADY;AAEZN,QAAAA,gBAAgB,EAAEI;AAFN,OAAd;AAID;AACF;;AAEDK,EAAAA,sBAAsB,CAACC,IAAD,EAAO;AAC3B,WAAO;AACLC,MAAAA,sBAAsB,EAAE,KAAKC,yBAAL,CAA+BF,IAA/B,CADnB;AAELJ,MAAAA,cAAc,EAAE,KAAKL,KAAL,CAAWK;AAFtB,KAAP;AAID;;AAEDM,EAAAA,yBAAyB,CAACF,IAAD,EAAO;AAC9B,UAAM;AAACV,MAAAA;AAAD,QAAqB,KAAKC,KAAhC;AACA,UAAMY,IAAI,GAAGH,IAAI,CAACI,OAAlB;AAEA,UAAMC,kBAAkB,GAAGrB,kBAAkB,CAACM,gBAAD,CAA7C;;AACA,QAAI,CAACe,kBAAD,IAAuB,CAACC,KAAK,CAACC,OAAN,CAAcJ,IAAd,CAA5B,EAAiD;AAC/C,aAAO,CAAC,CAAR;AACD;;AAED,WAAOA,IAAI,CAACK,SAAL,CAAeC,OAAO,IAAIA,OAAO,CAACd,EAAR,KAAeL,gBAAzC,CAAP;AACD;;AAxC0D","sourcesContent":["import {TileLayer} from '@deck.gl/geo-layers';\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default class SpatialIndexTileLayer extends TileLayer {\n _updateAutoHighlight(info) {\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) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile) {\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":["TileLayer","isFeatureIdDefined","value","undefined","SpatialIndexTileLayer","_updateAutoHighlight","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","props","setState","getSubLayerPropsByTile","tile","highlightedObjectIndex","getHighlightedObjectIndex","data","content","isFeatureIdPresent","Array","isArray","findIndex","feature"],"mappings":"AACA,SAAQA,SAAR,QAAuD,qBAAvD;;AAEA,SAASC,kBAAT,CAA4BC,KAA5B,EAAqD;AACnD,SAAOA,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAK,EAA1D;AACD;;AAED,eAAe,MAAME,qBAAN,SAAqDJ,SAArD,CAAgF;AACnFK,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,KAAKC,KAA5B;;AACA,UAAI,OAAOD,cAAP,KAA0B,UAA9B,EAA0C;AACxCA,QAAAA,cAAc,GAAGA,cAAc,CAACP,IAAD,CAA/B;AACD;;AAED,WAAKS,QAAL,CAAc;AACZF,QAAAA,cADY;AAEZN,QAAAA,gBAAgB,EAAEI;AAFN,OAAd;AAID;AACF;;AAEDK,EAAAA,sBAAsB,CAACC,IAAD,EAAqB;AACzC,WAAO;AACLC,MAAAA,sBAAsB,EAAE,KAAKC,yBAAL,CAA+BF,IAA/B,CADnB;AAELJ,MAAAA,cAAc,EAAE,KAAKL,KAAL,CAAWK;AAFtB,KAAP;AAID;;AAEDM,EAAAA,yBAAyB,CAACF,IAAD,EAAqB;AAC5C,UAAM;AAACV,MAAAA;AAAD,QAAqB,KAAKC,KAAhC;AACA,UAAMY,IAAI,GAAGH,IAAI,CAACI,OAAlB;AAEA,UAAMC,kBAAkB,GAAGrB,kBAAkB,CAACM,gBAAD,CAA7C;;AACA,QAAI,CAACe,kBAAD,IAAuB,CAACC,KAAK,CAACC,OAAN,CAAcJ,IAAd,CAA5B,EAAiD;AAC/C,aAAO,CAAC,CAAR;AACD;;AAED,WAAOA,IAAI,CAACK,SAAL,CAAeC,OAAO,IAAIA,OAAO,CAACd,EAAR,KAAeL,gBAAzC,CAAP;AACD;;AAxC4F","sourcesContent":["import {PickingInfo} from '@deck.gl/core';\nimport {TileLayer, _Tile2DHeader as Tile2DHeader} from '@deck.gl/geo-layers';\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 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"}