@kepler.gl/reducers 3.1.0-alpha.0 → 3.1.0-alpha.2
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 +79 -0
- package/dist/combined-updaters.js +358 -0
- package/dist/composer-helpers.d.ts +24 -0
- package/dist/composer-helpers.js +101 -0
- package/dist/composers.d.ts +18 -0
- package/dist/composers.js +23 -0
- package/dist/core.d.ts +64 -0
- package/dist/core.js +105 -0
- package/dist/data-utils.d.ts +12 -0
- package/dist/data-utils.js +57 -0
- package/dist/export-utils.d.ts +21 -0
- package/dist/export-utils.js +91 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +342 -0
- package/dist/interaction-utils.d.ts +29 -0
- package/dist/interaction-utils.js +105 -0
- package/dist/layer-utils.d.ts +96 -0
- package/dist/layer-utils.js +310 -0
- package/dist/map-state-updaters.d.ts +93 -0
- package/dist/map-state-updaters.js +432 -0
- package/dist/map-state.d.ts +75 -0
- package/dist/map-state.js +35 -0
- package/dist/map-style-updaters.d.ts +179 -0
- package/dist/map-style-updaters.js +656 -0
- package/dist/map-style.d.ts +4 -0
- package/dist/map-style.js +34 -0
- package/dist/merger-handler.d.ts +10 -0
- package/dist/merger-handler.js +105 -0
- package/dist/middleware.d.ts +8 -0
- package/dist/middleware.js +27 -0
- package/dist/provider-state-updaters.d.ts +35 -0
- package/dist/provider-state-updaters.js +348 -0
- package/dist/provider-state.d.ts +4 -0
- package/dist/provider-state.js +35 -0
- package/dist/root.d.ts +24 -0
- package/dist/root.js +206 -0
- package/dist/ui-state-updaters.d.ts +362 -0
- package/dist/ui-state-updaters.js +762 -0
- package/dist/ui-state.d.ts +3 -0
- package/dist/ui-state.js +37 -0
- package/dist/vis-state-merger.d.ts +143 -0
- package/dist/vis-state-merger.js +812 -0
- package/dist/vis-state-selectors.d.ts +10 -0
- package/dist/vis-state-selectors.js +30 -0
- package/dist/vis-state-updaters.d.ts +546 -0
- package/dist/vis-state-updaters.js +3338 -0
- package/dist/vis-state.d.ts +155 -0
- package/dist/vis-state.js +36 -0
- package/package.json +17 -17
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.fitBoundsUpdater = exports.INITIAL_MAP_STATE = void 0;
|
|
8
|
+
exports.getMapDimForSplitMap = getMapDimForSplitMap;
|
|
9
|
+
exports.pickViewportPropsFromMapState = pickViewportPropsFromMapState;
|
|
10
|
+
exports.updateMapUpdater = exports.toggleSplitMapViewportUpdater = exports.toggleSplitMapUpdater = exports.togglePerspectiveUpdater = exports.resetMapConfigUpdater = exports.receiveMapConfigUpdater = void 0;
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _geoViewport = _interopRequireDefault(require("@mapbox/geo-viewport"));
|
|
14
|
+
var _booleanWithin = _interopRequireDefault(require("@turf/boolean-within"));
|
|
15
|
+
var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon"));
|
|
16
|
+
var _webMercator = require("@math.gl/web-mercator");
|
|
17
|
+
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
18
|
+
var _lodash = _interopRequireDefault(require("lodash.pick"));
|
|
19
|
+
var _utils = require("@kepler.gl/utils");
|
|
20
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
21
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
|
|
22
|
+
// Copyright contributors to the kepler.gl project
|
|
23
|
+
/**
|
|
24
|
+
* Updaters for `mapState` reducer. Can be used in your root reducer to directly modify kepler.gl's state.
|
|
25
|
+
* Read more about [Using updaters](../advanced-usage/using-updaters.md)
|
|
26
|
+
* @public
|
|
27
|
+
* @example
|
|
28
|
+
*
|
|
29
|
+
* import keplerGlReducer, {mapStateUpdaters} from 'kepler.gl/reducers';
|
|
30
|
+
* // Root Reducer
|
|
31
|
+
* const reducers = combineReducers({
|
|
32
|
+
* keplerGl: keplerGlReducer,
|
|
33
|
+
* app: appReducer
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* const composedReducer = (state, action) => {
|
|
37
|
+
* switch (action.type) {
|
|
38
|
+
* // click button to close side panel
|
|
39
|
+
* case 'CLICK_BUTTON':
|
|
40
|
+
* return {
|
|
41
|
+
* ...state,
|
|
42
|
+
* keplerGl: {
|
|
43
|
+
* ...state.keplerGl,
|
|
44
|
+
* foo: {
|
|
45
|
+
* ...state.keplerGl.foo,
|
|
46
|
+
* mapState: mapStateUpdaters.fitBoundsUpdater(
|
|
47
|
+
* mapState, {payload: [127.34, 31.09, 127.56, 31.59]]}
|
|
48
|
+
* )
|
|
49
|
+
* }
|
|
50
|
+
* }
|
|
51
|
+
* };
|
|
52
|
+
* }
|
|
53
|
+
* return reducers(state, action);
|
|
54
|
+
* };
|
|
55
|
+
*
|
|
56
|
+
* export default composedReducer;
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
60
|
+
// @ts-ignore
|
|
61
|
+
var mapStateUpdaters = null;
|
|
62
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
63
|
+
/**
|
|
64
|
+
* Default initial `mapState`
|
|
65
|
+
* @memberof mapStateUpdaters
|
|
66
|
+
* @constant
|
|
67
|
+
* @property pitch Default: `0`
|
|
68
|
+
* @property bearing Default: `0`
|
|
69
|
+
* @property latitude Default: `37.75043`
|
|
70
|
+
* @property longitude Default: `-122.34679`
|
|
71
|
+
* @property zoom Default: `9`
|
|
72
|
+
* @property dragRotate Default: `false`
|
|
73
|
+
* @property width Default: `800`
|
|
74
|
+
* @property height Default: `800`
|
|
75
|
+
* @property minZoom: `undefined`,
|
|
76
|
+
* @property maxZoom: `undefined`,
|
|
77
|
+
* @property maxBounds: `undefined`,
|
|
78
|
+
* @property isSplit: `false`,
|
|
79
|
+
* @property isViewportSynced: `true`,
|
|
80
|
+
* @property isZoomLocked: `false`,
|
|
81
|
+
* @property splitMapViewports: `[]`
|
|
82
|
+
* @public
|
|
83
|
+
*/
|
|
84
|
+
var INITIAL_MAP_STATE = exports.INITIAL_MAP_STATE = {
|
|
85
|
+
pitch: 0,
|
|
86
|
+
bearing: 0,
|
|
87
|
+
latitude: 37.75043,
|
|
88
|
+
longitude: -122.34679,
|
|
89
|
+
zoom: 9,
|
|
90
|
+
dragRotate: false,
|
|
91
|
+
width: 800,
|
|
92
|
+
height: 800,
|
|
93
|
+
minZoom: undefined,
|
|
94
|
+
maxZoom: undefined,
|
|
95
|
+
maxBounds: undefined,
|
|
96
|
+
isSplit: false,
|
|
97
|
+
isViewportSynced: true,
|
|
98
|
+
isZoomLocked: false,
|
|
99
|
+
splitMapViewports: []
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
/* Updaters */
|
|
103
|
+
/**
|
|
104
|
+
* Update map viewport
|
|
105
|
+
* @memberof mapStateUpdaters
|
|
106
|
+
* @public
|
|
107
|
+
*/
|
|
108
|
+
var updateMapUpdater = exports.updateMapUpdater = function updateMapUpdater(state, action) {
|
|
109
|
+
var _action$payload = action.payload,
|
|
110
|
+
viewport = _action$payload.viewport,
|
|
111
|
+
_action$payload$mapIn = _action$payload.mapIndex,
|
|
112
|
+
mapIndex = _action$payload$mapIn === void 0 ? 0 : _action$payload$mapIn;
|
|
113
|
+
if (state.isViewportSynced) {
|
|
114
|
+
// The `updateViewport` function is typed as (Viewport, Viewport) -> Viewport but here the
|
|
115
|
+
// expected typing is (MapState, Viewport) -> MapState.
|
|
116
|
+
// this could be a potential bug as we treat Viewport and MapState as equal seemingly
|
|
117
|
+
// @ts-expect-error Type 'Viewport' is missing the following properties from type 'MapState': isSplit, isViewportSynced, isZoomLocked, splitMapViewports
|
|
118
|
+
return updateViewport(state, viewport);
|
|
119
|
+
}
|
|
120
|
+
var otherViewportMapIndex = -1;
|
|
121
|
+
var splitMapViewports = state.splitMapViewports.map(function (currentViewport, i) {
|
|
122
|
+
if (i === mapIndex) {
|
|
123
|
+
// update the matching viewport with the newViewport info in the action payload
|
|
124
|
+
return updateViewport(currentViewport, viewport);
|
|
125
|
+
}
|
|
126
|
+
otherViewportMapIndex = i;
|
|
127
|
+
// make no changes to the other viewport (yet)
|
|
128
|
+
return currentViewport;
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// make conditional updates to the other viewport not matching this payload's `mapIndex`
|
|
132
|
+
if (Number.isFinite(otherViewportMapIndex) && otherViewportMapIndex > -1) {
|
|
133
|
+
// width and height are a special case and are always updated
|
|
134
|
+
splitMapViewports[otherViewportMapIndex] = _objectSpread(_objectSpread({}, splitMapViewports[otherViewportMapIndex]), {}, {
|
|
135
|
+
width: splitMapViewports[mapIndex].width,
|
|
136
|
+
height: splitMapViewports[mapIndex].height
|
|
137
|
+
});
|
|
138
|
+
if (state.isZoomLocked) {
|
|
139
|
+
// update the other viewport with the new zoom from the split viewport that was updated with this payload's `mapIndex`
|
|
140
|
+
splitMapViewports[otherViewportMapIndex] = _objectSpread(_objectSpread({}, splitMapViewports[otherViewportMapIndex]), {}, {
|
|
141
|
+
zoom: splitMapViewports[mapIndex].zoom
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), splitMapViewports[mapIndex]), {}, {
|
|
146
|
+
// update the mapState with the new array of split viewports
|
|
147
|
+
splitMapViewports: splitMapViewports
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Fit map viewport to bounds
|
|
153
|
+
* @memberof mapStateUpdaters
|
|
154
|
+
* @public
|
|
155
|
+
*/
|
|
156
|
+
var fitBoundsUpdater = exports.fitBoundsUpdater = function fitBoundsUpdater(state, action) {
|
|
157
|
+
var centerAndZoom = (0, _utils.getCenterAndZoomFromBounds)(action.payload, {
|
|
158
|
+
width: state.width,
|
|
159
|
+
height: state.height
|
|
160
|
+
});
|
|
161
|
+
if (!centerAndZoom) {
|
|
162
|
+
// bounds is invalid
|
|
163
|
+
return state;
|
|
164
|
+
}
|
|
165
|
+
var newState = _objectSpread(_objectSpread({}, state), {}, {
|
|
166
|
+
latitude: centerAndZoom.center[1],
|
|
167
|
+
longitude: centerAndZoom.center[0]
|
|
168
|
+
}, Number.isFinite(centerAndZoom.zoom) ? {
|
|
169
|
+
zoom: centerAndZoom.zoom
|
|
170
|
+
} : {});
|
|
171
|
+
|
|
172
|
+
// if fitting to bounds while split and unsynced
|
|
173
|
+
// copy the new latitude, longitude, and zoom values to each split viewport
|
|
174
|
+
if (newState.splitMapViewports.length) {
|
|
175
|
+
newState.splitMapViewports = newState.splitMapViewports.map(function (currentViewport) {
|
|
176
|
+
return _objectSpread(_objectSpread({}, currentViewport), {}, {
|
|
177
|
+
latitude: newState.latitude,
|
|
178
|
+
longitude: newState.longitude,
|
|
179
|
+
zoom: newState.zoom
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return newState;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Toggle between 3d and 2d map.
|
|
188
|
+
* @memberof mapStateUpdaters
|
|
189
|
+
* @public
|
|
190
|
+
*/
|
|
191
|
+
var togglePerspectiveUpdater = exports.togglePerspectiveUpdater = function togglePerspectiveUpdater(state) {
|
|
192
|
+
var newState = _objectSpread(_objectSpread(_objectSpread({}, state), {
|
|
193
|
+
pitch: state.dragRotate ? 0 : 50,
|
|
194
|
+
bearing: state.dragRotate ? 0 : 24
|
|
195
|
+
}), {}, {
|
|
196
|
+
dragRotate: !state.dragRotate
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// if toggling 3d and 2d while split and unsynced
|
|
200
|
+
// copy the new pitch, bearing, and dragRotate values to each split viewport
|
|
201
|
+
if (newState.splitMapViewports.length) {
|
|
202
|
+
newState.splitMapViewports = newState.splitMapViewports.map(function (currentViewport) {
|
|
203
|
+
return _objectSpread(_objectSpread({}, currentViewport), {}, {
|
|
204
|
+
pitch: newState.pitch,
|
|
205
|
+
bearing: newState.bearing,
|
|
206
|
+
dragRotate: newState.dragRotate
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return newState;
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* reset mapState to initial State
|
|
215
|
+
* @memberof mapStateUpdaters
|
|
216
|
+
* @public
|
|
217
|
+
*/
|
|
218
|
+
var resetMapConfigUpdater = exports.resetMapConfigUpdater = function resetMapConfigUpdater(state) {
|
|
219
|
+
return _objectSpread(_objectSpread(_objectSpread({}, INITIAL_MAP_STATE), state.initialState), {}, {
|
|
220
|
+
initialState: state.initialState
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
// consider case where you have a split map and user wants to reset
|
|
225
|
+
/**
|
|
226
|
+
* Update `mapState` to propagate a new config
|
|
227
|
+
* @memberof mapStateUpdaters
|
|
228
|
+
* @public
|
|
229
|
+
*/
|
|
230
|
+
var receiveMapConfigUpdater = exports.receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _ref) {
|
|
231
|
+
var _ref$payload = _ref.payload,
|
|
232
|
+
_ref$payload$config = _ref$payload.config,
|
|
233
|
+
config = _ref$payload$config === void 0 ? {} : _ref$payload$config,
|
|
234
|
+
_ref$payload$options = _ref$payload.options,
|
|
235
|
+
options = _ref$payload$options === void 0 ? {} : _ref$payload$options,
|
|
236
|
+
_ref$payload$bounds = _ref$payload.bounds,
|
|
237
|
+
bounds = _ref$payload$bounds === void 0 ? null : _ref$payload$bounds;
|
|
238
|
+
/**
|
|
239
|
+
* @type {Partial<MapState>}
|
|
240
|
+
*/
|
|
241
|
+
var mapState = (config || {}).mapState || {};
|
|
242
|
+
// merged received mapState with previous state
|
|
243
|
+
// state also may include properties that are new to an existing, saved project's mapState
|
|
244
|
+
|
|
245
|
+
var mergedState = (0, _deepmerge["default"])(state, mapState, {
|
|
246
|
+
// note: deepmerge by default will merge arrays by concatenating them
|
|
247
|
+
// but we need to overwrite destination arrays with source arrays, if present
|
|
248
|
+
// https://github.com/TehShrike/deepmerge#arraymerge-example-overwrite-target-array
|
|
249
|
+
arrayMerge: function arrayMerge(_destinationArray, sourceArray) {
|
|
250
|
+
return sourceArray;
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// if center map
|
|
255
|
+
// center map will override mapState config
|
|
256
|
+
if (options.centerMap && bounds) {
|
|
257
|
+
mergedState = fitBoundsUpdater(mergedState, {
|
|
258
|
+
payload: bounds
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return _objectSpread(_objectSpread({}, mergedState), getMapDimForSplitMap(mergedState.isSplit, state));
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Toggle between one or split maps
|
|
266
|
+
* @memberof mapStateUpdaters
|
|
267
|
+
* @public
|
|
268
|
+
*/
|
|
269
|
+
var toggleSplitMapUpdater = exports.toggleSplitMapUpdater = function toggleSplitMapUpdater(state) {
|
|
270
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), getMapDimForSplitMap(!state.isSplit, state)), {}, {
|
|
271
|
+
isSplit: !state.isSplit
|
|
272
|
+
}, !state.isSplit === false ? {
|
|
273
|
+
// if toggling to no longer split (single mode) then reset a few properties
|
|
274
|
+
isViewportSynced: true,
|
|
275
|
+
isZoomLocked: false,
|
|
276
|
+
splitMapViewports: []
|
|
277
|
+
} : {});
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Toggle between locked and unlocked split viewports
|
|
282
|
+
* @memberof mapStateUpdaters
|
|
283
|
+
* @public
|
|
284
|
+
*/
|
|
285
|
+
var toggleSplitMapViewportUpdater = exports.toggleSplitMapViewportUpdater = function toggleSplitMapViewportUpdater(state, action) {
|
|
286
|
+
// new map state immediately gets the new, optional payload values for isViewportSynced and/or isZoomLocked
|
|
287
|
+
var newMapState = _objectSpread(_objectSpread({}, state), action.payload || {});
|
|
288
|
+
if (newMapState.isViewportSynced) {
|
|
289
|
+
// switching from unsynced to synced viewports
|
|
290
|
+
newMapState.splitMapViewports = [];
|
|
291
|
+
} else {
|
|
292
|
+
// switching from synced to unsynced viewports
|
|
293
|
+
// or already in unsynced mode and toggling locked zoom
|
|
294
|
+
|
|
295
|
+
if (state.isZoomLocked && !newMapState.isZoomLocked) {
|
|
296
|
+
// switching off locked zoom while unsynced
|
|
297
|
+
// don't copy the mapStates to left and right viewports because there will be zoom "jumping"
|
|
298
|
+
return newMapState;
|
|
299
|
+
}
|
|
300
|
+
if (!state.isZoomLocked && newMapState.isZoomLocked) {
|
|
301
|
+
// switching on locked zoom while unsynced
|
|
302
|
+
// only copy zoom viewport property from the most recently interacted-with viewport to the other
|
|
303
|
+
// TODO: do we want to check for a match a different way, such as a combo of `latitude` and `longitude`?
|
|
304
|
+
var lastUpdatedViewportIndex = newMapState.splitMapViewports.findIndex(function (v) {
|
|
305
|
+
return newMapState.zoom === v.zoom;
|
|
306
|
+
});
|
|
307
|
+
var splitMapViewports = newMapState.splitMapViewports.map(function (currentViewport, i) {
|
|
308
|
+
if (i === lastUpdatedViewportIndex) {
|
|
309
|
+
// no zoom to modify here
|
|
310
|
+
return currentViewport;
|
|
311
|
+
}
|
|
312
|
+
// the other viewport gets the most recently interacted-with viewport's zoom
|
|
313
|
+
// WHY? the viewport the user was last interacting with will set zoom across the board for smooth UX
|
|
314
|
+
return _objectSpread(_objectSpread({}, currentViewport), {}, {
|
|
315
|
+
zoom: newMapState.splitMapViewports[lastUpdatedViewportIndex].zoom
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
newMapState.splitMapViewports = splitMapViewports;
|
|
319
|
+
return newMapState;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// if current viewport is synced, and we are unsyncing it
|
|
323
|
+
// or already in unsynced mode and NOT toggling locked zoom
|
|
324
|
+
// make a fresh copy of the current viewport object, assign it to splitMapViewports[]
|
|
325
|
+
// pickViewportPropsFromMapState is called twice to avoid memory allocation conflicts
|
|
326
|
+
var leftViewport = pickViewportPropsFromMapState(newMapState);
|
|
327
|
+
var rightViewport = pickViewportPropsFromMapState(newMapState);
|
|
328
|
+
newMapState.splitMapViewports = [leftViewport, rightViewport];
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// return new state
|
|
332
|
+
return newMapState;
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
// Helpers
|
|
336
|
+
function getMapDimForSplitMap(isSplit, state) {
|
|
337
|
+
// cases:
|
|
338
|
+
// 1. state split: true - isSplit: true
|
|
339
|
+
// do nothing
|
|
340
|
+
// 2. state split: false - isSplit: false
|
|
341
|
+
// do nothing
|
|
342
|
+
if (state.isSplit === isSplit) {
|
|
343
|
+
return {};
|
|
344
|
+
}
|
|
345
|
+
var width = state.isSplit && !isSplit ?
|
|
346
|
+
// 3. state split: true - isSplit: false
|
|
347
|
+
// double width
|
|
348
|
+
state.width * 2 :
|
|
349
|
+
// 4. state split: false - isSplit: true
|
|
350
|
+
// split width
|
|
351
|
+
state.width / 2;
|
|
352
|
+
return {
|
|
353
|
+
width: width
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
function updateViewportBasedOnBounds(state, newMapState) {
|
|
357
|
+
// Get the new viewport bounds
|
|
358
|
+
var viewportBounds = _geoViewport["default"].bounds([newMapState.longitude, newMapState.latitude], newMapState.zoom, [newMapState.width, newMapState.height], _utils.MAPBOX_TILE_SIZE);
|
|
359
|
+
// Generate turf Polygon from bounds for comparison
|
|
360
|
+
var viewportBoundsPolygon = (0, _bboxPolygon["default"])(viewportBounds);
|
|
361
|
+
// @ts-ignore
|
|
362
|
+
var newStateMaxBounds = newMapState.maxBounds;
|
|
363
|
+
// @ts-ignore
|
|
364
|
+
var maxBoundsPolygon = (0, _bboxPolygon["default"])(newStateMaxBounds);
|
|
365
|
+
|
|
366
|
+
// If maxBounds has changed reset the viewport to snap to bounds
|
|
367
|
+
var hasMaxBoundsChanged = !state.maxBounds || !state.maxBounds.every(function (val, idx) {
|
|
368
|
+
return val === newStateMaxBounds[idx];
|
|
369
|
+
});
|
|
370
|
+
if (hasMaxBoundsChanged) {
|
|
371
|
+
// Check if the newMapState viewport is within maxBounds
|
|
372
|
+
if (!(0, _booleanWithin["default"])(viewportBoundsPolygon, maxBoundsPolygon)) {
|
|
373
|
+
var _fitBounds = (0, _webMercator.fitBounds)({
|
|
374
|
+
width: newMapState.width,
|
|
375
|
+
height: newMapState.width,
|
|
376
|
+
bounds: [[newStateMaxBounds[0], newStateMaxBounds[1]], [newStateMaxBounds[2], newStateMaxBounds[3]]]
|
|
377
|
+
}),
|
|
378
|
+
latitude = _fitBounds.latitude,
|
|
379
|
+
longitude = _fitBounds.longitude,
|
|
380
|
+
zoom = _fitBounds.zoom;
|
|
381
|
+
newMapState = _objectSpread(_objectSpread({}, newMapState), {}, {
|
|
382
|
+
latitude: latitude,
|
|
383
|
+
longitude: longitude
|
|
384
|
+
}, Number.isFinite(zoom) ? {
|
|
385
|
+
zoom: zoom
|
|
386
|
+
} : {});
|
|
387
|
+
}
|
|
388
|
+
return newMapState;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
// Check if the newMapState viewport is within maxBounds
|
|
392
|
+
if (!(0, _booleanWithin["default"])(viewportBoundsPolygon, maxBoundsPolygon)) {
|
|
393
|
+
newMapState = _objectSpread(_objectSpread({}, newMapState), {}, {
|
|
394
|
+
longitude: state.longitude,
|
|
395
|
+
latitude: state.latitude,
|
|
396
|
+
zoom: state.zoom
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
return newMapState;
|
|
400
|
+
}
|
|
401
|
+
function pickViewportPropsFromMapState(state) {
|
|
402
|
+
return (0, _lodash["default"])(state, ['width', 'height', 'zoom', 'pitch', 'bearing', 'latitude', 'longitude', 'dragRotate', 'minZoom', 'maxZoom', 'maxBounds']);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/** Select items from object whose value is not undefined */
|
|
406
|
+
var definedProps = function definedProps(obj) {
|
|
407
|
+
return Object.entries(obj).reduce(function (accu, _ref2) {
|
|
408
|
+
var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
|
|
409
|
+
k = _ref3[0],
|
|
410
|
+
v = _ref3[1];
|
|
411
|
+
return _objectSpread(_objectSpread({}, accu), v !== undefined ? (0, _defineProperty2["default"])({}, k, v) : {});
|
|
412
|
+
}, {});
|
|
413
|
+
};
|
|
414
|
+
function updateViewport(originalViewport, viewportUpdates) {
|
|
415
|
+
var newViewport = _objectSpread(_objectSpread({}, originalViewport), definedProps(viewportUpdates) || {});
|
|
416
|
+
|
|
417
|
+
// Make sure zoom level doesn't go bellow minZoom if defined
|
|
418
|
+
if (newViewport.minZoom && newViewport.zoom && newViewport.zoom < newViewport.minZoom) {
|
|
419
|
+
newViewport.zoom = newViewport.minZoom;
|
|
420
|
+
}
|
|
421
|
+
// Make sure zoom level doesn't go above maxZoom if defined
|
|
422
|
+
if (newViewport.maxZoom && newViewport.zoom && newViewport.zoom > newViewport.maxZoom) {
|
|
423
|
+
newViewport.zoom = newViewport.maxZoom;
|
|
424
|
+
}
|
|
425
|
+
// Limit viewport update based on maxBounds
|
|
426
|
+
if (newViewport.maxBounds && (0, _utils.validateBounds)(newViewport.maxBounds)) {
|
|
427
|
+
// @ts-expect-error Type 'Viewport' is missing the following properties from type 'MapState': isSplit, isViewportSynced, isZoomLocked, splitMapViewports
|
|
428
|
+
newViewport = updateViewportBasedOnBounds(originalViewport, newViewport);
|
|
429
|
+
}
|
|
430
|
+
return newViewport;
|
|
431
|
+
}
|
|
432
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9sb2Rhc2giLCJfdXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1hcFN0YXRlVXBkYXRlcnMiLCJJTklUSUFMX01BUF9TVEFURSIsImV4cG9ydHMiLCJwaXRjaCIsImJlYXJpbmciLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInpvb20iLCJkcmFnUm90YXRlIiwid2lkdGgiLCJoZWlnaHQiLCJtaW5ab29tIiwidW5kZWZpbmVkIiwibWF4Wm9vbSIsIm1heEJvdW5kcyIsImlzU3BsaXQiLCJpc1ZpZXdwb3J0U3luY2VkIiwiaXNab29tTG9ja2VkIiwic3BsaXRNYXBWaWV3cG9ydHMiLCJ1cGRhdGVNYXBVcGRhdGVyIiwic3RhdGUiLCJhY3Rpb24iLCJfYWN0aW9uJHBheWxvYWQiLCJwYXlsb2FkIiwidmlld3BvcnQiLCJfYWN0aW9uJHBheWxvYWQkbWFwSW4iLCJtYXBJbmRleCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiZml0Qm91bmRzVXBkYXRlciIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsIm5ld1N0YXRlIiwiY2VudGVyIiwidG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiaW5pdGlhbFN0YXRlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmIiwiX3JlZiRwYXlsb2FkIiwiX3JlZiRwYXlsb2FkJGNvbmZpZyIsImNvbmZpZyIsIl9yZWYkcGF5bG9hZCRvcHRpb25zIiwib3B0aW9ucyIsIl9yZWYkcGF5bG9hZCRib3VuZHMiLCJib3VuZHMiLCJtYXBTdGF0ZSIsIm1lcmdlZFN0YXRlIiwiZGVlcG1lcmdlIiwiYXJyYXlNZXJnZSIsIl9kZXN0aW5hdGlvbkFycmF5Iiwic291cmNlQXJyYXkiLCJjZW50ZXJNYXAiLCJnZXRNYXBEaW1Gb3JTcGxpdE1hcCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJiYm94UG9seWdvbiIsIm5ld1N0YXRlTWF4Qm91bmRzIiwibWF4Qm91bmRzUG9seWdvbiIsImhhc01heEJvdW5kc0NoYW5nZWQiLCJldmVyeSIsInZhbCIsImlkeCIsImJvb2xlYW5XaXRoaW4iLCJfZml0Qm91bmRzIiwiZml0Qm91bmRzIiwicGljayIsImRlZmluZWRQcm9wcyIsIm9iaiIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2N1IiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwibmV3Vmlld3BvcnQiLCJ2YWxpZGF0ZUJvdW5kcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHtmaXRCb3VuZHN9IGZyb20gJ0BtYXRoLmdsL3dlYi1tZXJjYXRvcic7XG5pbXBvcnQgZGVlcG1lcmdlIGZyb20gJ2RlZXBtZXJnZSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gucGljayc7XG5cbmltcG9ydCB7Z2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsIHZhbGlkYXRlQm91bmRzLCBNQVBCT1hfVElMRV9TSVpFfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TWFwU3RhdGVBY3Rpb25zLCBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCwgQWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01hcFN0YXRlLCBCb3VuZHMsIFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0YXRlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVVwZGF0ZXJzLmZpdEJvdW5kc1VwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0YXRlLCB7cGF5bG9hZDogWzEyNy4zNCwgMzEuMDksIDEyNy41NiwgMzEuNTldXX1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0YXRlYFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHBpdGNoIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGJlYXJpbmcgRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgbGF0aXR1ZGUgRGVmYXVsdDogYDM3Ljc1MDQzYFxuICogQHByb3BlcnR5IGxvbmdpdHVkZSBEZWZhdWx0OiBgLTEyMi4zNDY3OWBcbiAqIEBwcm9wZXJ0eSB6b29tIERlZmF1bHQ6IGA5YFxuICogQHByb3BlcnR5IGRyYWdSb3RhdGUgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IHdpZHRoIERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgaGVpZ2h0IERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgbWluWm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Wm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Qm91bmRzOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBpc1NwbGl0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IGlzVmlld3BvcnRTeW5jZWQ6IGB0cnVlYCxcbiAqIEBwcm9wZXJ0eSBpc1pvb21Mb2NrZWQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgc3BsaXRNYXBWaWV3cG9ydHM6IGBbXWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUFQX1NUQVRFOiBNYXBTdGF0ZSA9IHtcbiAgcGl0Y2g6IDAsXG4gIGJlYXJpbmc6IDAsXG4gIGxhdGl0dWRlOiAzNy43NTA0MyxcbiAgbG9uZ2l0dWRlOiAtMTIyLjM0Njc5LFxuICB6b29tOiA5LFxuICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIG1pblpvb206IHVuZGVmaW5lZCxcbiAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICBtYXhCb3VuZHM6IHVuZGVmaW5lZCxcbiAgaXNTcGxpdDogZmFsc2UsXG4gIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogVXBkYXRlIG1hcCB2aWV3cG9ydFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZU1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVXBkYXRlTWFwVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7dmlld3BvcnQsIG1hcEluZGV4ID0gMH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBpZiAoc3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIFRoZSBgdXBkYXRlVmlld3BvcnRgIGZ1bmN0aW9uIGlzIHR5cGVkIGFzIChWaWV3cG9ydCwgVmlld3BvcnQpIC0+IFZpZXdwb3J0IGJ1dCBoZXJlIHRoZVxuICAgIC8vIGV4cGVjdGVkIHR5cGluZyBpcyAoTWFwU3RhdGUsIFZpZXdwb3J0KSAtPiBNYXBTdGF0ZS5cbiAgICAvLyB0aGlzIGNvdWxkIGJlIGEgcG90ZW50aWFsIGJ1ZyBhcyB3ZSB0cmVhdCBWaWV3cG9ydCBhbmQgTWFwU3RhdGUgYXMgZXF1YWwgc2VlbWluZ2x5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoc3RhdGUsIHZpZXdwb3J0KTtcbiAgfVxuXG4gIGxldCBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSAtMTtcbiAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgIGlmIChpID09PSBtYXBJbmRleCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBtYXRjaGluZyB2aWV3cG9ydCB3aXRoIHRoZSBuZXdWaWV3cG9ydCBpbmZvIGluIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KGN1cnJlbnRWaWV3cG9ydCwgdmlld3BvcnQpO1xuICAgIH1cblxuICAgIG90aGVyVmlld3BvcnRNYXBJbmRleCA9IGk7XG4gICAgLy8gbWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCAoeWV0KVxuICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gIH0pO1xuXG4gIC8vIG1ha2UgY29uZGl0aW9uYWwgdXBkYXRlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgbm90IG1hdGNoaW5nIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgaWYgKE51bWJlci5pc0Zpbml0ZShvdGhlclZpZXdwb3J0TWFwSW5kZXgpICYmIG90aGVyVmlld3BvcnRNYXBJbmRleCA+IC0xKSB7XG4gICAgLy8gd2lkdGggYW5kIGhlaWdodCBhcmUgYSBzcGVjaWFsIGNhc2UgYW5kIGFyZSBhbHdheXMgdXBkYXRlZFxuICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgd2lkdGg6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS53aWR0aCxcbiAgICAgIGhlaWdodDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLmhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG90aGVyIHZpZXdwb3J0IHdpdGggdGhlIG5ldyB6b29tIGZyb20gdGhlIHNwbGl0IHZpZXdwb3J0IHRoYXQgd2FzIHVwZGF0ZWQgd2l0aCB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gICAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgICB6b29tOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uem9vbVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIHVwZGF0ZSB0aGUgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdpdGggdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHNwbGl0IHZpZXdwb3J0XG4gICAgLy8gV0hZPyB0aGlzIGF2b2lkcyB6b29tIGFuZCBib3VuZHMgXCJqdW1waW5nXCIgZHVlIHRvIGEgXCJzdGFsZVwiIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aGVuOlxuICAgIC8vICAxLiB0b2dnbGluZyBvZmYgdGhlIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlIHRvIHN3aXRjaCB0byB0aGUgc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLy8gIDIuIHRvZ2dsaW5nIG9uIHRoZSB6b29tIGxvY2sgZHVyaW5nIGFuIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLi4uc3RhdGUsXG4gICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLFxuICAgIC8vIHVwZGF0ZSB0aGUgbWFwU3RhdGUgd2l0aCB0aGUgbmV3IGFycmF5IG9mIHNwbGl0IHZpZXdwb3J0c1xuICAgIHNwbGl0TWFwVmlld3BvcnRzXG4gIH07XG59O1xuXG4vKipcbiAqIEZpdCBtYXAgdmlld3BvcnQgdG8gYm91bmRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZml0Qm91bmRzVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5GaXRCb3VuZHNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhhY3Rpb24ucGF5bG9hZCwge1xuICAgIHdpZHRoOiBzdGF0ZS53aWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLmhlaWdodFxuICB9KTtcbiAgaWYgKCFjZW50ZXJBbmRab29tKSB7XG4gICAgLy8gYm91bmRzIGlzIGludmFsaWRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXRpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMV0sXG4gICAgbG9uZ2l0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclswXSxcbiAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAuLi4oTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSkgPyB7em9vbTogY2VudGVyQW5kWm9vbS56b29tfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIGZpdHRpbmcgdG8gYm91bmRzIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYW5kIHpvb20gdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgbGF0aXR1ZGU6IG5ld1N0YXRlLmxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlOiBuZXdTdGF0ZS5sb25naXR1ZGUsXG4gICAgICB6b29tOiBuZXdTdGF0ZS56b29tXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLntcbiAgICAgIHBpdGNoOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDUwLFxuICAgICAgYmVhcmluZzogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiAyNFxuICAgIH0sXG4gICAgZHJhZ1JvdGF0ZTogIXN0YXRlLmRyYWdSb3RhdGVcbiAgfTtcblxuICAvLyBpZiB0b2dnbGluZyAzZCBhbmQgMmQgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBwaXRjaCwgYmVhcmluZywgYW5kIGRyYWdSb3RhdGUgdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5ld1N0YXRlLnBpdGNoLFxuICAgICAgYmVhcmluZzogbmV3U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5ld1N0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIHJlc2V0IG1hcFN0YXRlIHRvIGluaXRpYWwgU3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE1hcENvbmZpZ1VwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uSU5JVElBTF9NQVBfU1RBVEUsXG4gIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgaW5pdGlhbFN0YXRlOiBzdGF0ZS5pbml0aWFsU3RhdGVcbn0pO1xuXG4vLyBjb25zaWRlciBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgc3BsaXQgbWFwIGFuZCB1c2VyIHdhbnRzIHRvIHJlc2V0XG4vKipcbiAqIFVwZGF0ZSBgbWFwU3RhdGVgIHRvIHByb3BhZ2F0ZSBhIG5ldyBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBheWxvYWQ6IHtjb25maWcgPSB7fSwgb3B0aW9ucyA9IHt9LCBib3VuZHMgPSBudWxsfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0YXRlID0+IHtcbiAgLyoqXG4gICAqIEB0eXBlIHtQYXJ0aWFsPE1hcFN0YXRlPn1cbiAgICovXG4gIGNvbnN0IG1hcFN0YXRlID0gKGNvbmZpZyB8fCB7fSkubWFwU3RhdGUgfHwge307XG4gIC8vIG1lcmdlZCByZWNlaXZlZCBtYXBTdGF0ZSB3aXRoIHByZXZpb3VzIHN0YXRlXG4gIC8vIHN0YXRlIGFsc28gbWF5IGluY2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBuZXcgdG8gYW4gZXhpc3RpbmcsIHNhdmVkIHByb2plY3QncyBtYXBTdGF0ZVxuXG4gIGxldCBtZXJnZWRTdGF0ZSA9IGRlZXBtZXJnZTxNYXBTdGF0ZT4oc3RhdGUsIG1hcFN0YXRlLCB7XG4gICAgLy8gbm90ZTogZGVlcG1lcmdlIGJ5IGRlZmF1bHQgd2lsbCBtZXJnZSBhcnJheXMgYnkgY29uY2F0ZW5hdGluZyB0aGVtXG4gICAgLy8gYnV0IHdlIG5lZWQgdG8gb3ZlcndyaXRlIGRlc3RpbmF0aW9uIGFycmF5cyB3aXRoIHNvdXJjZSBhcnJheXMsIGlmIHByZXNlbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vVGVoU2hyaWtlL2RlZXBtZXJnZSNhcnJheW1lcmdlLWV4YW1wbGUtb3ZlcndyaXRlLXRhcmdldC1hcnJheVxuICAgIGFycmF5TWVyZ2U6IChfZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpID0+IHNvdXJjZUFycmF5XG4gIH0pO1xuXG4gIC8vIGlmIGNlbnRlciBtYXBcbiAgLy8gY2VudGVyIG1hcCB3aWxsIG92ZXJyaWRlIG1hcFN0YXRlIGNvbmZpZ1xuICBpZiAob3B0aW9ucy5jZW50ZXJNYXAgJiYgYm91bmRzKSB7XG4gICAgbWVyZ2VkU3RhdGUgPSBmaXRCb3VuZHNVcGRhdGVyKG1lcmdlZFN0YXRlLCB7XG4gICAgICBwYXlsb2FkOiBib3VuZHNcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubWVyZ2VkU3RhdGUsXG4gICAgLy8gdXBkYXRlIHdpZHRoIGlmIGBpc1NwbGl0YCBoYXMgY2hhbmdlZFxuICAgIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKG1lcmdlZFN0YXRlLmlzU3BsaXQsIHN0YXRlKVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBvbmUgb3Igc3BsaXQgbWFwc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAoIXN0YXRlLmlzU3BsaXQsIHN0YXRlKSxcbiAgaXNTcGxpdDogIXN0YXRlLmlzU3BsaXQsXG4gIC4uLighc3RhdGUuaXNTcGxpdCA9PT0gZmFsc2VcbiAgICA/IHtcbiAgICAgICAgLy8gaWYgdG9nZ2xpbmcgdG8gbm8gbG9uZ2VyIHNwbGl0IChzaW5nbGUgbW9kZSkgdGhlbiByZXNldCBhIGZldyBwcm9wZXJ0aWVzXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfVxuICAgIDoge30pXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGJvdW5kczogW1xuICAgICAgICAgIFtuZXdTdGF0ZU1heEJvdW5kc1swXSwgbmV3U3RhdGVNYXhCb3VuZHNbMV1dLFxuICAgICAgICAgIFtuZXdTdGF0ZU1heEJvdW5kc1syXSwgbmV3U3RhdGVNYXhCb3VuZHNbM11dXG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBuZXdNYXBTdGF0ZSA9IHtcbiAgICAgICAgLi4ubmV3TWFwU3RhdGUsXG4gICAgICAgIGxhdGl0dWRlLFxuICAgICAgICBsb25naXR1ZGUsXG4gICAgICAgIC8vIEZvciBtYXJnaW5hbCBvciBpbnZhbGlkIGJvdW5kcywgem9vbSBtYXkgYmUgTmFOLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBhIHZhbGlkIHZhbHVlIGluIG9yZGVyXG4gICAgICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAgICAgLi4uKE51bWJlci5pc0Zpbml0ZSh6b29tKSA/IHt6b29tfSA6IHt9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIG5ld01hcFN0YXRlIHZpZXdwb3J0IGlzIHdpdGhpbiBtYXhCb3VuZHNcbiAgaWYgKCFib29sZWFuV2l0aGluKHZpZXdwb3J0Qm91bmRzUG9seWdvbiwgbWF4Qm91bmRzUG9seWdvbikpIHtcbiAgICBuZXdNYXBTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgbG9uZ2l0dWRlOiBzdGF0ZS5sb25naXR1ZGUsXG4gICAgICBsYXRpdHVkZTogc3RhdGUubGF0aXR1ZGUsXG4gICAgICB6b29tOiBzdGF0ZS56b29tXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBuZXdNYXBTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKHN0YXRlOiBNYXBTdGF0ZSk6IFZpZXdwb3J0IHtcbiAgcmV0dXJuIHBpY2soc3RhdGUsIFtcbiAgICAnd2lkdGgnLFxuICAgICdoZWlnaHQnLFxuICAgICd6b29tJyxcbiAgICAncGl0Y2gnLFxuICAgICdiZWFyaW5nJyxcbiAgICAnbGF0aXR1ZGUnLFxuICAgICdsb25naXR1ZGUnLFxuICAgICdkcmFnUm90YXRlJyxcbiAgICAnbWluWm9vbScsXG4gICAgJ21heFpvb20nLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBiZWxsb3cgbWluWm9vbSBpZiBkZWZpbmVkXG4gIGlmIChuZXdWaWV3cG9ydC5taW5ab29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSA8IG5ld1ZpZXdwb3J0Lm1pblpvb20pIHtcbiAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgfVxuICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGFib3ZlIG1heFpvb20gaWYgZGVmaW5lZFxuICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1heFpvb207XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBuZXdWaWV3cG9ydDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEs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
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export declare const mapStateReducerFactory: (initialState?: {}) => import("redux-actions").ReduxCompatibleReducer<{
|
|
2
|
+
isViewportSynced: boolean;
|
|
3
|
+
isZoomLocked: boolean;
|
|
4
|
+
pitch: number;
|
|
5
|
+
bearing: number;
|
|
6
|
+
latitude: number;
|
|
7
|
+
longitude: number;
|
|
8
|
+
zoom: number;
|
|
9
|
+
dragRotate: boolean;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
minZoom?: number | undefined;
|
|
13
|
+
maxZoom?: number | undefined;
|
|
14
|
+
maxBounds?: import("@kepler.gl/types").Bounds | undefined;
|
|
15
|
+
initialState?: any;
|
|
16
|
+
scale?: number | undefined;
|
|
17
|
+
isSplit: boolean;
|
|
18
|
+
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
19
|
+
}, {
|
|
20
|
+
isViewportSynced: boolean;
|
|
21
|
+
isZoomLocked: boolean;
|
|
22
|
+
pitch: number;
|
|
23
|
+
bearing: number;
|
|
24
|
+
latitude: number;
|
|
25
|
+
longitude: number;
|
|
26
|
+
zoom: number;
|
|
27
|
+
dragRotate: boolean;
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
minZoom?: number | undefined;
|
|
31
|
+
maxZoom?: number | undefined;
|
|
32
|
+
maxBounds?: import("@kepler.gl/types").Bounds | undefined;
|
|
33
|
+
initialState?: any;
|
|
34
|
+
scale?: number | undefined;
|
|
35
|
+
isSplit: boolean;
|
|
36
|
+
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
37
|
+
}>;
|
|
38
|
+
declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
39
|
+
isViewportSynced: boolean;
|
|
40
|
+
isZoomLocked: boolean;
|
|
41
|
+
pitch: number;
|
|
42
|
+
bearing: number;
|
|
43
|
+
latitude: number;
|
|
44
|
+
longitude: number;
|
|
45
|
+
zoom: number;
|
|
46
|
+
dragRotate: boolean;
|
|
47
|
+
width: number;
|
|
48
|
+
height: number;
|
|
49
|
+
minZoom?: number | undefined;
|
|
50
|
+
maxZoom?: number | undefined;
|
|
51
|
+
maxBounds?: import("@kepler.gl/types").Bounds | undefined;
|
|
52
|
+
initialState?: any;
|
|
53
|
+
scale?: number | undefined;
|
|
54
|
+
isSplit: boolean;
|
|
55
|
+
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
56
|
+
}, {
|
|
57
|
+
isViewportSynced: boolean;
|
|
58
|
+
isZoomLocked: boolean;
|
|
59
|
+
pitch: number;
|
|
60
|
+
bearing: number;
|
|
61
|
+
latitude: number;
|
|
62
|
+
longitude: number;
|
|
63
|
+
zoom: number;
|
|
64
|
+
dragRotate: boolean;
|
|
65
|
+
width: number;
|
|
66
|
+
height: number;
|
|
67
|
+
minZoom?: number | undefined;
|
|
68
|
+
maxZoom?: number | undefined;
|
|
69
|
+
maxBounds?: import("@kepler.gl/types").Bounds | undefined;
|
|
70
|
+
initialState?: any;
|
|
71
|
+
scale?: number | undefined;
|
|
72
|
+
isSplit: boolean;
|
|
73
|
+
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
74
|
+
}>;
|
|
75
|
+
export default _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.mapStateReducerFactory = exports["default"] = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _reduxActions = require("redux-actions");
|
|
11
|
+
var _actions = require("@kepler.gl/actions");
|
|
12
|
+
var mapStateUpdaters = _interopRequireWildcard(require("./map-state-updaters"));
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
15
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
|
|
17
|
+
// Copyright contributors to the kepler.gl project
|
|
18
|
+
/**
|
|
19
|
+
* Important: Do not rename `actionHandler` or the assignment pattern of property value.
|
|
20
|
+
* It is used to generate documentation
|
|
21
|
+
*/
|
|
22
|
+
var actionHandler = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _actions.ActionTypes.UPDATE_MAP, mapStateUpdaters.updateMapUpdater), _actions.ActionTypes.FIT_BOUNDS, mapStateUpdaters.fitBoundsUpdater), _actions.ActionTypes.TOGGLE_PERSPECTIVE, mapStateUpdaters.togglePerspectiveUpdater), _actions.ActionTypes.RECEIVE_MAP_CONFIG, mapStateUpdaters.receiveMapConfigUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStateUpdaters.resetMapConfigUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP, mapStateUpdaters.toggleSplitMapUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT, mapStateUpdaters.toggleSplitMapViewportUpdater);
|
|
23
|
+
|
|
24
|
+
/* Reducer */
|
|
25
|
+
var mapStateReducerFactory = exports.mapStateReducerFactory = function mapStateReducerFactory() {
|
|
26
|
+
var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
27
|
+
return (
|
|
28
|
+
// @ts-expect-error
|
|
29
|
+
(0, _reduxActions.handleActions)(actionHandler, _objectSpread(_objectSpread(_objectSpread({}, mapStateUpdaters.INITIAL_MAP_STATE), initialState), {}, {
|
|
30
|
+
initialState: initialState
|
|
31
|
+
}))
|
|
32
|
+
);
|
|
33
|
+
};
|
|
34
|
+
var _default = exports["default"] = mapStateReducerFactory();
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkdXhBY3Rpb25zIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwibWFwU3RhdGVVcGRhdGVycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiYWN0aW9uSGFuZGxlciIsIkFjdGlvblR5cGVzIiwiVVBEQVRFX01BUCIsInVwZGF0ZU1hcFVwZGF0ZXIiLCJGSVRfQk9VTkRTIiwiZml0Qm91bmRzVXBkYXRlciIsIlRPR0dMRV9QRVJTUEVDVElWRSIsInRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciIsIlJFQ0VJVkVfTUFQX0NPTkZJRyIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwiUkVTRVRfTUFQX0NPTkZJRyIsInJlc2V0TWFwQ29uZmlnVXBkYXRlciIsIlRPR0dMRV9TUExJVF9NQVAiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJUT0dHTEVfU1BMSVRfTUFQX1ZJRVdQT1JUIiwidG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIiLCJtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5IiwiZXhwb3J0cyIsImluaXRpYWxTdGF0ZSIsInVuZGVmaW5lZCIsImhhbmRsZUFjdGlvbnMiLCJJTklUSUFMX01BUF9TVEFURSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuaW1wb3J0IHtBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCAqIGFzIG1hcFN0YXRlVXBkYXRlcnMgZnJvbSAnLi9tYXAtc3RhdGUtdXBkYXRlcnMnO1xuXG4vKipcbiAqIEltcG9ydGFudDogRG8gbm90IHJlbmFtZSBgYWN0aW9uSGFuZGxlcmAgb3IgdGhlIGFzc2lnbm1lbnQgcGF0dGVybiBvZiBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEl0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvblxuICovXG5jb25zdCBhY3Rpb25IYW5kbGVyID0ge1xuICBbQWN0aW9uVHlwZXMuVVBEQVRFX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudXBkYXRlTWFwVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkZJVF9CT1VORFNdOiBtYXBTdGF0ZVVwZGF0ZXJzLmZpdEJvdW5kc1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfUEVSU1BFQ1RJVkVdOiBtYXBTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJR106IG1hcFN0YXRlVXBkYXRlcnMucmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRVNFVF9NQVBfQ09ORklHXTogbWFwU3RhdGVVcGRhdGVycy5yZXNldE1hcENvbmZpZ1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfU1BMSVRfTUFQXTogbWFwU3RhdGVVcGRhdGVycy50b2dnbGVTcGxpdE1hcFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfU1BMSVRfTUFQX1ZJRVdQT1JUXTogbWFwU3RhdGVVcGRhdGVycy50b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlclxufTtcblxuLyogUmVkdWNlciAqL1xuZXhwb3J0IGNvbnN0IG1hcFN0YXRlUmVkdWNlckZhY3RvcnkgPSAoaW5pdGlhbFN0YXRlID0ge30pID0+XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgaGFuZGxlQWN0aW9ucyhhY3Rpb25IYW5kbGVyLCB7XG4gICAgLi4ubWFwU3RhdGVVcGRhdGVycy5JTklUSUFMX01BUF9TVEFURSxcbiAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgaW5pdGlhbFN0YXRlXG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5KCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFBeUQsU0FBQUkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFGLHdCQUFBRSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FB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
|