@kepler.gl/reducers 3.0.0 → 3.1.0-alpha.1

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 (49) hide show
  1. package/package.json +26 -20
  2. package/dist/combined-updaters.d.ts +0 -79
  3. package/dist/combined-updaters.js +0 -423
  4. package/dist/composer-helpers.d.ts +0 -24
  5. package/dist/composer-helpers.js +0 -122
  6. package/dist/composers.d.ts +0 -18
  7. package/dist/composers.js +0 -27
  8. package/dist/core.d.ts +0 -64
  9. package/dist/core.js +0 -139
  10. package/dist/data-utils.d.ts +0 -8
  11. package/dist/data-utils.js +0 -42
  12. package/dist/export-utils.d.ts +0 -21
  13. package/dist/export-utils.js +0 -104
  14. package/dist/index.d.ts +0 -35
  15. package/dist/index.js +0 -373
  16. package/dist/interaction-utils.d.ts +0 -31
  17. package/dist/interaction-utils.js +0 -129
  18. package/dist/layer-utils.d.ts +0 -95
  19. package/dist/layer-utils.js +0 -344
  20. package/dist/map-state-updaters.d.ts +0 -93
  21. package/dist/map-state-updaters.js +0 -489
  22. package/dist/map-state.d.ts +0 -75
  23. package/dist/map-state.js +0 -47
  24. package/dist/map-style-updaters.d.ts +0 -186
  25. package/dist/map-style-updaters.js +0 -737
  26. package/dist/map-style.d.ts +0 -4
  27. package/dist/map-style.js +0 -46
  28. package/dist/merger-handler.d.ts +0 -10
  29. package/dist/merger-handler.js +0 -123
  30. package/dist/middleware.d.ts +0 -8
  31. package/dist/middleware.js +0 -30
  32. package/dist/provider-state-updaters.d.ts +0 -35
  33. package/dist/provider-state-updaters.js +0 -422
  34. package/dist/provider-state.d.ts +0 -4
  35. package/dist/provider-state.js +0 -46
  36. package/dist/root.d.ts +0 -24
  37. package/dist/root.js +0 -229
  38. package/dist/ui-state-updaters.d.ts +0 -362
  39. package/dist/ui-state-updaters.js +0 -871
  40. package/dist/ui-state.d.ts +0 -3
  41. package/dist/ui-state.js +0 -48
  42. package/dist/vis-state-merger.d.ts +0 -140
  43. package/dist/vis-state-merger.js +0 -915
  44. package/dist/vis-state-selectors.d.ts +0 -2
  45. package/dist/vis-state-selectors.js +0 -37
  46. package/dist/vis-state-updaters.d.ts +0 -545
  47. package/dist/vis-state-updaters.js +0 -3154
  48. package/dist/vis-state.d.ts +0 -211
  49. package/dist/vis-state.js +0 -46
