UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

91 lines (89 loc) 15.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.Effect = void 0; 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 _utils = require("@kepler.gl/utils"); var _commonUtils = require("@kepler.gl/common-utils"); var _constants = require("@kepler.gl/constants"); 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 Effect = exports.Effect = /*#__PURE__*/function () { function Effect() { var _POSTPROCESSING_EFFEC; var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _classCallCheck2["default"])(this, Effect); (0, _defineProperty2["default"])(this, "id", void 0); (0, _defineProperty2["default"])(this, "type", void 0); (0, _defineProperty2["default"])(this, "isEnabled", void 0); // effect specific parameters for a deck.gl effect (uniforms) (0, _defineProperty2["default"])(this, "parameters", void 0); // runtime props (0, _defineProperty2["default"])(this, "isConfigActive", void 0); (0, _defineProperty2["default"])(this, "isJsonEditorActive", void 0); (0, _defineProperty2["default"])(this, "deckEffect", void 0); (0, _defineProperty2["default"])(this, "_uiConfig", void 0); this.id = props.id || "e_".concat((0, _commonUtils.generateHashId)(6)); var _props = this.getDefaultProps(props); this.type = _props.type; this.isEnabled = _props.isEnabled; this.isConfigActive = _props.isConfigActive; this.isJsonEditorActive = _props.isJsonEditorActive; this._uiConfig = _constants.LIGHT_AND_SHADOW_EFFECT.type === this.type ? _constants.LIGHT_AND_SHADOW_EFFECT.parameters : ((_POSTPROCESSING_EFFEC = _constants.POSTPROCESSING_EFFECTS[this.type]) === null || _POSTPROCESSING_EFFEC === void 0 ? void 0 : _POSTPROCESSING_EFFEC.parameters) || []; this.parameters = (0, _utils.validateEffectParameters)(_props.parameters, this._uiConfig); this.deckEffect = null; this._initializeEffect(); } return (0, _createClass2["default"])(Effect, [{ key: "_initializeEffect", value: function _initializeEffect() { // implemented in subclasses } }, { key: "getDefaultProps", value: function getDefaultProps() { var _props$isEnabled, _props$isConfigActive, _props$isJsonEditorAc; var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return { id: props.id || "e_".concat((0, _commonUtils.generateHashId)(6)), type: props.type || _constants.DEFAULT_POST_PROCESSING_EFFECT_TYPE, isEnabled: (_props$isEnabled = props.isEnabled) !== null && _props$isEnabled !== void 0 ? _props$isEnabled : true, isConfigActive: (_props$isConfigActive = props.isConfigActive) !== null && _props$isConfigActive !== void 0 ? _props$isConfigActive : true, isJsonEditorActive: (_props$isJsonEditorAc = props.isJsonEditorActive) !== null && _props$isJsonEditorAc !== void 0 ? _props$isJsonEditorAc : false, parameters: _objectSpread({}, props.parameters) }; } }, { key: "setProps", value: function setProps(props) { var _props$id, _props$type, _props$isEnabled2, _props$isConfigActive2, _props$isJsonEditorAc2; this.id = (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : this.id; this.type = (_props$type = props.type) !== null && _props$type !== void 0 ? _props$type : this.type; this.isEnabled = (_props$isEnabled2 = props.isEnabled) !== null && _props$isEnabled2 !== void 0 ? _props$isEnabled2 : this.isEnabled; this.isConfigActive = (_props$isConfigActive2 = props.isConfigActive) !== null && _props$isConfigActive2 !== void 0 ? _props$isConfigActive2 : this.isConfigActive; this.isJsonEditorActive = (_props$isJsonEditorAc2 = props.isJsonEditorActive) !== null && _props$isJsonEditorAc2 !== void 0 ? _props$isJsonEditorAc2 : this.isJsonEditorActive; this.parameters = _objectSpread(_objectSpread({}, this.parameters), (0, _utils.validateEffectParameters)(props.parameters, this._uiConfig)); } }, { key: "isValidToSave", value: function isValidToSave() { return Boolean(this.type && this.id && this.deckEffect); } /** * Effect specific list of configurable parameters. * @returns All parameters are in preffered order. */ }, { key: "getParameterDescriptions", value: function getParameterDescriptions() { return this._uiConfig || []; } }]); }(); var _default = exports["default"] = Effect; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbHMiLCJyZXF1aXJlIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiRWZmZWN0IiwiZXhwb3J0cyIsIl9QT1NUUFJPQ0VTU0lOR19FRkZFQyIsInByb3BzIiwidW5kZWZpbmVkIiwiX2NsYXNzQ2FsbENoZWNrMiIsImlkIiwiY29uY2F0IiwiZ2VuZXJhdGVIYXNoSWQiLCJfcHJvcHMiLCJnZXREZWZhdWx0UHJvcHMiLCJ0eXBlIiwiaXNFbmFibGVkIiwiaXNDb25maWdBY3RpdmUiLCJpc0pzb25FZGl0b3JBY3RpdmUiLCJfdWlDb25maWciLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsInBhcmFtZXRlcnMiLCJQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTIiwidmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzIiwiZGVja0VmZmVjdCIsIl9pbml0aWFsaXplRWZmZWN0IiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiX3Byb3BzJGlzRW5hYmxlZCIsIl9wcm9wcyRpc0NvbmZpZ0FjdGl2ZSIsIl9wcm9wcyRpc0pzb25FZGl0b3JBYyIsIkRFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFIiwic2V0UHJvcHMiLCJfcHJvcHMkaWQiLCJfcHJvcHMkdHlwZSIsIl9wcm9wcyRpc0VuYWJsZWQyIiwiX3Byb3BzJGlzQ29uZmlnQWN0aXZlMiIsIl9wcm9wcyRpc0pzb25FZGl0b3JBYzIiLCJpc1ZhbGlkVG9TYXZlIiwiQm9vbGVhbiIsImdldFBhcmFtZXRlckRlc2NyaXB0aW9ucyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2VmZmVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge3ZhbGlkYXRlRWZmZWN0UGFyYW1ldGVyc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBFZmZlY3QgYXMgRWZmZWN0SW50ZXJmYWNlLFxuICBFZmZlY3RQcm9wcyxcbiAgRWZmZWN0UHJvcHNQYXJ0aWFsLFxuICBFZmZlY3RQYXJhbWV0ZXJEZXNjcmlwdGlvblxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFLFxuICBQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTLFxuICBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVFxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBFZmZlY3QgaW1wbGVtZW50cyBFZmZlY3RJbnRlcmZhY2Uge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGlzRW5hYmxlZDogYm9vbGVhbjtcbiAgLy8gZWZmZWN0IHNwZWNpZmljIHBhcmFtZXRlcnMgZm9yIGEgZGVjay5nbCBlZmZlY3QgKHVuaWZvcm1zKVxuICBwYXJhbWV0ZXJzOiB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgLy8gcnVudGltZSBwcm9wc1xuICBpc0NvbmZpZ0FjdGl2ZTogYm9vbGVhbjtcbiAgaXNKc29uRWRpdG9yQWN0aXZlOiBib29sZWFuO1xuICBkZWNrRWZmZWN0OiBhbnk7XG4gIF91aUNvbmZpZzogRWZmZWN0UGFyYW1ldGVyRGVzY3JpcHRpb25bXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRWZmZWN0UHJvcHNQYXJ0aWFsID0ge30pIHtcbiAgICB0aGlzLmlkID0gcHJvcHMuaWQgfHwgYGVfJHtnZW5lcmF0ZUhhc2hJZCg2KX1gO1xuXG4gICAgY29uc3QgX3Byb3BzID0gdGhpcy5nZXREZWZhdWx0UHJvcHMocHJvcHMpO1xuICAgIHRoaXMudHlwZSA9IF9wcm9wcy50eXBlO1xuICAgIHRoaXMuaXNFbmFibGVkID0gX3Byb3BzLmlzRW5hYmxlZDtcbiAgICB0aGlzLmlzQ29uZmlnQWN0aXZlID0gX3Byb3BzLmlzQ29uZmlnQWN0aXZlO1xuICAgIHRoaXMuaXNKc29uRWRpdG9yQWN0aXZlID0gX3Byb3BzLmlzSnNvbkVkaXRvckFjdGl2ZTtcblxuICAgIHRoaXMuX3VpQ29uZmlnID1cbiAgICAgIExJR0hUX0FORF9TSEFET1dfRUZGRUNULnR5cGUgPT09IHRoaXMudHlwZVxuICAgICAgICA/IExJR0hUX0FORF9TSEFET1dfRUZGRUNULnBhcmFtZXRlcnNcbiAgICAgICAgOiBQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTW3RoaXMudHlwZV0/LnBhcmFtZXRlcnMgfHwgW107XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzKF9wcm9wcy5wYXJhbWV0ZXJzLCB0aGlzLl91aUNvbmZpZyk7XG5cbiAgICB0aGlzLmRlY2tFZmZlY3QgPSBudWxsO1xuICAgIHRoaXMuX2luaXRpYWxpemVFZmZlY3QoKTtcbiAgfVxuXG4gIF9pbml0aWFsaXplRWZmZWN0KCkge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfVxuXG4gIGdldERlZmF1bHRQcm9wcyhwcm9wczogRWZmZWN0UHJvcHNQYXJ0aWFsID0ge30pOiBFZmZlY3RQcm9wcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBwcm9wcy5pZCB8fCBgZV8ke2dlbmVyYXRlSGFzaElkKDYpfWAsXG4gICAgICB0eXBlOiBwcm9wcy50eXBlIHx8IERFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFLFxuICAgICAgaXNFbmFibGVkOiBwcm9wcy5pc0VuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgIGlzQ29uZmlnQWN0aXZlOiBwcm9wcy5pc0NvbmZpZ0FjdGl2ZSA/PyB0cnVlLFxuICAgICAgaXNKc29uRWRpdG9yQWN0aXZlOiBwcm9wcy5pc0pzb25FZGl0b3JBY3RpdmUgPz8gZmFsc2UsXG4gICAgICBwYXJhbWV0ZXJzOiB7Li4ucHJvcHMucGFyYW1ldGVyc31cbiAgICB9O1xuICB9XG5cbiAgc2V0UHJvcHMocHJvcHM6IEVmZmVjdFByb3BzUGFydGlhbCkge1xuICAgIHRoaXMuaWQgPSBwcm9wcy5pZCA/PyB0aGlzLmlkO1xuICAgIHRoaXMudHlwZSA9IHByb3BzLnR5cGUgPz8gdGhpcy50eXBlO1xuICAgIHRoaXMuaXNFbmFibGVkID0gcHJvcHMuaXNFbmFibGVkID8/IHRoaXMuaXNFbmFibGVkO1xuICAgIHRoaXMuaXNDb25maWdBY3RpdmUgPSBwcm9wcy5pc0NvbmZpZ0FjdGl2ZSA/PyB0aGlzLmlzQ29uZmlnQWN0aXZlO1xuICAgIHRoaXMuaXNKc29uRWRpdG9yQWN0aXZlID0gcHJvcHMuaXNKc29uRWRpdG9yQWN0aXZlID8/IHRoaXMuaXNKc29uRWRpdG9yQWN0aXZlO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHtcbiAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgIC4uLnZhbGlkYXRlRWZmZWN0UGFyYW1ldGVycyhwcm9wcy5wYXJhbWV0ZXJzLCB0aGlzLl91aUNvbmZpZylcbiAgICB9O1xuICB9XG5cbiAgaXNWYWxpZFRvU2F2ZSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnR5cGUgJiYgdGhpcy5pZCAmJiB0aGlzLmRlY2tFZmZlY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBzcGVjaWZpYyBsaXN0IG9mIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyBBbGwgcGFyYW1ldGVycyBhcmUgaW4gcHJlZmZlcmVkIG9yZGVyLlxuICAgKi9cbiAgZ2V0UGFyYW1ldGVyRGVzY3JpcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl91aUNvbmZpZyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFZmZlY3Q7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFPQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFJOEIsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JB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