@kepler.gl/deckgl-layers 3.3.0-alpha.2 → 3.3.0-alpha.4

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 (34) hide show
  1. package/dist/cluster-layer/cluster-layer.js +2 -3
  2. package/dist/column-layer/enhanced-column-layer.js +30 -5
  3. package/dist/globe/atmosphere-layer.d.ts +26 -0
  4. package/dist/globe/atmosphere-layer.js +184 -0
  5. package/dist/globe/enhanced-multi-icon-layer.d.ts +6 -0
  6. package/dist/globe/enhanced-multi-icon-layer.js +63 -0
  7. package/dist/globe/globe-depth-disk-layer.d.ts +18 -0
  8. package/dist/globe/globe-depth-disk-layer.js +145 -0
  9. package/dist/globe/globe-layers.d.ts +102 -0
  10. package/dist/globe/globe-layers.js +565 -0
  11. package/dist/globe/globe-stars-layer.d.ts +5 -0
  12. package/dist/globe/globe-stars-layer.js +69 -0
  13. package/dist/globe/globe-view.d.ts +23 -0
  14. package/dist/globe/globe-view.js +316 -0
  15. package/dist/globe/index.d.ts +8 -0
  16. package/dist/globe/index.js +122 -0
  17. package/dist/globe/mvt-label-layer.d.ts +7928 -0
  18. package/dist/globe/mvt-label-layer.js +190 -0
  19. package/dist/grid-layer/enhanced-cpu-grid-layer.d.ts +53 -49
  20. package/dist/grid-layer/enhanced-cpu-grid-layer.js +28 -2
  21. package/dist/hexagon-layer/enhanced-hexagon-layer.d.ts +53 -49
  22. package/dist/hexagon-layer/enhanced-hexagon-layer.js +28 -2
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js +14 -3
  25. package/dist/layer-utils/globe-cell-utils.d.ts +30 -0
  26. package/dist/layer-utils/globe-cell-utils.js +173 -0
  27. package/dist/line-layer/line-layer.js +2 -2
  28. package/dist/raster/raster-layer/raster-layer.js +2 -2
  29. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +2 -2
  30. package/dist/svg-icon-layer/scatterplot-icon-layer.d.ts +4 -1
  31. package/dist/svg-icon-layer/scatterplot-icon-layer.js +52 -15
  32. package/dist/wms/wms-layer.d.ts +19 -0
  33. package/dist/wms/wms-layer.js +193 -23
  34. package/package.json +8 -5
@@ -24,7 +24,7 @@ var _rasterProcessingUniforms = require("../raster-processing-uniforms");
24
24
  var _constants = require("@kepler.gl/constants");
