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