@kepler.gl/reducers 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/combined-updaters.d.ts +50 -0
  2. package/dist/combined-updaters.js +212 -0
  3. package/dist/composer-helpers.d.ts +21 -0
  4. package/dist/composer-helpers.js +133 -0
  5. package/dist/composers.d.ts +12 -0
  6. package/dist/composers.js +47 -0
  7. package/dist/core.d.ts +64 -0
  8. package/dist/core.js +149 -0
  9. package/dist/data-utils.d.ts +8 -0
  10. package/dist/data-utils.js +60 -0
  11. package/dist/export-utils.d.ts +21 -0
  12. package/dist/export-utils.js +124 -0
  13. package/dist/index.d.ts +36 -0
  14. package/dist/index.js +372 -0
  15. package/dist/interaction-utils.d.ts +35 -0
  16. package/dist/interaction-utils.js +149 -0
  17. package/dist/layer-utils.d.ts +66 -0
  18. package/dist/layer-utils.js +289 -0
  19. package/dist/map-state-updaters.d.ts +62 -0
  20. package/dist/map-state-updaters.js +250 -0
  21. package/dist/map-state.d.ts +3 -0
  22. package/dist/map-state.js +67 -0
  23. package/dist/map-style-updaters.d.ts +173 -0
  24. package/dist/map-style-updaters.js +538 -0
  25. package/dist/map-style.d.ts +4 -0
  26. package/dist/map-style.js +66 -0
  27. package/dist/middleware.d.ts +8 -0
  28. package/dist/middleware.js +46 -0
  29. package/dist/provider-state-updaters.d.ts +42 -0
  30. package/dist/provider-state-updaters.js +512 -0
  31. package/dist/provider-state.d.ts +4 -0
  32. package/dist/provider-state.js +66 -0
  33. package/dist/root.d.ts +31 -0
  34. package/dist/root.js +235 -0
  35. package/dist/ui-state-updaters.d.ts +355 -0
  36. package/dist/ui-state-updaters.js +866 -0
  37. package/dist/ui-state.d.ts +3 -0
  38. package/dist/ui-state.js +68 -0
  39. package/dist/vis-state-merger.d.ts +102 -0
  40. package/dist/vis-state-merger.js +635 -0
  41. package/dist/vis-state-selectors.d.ts +2 -0
  42. package/dist/vis-state-selectors.js +53 -0
  43. package/dist/vis-state-updaters.d.ts +419 -0
  44. package/dist/vis-state-updaters.js +2472 -0
  45. package/dist/vis-state.d.ts +3 -0
  46. package/dist/vis-state.js +66 -0
  47. package/package.json +83 -0