25
25
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
26
26
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
27
- function _superPropGet(t, e, r, o) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & o ? t.prototype : t), e, r); return 2 & o ? function (t) { return p.apply(r, t); } : p; }
27
+ function _superPropGet(t, o, e, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
28
28
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
29
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
30
30
  // Copyright contributors to the kepler.gl project
@@ -268,4 +268,4 @@ var RasterMeshLayer = exports["default"] = /*#__PURE__*/function (_SimpleMeshLay
268
268
  }(_meshLayers.SimpleMeshLayer);
269
269
  RasterMeshLayer.layerName = 'RasterMeshLayer';
270
270
  RasterMeshLayer.defaultProps = defaultProps;
271
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVzaExheWVycyIsInJlcXVpcmUiLCJfZW5naW5lIiwiX3Jhc3Rlck1lc2hMYXllclNoYWRlcnMiLCJfcmFzdGVyTGF5ZXJTaGFkZXJzIiwiX2ltYWdlcyIsIl91dGlsIiwiX3BpcGVsaW5lVmFsaWRhdGlvblBhdGNoIiwiX3Jhc3RlclByb2Nlc3NpbmdVbmlmb3JtcyIsIl9jb25zdGFudHMiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJyIiwicCIsIl9nZXQyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJwb3NpdGlvbnMiLCJQT1NJVElPTiIsIkVycm9yIiwiZ2V0R2VvbWV0cnkiLCJkYXRhIiwiR2VvbWV0cnkiLCJkZWZhdWx0UHJvcHMiLCJTaW1wbGVNZXNoTGF5ZXIiLCJtb2R1bGVzIiwidHlwZSIsInZhbHVlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwib25SZWRyYXdOZWVkZWQiLCJSYXN0ZXJNZXNoTGF5ZXIiLCJleHBvcnRzIiwiX1NpbXBsZU1lc2hMYXllciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJpbml0aWFsaXplU3RhdGUiLCJwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbiIsImVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCIsInNldFN0YXRlIiwiZ2V0U2hhZGVycyIsIl90aGlzJHByb3BzJG1vZHVsZXMiLCJwcm9wcyIsImx1bWFNb2R1bGVzIiwicHJlcGFyZUx1bWFNb2R1bGVzIiwicGFyZW50U2hhZGVycyIsInBhcmVudE1vZHVsZXMiLCJtIiwibmFtZSIsInZzIiwiYnVpbGRSYXN0ZXJNZXNoVmVydGV4U2hhZGVyIiwiZnMiLCJidWlsZFJhc3Rlck1lc2hGcmFnbWVudFNoYWRlciIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyYXN0ZXJNZXNoVW5pZm9ybXMiLCJyYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMiLCJ1cGRhdGVTdGF0ZSIsInBhcmFtcyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJjb250ZXh0Iiwib2xkTW9kdWxlcyIsIm1lc2giLCJleHRlbnNpb25zQ2hhbmdlZCIsIm1vZHVsZXNFcXVhbCIsIl90aGlzJGdldEF0dHJpYnV0ZU1hbiIsInN0YXRlIiwibW9kZWwiLCJfdGhpcyRzdGF0ZSRtb2RlbCRkZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCIsImRlc3Ryb3kiLCJnZXRNb2RlbCIsImhhc05vcm1hbHMiLCJOT1JNQUwiLCJub3JtYWxzIiwiZ2V0QXR0cmlidXRlTWFuYWdlciIsImludmFsaWRhdGVBbGwiLCJ1cGRhdGVJbWFnZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCRzZXQiLCJfdGhpcyRzdGF0ZSRtb2RlbDIiLCJzZXRUb3BvbG9neSIsIndpcmVmcmFtZSIsIlRPUE9MT0dZIiwiTElORV9TVFJJUCIsIlRSSUFOR0xFX0xJU1QiLCJfcmVmIiwiZGV2aWNlIiwiZ2wiLCJuZXdJbWFnZXMiLCJsb2FkSW1hZ2VzIiwiaW1hZ2VzRGF0YSIsIm9sZEltYWdlc0RhdGEiLCJkcmF3IiwiX29wdHMiLCJfdGhpcyRwcm9wcyRvcGFjaXR5IiwiX3RoaXMkc3RhdGUiLCJ2YWx1ZXMiLCJldmVyeSIsIml0ZW0iLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsInJhc3Rlck1lc2giLCJtZXNoT3BhY2l0eSIsIm9wYWNpdHkiLCJtZXNoRmxhdFNoYWRpbmciLCJhbGxNb2R1bGVQcm9wcyIsImFwcGx5TW9kdWxlVW5pZm9ybXMiLCJkcmF3U3VjY2VzcyIsInJlbmRlclBhc3MiLCJfc2NoZWR1bGVSZWRyYXciLCJfdGhpczIiLCJfcmVkcmF3U2NoZWR1bGVkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX3RoaXMyJGNvbnRleHQkbGF5ZXJNIiwiZGVjayIsIl9uZWVkc1JlZHJhdyIsImxheWVyTWFuYWdlciIsInNldE5lZWRzUmVkcmF3IiwiZmluYWxpemVTdGF0ZSIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJpbWFnZSIsImlzQXJyYXkiLCJtYXAiLCJ4IiwiX3gkZGVsZXRlIiwiX2ltYWdlJGRlbGV0ZSIsIk1vZGVsIiwiYXNzaWduIiwiaWQiLCJnZW9tZXRyeSIsImlzSW5zdGFuY2VkIiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1VwZGF0ZVBhcmFtZXRlcnN9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTaW1wbGVNZXNoTGF5ZXIsIFNpbXBsZU1lc2hMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQge0dlb21ldHJ5fSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuaW1wb3J0IHtNb2RlbH0gZnJvbSAnQGx1bWEuZ2wvZW5naW5lJztcblxuaW1wb3J0IHtcbiAgYnVpbGRSYXN0ZXJNZXNoRnJhZ21lbnRTaGFkZXIsXG4gIGJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlcixcbiAgcmFzdGVyTWVzaFVuaWZvcm1zXG59IGZyb20gJy4vcmFzdGVyLW1lc2gtbGF5ZXItc2hhZGVycyc7XG5pbXBvcnQge1xuICBlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQsXG4gIHByZXBhcmVMdW1hTW9kdWxlc1xufSBmcm9tICcuLi9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyLXNoYWRlcnMnO1xuaW1wb3J0IHtsb2FkSW1hZ2VzfSBmcm9tICcuLi9pbWFnZXMnO1xuaW1wb3J0IHR5cGUge1Jhc3RlckxheWVyQWRkZWRQcm9wcywgSW1hZ2VTdGF0ZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHttb2R1bGVzRXF1YWwsIGFwcGx5TW9kdWxlVW5pZm9ybXN9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHtwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbn0gZnJvbSAnLi4vcGlwZWxpbmUtdmFsaWRhdGlvbi1wYXRjaCc7XG5pbXBvcnQge3Jhc3RlclByb2Nlc3NpbmdVbmlmb3Jtc30gZnJvbSAnLi4vcmFzdGVyLXByb2Nlc3NpbmctdW5pZm9ybXMnO1xuaW1wb3J0IHtUT1BPTE9HWX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG50eXBlIE1lc2ggPSBTaW1wbGVNZXNoTGF5ZXJQcm9wc1snbWVzaCddO1xuXG5pbnRlcmZhY2UgTWVzaERhdGEge1xuICBhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBvc2l0aW9ucz86IHVua25vd247XG4gIFBPU0lUSU9OPzogdW5rbm93bjtcbiAgTk9STUFMPzogdW5rbm93bjtcbiAgbm9ybWFscz86IHVua25vd247XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlR2VvbWV0cnlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gIGlmICghKGF0dHJpYnV0ZXMucG9zaXRpb25zIHx8IGF0dHJpYnV0ZXMuUE9TSVRJT04pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1Jhc3Rlck1lc2hMYXllciByZXF1aXJlcyBcInBvc2l0aW9uc1wiIG9yIFwiUE9TSVRJT05cIiBhdHRyaWJ1dGUgaW4gbWVzaCBwcm9wZXJ0eS4nXG4gICAgKTtcbiAgfVxufVxuXG4vKlxuICogQ29udmVydCBtZXNoIGRhdGEgaW50byBnZW9tZXRyeVxuICogQHJldHVybnMgZ2VvbWV0cnlcbiAqL1xuZnVuY3Rpb24gZ2V0R2VvbWV0cnkoZGF0YTogTWVzaERhdGEgfCBHZW9tZXRyeSk6IEdlb21ldHJ5IHtcbiAgaWYgKCdhdHRyaWJ1dGVzJyBpbiBkYXRhICYmIGRhdGEuYXR0cmlidXRlcykge1xuICAgIHZhbGlkYXRlR2VvbWV0cnlBdHRyaWJ1dGVzKGRhdGEuYXR0cmlidXRlcyk7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBHZW9tZXRyeSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBuZXcgR2VvbWV0cnkoZGF0YSBhcyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEdlb21ldHJ5PlswXSk7XG4gIH0gZWxzZSBpZiAoJ3Bvc2l0aW9ucycgaW4gZGF0YSB8fCAnUE9TSVRJT04nIGluIGRhdGEpIHtcbiAgICB2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyhkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICByZXR1cm4gbmV3IEdlb21ldHJ5KHtcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB9IGFzIENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgR2VvbWV0cnk+WzBdKTtcbiAgfVxuICB0aHJvdyBFcnJvcignSW52YWxpZCBtZXNoJyk7XG59XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uU2ltcGxlTWVzaExheWVyLmRlZmF1bHRQcm9wcyxcbiAgbW9kdWxlczoge3R5cGU6ICdhcnJheScsIHZhbHVlOiBbXSwgY29tcGFyZTogdHJ1ZX0sXG4gIGltYWdlczoge3R5cGU6ICdvYmplY3QnLCB2YWx1ZToge30sIGNvbXBhcmU6IHRydWV9LFxuICBtb2R1bGVQcm9wczoge3R5cGU6ICdvYmplY3QnLCB2YWx1ZToge30sIGNvbXBhcmU6IHRydWV9LFxuICBvblJlZHJhd05lZWRlZDoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiBudWxsLCBjb21wYXJlOiBmYWxzZX1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhc3Rlck1lc2hMYXllciBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIFJhc3RlckxheWVyQWRkZWRQcm9wcz4ge1xuICBkZWNsYXJlIHN0YXRlOiBTaW1wbGVNZXNoTGF5ZXI8UmFzdGVyTGF5ZXJBZGRlZFByb3BzPlsnc3RhdGUnXSAmIHtcbiAgICBpbWFnZXM6IEltYWdlU3RhdGU7XG4gIH07XG5cbiAgX3JlZHJhd1NjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbigpO1xuICAgIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczoge319KTtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICBjb25zdCB7bW9kdWxlcyA9IFtdfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBsdW1hTW9kdWxlcyA9IHByZXBhcmVMdW1hTW9kdWxlcyhtb2R1bGVzKTtcbiAgICBjb25zdCBwYXJlbnRTaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgLy8gRmlsdGVyIG91dCBzaW1wbGVNZXNoVW5pZm9ybXMgZnJvbSBwYXJlbnQg4oCUIFJhc3Rlck1lc2hMYXllciB1c2VzIGl0cyBvd25cbiAgICAvLyBzaGFkZXJzIHRoYXQgZG9uJ3QgcmVmZXJlbmNlIFNpbXBsZU1lc2ggdW5pZm9ybXMsIGFuZCBldmVyeSBVQk8gY291bnRzXG4gICAgLy8gYWdhaW5zdCB0aGUgV2ViR0wyIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JVRkZFUlMgbGltaXQgKHR5cGljYWxseSAxMikuXG4gICAgY29uc3QgcGFyZW50TW9kdWxlcyA9IChwYXJlbnRTaGFkZXJzLm1vZHVsZXMgfHwgW10pLmZpbHRlcihcbiAgICAgIChtOiB7bmFtZT86IHN0cmluZ30pID0+IG0ubmFtZSAhPT0gJ3NpbXBsZU1lc2gnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJlbnRTaGFkZXJzLFxuICAgICAgdnM6IGJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlcigpLFxuICAgICAgZnM6IGJ1aWxkUmFzdGVyTWVzaEZyYWdtZW50U2hhZGVyKCksXG4gICAgICBtb2R1bGVzOiBbLi4ucGFyZW50TW9kdWxlcywgcmFzdGVyTWVzaFVuaWZvcm1zLCByYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMsIC4uLmx1bWFNb2R1bGVzXVxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICB1cGRhdGVTdGF0ZShwYXJhbXM6IFVwZGF0ZVBhcmFtZXRlcnM8U2ltcGxlTWVzaExheWVyPGFueSwgUmFzdGVyTGF5ZXJBZGRlZFByb3BzPj4pOiB2b2lkIHtcbiAgICBjb25zdCB7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFncywgY29udGV4dH0gPSBwYXJhbXM7XG4gICAgc3VwZXIudXBkYXRlU3RhdGUoe3Byb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MsIGNvbnRleHR9KTtcblxuICAgIGNvbnN0IG1vZHVsZXMgPSBwcm9wcyAmJiBwcm9wcy5tb2R1bGVzO1xuICAgIGNvbnN0IG9sZE1vZHVsZXMgPSBvbGRQcm9wcyAmJiBvbGRQcm9wcy5tb2R1bGVzO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMubWVzaCAhPT0gb2xkUHJvcHMubWVzaCB8fFxuICAgICAgY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQgfHxcbiAgICAgICFtb2R1bGVzRXF1YWwobW9kdWxlcywgb2xkTW9kdWxlcylcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubW9kZWwuZGVzdHJveT8uKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMubWVzaCkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVsID0gdGhpcy5nZXRNb2RlbChwcm9wcy5tZXNoIGFzIE1lc2gpO1xuXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSAoKHByb3BzLm1lc2ggYXMgTWVzaERhdGEpLmF0dHJpYnV0ZXMgfHwgcHJvcHMubWVzaCkgYXMgTWVzaERhdGE7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGhhc05vcm1hbHM6IEJvb2xlYW4oYXR0cmlidXRlcy5OT1JNQUwgfHwgYXR0cmlidXRlcy5ub3JtYWxzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpPy5pbnZhbGlkYXRlQWxsKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmltYWdlcykge1xuICAgICAgdGhpcy51cGRhdGVJbWFnZXMoe3Byb3BzLCBvbGRQcm9wc30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsLnNldFRvcG9sb2d5Py4oXG4gICAgICAgIHRoaXMucHJvcHMud2lyZWZyYW1lID8gVE9QT0xPR1kuTElORV9TVFJJUCA6IFRPUE9MT0dZLlRSSUFOR0xFX0xJU1RcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlSW1hZ2VzKHtcbiAgICBwcm9wcyxcbiAgICBvbGRQcm9wc1xuICB9OiB7XG4gICAgcHJvcHM6IFJhc3RlckxheWVyQWRkZWRQcm9wcztcbiAgICBvbGRQcm9wczogUmFzdGVyTGF5ZXJBZGRlZFByb3BzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge2ltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGRldmljZSA9IHRoaXMuY29udGV4dC5kZXZpY2U7XG4gICAgY29uc3QgZ2wgPSBkZXZpY2U/LmdsIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IG5ld0ltYWdlcyA9IGxvYWRJbWFnZXMoe1xuICAgICAgZ2wsXG4gICAgICBkZXZpY2UsXG4gICAgICBpbWFnZXMsXG4gICAgICBpbWFnZXNEYXRhOiBwcm9wcy5pbWFnZXMsXG4gICAgICBvbGRJbWFnZXNEYXRhOiBvbGRQcm9wcy5pbWFnZXNcbiAgICB9KTtcblxuICAgIGlmIChuZXdJbWFnZXMpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczogbmV3SW1hZ2VzfSk7XG4gICAgfVxuICB9XG5cbiAgZHJhdyhfb3B0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCB7bW9kZWwsIGltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHttb2R1bGVQcm9wc30gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKFxuICAgICAgIW1vZGVsIHx8XG4gICAgICAhaW1hZ2VzIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbWFnZXMpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgIU9iamVjdC52YWx1ZXMoaW1hZ2VzKS5ldmVyeShpdGVtID0+IGl0ZW0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2V0IG1lc2gtc3BlY2lmaWMgVUJPIHVuaWZvcm1zXG4gICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgIHJhc3Rlck1lc2g6IHtcbiAgICAgICAgbWVzaE9wYWNpdHk6IHRoaXMucHJvcHMub3BhY2l0eSA/PyAxLFxuICAgICAgICBtZXNoRmxhdFNoYWRpbmc6ICF0aGlzLnN0YXRlLmhhc05vcm1hbHMgPyAxLjAgOiAwLjBcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGVhY2ggY3VzdG9tIG1vZHVsZSdzIHVuaWZvcm1zL2JpbmRpbmdzIHRvIHNoYWRlcklucHV0cyBkaXJlY3RseS5cbiAgICAvLyBXZSBjYWxsIGdldFVuaWZvcm1zIG9uY2UgcGVyIG1vZHVsZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgaW50b1xuICAgIC8vIHNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy9tb2R1bGVCaW5kaW5ncywgYnlwYXNzaW5nIHNldFByb3BzKCkgd2hpY2hcbiAgICAvLyB3b3VsZCBjYWxsIGdldFVuaWZvcm1zIGEgc2Vjb25kIHRpbWUgb24gYWxyZWFkeS10cmFuc2Zvcm1lZCB2YWx1ZXMuXG4gICAgY29uc3QgYWxsTW9kdWxlUHJvcHMgPSB7Li4ubW9kdWxlUHJvcHMsIC4uLmltYWdlc307XG4gICAgY29uc3QgbW9kdWxlcyA9IHRoaXMucHJvcHMubW9kdWxlcyB8fCBbXTtcbiAgICBhcHBseU1vZHVsZVVuaWZvcm1zKG1vZGVsLnNoYWRlcklucHV0cywgbW9kdWxlcywgYWxsTW9kdWxlUHJvcHMpO1xuXG4gICAgY29uc3QgZHJhd1N1Y2Nlc3MgPSBtb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICBpZiAoIWRyYXdTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9zY2hlZHVsZVJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIF9zY2hlZHVsZVJlZHJhdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVkcmF3U2NoZWR1bGVkKSByZXR1cm47XG4gICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gdHJ1ZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5jb250ZXh0LmRlY2spIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBkZWNrLmdsIHByb3BlcnR5XG4gICAgICAgIHRoaXMuY29udGV4dC5kZWNrLl9uZWVkc1JlZHJhdyA9ICdSYXN0ZXJNZXNoTGF5ZXIgcGlwZWxpbmUgcGVuZGluZyc7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRleHQubGF5ZXJNYW5hZ2VyPy5zZXROZWVkc1JlZHJhdygnUmFzdGVyTWVzaExheWVyIHBpcGVsaW5lIHBlbmRpbmcnKTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vblJlZHJhd05lZWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uUmVkcmF3TmVlZGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmaW5hbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLmZpbmFsaXplU3RhdGUodGhpcy5jb250ZXh0KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmltYWdlcykge1xuICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3RhdGUuaW1hZ2VzKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZSkpIHtcbiAgICAgICAgICBpbWFnZS5tYXAoeCA9PiB4ICYmICh4LmRlc3Ryb3kgPyB4LmRlc3Ryb3koKSA6IHguZGVsZXRlPy4oKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGltYWdlKSB7XG4gICAgICAgICAgaW1hZ2UuZGVzdHJveSA/IGltYWdlLmRlc3Ryb3koKSA6IGltYWdlLmRlbGV0ZT8uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TW9kZWwobWVzaDogTWVzaCk6IE1vZGVsIHtcbiAgICBjb25zdCBkZXZpY2UgPSB0aGlzLmNvbnRleHQuZGV2aWNlIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsKFxuICAgICAgZGV2aWNlLFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5nZXRTaGFkZXJzKCksIHtcbiAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICAgIGdlb21ldHJ5OiBnZXRHZW9tZXRyeShtZXNoIGFzIE1lc2hEYXRhIHwgR2VvbWV0cnkpLFxuICAgICAgICBpc0luc3RhbmNlZDogZmFsc2VcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxufVxuXG5SYXN0ZXJNZXNoTGF5ZXIubGF5ZXJOYW1lID0gJ1Jhc3Rlck1lc2hMYXllcic7XG5SYXN0ZXJNZXNoTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSx1QkFBQSxHQUFBRixPQUFBO0FBS0EsSUFBQUcsbUJBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLEtBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLHdCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyx5QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQThDLFNBQUFTLFdBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFdBQUFELENBQUEsT0FBQUUsZ0JBQUEsYUFBQUYsQ0FBQSxPQUFBRywyQkFBQSxhQUFBSixDQUFBLEVBQUFLLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBTixDQUFBLEVBQUFDLENBQUEsWUFBQUMsZ0JBQUEsYUFBQUgsQ0FBQSxFQUFBUSxXQUFBLElBQUFQLENBQUEsQ0FBQVEsS0FBQSxDQUFBVCxDQUFBLEVBQUFFLENBQUE7QUFBQSxTQUFBRywwQkFBQSxj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
271
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVzaExheWVycyIsInJlcXVpcmUiLCJfZW5naW5lIiwiX3Jhc3Rlck1lc2hMYXllclNoYWRlcnMiLCJfcmFzdGVyTGF5ZXJTaGFkZXJzIiwiX2ltYWdlcyIsIl91dGlsIiwiX3BpcGVsaW5lVmFsaWRhdGlvblBhdGNoIiwiX3Jhc3RlclByb2Nlc3NpbmdVbmlmb3JtcyIsIl9jb25zdGFudHMiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJyIiwicCIsIl9nZXQyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJwb3NpdGlvbnMiLCJQT1NJVElPTiIsIkVycm9yIiwiZ2V0R2VvbWV0cnkiLCJkYXRhIiwiR2VvbWV0cnkiLCJkZWZhdWx0UHJvcHMiLCJTaW1wbGVNZXNoTGF5ZXIiLCJtb2R1bGVzIiwidHlwZSIsInZhbHVlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwib25SZWRyYXdOZWVkZWQiLCJSYXN0ZXJNZXNoTGF5ZXIiLCJleHBvcnRzIiwiX1NpbXBsZU1lc2hMYXllciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJpbml0aWFsaXplU3RhdGUiLCJwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbiIsImVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCIsInNldFN0YXRlIiwiZ2V0U2hhZGVycyIsIl90aGlzJHByb3BzJG1vZHVsZXMiLCJwcm9wcyIsImx1bWFNb2R1bGVzIiwicHJlcGFyZUx1bWFNb2R1bGVzIiwicGFyZW50U2hhZGVycyIsInBhcmVudE1vZHVsZXMiLCJtIiwibmFtZSIsInZzIiwiYnVpbGRSYXN0ZXJNZXNoVmVydGV4U2hhZGVyIiwiZnMiLCJidWlsZFJhc3Rlck1lc2hGcmFnbWVudFNoYWRlciIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyYXN0ZXJNZXNoVW5pZm9ybXMiLCJyYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMiLCJ1cGRhdGVTdGF0ZSIsInBhcmFtcyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJjb250ZXh0Iiwib2xkTW9kdWxlcyIsIm1lc2giLCJleHRlbnNpb25zQ2hhbmdlZCIsIm1vZHVsZXNFcXVhbCIsIl90aGlzJGdldEF0dHJpYnV0ZU1hbiIsInN0YXRlIiwibW9kZWwiLCJfdGhpcyRzdGF0ZSRtb2RlbCRkZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCIsImRlc3Ryb3kiLCJnZXRNb2RlbCIsImhhc05vcm1hbHMiLCJOT1JNQUwiLCJub3JtYWxzIiwiZ2V0QXR0cmlidXRlTWFuYWdlciIsImludmFsaWRhdGVBbGwiLCJ1cGRhdGVJbWFnZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCRzZXQiLCJfdGhpcyRzdGF0ZSRtb2RlbDIiLCJzZXRUb3BvbG9neSIsIndpcmVmcmFtZSIsIlRPUE9MT0dZIiwiTElORV9TVFJJUCIsIlRSSUFOR0xFX0xJU1QiLCJfcmVmIiwiZGV2aWNlIiwiZ2wiLCJuZXdJbWFnZXMiLCJsb2FkSW1hZ2VzIiwiaW1hZ2VzRGF0YSIsIm9sZEltYWdlc0RhdGEiLCJkcmF3IiwiX29wdHMiLCJfdGhpcyRwcm9wcyRvcGFjaXR5IiwiX3RoaXMkc3RhdGUiLCJ2YWx1ZXMiLCJldmVyeSIsIml0ZW0iLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsInJhc3Rlck1lc2giLCJtZXNoT3BhY2l0eSIsIm9wYWNpdHkiLCJtZXNoRmxhdFNoYWRpbmciLCJhbGxNb2R1bGVQcm9wcyIsImFwcGx5TW9kdWxlVW5pZm9ybXMiLCJkcmF3U3VjY2VzcyIsInJlbmRlclBhc3MiLCJfc2NoZWR1bGVSZWRyYXciLCJfdGhpczIiLCJfcmVkcmF3U2NoZWR1bGVkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX3RoaXMyJGNvbnRleHQkbGF5ZXJNIiwiZGVjayIsIl9uZWVkc1JlZHJhdyIsImxheWVyTWFuYWdlciIsInNldE5lZWRzUmVkcmF3IiwiZmluYWxpemVTdGF0ZSIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJpbWFnZSIsImlzQXJyYXkiLCJtYXAiLCJ4IiwiX3gkZGVsZXRlIiwiX2ltYWdlJGRlbGV0ZSIsIk1vZGVsIiwiYXNzaWduIiwiaWQiLCJnZW9tZXRyeSIsImlzSW5zdGFuY2VkIiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1VwZGF0ZVBhcmFtZXRlcnN9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTaW1wbGVNZXNoTGF5ZXIsIFNpbXBsZU1lc2hMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQge0dlb21ldHJ5fSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuaW1wb3J0IHtNb2RlbH0gZnJvbSAnQGx1bWEuZ2wvZW5naW5lJztcblxuaW1wb3J0IHtcbiAgYnVpbGRSYXN0ZXJNZXNoRnJhZ21lbnRTaGFkZXIsXG4gIGJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlcixcbiAgcmFzdGVyTWVzaFVuaWZvcm1zXG59IGZyb20gJy4vcmFzdGVyLW1lc2gtbGF5ZXItc2hhZGVycyc7XG5pbXBvcnQge1xuICBlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQsXG4gIHByZXBhcmVMdW1hTW9kdWxlc1xufSBmcm9tICcuLi9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyLXNoYWRlcnMnO1xuaW1wb3J0IHtsb2FkSW1hZ2VzfSBmcm9tICcuLi9pbWFnZXMnO1xuaW1wb3J0IHR5cGUge1Jhc3RlckxheWVyQWRkZWRQcm9wcywgSW1hZ2VTdGF0ZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHttb2R1bGVzRXF1YWwsIGFwcGx5TW9kdWxlVW5pZm9ybXN9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHtwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbn0gZnJvbSAnLi4vcGlwZWxpbmUtdmFsaWRhdGlvbi1wYXRjaCc7XG5pbXBvcnQge3Jhc3RlclByb2Nlc3NpbmdVbmlmb3Jtc30gZnJvbSAnLi4vcmFzdGVyLXByb2Nlc3NpbmctdW5pZm9ybXMnO1xuaW1wb3J0IHtUT1BPTE9HWX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG50eXBlIE1lc2ggPSBTaW1wbGVNZXNoTGF5ZXJQcm9wc1snbWVzaCddO1xuXG5pbnRlcmZhY2UgTWVzaERhdGEge1xuICBhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBvc2l0aW9ucz86IHVua25vd247XG4gIFBPU0lUSU9OPzogdW5rbm93bjtcbiAgTk9STUFMPzogdW5rbm93bjtcbiAgbm9ybWFscz86IHVua25vd247XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlR2VvbWV0cnlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gIGlmICghKGF0dHJpYnV0ZXMucG9zaXRpb25zIHx8IGF0dHJpYnV0ZXMuUE9TSVRJT04pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1Jhc3Rlck1lc2hMYXllciByZXF1aXJlcyBcInBvc2l0aW9uc1wiIG9yIFwiUE9TSVRJT05cIiBhdHRyaWJ1dGUgaW4gbWVzaCBwcm9wZXJ0eS4nXG4gICAgKTtcbiAgfVxufVxuXG4vKlxuICogQ29udmVydCBtZXNoIGRhdGEgaW50byBnZW9tZXRyeVxuICogQHJldHVybnMgZ2VvbWV0cnlcbiAqL1xuZnVuY3Rpb24gZ2V0R2VvbWV0cnkoZGF0YTogTWVzaERhdGEgfCBHZW9tZXRyeSk6IEdlb21ldHJ5IHtcbiAgaWYgKCdhdHRyaWJ1dGVzJyBpbiBkYXRhICYmIGRhdGEuYXR0cmlidXRlcykge1xuICAgIHZhbGlkYXRlR2VvbWV0cnlBdHRyaWJ1dGVzKGRhdGEuYXR0cmlidXRlcyk7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBHZW9tZXRyeSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBuZXcgR2VvbWV0cnkoZGF0YSBhcyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEdlb21ldHJ5PlswXSk7XG4gIH0gZWxzZSBpZiAoJ3Bvc2l0aW9ucycgaW4gZGF0YSB8fCAnUE9TSVRJT04nIGluIGRhdGEpIHtcbiAgICB2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyhkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICByZXR1cm4gbmV3IEdlb21ldHJ5KHtcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB9IGFzIENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgR2VvbWV0cnk+WzBdKTtcbiAgfVxuICB0aHJvdyBFcnJvcignSW52YWxpZCBtZXNoJyk7XG59XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uU2ltcGxlTWVzaExheWVyLmRlZmF1bHRQcm9wcyxcbiAgbW9kdWxlczoge3R5cGU6ICdhcnJheScsIHZhbHVlOiBbXSwgY29tcGFyZTogdHJ1ZX0sXG4gIGltYWdlczoge3R5cGU6ICdvYmplY3QnLCB2YWx1ZToge30sIGNvbXBhcmU6IHRydWV9LFxuICBtb2R1bGVQcm9wczoge3R5cGU6ICdvYmplY3QnLCB2YWx1ZToge30sIGNvbXBhcmU6IHRydWV9LFxuICBvblJlZHJhd05lZWRlZDoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiBudWxsLCBjb21wYXJlOiBmYWxzZX1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhc3Rlck1lc2hMYXllciBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIFJhc3RlckxheWVyQWRkZWRQcm9wcz4ge1xuICBkZWNsYXJlIHN0YXRlOiBTaW1wbGVNZXNoTGF5ZXI8UmFzdGVyTGF5ZXJBZGRlZFByb3BzPlsnc3RhdGUnXSAmIHtcbiAgICBpbWFnZXM6IEltYWdlU3RhdGU7XG4gIH07XG5cbiAgX3JlZHJhd1NjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbigpO1xuICAgIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczoge319KTtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICBjb25zdCB7bW9kdWxlcyA9IFtdfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBsdW1hTW9kdWxlcyA9IHByZXBhcmVMdW1hTW9kdWxlcyhtb2R1bGVzKTtcbiAgICBjb25zdCBwYXJlbnRTaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgLy8gRmlsdGVyIG91dCBzaW1wbGVNZXNoVW5pZm9ybXMgZnJvbSBwYXJlbnQg4oCUIFJhc3Rlck1lc2hMYXllciB1c2VzIGl0cyBvd25cbiAgICAvLyBzaGFkZXJzIHRoYXQgZG9uJ3QgcmVmZXJlbmNlIFNpbXBsZU1lc2ggdW5pZm9ybXMsIGFuZCBldmVyeSBVQk8gY291bnRzXG4gICAgLy8gYWdhaW5zdCB0aGUgV2ViR0wyIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JVRkZFUlMgbGltaXQgKHR5cGljYWxseSAxMikuXG4gICAgY29uc3QgcGFyZW50TW9kdWxlcyA9IChwYXJlbnRTaGFkZXJzLm1vZHVsZXMgfHwgW10pLmZpbHRlcihcbiAgICAgIChtOiB7bmFtZT86IHN0cmluZ30pID0+IG0ubmFtZSAhPT0gJ3NpbXBsZU1lc2gnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJlbnRTaGFkZXJzLFxuICAgICAgdnM6IGJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlcigpLFxuICAgICAgZnM6IGJ1aWxkUmFzdGVyTWVzaEZyYWdtZW50U2hhZGVyKCksXG4gICAgICBtb2R1bGVzOiBbLi4ucGFyZW50TW9kdWxlcywgcmFzdGVyTWVzaFVuaWZvcm1zLCByYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMsIC4uLmx1bWFNb2R1bGVzXVxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICB1cGRhdGVTdGF0ZShwYXJhbXM6IFVwZGF0ZVBhcmFtZXRlcnM8U2ltcGxlTWVzaExheWVyPGFueSwgUmFzdGVyTGF5ZXJBZGRlZFByb3BzPj4pOiB2b2lkIHtcbiAgICBjb25zdCB7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFncywgY29udGV4dH0gPSBwYXJhbXM7XG4gICAgc3VwZXIudXBkYXRlU3RhdGUoe3Byb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MsIGNvbnRleHR9KTtcblxuICAgIGNvbnN0IG1vZHVsZXMgPSBwcm9wcyAmJiBwcm9wcy5tb2R1bGVzO1xuICAgIGNvbnN0IG9sZE1vZHVsZXMgPSBvbGRQcm9wcyAmJiBvbGRQcm9wcy5tb2R1bGVzO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMubWVzaCAhPT0gb2xkUHJvcHMubWVzaCB8fFxuICAgICAgY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQgfHxcbiAgICAgICFtb2R1bGVzRXF1YWwobW9kdWxlcywgb2xkTW9kdWxlcylcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubW9kZWwuZGVzdHJveT8uKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMubWVzaCkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVsID0gdGhpcy5nZXRNb2RlbChwcm9wcy5tZXNoIGFzIE1lc2gpO1xuXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSAoKHByb3BzLm1lc2ggYXMgTWVzaERhdGEpLmF0dHJpYnV0ZXMgfHwgcHJvcHMubWVzaCkgYXMgTWVzaERhdGE7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGhhc05vcm1hbHM6IEJvb2xlYW4oYXR0cmlidXRlcy5OT1JNQUwgfHwgYXR0cmlidXRlcy5ub3JtYWxzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpPy5pbnZhbGlkYXRlQWxsKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmltYWdlcykge1xuICAgICAgdGhpcy51cGRhdGVJbWFnZXMoe3Byb3BzLCBvbGRQcm9wc30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsLnNldFRvcG9sb2d5Py4oXG4gICAgICAgIHRoaXMucHJvcHMud2lyZWZyYW1lID8gVE9QT0xPR1kuTElORV9TVFJJUCA6IFRPUE9MT0dZLlRSSUFOR0xFX0xJU1RcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlSW1hZ2VzKHtcbiAgICBwcm9wcyxcbiAgICBvbGRQcm9wc1xuICB9OiB7XG4gICAgcHJvcHM6IFJhc3RlckxheWVyQWRkZWRQcm9wcztcbiAgICBvbGRQcm9wczogUmFzdGVyTGF5ZXJBZGRlZFByb3BzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge2ltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGRldmljZSA9IHRoaXMuY29udGV4dC5kZXZpY2U7XG4gICAgY29uc3QgZ2wgPSBkZXZpY2U/LmdsIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IG5ld0ltYWdlcyA9IGxvYWRJbWFnZXMoe1xuICAgICAgZ2wsXG4gICAgICBkZXZpY2UsXG4gICAgICBpbWFnZXMsXG4gICAgICBpbWFnZXNEYXRhOiBwcm9wcy5pbWFnZXMsXG4gICAgICBvbGRJbWFnZXNEYXRhOiBvbGRQcm9wcy5pbWFnZXNcbiAgICB9KTtcblxuICAgIGlmIChuZXdJbWFnZXMpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczogbmV3SW1hZ2VzfSk7XG4gICAgfVxuICB9XG5cbiAgZHJhdyhfb3B0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCB7bW9kZWwsIGltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHttb2R1bGVQcm9wc30gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKFxuICAgICAgIW1vZGVsIHx8XG4gICAgICAhaW1hZ2VzIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbWFnZXMpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgIU9iamVjdC52YWx1ZXMoaW1hZ2VzKS5ldmVyeShpdGVtID0+IGl0ZW0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2V0IG1lc2gtc3BlY2lmaWMgVUJPIHVuaWZvcm1zXG4gICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgIHJhc3Rlck1lc2g6IHtcbiAgICAgICAgbWVzaE9wYWNpdHk6IHRoaXMucHJvcHMub3BhY2l0eSA/PyAxLFxuICAgICAgICBtZXNoRmxhdFNoYWRpbmc6ICF0aGlzLnN0YXRlLmhhc05vcm1hbHMgPyAxLjAgOiAwLjBcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGVhY2ggY3VzdG9tIG1vZHVsZSdzIHVuaWZvcm1zL2JpbmRpbmdzIHRvIHNoYWRlcklucHV0cyBkaXJlY3RseS5cbiAgICAvLyBXZSBjYWxsIGdldFVuaWZvcm1zIG9uY2UgcGVyIG1vZHVsZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgaW50b1xuICAgIC8vIHNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy9tb2R1bGVCaW5kaW5ncywgYnlwYXNzaW5nIHNldFByb3BzKCkgd2hpY2hcbiAgICAvLyB3b3VsZCBjYWxsIGdldFVuaWZvcm1zIGEgc2Vjb25kIHRpbWUgb24gYWxyZWFkeS10cmFuc2Zvcm1lZCB2YWx1ZXMuXG4gICAgY29uc3QgYWxsTW9kdWxlUHJvcHMgPSB7Li4ubW9kdWxlUHJvcHMsIC4uLmltYWdlc307XG4gICAgY29uc3QgbW9kdWxlcyA9IHRoaXMucHJvcHMubW9kdWxlcyB8fCBbXTtcbiAgICBhcHBseU1vZHVsZVVuaWZvcm1zKG1vZGVsLnNoYWRlcklucHV0cywgbW9kdWxlcywgYWxsTW9kdWxlUHJvcHMpO1xuXG4gICAgY29uc3QgZHJhd1N1Y2Nlc3MgPSBtb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICBpZiAoIWRyYXdTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9zY2hlZHVsZVJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIF9zY2hlZHVsZVJlZHJhdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVkcmF3U2NoZWR1bGVkKSByZXR1cm47XG4gICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gdHJ1ZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5jb250ZXh0LmRlY2spIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBkZWNrLmdsIHByb3BlcnR5XG4gICAgICAgIHRoaXMuY29udGV4dC5kZWNrLl9uZWVkc1JlZHJhdyA9ICdSYXN0ZXJNZXNoTGF5ZXIgcGlwZWxpbmUgcGVuZGluZyc7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRleHQubGF5ZXJNYW5hZ2VyPy5zZXROZWVkc1JlZHJhdygnUmFzdGVyTWVzaExheWVyIHBpcGVsaW5lIHBlbmRpbmcnKTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vblJlZHJhd05lZWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uUmVkcmF3TmVlZGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmaW5hbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLmZpbmFsaXplU3RhdGUodGhpcy5jb250ZXh0KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmltYWdlcykge1xuICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3RhdGUuaW1hZ2VzKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZSkpIHtcbiAgICAgICAgICBpbWFnZS5tYXAoeCA9PiB4ICYmICh4LmRlc3Ryb3kgPyB4LmRlc3Ryb3koKSA6IHguZGVsZXRlPy4oKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGltYWdlKSB7XG4gICAgICAgICAgaW1hZ2UuZGVzdHJveSA/IGltYWdlLmRlc3Ryb3koKSA6IGltYWdlLmRlbGV0ZT8uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TW9kZWwobWVzaDogTWVzaCk6IE1vZGVsIHtcbiAgICBjb25zdCBkZXZpY2UgPSB0aGlzLmNvbnRleHQuZGV2aWNlIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsKFxuICAgICAgZGV2aWNlLFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5nZXRTaGFkZXJzKCksIHtcbiAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICAgIGdlb21ldHJ5OiBnZXRHZW9tZXRyeShtZXNoIGFzIE1lc2hEYXRhIHwgR2VvbWV0cnkpLFxuICAgICAgICBpc0luc3RhbmNlZDogZmFsc2VcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxufVxuXG5SYXN0ZXJNZXNoTGF5ZXIubGF5ZXJOYW1lID0gJ1Jhc3Rlck1lc2hMYXllcic7XG5SYXN0ZXJNZXNoTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSx1QkFBQSxHQUFBRixPQUFBO0FBS0EsSUFBQUcsbUJBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLEtBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLHdCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyx5QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQThDLFNBQUFTLFdBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFdBQUFELENBQUEsT0FBQUUsZ0JBQUEsYUFBQUYsQ0FBQSxPQUFBRywyQkFBQSxhQUFBSixDQUFBLEVBQUFLLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBTixDQUFBLEVBQUFDLENBQUEsWUFBQUMsZ0JBQUEsYUFBQUgsQ0FBQSxFQUFBUSxXQUFBLElBQUFQLENBQUEsQ0FBQVEsS0FBQSxDQUFBVCxDQUFBLEVBQUFFLENBQUE7QUFBQSxTQUFBRywwQkFBQSxj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
@@ -1,7 +1,10 @@
1
1
  import { ScatterplotLayer, ScatterplotLayerProps } from '@deck.gl/layers';
2
+ import { Model } from '@luma.gl/engine';
2
3
  export interface ScatterplotIconLayerProps extends ScatterplotLayerProps<any> {
3
4
  iconGeometry: number[];
4
5
  }
5
6
  export default class ScatterplotIconLayer extends ScatterplotLayer<any, ScatterplotIconLayerProps> {
6
- _getModel(): import("@luma.gl/engine").Model;
7
+ getShaders(): any;
8
+ draw(opts: any): void;
9
+ _getModel(): Model;
7
10
  }
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
12
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -14,11 +16,21 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
14
16
  var _layers = require("@deck.gl/layers");
15
17
  var _engine = require("@luma.gl/engine");
16
18
  var _constants = require("@kepler.gl/constants");
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
21
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
18
22
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
19
- function _superPropGet(t, e, r, o) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & o ? t.prototype : t), e, r); return 2 & o ? function (t) { return p.apply(r, t); } : p; } // SPDX-License-Identifier: MIT
23
+ function _superPropGet(t, o, e, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } // SPDX-License-Identifier: MIT
20
24
  // Copyright contributors to the kepler.gl project
