kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
113 lines (93 loc) • 10.2 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.updateProperty = exports.forwardTo = exports.actionFor = exports.unwrap = exports.isForwardAction = exports.wrapTo = exports.getActionForwardAddress = exports.ADDRESS_PREFIX = exports.FORWARD = undefined;
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends3 = require('babel-runtime/helpers/extends');
var _extends4 = _interopRequireDefault(_extends3);
var _curry = require('curry');
var _curry2 = _interopRequireDefault(_curry);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Copyright (c) 2018 Uber Technologies, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
var FORWARD = exports.FORWARD = '@redux-forward/FORWARD';
var ADDRESS_PREFIX = exports.ADDRESS_PREFIX = '@@KG_';
/*
* wrap an action into a forward action
* A forward action looks like this:
*
* {
* type: "@@kepler.gl/LAYER_CONFIG_CHANGE",
* payload: {
* type: '@@kepler.gl/LAYER_CONFIG_CHANGE',
* payload: {},
* meta: {
* // other meta,
* _id_: id
* }
* },
* meta: {
* forward: '@redux-forward/FORWARD',
* id: '@@KG_id'
* }
* };
*/
var getActionForwardAddress = exports.getActionForwardAddress = function getActionForwardAddress(id) {
return '' + ADDRESS_PREFIX + id.toUpperCase();
};
var wrapTo = exports.wrapTo = (0, _curry2.default)(function (id, action) {
return {
// keep original action.type
type: action.type,
// actual action
payload: (0, _extends4.default)({}, action, {
meta: (0, _extends4.default)({}, action.meta, {
_id_: id
})
}),
// add forward signature to meta
meta: (0, _extends4.default)({}, action.meta || {}, {
_forward_: FORWARD,
_addr_: getActionForwardAddress(id)
})
};
});
var isForwardAction = exports.isForwardAction = function isForwardAction(action) {
return action && action.meta && action.meta._forward_ === FORWARD;
};
var unwrap = exports.unwrap = function unwrap(action) {
return isForwardAction(action) ? unwrap(action.payload) : action;
};
// given a id to forward to, returns the action for that id
var actionFor = exports.actionFor = function actionFor(id, action) {
return isForwardAction(action) ? action.meta._addr_ === getActionForwardAddress(id) ? action.payload : {} : action;
};
// returns a new dispatch that wraps and forwards the actions with the given id
var forwardTo = exports.forwardTo = function forwardTo(id, dispatch) {
return function (action) {
return dispatch(wrapTo(id, action));
};
};
var updateProperty = exports.updateProperty = function updateProperty(state, id, value) {
return state[id] === value ? state : (0, _extends4.default)({}, state, (0, _defineProperty3.default)({}, id, value));
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL2FjdGlvbi13cmFwcGVyLmpzIl0sIm5hbWVzIjpbIkZPUldBUkQiLCJBRERSRVNTX1BSRUZJWCIsImdldEFjdGlvbkZvcndhcmRBZGRyZXNzIiwiaWQiLCJ0b1VwcGVyQ2FzZSIsIndyYXBUbyIsImFjdGlvbiIsInR5cGUiLCJwYXlsb2FkIiwibWV0YSIsIl9pZF8iLCJfZm9yd2FyZF8iLCJfYWRkcl8iLCJpc0ZvcndhcmRBY3Rpb24iLCJ1bndyYXAiLCJhY3Rpb25Gb3IiLCJmb3J3YXJkVG8iLCJkaXNwYXRjaCIsInVwZGF0ZVByb3BlcnR5Iiwic3RhdGUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBOzs7Ozs7QUF2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sSUFBTUEsNEJBQVUsd0JBQWhCO0FBQ0EsSUFBTUMsMENBQWlCLE9BQXZCOztBQUlQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQk8sSUFBTUMsNERBQTBCLFNBQTFCQSx1QkFBMEI7QUFBQSxjQUNsQ0QsY0FEa0MsR0FDakJFLEdBQUdDLFdBQUgsRUFEaUI7QUFBQSxDQUFoQzs7QUFHQSxJQUFNQywwQkFBUyxxQkFBTSxVQUFDRixFQUFELEVBQUtHLE1BQUw7QUFBQSxTQUFpQjtBQUMzQztBQUNBQyxVQUFNRCxPQUFPQyxJQUY4Qjs7QUFJM0M7QUFDQUMsd0NBQ0tGLE1BREw7QUFFRUcsdUNBQ0tILE9BQU9HLElBRFo7QUFFRUMsY0FBTVA7QUFGUjtBQUZGLE1BTDJDOztBQWEzQztBQUNBTSxxQ0FDTUgsT0FBT0csSUFBUCxJQUFlLEVBRHJCO0FBRUVFLGlCQUFXWCxPQUZiO0FBR0VZLGNBQVFWLHdCQUF3QkMsRUFBeEI7QUFIVjtBQWQyQyxHQUFqQjtBQUFBLENBQU4sQ0FBZjs7QUFxQkEsSUFBTVUsNENBQWtCLFNBQWxCQSxlQUFrQixTQUFVO0FBQ3ZDLFNBQU9QLFVBQVVBLE9BQU9HLElBQWpCLElBQXlCSCxPQUFPRyxJQUFQLENBQVlFLFNBQVosS0FBMEJYLE9BQTFEO0FBQ0QsQ0FGTTs7QUFJQSxJQUFNYywwQkFBUyxTQUFUQSxNQUFTO0FBQUEsU0FDcEJELGdCQUFnQlAsTUFBaEIsSUFBMEJRLE9BQU9SLE9BQU9FLE9BQWQsQ0FBMUIsR0FBbURGLE1BRC9CO0FBQUEsQ0FBZjs7QUFHUDtBQUNPLElBQU1TLGdDQUFZLFNBQVpBLFNBQVksQ0FBQ1osRUFBRCxFQUFLRyxNQUFMO0FBQUEsU0FDdkJPLGdCQUFnQlAsTUFBaEIsSUFDSUEsT0FBT0csSUFBUCxDQUFZRyxNQUFaLEtBQXVCVix3QkFBd0JDLEVBQXhCLENBQXZCLEdBQXFERyxPQUFPRSxPQUE1RCxHQUFzRSxFQUQxRSxHQUVJRixNQUhtQjtBQUFBLENBQWxCOztBQUtQO0FBQ08sSUFBTVUsZ0NBQVksU0FBWkEsU0FBWSxDQUFDYixFQUFELEVBQUtjLFFBQUw7QUFBQSxTQUFrQjtBQUFBLFdBQ3pDQSxTQUFTWixPQUFPRixFQUFQLEVBQVdHLE1BQVgsQ0FBVCxDQUR5QztBQUFBLEdBQWxCO0FBQUEsQ0FBbEI7O0FBR0EsSUFBTVksMENBQWlCLFNBQWpCQSxjQUFpQixDQUFDQyxLQUFELEVBQVFoQixFQUFSLEVBQVlpQixLQUFaO0FBQUEsU0FDNUJELE1BQU1oQixFQUFOLE1BQWNpQixLQUFkLEdBQ0lELEtBREosOEJBR1NBLEtBSFQsb0NBSU9oQixFQUpQLEVBSVlpQixLQUpaLEVBRDRCO0FBQUEsQ0FBdkIiLCJmaWxlIjoiYWN0aW9uLXdyYXBwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTggVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5leHBvcnQgY29uc3QgRk9SV0FSRCA9ICdAcmVkdXgtZm9yd2FyZC9GT1JXQVJEJztcbmV4cG9ydCBjb25zdCBBRERSRVNTX1BSRUZJWCA9ICdAQEtHXyc7XG5cbmltcG9ydCBjdXJyeSBmcm9tICdjdXJyeSc7XG5cbi8qXG4gKiB3cmFwIGFuIGFjdGlvbiBpbnRvIGEgZm9yd2FyZCBhY3Rpb25cbiAqICBBIGZvcndhcmQgYWN0aW9uIGxvb2tzIGxpa2UgdGhpczpcbiAqXG4gKiAge1xuICogICAgdHlwZTogXCJAQGtlcGxlci5nbC9MQVlFUl9DT05GSUdfQ0hBTkdFXCIsXG4gKiAgICBwYXlsb2FkOiB7XG4gKiAgICAgIHR5cGU6ICdAQGtlcGxlci5nbC9MQVlFUl9DT05GSUdfQ0hBTkdFJyxcbiAqICAgICAgcGF5bG9hZDoge30sXG4gKiAgICAgIG1ldGE6IHtcbiAqICAgICAgICAvLyBvdGhlciBtZXRhLFxuICogICAgICAgIF9pZF86IGlkXG4gKiAgICAgIH1cbiAqICAgIH0sXG4gKiAgICBtZXRhOiB7XG4gKiAgICAgIGZvcndhcmQ6ICdAcmVkdXgtZm9yd2FyZC9GT1JXQVJEJyxcbiAqICAgICAgaWQ6ICdAQEtHX2lkJ1xuICogICAgfVxuICogIH07XG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldEFjdGlvbkZvcndhcmRBZGRyZXNzID0gaWQgPT5cbiAgYCR7QUREUkVTU19QUkVGSVh9JHtpZC50b1VwcGVyQ2FzZSgpfWA7XG5cbmV4cG9ydCBjb25zdCB3cmFwVG8gPSBjdXJyeSgoaWQsIGFjdGlvbikgPT4gKHtcbiAgLy8ga2VlcCBvcmlnaW5hbCBhY3Rpb24udHlwZVxuICB0eXBlOiBhY3Rpb24udHlwZSxcblxuICAvLyBhY3R1YWwgYWN0aW9uXG4gIHBheWxvYWQ6IHtcbiAgICAuLi5hY3Rpb24sXG4gICAgbWV0YToge1xuICAgICAgLi4uYWN0aW9uLm1ldGEsXG4gICAgICBfaWRfOiBpZFxuICAgIH1cbiAgfSxcblxuICAvLyBhZGQgZm9yd2FyZCBzaWduYXR1cmUgdG8gbWV0YVxuICBtZXRhOiB7XG4gICAgLi4uKGFjdGlvbi5tZXRhIHx8IHt9KSxcbiAgICBfZm9yd2FyZF86IEZPUldBUkQsXG4gICAgX2FkZHJfOiBnZXRBY3Rpb25Gb3J3YXJkQWRkcmVzcyhpZClcbiAgfVxufSkpO1xuXG5leHBvcnQgY29uc3QgaXNGb3J3YXJkQWN0aW9uID0gYWN0aW9uID0+IHtcbiAgcmV0dXJuIGFjdGlvbiAmJiBhY3Rpb24ubWV0YSAmJiBhY3Rpb24ubWV0YS5fZm9yd2FyZF8gPT09IEZPUldBUkQ7XG59O1xuXG5leHBvcnQgY29uc3QgdW53cmFwID0gYWN0aW9uID0+XG4gIGlzRm9yd2FyZEFjdGlvbihhY3Rpb24pID8gdW53cmFwKGFjdGlvbi5wYXlsb2FkKSA6IGFjdGlvbjtcblxuLy8gZ2l2ZW4gYSBpZCB0byBmb3J3YXJkIHRvLCByZXR1cm5zIHRoZSBhY3Rpb24gZm9yIHRoYXQgaWRcbmV4cG9ydCBjb25zdCBhY3Rpb25Gb3IgPSAoaWQsIGFjdGlvbikgPT5cbiAgaXNGb3J3YXJkQWN0aW9uKGFjdGlvbilcbiAgICA/IGFjdGlvbi5tZXRhLl9hZGRyXyA9PT0gZ2V0QWN0aW9uRm9yd2FyZEFkZHJlc3MoaWQpID8gYWN0aW9uLnBheWxvYWQgOiB7fVxuICAgIDogYWN0aW9uO1xuXG4vLyByZXR1cm5zIGEgbmV3IGRpc3BhdGNoIHRoYXQgd3JhcHMgYW5kIGZvcndhcmRzIHRoZSBhY3Rpb25zIHdpdGggdGhlIGdpdmVuIGlkXG5leHBvcnQgY29uc3QgZm9yd2FyZFRvID0gKGlkLCBkaXNwYXRjaCkgPT4gYWN0aW9uID0+XG4gIGRpc3BhdGNoKHdyYXBUbyhpZCwgYWN0aW9uKSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQcm9wZXJ0eSA9IChzdGF0ZSwgaWQsIHZhbHVlKSA9PlxuICBzdGF0ZVtpZF0gPT09IHZhbHVlXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW2lkXTogdmFsdWVcbiAgICAgIH07XG4iXX0=
;