kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
111 lines (109 loc) • 16.3 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _window = require("global/window");
var _versions = require("./versions");
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; }
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
// Copyright contributors to the kepler.gl project
var Schema = exports["default"] = /*#__PURE__*/function () {
function Schema() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$version = _ref.version,
version = _ref$version === void 0 ? _versions.CURRENT_VERSION : _ref$version,
_ref$key = _ref.key,
key = _ref$key === void 0 ? '' : _ref$key,
_ref$properties = _ref.properties,
properties = _ref$properties === void 0 ? null : _ref$properties;
(0, _classCallCheck2["default"])(this, Schema);
(0, _defineProperty2["default"])(this, "version", void 0);
(0, _defineProperty2["default"])(this, "key", void 0);
(0, _defineProperty2["default"])(this, "properties", void 0);
this.version = version;
this.properties = properties;
this.key = key;
}
return (0, _createClass2["default"])(Schema, [{
key: "loadPropertiesOrApplySchema",
value: function loadPropertiesOrApplySchema(node) {
var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var accumulator = arguments.length > 2 ? arguments[2] : undefined;
return this._getPropertyValueFromSchema('load', node, parents, accumulator);
}
}, {
key: "savePropertiesOrApplySchema",
value: function savePropertiesOrApplySchema(node) {
var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var accumulator = arguments.length > 2 ? arguments[2] : undefined;
return this._getPropertyValueFromSchema('save', node, parents, accumulator);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
}, {
key: "_getPropertyValueFromSchema",
value: function _getPropertyValueFromSchema(operation, node) {
var _this = this;
var parents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var accumulator = arguments.length > 3 ? arguments[3] : undefined;
var internal = "_".concat(operation);
return (0, _defineProperty2["default"])({}, this.key, this.properties ? Object.keys(this.properties).reduce(function (accu, key) {
return _objectSpread(_objectSpread({}, accu), key in node ?
// @ts-expect-error
_this.properties[key] ?
// if it's another schema
// @ts-expect-error
_this.properties[key][operation] ?
// call save or load
// @ts-expect-error
_this.properties[key][internal](node[key], [].concat((0, _toConsumableArray2["default"])(parents), [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();
// @ts-expect-error
return this.save.apply(this, arguments);
}
}, {
key: "save",
value: function save(node) {
var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var accumulator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return this.savePropertiesOrApplySchema(node, parents, accumulator);
}
}, {
key: "_load",
value: function _load() {
// @ts-expect-error
return this.load.apply(this, arguments);
}
}, {
key: "load",
value: function load(node) {
var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var accumulator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return this.loadPropertiesOrApplySchema(node, parents, accumulator);
}
}]);
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwicmVxdWlyZSIsIl92ZXJzaW9ucyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiU2NoZW1hIiwiZXhwb3J0cyIsIl9yZWYiLCJ1bmRlZmluZWQiLCJfcmVmJHZlcnNpb24iLCJ2ZXJzaW9uIiwiQ1VSUkVOVF9WRVJTSU9OIiwiX3JlZiRrZXkiLCJrZXkiLCJfcmVmJHByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9jcmVhdGVDbGFzczIiLCJ2YWx1ZSIsImxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYSIsIm5vZGUiLCJwYXJlbnRzIiwiYWNjdW11bGF0b3IiLCJfZ2V0UHJvcGVydHlWYWx1ZUZyb21TY2hlbWEiLCJzYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEiLCJvcGVyYXRpb24iLCJfdGhpcyIsImludGVybmFsIiwiY29uY2F0IiwicmVkdWNlIiwiYWNjdSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJfaXNDdXJyZW50VmVyc2lvbiIsIm91dGRhdGVkVmVyc2lvbkVycm9yIiwiQ29uc29sZSIsImVycm9yIiwiX3NhdmUiLCJzYXZlIiwiX2xvYWQiLCJsb2FkIl0sInNvdXJjZXMiOlsiLi4vc3JjL3NjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCB7Q1VSUkVOVF9WRVJTSU9OfSBmcm9tICcuL3ZlcnNpb25zJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NoZW1hIHtcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBrZXk6IHN0cmluZztcbiAgcHJvcGVydGllczpcbiAgICB8IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogbnVsbCB8IFNjaGVtYTtcbiAgICAgIH1cbiAgICB8IHN0cmluZ1tdXG4gICAgfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICB2ZXJzaW9uID0gQ1VSUkVOVF9WRVJTSU9OLFxuICAgIGtleSA9ICcnLFxuICAgIHByb3BlcnRpZXMgPSBudWxsXG4gIH06IHtcbiAgICB2ZXJzaW9uPzogc3RyaW5nO1xuICAgIGtleT86IHN0cmluZztcbiAgICBwcm9wZXJ0aWVzPzpcbiAgICAgIHwge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bGwgfCBTY2hlbWE7XG4gICAgICAgIH1cbiAgICAgIHwgc3RyaW5nW11cbiAgICAgIHwgbnVsbDtcbiAgfSA9IHt9KSB7XG4gICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMua2V5ID0ga2V5O1xuICB9XG5cbiAgbG9hZFByb3BlcnRpZXNPckFwcGx5U2NoZW1hKFxuICAgIG5vZGU6IGFueSxcbiAgICBwYXJlbnRzOiBhbnlbXSA9IFtdLFxuICAgIGFjY3VtdWxhdG9yPzogYW55XG4gICk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydHlWYWx1ZUZyb21TY2hlbWEoJ2xvYWQnLCBub2RlLCBwYXJlbnRzLCBhY2N1bXVsYXRvcik7XG4gIH1cblxuICBzYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEoXG4gICAgbm9kZTogYW55LFxuICAgIHBhcmVudHM6IG9iamVjdFtdID0gW10sXG4gICAgYWNjdW11bGF0b3I/OiBhbnlcbiAgKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0eVZhbHVlRnJvbVNjaGVtYSgnc2F2ZScsIG5vZGUsIHBhcmVudHMsIGFjY3VtdWxhdG9yKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgX2dldFByb3BlcnR5VmFsdWVGcm9tU2NoZW1hKG9wZXJhdGlvbiwgbm9kZTogYW55LCBwYXJlbnRzOiBvYmplY3RbXSA9IFtdLCBhY2N1bXVsYXRvcikge1xuICAgIGNvbnN0IGludGVybmFsID0gYF8ke29wZXJhdGlvbn1gO1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiB0aGlzLnByb3BlcnRpZXNcbiAgICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnRpZXMpLnJlZHVjZSgoYWNjdSwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICAuLi4oa2V5IGluIG5vZGVcbiAgICAgICAgICAgICAgICA/IC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydGllc1trZXldXG4gICAgICAgICAgICAgICAgICA/IC8vIGlmIGl0J3MgYW5vdGhlciBzY2hlbWFcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNba2V5XVtvcGVyYXRpb25dXG4gICAgICAgICAgICAgICAgICAgID8gLy8gY2FsbCBzYXZlIG9yIGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzW2tleV1baW50ZXJuYWxdKG5vZGVba2V5XSwgWy4uLnBhcmVudHMsIG5vZGVdLCBhY2N1KVxuICAgICAgICAgICAgICAgICAgICA6IHt9XG4gICAgICAgICAgICAgICAgICA6IHtba2V5XTogbm9kZVtrZXldfVxuICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sIHt9KVxuICAgICAgICA6IG5vZGVcbiAgICB9O1xuICB9XG5cbiAgX2lzQ3VycmVudFZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyc2lvbiA9PT0gQ1VSUkVOVF9WRVJTSU9OO1xuICB9XG5cbiAgb3V0ZGF0ZWRWZXJzaW9uRXJyb3IoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRWZXJzaW9uKCkpIHtcbiAgICAgIENvbnNvbGUuZXJyb3IoYCR7dGhpcy5rZXl9ICR7dGhpcy52ZXJzaW9ufSBpcyBvdXRkYXRlZC4gc2F2ZSBzaG91bGQgbm90IGJlIGNhbGxlZCBhbnltb3JlYCk7XG4gICAgfVxuICB9XG5cbiAgX3NhdmUoLi4uYXJncykge1xuICAgIC8vIG1ha2Ugc3VyZSBub3RoaW5nIGlzIHNhdmVkIHRvIGFuIG91dGRhdGVkIHZlcnNpb25cbiAgICB0aGlzLm91dGRhdGVkVmVyc2lvbkVycm9yKCk7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiB0aGlzLnNhdmUoLi4uYXJncyk7XG4gIH1cblxuICBzYXZlKG5vZGU6IGFueSwgcGFyZW50czogb2JqZWN0W10gPSBbXSwgYWNjdW11bGF0b3I6IGFueSA9IHt9KToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShub2RlLCBwYXJlbnRzLCBhY2N1bXVsYXRvcik7XG4gIH1cblxuICBfbG9hZCguLi5hcmdzKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiB0aGlzLmxvYWQoLi4uYXJncyk7XG4gIH1cblxuICBsb2FkKG5vZGU6IGFueSwgcGFyZW50czogb2JqZWN0W10gPSBbXSwgYWNjdW11bGF0b3I6IGFueSA9IHt9KToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB0aGlzLmxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShub2RlLCBwYXJlbnRzLCBhY2N1bXVsYXRvcik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFBMkMsU0FBQUUsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxD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
;