kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
120 lines (99 loc) • 11.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _deck = require("deck.gl");
var _scatterplotIconLayer = _interopRequireDefault(require("./scatterplot-icon-layer"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
// default icon geometry is a square
var DEFAULT_ICON_GEOMETRY = [1, 1, 0, 1, -1, 0, -1, -1, 0, -1, -1, 0, -1, 1, 0, 1, 1, 0];
var defaultProps = {
getIconGeometry: function getIconGeometry(iconId) {
return DEFAULT_ICON_GEOMETRY;
},
getIcon: function getIcon(d) {
return d.icon;
}
};
var SvgIconLayer =
/*#__PURE__*/
function (_CompositeLayer) {
(0, _inherits2["default"])(SvgIconLayer, _CompositeLayer);
function SvgIconLayer() {
(0, _classCallCheck2["default"])(this, SvgIconLayer);
return (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(SvgIconLayer).apply(this, arguments));
}
(0, _createClass2["default"])(SvgIconLayer, [{
key: "initializeState",
// Must be defined
value: function initializeState() {
this.state = {
data: {}
};
}
}, {
key: "updateState",
value: function updateState(_ref) {
var changeFlags = _ref.changeFlags;
if (changeFlags.dataChanged) {
this._extractSublayers();
}
}
}, {
key: "_extractSublayers",
value: function _extractSublayers() {
var _this$props = this.props,
data = _this$props.data,
getIconGeometry = _this$props.getIconGeometry,
getIcon = _this$props.getIcon;
var iconLayers = data.reduce(function (accu, d) {
var iconId = getIcon(d);
if (iconId in accu) {
accu[iconId].data.push(d);
} else {
var geometry = getIconGeometry(iconId) || DEFAULT_ICON_GEOMETRY;
accu[iconId] = {
id: iconId,
geometry: geometry,
data: [d]
};
}
return accu;
}, {});
this.setState({
data: Object.values(iconLayers)
});
}
}, {
key: "renderLayers",
value: function renderLayers() {
var _this = this;
var layerId = this.props.id;
var layers = this.state.data && this.state.data.length && this.state.data.map(function (_ref2) {
var id = _ref2.id,
data = _ref2.data,
geometry = _ref2.geometry;
return new _scatterplotIconLayer["default"](_objectSpread({}, _this.props, {
id: "".concat(layerId, "-").concat(id),
data: data,
iconGeometry: geometry
}));
});
return layers && layers.length > 0 ? layers : null;
}
}]);
return SvgIconLayer;
}(_deck.CompositeLayer);
exports["default"] = SvgIconLayer;
SvgIconLayer.layerName = 'SvgIconLayer';
SvgIconLayer.defaultProps = defaultProps;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNrZ2wtbGF5ZXJzL3N2Zy1pY29uLWxheWVyL3N2Zy1pY29uLWxheWVyLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfSUNPTl9HRU9NRVRSWSIsImRlZmF1bHRQcm9wcyIsImdldEljb25HZW9tZXRyeSIsImljb25JZCIsImdldEljb24iLCJkIiwiaWNvbiIsIlN2Z0ljb25MYXllciIsInN0YXRlIiwiZGF0YSIsImNoYW5nZUZsYWdzIiwiZGF0YUNoYW5nZWQiLCJfZXh0cmFjdFN1YmxheWVycyIsInByb3BzIiwiaWNvbkxheWVycyIsInJlZHVjZSIsImFjY3UiLCJwdXNoIiwiZ2VvbWV0cnkiLCJpZCIsInNldFN0YXRlIiwiT2JqZWN0IiwidmFsdWVzIiwibGF5ZXJJZCIsImxheWVycyIsImxlbmd0aCIsIm1hcCIsIlNjYXR0ZXJwbG90SWNvbkxheWVyIiwiaWNvbkdlb21ldHJ5IiwiQ29tcG9zaXRlTGF5ZXIiLCJsYXllck5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQSxJQUFNQSxxQkFBcUIsR0FBRyxDQUM1QixDQUQ0QixFQUU1QixDQUY0QixFQUc1QixDQUg0QixFQUk1QixDQUo0QixFQUs1QixDQUFDLENBTDJCLEVBTTVCLENBTjRCLEVBTzVCLENBQUMsQ0FQMkIsRUFRNUIsQ0FBQyxDQVIyQixFQVM1QixDQVQ0QixFQVU1QixDQUFDLENBVjJCLEVBVzVCLENBQUMsQ0FYMkIsRUFZNUIsQ0FaNEIsRUFhNUIsQ0FBQyxDQWIyQixFQWM1QixDQWQ0QixFQWU1QixDQWY0QixFQWdCNUIsQ0FoQjRCLEVBaUI1QixDQWpCNEIsRUFrQjVCLENBbEI0QixDQUE5QjtBQW9CQSxJQUFNQyxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLGVBQWUsRUFBRSx5QkFBQUMsTUFBTTtBQUFBLFdBQUlILHFCQUFKO0FBQUEsR0FESjtBQUVuQkksRUFBQUEsT0FBTyxFQUFFLGlCQUFBQyxDQUFDO0FBQUEsV0FBSUEsQ0FBQyxDQUFDQyxJQUFOO0FBQUE7QUFGUyxDQUFyQjs7SUFLcUJDLFk7Ozs7Ozs7Ozs7OztBQUNuQjtzQ0FDa0I7QUFDaEIsV0FBS0MsS0FBTCxHQUFhO0FBQ1hDLFFBQUFBLElBQUksRUFBRTtBQURLLE9BQWI7QUFHRDs7O3NDQUUwQjtBQUFBLFVBQWRDLFdBQWMsUUFBZEEsV0FBYzs7QUFDekIsVUFBSUEsV0FBVyxDQUFDQyxXQUFoQixFQUE2QjtBQUMzQixhQUFLQyxpQkFBTDtBQUNEO0FBQ0Y7Ozt3Q0FFbUI7QUFBQSx3QkFDdUIsS0FBS0MsS0FENUI7QUFBQSxVQUNYSixJQURXLGVBQ1hBLElBRFc7QUFBQSxVQUNMUCxlQURLLGVBQ0xBLGVBREs7QUFBQSxVQUNZRSxPQURaLGVBQ1lBLE9BRFo7QUFHbEIsVUFBTVUsVUFBVSxHQUFHTCxJQUFJLENBQUNNLE1BQUwsQ0FBWSxVQUFDQyxJQUFELEVBQU9YLENBQVAsRUFBYTtBQUMxQyxZQUFNRixNQUFNLEdBQUdDLE9BQU8sQ0FBQ0MsQ0FBRCxDQUF0Qjs7QUFFQSxZQUFJRixNQUFNLElBQUlhLElBQWQsRUFBb0I7QUFDbEJBLFVBQUFBLElBQUksQ0FBQ2IsTUFBRCxDQUFKLENBQWFNLElBQWIsQ0FBa0JRLElBQWxCLENBQXVCWixDQUF2QjtBQUNELFNBRkQsTUFFTztBQUNMLGNBQU1hLFFBQVEsR0FBR2hCLGVBQWUsQ0FBQ0MsTUFBRCxDQUFmLElBQTJCSCxxQkFBNUM7QUFDQWdCLFVBQUFBLElBQUksQ0FBQ2IsTUFBRCxDQUFKLEdBQWU7QUFDYmdCLFlBQUFBLEVBQUUsRUFBRWhCLE1BRFM7QUFFYmUsWUFBQUEsUUFBUSxFQUFSQSxRQUZhO0FBR2JULFlBQUFBLElBQUksRUFBRSxDQUFDSixDQUFEO0FBSE8sV0FBZjtBQUtEOztBQUVELGVBQU9XLElBQVA7QUFDRCxPQWZrQixFQWVoQixFQWZnQixDQUFuQjtBQWlCQSxXQUFLSSxRQUFMLENBQWM7QUFDWlgsUUFBQUEsSUFBSSxFQUFFWSxNQUFNLENBQUNDLE1BQVAsQ0FBY1IsVUFBZDtBQURNLE9BQWQ7QUFHRDs7O21DQUVjO0FBQUE7O0FBQ2IsVUFBTVMsT0FBTyxHQUFHLEtBQUtWLEtBQUwsQ0FBV00sRUFBM0I7QUFFQSxVQUFNSyxNQUFNLEdBQ1YsS0FBS2hCLEtBQUwsQ0FBV0MsSUFBWCxJQUNBLEtBQUtELEtBQUwsQ0FBV0MsSUFBWCxDQUFnQmdCLE1BRGhCLElBRUEsS0FBS2pCLEtBQUwsQ0FBV0MsSUFBWCxDQUFnQmlCLEdBQWhCLENBQ0U7QUFBQSxZQUFFUCxFQUFGLFNBQUVBLEVBQUY7QUFBQSxZQUFNVixJQUFOLFNBQU1BLElBQU47QUFBQSxZQUFZUyxRQUFaLFNBQVlBLFFBQVo7QUFBQSxlQUNFLElBQUlTLGdDQUFKLG1CQUNLLEtBQUksQ0FBQ2QsS0FEVjtBQUVFTSxVQUFBQSxFQUFFLFlBQUtJLE9BQUwsY0FBZ0JKLEVBQWhCLENBRko7QUFHRVYsVUFBQUEsSUFBSSxFQUFKQSxJQUhGO0FBSUVtQixVQUFBQSxZQUFZLEVBQUVWO0FBSmhCLFdBREY7QUFBQSxPQURGLENBSEY7QUFhQSxhQUFPTSxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsTUFBUCxHQUFnQixDQUExQixHQUE4QkQsTUFBOUIsR0FBdUMsSUFBOUM7QUFDRDs7O0VBeER1Q0ssb0I7OztBQTJEMUN0QixZQUFZLENBQUN1QixTQUFiLEdBQXlCLGNBQXpCO0FBQ0F2QixZQUFZLENBQUNOLFlBQWIsR0FBNEJBLFlBQTVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDE5IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtDb21wb3NpdGVMYXllcn0gZnJvbSAnZGVjay5nbCc7XG5pbXBvcnQgU2NhdHRlcnBsb3RJY29uTGF5ZXIgZnJvbSAnLi9zY2F0dGVycGxvdC1pY29uLWxheWVyJztcblxuLy8gZGVmYXVsdCBpY29uIGdlb21ldHJ5IGlzIGEgc3F1YXJlXG5jb25zdCBERUZBVUxUX0lDT05fR0VPTUVUUlkgPSBbXG4gIDEsXG4gIDEsXG4gIDAsXG4gIDEsXG4gIC0xLFxuICAwLFxuICAtMSxcbiAgLTEsXG4gIDAsXG4gIC0xLFxuICAtMSxcbiAgMCxcbiAgLTEsXG4gIDEsXG4gIDAsXG4gIDEsXG4gIDEsXG4gIDBcbl07XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGdldEljb25HZW9tZXRyeTogaWNvbklkID0+IERFRkFVTFRfSUNPTl9HRU9NRVRSWSxcbiAgZ2V0SWNvbjogZCA9PiBkLmljb25cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN2Z0ljb25MYXllciBleHRlbmRzIENvbXBvc2l0ZUxheWVyIHtcbiAgLy8gTXVzdCBiZSBkZWZpbmVkXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZGF0YToge31cbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlU3RhdGUoe2NoYW5nZUZsYWdzfSkge1xuICAgIGlmIChjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy5fZXh0cmFjdFN1YmxheWVycygpO1xuICAgIH1cbiAgfVxuXG4gIF9leHRyYWN0U3VibGF5ZXJzKCkge1xuICAgIGNvbnN0IHtkYXRhLCBnZXRJY29uR2VvbWV0cnksIGdldEljb259ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGljb25MYXllcnMgPSBkYXRhLnJlZHVjZSgoYWNjdSwgZCkgPT4ge1xuICAgICAgY29uc3QgaWNvbklkID0gZ2V0SWNvbihkKTtcblxuICAgICAgaWYgKGljb25JZCBpbiBhY2N1KSB7XG4gICAgICAgIGFjY3VbaWNvbklkXS5kYXRhLnB1c2goZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IGdldEljb25HZW9tZXRyeShpY29uSWQpIHx8IERFRkFVTFRfSUNPTl9HRU9NRVRSWTtcbiAgICAgICAgYWNjdVtpY29uSWRdID0ge1xuICAgICAgICAgIGlkOiBpY29uSWQsXG4gICAgICAgICAgZ2VvbWV0cnksXG4gICAgICAgICAgZGF0YTogW2RdXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2N1O1xuICAgIH0sIHt9KTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGF0YTogT2JqZWN0LnZhbHVlcyhpY29uTGF5ZXJzKVxuICAgIH0pO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIGNvbnN0IGxheWVySWQgPSB0aGlzLnByb3BzLmlkO1xuXG4gICAgY29uc3QgbGF5ZXJzID1cbiAgICAgIHRoaXMuc3RhdGUuZGF0YSAmJlxuICAgICAgdGhpcy5zdGF0ZS5kYXRhLmxlbmd0aCAmJlxuICAgICAgdGhpcy5zdGF0ZS5kYXRhLm1hcChcbiAgICAgICAgKHtpZCwgZGF0YSwgZ2VvbWV0cnl9KSA9PlxuICAgICAgICAgIG5ldyBTY2F0dGVycGxvdEljb25MYXllcih7XG4gICAgICAgICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgICAgICAgaWQ6IGAke2xheWVySWR9LSR7aWR9YCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBpY29uR2VvbWV0cnk6IGdlb21ldHJ5XG4gICAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICByZXR1cm4gbGF5ZXJzICYmIGxheWVycy5sZW5ndGggPiAwID8gbGF5ZXJzIDogbnVsbDtcbiAgfVxufVxuXG5TdmdJY29uTGF5ZXIubGF5ZXJOYW1lID0gJ1N2Z0ljb25MYXllcic7XG5TdmdJY29uTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl19