@kepler.gl/reducers 3.0.0-alpha.0 → 3.0.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 (41) hide show
  1. package/dist/combined-updaters.d.ts +30 -1
  2. package/dist/combined-updaters.js +222 -4
  3. package/dist/composer-helpers.d.ts +7 -4
  4. package/dist/composer-helpers.js +18 -9
  5. package/dist/composers.d.ts +6 -0
  6. package/dist/composers.js +3 -3
  7. package/dist/core.d.ts +1 -1
  8. package/dist/core.js +16 -6
  9. package/dist/data-utils.js +2 -3
  10. package/dist/export-utils.js +2 -2
  11. package/dist/index.d.ts +2 -3
  12. package/dist/index.js +37 -16
  13. package/dist/interaction-utils.d.ts +1 -5
  14. package/dist/interaction-utils.js +5 -10
  15. package/dist/layer-utils.d.ts +39 -10
  16. package/dist/layer-utils.js +110 -35
  17. package/dist/map-state-updaters.d.ts +33 -2
  18. package/dist/map-state-updaters.js +278 -19
  19. package/dist/map-state.d.ts +74 -2
  20. package/dist/map-state.js +3 -3
  21. package/dist/map-style-updaters.d.ts +30 -17
  22. package/dist/map-style-updaters.js +303 -84
  23. package/dist/map-style.js +3 -3
  24. package/dist/merger-handler.d.ts +10 -0
  25. package/dist/merger-handler.js +143 -0
  26. package/dist/middleware.js +2 -2
  27. package/dist/provider-state-updaters.js +2 -2
  28. package/dist/provider-state.js +2 -2
  29. package/dist/root.d.ts +1 -8
  30. package/dist/root.js +25 -11
  31. package/dist/ui-state-updaters.d.ts +9 -2
  32. package/dist/ui-state-updaters.js +88 -63
  33. package/dist/ui-state.js +3 -3
  34. package/dist/vis-state-merger.d.ts +47 -13
  35. package/dist/vis-state-merger.js +393 -107
  36. package/dist/vis-state-selectors.js +2 -2
  37. package/dist/vis-state-updaters.d.ts +136 -10
  38. package/dist/vis-state-updaters.js +924 -262
  39. package/dist/vis-state.d.ts +210 -2
  40. package/dist/vis-state.js +3 -3
  41. package/package.json +20 -18
package/dist/root.js CHANGED
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
1
+ // Copyright (c) 2023 Uber Technologies, Inc.
2
2
  //
3
3
  // Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  // of this software and associated documentation files (the "Software"), to deal
@@ -30,6 +30,8 @@ exports["default"] = void 0;
30
30
 
31
31
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
32
32
 
33
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
34
+
33
35
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
34
36
 
35
37
  var _actions = require("@kepler.gl/actions");
@@ -45,8 +47,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
45
47
  // INITIAL_STATE
46
48
  var initialCoreState = {};
47
49
 
