UNPKG

kepler.gl.geoiq

Version:

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

114 lines (87 loc) 13 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.injector = injector; exports.withState = withState; exports.errorMsg = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _react = _interopRequireDefault(require("react")); var _reactRedux = require("react-redux"); var _redux = require("redux"); var _propTypes = _interopRequireDefault(require("prop-types")); var _window = require("global/window"); 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 MissingComp = function MissingComp() { return _react["default"].createElement("div", null); }; var errorMsg = { noDep: function noDep(fac, parent) { return "".concat(fac.name, " is required as a dependency of ").concat(parent.name, ", ") + "but is not provided to injectComponents. It will not be rendered"; }, notFunc: '`factory and its replacment should be a function`' }; exports.errorMsg = errorMsg; function injector() { var map = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var cache = {}; // map<factory, factory -> ?> var get = function get(fac, parent) { var factory = map[fac]; // factory is not injected if (!factory) { _window.console.error(errorMsg.noDep(fac, parent)); return MissingComp; } var instances = cache[factory] || factory.apply(void 0, (0, _toConsumableArray2["default"])(factory.deps ? factory.deps.map(function (dep) { return get(dep, factory); }) : [])); cache[fac] = instances; return instances; }; // if you have two functions that happen to have the exactly same text // it will be override: 2018-02-05 return { provide: function provide(factory, replacement) { if (typeof factory !== 'function' || typeof replacement !== 'function') { _window.console.error(errorMsg.notFunc); return injector(map); } return injector(_objectSpread({}, map, (0, _defineProperty2["default"])({}, factory, replacement))); }, get: get }; } var identity = function identity(state) { return state; }; // Helper to add reducer state to custom component function withState(lenses) { var mapStateToProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity; var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return function (Component) { var WrappedComponent = function WrappedComponent(_ref, _ref2) { var state = _ref.state, props = (0, _objectWithoutProperties2["default"])(_ref, ["state"]); var selector = _ref2.selector, id = _ref2.id; return _react["default"].createElement(Component, lenses.reduce(function (totalState, lens) { return _objectSpread({}, totalState, {}, lens(selector(state))); }, props)); }; WrappedComponent.contextTypes = { selector: _propTypes["default"].func, id: _propTypes["default"].string }; return (0, _reactRedux.connect)(function (state) { return _objectSpread({}, mapStateToProps(state), { state: state }); }, function (dispatch) { return Object.keys(actions).reduce(function (accu, key) { return _objectSpread({}, accu, (0, _defineProperty2["default"])({}, key, (0, _redux.bindActionCreators)(actions[key], dispatch))); }, {}); })(WrappedComponent); }; } // Helpter to add actionCreator to custom component //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2luamVjdG9yLmpzIl0sIm5hbWVzIjpbIk1pc3NpbmdDb21wIiwiZXJyb3JNc2ciLCJub0RlcCIsImZhYyIsInBhcmVudCIsIm5hbWUiLCJub3RGdW5jIiwiaW5qZWN0b3IiLCJtYXAiLCJjYWNoZSIsImdldCIsImZhY3RvcnkiLCJDb25zb2xlIiwiZXJyb3IiLCJpbnN0YW5jZXMiLCJkZXBzIiwiZGVwIiwicHJvdmlkZSIsInJlcGxhY2VtZW50IiwiaWRlbnRpdHkiLCJzdGF0ZSIsIndpdGhTdGF0ZSIsImxlbnNlcyIsIm1hcFN0YXRlVG9Qcm9wcyIsImFjdGlvbnMiLCJDb21wb25lbnQiLCJXcmFwcGVkQ29tcG9uZW50IiwicHJvcHMiLCJzZWxlY3RvciIsImlkIiwicmVkdWNlIiwidG90YWxTdGF0ZSIsImxlbnMiLCJjb250ZXh0VHlwZXMiLCJQcm9wVHlwZXMiLCJmdW5jIiwic3RyaW5nIiwiZGlzcGF0Y2giLCJPYmplY3QiLCJrZXlzIiwiYWNjdSIsImtleSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFdBQVcsR0FBRyxTQUFkQSxXQUFjO0FBQUEsU0FBTSw0Q0FBTjtBQUFBLENBQXBCOztBQUNPLElBQU1DLFFBQVEsR0FBRztBQUN0QkMsRUFBQUEsS0FBSyxFQUFFLGVBQUNDLEdBQUQsRUFBTUMsTUFBTjtBQUFBLFdBQ0wsVUFBR0QsR0FBRyxDQUFDRSxJQUFQLDZDQUE4Q0QsTUFBTSxDQUFDQyxJQUFyRCw0RUFESztBQUFBLEdBRGU7QUFJdEJDLEVBQUFBLE9BQU8sRUFBRTtBQUphLENBQWpCOzs7QUFPQSxTQUFTQyxRQUFULEdBQTRCO0FBQUEsTUFBVkMsR0FBVSx1RUFBSixFQUFJO0FBQ2pDLE1BQU1DLEtBQUssR0FBRyxFQUFkLENBRGlDLENBQ2Y7O0FBQ2xCLE1BQU1DLEdBQUcsR0FBRyxTQUFOQSxHQUFNLENB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QXZCRDtBQXdCRCxDLENBRUQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTkgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge2JpbmRBY3Rpb25DcmVhdG9yc30gZnJvbSAncmVkdXgnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7Y29uc29sZSBhcyBDb25zb2xlfSBmcm9tICdnbG9iYWwvd2luZG93JztcblxuY29uc3QgTWlzc2luZ0NvbXAgPSAoKSA9PiA8ZGl2IC8+O1xuZXhwb3J0IGNvbnN0IGVycm9yTXNnID0ge1xuICBub0RlcDogKGZhYywgcGFyZW50KSA9PlxuICAgIGAke2ZhYy5uYW1lfSBpcyByZXF1aXJlZCBhcyBhIGRlcGVuZGVuY3kgb2YgJHtwYXJlbnQubmFtZX0sIGAgK1xuICAgIGBidXQgaXMgbm90IHByb3ZpZGVkIHRvIGluamVjdENvbXBvbmVudHMuIEl0IHdpbGwgbm90IGJlIHJlbmRlcmVkYCxcbiAgbm90RnVuYzogJ2BmYWN0b3J5IGFuZCBpdHMgcmVwbGFjbWVudCBzaG91bGQgYmUgYSBmdW5jdGlvbmAnXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0b3IobWFwID0ge30pIHtcbiAgY29uc3QgY2FjaGUgPSB7fTsgLy8gbWFwPGZhY3RvcnksIGZhY3RvcnkgLT4gPz5cbiAgY29uc3QgZ2V0ID0gKGZhYywgcGFyZW50KSA9PiB7XG4gICAgY29uc3QgZmFjdG9yeSA9IG1hcFtmYWNdO1xuICAgIC8vIGZhY3RvcnkgaXMgbm90IGluamVjdGVkXG4gICAgaWYgKCFmYWN0b3J5KSB7XG4gICAgICBDb25zb2xlLmVycm9yKGVycm9yTXNnLm5vRGVwKGZhYywgcGFyZW50KSk7XG4gICAgICByZXR1cm4gTWlzc2luZ0NvbXA7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VzID1cbiAgICAgIGNhY2hlW2ZhY3RvcnldIHx8XG4gICAgICBmYWN0b3J5KFxuICAgICAgICAuLi4oZmFjdG9yeS5kZXBzID8gZmFjdG9yeS5kZXBzLm1hcChkZXAgPT4gZ2V0KGRlcCwgZmFjdG9yeSkpIDogW10pXG4gICAgICApO1xuXG4gICAgY2FjaGVbZmFjXSA9IGluc3RhbmNlcztcbiAgICByZXR1cm4gaW5zdGFuY2VzO1xuICB9O1xuXG4gIC8vIGlmIHlvdSBoYXZlIHR3byBmdW5jdGlvbnMgdGhhdCBoYXBwZW4gdG8gaGF2ZSB0aGUgZXhhY3RseSBzYW1lIHRleHRcbiAgLy8gaXQgd2lsbCBiZSBvdmVycmlkZTogMjAxOC0wMi0wNVxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IChmYWN0b3J5LCByZXBsYWNlbWVudCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBmYWN0b3J5ICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiByZXBsYWNlbWVudCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBDb25zb2xlLmVycm9yKGVycm9yTXNnLm5vdEZ1bmMpO1xuICAgICAgICByZXR1cm4gaW5qZWN0b3IobWFwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmplY3Rvcih7Li4ubWFwLCBbZmFjdG9yeV06IHJlcGxhY2VtZW50fSk7XG4gICAgfSxcbiAgICBnZXRcbiAgfTtcbn1cblxuY29uc3QgaWRlbnRpdHkgPSBzdGF0ZSA9PiAoc3RhdGUpO1xuLy8gSGVscGVyIHRvIGFkZCByZWR1Y2VyIHN0YXRlIHRvIGN1c3RvbSBjb21wb25lbnRcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RhdGUobGVuc2VzLCBtYXBTdGF0ZVRvUHJvcHMgPSBpZGVudGl0eSwgYWN0aW9ucyA9IHt9KSB7XG4gIHJldHVybiAoQ29tcG9uZW50KSA9PiB7XG4gICAgY29uc3QgV3JhcHBlZENvbXBvbmVudCA9ICh7c3RhdGUsIC4uLnByb3BzfSwge3NlbGVjdG9yLCBpZH0pID0+IChcbiAgICAgIDxDb21wb25lbnRcbiAgICAgICAgey4uLmxlbnNlcy5yZWR1Y2UoXG4gICAgICAgICAgKHRvdGFsU3RhdGUsIGxlbnMpID0+ICh7XG4gICAgICAgICAgICAuLi50b3RhbFN0YXRlLFxuICAgICAgICAgICAgLi4ubGVucyhzZWxlY3RvcihzdGF0ZSkpXG4gICAgICAgICAgfSksXG4gICAgICAgICAgcHJvcHNcbiAgICAgICAgKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgICBXcmFwcGVkQ29tcG9uZW50LmNvbnRleHRUeXBlcyA9IHtcbiAgICAgIHNlbGVjdG9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfTtcbiAgICByZXR1cm4gY29ubmVjdChcbiAgICAgIHN0YXRlID0+ICh7Li4ubWFwU3RhdGVUb1Byb3BzKHN0YXRlKSwgc3RhdGV9KSxcbiAgICAgIGRpc3BhdGNoID0+IE9iamVjdC5rZXlzKGFjdGlvbnMpLnJlZHVjZSgoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogYmluZEFjdGlvbkNyZWF0b3JzKGFjdGlvbnNba2V5XSwgZGlzcGF0Y2gpXG4gICAgICB9KSwge30pXG4gICAgKShXcmFwcGVkQ29tcG9uZW50KTtcbiAgfVxufVxuXG4vLyBIZWxwdGVyIHRvIGFkZCBhY3Rpb25DcmVhdG9yIHRvIGN1c3RvbSBjb21wb25lbnRcbiJdfQ==