kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
102 lines (88 loc) • 11.2 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 _window = require("global/window");
var _versions = require("./versions");
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; }
var Schema =
/*#__PURE__*/
function () {
function Schema() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
version = _ref.version,
key = _ref.key,
properties = _ref.properties;
(0, _classCallCheck2["default"])(this, Schema);
this.version = version;
this.properties = properties;
this.key = key;
}
(0, _createClass2["default"])(Schema, [{
key: "loadPropertiesOrApplySchema",
value: function loadPropertiesOrApplySchema(node, parent, accumulator) {
return this._getPropertyValueFromSchema('load', node, parent, accumulator);
}
}, {
key: "savePropertiesOrApplySchema",
value: function savePropertiesOrApplySchema(node, parent, accumulator) {
return this._getPropertyValueFromSchema('save', node, parent, accumulator);
}
}, {
key: "_getPropertyValueFromSchema",
value: function _getPropertyValueFromSchema(operation, node, parent, accumulator) {
var _this = this;
var internal = "_".concat(operation);
return (0, _defineProperty2["default"])({}, this.key, this.properties ? Object.keys(this.properties).reduce(function (accu, key) {
return _objectSpread({}, accu, {}, key in node ? _this.properties[key] ? // if it's another schema
_this.properties[key][operation] ? // call save or load
_this.properties[key][internal](node[key], node, accu) : {} : (0, _defineProperty2["default"])({}, key, node[key]) : {});
}, {}) : node);
}
}, {
key: "_isCurrentVersion",
value: function _isCurrentVersion() {
return this.version === _versions.CURRENT_VERSION;
}
}, {
key: "outdatedVersionError",
value: function outdatedVersionError() {
if (!this._isCurrentVersion()) {
_window.console.error("".concat(this.key, " ").concat(this.version, " is outdated. save should not be called anymore"));
}
}
}, {
key: "_save",
value: function _save() {
// make sure nothing is saved to an outdated version
this.outdatedVersionError();
return this.save.apply(this, arguments);
}
}, {
key: "save",
value: function save(node, parent) {
var accumulator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return this.savePropertiesOrApplySchema(node, parent, accumulator);
}
}, {
key: "_load",
value: function _load() {
return this.load.apply(this, arguments);
}
}, {
key: "load",
value: function load(node, parent) {
var accumulator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return this.loadPropertiesOrApplySchema(node, parent, accumulator);
}
}]);
return Schema;
}();
exports["default"] = Schema;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3NjaGVtYS5qcyJdLCJuYW1lcyI6WyJTY2hlbWEiLCJ2ZXJzaW9uIiwia2V5IiwicHJvcGVydGllcyIsIm5vZGUiLCJwYXJlbnQiLCJhY2N1bXVsYXRvciIsIl9nZXRQcm9wZXJ0eVZhbHVlRnJvbVNjaGVtYSIsIm9wZXJhdGlvbiIsImludGVybmFsIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImFjY3UiLCJDVVJSRU5UX1ZFUlNJT04iLCJfaXNDdXJyZW50VmVyc2lvbiIsIkNvbnNvbGUiLCJlcnJvciIsIm91dGRhdGVkVmVyc2lvbkVycm9yIiwic2F2ZSIsInNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYSIsImxvYWQiLCJsb2FkUHJvcGVydGllc09yQXBwbHlTY2hlbWEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFFQTs7Ozs7O0lBRXFCQSxNOzs7QUFDbkIsb0JBQTZDO0FBQUEsbUZBQUosRUFBSTtBQUFBLFFBQWhDQyxPQUFnQyxRQUFoQ0EsT0FBZ0M7QUFBQSxRQUF2QkMsR0FBdUIsUUFBdkJBLEdBQXVCO0FBQUEsUUFBbEJDLFVBQWtCLFFBQWxCQSxVQUFrQjs7QUFBQTtBQUMzQyxTQUFLRixPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLRSxVQUFMLEdBQWtCQSxVQUFsQjtBQUNBLFNBQUtELEdBQUwsR0FBV0EsR0FBWDtBQUNEOzs7O2dEQUUyQkUsSSxFQUFNQyxNLEVBQVFDLFcsRUFBYTtBQUNyRCxhQUFPLEtBQUtDLDJCQUFMLENBQWlDLE1BQWpDLEVBQXlDSCxJQUF6QyxFQUErQ0MsTUFBL0MsRUFBdURDLFdBQXZELENBQVA7QUFDRDs7O2dEQUUyQkYsSSxFQUFNQyxNLEVBQVFDLFcsRUFBYTtBQUNyRCxhQUFPLEtBQUtDLDJCQUFMLENBQWlDLE1BQWpDLEVBQXlDSCxJQUF6QyxFQUErQ0MsTUFBL0MsRUFBdURDLFdBQXZELENBQVA7QUFDRDs7O2dEQUUyQkUsUyxFQUFXSixJLEVBQU1DLE0sRUFBUUMsVyxFQUFhO0FBQUE7O0FBQ2hFLFVBQU1HLFFBQVEsY0FBT0QsU0FBUCxDQUFkO0FBQ0Esa0RBQ0csS0FBS04sR0FEUixFQUNjLEtBQUtDLFVBQUwsR0FDUk8sTUFBTSxDQUFDQyxJQUFQLENBQVksS0FBS1IsVUFBakIsRUFBNkJTLE1BQTdCLENBQW9DLFVBQUNDLElBQUQsRUFBT1gsR0FBUCxFQUFlO0FBQ2pELGlDQUNLVyxJQURMLE1BRU1YLEdBQUcsSUFBSUUsSUFBUCxHQUNBLEtBQUksQ0FBQ0QsVUFBTCxDQUFnQkQsR0FBaEIsSUFDRTtBQUNBLFFBQUEsS0FBSSxDQUFDQyxVQUFMLENBQWdCRCxHQUFoQixFQUFxQk0sU0FBckIsSUFDRTtBQUNBLFFBQUEsS0FBSSxDQUFDTCxVQUFMLENBQWdCRCxHQUFoQixFQUFxQk8sUUFBckIsRUFBK0JMLElBQUksQ0FBQ0YsR0FBRCxDQUFuQyxFQUEwQ0UsSUFBMUMsRUFBZ0RTLElBQWhELENBRkYsR0FHRSxFQUxKLHdDQU1JWCxHQU5KLEVBTVVFLElBQUksQ0FBQ0YsR0FBRCxDQU5kLENBREEsR0FRQSxFQVZOO0FBWUQsT0FiRCxFQWFHLEVBYkgsQ0FEUSxHQWVSRSxJQWhCTjtBQWtCRDs7O3dDQUVtQjtBQUNsQixhQUFPLEtBQUtILE9BQUwsS0FBaUJhLHlCQUF4QjtBQUNEOzs7MkNBRXNCO0FBQ3JCLFVBQUksQ0FBQyxLQUFLQyxpQkFBTCxFQUFMLEVBQStCO0FBQzdCQyx3QkFBUUMsS0FBUixXQUNLLEtBQUtmLEdBRFYsY0FFSSxLQUFLRCxPQUZUO0FBS0Q7QUFDRjs7OzRCQUVjO0FBQ2I7QUFDQSxXQUFLaUIsb0JBQUw7QUFDQSxhQUFPLEtBQUtDLElBQUwsdUJBQVA7QUFDRDs7O3lCQUVJZixJLEVBQU1DLE0sRUFBMEI7QUFBQSxVQUFsQkMsV0FBa0IsdUVBQUosRUFBSTtBQUNuQyxhQUFPLEtBQUtjLDJCQUFMLENBQWlDaEIsSUFBakMsRUFBdUNDLE1BQXZDLEVBQStDQyxXQUEvQyxDQUFQO0FBQ0Q7Ozs0QkFFYztBQUNiLGFBQU8sS0FBS2UsSUFBTCx1QkFBUDtBQUNEOzs7eUJBRUlqQixJLEVBQU1DLE0sRUFBMEI7QUFBQSxVQUFsQkMsV0FBa0IsdUVBQUosRUFBSTtBQUNuQyxhQUFPLEtBQUtnQiwyQkFBTCxDQUFpQ2xCLElBQWpDLEVBQXVDQyxNQUF2QyxFQUErQ0MsV0FBL0MsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDE5IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuXG5pbXBvcnQge0NVUlJFTlRfVkVSU0lPTn0gZnJvbSAnLi92ZXJzaW9ucyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjaGVtYSB7XG4gIGNvbnN0cnVjdG9yKHt2ZXJzaW9uLCBrZXksIHByb3BlcnRpZXN9ID0ge30pIHtcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gIH1cbiBcbiAgbG9hZFByb3BlcnRpZXNPckFwcGx5U2NoZW1hKG5vZGUsIHBhcmVudCwgYWNjdW11bGF0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydHlWYWx1ZUZyb21TY2hlbWEoJ2xvYWQnLCBub2RlLCBwYXJlbnQsIGFjY3VtdWxhdG9yKTtcbiAgfVxuXG4gIHNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShub2RlLCBwYXJlbnQsIGFjY3VtdWxhdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnR5VmFsdWVGcm9tU2NoZW1hKCdzYXZlJywgbm9kZSwgcGFyZW50LCBhY2N1bXVsYXRvcik7XG4gIH1cblxuICBfZ2V0UHJvcGVydHlWYWx1ZUZyb21TY2hlbWEob3BlcmF0aW9uLCBub2RlLCBwYXJlbnQsIGFjY3VtdWxhdG9yKSB7XG4gICAgY29uc3QgaW50ZXJuYWwgPSBgXyR7b3BlcmF0aW9ufWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmtleV06IHRoaXMucHJvcGVydGllc1xuICAgICAgICA/IE9iamVjdC5rZXlzKHRoaXMucHJvcGVydGllcykucmVkdWNlKChhY2N1LCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIC4uLihrZXkgaW4gbm9kZVxuICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wZXJ0aWVzW2tleV1cbiAgICAgICAgICAgICAgICAgID8gLy8gaWYgaXQncyBhbm90aGVyIHNjaGVtYVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNba2V5XVtvcGVyYXRpb25dXG4gICAgICAgICAgICAgICAgICAgID8gLy8gY2FsbCBzYXZlIG9yIGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNba2V5XVtpbnRlcm5hbF0obm9kZVtrZXldLCBub2RlLCBhY2N1KVxuICAgICAgICAgICAgICAgICAgICA6IHt9XG4gICAgICAgICAgICAgICAgICA6IHtba2V5XTogbm9kZVtrZXldfVxuICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sIHt9KVxuICAgICAgICA6IG5vZGVcbiAgICB9O1xuICB9XG5cbiAgX2lzQ3VycmVudFZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyc2lvbiA9PT0gQ1VSUkVOVF9WRVJTSU9OO1xuICB9XG5cbiAgb3V0ZGF0ZWRWZXJzaW9uRXJyb3IoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRWZXJzaW9uKCkpIHtcbiAgICAgIENvbnNvbGUuZXJyb3IoXG4gICAgICAgIGAke3RoaXMua2V5fSAke1xuICAgICAgICAgIHRoaXMudmVyc2lvblxuICAgICAgICB9IGlzIG91dGRhdGVkLiBzYXZlIHNob3VsZCBub3QgYmUgY2FsbGVkIGFueW1vcmVgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIF9zYXZlKC4uLmFyZ3MpIHtcbiAgICAvLyBtYWtlIHN1cmUgbm90aGluZyBpcyBzYXZlZCB0byBhbiBvdXRkYXRlZCB2ZXJzaW9uXG4gICAgdGhpcy5vdXRkYXRlZFZlcnNpb25FcnJvcigpO1xuICAgIHJldHVybiB0aGlzLnNhdmUoLi4uYXJncyk7XG4gIH1cblxuICBzYXZlKG5vZGUsIHBhcmVudCwgYWNjdW11bGF0b3IgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShub2RlLCBwYXJlbnQsIGFjY3VtdWxhdG9yKTtcbiAgfVxuXG4gIF9sb2FkKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkKC4uLmFyZ3MpO1xuICB9XG5cbiAgbG9hZChub2RlLCBwYXJlbnQsIGFjY3VtdWxhdG9yID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkUHJvcGVydGllc09yQXBwbHlTY2hlbWEobm9kZSwgcGFyZW50LCBhY2N1bXVsYXRvcik7XG4gIH1cbn1cbiJdfQ==