21
25
  var DEFAULT_POS = [-1, -1, 0, -1, 1, 0, 1, 1, 0, 1, -1, 0];
26
+ var globeModeUniforms = {
27
+ name: 'globeMode',
28
+ vs: "uniform globeModeUniforms {\n float globeModeMod;\n} globeModeProps;\n",
29
+ uniformTypes: {
30
+ globeModeMod: 'f32'
31
+ }
32
+ };
33
+ var iconFragmentShader = /* glsl */"#version 300 es\n#define SHADER_NAME scatterplot-icon-layer-fragment-shader\nprecision highp float;\nin vec4 vFillColor;\nin vec4 vLineColor;\nin vec2 unitPosition;\nin float innerUnitRadius;\nin float outerRadiusPixels;\nout vec4 fragColor;\nvoid main(void) {\n geometry.uv = unitPosition;\n fragColor = vFillColor;\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
22
34
  var ScatterplotIconLayer = exports["default"] = /*#__PURE__*/function (_ScatterplotLayer) {
23
35
  function ScatterplotIconLayer() {
24
36
  (0, _classCallCheck2["default"])(this, ScatterplotIconLayer);
@@ -26,26 +38,51 @@ var ScatterplotIconLayer = exports["default"] = /*#__PURE__*/function (_Scatterp
26
38
  }
27
39
  (0, _inherits2["default"])(ScatterplotIconLayer, _ScatterplotLayer);
28
40
  return (0, _createClass2["default"])(ScatterplotIconLayer, [{
41
+ key: "getShaders",
42
+ value: function getShaders() {
43
+ var shaders = _superPropGet(ScatterplotIconLayer, "getShaders", this, 3)([]);
44
+ return _objectSpread(_objectSpread({}, shaders), {}, {
45
+ fs: iconFragmentShader,
46
+ modules: [].concat((0, _toConsumableArray2["default"])(shaders.modules || []), [globeModeUniforms]),
47
+ inject: {
48
+ 'vs:DECKGL_FILTER_SIZE': "\n size.xy *= globeModeProps.globeModeMod;"
49
+ }
50
+ });
51
+ }
52
+ }, {
53
+ key: "draw",
54
+ value: function draw(opts) {
55
+ var model = this.state.model;
56
+ if (model) {
57
+ model.shaderInputs.setProps({
58
+ globeMode: {
59
+ globeModeMod: this.context.viewport.resolution ? -0.5 : 1
60
+ }
61
+ });
62
+ }
63
+ _superPropGet(ScatterplotIconLayer, "draw", this, 3)([opts]);
64
+ }
65
+ }, {
29
66
  key: "_getModel",
30
67
  value: function _getModel() {
31
68
  var iconGeometry = this.props.iconGeometry;
32
69
  var positions = iconGeometry ? new Float32Array(iconGeometry) : new Float32Array(DEFAULT_POS);
33
- var geometry = new _engine.Geometry({
34
- topology: iconGeometry ? _constants.TOPOLOGY.TRIANGLE_LIST : _constants.TOPOLOGY.TRIANGLE_STRIP,
35
- attributes: {
36
- positions: {
37
- size: 3,
38
- value: positions
70
+ return new _engine.Model(this.context.device, _objectSpread(_objectSpread({}, this.getShaders()), {}, {
71
+ id: this.props.id,
72
+ bufferLayout: this.getAttributeManager().getBufferLayouts(),
73
+ geometry: new _engine.Geometry({
74
+ topology: iconGeometry ? _constants.TOPOLOGY.TRIANGLE_LIST : _constants.TOPOLOGY.TRIANGLE_STRIP,
75
+ attributes: {
76
+ positions: {
77
+ size: 3,
78
+ value: positions
79
+ }
39
80
  }
40
- }
41
- });
42
- var model = _superPropGet(ScatterplotIconLayer, "_getModel", this, 3)([]);
43
- if (model) {
44
- model.setGeometry(geometry);
45
- }
46
- return model;
81
+ }),
82
+ isInstanced: true
83
+ }));
47
84
  }
48
85
  }]);
49
86
  }(_layers.ScatterplotLayer);
50
87
  ScatterplotIconLayer.layerName = 'ScatterplotIconLayer';
51
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9lbmdpbmUiLCJfY29uc3RhbnRzIiwiX2NhbGxTdXBlciIsInQiLCJvIiwiZSIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJfc3VwZXJQcm9wR2V0IiwiciIsInAiLCJfZ2V0MiIsIkRFRkFVTFRfUE9TIiwiU2NhdHRlcnBsb3RJY29uTGF5ZXIiLCJleHBvcnRzIiwiX1NjYXR0ZXJwbG90TGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiYXJndW1lbnRzIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsIl9nZXRNb2RlbCIsImljb25HZW9tZXRyeSIsInByb3BzIiwicG9zaXRpb25zIiwiRmxvYXQzMkFycmF5IiwiZ2VvbWV0cnkiLCJHZW9tZXRyeSIsInRvcG9sb2d5IiwiVE9QT0xPR1kiLCJUUklBTkdMRV9MSVNUIiwiVFJJQU5HTEVfU1RSSVAiLCJhdHRyaWJ1dGVzIiwic2l6ZSIsIm1vZGVsIiwic2V0R2VvbWV0cnkiLCJTY2F0dGVycGxvdExheWVyIiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N2Zy1pY29uLWxheWVyL3NjYXR0ZXJwbG90LWljb24tbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTY2F0dGVycGxvdExheWVyLCBTY2F0dGVycGxvdExheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge0dlb21ldHJ5fSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuaW1wb3J0IHtUT1BPTE9HWX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBERUZBVUxUX1BPUyA9IFstMSwgLTEsIDAsIC0xLCAxLCAwLCAxLCAxLCAwLCAxLCAtMSwgMF07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NhdHRlcnBsb3RJY29uTGF5ZXJQcm9wcyBleHRlbmRzIFNjYXR0ZXJwbG90TGF5ZXJQcm9wczxhbnk+IHtcbiAgaWNvbkdlb21ldHJ5OiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NhdHRlcnBsb3RJY29uTGF5ZXIgZXh0ZW5kcyBTY2F0dGVycGxvdExheWVyPGFueSwgU2NhdHRlcnBsb3RJY29uTGF5ZXJQcm9wcz4ge1xuICBfZ2V0TW9kZWwoKSB7XG4gICAgY29uc3Qge2ljb25HZW9tZXRyeX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IGljb25HZW9tZXRyeSA/IG5ldyBGbG9hdDMyQXJyYXkoaWNvbkdlb21ldHJ5KSA6IG5ldyBGbG9hdDMyQXJyYXkoREVGQVVMVF9QT1MpO1xuXG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgR2VvbWV0cnkoe1xuICAgICAgdG9wb2xvZ3k6IGljb25HZW9tZXRyeSA/IFRPUE9MT0dZLlRSSUFOR0xFX0xJU1QgOiBUT1BPTE9HWS5UUklBTkdMRV9TVFJJUCxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgcG9zaXRpb25zOiB7c2l6ZTogMywgdmFsdWU6IHBvc2l0aW9uc31cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IG1vZGVsID0gc3VwZXIuX2dldE1vZGVsKCk7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICBtb2RlbC5zZXRHZW9tZXRyeShnZW9tZXRyeSk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxufVxuXG5TY2F0dGVycGxvdEljb25MYXllci5sYXllck5hbWUgPSAnU2NhdHRlcnBsb3RJY29u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
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9lbmdpbmUiLCJfY29uc3RhbnRzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiREVGQVVMVF9QT1MiLCJnbG9iZU1vZGVVbmlmb3JtcyIsIm5hbWUiLCJ2cyIsInVuaWZvcm1UeXBlcyIsImdsb2JlTW9kZU1vZCIsImljb25GcmFnbWVudFNoYWRlciIsIlNjYXR0ZXJwbG90SWNvbkxheWVyIiwiZXhwb3J0cyIsIl9TY2F0dGVycGxvdExheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJnZXRTaGFkZXJzIiwic2hhZGVycyIsImZzIiwibW9kdWxlcyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJpbmplY3QiLCJkcmF3Iiwib3B0cyIsIm1vZGVsIiwic3RhdGUiLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsImdsb2JlTW9kZSIsImNvbnRleHQiLCJ2aWV3cG9ydCIsInJlc29sdXRpb24iLCJfZ2V0TW9kZWwiLCJpY29uR2VvbWV0cnkiLCJwcm9wcyIsInBvc2l0aW9ucyIsIkZsb2F0MzJBcnJheSIsIk1vZGVsIiwiZGV2aWNlIiwiaWQiLCJidWZmZXJMYXlvdXQiLCJnZXRBdHRyaWJ1dGVNYW5hZ2VyIiwiZ2V0QnVmZmVyTGF5b3V0cyIsImdlb21ldHJ5IiwiR2VvbWV0cnkiLCJ0b3BvbG9neSIsIlRPUE9MT0dZIiwiVFJJQU5HTEVfTElTVCIsIlRSSUFOR0xFX1NUUklQIiwiYXR0cmlidXRlcyIsInNpemUiLCJpc0luc3RhbmNlZCIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJsYXllck5hbWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3ZnLWljb24tbGF5ZXIvc2NhdHRlcnBsb3QtaWNvbi1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXIsIFNjYXR0ZXJwbG90TGF5ZXJQcm9wc30gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7R2VvbWV0cnksIE1vZGVsfSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuaW1wb3J0IHtUT1BPTE9HWX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBERUZBVUxUX1BPUyA9IFstMSwgLTEsIDAsIC0xLCAxLCAwLCAxLCAxLCAwLCAxLCAtMSwgMF07XG5cbmNvbnN0IGdsb2JlTW9kZVVuaWZvcm1zID0ge1xuICBuYW1lOiAnZ2xvYmVNb2RlJyxcbiAgdnM6IGB1bmlmb3JtIGdsb2JlTW9kZVVuaWZvcm1zIHtcbiAgZmxvYXQgZ2xvYmVNb2RlTW9kO1xufSBnbG9iZU1vZGVQcm9wcztcbmAsXG4gIHVuaWZvcm1UeXBlczoge1xuICAgIGdsb2JlTW9kZU1vZDogJ2YzMidcbiAgfVxufTtcblxuY29uc3QgaWNvbkZyYWdtZW50U2hhZGVyID0gLyogZ2xzbCAqLyBgXFxcbiN2ZXJzaW9uIDMwMCBlc1xuI2RlZmluZSBTSEFERVJfTkFNRSBzY2F0dGVycGxvdC1pY29uLWxheWVyLWZyYWdtZW50LXNoYWRlclxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuaW4gdmVjNCB2RmlsbENvbG9yO1xuaW4gdmVjNCB2TGluZUNvbG9yO1xuaW4gdmVjMiB1bml0UG9zaXRpb247XG5pbiBmbG9hdCBpbm5lclVuaXRSYWRpdXM7XG5pbiBmbG9hdCBvdXRlclJhZGl1c1BpeGVscztcbm91dCB2ZWM0IGZyYWdDb2xvcjtcbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdlb21ldHJ5LnV2ID0gdW5pdFBvc2l0aW9uO1xuICBmcmFnQ29sb3IgPSB2RmlsbENvbG9yO1xuICBERUNLR0xfRklMVEVSX0NPTE9SKGZyYWdDb2xvciwgZ2VvbWV0cnkpO1xufVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBTY2F0dGVycGxvdEljb25MYXllclByb3BzIGV4dGVuZHMgU2NhdHRlcnBsb3RMYXllclByb3BzPGFueT4ge1xuICBpY29uR2VvbWV0cnk6IG51bWJlcltdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2F0dGVycGxvdEljb25MYXllciBleHRlbmRzIFNjYXR0ZXJwbG90TGF5ZXI8YW55LCBTY2F0dGVycGxvdEljb25MYXllclByb3BzPiB7XG4gIGdldFNoYWRlcnMoKSB7XG4gICAgY29uc3Qgc2hhZGVycyA9IHN1cGVyLmdldFNoYWRlcnMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2hhZGVycyxcbiAgICAgIGZzOiBpY29uRnJhZ21lbnRTaGFkZXIsXG4gICAgICBtb2R1bGVzOiBbLi4uKHNoYWRlcnMubW9kdWxlcyB8fCBbXSksIGdsb2JlTW9kZVVuaWZvcm1zXSxcbiAgICAgIGluamVjdDoge1xuICAgICAgICAndnM6REVDS0dMX0ZJTFRFUl9TSVpFJzogYFxuICAgICAgICAgIHNpemUueHkgKj0gZ2xvYmVNb2RlUHJvcHMuZ2xvYmVNb2RlTW9kO2BcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZHJhdyhvcHRzKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgICAgZ2xvYmVNb2RlOiB7XG4gICAgICAgICAgZ2xvYmVNb2RlTW9kOiAodGhpcy5jb250ZXh0LnZpZXdwb3J0IGFzIGFueSkucmVzb2x1dGlvbiA/IC0wLjUgOiAxXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBzdXBlci5kcmF3KG9wdHMpO1xuICB9XG5cbiAgX2dldE1vZGVsKCkge1xuICAgIGNvbnN0IHtpY29uR2VvbWV0cnl9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBpY29uR2VvbWV0cnkgPyBuZXcgRmxvYXQzMkFycmF5KGljb25HZW9tZXRyeSkgOiBuZXcgRmxvYXQzMkFycmF5KERFRkFVTFRfUE9TKTtcblxuICAgIHJldHVybiBuZXcgTW9kZWwodGhpcy5jb250ZXh0LmRldmljZSwge1xuICAgICAgLi4udGhpcy5nZXRTaGFkZXJzKCksXG4gICAgICBpZDogdGhpcy5wcm9wcy5pZCxcbiAgICAgIGJ1ZmZlckxheW91dDogdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCkhLmdldEJ1ZmZlckxheW91dHMoKSxcbiAgICAgIGdlb21ldHJ5OiBuZXcgR2VvbWV0cnkoe1xuICAgICAgICB0b3BvbG9neTogaWNvbkdlb21ldHJ5ID8gVE9QT0xPR1kuVFJJQU5HTEVfTElTVCA6IFRPUE9MT0dZLlRSSUFOR0xFX1NUUklQLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgcG9zaXRpb25zOiB7c2l6ZTogMywgdmFsdWU6IHBvc2l0aW9uc31cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBpc0luc3RhbmNlZDogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG5cblNjYXR0ZXJw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
@@ -56,9 +56,28 @@ export default class WMSLayer extends CompositeLayer<Required<_WMSLayerProps>> {
56
56
  private getRequestId;
57
57
  /** Runs an action in the future, cancels it if the new action is issued before it executes */
58
58
  private debounce;
59
+ /**
60
+ * Returns true when the `next` view is fully inside the `prev` (last requested)
61
+ * extent AND not meaningfully higher resolution, so the cached image already
62
+ * covers the screen and no new request is needed.
63
+ */
64
+ private _isViewCoveredByLastRequest;
59
65
  /** Compare request parameters to determine if a new request is needed */
60
66
  private _areRequestParamsEqual;
61
67
  }
68
+ /**
69
+ * Compute the [minLng, minLat, maxLng, maxLat] bounding box of the part of the
70
+ * globe that is actually visible on screen.
71
+ *
72
+ * Unlike `GlobeViewport.getBounds()` (4 edge midpoints), this samples a grid of
73
+ * screen pixels, unprojects each onto the sphere (deck.gl clamps rays that miss
74
+ * the globe to the silhouette/limb, which is exactly the boundary we want), and
75
+ * takes the extent. It additionally detects when a pole is in view: at a pole all
76
+ * meridians converge, so we widen the box to the full longitude range and extend
77
+ * the latitude up to the pole, which is what makes viewing from near a pole
78
+ * (seeing across to the far hemisphere) work.
79
+ */
80
+ export declare function getGlobeVisibleBounds(viewport: Viewport): [number, number, number, number];
62
81
  /** Projects EPSG:4326 to EPSG:3857
63
82
  * This is a lightweight replacement of proj4. Use tests to ensure conformance.
64
83
  */