48
- function provideInitialState(initialState) {
49
- var coreReducer = (0, _core.coreReducerFactory)(initialState);
50
+ function provideInitialState(initialState, extraReducers) {
51
+ var coreReducer = (0, _core.coreReducerFactory)(initialState, extraReducers);
50
52
 
51
53
  var handleRegisterEntry = function handleRegisterEntry(state, _ref) {
52
54
  var _ref$payload = _ref.payload,
@@ -95,7 +97,6 @@ function provideInitialState(initialState) {
95
97
  }); // perform additional state reducing (e.g. switch action.type etc...)
96
98
 
97
99
  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
 
100
101
  return (0, _reduxActions.handleActions)(handlers, initialCoreState)(state, action);
101
102
  };
@@ -106,11 +107,13 @@ var _keplerGlReducer = provideInitialState(initialCoreState);
106
107
  function mergeInitialState() {
107
108
  var saved = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
108
109
  var provided = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
109
- var keys = ['mapState', 'mapStyle', 'visState', 'uiState']; // shallow merge each reducer
110
+ var extraInitialStateKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
111
+ var keys = ['mapState', 'mapStyle', 'visState', 'uiState'].concat((0, _toConsumableArray2["default"])(extraInitialStateKeys)); // shallow merge each reducer
110
112
 
111
- return keys.reduce(function (accu, key) {
113
+ var newState = keys.reduce(function (accu, key) {
112
114
  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
115
  }, {});
116
+ return newState;
114
117
  }
115
118
 
116
119
  function decorate(target) {
@@ -128,6 +131,8 @@ function decorate(target) {
128
131
  * @mixin keplerGlReducer.plugin
129
132
  * @memberof keplerGlReducer
130
133
  * @param {Object|Function} customReducer - A reducer map or a reducer
134
+ * @param {Object} options - options to be applied to custom reducer logic
135
+ * @param {Object} options.override - objects that describe which action to override, e.g. {[ActionTypes.LAYER_TYPE_CHANGE]: true}
131
136
  * @public
132
137
  * @example
133
138
  * const myKeplerGlReducer = keplerGlReducer
@@ -153,7 +158,7 @@ function decorate(target) {
153
158
  * }, {}));
154
159
  */
155
160
 
156
- target.plugin = function plugin(customReducer) {
161
+ target.plugin = function plugin(customReducer, options) {
157
162
  var _this = this;
158
163
 
159
164
  if ((0, _typeof2["default"])(customReducer) === 'object') {
@@ -163,10 +168,15 @@ function decorate(target) {
163
168
 
164
169
 
165
170
  return decorate(function () {
171
+ var _options$override;
172
+
166
173
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
167
174
  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
175
+ var nextState = state;
168
176
 
169
- var nextState = _this(state, action); // for each entry in the staten
177
+ if (action.type && !(options !== null && options !== void 0 && (_options$override = options.override) !== null && _options$override !== void 0 && _options$override[action.type])) {
178
+ nextState = _this(state, action);
179
+ } // for each entry in the staten
170
180
 
171
181
 
172
182
  Object.keys(nextState).forEach(function (id) {
@@ -189,6 +199,7 @@ function decorate(target) {
189
199
  * @mixin keplerGlReducer.initialState
190
200
  * @memberof keplerGlReducer
191
201
  * @param {Object} iniSt - custom state to be merged with default initial state
202
+ * @param {Object} extraReducers - optional custom reducers in addition to the default `visState`, `mapState`, `mapStyle`, and `uiState`
192
203
  * @public
193
204
  * @example
194
205
  * const myKeplerGlReducer = keplerGlReducer
@@ -199,8 +210,11 @@ function decorate(target) {
199
210
 
200
211
 
201
212
  target.initialState = function initialState(iniSt) {
202
- var merged = mergeInitialState(targetInitialState, iniSt);
203
- var targetReducer = provideInitialState(merged);
213
+ var extraReducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
214
+ // passing through extraInitialStateKeys and extraReducers allows external customization by adding additional subreducers and state beyond the default `visState`, `mapState`, `mapStyle`, and `uiState`
215
+ var extraInitialStateKeys = Object.keys(extraReducers);
216
+ var merged = mergeInitialState(targetInitialState, iniSt, extraInitialStateKeys);
217
+ var targetReducer = provideInitialState(merged, extraReducers);
204
218
  return decorate(targetReducer, merged);
205
219
  };
206
220
 
@@ -232,4 +246,4 @@ function decorate(target) {
232
246
  var keplerGlReducer = decorate(_keplerGlReducer);
233
247
  var _default = keplerGlReducer;
234
248
  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
249
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwicGF5bG9hZCIsImlkIiwibWludCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbml0aWFsVWlTdGF0ZSIsInByZXZpb3VzU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVEZWxldGVFbnRyeSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImhhbmRsZVJlbmFtZUVudHJ5Iiwib2xkSWQiLCJuZXdJZCIsImFjdGlvbiIsImZvckVhY2giLCJ1cGRhdGVJdGVtU3RhdGUiLCJoYW5kbGVycyIsIkFjdGlvblR5cGVzIiwiUkVHSVNURVJfRU5UUlkiLCJERUxFVEVfRU5UUlkiLCJSRU5BTUVfRU5UUlkiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwibmV3U3RhdGUiLCJrZXkiLCJkZWNvcmF0ZSIsInRhcmdldCIsInNhdmVkSW5pdGlhbFN0YXRlIiwidGFyZ2V0SW5pdGlhbFN0YXRlIiwicGx1Z2luIiwiY3VzdG9tUmVkdWNlciIsIm9wdGlvbnMiLCJuZXh0U3RhdGUiLCJ0eXBlIiwib3ZlcnJpZGUiLCJpbmlTdCIsIm1lcmdlZCIsInRhcmdldFJlZHVjZXIiLCJrZXBsZXJHbFJlZHVjZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBO0FBQ0EsSUFBTUEsZ0JBQWdCLEdBQUcsRUFBekI7O0FBRU8sU0FBU0MsbUJBQVQsQ0FBNkJDLFlBQTdCLEVBQTJD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFTixFQUFBQSxNQUFNLENBQUN2QyxZQUFQLEdBQXNCLFNBQVNBLFlBQVQsQ0FBc0JnRCxLQUF0QixFQUFpRDtBQUFBLFFBQXBCL0MsYUFBb0IsdUVBQUosRUFBSTtBQUNyRTtBQUNBLFFBQU1rQyxxQkFBcUIsR0FBR3BCLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZZixhQUFaLENBQTlCO0FBQ0EsUUFBTWdELE1BQU0sR0FBR2pCLGlCQUFpQixDQUFDUyxrQkFBRCxFQUFxQk8sS0FBckIsRUFBNEJiLHFCQUE1QixDQUFoQztBQUNBLFFBQU1lLGFBQWEsR0FBR25ELG1CQUFtQixDQUFDa0QsTUFBRCxFQUFTaEQsYUFBVCxDQUF6QztBQUVBLFdBQU9xQyxRQUFRLENBQUNZLGFBQUQsRUFBZ0JELE1BQWhCLENBQWY7QUFDRCxHQVBEOztBQVNBLFNBQU9WLE1BQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsSUFBTVksZUFBZSxHQUFHYixRQUFRLENBQUNQLGdCQUFELENBQWhDO2VBQ2VvQixlIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtBY3Rpb25UeXBlcywga2VwbGVyR2xJbml0LCBfYWN0aW9uRm9yLCBfdXBkYXRlUHJvcGVydHl9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuXG5pbXBvcnQge2NvcmVSZWR1Y2VyRmFjdG9yeX0gZnJvbSAnLi9jb3JlJztcblxuLy8gSU5JVElBTF9TVEFURVxuY29uc3QgaW5pdGlhbENvcmVTdGF0ZSA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUluaXRpYWxTdGF0ZShpbml0aWFsU3RhdGUsIGV4dHJhUmVkdWNlcnM/KSB7XG4gIGNvbnN0IGNvcmVSZWR1Y2VyID0gY29yZVJlZHVjZXJGYWN0b3J5KGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgY29uc3QgaGFuZGxlUmVnaXN0ZXJFbnRyeSA9IChcbiAgICBzdGF0ZSxcbiAgICB7XG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIGlkLFxuICAgICAgICBtaW50LFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCxcbiAgICAgICAgaW5pdGlhbFVpU3RhdGVcbiAgICAgIH1cbiAgICB9XG4gICkgPT4ge1xuICAgIC8vIGJ5IGRlZmF1bHQsIGFsd2F5cyBjcmVhdGUgYSBtaW50IHN0YXRlIGV2ZW4gaWYgdGhlIHNhbWUgaWQgYWxyZWFkeSBleGlzdFxuICAgIC8vIGlmIHN0YXRlLmlkIGV4aXN0IGFuZCBtaW50PWZhbHNlLCBrZWVwIHRoZSBleGlzdGluZyBzdGF0ZVxuICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBzdGF0ZVtpZF0gJiYgbWludCA9PT0gZmFsc2UgPyBzdGF0ZVtpZF0gOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmVnaXN0ZXIgZW50cnkgdG8ga2VwbGVyLmdsIHBhc3NpbmcgaW4gbWFwYm94IGNvbmZpZyB0byBtYXBTdHlsZVxuICAgICAgLi4uc3RhdGUsXG4gICAgICBbaWRdOiBjb3JlUmVkdWNlcihcbiAgICAgICAgcHJldmlvdXNTdGF0ZSxcbiAgICAgICAga2VwbGVyR2xJbml0KHttYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsLCBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCwgaW5pdGlhbFVpU3RhdGV9KVxuICAgICAgKVxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlRW50cnkgPSAoc3RhdGUsIHtwYXlsb2FkOiBpZH0pID0+XG4gICAgT2JqZWN0LmtleXMoc3RhdGUpLnJlZHVjZShcbiAgICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICAuLi4oY3VyciA9PT0gaWQgPyB7fSA6IHtbY3Vycl06IHN0YXRlW2N1cnJdfSlcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gIGNvbnN0IGhhbmRsZVJlbmFtZUVudHJ5ID0gKHN0YXRlLCB7cGF5bG9hZDoge29sZElkLCBuZXdJZH19KSA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4ue1tjdXJyID09PSBvbGRJZCA/IG5ld0lkIDogY3Vycl06IHN0YXRlW2N1cnJdfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgcmV0dXJuIChzdGF0ZSA9IGluaXRpYWxDb3JlU3RhdGUsIGFjdGlvbikgPT4ge1xuICAgIC8vIHVwZGF0ZSBjaGlsZCBzdGF0ZXNcbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVJdGVtU3RhdGUgPSBjb3JlUmVkdWNlcihzdGF0ZVtpZF0sIF9hY3Rpb25Gb3IoaWQsIGFjdGlvbikpO1xuICAgICAgc3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoc3RhdGUsIGlkLCB1cGRhdGVJdGVtU3RhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gcGVyZm9ybSBhZGRpdGlvbmFsIHN0YXRlIHJlZHVjaW5nIChlLmcuIHN3aXRjaCBhY3Rpb24udHlwZSBldGMuLi4pXG4gICAgY29uc3QgaGFuZGxlcnMgPSB7XG4gICAgICBbQWN0aW9uVHlwZXMuUkVHSVNURVJfRU5UUlldOiBoYW5kbGVSZWdpc3RlckVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLkRFTEVURV9FTlRSWV06IGhhbmRsZURlbGV0ZUVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLlJFTkFNRV9FTlRSWV06IGhhbmRsZVJlbmFtZUVudHJ5XG4gICAgfTtcblxuICAgIC8vIFRPRE86IFVuZGVyc3RhbmQgd2h5IHRoZSBMaW50IHNlZXMgYW4gZXJyb3IgaGVyZSwgd2hpbGUgdGhlIElERSBkb2VzIG5vdC5cbiAgICByZXR1cm4gaGFuZGxlQWN0aW9ucyhoYW5kbGVycywgaW5pdGlhbENvcmVTdGF0ZSkoc3RhdGUsIGFjdGlvbik7XG4gIH07XG59XG5cbmNvbnN0IF9rZXBsZXJHbFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxDb3JlU3RhdGUpO1xuXG5mdW5jdGlvbiBtZXJnZUluaXRpYWxTdGF0ZShzYXZlZCA9IHt9LCBwcm92aWRlZCA9IHt9LCBleHRyYUluaXRpYWxTdGF0ZUtleXM6IHN0cmluZ1tdID0gW10pIHtcbiAgY29uc3Qga2V5cyA9IFsnbWFwU3RhdGUnLCAnbWFwU3R5bGUnLCAndmlzU3RhdGUnLCAndWlTdGF0ZScsIC4uLmV4dHJhSW5pdGlhbFN0YXRlS2V5c107XG5cbiAgLy8gc2hhbGxvdyBtZXJnZSBlYWNoIHJlZHVjZXJcbiAgY29uc3QgbmV3U3RhdGUgPSBrZXlzLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihzYXZlZFtrZXldICYmIHByb3ZpZGVkW2tleV1cbiAgICAgICAgPyB7W2tleV06IHsuLi5zYXZlZFtrZXldLCAuLi5wcm92aWRlZFtrZXldfX1cbiAgICAgICAgOiB7W2tleV06IHNhdmVkW2tleV0gfHwgcHJvdmlkZWRba2V5XSB8fCB7fX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIGRlY29yYXRlKHRhcmdldCwgc2F2ZWRJbml0aWFsU3RhdGUgPSB7fSkge1xuICBjb25zdCB0YXJnZXRJbml0aWFsU3RhdGUgPSBzYXZlZEluaXRpYWxTdGF0ZTtcblxuICAvKipcbiAgICogUmV0dXJucyBhIGtlcGxlci5nbCByZWR1Y2VyIHRoYXQgd2lsbCBhbHNvIHBhc3MgZWFjaCBhY3Rpb24gdGhyb3VnaCBhZGRpdGlvbmFsIHJlZHVjZXJzIHNwaWVjaWZpZWQuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGVpdGhlciBhIHJlZHVjZXIgbWFwIG9yIGEgcmVkdWNlciBmdW5jdGlvbi5cbiAgICogVGhlIHN0YXRlIHBhc3NlZCBpbnRvIHRoZSBhZGRpdGlvbmFsIGFjdGlvbiBoYW5kbGVyIGlzIHRoZSBpbnN0YW5jZSBzdGF0ZS5cbiAgICogSXQgd2lsbCBpbmNsdWRlIGFsbCB0aGUgc3VicmVkdWNlcnMgYHZpc1N0YXRlYCwgYHVpU3RhdGVgLCBgbWFwU3RhdGVgIGFuZCBgbWFwU3R5bGVgLlxuICAgKiBgLnBsdWdpbmAgaXMgb25seSBtZWFudCB0byBiZSBjYWxsZWQgb25jZSB3aGVuIG1vdW50aW5nIHRoZSBrZXBsZXJHbFJlZHVjZXIgdG8gdGhlIHN0b3JlLlxuICAgKiAqKk5vdGUqKiBUaGlzIGlzIGFuIGFkdmFuY2VkIG9wdGlvbiB0byBnaXZlIHlvdSBtb3JlIGZyZWVkb20gdG8gbW9kaWZ5IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUga2VwbGVyLmdsIGluc3RhbmNlLlxuICAgKiBZb3Ugc2hvdWxkIG9ubHkgdXNlIHRoaXMgdG8gYWRkaW5nIGFkZGl0aW9uYWwgYWN0aW9ucyBpbnN0ZWFkIG9mIHJlcGxhY2luZyBkZWZhdWx0IGFjdGlvbnMuXG4gICAqXG4gICAqIEBtaXhpbiBrZXBsZXJHbFJlZHVjZXIucGx1Z2luXG4gICAqIEBtZW1iZXJvZiBrZXBsZXJHbFJlZHVjZXJcbiAgICogQHBhcmFtIHtPYmplY3R8RnVuY3Rpb259IGN1c3RvbVJlZHVjZXIgLSBBIHJlZHVjZXIgbWFwIG9yIGEgcmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdG8gYmUgYXBwbGllZCB0byBjdXN0b20gcmVkdWNlciBsb2dpY1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5vdmVycmlkZSAtIG9iamVjdHMgdGhhdCBkZXNjcmliZSB3aGljaCBhY3Rpb24gdG8gb3ZlcnJpZGUsIGUuZy4ge1tBY3Rpb25UeXBlcy5MQVlFUl9UWVBFX0NIQU5HRV06IHRydWV9XG4gICAqIEBwdWJsaWNcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgbXlLZXBsZXJHbFJlZHVjZXIgPSBrZXBsZXJHbFJlZHVjZXJcbiAgICogIC5wbHVnaW4oe1xuICAgKiAgICAvLyAxLiBhcyByZWR1Y2VyIG1hcFxuICAgKiAgICBISURFX0FORF9TSE9XX1NJREVfUEFORUw6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgIC4uLnN0YXRlLFxuICAgKiAgICAgIHVpU3RhdGU6IHtcbiAgICogICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgICByZWFkT25seTogIXN0YXRlLnVpU3RhdGUucmVhZE9ubHlcbiAgICogICAgICB9XG4gICAqICAgIH0pXG4gICAqICB9KVxuICAgKiAucGx1Z2luKGhhbmRsZUFjdGlvbnMoe1xuICAgKiAgIC8vIDIuIGFzIHJlZHVjZXJcbiAgICogICAnSElERV9NQVBfQ09OVFJPTFMnOiAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgICogICAgIC4uLnN0YXRlLFxuICAgKiAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAuLi5zdGF0ZS51aVN0YXRlLFxuICAgKiAgICAgICBtYXBDb250cm9sczogaGlkZGVuTWFwQ29udHJvbFxuICAgKiAgICAgfVxuICAgKiAgIH0pXG4gICAqIH0sIHt9KSk7XG4gICAqL1xuICB0YXJnZXQucGx1Z2luID0gZnVuY3Rpb24gcGx1Z2luKGN1c3RvbVJlZHVjZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGN1c3RvbVJlZHVjZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBpZiBvbmx5IHByb3ZpZGVkIGEgcmVkdWNlck1hcCwgd3JhcCBpdCBpbiBhIHJlZHVjZXJcbiAgICAgIGN1c3RvbVJlZHVjZXIgPSBoYW5kbGVBY3Rpb25zKGN1c3RvbVJlZHVjZXIsIHt9KTtcbiAgICB9XG5cbiAgICAvLyB1c2UgJ2Z1bmN0aW9uJyBrZXl3b3JkIHRvIGVuYWJsZSAndGhpcydcbiAgICByZXR1cm4gZGVjb3JhdGUoKHN0YXRlID0ge30sIGFjdGlvbjoge3R5cGU/OiBzdHJpbmd9ID0ge30pID0+IHtcbiAgICAgIGxldCBuZXh0U3RhdGUgPSBzdGF0ZTtcbiAgICAgIGlmIChhY3Rpb24udHlwZSAmJiAhb3B0aW9ucz8ub3ZlcnJpZGU/LlthY3Rpb24udHlwZV0pIHtcbiAgICAgICAgbmV4dFN0YXRlID0gdGhpcyhzdGF0ZSwgYWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgLy8gZm9yIGVhY2ggZW50cnkgaW4gdGhlIHN0YXRlblxuICAgICAgT2JqZWN0LmtleXMobmV4dFN0YXRlKS5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgLy8gdXBkYXRlIGNoaWxkIHN0YXRlc1xuICAgICAgICBuZXh0U3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoXG4gICAgICAgICAgbmV4dFN0YXRlLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIGN1c3RvbVJlZHVjZXIobmV4dFN0YXRlW2lkXSwgX2FjdGlvbkZvcihpZCwgYWN0aW9uKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJuIGEgcmVkdWNlciB0aGF0IGluaXRpYXRlZCB3aXRoIGN1c3RvbSBpbml0aWFsIHN0YXRlLlxuICAgKiBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhbiBvYmplY3QgbWFwcGluZyBmcm9tIGBzdWJyZWR1Y2VyYCBuYW1lIHRvIGN1c3RvbSBzdWJyZWR1Y2VyIHN0YXRlLFxuICAgKiB3aGljaCB3aWxsIGJlIHNoYWxsb3cgKiptZXJnZWQqKiB3aXRoIGRlZmF1bHQgaW5pdGlhbCBzdGF0ZS5cbiAgICpcbiAgICogRGVmYXVsdCBzdWJyZWR1Y2VyIHN0YXRlOlxuICAgKiAgLSBbYHZpc1N0YXRlYF0oLi92aXMtc3RhdGUubWQjSU5JVElBTF9WSVNfU1RBVEUpXG4gICAqICAtIFtgbWFwU3RhdGVgXSguL21hcC1zdGF0ZS5tZCNJTklUSUFMX01BUF9TVEFURSlcbiAgICogIC0gW2BtYXBTdHlsZWBdKC4vbWFwLXN0eWxlLm1kI0lOSVRJQUxfTUFQX1NUWUxFKVxuICAgKiAgLSBbYHVpU3RhdGVgXSguL3VpLXN0YXRlLm1kI0lOSVRJQUxfVUlfU1RBVEUpXG4gICAqIEBtaXhpbiBrZXBsZXJHbFJlZHVjZXIuaW5pdGlhbFN0YXRlXG4gICAqIEBtZW1iZXJvZiBrZXBsZXJHbFJlZHVjZXJcbiAgICogQHBhcmFtIHtPYmplY3R9IGluaVN0IC0gY3VzdG9tIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGRlZmF1bHQgaW5pdGlhbCBzdGF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gZXh0cmFSZWR1Y2VycyAtIG9wdGlvbmFsIGN1c3RvbSByZWR1Y2VycyBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBgdmlzU3RhdGVgLCBgbWFwU3RhdGVgLCBgbWFwU3R5bGVgLCBhbmQgYHVpU3RhdGVgXG4gICAqIEBwdWJsaWNcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgbXlLZXBsZXJHbFJlZHVjZXIgPSBrZXBsZXJHbFJlZHVjZXJcbiAgICogIC5pbml0aWFsU3RhdGUoe1xuICAgKiAgICB1aVN0YXRlOiB7cmVhZE9ubHk6IHRydWV9XG4gICAqICB9KTtcbiAgICovXG4gIHRhcmdldC5pbml0aWFsU3RhdGUgPSBmdW5jdGlvbiBpbml0aWFsU3RhdGUoaW5pU3QsIGV4dHJhUmVkdWNlcnMgPSB7fSkge1xuICAgIC8vIHBhc3NpbmcgdGhyb3VnaCBleHRyYUluaXRpYWxTdGF0ZUtleXMgYW5kIGV4dHJhUmVkdWNlcnMgYWxsb3dzIGV4dGVybmFsIGN1c3RvbWl6YXRpb24gYnkgYWRkaW5nIGFkZGl0aW9uYWwgc3VicmVkdWNlcnMgYW5kIHN0YXRlIGJleW9uZCB0aGUgZGVmYXVsdCBgdmlzU3RhdGVgLCBgbWFwU3RhdGVgLCBgbWFwU3R5bGVgLCBhbmQgYHVpU3RhdGVgXG4gICAgY29uc3QgZXh0cmFJbml0aWFsU3RhdGVLZXlzID0gT2JqZWN0LmtleXMoZXh0cmFSZWR1Y2Vycyk7XG4gICAgY29uc3QgbWVyZ2VkID0gbWVyZ2VJbml0aWFsU3RhdGUodGFyZ2V0SW5pdGlhbFN0YXRlLCBpbmlTdCwgZXh0cmFJbml0aWFsU3RhdGVLZXlzKTtcbiAgICBjb25zdCB0YXJnZXRSZWR1Y2VyID0gcHJvdmlkZUluaXRpYWxTdGF0ZShtZXJnZWQsIGV4dHJhUmVkdWNlcnMpO1xuXG4gICAgcmV0dXJuIGRlY29yYXRlKHRhcmdldFJlZHVjZXIsIG1lcmdlZCk7XG4gIH07XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuLyoqXG4gKiBLZXBsZXIuZ2wgcmVkdWNlciB0byBiZSBtb3VudGVkIHRvIHlvdXIgc3RvcmUuIFlvdSBjYW4gbW91bnQgYGtlcGxlckdsUmVkdWNlcmAgYXQgcHJvcGVydHkgYGtlcGxlckdsYCwgaWYgeW91IGNob29zZVxuICogdG8gbW91bnQgaXQgYXQgYW5vdGhlciBhZGRyZXNzIGUuZy4gYGZvb2AgeW91IHdpbGwgbmVlZCB0byBzcGVjaWZ5IGl0IHdoZW4geW91IG1vdW50IGBLZXBsZXJHbGAgY29tcG9uZW50IGluIHlvdXIgYXBwIHdpdGggYGdldFN0YXRlOiBzdGF0ZSA9PiBzdGF0ZS5mb29gXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciBmcm9tICdrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogaW1wb3J0IHtjcmVhdGVTdG9yZSwgY29tYmluZVJlZHVjZXJzLCBhcHBseU1pZGRsZXdhcmUsIGNvbXBvc2V9IGZyb20gJ3JlZHV4JztcbiAqIGltcG9ydCB7dGFza01pZGRsZXdhcmV9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuICpcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogICAvLyA8LS0gbW91bnQga2VwbGVyLmdsIHJlZHVjZXIgaW4geW91ciBhcHBcbiAqICAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqXG4gKiAgIC8vIFlvdXIgb3RoZXIgcmVkdWNlcnMgaGVyZVxuICogICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIC8vIHVzaW5nIGNyZWF0ZVN0b3JlXG4gKiBleHBvcnQgZGVmYXVsdCBjcmVhdGVTdG9yZShyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGFwcGx5TWlkZGxld2FyZSh0YXNrTWlkZGxld2FyZSkpO1xuICovXG5jb25zdCBrZXBsZXJHbFJlZHVjZXIgPSBkZWNvcmF0ZShfa2VwbGVyR2xSZWR1Y2VyKTtcbmV4cG9ydCBkZWZhdWx0IGtlcGxlckdsUmVkdWNlcjtcbiJdfQ==
@@ -29,6 +29,7 @@ export declare const DEFAULT_MAP_CONTROLS: MapControls;
29
29
  * @property imageDataUri Default: `''`,
30
30
  * @property exporting Default: `false`
31
31
  * @property error Default: `false`
32
+ * @property escapeXhtmlForWebpack Default: `true`
32
33
  * @public
33
34
  */
34
35
  export declare const DEFAULT_EXPORT_IMAGE: ExportImage;
@@ -88,12 +89,12 @@ export declare const DEFAULT_EXPORT_MAP: ExportMap;
88
89
  * @property notifications Default: `[]`
89
90
  * @property notifications Default: `[]`
90
91
  * @property loadFiles
92
+ * @property isSidePanelCloseButtonVisible Default: `true`
91
93
  * @public
92
94
  */
93
95
  export declare const INITIAL_UI_STATE: UiState;
94
96
  /**
95
97
  * @memberof uiStateUpdaters
96
-
97
98
  */
98
99
  export declare const initUiStateUpdater: (state: UiState, action: {
99
100
  type?: typeof ActionTypes['INIT'];
@@ -137,6 +138,12 @@ export declare const showExportDropdownUpdater: (state: UiState, { payload: id }
137
138
  * @public
138
139
  */
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;
140
147
  /**
141
148
  * Toggle active map control panel
142
149
  * @memberof uiStateUpdaters
@@ -352,4 +359,4 @@ export declare const setLocaleUpdater: (state: UiState, { payload: { locale } }:
352
359
  * @returns nextState
353
360
  * @public
354
361
  */
355
- export declare const toggleLayerPanelListViewUpdater: (state: UiState, { payload: listView }: UIStateActions.ToggleLayerPanelListViewAction) => UiState;
362
+ export declare const togglePanelListViewUpdater: (state: UiState, { payload: { panelId, listView } }: UIStateActions.TogglePanelListViewAction) => UiState;