@@ -0,0 +1,50 @@
1
+ import { MapState, UiState, AddDataToMapPayload } from '@kepler.gl/types';
2
+ import { MapStyle } from './map-style-updaters';
3
+ import { ProviderState } from './provider-state-updaters';
4
+ import { loadFilesSuccessUpdaterAction } from '@kepler.gl/actions';
5
+ import { VisState } from '@kepler.gl/schemas';
6
+ export declare type KeplerGlState = {
7
+ visState: VisState;
8
+ mapState: MapState;
9
+ mapStyle: MapStyle;
10
+ uiState: UiState;
11
+ providerState: ProviderState;
12
+ };
13
+ export declare const isValidConfig: (config: any) => unknown;
14
+ export declare const defaultAddDataToMapOptions: {
15
+ centerMap: boolean;
16
+ keepExistingConfig: boolean;
17
+ autoCreateLayers: boolean;
18
+ };
19
+ /**
20
+ * Combine data and full configuration update in a single action
21
+ *
22
+ * @memberof combinedUpdaters
23
+ * @param {Object} state kepler.gl instance state, containing all subreducer state
24
+ * @param {Object} action
25
+ * @param {Object} action.payload `{datasets, options, config}`
26
+ * @param action.payload.datasets - ***required** datasets can be a dataset or an array of datasets
27
+ * Each dataset object needs to have `info` and `data` property.
28
+ * @param [action.payload.options] option object `{centerMap: true}`
29
+ * @param [action.payload.config] map config
30
+ * @param [action.payload.info] map info contains title and description
31
+ * @returns nextState
32
+ *
33
+ * @typedef {Object} Dataset
34
+ * @property info -info of a dataset
35
+ * @property info.id - id of this dataset. If config is defined, `id` should matches the `dataId` in config.
36
+ * @property info.label - A display name of this dataset
37
+ * @property data - ***required** The data object, in a tabular format with 2 properties `fields` and `rows`
38
+ * @property data.fields - ***required** Array of fields,
39
+ * @property data.fields.name - ***required** Name of the field,
40
+ * @property data.rows - ***required** Array of rows, in a tabular format with `fields` and `rows`
41
+ *
42
+ * @public
43
+ */
44
+ export declare const addDataToMapUpdater: (state: KeplerGlState, { payload }: {
45
+ payload: AddDataToMapPayload;
46
+ }) => KeplerGlState;
47
+ export declare const loadFilesSuccessUpdater: (state: KeplerGlState, action: loadFilesSuccessUpdaterAction) => KeplerGlState;
48
+ export declare const addDataToMapComposed: (state: KeplerGlState, { payload }: {
49
+ payload: AddDataToMapPayload;
50
+ }) => KeplerGlState;
@@ -0,0 +1,212 @@
1
+ // Copyright (c) 2022 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ "use strict";
22
+
23
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
24
+
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ exports.addDataToMapComposed = exports.loadFilesSuccessUpdater = exports.addDataToMapUpdater = exports.defaultAddDataToMapOptions = exports.isValidConfig = void 0;
29
+
30
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
+
32
+ var _uiStateUpdaters = require("./ui-state-updaters");
33
+
34
+ var _visStateUpdaters = require("./vis-state-updaters");
35
+
36
+ var _mapStateUpdaters = require("./map-state-updaters");
37
+
38
+ var _mapStyleUpdaters = require("./map-style-updaters");
39
+
40
+ var _processors = require("@kepler.gl/processors");
41
+
42
+ var _composerHelpers = require("./composer-helpers");
43
+
44
+ var _utils = require("@kepler.gl/utils");
45
+
46
+ var _dataUtils = require("./data-utils");
47
+
48
+ 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; }
49
+
50
+ 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; }
51
+
52
+ // compose action to apply result multiple reducers, with the output of one
53
+
54
+ /**
55
+ * Some actions will affect the entire kepler.lg instance state.
56
+ * The updaters for these actions is exported as `combinedUpdaters`. These updater take the entire instance state
57
+ * as the first argument. Read more about [Using updaters](../advanced-usage/using-updaters.md)
58
+ * @public
59
+ * @example
60
+ *
61
+ * import keplerGlReducer, {combinedUpdaters} from 'kepler.gl/reducers';
62
+ * // Root Reducer
63
+ * const reducers = combineReducers({
64
+ * keplerGl: keplerGlReducer,
65
+ * app: appReducer
66
+ * });
67
+ *
68
+ * const composedReducer = (state, action) => {
69
+ * switch (action.type) {
70
+ * // add data to map after receiving data from remote sources
71
+ * case 'LOAD_REMOTE_RESOURCE_SUCCESS':
72
+ * return {
73
+ * ...state,
74
+ * keplerGl: {
75
+ * ...state.keplerGl,
76
+ * // pass in kepler.gl instance state to combinedUpdaters
77
+ * map: combinedUpdaters.addDataToMapUpdater(
78
+ * state.keplerGl.map,
79
+ * {
80
+ * payload: {
81
+ * datasets: action.datasets,
82
+ * options: {readOnly: true},
83
+ * config: action.config
84
+ * }
85
+ * }
86
+ * )
87
+ * }
88
+ * };
89
+ * }
90
+ * return reducers(state, action);
91
+ * };
92
+ *
93
+ * export default composedReducer;
94
+ */
95
+
96
+ /* eslint-disable no-unused-vars */
97
+ // @ts-ignore
98
+ var combinedUpdaters = null;
99
+ /* eslint-enable no-unused-vars */
100
+
101
+ var isValidConfig = function isValidConfig(config) {
102
+ return (0, _utils.isPlainObject)(config) && (0, _utils.isPlainObject)(config.config) && config.version;
103
+ };
104
+
105
+ exports.isValidConfig = isValidConfig;
106
+ var defaultAddDataToMapOptions = {
107
+ centerMap: true,
108
+ keepExistingConfig: false,
109
+ autoCreateLayers: true
110
+ };
111
+ /**
112
+ * Combine data and full configuration update in a single action
113
+ *
114
+ * @memberof combinedUpdaters
115
+ * @param {Object} state kepler.gl instance state, containing all subreducer state
116
+ * @param {Object} action
117
+ * @param {Object} action.payload `{datasets, options, config}`
118
+ * @param action.payload.datasets - ***required** datasets can be a dataset or an array of datasets
119
+ * Each dataset object needs to have `info` and `data` property.
120
+ * @param [action.payload.options] option object `{centerMap: true}`
121
+ * @param [action.payload.config] map config
122
+ * @param [action.payload.info] map info contains title and description
123
+ * @returns nextState
124
+ *
125
+ * @typedef {Object} Dataset
126
+ * @property info -info of a dataset
127
+ * @property info.id - id of this dataset. If config is defined, `id` should matches the `dataId` in config.
128
+ * @property info.label - A display name of this dataset
129
+ * @property data - ***required** The data object, in a tabular format with 2 properties `fields` and `rows`
130
+ * @property data.fields - ***required** Array of fields,
131
+ * @property data.fields.name - ***required** Name of the field,
132
+ * @property data.rows - ***required** Array of rows, in a tabular format with `fields` and `rows`
133
+ *
134
+ * @public
135
+ */
136
+
137
+ exports.defaultAddDataToMapOptions = defaultAddDataToMapOptions;
138
+
139
+ var addDataToMapUpdater = function addDataToMapUpdater(state, _ref) {
140
+ var payload = _ref.payload;
141
+ var datasets = payload.datasets,
142
+ config = payload.config,
143
+ info = payload.info;
144
+
145
+ var options = _objectSpread(_objectSpread({}, defaultAddDataToMapOptions), payload.options); // @ts-expect-error
146
+
147
+
148
+ var parsedConfig = config;
149
+
150
+ if (isValidConfig(config)) {
151
+ // if passed in saved config
152
+ // @ts-expect-error
153
+ parsedConfig = state.visState.schema.parseSavedConfig(config);
154
+ }
155
+
156
+ var oldLayers = state.visState.layers;
157
+
158
+ var filterNewlyAddedLayers = function filterNewlyAddedLayers(layers) {
159
+ return layers.filter(function (nl) {
160
+ return !oldLayers.find(function (ol) {
161
+ return ol === nl;
162
+ });
163
+ });
164
+ }; // Returns undefined if not found, to make typescript happy
165
+
166
+
167
+ var findMapBoundsIfCentered = function findMapBoundsIfCentered(layers) {
168
+ var bounds = options.centerMap && (0, _dataUtils.findMapBounds)(layers);
169
+ return bounds ? bounds : undefined;
170
+ };
171
+
172
+ return (0, _composerHelpers.compose_)([(0, _composerHelpers.pick_)('visState')((0, _composerHelpers.apply_)(_visStateUpdaters.updateVisDataUpdater, {
173
+ datasets: datasets,
174
+ options: options,
175
+ config: parsedConfig
176
+ })), (0, _composerHelpers.if_)(Boolean(info), (0, _composerHelpers.pick_)('visState')((0, _composerHelpers.apply_)(_visStateUpdaters.setMapInfoUpdater, {
177
+ info: info
178
+ }))), (0, _composerHelpers.with_)(function (_ref2) {
179
+ var visState = _ref2.visState;
180
+ return (0, _composerHelpers.pick_)('mapState')((0, _composerHelpers.apply_)(_mapStateUpdaters.receiveMapConfigUpdater, (0, _composerHelpers.payload_)({
181
+ config: parsedConfig,
182
+ options: options,
183
+ bounds: findMapBoundsIfCentered(filterNewlyAddedLayers(visState.layers))
184
+ })));
185
+ }), (0, _composerHelpers.pick_)('mapStyle')((0, _composerHelpers.apply_)(_mapStyleUpdaters.receiveMapConfigUpdater, (0, _composerHelpers.payload_)({
186
+ config: parsedConfig,
187
+ options: options
188
+ }))), (0, _composerHelpers.pick_)('uiState')((0, _composerHelpers.apply_)(_uiStateUpdaters.loadFilesSuccessUpdater, (0, _composerHelpers.payload_)(null))), (0, _composerHelpers.pick_)('uiState')((0, _composerHelpers.apply_)(_uiStateUpdaters.toggleModalUpdater, (0, _composerHelpers.payload_)(null))), (0, _composerHelpers.pick_)('uiState')((0, _composerHelpers.merge_)(options.hasOwnProperty('readOnly') ? {
189
+ readOnly: options.readOnly
190
+ } : {}))])(state);
191
+ };
192
+
193
+ exports.addDataToMapUpdater = addDataToMapUpdater;
194
+
195
+ var loadFilesSuccessUpdater = function loadFilesSuccessUpdater(state, action) {
196
+ // still more to load
197
+ var payloads = (0, _processors.filesToDataPayload)(action.result);
198
+ var nextState = (0, _composerHelpers.compose_)([(0, _composerHelpers.pick_)('visState')((0, _composerHelpers.merge_)({
199
+ fileLoading: false,
200
+ fileLoadingProgress: {}
201
+ }))])(state); // make multiple add data to map calls
202
+
203
+ var stateWithData = (0, _composerHelpers.compose_)(payloads.map(function (p) {
204
+ return (0, _composerHelpers.apply_)(addDataToMapUpdater, (0, _composerHelpers.payload_)(p));
205
+ }))(nextState);
206
+ return stateWithData;
207
+ };
208
+
209
+ exports.loadFilesSuccessUpdater = loadFilesSuccessUpdater;
210
+ var addDataToMapComposed = addDataToMapUpdater;
211
+ exports.addDataToMapComposed = addDataToMapComposed;
212
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21iaW5lZC11cGRhdGVycy50cyJdLCJuYW1lcyI6WyJjb21iaW5lZFVwZGF0ZXJzIiwiaXNWYWxpZENvbmZpZyIsImNvbmZpZyIsInZlcnNpb24iLCJkZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyIsImNlbnRlck1hcCIsImtlZXBFeGlzdGluZ0NvbmZpZyIsImF1dG9DcmVhdGVMYXllcnMiLCJhZGREYXRhVG9NYXBVcGRhdGVyIiwic3RhdGUiLCJwYXlsb2FkIiwiZGF0YXNldHMiLCJpbmZvIiwib3B0aW9ucyIsInBhcnNlZENvbmZpZyIsInZpc1N0YXRlIiwic2NoZW1hIiwicGFyc2VTYXZlZENvbmZpZyIsIm9sZExheWVycyIsImxheWVycyIsImZpbHRlck5ld2x5QWRkZWRMYXllcnMiLCJmaWx0ZXIiLCJubCIsImZpbmQiLCJvbCIsImZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkIiwiYm91bmRzIiwidW5kZWZpbmVkIiwidmlzU3RhdGVVcGRhdGVWaXNEYXRhVXBkYXRlciIsIkJvb2xlYW4iLCJzZXRNYXBJbmZvVXBkYXRlciIsInN0YXRlTWFwQ29uZmlnVXBkYXRlciIsInN0eWxlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInRvZ2dsZU1vZGFsVXBkYXRlciIsImhhc093blByb3BlcnR5IiwicmVhZE9ubHkiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsImFjdGlvbiIsInBheWxvYWRzIiwicmVzdWx0IiwibmV4dFN0YXRlIiwiZmlsZUxvYWRpbmciLCJmaWxlTG9hZGluZ1Byb2dyZXNzIiwic3RhdGVXaXRoRGF0YSIsIm1hcCIsInAiLCJhZGREYXRhVG9NYXBDb21wb3NlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFvQkE7O0FBSUE7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBT0E7O0FBQ0E7Ozs7OztBQVVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QyxJQUFBQSxXQUFXLEVBQUUsS0FEUjtBQUVMQyxJQUFBQSxtQkFBbUIsRUFBRTtBQUZoQixHQUFQLENBREYsQ0FEeUIsQ0FBVCxFQU9mbEMsS0FQZSxDQUFsQixDQUhrQixDQVdsQjs7QUFDQSxNQUFNbUMsYUFBYSxHQUFHLCtCQUFTTCxRQUFRLENBQUNNLEdBQVQsQ0FBYSxVQUFBQyxDQUFDO0FBQUEsV0FBSSw2QkFBT3RDLG1CQUFQLEVBQTRCLCtCQUFTc0MsQ0FBVCxDQUE1QixDQUFKO0FBQUEsR0FBZCxDQUFULEVBQ3BCTCxTQURvQixDQUF0QjtBQUdBLFNBQU9HLGFBQVA7QUFDRCxDQW5CTTs7O0FBcUJBLElBQU1HLG9CQUFvQixHQUFHdkMsbUJBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtcbiAgdG9nZ2xlTW9kYWxVcGRhdGVyLFxuICBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciBhcyB1aVN0YXRlTG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXJcbn0gZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICB1cGRhdGVWaXNEYXRhVXBkYXRlciBhcyB2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLFxuICBzZXRNYXBJbmZvVXBkYXRlclxufSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge3JlY2VpdmVNYXBDb25maWdVcGRhdGVyIGFzIHN0YXRlTWFwQ29uZmlnVXBkYXRlcn0gZnJvbSAnLi9tYXAtc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdHlsZU1hcENvbmZpZ1VwZGF0ZXJ9IGZyb20gJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJztcbmltcG9ydCB7ZmlsZXNUb0RhdGFQYXlsb2FkfSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtwYXlsb2FkXywgYXBwbHlfLCB3aXRoXywgaWZfLCBjb21wb3NlXywgbWVyZ2VfLCBwaWNrX30gZnJvbSAnLi9jb21wb3Nlci1oZWxwZXJzJztcbmltcG9ydCB7TWFwU3RhdGUsIFVpU3RhdGUsIEFkZERhdGFUb01hcFBheWxvYWQsIFBhcnNlZENvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge01hcFN0eWxlfSBmcm9tICcuL21hcC1zdHlsZS11cGRhdGVycyc7XG5pbXBvcnQge1Byb3ZpZGVyU3RhdGV9IGZyb20gJy4vcHJvdmlkZXItc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtmaW5kTWFwQm91bmRzfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBLZXBsZXJHbFN0YXRlID0ge1xuICB2aXNTdGF0ZTogVmlzU3RhdGU7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbiAgbWFwU3R5bGU6IE1hcFN0eWxlO1xuICB1aVN0YXRlOiBVaVN0YXRlO1xuICBwcm92aWRlclN0YXRlOiBQcm92aWRlclN0YXRlO1xufTtcblxuLy8gY29tcG9zZSBhY3Rpb24gdG8gYXBwbHkgcmVzdWx0IG11bHRpcGxlIHJlZHVjZXJzLCB3aXRoIHRoZSBvdXRwdXQgb2Ygb25lXG5cbi8qKlxuICogU29tZSBhY3Rpb25zIHdpbGwgYWZmZWN0IHRoZSBlbnRpcmUga2VwbGVyLmxnIGluc3RhbmNlIHN0YXRlLlxuICogVGhlIHVwZGF0ZXJzIGZvciB0aGVzZSBhY3Rpb25zIGlzIGV4cG9ydGVkIGFzIGBjb21iaW5lZFVwZGF0ZXJzYC4gVGhlc2UgdXBkYXRlciB0YWtlIHRoZSBlbnRpcmUgaW5zdGFuY2Ugc3RhdGVcbiAqIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHtjb21iaW5lZFVwZGF0ZXJzfSBmcm9tICdrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gYWRkIGRhdGEgdG8gbWFwIGFmdGVyIHJlY2VpdmluZyBkYXRhIGZyb20gcmVtb3RlIHNvdXJjZXNcbiAqICAgIGNhc2UgJ0xPQURfUkVNT1RFX1JFU09VUkNFX1NVQ0NFU1MnOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIC8vIHBhc3MgaW4ga2VwbGVyLmdsIGluc3RhbmNlIHN0YXRlIHRvIGNvbWJpbmVkVXBkYXRlcnNcbiAqICAgICAgICAgIG1hcDogIGNvbWJpbmVkVXBkYXRlcnMuYWRkRGF0YVRvTWFwVXBkYXRlcihcbiAqICAgICAgICAgICBzdGF0ZS5rZXBsZXJHbC5tYXAsXG4gKiAgICAgICAgICAge1xuICogICAgICAgICAgICAgcGF5bG9hZDoge1xuICogICAgICAgICAgICAgICBkYXRhc2V0czogYWN0aW9uLmRhdGFzZXRzLFxuICogICAgICAgICAgICAgICBvcHRpb25zOiB7cmVhZE9ubHk6IHRydWV9LFxuICogICAgICAgICAgICAgICBjb25maWc6IGFjdGlvbi5jb25maWdcbiAqICAgICAgICAgICAgICB9XG4gKiAgICAgICAgICAgIH1cbiAqICAgICAgICAgIClcbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRDb25maWcgPSBjb25maWcgPT5cbiAgaXNQbGFpbk9iamVjdChjb25maWcpICYmIGlzUGxhaW5PYmplY3QoY29uZmlnLmNvbmZpZykgJiYgY29uZmlnLnZlcnNpb247XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyA9IHtcbiAgY2VudGVyTWFwOiB0cnVlLFxuICBrZWVwRXhpc3RpbmdDb25maWc6IGZhbHNlLFxuICBhdXRvQ3JlYXRlTGF5ZXJzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZX1gXG4gKiBAcGFyYW0gW2FjdGlvbi5wYXlsb2FkLmNvbmZpZ10gbWFwIGNvbmZpZ1xuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5pbmZvXSBtYXAgaW5mbyBjb250YWlucyB0aXRsZSBhbmQgZGVzY3JpcHRpb25cbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuICogQHByb3BlcnR5IGluZm8uaWQgLSBpZCBvZiB0aGlzIGRhdGFzZXQuIElmIGNvbmZpZyBpcyBkZWZpbmVkLCBgaWRgIHNob3VsZCBtYXRjaGVzIHRoZSBgZGF0YUlkYCBpbiBjb25maWcuXG4gKiBAcHJvcGVydHkgaW5mby5sYWJlbCAtIEEgZGlzcGxheSBuYW1lIG9mIHRoaXMgZGF0YXNldFxuICogQHByb3BlcnR5IGRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIGZpZWxkcyxcbiAqIEBwcm9wZXJ0eSBkYXRhLmZpZWxkcy5uYW1lIC0gKioqcmVxdWlyZWQqKiBOYW1lIG9mIHRoZSBmaWVsZCxcbiAqIEBwcm9wZXJ0eSBkYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkRGF0YVRvTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IEFkZERhdGFUb01hcFBheWxvYWR9XG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge2RhdGFzZXRzLCBjb25maWcsIGluZm99ID0gcGF5bG9hZDtcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIC4uLmRlZmF1bHRBZGREYXRhVG9NYXBPcHRpb25zLFxuICAgIC4uLnBheWxvYWQub3B0aW9uc1xuICB9O1xuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgbGV0IHBhcnNlZENvbmZpZzogUGFyc2VkQ29uZmlnID0gY29uZmlnO1xuXG4gIGlmIChpc1ZhbGlkQ29uZmlnKGNvbmZpZykpIHtcbiAgICAvLyBpZiBwYXNzZWQgaW4gc2F2ZWQgY29uZmlnXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBhcnNlZENvbmZpZyA9IHN0YXRlLnZpc1N0YXRlLnNjaGVtYS5wYXJzZVNhdmVkQ29uZmlnKGNvbmZpZyk7XG4gIH1cbiAgY29uc3Qgb2xkTGF5ZXJzID0gc3RhdGUudmlzU3RhdGUubGF5ZXJzO1xuICBjb25zdCBmaWx0ZXJOZXdseUFkZGVkTGF5ZXJzID0gKGxheWVyczogTGF5ZXJbXSkgPT5cbiAgICBsYXllcnMuZmlsdGVyKG5sID0+ICFvbGRMYXllcnMuZmluZChvbCA9PiBvbCA9PT0gbmwpKTtcblxuICAvLyBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgZm91bmQsIHRvIG1ha2UgdHlwZXNjcmlwdCBoYXBweVxuICBjb25zdCBmaW5kTWFwQm91bmRzSWZDZW50ZXJlZCA9IChsYXllcnM6IExheWVyW10pID0+IHtcbiAgICBjb25zdCBib3VuZHMgPSBvcHRpb25zLmNlbnRlck1hcCAmJiBmaW5kTWFwQm91bmRzKGxheWVycyk7XG4gICAgcmV0dXJuIGJvdW5kcyA/IGJvdW5kcyA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgIHBpY2tfKCd2aXNTdGF0ZScpKFxuICAgICAgYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHZpc1N0YXRlVXBkYXRlVmlzRGF0YVVwZGF0ZXIsIHtcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnXG4gICAgICB9KVxuICAgICksXG5cbiAgICBpZl8oXG4gICAgICBCb29sZWFuKGluZm8pLFxuICAgICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55PihzZXRNYXBJbmZvVXBkYXRlciwge2luZm99KVxuICAgICAgKVxuICAgICksXG5cbiAgICB3aXRoXygoe3Zpc1N0YXRlfSkgPT5cbiAgICAgIHBpY2tfKCdtYXBTdGF0ZScpKFxuICAgICAgICBhcHBseV8oXG4gICAgICAgICAgc3RhdGVNYXBDb25maWdVcGRhdGVyLFxuICAgICAgICAgIHBheWxvYWRfKHtcbiAgICAgICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGJvdW5kczogZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQoZmlsdGVyTmV3bHlBZGRlZExheWVycyh2aXNTdGF0ZS5sYXllcnMpKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHBpY2tfKCdtYXBTdHlsZScpKGFwcGx5XyhzdHlsZU1hcENvbmZpZ1VwZGF0ZXIsIHBheWxvYWRfKHtjb25maWc6IHBhcnNlZENvbmZpZywgb3B0aW9uc30pKSksXG4gICAgcGlja18oJ3VpU3RhdGUnKShhcHBseV8odWlTdGF0ZUxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyLCBwYXlsb2FkXyhudWxsKSkpLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKG1lcmdlXyhvcHRpb25zLmhhc093blByb3BlcnR5KCdyZWFkT25seScpID8ge3JlYWRPbmx5OiBvcHRpb25zLnJlYWRPbmx5fSA6IHt9KSlcbiAgXSkoc3RhdGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIC8vIHN0aWxsIG1vcmUgdG8gbG9hZFxuICBjb25zdCBwYXlsb2FkcyA9IGZpbGVzVG9EYXRhUGF5bG9hZChhY3Rpb24ucmVzdWx0KTtcbiAgY29uc3QgbmV4dFN0YXRlID0gY29tcG9zZV8oW1xuICAgIHBpY2tfKCd2aXNTdGF0ZScpKFxuICAgICAgbWVyZ2VfKHtcbiAgICAgICAgZmlsZUxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBmaWxlTG9hZGluZ1Byb2dyZXNzOiB7fVxuICAgICAgfSlcbiAgICApXG4gIF0pKHN0YXRlKTtcbiAgLy8gbWFrZSBtdWx0aXBsZSBhZGQgZGF0YSB0byBtYXAgY2FsbHNcbiAgY29uc3Qgc3RhdGVXaXRoRGF0YSA9IGNvbXBvc2VfKHBheWxvYWRzLm1hcChwID0+IGFwcGx5XyhhZGREYXRhVG9NYXBVcGRhdGVyLCBwYXlsb2FkXyhwKSkpKShcbiAgICBuZXh0U3RhdGVcbiAgKTtcbiAgcmV0dXJuIHN0YXRlV2l0aERhdGEgYXMgS2VwbGVyR2xTdGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGREYXRhVG9NYXBDb21wb3NlZCA9IGFkZERhdGFUb01hcFVwZGF0ZXI7XG4iXX0=
@@ -0,0 +1,21 @@
1
+ /** Returns a function that logs a value with a given message */
2
+ export declare function log(text: string): (value: any) => void;
3
+ /** Wraps a value in an object and stores it the `payload` field */
4
+ export declare function payload_<P>(payload: P): {
5
+ payload: P;
6
+ };
7
+ /** Wraps a value in an object and stores it the `payload` field */
8
+ export declare function apply_<State, P>(updater: (state: State, nextPayload: P) => State, payload: P): (state: State) => State;
9
+ export declare function with_<State>(fn: (state: State) => (nextState: State) => State): (state: State) => State;
10
+ export declare function if_<State>(pred: boolean, fn: (state: State) => State): (state: State) => State;
11
+ export declare function compose_<State>(fns: Array<(s: State) => State>): (s: State) => State;
12
+ /** Returns a reducer function that merges props with state */
13
+ export declare function merge_<Props>(obj: Props): <State>(state: State) => State;
14
+ export declare function pick_<Prop extends string>(prop: Prop): <Value>(fn: (p: Value) => Value) => <State extends Record<Prop, Value>>(state: State) => State;
15
+ export declare function swap_<X extends {
16
+ id: string;
17
+ }>(item: X): (arr: X[]) => X[];
18
+ export declare function findById<X extends {
19
+ id: string;
20
+ }>(id: string): (arr: X[]) => X | undefined;
21
+ export declare function map_<X>(fn: (state: X) => X): (arr: X[]) => X[];
@@ -0,0 +1,133 @@
1
+ // Copyright (c) 2022 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ "use strict";
22
+
23
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
24
+
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ exports.log = log;
29
+ exports.payload_ = payload_;
30
+ exports.apply_ = apply_;
31
+ exports.with_ = with_;
32
+ exports.if_ = if_;
33
+ exports.compose_ = compose_;
34
+ exports.merge_ = merge_;
35
+ exports.pick_ = pick_;
36
+ exports.swap_ = swap_;
37
+ exports.findById = findById;
38
+ exports.map_ = map_;
39
+
40
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
41
+
42
+ var _console = _interopRequireDefault(require("global/console"));
43
+
44
+ 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; }
45
+
46
+ 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; }
47
+
48
+ var identity = function identity(state) {
49
+ return state;
50
+ };
51
+ /** Returns a function that logs a value with a given message */
52
+
53
+
54
+ function log(text) {
55
+ return function (value) {
56
+ return _console["default"].log(text, value);
57
+ };
58
+ }
59
+ /** Wraps a value in an object and stores it the `payload` field */
60
+
61
+
62
+ function payload_(payload) {
63
+ return {
64
+ payload: payload
65
+ };
66
+ }
67
+ /** Wraps a value in an object and stores it the `payload` field */
68
+
69
+
70
+ function apply_(updater, payload) {
71
+ return function (state) {
72
+ return updater(state, payload);
73
+ };
74
+ }
75
+
76
+ function with_(fn) {
77
+ return function (state) {
78
+ return fn(state)(state);
79
+ };
80
+ }
81
+
82
+ function if_(pred, fn) {
83
+ return pred ? fn : identity;
84
+ }
85
+
86
+ function compose_(fns) {
87
+ return function (state) {
88
+ return fns.reduce(function (state2, fn) {
89
+ return fn(state2);
90
+ }, state);
91
+ };
92
+ }
93
+ /** Returns a reducer function that merges props with state */
94
+
95
+
96
+ function merge_(obj) {
97
+ return function (state) {
98
+ return _objectSpread(_objectSpread({}, state), obj);
99
+ };
100
+ }
101
+
102
+ function pick_(prop) {
103
+ return function (fn) {
104
+ return function (state) {
105
+ return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2["default"])({}, prop, fn(state[prop])));
106
+ };
107
+ };
108
+ }
109
+
110
+ function swap_(item) {
111
+ return function (arr) {
112
+ return arr.map(function (a) {
113
+ return a.id === item.id ? item : a;
114
+ });
115
+ };
116
+ }
117
+
118
+ function findById(id) {
119
+ return function (arr) {
120
+ return arr.find(function (a) {
121
+ return a.id === id;
122
+ });
123
+ };
124
+ }
125
+
126
+ function map_(fn) {
127
+ return function (arr) {
128
+ return arr.map(function (e) {
129
+ return fn(e);
130
+ });
131
+ };
132
+ }
133
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb3Nlci1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbImlkZW50aXR5Iiwic3RhdGUiLCJsb2ciLCJ0ZXh0IiwidmFsdWUiLCJDb25zb2xlIiwicGF5bG9hZF8iLCJwYXlsb2FkIiwiYXBwbHlfIiwidXBkYXRlciIsIndpdGhfIiwiZm4iLCJpZl8iLCJwcmVkIiwiY29tcG9zZV8iLCJmbnMiLCJyZWR1Y2UiLCJzdGF0ZTIiLCJtZXJnZV8iLCJvYmoiLCJwaWNrXyIsInByb3AiLCJzd2FwXyIsIml0ZW0iLCJhcnIiLCJtYXAiLCJhIiwiaWQiLCJmaW5kQnlJZCIsImZpbmQiLCJtYXBfIiwiZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOzs7Ozs7QUFFQSxJQUFNQSxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSjtBQUFBLENBQXRCO0FBRUE7OztBQUNPLFNBQVNDLEdBQVQsQ0FBYUMsSUFBYixFQUFpRDtBQUN0RCxTQUFPLFVBQUFDLEtBQUs7QUFBQSxXQUFJQyxvQkFBUUgsR0FBUixDQUFZQyxJQUFaLEVBQWtCQyxLQUFsQixDQUFKO0FBQUEsR0FBWjtBQUNEO0FBQ0Q7OztBQUNPLFNBQVNFLFFBQVQsQ0FBcUJDLE9BQXJCLEVBQWlDO0FBQ3RDLFNBQU87QUFBQ0EsSUFBQUEsT0FBTyxFQUFQQTtBQUFELEdBQVA7QUFDRDtBQUNEOzs7QUFDTyxTQUFTQyxNQUFULENBQ0xDLE9BREssRUFFTEYsT0FGSyxFQUdvQjtBQUN6QixTQUFPLFVBQUFOLEtBQUs7QUFBQSxXQUFJUSxPQUFPLENBQUNSLEtBQUQsRUFBUU0sT0FBUixDQUFYO0FBQUEsR0FBWjtBQUNEOztBQUVNLFNBQVNHLEtBQVQsQ0FDTEMsRUFESyxFQUVvQjtBQUN6QixTQUFPLFVBQUFWLEtBQUs7QUFBQSxXQUFJVSxFQUFFLENBQUNWLEtBQUQsQ0FBRixDQUFVQSxLQUFWLENBQUo7QUFBQSxHQUFaO0FBQ0Q7O0FBRU0sU0FBU1csR0FBVCxDQUFvQkMsSUFBcEIsRUFBbUNGLEVBQW5DLEVBQXlGO0FBQzlGLFNBQU9FLElBQUksR0FBR0YsRUFBSCxHQUFRWCxRQUFuQjtBQUNEOztBQUVNLFNBQVNjLFFBQVQsQ0FBeUJDLEdBQXpCLEVBQStFO0FBQ3BGLFNBQU8sVUFBQWQsS0FBSztBQUFBLFdBQUljLEdBQUcsQ0FBQ0MsTUFBSixDQUFXLFVBQUNDLE1BQUQsRUFBU04sRUFBVDtBQUFBLGFBQWdCQSxFQUFFLENBQUNNLE1BQUQsQ0FBbEI7QUFBQSxLQUFYLEVBQXVDaEIsS0FBdkMsQ0FBSjtBQUFBLEdBQVo7QUFDRDtBQUNEOzs7QUFDTyxTQUFTaUIsTUFBVCxDQUF1QkMsR0FBdkIsRUFBbUU7QUFDeEUsU0FBTyxVQUFBbEIsS0FBSztBQUFBLDJDQUFTQSxLQUFULEdBQW1Ca0IsR0FBbkI7QUFBQSxHQUFaO0FBQ0Q7O0FBRU0sU0FBU0MsS0FBVCxDQUNMQyxJQURLLEVBRTJGO0FBQ2hHLFNBQU8sVUFBQVYsRUFBRTtBQUFBLFdBQUksVUFBQVYsS0FBSztBQUFBLDZDQUFTQSxLQUFULDRDQUFpQm9CLElBQWpCLEVBQXdCVixFQUFFLENBQUNWLEtBQUssQ0FBQ29CLElBQUQsQ0FBTixDQUExQjtBQUFBLEtBQVQ7QUFBQSxHQUFUO0FBQ0Q7O0FBRU0sU0FBU0MsS0FBVCxDQUF1Q0MsSUFBdkMsRUFBbUU7QUFDeEUsU0FBTyxVQUFBQyxHQUFHO0FBQUEsV0FBSUEsR0FBRyxDQUFDQyxHQUFKLENBQVEsVUFBQUMsQ0FBQztBQUFBLGFBQUtBLENBQUMsQ0FBQ0MsRUFBRixLQUFTSixJQUFJLENBQUNJLEVBQWQsR0FBbUJKLElBQW5CLEdBQTBCRyxDQUEvQjtBQUFBLEtBQVQsQ0FBSjtBQUFBLEdBQVY7QUFDRDs7QUFFTSxTQUFTRSxRQUFULENBQTBDRCxFQUExQyxFQUFtRjtBQUN4RixTQUFPLFVBQUFILEdBQUc7QUFBQSxXQUFJQSxHQUFHLENBQUNLLElBQUosQ0FBUyxVQUFBSCxDQUFDO0FBQUEsYUFBSUEsQ0FBQyxDQUFDQyxFQUFGLEtBQVNBLEVBQWI7QUFBQSxLQUFWLENBQUo7QUFBQSxHQUFWO0FBQ0Q7O0FBRU0sU0FBU0csSUFBVCxDQUFpQm5CLEVBQWpCLEVBQXlEO0FBQzlELFNBQU8sVUFBQWEsR0FBRztBQUFBLFdBQUlBLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFVBQUFNLENBQUM7QUFBQSxhQUFJcEIsRUFBRSxDQUFDb0IsQ0FBRCxDQUFOO0FBQUEsS0FBVCxDQUFKO0FBQUEsR0FBVjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuXG5jb25zdCBpZGVudGl0eSA9IHN0YXRlID0+IHN0YXRlO1xuXG4vKiogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgbG9ncyBhIHZhbHVlIHdpdGggYSBnaXZlbiBtZXNzYWdlICovXG5leHBvcnQgZnVuY3Rpb24gbG9nKHRleHQ6IHN0cmluZyk6ICh2YWx1ZTogYW55KSA9PiB2b2lkIHtcbiAgcmV0dXJuIHZhbHVlID0+IENvbnNvbGUubG9nKHRleHQsIHZhbHVlKTtcbn1cbi8qKiBXcmFwcyBhIHZhbHVlIGluIGFuIG9iamVjdCBhbmQgc3RvcmVzIGl0IHRoZSBgcGF5bG9hZGAgZmllbGQgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXlsb2FkXzxQPihwYXlsb2FkOiBQKSB7XG4gIHJldHVybiB7cGF5bG9hZH07XG59XG4vKiogV3JhcHMgYSB2YWx1ZSBpbiBhbiBvYmplY3QgYW5kIHN0b3JlcyBpdCB0aGUgYHBheWxvYWRgIGZpZWxkICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlfPFN0YXRlLCBQPihcbiAgdXBkYXRlcjogKHN0YXRlOiBTdGF0ZSwgbmV4dFBheWxvYWQ6IFApID0+IFN0YXRlLFxuICBwYXlsb2FkOiBQXG4pOiAoc3RhdGU6IFN0YXRlKSA9PiBTdGF0ZSB7XG4gIHJldHVybiBzdGF0ZSA9PiB1cGRhdGVyKHN0YXRlLCBwYXlsb2FkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhfPFN0YXRlPihcbiAgZm46IChzdGF0ZTogU3RhdGUpID0+IChuZXh0U3RhdGU6IFN0YXRlKSA9PiBTdGF0ZVxuKTogKHN0YXRlOiBTdGF0ZSkgPT4gU3RhdGUge1xuICByZXR1cm4gc3RhdGUgPT4gZm4oc3RhdGUpKHN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlmXzxTdGF0ZT4ocHJlZDogYm9vbGVhbiwgZm46IChzdGF0ZTogU3RhdGUpID0+IFN0YXRlKTogKHN0YXRlOiBTdGF0ZSkgPT4gU3RhdGUge1xuICByZXR1cm4gcHJlZCA/IGZuIDogaWRlbnRpdHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlXzxTdGF0ZT4oZm5zOiBBcnJheTwoczogU3RhdGUpID0+IFN0YXRlPik6IChzOiBTdGF0ZSkgPT4gU3RhdGUge1xuICByZXR1cm4gc3RhdGUgPT4gZm5zLnJlZHVjZSgoc3RhdGUyLCBmbikgPT4gZm4oc3RhdGUyKSwgc3RhdGUpO1xufVxuLyoqIFJldHVybnMgYSByZWR1Y2VyIGZ1bmN0aW9uIHRoYXQgbWVyZ2VzIHByb3BzIHdpdGggc3RhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZV88UHJvcHM+KG9iajogUHJvcHMpOiA8U3RhdGU+KHN0YXRlOiBTdGF0ZSkgPT4gU3RhdGUge1xuICByZXR1cm4gc3RhdGUgPT4gKHsuLi5zdGF0ZSwgLi4ub2JqfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrXzxQcm9wIGV4dGVuZHMgc3RyaW5nPihcbiAgcHJvcDogUHJvcFxuKTogPFZhbHVlPihmbjogKHA6IFZhbHVlKSA9PiBWYWx1ZSkgPT4gPFN0YXRlIGV4dGVuZHMgUmVjb3JkPFByb3AsIFZhbHVlPj4oc3RhdGU6IFN0YXRlKSA9PiBTdGF0ZSB7XG4gIHJldHVybiBmbiA9PiBzdGF0ZSA9PiAoey4uLnN0YXRlLCBbcHJvcF06IGZuKHN0YXRlW3Byb3BdKX0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3dhcF88WCBleHRlbmRzIHtpZDogc3RyaW5nfT4oaXRlbTogWCk6IChhcnI6IFhbXSkgPT4gWFtdIHtcbiAgcmV0dXJuIGFyciA9PiBhcnIubWFwKGEgPT4gKGEuaWQgPT09IGl0ZW0uaWQgPyBpdGVtIDogYSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEJ5SWQ8WCBleHRlbmRzIHtpZDogc3RyaW5nfT4oaWQ6IHN0cmluZyk6IChhcnI6IFhbXSkgPT4gWCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBhcnIgPT4gYXJyLmZpbmQoYSA9PiBhLmlkID09PSBpZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBfPFg+KGZuOiAoc3RhdGU6IFgpID0+IFgpOiAoYXJyOiBYW10pID0+IFhbXSB7XG4gIHJldHVybiBhcnIgPT4gYXJyLm1hcChlID0+IGZuKGUpKTtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import * as combinedUpdaters from './combined-updaters';
2
+ /**
3
+ * Important: Do not rename `actionHandler` or the assignment pattern of property value.
4
+ * It is used to generate documentation
5
+ */
6
+ declare const actionHandler: {
7
+ "@@kepler.gl/ADD_DATA_TO_MAP": (state: combinedUpdaters.KeplerGlState, { payload }: {
8
+ payload: import("@kepler.gl/types").AddDataToMapPayload;
9
+ }) => combinedUpdaters.KeplerGlState;
10
+ "@@kepler.gl/LOAD_FILES_SUCCESS": (state: combinedUpdaters.KeplerGlState, action: import("@kepler.gl/actions").loadFilesSuccessUpdaterAction) => combinedUpdaters.KeplerGlState;
11
+ };
12
+ export default actionHandler;
@@ -0,0 +1,47 @@
1
+ // Copyright (c) 2022 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ "use strict";
22
+
23
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
24
+
25
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
26
+
27
+ Object.defineProperty(exports, "__esModule", {
28
+ value: true
29
+ });
30
+ exports["default"] = void 0;
31
+
32
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
33
+
34
+ var _actions = require("@kepler.gl/actions");
35
+
36
+ var combinedUpdaters = _interopRequireWildcard(require("./combined-updaters"));
37
+
38
+ var _actionHandler;
39
+
40
+ /**
41
+ * Important: Do not rename `actionHandler` or the assignment pattern of property value.
42
+ * It is used to generate documentation
43
+ */
44
+ var actionHandler = (_actionHandler = {}, (0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.ADD_DATA_TO_MAP, combinedUpdaters.addDataToMapUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.LOAD_FILES_SUCCESS, combinedUpdaters.loadFilesSuccessUpdater), _actionHandler);
45
+ var _default = actionHandler;
46
+ exports["default"] = _default;
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb3NlcnMudHMiXSwibmFtZXMiOlsiYWN0aW9uSGFuZGxlciIsIkFjdGlvblR5cGVzIiwiQUREX0RBVEFfVE9fTUFQIiwiY29tYmluZWRVcGRhdGVycyIsImFkZERhdGFUb01hcFVwZGF0ZXIiLCJMT0FEX0ZJTEVTX1NVQ0NFU1MiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSwwRUFDaEJDLHFCQUFZQyxlQURJLEVBQ2NDLGdCQUFnQixDQUFDQyxtQkFEL0Isb0RBRWhCSCxxQkFBWUksa0JBRkksRUFFaUJGLGdCQUFnQixDQUFDRyx1QkFGbEMsa0JBQW5CO2VBS2VOLGEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0FjdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0ICogYXMgY29tYmluZWRVcGRhdGVycyBmcm9tICcuL2NvbWJpbmVkLXVwZGF0ZXJzJztcblxuLyoqXG4gKiBJbXBvcnRhbnQ6IERvIG5vdCByZW5hbWUgYGFjdGlvbkhhbmRsZXJgIG9yIHRoZSBhc3NpZ25tZW50IHBhdHRlcm4gb2YgcHJvcGVydHkgdmFsdWUuXG4gKiBJdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb25cbiAqL1xuY29uc3QgYWN0aW9uSGFuZGxlciA9IHtcbiAgW0FjdGlvblR5cGVzLkFERF9EQVRBX1RPX01BUF06IGNvbWJpbmVkVXBkYXRlcnMuYWRkRGF0YVRvTWFwVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkxPQURfRklMRVNfU1VDQ0VTU106IGNvbWJpbmVkVXBkYXRlcnMubG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFjdGlvbkhhbmRsZXI7XG4iXX0=
package/dist/core.d.ts ADDED
@@ -0,0 +1,64 @@
1
+ import { VisState } from '@kepler.gl/schemas';
2
+ import { MapState, UiState } from '@kepler.gl/types';
3
+ import { MapStyle } from './map-style-updaters';
4
+ import { ProviderState } from './provider-state-updaters';
5
+ export declare type KeplerGlState = {
6
+ visState: VisState;
7
+ mapState: MapState;
8
+ mapStyle: MapStyle;
9
+ uiState: UiState;
10
+ providerState: ProviderState;
11
+ };
12
+ export declare const coreReducerFactory: (initialState?: Partial<KeplerGlState>) => (state: any, action: any) => any;
13
+ declare const _default: (state: any, action: any) => any;
14
+ export default _default;
15
+ /**
16
+ * Connect subreducer `mapState`, used with `injectComponents`. Learn more at
17
+ * [Replace UI Component](../advanced-usages/replace-ui-component.md#pass-custom-component-props)
18
+ *
19
+ * @param {*} reduxState
20
+ * @public
21
+ */
22
+ export declare const mapStateLens: (reduxState: KeplerGlState) => {
23
+ mapState: MapState;
24
+ };
25
+ /**
26
+ * Connect subreducer `mapStyle`, used with `injectComponents`. Learn more at
27
+ * [Replace UI Component](../advanced-usages/replace-ui-component.md#pass-custom-component-props)
28
+ *
29
+ * @param {*} reduxState
30
+ * @public
31
+ */
32
+ export declare const mapStyleLens: (reduxState: KeplerGlState) => {
33
+ mapStyle: MapStyle;
34
+ };
35
+ /**
36
+ * Connect subreducer `visState`, used with `injectComponents`. Learn more at
37
+ * [Replace UI Component](../advanced-usages/replace-ui-component.md#pass-custom-component-props)
38
+ *
39
+ * @param {*} reduxState
40
+ * @public
41
+ */
42
+ export declare const visStateLens: (reduxState: KeplerGlState) => {
43
+ visState: VisState;
44
+ };
45
+ /**
46
+ * Connect subreducer `uiState`, used with `injectComponents`. Learn more at
47
+ * [Replace UI Component](../advanced-usages/replace-ui-component.md#pass-custom-component-props)
48
+ *
49
+ * @param {*} reduxState
50
+ * @public
51
+ */
52
+ export declare const uiStateLens: (reduxState: KeplerGlState) => {
53
+ uiState: UiState;
54
+ };
55
+ /**
56
+ * Connect subreducer `providerState`, used with `injectComponents`. Learn more at
57
+ * [Replace UI Component](../advanced-usages/replace-ui-component.md#pass-custom-component-props)
58
+ *
59
+ * @param {*} reduxState
60
+ * @public
61
+ */
62
+ export declare const providerStateLens: (reduxState: KeplerGlState) => {
63
+ providerState: ProviderState;
64
+ };