@carto/kepler.gl 0.0.31 → 0.0.32

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.
@@ -337,7 +337,8 @@ var TripLayer = /*#__PURE__*/function (_Layer) {
337
337
  return ts - domain0;
338
338
  });
339
339
  },
340
- widthScale: this.config.visConfig.thickness * zoomFactor * zoomFactorValue,
340
+ widthScale: this.config.visConfig.thickness,
341
+ widthUnits: 'pixels',
341
342
  rounded: true,
342
343
  wrapLongitude: false,
343
344
  parameters: {
@@ -399,4 +400,4 @@ var TripLayer = /*#__PURE__*/function (_Layer) {
399
400
  }(_baseLayer["default"]);
400
401
 
401
402
  exports["default"] = TripLayer;
402
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvdHJpcC1sYXllci90cmlwLWxheWVyLmpzIl0sIm5hbWVzIjpbInpvb21GYWN0b3JWYWx1ZSIsImRlZmF1bHRUaGlja25lc3MiLCJkZWZhdWx0TGluZVdpZHRoIiwidHJpcFZpc0NvbmZpZ3MiLCJvcGFjaXR5IiwidGhpY2tuZXNzIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImxhYmVsIiwiaXNSYW5nZWQiLCJyYW5nZSIsInN0ZXAiLCJncm91cCIsInByb3BlcnR5IiwiY29sb3JSYW5nZSIsInRyYWlsTGVuZ3RoIiwic2l6ZVJhbmdlIiwiZ2VvSnNvblJlcXVpcmVkQ29sdW1ucyIsImZlYXR1cmVBY2Nlc3NvciIsImdlb2pzb24iLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImZlYXR1cmVSZXNvbHZlciIsIlRyaXBMYXllciIsInByb3BzIiwiZGF0YVRvRmVhdHVyZSIsImRhdGFUb1RpbWVTdGFtcCIsInJlZ2lzdGVyVmlzQ29uZmlnIiwiZ2V0RmVhdHVyZSIsIl9sYXllckluZm9Nb2RhbCIsIlRyaXBMYXllckljb24iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImNvbmZpZyIsInByb3BlcnRpZXMiLCJsaW5lQ29sb3IiLCJzaXplIiwiY29uZGl0aW9uIiwidmlzQ29uZmlnIiwic3Ryb2tlZCIsImxpbmVXaWR0aCIsImFuaW1hdGlvbiIsImRvbWFpbiIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJkYXRhQ29udGFpbmVyIiwiY29sdW1ucyIsImVuYWJsZWQiLCJvYmplY3QiLCJyb3ciLCJnZXRQb3NpdGlvbiIsImZpbHRlcmVkSW5kZXgiLCJtYXAiLCJpIiwiZmlsdGVyIiwiZ2VvbWV0cnkiLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsImRhdGFJZCIsImdwdUZpbHRlciIsInVwZGF0ZURhdGEiLCJkYXRhIiwiY3VzdG9tRmlsdGVyVmFsdWVBY2Nlc3NvciIsImYiLCJmaWVsZEluZGV4IiwiaW5kZXhBY2Nlc3NvciIsImRhdGFBY2Nlc3NvciIsImFjY2Vzc29ycyIsImdldEF0dHJpYnV0ZUFjY2Vzc29ycyIsImdldEZpbHRlclZhbHVlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImdldFBhdGgiLCJjb29yZGluYXRlcyIsImdldFRpbWVzdGFtcHMiLCJ1cGRhdGVMYXllckNvbmZpZyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJtZXRhIiwiYW5pbWF0aW9uRG9tYWluIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwiYm91bmRzIiwiZmVhdHVyZVR5cGVzIiwidXBkYXRlTWV0YSIsInVwZGF0ZUxheWVyTWV0YSIsIm9wdHMiLCJtYXBTdGF0ZSIsImFuaW1hdGlvbkNvbmZpZyIsInpvb21GYWN0b3IiLCJnZXRab29tRmFjdG9yIiwiaXNWYWxpZFRpbWUiLCJBcnJheSIsImlzQXJyYXkiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwiY3VycmVudFRpbWUiLCJkb21haW4wIiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJEZWNrR0xUcmlwc0xheWVyIiwidHMiLCJ3aWR0aFNjYWxlIiwicm91bmRlZCIsIndyYXBMb25naXR1ZGUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiZHJhZ1JvdGF0ZSIsImRlcHRoTWFzayIsImZvdW5kTGF5ZXJzIiwiZmllbGRzIiwiZ2VvanNvbkNvbHVtbnMiLCJuYW1lIiwiZGVmYXVsdENvbHVtbnMiLCJHRU9KU09OX0ZJRUxEUyIsImdlb0pzb25Db2x1bW5zIiwiZmluZERlZmF1bHRDb2x1bW5GaWVsZCIsInRyaXBDb2x1bW5zIiwiY29sIiwibGVuZ3RoIiwicmVwbGFjZSIsImlz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QUFDdkIsZUFBTztBQUFDckcsVUFBQUEsS0FBSyxFQUFFO0FBQVIsU0FBUDtBQUNEOztBQUVELGFBQU87QUFDTEEsUUFBQUEsS0FBSyxFQUFFbUcsV0FBVyxDQUFDbEUsR0FBWixDQUFnQixVQUFBTixPQUFPO0FBQUEsaUJBQUs7QUFDakM5QyxZQUFBQSxLQUFLLEVBQUcsT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsS0FBSyxDQUFDeUgsT0FBTixDQUFjLFdBQWQsRUFBMkIsRUFBM0IsQ0FBOUIsSUFBaUUsTUFBSSxDQUFDM0gsSUFENUM7QUFFakNnRCxZQUFBQSxPQUFPLEVBQVBBLE9BRmlDO0FBR2pDNEUsWUFBQUEsU0FBUyxFQUFFO0FBSHNCLFdBQUw7QUFBQSxTQUF2QixDQURGO0FBT0w7QUFDQVosUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUN4RCxNQUFaLENBQ1gsVUFBQXFFLElBQUk7QUFBQSxpQkFDRkEsSUFBSSxDQUFDN0gsSUFBTCxLQUFjLFNBQWQsSUFDQTZILElBQUksQ0FBQ2pFLE1BQUwsS0FBZ0JqQixFQURoQixJQUVBLENBQUM2RSxXQUFXLENBQUNNLElBQVosQ0FBaUIsVUFBQUMsQ0FBQztBQUFBLG1CQUFJRixJQUFJLENBQUM3RSxPQUFMLENBQWFuQyxPQUFiLENBQXFCc0csSUFBckIsS0FBOEJZLENBQUMsQ0FBQ2xILE9BQUYsQ0FBVXNHLElBQTVDO0FBQUEsV0FBbEIsQ0FIQztBQUFBLFNBRE87QUFSUixPQUFQO0FBZUQ7OztFQXJHb0NhLHFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IExheWVyIGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtUcmlwc0xheWVyIGFzIERlY2tHTFRyaXBzTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5pbXBvcnQge0dFT0pTT05fRklFTERTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQgVHJpcExheWVySWNvbiBmcm9tICcuL3RyaXAtbGF5ZXItaWNvbic7XG5cbmltcG9ydCB7XG4gIGdldEdlb2pzb25EYXRhTWFwcyxcbiAgZ2V0R2VvanNvbkJvdW5kcyxcbiAgZ2V0R2VvanNvbkZlYXR1cmVUeXBlc1xufSBmcm9tICdsYXllcnMvZ2VvanNvbi1sYXllci9nZW9qc29uLXV0aWxzJztcblxuaW1wb3J0IHtpc1RyaXBHZW9Kc29uRmllbGQsIHBhcnNlVHJpcEdlb0pzb25UaW1lc3RhbXB9IGZyb20gJy4vdHJpcC11dGlscyc7XG5pbXBvcnQgVHJpcEluZm9Nb2RhbEZhY3RvcnkgZnJvbSAnLi90cmlwLWluZm8tbW9kYWwnO1xuXG5jb25zdCB6b29tRmFjdG9yVmFsdWUgPSA4O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoaWNrbmVzcyA9IDAuNTtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGluZVdpZHRoID0gMTtcblxuZXhwb3J0IGNvbnN0IHRyaXBWaXNDb25maWdzID0ge1xuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIHRoaWNrbmVzczoge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFRoaWNrbmVzcyxcbiAgICBsYWJlbDogJ1N0cm9rZSBXaWR0aCcsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMCwgMTAwXSxcbiAgICBzdGVwOiAwLjEsXG4gICAgZ3JvdXA6ICdzdHJva2UnLFxuICAgIHByb3BlcnR5OiAndGhpY2tuZXNzJ1xuICB9LFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHRyYWlsTGVuZ3RoOiAndHJhaWxMZW5ndGgnLFxuICBzaXplUmFuZ2U6ICdzdHJva2VXaWR0aFJhbmdlJ1xufTtcblxuZXhwb3J0IGNvbnN0IGdlb0pzb25SZXF1aXJlZENvbHVtbnMgPSBbJ2dlb2pzb24nXTtcbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPSAoe2dlb2pzb259KSA9PiBkYyA9PiBkID0+IGRjLnZhbHVlQXQoZC5pbmRleCwgZ2VvanNvbi5maWVsZElkeCk7XG5leHBvcnQgY29uc3QgZmVhdHVyZVJlc29sdmVyID0gKHtnZW9qc29ufSkgPT4gZ2VvanNvbi5maWVsZElkeDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJpcExheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IFtdO1xuICAgIHRoaXMuZGF0YVRvVGltZVN0YW1wID0gW107XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyh0cmlwVmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRGZWF0dXJlID0gbWVtb2l6ZShmZWF0dXJlQWNjZXNzb3IsIGZlYXR1cmVSZXNvbHZlcik7XG4gICAgdGhpcy5fbGF5ZXJJbmZvTW9kYWwgPSBUcmlwSW5mb01vZGFsRmFjdG9yeSgpO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICd0cmlwJztcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiAnVHJpcCc7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBUcmlwTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCkge1xuICAgIHJldHVybiBnZW9Kc29uUmVxdWlyZWRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gc3VwZXIudmlzdWFsQ2hhbm5lbHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzdWFsQ2hhbm5lbHMsXG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRDb2xvcicsXG4gICAgICAgIG51bGxWYWx1ZTogdmlzdWFsQ2hhbm5lbHMuY29sb3IubnVsbFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVDb2xvciB8fCBjb25maWcuY29sb3IsXG4gICAgICAgIC8vIHVzZWQgdGhpcyB0byBnZXQgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5zaXplLFxuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZScsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0V2lkdGgnLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVXaWR0aCB8fCBkZWZhdWx0TGluZVdpZHRoXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldCBhbmltYXRpb25Eb21haW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmFuaW1hdGlvbi5kb21haW47XG4gIH1cblxuICBnZXQgbGF5ZXJJbmZvTW9kYWwoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgdGVtcGxhdGU6IHRoaXMuX2xheWVySW5mb01vZGFsLFxuICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICB0aXRsZTogJ21vZGFsLnRyaXBJbmZvLnRpdGxlJ1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGZWF0dXJlKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICB9XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyh7bGFiZWwsIGZpZWxkcyA9IFtdLCBkYXRhQ29udGFpbmVyLCBpZH0sIGZvdW5kTGF5ZXJzKSB7XG4gICAgY29uc3QgZ2VvanNvbkNvbHVtbnMgPSBmaWVsZHMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnZ2VvanNvbicpLm1hcChmID0+IGYubmFtZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29sdW1ucyA9IHtcbiAgICAgIGdlb2pzb246IHVuaXEoWy4uLkdFT0pTT05fRklFTERTLmdlb2pzb24sIC4uLmdlb2pzb25Db2x1bW5zXSlcbiAgICB9O1xuXG4gICAgY29uc3QgZ2VvSnNvbkNvbHVtbnMgPSB0aGlzLmZpbmREZWZhdWx0Q29sdW1uRmllbGQoZGVmYXVsdENvbHVtbnMsIGZpZWxkcyk7XG5cbiAgICBjb25zdCB0cmlwQ29sdW1ucyA9IChnZW9Kc29uQ29sdW1ucyB8fCBbXSkuZmlsdGVyKGNvbCA9PlxuICAgICAgaXNUcmlwR2VvSnNvbkZpZWxkKGRhdGFDb250YWluZXIsIGZpZWxkc1tjb2wuZ2VvanNvbi5maWVsZElkeF0pXG4gICAgKTtcblxuICAgIGlmICghdHJpcENvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiB0cmlwQ29sdW1ucy5tYXAoY29sdW1ucyA9PiAoe1xuICAgICAgICBsYWJlbDogKHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgJiYgbGFiZWwucmVwbGFjZSgvXFwuW14vLl0rJC8sICcnKSkgfHwgdGhpcy50eXBlLFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBpc1Zpc2libGU6IHRydWVcbiAgICAgIH0pKSxcblxuICAgICAgLy8gaWYgYSBnZW9qc29uIGxheWVyIGlzIGNyZWF0ZWQgZnJvbSB0aGlzIGNvbHVtbiwgZGVsZXRlIGl0XG4gICAgICBmb3VuZExheWVyczogZm91bmRMYXllcnMuZmlsdGVyKFxuICAgICAgICBwcm9wID0+XG4gICAgICAgICAgcHJvcC50eXBlICE9PSAnZ2VvanNvbicgfHxcbiAgICAgICAgICBwcm9wLmRhdGFJZCAhPT0gaWQgfHxcbiAgICAgICAgICAhdHJpcENvbHVtbnMuZmluZChjID0+IHByb3AuY29sdW1ucy5nZW9qc29uLm5hbWUgPT09IGMuZ2VvanNvbi5uYW1lKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBkb21haW46IG51bGxcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKG9iamVjdCwgZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGluZGV4IGZvciBkYXRhQ29udGFpbmVyIGlzIHNhdmVkIHRvIGZlYXR1cmUucHJvcGVydGllc1xuICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QucHJvcGVydGllcy5pbmRleCk7XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fSwgZ2V0UG9zaXRpb24pIHtcbiAgICByZXR1cm4gZmlsdGVyZWRJbmRleFxuICAgICAgLm1hcChpID0+IHRoaXMuZGF0YVRvRmVhdHVyZVtpXSlcbiAgICAgIC5maWx0ZXIoZCA9PiBkICYmIGQuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgLy8gdG8tZG86IHBhcnNlIHNlZ21lbnQgZnJvbSBkYXRhQ29udGFpbmVyXG4gICAgY29uc3Qge2RhdGFDb250YWluZXIsIGdwdUZpbHRlcn0gPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcblxuICAgIGNvbnN0IGN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3IgPSAoZGMsIGYsIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBkYy52YWx1ZUF0KGYucHJvcGVydGllcy5pbmRleCwgZmllbGRJbmRleCk7XG4gICAgfTtcbiAgICBjb25zdCBpbmRleEFjY2Vzc29yID0gZiA9PiBmLnByb3BlcnRpZXMuaW5kZXg7XG5cbiAgICBjb25zdCBkYXRhQWNjZXNzb3IgPSBkYyA9PiBkID0+ICh7aW5kZXg6IGQucHJvcGVydGllcy5pbmRleH0pO1xuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQWNjZXNzb3IsIGRhdGFDb250YWluZXJ9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKFxuICAgICAgICBpbmRleEFjY2Vzc29yLFxuICAgICAgICBjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yXG4gICAgICApLFxuICAgICAgZ2V0UGF0aDogZCA9PiBkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgZ2V0VGltZXN0YW1wczogZCA9PiB0aGlzLmRhdGFUb1RpbWVTdGFtcFtkLnByb3BlcnRpZXMuaW5kZXhdLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihkb21haW4pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpIHtcbiAgICBjb25zdCBnZXRGZWF0dXJlID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGlmIChnZXRGZWF0dXJlID09PSB0aGlzLm1ldGEuZ2V0RmVhdHVyZSkge1xuICAgICAgLy8gVE9ETzogcmV2aXNpdCB0aGlzIGFmdGVyIGdwdSBmaWx0ZXJpbmdcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBnZXRHZW9qc29uRGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSk7XG5cbiAgICBjb25zdCB7ZGF0YVRvVGltZVN0YW1wLCBhbmltYXRpb25Eb21haW59ID0gcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy5kYXRhVG9UaW1lU3RhbXAgPSBkYXRhVG9UaW1lU3RhbXA7XG4gICAgdGhpcy51cGRhdGVBbmltYXRpb25Eb21haW4oYW5pbWF0aW9uRG9tYWluKTtcblxuICAgIC8vIGdldCBib3VuZHMgZnJvbSBmZWF0dXJlc1xuICAgIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIC8vIGtlZXAgYSByZWNvcmQgb2Ygd2hhdCB0eXBlIG9mIGdlb21ldHJ5IHRoZSBjb2xsZWN0aW9uIGhhc1xuICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGdldEdlb2pzb25GZWF0dXJlVHlwZXModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzLCBmZWF0dXJlVHlwZXMsIGdldEZlYXR1cmV9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyh7ZGF0YUNvbnRhaW5lcn0pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBtYXBTdGF0ZSwgYW5pbWF0aW9uQ29uZmlnfSA9IG9wdHM7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCBpc1ZhbGlkVGltZSA9XG4gICAgICBhbmltYXRpb25Db25maWcgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoYW5pbWF0aW9uQ29uZmlnLmRvbWFpbikgJiZcbiAgICAgIGFuaW1hdGlvbkNvbmZpZy5kb21haW4uZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSk7XG5cbiAgICBpZiAoIWlzVmFsaWRUaW1lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZG9tYWluMCA9IGFuaW1hdGlvbkNvbmZpZy5kb21haW4/LlswXTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldFRpbWVzdGFtcHM6IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgICAgZG9tYWluMFxuICAgICAgfSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc1xuICAgIH07XG4gICAgY29uc3QgZGVmYXVsdExheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRGVja0dMVHJpcHNMYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBnZXRUaW1lc3RhbXBzOiBkID0+IGRhdGEuZ2V0VGltZXN0YW1wcyhkKS5tYXAodHMgPT4gdHMgLSBkb21haW4wKSxcbiAgICAgICAgd2lkdGhTY2FsZTogdGhpcy5jb25maWcudmlzQ29uZmlnLnRoaWNrbmVzcyAqIHpvb21GYWN0b3IgKiB6b29tRmFjdG9yVmFsdWUsXG4gICAgICAgIHJvdW5kZWQ6IHRydWUsXG4gICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgZGVwdGhUZXN0OiBtYXBTdGF0ZS5kcmFnUm90YXRlLFxuICAgICAgICAgIGRlcHRoTWFzazogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdHJhaWxMZW5ndGg6IHZpc0NvbmZpZy50cmFpbExlbmd0aCAqIDEwMDAsXG4gICAgICAgIGN1cnJlbnRUaW1lOiBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgLSBkb21haW4wLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgfSlcbiAgICBdO1xuICB9XG59XG4iXX0=
403
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvdHJpcC1sYXllci90cmlwLWxheWVyLmpzIl0sIm5hbWVzIjpbInpvb21GYWN0b3JWYWx1ZSIsImRlZmF1bHRUaGlja25lc3MiLCJkZWZhdWx0TGluZVdpZHRoIiwidHJpcFZpc0NvbmZpZ3MiLCJvcGFjaXR5IiwidGhpY2tuZXNzIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImxhYmVsIiwiaXNSYW5nZWQiLCJyYW5nZSIsInN0ZXAiLCJncm91cCIsInByb3BlcnR5IiwiY29sb3JSYW5nZSIsInRyYWlsTGVuZ3RoIiwic2l6ZVJhbmdlIiwiZ2VvSnNvblJlcXVpcmVkQ29sdW1ucyIsImZlYXR1cmVBY2Nlc3NvciIsImdlb2pzb24iLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImZlYXR1cmVSZXNvbHZlciIsIlRyaXBMYXllciIsInByb3BzIiwiZGF0YVRvRmVhdHVyZSIsImRhdGFUb1RpbWVTdGFtcCIsInJlZ2lzdGVyVmlzQ29uZmlnIiwiZ2V0RmVhdHVyZSIsIl9sYXllckluZm9Nb2RhbCIsIlRyaXBMYXllckljb24iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImNvbmZpZyIsInByb3BlcnRpZXMiLCJsaW5lQ29sb3IiLCJzaXplIiwiY29uZGl0aW9uIiwidmlzQ29uZmlnIiwic3Ryb2tlZCIsImxpbmVXaWR0aCIsImFuaW1hdGlvbiIsImRvbWFpbiIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJkYXRhQ29udGFpbmVyIiwiY29sdW1ucyIsImVuYWJsZWQiLCJvYmplY3QiLCJyb3ciLCJnZXRQb3NpdGlvbiIsImZpbHRlcmVkSW5kZXgiLCJtYXAiLCJpIiwiZmlsdGVyIiwiZ2VvbWV0cnkiLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsImRhdGFJZCIsImdwdUZpbHRlciIsInVwZGF0ZURhdGEiLCJkYXRhIiwiY3VzdG9tRmlsdGVyVmFsdWVBY2Nlc3NvciIsImYiLCJmaWVsZEluZGV4IiwiaW5kZXhBY2Nlc3NvciIsImRhdGFBY2Nlc3NvciIsImFjY2Vzc29ycyIsImdldEF0dHJpYnV0ZUFjY2Vzc29ycyIsImdldEZpbHRlclZhbHVlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImdldFBhdGgiLCJjb29yZGluYXRlcyIsImdldFRpbWVzdGFtcHMiLCJ1cGRhdGVMYXllckNvbmZpZyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJtZXRhIiwiYW5pbWF0aW9uRG9tYWluIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwiYm91bmRzIiwiZmVhdHVyZVR5cGVzIiwidXBkYXRlTWV0YSIsInVwZGF0ZUxheWVyTWV0YSIsIm9wdHMiLCJtYXBTdGF0ZSIsImFuaW1hdGlvbkNvbmZpZyIsInpvb21GYWN0b3IiLCJnZXRab29tRmFjdG9yIiwiaXNWYWxpZFRpbWUiLCJBcnJheSIsImlzQXJyYXkiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwiY3VycmVudFRpbWUiLCJkb21haW4wIiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJEZWNrR0xUcmlwc0xheWVyIiwidHMiLCJ3aWR0aFNjYWxlIiwid2lkdGhVbml0cyIsInJvdW5kZWQiLCJ3cmFwTG9uZ2l0dWRlIiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsImRyYWdSb3RhdGUiLCJkZXB0aE1hc2siLCJmb3VuZExheWVycyIsImZpZWxkcyIsImdlb2pzb25Db2x1bW5zIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwiR0VPSlNPTl9GSUVMRFMiLCJnZW9Kc29uQ29sdW1ucyIsImZpbmREZWZhdWx0Q29sdW1uRmllbGQiLCJ0cmlwQ29sdW1ucyIsImNvbCIsImxlbmd0aCIs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TUFBakIsRUFBeUI7QUFDdkIsZUFBTztBQUFDdEcsVUFBQUEsS0FBSyxFQUFFO0FBQVIsU0FBUDtBQUNEOztBQUVELGFBQU87QUFDTEEsUUFBQUEsS0FBSyxFQUFFb0csV0FBVyxDQUFDbkUsR0FBWixDQUFnQixVQUFBTixPQUFPO0FBQUEsaUJBQUs7QUFDakM5QyxZQUFBQSxLQUFLLEVBQUcsT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsS0FBSyxDQUFDMEgsT0FBTixDQUFjLFdBQWQsRUFBMkIsRUFBM0IsQ0FBOUIsSUFBaUUsTUFBSSxDQUFDNUgsSUFENUM7QUFFakNnRCxZQUFBQSxPQUFPLEVBQVBBLE9BRmlDO0FBR2pDNkUsWUFBQUEsU0FBUyxFQUFFO0FBSHNCLFdBQUw7QUFBQSxTQUF2QixDQURGO0FBT0w7QUFDQVosUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUN6RCxNQUFaLENBQ1gsVUFBQXNFLElBQUk7QUFBQSxpQkFDRkEsSUFBSSxDQUFDOUgsSUFBTCxLQUFjLFNBQWQsSUFDQThILElBQUksQ0FBQ2xFLE1BQUwsS0FBZ0JqQixFQURoQixJQUVBLENBQUM4RSxXQUFXLENBQUNNLElBQVosQ0FBaUIsVUFBQUMsQ0FBQztBQUFBLG1CQUFJRixJQUFJLENBQUM5RSxPQUFMLENBQWFuQyxPQUFiLENBQXFCdUcsSUFBckIsS0FBOEJZLENBQUMsQ0FBQ25ILE9BQUYsQ0FBVXVHLElBQTVDO0FBQUEsV0FBbEIsQ0FIQztBQUFBLFNBRE87QUFSUixPQUFQO0FBZUQ7OztFQXJHb0NhLHFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IExheWVyIGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtUcmlwc0xheWVyIGFzIERlY2tHTFRyaXBzTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5pbXBvcnQge0dFT0pTT05fRklFTERTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQgVHJpcExheWVySWNvbiBmcm9tICcuL3RyaXAtbGF5ZXItaWNvbic7XG5cbmltcG9ydCB7XG4gIGdldEdlb2pzb25EYXRhTWFwcyxcbiAgZ2V0R2VvanNvbkJvdW5kcyxcbiAgZ2V0R2VvanNvbkZlYXR1cmVUeXBlc1xufSBmcm9tICdsYXllcnMvZ2VvanNvbi1sYXllci9nZW9qc29uLXV0aWxzJztcblxuaW1wb3J0IHtpc1RyaXBHZW9Kc29uRmllbGQsIHBhcnNlVHJpcEdlb0pzb25UaW1lc3RhbXB9IGZyb20gJy4vdHJpcC11dGlscyc7XG5pbXBvcnQgVHJpcEluZm9Nb2RhbEZhY3RvcnkgZnJvbSAnLi90cmlwLWluZm8tbW9kYWwnO1xuXG5jb25zdCB6b29tRmFjdG9yVmFsdWUgPSA4O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoaWNrbmVzcyA9IDAuNTtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGluZVdpZHRoID0gMTtcblxuZXhwb3J0IGNvbnN0IHRyaXBWaXNDb25maWdzID0ge1xuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIHRoaWNrbmVzczoge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFRoaWNrbmVzcyxcbiAgICBsYWJlbDogJ1N0cm9rZSBXaWR0aCcsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMCwgMTAwXSxcbiAgICBzdGVwOiAwLjEsXG4gICAgZ3JvdXA6ICdzdHJva2UnLFxuICAgIHByb3BlcnR5OiAndGhpY2tuZXNzJ1xuICB9LFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHRyYWlsTGVuZ3RoOiAndHJhaWxMZW5ndGgnLFxuICBzaXplUmFuZ2U6ICdzdHJva2VXaWR0aFJhbmdlJ1xufTtcblxuZXhwb3J0IGNvbnN0IGdlb0pzb25SZXF1aXJlZENvbHVtbnMgPSBbJ2dlb2pzb24nXTtcbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPSAoe2dlb2pzb259KSA9PiBkYyA9PiBkID0+IGRjLnZhbHVlQXQoZC5pbmRleCwgZ2VvanNvbi5maWVsZElkeCk7XG5leHBvcnQgY29uc3QgZmVhdHVyZVJlc29sdmVyID0gKHtnZW9qc29ufSkgPT4gZ2VvanNvbi5maWVsZElkeDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJpcExheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IFtdO1xuICAgIHRoaXMuZGF0YVRvVGltZVN0YW1wID0gW107XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyh0cmlwVmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRGZWF0dXJlID0gbWVtb2l6ZShmZWF0dXJlQWNjZXNzb3IsIGZlYXR1cmVSZXNvbHZlcik7XG4gICAgdGhpcy5fbGF5ZXJJbmZvTW9kYWwgPSBUcmlwSW5mb01vZGFsRmFjdG9yeSgpO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICd0cmlwJztcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiAnVHJpcCc7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBUcmlwTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCkge1xuICAgIHJldHVybiBnZW9Kc29uUmVxdWlyZWRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gc3VwZXIudmlzdWFsQ2hhbm5lbHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzdWFsQ2hhbm5lbHMsXG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRDb2xvcicsXG4gICAgICAgIG51bGxWYWx1ZTogdmlzdWFsQ2hhbm5lbHMuY29sb3IubnVsbFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVDb2xvciB8fCBjb25maWcuY29sb3IsXG4gICAgICAgIC8vIHVzZWQgdGhpcyB0byBnZXQgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5zaXplLFxuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZScsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0V2lkdGgnLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVXaWR0aCB8fCBkZWZhdWx0TGluZVdpZHRoXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldCBhbmltYXRpb25Eb21haW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmFuaW1hdGlvbi5kb21haW47XG4gIH1cblxuICBnZXQgbGF5ZXJJbmZvTW9kYWwoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgdGVtcGxhdGU6IHRoaXMuX2xheWVySW5mb01vZGFsLFxuICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICB0aXRsZTogJ21vZGFsLnRyaXBJbmZvLnRpdGxlJ1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGZWF0dXJlKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICB9XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyh7bGFiZWwsIGZpZWxkcyA9IFtdLCBkYXRhQ29udGFpbmVyLCBpZH0sIGZvdW5kTGF5ZXJzKSB7XG4gICAgY29uc3QgZ2VvanNvbkNvbHVtbnMgPSBmaWVsZHMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnZ2VvanNvbicpLm1hcChmID0+IGYubmFtZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29sdW1ucyA9IHtcbiAgICAgIGdlb2pzb246IHVuaXEoWy4uLkdFT0pTT05fRklFTERTLmdlb2pzb24sIC4uLmdlb2pzb25Db2x1bW5zXSlcbiAgICB9O1xuXG4gICAgY29uc3QgZ2VvSnNvbkNvbHVtbnMgPSB0aGlzLmZpbmREZWZhdWx0Q29sdW1uRmllbGQoZGVmYXVsdENvbHVtbnMsIGZpZWxkcyk7XG5cbiAgICBjb25zdCB0cmlwQ29sdW1ucyA9IChnZW9Kc29uQ29sdW1ucyB8fCBbXSkuZmlsdGVyKGNvbCA9PlxuICAgICAgaXNUcmlwR2VvSnNvbkZpZWxkKGRhdGFDb250YWluZXIsIGZpZWxkc1tjb2wuZ2VvanNvbi5maWVsZElkeF0pXG4gICAgKTtcblxuICAgIGlmICghdHJpcENvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiB0cmlwQ29sdW1ucy5tYXAoY29sdW1ucyA9PiAoe1xuICAgICAgICBsYWJlbDogKHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgJiYgbGFiZWwucmVwbGFjZSgvXFwuW14vLl0rJC8sICcnKSkgfHwgdGhpcy50eXBlLFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBpc1Zpc2libGU6IHRydWVcbiAgICAgIH0pKSxcblxuICAgICAgLy8gaWYgYSBnZW9qc29uIGxheWVyIGlzIGNyZWF0ZWQgZnJvbSB0aGlzIGNvbHVtbiwgZGVsZXRlIGl0XG4gICAgICBmb3VuZExheWVyczogZm91bmRMYXllcnMuZmlsdGVyKFxuICAgICAgICBwcm9wID0+XG4gICAgICAgICAgcHJvcC50eXBlICE9PSAnZ2VvanNvbicgfHxcbiAgICAgICAgICBwcm9wLmRhdGFJZCAhPT0gaWQgfHxcbiAgICAgICAgICAhdHJpcENvbHVtbnMuZmluZChjID0+IHByb3AuY29sdW1ucy5nZW9qc29uLm5hbWUgPT09IGMuZ2VvanNvbi5uYW1lKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBkb21haW46IG51bGxcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKG9iamVjdCwgZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGluZGV4IGZvciBkYXRhQ29udGFpbmVyIGlzIHNhdmVkIHRvIGZlYXR1cmUucHJvcGVydGllc1xuICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QucHJvcGVydGllcy5pbmRleCk7XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fSwgZ2V0UG9zaXRpb24pIHtcbiAgICByZXR1cm4gZmlsdGVyZWRJbmRleFxuICAgICAgLm1hcChpID0+IHRoaXMuZGF0YVRvRmVhdHVyZVtpXSlcbiAgICAgIC5maWx0ZXIoZCA9PiBkICYmIGQuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgLy8gdG8tZG86IHBhcnNlIHNlZ21lbnQgZnJvbSBkYXRhQ29udGFpbmVyXG4gICAgY29uc3Qge2RhdGFDb250YWluZXIsIGdwdUZpbHRlcn0gPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcblxuICAgIGNvbnN0IGN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3IgPSAoZGMsIGYsIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBkYy52YWx1ZUF0KGYucHJvcGVydGllcy5pbmRleCwgZmllbGRJbmRleCk7XG4gICAgfTtcbiAgICBjb25zdCBpbmRleEFjY2Vzc29yID0gZiA9PiBmLnByb3BlcnRpZXMuaW5kZXg7XG5cbiAgICBjb25zdCBkYXRhQWNjZXNzb3IgPSBkYyA9PiBkID0+ICh7aW5kZXg6IGQucHJvcGVydGllcy5pbmRleH0pO1xuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQWNjZXNzb3IsIGRhdGFDb250YWluZXJ9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKFxuICAgICAgICBpbmRleEFjY2Vzc29yLFxuICAgICAgICBjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yXG4gICAgICApLFxuICAgICAgZ2V0UGF0aDogZCA9PiBkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgZ2V0VGltZXN0YW1wczogZCA9PiB0aGlzLmRhdGFUb1RpbWVTdGFtcFtkLnByb3BlcnRpZXMuaW5kZXhdLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihkb21haW4pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpIHtcbiAgICBjb25zdCBnZXRGZWF0dXJlID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGlmIChnZXRGZWF0dXJlID09PSB0aGlzLm1ldGEuZ2V0RmVhdHVyZSkge1xuICAgICAgLy8gVE9ETzogcmV2aXNpdCB0aGlzIGFmdGVyIGdwdSBmaWx0ZXJpbmdcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBnZXRHZW9qc29uRGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSk7XG5cbiAgICBjb25zdCB7ZGF0YVRvVGltZVN0YW1wLCBhbmltYXRpb25Eb21haW59ID0gcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy5kYXRhVG9UaW1lU3RhbXAgPSBkYXRhVG9UaW1lU3RhbXA7XG4gICAgdGhpcy51cGRhdGVBbmltYXRpb25Eb21haW4oYW5pbWF0aW9uRG9tYWluKTtcblxuICAgIC8vIGdldCBib3VuZHMgZnJvbSBmZWF0dXJlc1xuICAgIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIC8vIGtlZXAgYSByZWNvcmQgb2Ygd2hhdCB0eXBlIG9mIGdlb21ldHJ5IHRoZSBjb2xsZWN0aW9uIGhhc1xuICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGdldEdlb2pzb25GZWF0dXJlVHlwZXModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzLCBmZWF0dXJlVHlwZXMsIGdldEZlYXR1cmV9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyh7ZGF0YUNvbnRhaW5lcn0pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBtYXBTdGF0ZSwgYW5pbWF0aW9uQ29uZmlnfSA9IG9wdHM7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCBpc1ZhbGlkVGltZSA9XG4gICAgICBhbmltYXRpb25Db25maWcgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoYW5pbWF0aW9uQ29uZmlnLmRvbWFpbikgJiZcbiAgICAgIGFuaW1hdGlvbkNvbmZpZy5kb21haW4uZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSk7XG5cbiAgICBpZiAoIWlzVmFsaWRUaW1lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZG9tYWluMCA9IGFuaW1hdGlvbkNvbmZpZy5kb21haW4/LlswXTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldFRpbWVzdGFtcHM6IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgICAgZG9tYWluMFxuICAgICAgfSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc1xuICAgIH07XG4gICAgY29uc3QgZGVmYXVsdExheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRGVja0dMVHJpcHNMYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBnZXRUaW1lc3RhbXBzOiBkID0+IGRhdGEuZ2V0VGltZXN0YW1wcyhkKS5tYXAodHMgPT4gdHMgLSBkb21haW4wKSxcbiAgICAgICAgd2lkdGhTY2FsZTogdGhpcy5jb25maWcudmlzQ29uZmlnLnRoaWNrbmVzcyxcbiAgICAgICAgd2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgIHJvdW5kZWQ6IHRydWUsXG4gICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgZGVwdGhUZXN0OiBtYXBTdGF0ZS5kcmFnUm90YXRlLFxuICAgICAgICAgIGRlcHRoTWFzazogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdHJhaWxMZW5ndGg6IHZpc0NvbmZpZy50cmFpbExlbmd0aCAqIDEwMDAsXG4gICAgICAgIGN1cnJlbnRUaW1lOiBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgLSBkb21haW4wLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgfSlcbiAgICBdO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@carto/kepler.gl",
3
3
  "author": "CARTO",
4
4
  "homepage": "https://github.com/CartoDB/carto-kepler#readme",
5
- "version": "0.0.31",
5
+ "version": "0.0.32",
6
6
  "description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
7
7
  "license": "MIT",
8
8
  "main": "dist/index.js",
@@ -388,11 +388,6 @@ export default function LayerConfiguratorFactory(
388
388
  {...visConfiguratorProps}
389
389
  label="layerVisConfigs.heightRange"
390
390
  />
391
- <VisConfigSwitch
392
- {...layer.visConfigSettings.enableElevationZoomFactor}
393
- {...visConfiguratorProps}
394
- label="layerVisConfigs.enableHeightZoomFactor"
395
- />
396
391
  {layer.visConfigSettings.sizeAggregation.condition(layer.config) ? (
397
392
  <AggregationTypeSelector
398
393
  {...layer.visConfigSettings.sizeAggregation}
@@ -481,10 +476,6 @@ export default function LayerConfiguratorFactory(
481
476
  {...visConfiguratorProps}
482
477
  label="layerVisConfigs.heightRange"
483
478
  />
484
- <VisConfigSwitch
485
- {...layer.visConfigSettings.enableElevationZoomFactor}
486
- {...visConfiguratorProps}
487
- />
488
479
  </ConfigGroupCollapsibleContent>
489
480
  </LayerConfigGroup>
490
481
  </StyledLayerVisualConfigurator>
@@ -740,10 +731,6 @@ export default function LayerConfiguratorFactory(
740
731
  channel={layer.visualChannels.height}
741
732
  {...layerChannelConfigProps}
742
733
  />
743
- <VisConfigSwitch
744
- {...layer.visConfigSettings.enableElevationZoomFactor}
745
- {...visConfiguratorProps}
746
- />
747
734
  <VisConfigSwitch {...visConfiguratorProps} {...layer.visConfigSettings.wireframe} />
748
735
  </ConfigGroupCollapsibleContent>
749
736
  </LayerConfigGroup>
@@ -922,10 +909,6 @@ export default function LayerConfiguratorFactory(
922
909
  {...visConfiguratorProps}
923
910
  label="layerVisConfigs.heightRange"
924
911
  />
925
- <VisConfigSwitch
926
- {...layer.visConfigSettings.enableElevationZoomFactor}
927
- {...visConfiguratorProps}
928
- />
929
912
  <VisConfigSwitch {...visConfiguratorProps} {...layer.visConfigSettings.wireframe} />
930
913
  </ConfigGroupCollapsibleContent>
931
914
  </LayerConfigGroup>
@@ -291,9 +291,8 @@ export default class AggregationLayer extends Layer {
291
291
  }
292
292
 
293
293
  getDefaultAggregationLayerProp(opts) {
294
- const {gpuFilter, mapState, layerCallbacks = {}} = opts;
294
+ const {gpuFilter, layerCallbacks = {}} = opts;
295
295
  const {visConfig} = this.config;
296
- const eleZoomFactor = this.getElevationZoomFactor(mapState);
297
296
 
298
297
  const updateTriggers = {
299
298
  getColorValue: {
@@ -323,7 +322,7 @@ export default class AggregationLayer extends Layer {
323
322
 
324
323
  // elevation
325
324
  extruded: visConfig.enable3d,
326
- elevationScale: visConfig.elevationScale * eleZoomFactor,
325
+ elevationScale: visConfig.elevationScale,
327
326
  elevationScaleType: this.config.sizeScale,
328
327
  elevationRange: visConfig.sizeRange,
329
328
  elevationLowerPercentile: visConfig.elevationPercentile[0],
@@ -1066,6 +1066,32 @@ class Layer {
1066
1066
  return fixed ? 1 : (this.config[field] ? 1 : radius) * this.getZoomFactor(mapState);
1067
1067
  }
1068
1068
 
1069
+ getRadiusScale(fixedRadius) {
1070
+ const radiusChannel = Object.values(this.visualChannels).find(vc => vc.property === 'radius');
1071
+
1072
+ if (!radiusChannel) {
1073
+ return 1;
1074
+ }
1075
+
1076
+ const field = radiusChannel.field;
1077
+ const fixed = fixedRadius === undefined ? this.config.visConfig.fixedRadius : fixedRadius;
1078
+ const {radius} = this.config.visConfig;
1079
+
1080
+ return fixed ? 1 : (this.config[field] ? 1 : radius);
1081
+ }
1082
+
1083
+ getRadiusUnit(fixedRadius) {
1084
+ const radiusChannel = Object.values(this.visualChannels).find(vc => vc.property === 'radius');
1085
+
1086
+ if (!radiusChannel) {
1087
+ return 'pixels';
1088
+ }
1089
+
1090
+ const fixed = fixedRadius === undefined ? this.config.visConfig.fixedRadius : fixedRadius;
1091
+
1092
+ return fixed ? 'meters' : 'pixels';
1093
+ }
1094
+
1069
1095
  shouldCalculateLayerData(props) {
1070
1096
  return props.some(p => !this.noneLayerDataAffectingProps.includes(p));
1071
1097
  }
@@ -42,7 +42,7 @@ export const geojsonVisConfigs = {
42
42
  },
43
43
  thickness: {
44
44
  ...LAYER_VIS_CONFIGS.thickness,
45
- defaultValue: 0.5
45
+ defaultValue: 1
46
46
  },
47
47
  strokeColor: 'strokeColor',
48
48
  colorRange: 'colorRange',
@@ -270,18 +270,17 @@ export default class GeoJsonLayer extends Layer {
270
270
  }
271
271
 
272
272
  renderLayer(opts) {
273
- const {data, gpuFilter, objectHovered, mapState, interactionConfig} = opts;
273
+ const {data, gpuFilter, objectHovered, interactionConfig} = opts;
274
274
 
275
275
  const {fixedRadius, featureTypes} = this.meta;
276
- const radiusScale = this.getRadiusScaleByZoom(mapState, fixedRadius);
277
- const zoomFactor = this.getZoomFactor(mapState);
278
- const eleZoomFactor = this.getElevationZoomFactor(mapState);
276
+ const radiusScale = this.getRadiusScale(fixedRadius);
277
+ const radiusUnits = this.getRadiusUnit(fixedRadius);
279
278
 
280
279
  const {visConfig} = this.config;
281
280
 
282
281
  const layerProps = {
283
- lineWidthScale: visConfig.thickness * zoomFactor * 8,
284
- elevationScale: visConfig.elevationScale * eleZoomFactor,
282
+ lineWidthScale: visConfig.thickness,
283
+ elevationScale: visConfig.elevationScale,
285
284
  pointRadiusScale: radiusScale,
286
285
  lineMiterLimit: 4
287
286
  };
@@ -314,6 +313,8 @@ export default class GeoJsonLayer extends Layer {
314
313
  wrapLongitude: false,
315
314
  lineMiterLimit: 2,
316
315
  rounded: true,
316
+ radiusUnits,
317
+ lineWidthUnits: 'pixels',
317
318
  updateTriggers,
318
319
  _subLayerProps: {
319
320
  ...(featureTypes.polygon ? {'polygons-stroke': opaOverwrite} : {}),
@@ -203,10 +203,7 @@ export default class HexagonIdLayer extends Layer {
203
203
  }
204
204
 
205
205
  renderLayer(opts) {
206
- const {data, gpuFilter, objectHovered, mapState} = opts;
207
-
208
- const zoomFactor = this.getZoomFactor(mapState);
209
- const eleZoomFactor = this.getElevationZoomFactor(mapState);
206
+ const {data, gpuFilter, objectHovered} = opts;
210
207
  const {config} = this;
211
208
  const {visConfig} = config;
212
209
  const updateTriggers = this.getVisualChannelUpdateTriggers();
@@ -242,7 +239,7 @@ export default class HexagonIdLayer extends Layer {
242
239
 
243
240
  // elevation
244
241
  extruded: visConfig.enable3d,
245
- elevationScale: visConfig.elevationScale * eleZoomFactor,
242
+ elevationScale: visConfig.elevationScale,
246
243
 
247
244
  // render
248
245
  updateTriggers: h3HexagonLayerTriggers,
@@ -260,7 +257,7 @@ export default class HexagonIdLayer extends Layer {
260
257
  ...this.getDefaultHoverLayerProps(),
261
258
  data: [idToPolygonGeo(hoveredObject)],
262
259
  getLineColor: config.highlightColor,
263
- lineWidthScale: DEFAULT_LINE_SCALE_VALUE * zoomFactor,
260
+ lineWidthScale: DEFAULT_LINE_SCALE_VALUE,
264
261
  wrapLongitude: false
265
262
  })
266
263
  ]
@@ -247,11 +247,14 @@ export default class IconLayer extends Layer {
247
247
  renderLayer(opts) {
248
248
  const {data, gpuFilter, objectHovered, mapState, interactionConfig} = opts;
249
249
 
250
- const radiusScale = this.getRadiusScaleByZoom(mapState);
250
+ const fixedRadius = this.config.visConfig.fixedRadius && Boolean(this.config.sizeField);
251
+ const radiusScale = this.getRadiusScale(fixedRadius);
252
+ const radiusUnits = this.getRadiusUnit(fixedRadius);
251
253
 
252
254
  const layerProps = {
253
255
  radiusScale,
254
- ...(this.config.visConfig.fixedRadius ? {} : {radiusMaxPixels: 500})
256
+ radiusUnits,
257
+ ...(fixedRadius ? {} : {radiusMaxPixels: 500})
255
258
  };
256
259
 
257
260
  const updateTriggers = {
@@ -262,7 +265,12 @@ export default class IconLayer extends Layer {
262
265
 
263
266
  const defaultLayerProps = this.getDefaultDeckLayerProps(opts);
264
267
  const brushingProps = this.getBrushingExtensionProps(interactionConfig);
265
- const getPixelOffset = getTextOffsetByRadius(radiusScale, data.getRadius, mapState);
268
+ const getPixelOffset = getTextOffsetByRadius(
269
+ radiusScale,
270
+ data.getRadius,
271
+ mapState,
272
+ fixedRadius
273
+ );
266
274
  const extensions = [...defaultLayerProps.extensions, brushingExtension];
267
275
 
268
276
  // shared Props between layer and label layer
@@ -111,7 +111,7 @@ export const LAYER_VIS_CONFIGS = {
111
111
  // radius is actually radiusScale in deck.gl
112
112
  radius: {
113
113
  type: 'number',
114
- defaultValue: 10,
114
+ defaultValue: 2,
115
115
  label: 'layerVisConfigs.radius',
116
116
  isRanged: false,
117
117
  range: [0, 100],
@@ -311,7 +311,7 @@ export const LAYER_VIS_CONFIGS = {
311
311
  defaultValue: 5,
312
312
  label: 'layerVisConfigs.elevationScale',
313
313
  isRanged: false,
314
- range: [0, 100],
314
+ range: [0, 5000],
315
315
  step: 0.1,
316
316
  group: PROPERTY_GROUPS.height,
317
317
  property: 'elevationScale'
@@ -24,7 +24,7 @@ import uniq from 'lodash.uniq';
24
24
 
25
25
  export const defaultPadding = 20;
26
26
 
27
- export function getTextOffsetByRadius(radiusScale, getRadius, mapState) {
27
+ export function getTextOffsetByRadius(radiusScale, getRadius, mapState, fixedRadius) {
28
28
  return textLabel => {
29
29
  const distanceScale = getDistanceScales(mapState);
30
30
  const xMult = textLabel.anchor === 'middle' ? 0 : textLabel.anchor === 'start' ? 1 : -1;
@@ -37,7 +37,7 @@ export function getTextOffsetByRadius(radiusScale, getRadius, mapState) {
37
37
  ? textLabel.size
38
38
  : textLabel.size;
39
39
 
40
- const pixelRadius = radiusScale * distanceScale.pixelsPerMeter[0];
40
+ const pixelRadius = fixedRadius ? radiusScale * distanceScale.pixelsPerMeter[0] : radiusScale;
41
41
  const padding = defaultPadding;
42
42
 
43
43
  return typeof getRadius === 'function'
@@ -242,7 +242,8 @@ export default class PointLayer extends Layer {
242
242
 
243
243
  // if no field size is defined we need to pass fixed radius = false
244
244
  const fixedRadius = this.config.visConfig.fixedRadius && Boolean(this.config.sizeField);
245
- const radiusScale = this.getRadiusScaleByZoom(mapState, fixedRadius);
245
+ const radiusScale = this.getRadiusScale(fixedRadius);
246
+ const radiusUnits = this.getRadiusUnit(fixedRadius);
246
247
 
247
248
  const layerProps = {
248
249
  stroked: this.config.visConfig.outline,
@@ -260,7 +261,12 @@ export default class PointLayer extends Layer {
260
261
 
261
262
  const defaultLayerProps = this.getDefaultDeckLayerProps(opts);
262
263
  const brushingProps = this.getBrushingExtensionProps(interactionConfig);
263
- const getPixelOffset = getTextOffsetByRadius(radiusScale, data.getRadius, mapState);
264
+ const getPixelOffset = getTextOffsetByRadius(
265
+ radiusScale,
266
+ data.getRadius,
267
+ mapState,
268
+ fixedRadius
269
+ );
264
270
  const extensions = [...defaultLayerProps.extensions, brushingExtension];
265
271
 
266
272
  const sharedProps = {
@@ -282,6 +288,7 @@ export default class PointLayer extends Layer {
282
288
  // circles will be flat on the map when the altitude column is not used
283
289
  depthTest: this.config.columns.altitude?.fieldIdx > -1
284
290
  },
291
+ radiusUnits,
285
292
  lineWidthUnits: 'pixels',
286
293
  updateTriggers,
287
294
  extensions
@@ -26,8 +26,6 @@ import Layer from '../base-layer';
26
26
  import S2LayerIcon from './s2-layer-icon';
27
27
  import {getS2Center} from './s2-utils';
28
28
 
29
- const zoomFactorValue = 8;
30
-
31
29
  export const S2_TOKEN_FIELDS = {
32
30
  token: ['s2', 's2_token']
33
31
  };
@@ -221,12 +219,9 @@ export default class S2GeometryLayer extends Layer {
221
219
  }
222
220
 
223
221
  renderLayer(opts) {
224
- const {data, gpuFilter, interactionConfig, mapState} = opts;
222
+ const {data, gpuFilter, interactionConfig} = opts;
225
223
 
226
224
  const defaultLayerProps = this.getDefaultDeckLayerProps(opts);
227
-
228
- const eleZoomFactor = this.getElevationZoomFactor(mapState);
229
- const zoomFactor = this.getZoomFactor(mapState);
230
225
  const {config} = this;
231
226
  const {visConfig} = config;
232
227
 
@@ -246,7 +241,7 @@ export default class S2GeometryLayer extends Layer {
246
241
  highlightColor: HIGHLIGH_COLOR_3D,
247
242
 
248
243
  // stroke
249
- lineWidthScale: visConfig.thickness * zoomFactor * zoomFactorValue,
244
+ lineWidthScale: visConfig.thickness,
250
245
  stroked: visConfig.stroked,
251
246
  lineMiterLimit: 2,
252
247
 
@@ -256,7 +251,7 @@ export default class S2GeometryLayer extends Layer {
256
251
  wrapLongitude: false,
257
252
 
258
253
  // Elevation
259
- elevationScale: visConfig.elevationScale * eleZoomFactor,
254
+ elevationScale: visConfig.elevationScale,
260
255
  extruded: visConfig.enable3d,
261
256
 
262
257
  wireframe: visConfig.wireframe,
@@ -278,7 +278,8 @@ export default class TripLayer extends Layer {
278
278
  ...defaultLayerProps,
279
279
  ...data,
280
280
  getTimestamps: d => data.getTimestamps(d).map(ts => ts - domain0),
281
- widthScale: this.config.visConfig.thickness * zoomFactor * zoomFactorValue,
281
+ widthScale: this.config.visConfig.thickness,
282
+ widthUnits: 'pixels',
282
283
  rounded: true,
283
284
  wrapLongitude: false,
284
285
  parameters: {