UNPKG

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
"use strict"; 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