package/dist/root.js DELETED
@@ -1,229 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.provideInitialState = provideInitialState;
9
- exports["default"] = void 0;
10
-
11
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
-
13
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
14
-
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
- var _actions = require("@kepler.gl/actions");
18
-
19
- var _reduxActions = require("redux-actions");
20
-
21
- var _core = require("./core");
22
-
23
- 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; }
24
-
25
- 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; }
26
-
27
- // INITIAL_STATE
28
- var initialCoreState = {};
29
-
30
- function provideInitialState(initialState, extraReducers) {
31
- var coreReducer = (0, _core.coreReducerFactory)(initialState, extraReducers);
32
-
33
- var handleRegisterEntry = function handleRegisterEntry(state, _ref) {
34
- var _ref$payload = _ref.payload,
35
- id = _ref$payload.id,
36
- mint = _ref$payload.mint,
37
- mapboxApiAccessToken = _ref$payload.mapboxApiAccessToken,
38
- mapboxApiUrl = _ref$payload.mapboxApiUrl,
39
- mapStylesReplaceDefault = _ref$payload.mapStylesReplaceDefault,
40
- initialUiState = _ref$payload.initialUiState;
41
- // by default, always create a mint state even if the same id already exist
42
- // if state.id exist and mint=false, keep the existing state
43
- var previousState = state[id] && mint === false ? state[id] : undefined;
44
- return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2["default"])({}, id, coreReducer(previousState, (0, _actions.keplerGlInit)({
45
- mapboxApiAccessToken: mapboxApiAccessToken,
46
- mapboxApiUrl: mapboxApiUrl,
47
- mapStylesReplaceDefault: mapStylesReplaceDefault,
48
- initialUiState: initialUiState
49
- }))));
50
- };
51
-
52
- var handleDeleteEntry = function handleDeleteEntry(state, _ref2) {
53
- var id = _ref2.payload;
54
- return Object.keys(state).reduce(function (accu, curr) {
55
- return _objectSpread(_objectSpread({}, accu), curr === id ? {} : (0, _defineProperty2["default"])({}, curr, state[curr]));
56
- }, {});
57
- };
58
-
59
- var handleRenameEntry = function handleRenameEntry(state, _ref4) {
60
- var _ref4$payload = _ref4.payload,
61
- oldId = _ref4$payload.oldId,
62
- newId = _ref4$payload.newId;
63
- return Object.keys(state).reduce(function (accu, curr) {
64
- return _objectSpread(_objectSpread({}, accu), (0, _defineProperty2["default"])({}, curr === oldId ? newId : curr, state[curr]));
65
- }, {});
66
- };
67
-
68
- return function () {
69
- var _handlers;
70
-
71
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialCoreState;
72
- var action = arguments.length > 1 ? arguments[1] : undefined;
73
- // update child states
74
- Object.keys(state).forEach(function (id) {
75
- var updateItemState = coreReducer(state[id], (0, _actions._actionFor)(id, action));
76
- state = (0, _actions._updateProperty)(state, id, updateItemState);
77
- }); // perform additional state reducing (e.g. switch action.type etc...)
78
-
79
- var handlers = (_handlers = {}, (0, _defineProperty2["default"])(_handlers, _actions.ActionTypes.REGISTER_ENTRY, handleRegisterEntry), (0, _defineProperty2["default"])(_handlers, _actions.ActionTypes.DELETE_ENTRY, handleDeleteEntry), (0, _defineProperty2["default"])(_handlers, _actions.ActionTypes.RENAME_ENTRY, handleRenameEntry), _handlers); // TODO: Understand why the Lint sees an error here, while the IDE does not.
80
-
81
- return (0, _reduxActions.handleActions)(handlers, initialCoreState)(state, action);
82
- };
83
- }
84
-
85
- var _keplerGlReducer = provideInitialState(initialCoreState);
86
-
87
- function mergeInitialState() {
88
- var saved = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
89
- var provided = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
90
- var extraInitialStateKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
91
- var keys = ['mapState', 'mapStyle', 'visState', 'uiState'].concat((0, _toConsumableArray2["default"])(extraInitialStateKeys)); // shallow merge each reducer
92
-
93
- var newState = keys.reduce(function (accu, key) {
94
- return _objectSpread(_objectSpread({}, accu), saved[key] && provided[key] ? (0, _defineProperty2["default"])({}, key, _objectSpread(_objectSpread({}, saved[key]), provided[key])) : (0, _defineProperty2["default"])({}, key, saved[key] || provided[key] || {}));
95
- }, {});
96
- return newState;
97
- }
98
-
99
- function decorate(target) {
100
- var savedInitialState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
- var targetInitialState = savedInitialState;
102
- /**
103
- * Returns a kepler.gl reducer that will also pass each action through additional reducers spiecified.
104
- * The parameter should be either a reducer map or a reducer function.
105
- * The state passed into the additional action handler is the instance state.
106
- * It will include all the subreducers `visState`, `uiState`, `mapState` and `mapStyle`.
107
- * `.plugin` is only meant to be called once when mounting the keplerGlReducer to the store.
108
- * **Note** This is an advanced option to give you more freedom to modify the internal state of the kepler.gl instance.
109
- * You should only use this to adding additional actions instead of replacing default actions.
110
- *
111
- * @mixin keplerGlReducer.plugin
112
- * @memberof keplerGlReducer
113
- * @param {Object|Function} customReducer - A reducer map or a reducer
114
- * @param {Object} options - options to be applied to custom reducer logic
115
- * @param {Object} options.override - objects that describe which action to override, e.g. {[ActionTypes.LAYER_TYPE_CHANGE]: true}
116
- * @public
117
- * @example
118
- * const myKeplerGlReducer = keplerGlReducer
119
- * .plugin({
120
- * // 1. as reducer map
121
- * HIDE_AND_SHOW_SIDE_PANEL: (state, action) => ({
122
- * ...state,
123
- * uiState: {
124
- * ...state.uiState,
125
- * readOnly: !state.uiState.readOnly
126
- * }
127
- * })
128
- * })
129
- * .plugin(handleActions({
130
- * // 2. as reducer
131
- * 'HIDE_MAP_CONTROLS': (state, action) => ({
132
- * ...state,
133
- * uiState: {
134
- * ...state.uiState,
135
- * mapControls: hiddenMapControl
136
- * }
137
- * })
138
- * }, {}));
139
- */
140
-
141
- target.plugin = function plugin(customReducer, options) {
142
- var _this = this;
143
-
144
- if ((0, _typeof2["default"])(customReducer) === 'object') {
145
- // if only provided a reducerMap, wrap it in a reducer
146
- customReducer = (0, _reduxActions.handleActions)(customReducer, {});
147
- } // use 'function' keyword to enable 'this'
148
-
149
-
150
- return decorate(function () {
151
- var _options$override;
152
-
153
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
154
- var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
155
- var nextState = state;
156
-
157
- if (action.type && !(options !== null && options !== void 0 && (_options$override = options.override) !== null && _options$override !== void 0 && _options$override[action.type])) {
158
- nextState = _this(state, action);
159
- } // for each entry in the staten
160
-
161
-
162
- Object.keys(nextState).forEach(function (id) {
163
- // update child states
164
- nextState = (0, _actions._updateProperty)(nextState, id, customReducer(nextState[id], (0, _actions._actionFor)(id, action)));
165
- });
166
- return nextState;
167
- });
168
- };
169
- /**
170
- * Return a reducer that initiated with custom initial state.
171
- * The parameter should be an object mapping from `subreducer` name to custom subreducer state,
172
- * which will be shallow **merged** with default initial state.
173
- *
174
- * Default subreducer state:
175
- * - [`visState`](./vis-state.md#INITIAL_VIS_STATE)
176
- * - [`mapState`](./map-state.md#INITIAL_MAP_STATE)
177
- * - [`mapStyle`](./map-style.md#INITIAL_MAP_STYLE)
178
- * - [`uiState`](./ui-state.md#INITIAL_UI_STATE)
179
- * @mixin keplerGlReducer.initialState
180
- * @memberof keplerGlReducer
181
- * @param {Object} iniSt - custom state to be merged with default initial state
182
- * @param {Object} extraReducers - optional custom reducers in addition to the default `visState`, `mapState`, `mapStyle`, and `uiState`
183
- * @public
184
- * @example
185
- * const myKeplerGlReducer = keplerGlReducer
186
- * .initialState({
187
- * uiState: {readOnly: true}
188
- * });
189
- */
190
-
191
-
192
- target.initialState = function initialState(iniSt) {
193
- var extraReducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
194
- // passing through extraInitialStateKeys and extraReducers allows external customization by adding additional subreducers and state beyond the default `visState`, `mapState`, `mapStyle`, and `uiState`
195
- var extraInitialStateKeys = Object.keys(extraReducers);
196
- var merged = mergeInitialState(targetInitialState, iniSt, extraInitialStateKeys);
197
- var targetReducer = provideInitialState(merged, extraReducers);
198
- return decorate(targetReducer, merged);
199
- };
200
-
201
- return target;
202
- }
203
- /**
204
- * Kepler.gl reducer to be mounted to your store. You can mount `keplerGlReducer` at property `keplerGl`, if you choose
205
- * to mount it at another address e.g. `foo` you will need to specify it when you mount `KeplerGl` component in your app with `getState: state => state.foo`
206
- * @public
207
- * @example
208
- * import keplerGlReducer from 'kepler.gl/reducers';
209
- * import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
210
- * import {taskMiddleware} from 'react-palm/tasks';
211
- *
212
- * const initialState = {};
213
- * const reducers = combineReducers({
214
- * // <-- mount kepler.gl reducer in your app
215
- * keplerGl: keplerGlReducer,
216
- *
217
- * // Your other reducers here
218
- * app: appReducer
219
- * });
220
- *
221
- * // using createStore
222
- * export default createStore(reducer, initialState, applyMiddleware(taskMiddleware));
223
- */
224
-
225
-
226
- var keplerGlReducer = decorate(_keplerGlReducer);
227
- var _default = keplerGlReducer;
228
- exports["default"] = _default;
229
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwicGF5bG9hZCIsImlkIiwibWludCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbml0aWFsVWlTdGF0ZSIsInByZXZpb3VzU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVEZWxldGVFbnRyeSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImhhbmRsZVJlbmFtZUVudHJ5Iiwib2xkSWQiLCJuZXdJZCIsImFjdGlvbiIsImZvckVhY2giLCJ1cGRhdGVJdGVtU3RhdGUiLCJoYW5kbGVycyIsIkFjdGlvblR5cGVzIiwiUkVHSVNURVJfRU5UUlkiLCJERUxFVEVfRU5UUlkiLCJSRU5BTUVfRU5UUlkiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwibmV3U3RhdGUiLCJrZXkiLCJkZWNvcmF0ZSIsInRhcmdldCIsInNhdmVkSW5pdGlhbFN0YXRlIiwidGFyZ2V0SW5pdGlhbFN0YXRlIiwicGx1Z2luIiwiY3VzdG9tUmVkdWNlciIsIm9wdGlvbnMiLCJuZXh0U3RhdGUiLCJ0eXBlIiwib3ZlcnJpZGUiLCJpbmlTdCIsIm1lcmdlZCIsInRhcmdldFJlZHVjZXIiLCJrZXBsZXJHbFJlZHVjZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUE7QUFDQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7QUFFTyxTQUFTQyxtQkFBVCxDQUE2QkMsWUFBN0IsRUFBMkND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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VOLEVBQUFBLE1BQU0sQ0FBQ3ZDLFlBQVAsR0FBc0IsU0FBU0EsWUFBVCxDQUFzQmdELEtBQXRCLEVBQWlEO0FBQUEsUUFBcEIvQyxhQUFvQix1RUFBSixFQUFJO0FBQ3JFO0FBQ0EsUUFBTWtDLHFCQUFxQixHQUFHcEIsTUFBTSxDQUFDQyxJQUFQLENBQVlmLGFBQVosQ0FBOUI7QUFDQSxRQUFNZ0QsTUFBTSxHQUFHakIsaUJBQWlCLENBQUNTLGtCQUFELEVBQXFCTyxLQUFyQixFQUE0QmIscUJBQTVCLENBQWhDO0FBQ0EsUUFBTWUsYUFBYSxHQUFHbkQsbUJBQW1CLENBQUNrRCxNQUFELEVBQVNoRCxhQUFULENBQXpDO0FBRUEsV0FBT3FDLFFBQVEsQ0FBQ1ksYUFBRCxFQUFnQkQsTUFBaEIsQ0FBZjtBQUNELEdBUEQ7O0FBU0EsU0FBT1YsTUFBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFNWSxlQUFlLEdBQUdiLFFBQVEsQ0FBQ1AsZ0JBQUQsQ0FBaEM7ZUFDZW9CLGUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0FjdGlvblR5cGVzLCBrZXBsZXJHbEluaXQsIF9hY3Rpb25Gb3IsIF91cGRhdGVQcm9wZXJ0eX0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7aGFuZGxlQWN0aW9uc30gZnJvbSAncmVkdXgtYWN0aW9ucyc7XG5cbmltcG9ydCB7Y29yZVJlZHVjZXJGYWN0b3J5fSBmcm9tICcuL2NvcmUnO1xuXG4vLyBJTklUSUFMX1NUQVRFXG5jb25zdCBpbml0aWFsQ29yZVN0YXRlID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycz8pIHtcbiAgY29uc3QgY29yZVJlZHVjZXIgPSBjb3JlUmVkdWNlckZhY3RvcnkoaW5pdGlhbFN0YXRlLCBleHRyYVJlZHVjZXJzKTtcblxuICBjb25zdCBoYW5kbGVSZWdpc3RlckVudHJ5ID0gKFxuICAgIHN0YXRlLFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIG1pbnQsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgICAgICBpbml0aWFsVWlTdGF0ZVxuICAgICAgfVxuICAgIH1cbiAgKSA9PiB7XG4gICAgLy8gYnkgZGVmYXVsdCwgYWx3YXlzIGNyZWF0ZSBhIG1pbnQgc3RhdGUgZXZlbiBpZiB0aGUgc2FtZSBpZCBhbHJlYWR5IGV4aXN0XG4gICAgLy8gaWYgc3RhdGUuaWQgZXhpc3QgYW5kIG1pbnQ9ZmFsc2UsIGtlZXAgdGhlIGV4aXN0aW5nIHN0YXRlXG4gICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IHN0YXRlW2lkXSAmJiBtaW50ID09PSBmYWxzZSA/IHN0YXRlW2lkXSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAvLyByZWdpc3RlciBlbnRyeSB0byBrZXBsZXIuZ2wgcGFzc2luZyBpbiBtYXBib3ggY29uZmlnIHRvIG1hcFN0eWxlXG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIFtpZF06IGNvcmVSZWR1Y2VyKFxuICAgICAgICBwcmV2aW91c1N0YXRlLFxuICAgICAgICBrZXBsZXJHbEluaXQoe21hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwsIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LCBpbml0aWFsVWlTdGF0ZX0pXG4gICAgICApXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEZWxldGVFbnRyeSA9IChzdGF0ZSwge3BheWxvYWQ6IGlkfSkgPT5cbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkucmVkdWNlKFxuICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIC4uLihjdXJyID09PSBpZCA/IHt9IDoge1tjdXJyXTogc3RhdGVbY3Vycl19KVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgY29uc3QgaGFuZGxlUmVuYW1lRW50cnkgPSAoc3RhdGUsIHtwYXlsb2FkOiB7b2xkSWQsIG5ld0lkfX0pID0+XG4gICAgT2JqZWN0LmtleXMoc3RhdGUpLnJlZHVjZShcbiAgICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICAuLi57W2N1cnIgPT09IG9sZElkID8gbmV3SWQgOiBjdXJyXTogc3RhdGVbY3Vycl19XG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICByZXR1cm4gKHN0YXRlID0gaW5pdGlhbENvcmVTdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgLy8gdXBkYXRlIGNoaWxkIHN0YXRlc1xuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5mb3JFYWNoKGlkID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZUl0ZW1TdGF0ZSA9IGNvcmVSZWR1Y2VyKHN0YXRlW2lkXSwgX2FjdGlvbkZvcihpZCwgYWN0aW9uKSk7XG4gICAgICBzdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShzdGF0ZSwgaWQsIHVwZGF0ZUl0ZW1TdGF0ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBwZXJmb3JtIGFkZGl0aW9uYWwgc3RhdGUgcmVkdWNpbmcgKGUuZy4gc3dpdGNoIGFjdGlvbi50eXBlIGV0Yy4uLilcbiAgICBjb25zdCBoYW5kbGVycyA9IHtcbiAgICAgIFtBY3Rpb25UeXBlcy5SRUdJU1RFUl9FTlRSWV06IGhhbmRsZVJlZ2lzdGVyRW50cnksXG4gICAgICBbQWN0aW9uVHlwZXMuREVMRVRFX0VOVFJZXTogaGFuZGxlRGVsZXRlRW50cnksXG4gICAgICBbQWN0aW9uVHlwZXMuUkVOQU1FX0VOVFJZXTogaGFuZGxlUmVuYW1lRW50cnlcbiAgICB9O1xuXG4gICAgLy8gVE9ETzogVW5kZXJzdGFuZCB3aHkgdGhlIExpbnQgc2VlcyBhbiBlcnJvciBoZXJlLCB3aGlsZSB0aGUgSURFIGRvZXMgbm90LlxuICAgIHJldHVybiBoYW5kbGVBY3Rpb25zKGhhbmRsZXJzLCBpbml0aWFsQ29yZVN0YXRlKShzdGF0ZSwgYWN0aW9uKTtcbiAgfTtcbn1cblxuY29uc3QgX2tlcGxlckdsUmVkdWNlciA9IHByb3ZpZGVJbml0aWFsU3RhdGUoaW5pdGlhbENvcmVTdGF0ZSk7XG5cbmZ1bmN0aW9uIG1lcmdlSW5pdGlhbFN0YXRlKHNhdmVkID0ge30sIHByb3ZpZGVkID0ge30sIGV4dHJhSW5pdGlhbFN0YXRlS2V5czogc3RyaW5nW10gPSBbXSkge1xuICBjb25zdCBrZXlzID0gWydtYXBTdGF0ZScsICdtYXBTdHlsZScsICd2aXNTdGF0ZScsICd1aVN0YXRlJywgLi4uZXh0cmFJbml0aWFsU3RhdGVLZXlzXTtcblxuICAvLyBzaGFsbG93IG1lcmdlIGVhY2ggcmVkdWNlclxuICBjb25zdCBuZXdTdGF0ZSA9IGtleXMucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHNhdmVkW2tleV0gJiYgcHJvdmlkZWRba2V5XVxuICAgICAgICA/IHtba2V5XTogey4uLnNhdmVkW2tleV0sIC4uLnByb3ZpZGVkW2tleV19fVxuICAgICAgICA6IHtba2V5XTogc2F2ZWRba2V5XSB8fCBwcm92aWRlZFtrZXldIHx8IHt9fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGUodGFyZ2V0LCBzYXZlZEluaXRpYWxTdGF0ZSA9IHt9KSB7XG4gIGNvbnN0IHRhcmdldEluaXRpYWxTdGF0ZSA9IHNhdmVkSW5pdGlhbFN0YXRlO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEga2VwbGVyLmdsIHJlZHVjZXIgdGhhdCB3aWxsIGFsc28gcGFzcyBlYWNoIGFjdGlvbiB0aHJvdWdoIGFkZGl0aW9uYWwgcmVkdWNlcnMgc3BpZWNpZmllZC5cbiAgICogVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgZWl0aGVyIGEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyIGZ1bmN0aW9uLlxuICAgKiBUaGUgc3RhdGUgcGFzc2VkIGludG8gdGhlIGFkZGl0aW9uYWwgYWN0aW9uIGhhbmRsZXIgaXMgdGhlIGluc3RhbmNlIHN0YXRlLlxuICAgKiBJdCB3aWxsIGluY2x1ZGUgYWxsIHRoZSBzdWJyZWR1Y2VycyBgdmlzU3RhdGVgLCBgdWlTdGF0ZWAsIGBtYXBTdGF0ZWAgYW5kIGBtYXBTdHlsZWAuXG4gICAqIGAucGx1Z2luYCBpcyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBvbmNlIHdoZW4gbW91bnRpbmcgdGhlIGtlcGxlckdsUmVkdWNlciB0byB0aGUgc3RvcmUuXG4gICAqICoqTm90ZSoqIFRoaXMgaXMgYW4gYWR2YW5jZWQgb3B0aW9uIHRvIGdpdmUgeW91IG1vcmUgZnJlZWRvbSB0byBtb2RpZnkgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBrZXBsZXIuZ2wgaW5zdGFuY2UuXG4gICAqIFlvdSBzaG91bGQgb25seSB1c2UgdGhpcyB0byBhZGRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIGluc3RlYWQgb2YgcmVwbGFjaW5nIGRlZmF1bHQgYWN0aW9ucy5cbiAgICpcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5wbHVnaW5cbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gY3VzdG9tUmVkdWNlciAtIEEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGN1c3RvbSByZWR1Y2VyIGxvZ2ljXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLm92ZXJyaWRlIC0gb2JqZWN0cyB0aGF0IGRlc2NyaWJlIHdoaWNoIGFjdGlvbiB0byBvdmVycmlkZSwgZS5nLiB7W0FjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFXTogdHJ1ZX1cbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLnBsdWdpbih7XG4gICAqICAgIC8vIDEuIGFzIHJlZHVjZXIgbWFwXG4gICAqICAgIEhJREVfQU5EX1NIT1dfU0lERV9QQU5FTDogKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gICAqICAgICAgLi4uc3RhdGUsXG4gICAqICAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAgLi4uc3RhdGUudWlTdGF0ZSxcbiAgICogICAgICAgIHJlYWRPbmx5OiAhc3RhdGUudWlTdGF0ZS5yZWFkT25seVxuICAgKiAgICAgIH1cbiAgICogICAgfSlcbiAgICogIH0pXG4gICAqIC5wbHVnaW4oaGFuZGxlQWN0aW9ucyh7XG4gICAqICAgLy8gMi4gYXMgcmVkdWNlclxuICAgKiAgICdISURFX01BUF9DT05UUk9MUyc6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgLi4uc3RhdGUsXG4gICAqICAgICB1aVN0YXRlOiB7XG4gICAqICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgIG1hcENvbnRyb2xzOiBoaWRkZW5NYXBDb250cm9sXG4gICAqICAgICB9XG4gICAqICAgfSlcbiAgICogfSwge30pKTtcbiAgICovXG4gIHRhcmdldC5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4oY3VzdG9tUmVkdWNlciwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUmVkdWNlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGlmIG9ubHkgcHJvdmlkZWQgYSByZWR1Y2VyTWFwLCB3cmFwIGl0IGluIGEgcmVkdWNlclxuICAgICAgY3VzdG9tUmVkdWNlciA9IGhhbmRsZUFjdGlvbnMoY3VzdG9tUmVkdWNlciwge30pO1xuICAgIH1cblxuICAgIC8vIHVzZSAnZnVuY3Rpb24nIGtleXdvcmQgdG8gZW5hYmxlICd0aGlzJ1xuICAgIHJldHVybiBkZWNvcmF0ZSgoc3RhdGUgPSB7fSwgYWN0aW9uOiB7dHlwZT86IHN0cmluZ30gPSB7fSkgPT4ge1xuICAgICAgbGV0IG5leHRTdGF0ZSA9IHN0YXRlO1xuICAgICAgaWYgKGFjdGlvbi50eXBlICYmICFvcHRpb25zPy5vdmVycmlkZT8uW2FjdGlvbi50eXBlXSkge1xuICAgICAgICBuZXh0U3RhdGUgPSB0aGlzKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgc3RhdGVuXG4gICAgICBPYmplY3Qua2V5cyhuZXh0U3RhdGUpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgY2hpbGQgc3RhdGVzXG4gICAgICAgIG5leHRTdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShcbiAgICAgICAgICBuZXh0U3RhdGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY3VzdG9tUmVkdWNlcihuZXh0U3RhdGVbaWRdLCBfYWN0aW9uRm9yKGlkLCBhY3Rpb24pKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZWR1Y2VyIHRoYXQgaW5pdGlhdGVkIHdpdGggY3VzdG9tIGluaXRpYWwgc3RhdGUuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCBtYXBwaW5nIGZyb20gYHN1YnJlZHVjZXJgIG5hbWUgdG8gY3VzdG9tIHN1YnJlZHVjZXIgc3RhdGUsXG4gICAqIHdoaWNoIHdpbGwgYmUgc2hhbGxvdyAqKm1lcmdlZCoqIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlLlxuICAgKlxuICAgKiBEZWZhdWx0IHN1YnJlZHVjZXIgc3RhdGU6XG4gICAqICAtIFtgdmlzU3RhdGVgXSguL3Zpcy1zdGF0ZS5tZCNJTklUSUFMX1ZJU19TVEFURSlcbiAgICogIC0gW2BtYXBTdGF0ZWBdKC4vbWFwLXN0YXRlLm1kI0lOSVRJQUxfTUFQX1NUQVRFKVxuICAgKiAgLSBbYG1hcFN0eWxlYF0oLi9tYXAtc3R5bGUubWQjSU5JVElBTF9NQVBfU1RZTEUpXG4gICAqICAtIFtgdWlTdGF0ZWBdKC4vdWktc3RhdGUubWQjSU5JVElBTF9VSV9TVEFURSlcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5pbml0aWFsU3RhdGVcbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gaW5pU3QgLSBjdXN0b20gc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBleHRyYVJlZHVjZXJzIC0gb3B0aW9uYWwgY3VzdG9tIHJlZHVjZXJzIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLmluaXRpYWxTdGF0ZSh7XG4gICAqICAgIHVpU3RhdGU6IHtyZWFkT25seTogdHJ1ZX1cbiAgICogIH0pO1xuICAgKi9cbiAgdGFyZ2V0LmluaXRpYWxTdGF0ZSA9IGZ1bmN0aW9uIGluaXRpYWxTdGF0ZShpbmlTdCwgZXh0cmFSZWR1Y2VycyA9IHt9KSB7XG4gICAgLy8gcGFzc2luZyB0aHJvdWdoIGV4dHJhSW5pdGlhbFN0YXRlS2V5cyBhbmQgZXh0cmFSZWR1Y2VycyBhbGxvd3MgZXh0ZXJuYWwgY3VzdG9taXphdGlvbiBieSBhZGRpbmcgYWRkaXRpb25hbCBzdWJyZWR1Y2VycyBhbmQgc3RhdGUgYmV5b25kIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICBjb25zdCBleHRyYUluaXRpYWxTdGF0ZUtleXMgPSBPYmplY3Qua2V5cyhleHRyYVJlZHVjZXJzKTtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZUluaXRpYWxTdGF0ZSh0YXJnZXRJbml0aWFsU3RhdGUsIGluaVN0LCBleHRyYUluaXRpYWxTdGF0ZUtleXMpO1xuICAgIGNvbnN0IHRhcmdldFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKG1lcmdlZCwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgICByZXR1cm4gZGVjb3JhdGUodGFyZ2V0UmVkdWNlciwgbWVyZ2VkKTtcbiAgfTtcblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIEtlcGxlci5nbCByZWR1Y2VyIHRvIGJlIG1vdW50ZWQgdG8geW91ciBzdG9yZS4gWW91IGNhbiBtb3VudCBga2VwbGVyR2xSZWR1Y2VyYCBhdCBwcm9wZXJ0eSBga2VwbGVyR2xgLCBpZiB5b3UgY2hvb3NlXG4gKiB0byBtb3VudCBpdCBhdCBhbm90aGVyIGFkZHJlc3MgZS5nLiBgZm9vYCB5b3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgaXQgd2hlbiB5b3UgbW91bnQgYEtlcGxlckdsYCBjb21wb25lbnQgaW4geW91ciBhcHAgd2l0aCBgZ2V0U3RhdGU6IHN0YXRlID0+IHN0YXRlLmZvb2BcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyIGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiBpbXBvcnQge2NyZWF0ZVN0b3JlLCBjb21iaW5lUmVkdWNlcnMsIGFwcGx5TWlkZGxld2FyZSwgY29tcG9zZX0gZnJvbSAncmVkdXgnO1xuICogaW1wb3J0IHt0YXNrTWlkZGxld2FyZX0gZnJvbSAncmVhY3QtcGFsbS90YXNrcyc7XG4gKlxuICogY29uc3QgaW5pdGlhbFN0YXRlID0ge307XG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAgIC8vIDwtLSBtb3VudCBrZXBsZXIuZ2wgcmVkdWNlciBpbiB5b3VyIGFwcFxuICogICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICpcbiAqICAgLy8gWW91ciBvdGhlciByZWR1Y2VycyBoZXJlXG4gKiAgIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogLy8gdXNpbmcgY3JlYXRlU3RvcmVcbiAqIGV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN0b3JlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSwgYXBwbHlNaWRkbGV3YXJlKHRhc2tNaWRkbGV3YXJlKSk7XG4gKi9cbmNvbnN0IGtlcGxlckdsUmVkdWNlciA9IGRlY29yYXRlKF9rZXBsZXJHbFJlZHVjZXIpO1xuZXhwb3J0IGRlZmF1bHQga2VwbGVyR2xSZWR1Y2VyO1xuIl19
@@ -1,362 +0,0 @@
1
- import { ExportImage } from '@kepler.gl/constants';
2
- import { ActionTypes, KeplerGlInitPayload, LoadFilesErrUpdaterAction, UIStateActions } from '@kepler.gl/actions';
3
- import { ExportData, ExportHtml, ExportJson, ExportMap, MapControls, UiState } from '@kepler.gl/types';
4
- export declare const DEFAULT_ACTIVE_SIDE_PANEL = "layer";
5
- export declare const DEFAULT_MODAL = "addData";
6
- /**
7
- * A list of map control visibility and whether is it active.
8
- * @memberof uiStateUpdaters
9
- * @constant
10
- * @property visibleLayers Default: `{show: true, active: false}`
11
- * @property mapLegend Default: `{show: true, active: false}`
12
- * @property toggle3d Default: `{show: true}`
13
- * @property splitMap Default: `{show: true}`
14
- * @property mapDraw Default: `{show: true, active: false}`
15
- * @property mapLocale Default: `{show: false, active: false}`
16
- * @public
17
- */
18
- export declare const DEFAULT_MAP_CONTROLS: MapControls;
19
- /**
20
- * Default image export config
21
- * @memberof uiStateUpdaters
22
- * @constant
23
- * @property ratio Default: `'SCREEN'`,
24
- * @property resolution Default: `'ONE_X'`,
25
- * @property legend Default: `false`,
26
- * @property mapH Default: 0,
27
- * @property mapW Default: 0,
28
- * @property imageSize Default: {zoomOffset: 0, scale: 1, imageW: 0, imageH: 0},
29
- * @property imageDataUri Default: `''`,
30
- * @property exporting Default: `false`
31
- * @property error Default: `false`
32
- * @property escapeXhtmlForWebpack Default: `true`
33
- * @public
34
- */
35
- export declare const DEFAULT_EXPORT_IMAGE: ExportImage;
36
- export declare const DEFAULT_LOAD_FILES: {
37
- fileLoading: boolean;
38
- };
39
- /**
40
- * Default initial `exportData` settings
41
- * @memberof uiStateUpdaters
42
- * @constant
43
- * @property selectedDataset Default: `''`,
44
- * @property dataType Default: `'csv'`,
45
- * @property filtered Default: `true`,
46
- * @public
47
- */
48
- export declare const DEFAULT_EXPORT_DATA: ExportData;
49
- /**
50
- * @constant
51
- */
52
- export declare const DEFAULT_NOTIFICATIONS: never[];
53
- /**
54
- * @constant
55
- * @property exportMapboxAccessToken - Default: null, this is used when we provide a default mapbox token for users to take advantage of
56
- * @property userMapboxToken - Default: '', mapbox token provided by user through input field
57
- * @property mode - Default: 'READ', read only or editable
58
- * @public
59
- */
60
- export declare const DEFAULT_EXPORT_HTML: ExportHtml;
61
- /**
62
- * @constant
63
- * @property hasData - Default: 'true',
64
- * @public
65
- */
66
- export declare const DEFAULT_EXPORT_JSON: ExportJson;
67
- /**
68
- * Export Map Config
69
- * @constant
70
- * @property HTML - Default: 'DEFAULT_EXPORT_HTML',
71
- * @property JSON - Default: 'DEFAULT_EXPORT_JSON',
72
- * @property format - Default: 'HTML',
73
- * @public
74
- */
75
- export declare const DEFAULT_EXPORT_MAP: ExportMap;
76
- /**
77
- * Default initial `uiState`
78
- * @memberof uiStateUpdaters
79
- * @constant
80
- * @property readOnly Default: `false`
81
- * @property activeSidePanel Default: `'layer'`
82
- * @property currentModal Default: `'addData'`
83
- * @property datasetKeyToRemove Default: `null`
84
- * @property visibleDropdown Default: `null`
85
- * @property exportImage Default: [`DEFAULT_EXPORT_IMAGE`](#default_export_image)
86
- * @property exportData Default: [`DEFAULT_EXPORT_DATA`](#default_export_data)
87
- * @property exportMap Default: [`DEFAULT_EXPORT_MAP`](#default_export_map)
88
- * @property mapControls Default: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
89
- * @property notifications Default: `[]`
90
- * @property notifications Default: `[]`
91
- * @property loadFiles
92
- * @property isSidePanelCloseButtonVisible Default: `true`
93
- * @public
94
- */
95
- export declare const INITIAL_UI_STATE: UiState;
96
- /**
97
- * @memberof uiStateUpdaters
98
- */
99
- export declare const initUiStateUpdater: (state: UiState, action: {
100
- type?: typeof ActionTypes['INIT'];
101
- payload: KeplerGlInitPayload;
102
- }) => UiState;
103
- /**
104
- * Toggle active side panel
105
- * @memberof uiStateUpdaters
106
- * @param state `uiState`
107
- * @param action
108
- * @param action.payload id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`. close side panel if `null`
109
- * @returns nextState
110
- * @public
111
- */
112
- export declare const toggleSidePanelUpdater: (state: UiState, { payload: id }: UIStateActions.ToggleSidePanelUpdaterAction) => UiState;
113
- /**
114
- * Show and hide modal dialog
115
- * @memberof uiStateUpdaters
116
- * @param state `uiState`
117
- * @param action
118
- * @paramaction.payload id of modal to be shown, null to hide modals. One of:
119
- * - [`DATA_TABLE_ID`](../constants/default-settings.md#data_table_id)
120
- * - [`DELETE_DATA_ID`](../constants/default-settings.md#delete_data_id)
121
- * - [`ADD_DATA_ID`](../constants/default-settings.md#add_data_id)
122
- * - [`EXPORT_IMAGE_ID`](../constants/default-settings.md#export_image_id)
123
- * - [`EXPORT_DATA_ID`](../constants/default-settings.md#export_data_id)
124
- * - [`ADD_MAP_STYLE_ID`](../constants/default-settings.md#add_map_style_id)
125
- * @returns nextState
126
- * @public
127
- */
128
- export declare const toggleModalUpdater: (state: UiState, { payload: id }: UIStateActions.ToggleModalUpdaterAction) => UiState;
129
- /**
130
- * Hide and show side panel header dropdown, activated by clicking the share link on top of the side panel
131
- * @memberof uiStateUpdaters
132
- * @public
133
- */
134
- export declare const showExportDropdownUpdater: (state: UiState, { payload: id }: UIStateActions.ShowExportDropdownUpdaterAction) => UiState;
135
- /**
136
- * Hide side panel header dropdown, activated by clicking the share link on top of the side panel
137
- * @memberof uiStateUpdaters
138
- * @public
139
- */
140
- export declare const hideExportDropdownUpdater: (state: UiState) => UiState;
141
- /**
142
- * Toggle side panel close button on top left of the side panel
143
- * @memberof uiStateUpdaters
144
- * @public
145
- */
146
- export declare const toggleSidePanelCloseButtonUpdater: (state: UiState, { payload: { show } }: UIStateActions.ToggleSidePanelCloseButtonUpdaterAction) => UiState;
147
- /**
148
- * Toggle active map control panel
149
- * @memberof uiStateUpdaters
150
- * @param state `uiState`
151
- * @param action action
152
- * @param action.payload map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
153
- * @returns nextState
154
- * @public
155
- */
156
- export declare const toggleMapControlUpdater: (state: UiState, { payload: { panelId, index } }: UIStateActions.ToggleMapControlUpdaterAction) => UiState;
157
- /**
158
- * Toggle map control visibility
159
- * @memberof uiStateUpdaters
160
- * @param state `uiState`
161
- * @param action action
162
- * @param action.payload map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
163
- * @returns nextState
164
- * @public
165
- */
166
- export declare const setMapControlVisibilityUpdater: (state: UiState, { payload: { panelId, show } }: UIStateActions.setMapControlVisibilityUpdaterAction) => UiState;
167
- /**
168
- * Toggle active map control panel
169
- * @memberof uiStateUpdaters
170
- * @param state `uiState`
171
- * @param action
172
- * @param action.payload dataset id
173
- * @returns nextState
174
- * @public
175
- */
176
- export declare const openDeleteModalUpdater: (state: UiState, { payload: datasetKeyToRemove }: UIStateActions.OpenDeleteModalUpdaterAction) => UiState;
177
- /**
178
- * Set `exportImage.legend` to `true` or `false`
179
- * @memberof uiStateUpdaters
180
- * @param state `uiState`
181
- * @returns nextState
182
- * @public
183
- */
184
- export declare const setExportImageSettingUpdater: (state: UiState, { payload: newSetting }: UIStateActions.SetExportImageSettingUpdaterAction) => UiState;
185
- /**
186
- * Set `exportImage.setExportImageDataUri` to a image dataUri
187
- * @memberof uiStateUpdaters
188
- * @param state `uiState`
189
- * @param action
190
- * @param action.payload export image data uri
191
- * @returns nextState
192
- * @public
193
- */
194
- export declare const setExportImageDataUriUpdater: (state: UiState, { payload: dataUri }: UIStateActions.SetExportImageDataUriUpdaterAction) => UiState;
195
- /**
196
- * @memberof uiStateUpdaters
197
- * @public
198
- */
199
- export declare const setExportImageErrorUpdater: (state: UiState, { payload: error }: UIStateActions.SetExportImageErrorUpdaterAction) => UiState;
200
- /**
201
- * Delete cached export image
202
- * @memberof uiStateUpdaters
203
- * @public
204
- */
205
- export declare const cleanupExportImageUpdater: (state: UiState) => UiState;
206
- /**
207
- * Start image exporting flow
208
- * @memberof uiStateUpdaters
209
- * @param state
210
- * @param options
211
- * @returns {UiState}
212
- * @public
213
- */
214
- export declare const startExportingImageUpdater: (state: UiState, { payload: options }: {
215
- payload: Partial<ExportImage>;
216
- }) => UiState;
217
- /**
218
- * Set selected dataset for export
219
- * @memberof uiStateUpdaters
220
- * @param state `uiState`
221
- * @param action
222
- * @param action.payload dataset id
223
- * @returns nextState
224
- * @public
225
- */
226
- export declare const setExportSelectedDatasetUpdater: (state: UiState, { payload: dataset }: UIStateActions.SetExportSelectedDatasetUpdaterAction) => UiState;
227
- /**
228
- * Set data format for exporting data
229
- * @memberof uiStateUpdaters
230
- * @param state `uiState`
231
- * @param action
232
- * @param action.payload one of `'text/csv'`
233
- * @returns nextState
234
- * @public
235
- */
236
- export declare const setExportDataTypeUpdater: (state: UiState, { payload: dataType }: UIStateActions.SetExportDataTypeUpdaterAction) => UiState;
237
- /**
238
- * Whether to export filtered data, `true` or `false`
239
- * @memberof uiStateUpdaters
240
- * @param state `uiState`
241
- * @param action
242
- * @param action.payload
243
- * @returns nextState
244
- * @public
245
- */
246
- export declare const setExportFilteredUpdater: (state: UiState, { payload: filtered }: UIStateActions.SetExportFilteredUpdaterAction) => UiState;
247
- /**
248
- * Whether to including data in map config, toggle between `true` or `false`
249
- * @memberof uiStateUpdaters
250
- * @param state `uiState`
251
- * @returns nextState
252
- * @public
253
- */
254
- export declare const setExportDataUpdater: (state: UiState) => UiState;
255
- /**
256
- * whether to export a mapbox access to HTML single page
257
- * @param state - `uiState`
258
- * @param action
259
- * @param action.payload
260
- * @returns nextState
261
- * @public
262
- */
263
- export declare const setUserMapboxAccessTokenUpdater: (state: UiState, { payload: userMapboxToken }: UIStateActions.SetUserMapboxAccessTokenUpdaterAction) => UiState;
264
- /**
265
- * Sets the export map format
266
- * @param state - `uiState`
267
- * @param action
268
- * @param action.payload format to use to export the map into
269
- * @return nextState
270
- */
271
- export declare const setExportMapFormatUpdater: (state: UiState, { payload: format }: UIStateActions.SetExportMapFormatUpdaterAction) => UiState;
272
- /**
273
- * Set the export html map mode
274
- * @param state - `uiState`
275
- * @param action
276
- * @param action.payload to be set (available modes: EXPORT_HTML_MAP_MODES)
277
- * @return nextState
278
- */
279
- export declare const setExportMapHTMLModeUpdater: (state: UiState, { payload: mode }: UIStateActions.SetExportHTMLMapModeUpdaterAction) => UiState;
280
- /**
281
- * Adds a new notification.
282
- * Updates a notification in case of matching ids.
283
- * @memberof uiStateUpdaters
284
- * @param state `uiState`
285
- * @param action
286
- * @param action.payload Params of a notification
287
- * @returns nextState
288
- * @public
289
- */
290
- export declare const addNotificationUpdater: (state: UiState, { payload }: UIStateActions.AddNotificationUpdaterAction) => UiState;
291
- /**
292
- * Remove a notification
293
- * @memberof uiStateUpdaters
294
- * @param state `uiState`
295
- * @param action
296
- * @param action.payload id of the notification to be removed
297
- * @returns nextState
298
- * @public
299
- */
300
- export declare const removeNotificationUpdater: (state: UiState, { payload: id }: UIStateActions.RemoveNotificationUpdaterAction) => UiState;
301
- /**
302
- * Fired when file loading begin
303
- * @memberof uiStateUpdaters
304
- * @param state `uiState`
305
- * @returns nextState
306
- * @public
307
- */
308
- export declare const loadFilesUpdater: (state: UiState) => UiState;
309
- /**
310
- * Handles loading file success and set fileLoading property to false
311
- * @memberof uiStateUpdaters
312
- * @param state `uiState`
313
- * @returns nextState
314
- */
315
- export declare const loadFilesSuccessUpdater: (state: UiState) => UiState;
316
- /**
317
- * Handles load file error and set fileLoading property to false
318
- * @memberof uiStateUpdaters
319
- * @param state
320
- * @param action
321
- * @param action.error
322
- * @returns nextState
323
- * @public
324
- */
325
- export declare const loadFilesErrUpdater: (state: UiState, { error }: LoadFilesErrUpdaterAction) => UiState;
326
- /**
327
- * Handles toggle map split and reset all map control index to 0
328
- * @memberof uiStateUpdaters
329
- * @param state
330
- * @returns nextState
331
- * @public
332
- */
333
- export declare const toggleSplitMapUpdater: (state: UiState) => UiState;
334
- /**
335
- * Toggle modal data
336
- * @memberof uiStateUpdaters
337
- * @param state
338
- * @returns nextState
339
- * @public
340
- */
341
- export declare const showDatasetTableUpdater: (state: UiState) => UiState;
342
- /**
343
- * Set the locale of the UI
344
- * @memberof uiStateUpdaters
345
- * @param state `uiState`
346
- * @param action
347
- * @param action.payload
348
- * @param action.payload.locale locale
349
- * @returns nextState
350
- * @public
351
- */
352
- export declare const setLocaleUpdater: (state: UiState, { payload: { locale } }: UIStateActions.SetLocaleUpdaterAction) => UiState;
353
- /**
354
- * Toggle layer panel list view
355
- * @memberof uiStateUpdaters
356
- * @param state `uiState`
357
- * @param action
358
- * @param action.payload layer panel listView value. Can be 'list' or 'sortByDataset'
359
- * @returns nextState
360
- * @public
361
- */
362
- export declare const togglePanelListViewUpdater: (state: UiState, { payload: { panelId, listView } }: UIStateActions.TogglePanelListViewAction) => UiState;