@kepler.gl/mcp 0.0.0-stage → 3.3.0-alpha.20
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/cjs/commands/add-column-command.js +192 -0
- package/dist/cjs/commands/basemap-command.js +80 -0
- package/dist/cjs/commands/boundary-command.js +81 -0
- package/dist/cjs/commands/command-wrappers.js +122 -0
- package/dist/cjs/commands/dataset-context-command.js +87 -0
- package/dist/cjs/commands/index.js +230 -0
- package/dist/cjs/commands/layer-creation-command.js +534 -0
- package/dist/cjs/commands/layer-style-command.js +136 -0
- package/dist/cjs/commands/load-data-command.js +270 -0
- package/dist/cjs/commands/save-data-command.js +118 -0
- package/dist/cjs/commands/split-view-command.js +261 -0
- package/dist/cjs/commands/table-command.js +199 -0
- package/dist/cjs/commands/time-filter-command.js +289 -0
- package/dist/cjs/commands/toggle-time-filter-command.js +155 -0
- package/dist/cjs/commands/types.js +6 -0
- package/dist/cjs/commands/utils.js +536 -0
- package/dist/cjs/commands/view-mode-command.js +94 -0
- package/dist/cjs/index.js +39 -0
- package/dist/cjs/map-contract.js +6 -0
- package/dist/cjs/server/bridge-server.js +435 -0
- package/dist/cjs/server/index.js +31 -0
- package/dist/cjs/server/stdio.js +201 -0
- package/dist/cjs/types.js +30 -0
- package/dist/commands/add-column-command.d.ts +4 -0
- package/dist/commands/basemap-command.d.ts +4 -0
- package/dist/commands/boundary-command.d.ts +4 -0
- package/dist/commands/command-wrappers.d.ts +52 -0
- package/dist/commands/dataset-context-command.d.ts +4 -0
- package/dist/commands/index.d.ts +31 -0
- package/dist/commands/layer-creation-command.d.ts +8 -0
- package/dist/commands/layer-style-command.d.ts +4 -0
- package/dist/commands/load-data-command.d.ts +4 -0
- package/dist/commands/save-data-command.d.ts +4 -0
- package/dist/commands/split-view-command.d.ts +4 -0
- package/dist/commands/table-command.d.ts +4 -0
- package/dist/commands/time-filter-command.d.ts +13 -0
- package/dist/commands/toggle-time-filter-command.d.ts +4 -0
- package/dist/commands/types.d.ts +132 -0
- package/dist/commands/utils.d.ts +138 -0
- package/dist/commands/view-mode-command.d.ts +4 -0
- package/dist/esm/commands/add-column-command.js +185 -0
- package/dist/esm/commands/basemap-command.js +72 -0
- package/dist/esm/commands/boundary-command.js +73 -0
- package/dist/esm/commands/command-wrappers.js +114 -0
- package/dist/esm/commands/dataset-context-command.js +79 -0
- package/dist/esm/commands/index.js +51 -0
- package/dist/esm/commands/layer-creation-command.js +527 -0
- package/dist/esm/commands/layer-style-command.js +130 -0
- package/dist/esm/commands/load-data-command.js +264 -0
- package/dist/esm/commands/save-data-command.js +112 -0
- package/dist/esm/commands/split-view-command.js +255 -0
- package/dist/esm/commands/table-command.js +194 -0
- package/dist/esm/commands/time-filter-command.js +280 -0
- package/dist/esm/commands/toggle-time-filter-command.js +147 -0
- package/dist/esm/commands/types.js +3 -0
- package/dist/esm/commands/utils.js +521 -0
- package/dist/esm/commands/view-mode-command.js +86 -0
- package/dist/esm/index.js +20 -0
- package/dist/esm/map-contract.js +3 -0
- package/dist/esm/server/bridge-server.js +428 -0
- package/dist/esm/server/index.js +13 -0
- package/dist/esm/server/stdio.js +198 -0
- package/dist/esm/types.js +24 -0
- package/dist/index.d.ts +15 -0
- package/dist/map-contract.d.ts +31 -0
- package/dist/server/bridge-server.d.ts +53 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/stdio.d.ts +2 -0
- package/dist/types.d.ts +24 -0
- package/package.json +84 -4
- package/skill/kepler/SKILL.md +438 -0
- package/skill/kepler/skill.yaml +4 -0
- package/README.md +0 -3
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.addTimeFilterCommandId = exports.INTERVAL_MILLIS = void 0;
|
|
8
|
+
exports.detectIntervalFromDomain = detectIntervalFromDomain;
|
|
9
|
+
exports.getAddTimeFilterCommand = getAddTimeFilterCommand;
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _zod = require("zod");
|
|
13
|
+
var _actions = require("@kepler.gl/actions");
|
|
14
|
+
// SPDX-License-Identifier: MIT
|
|
15
|
+
// Copyright contributors to the kepler.gl project
|
|
16
|
+
|
|
17
|
+
var MILLIS_SECOND = 1000;
|
|
18
|
+
var MILLIS_MINUTE = 60 * MILLIS_SECOND;
|
|
19
|
+
var MILLIS_HOUR = 60 * MILLIS_MINUTE;
|
|
20
|
+
var MILLIS_DAY = 24 * MILLIS_HOUR;
|
|
21
|
+
var MILLIS_WEEK = 7 * MILLIS_DAY;
|
|
22
|
+
var MILLIS_MONTH = 30 * MILLIS_DAY;
|
|
23
|
+
var MILLIS_3_MONTH = 91 * MILLIS_DAY;
|
|
24
|
+
var MILLIS_YEAR = 365 * MILLIS_DAY;
|
|
25
|
+
var INTERVAL_MILLIS = exports.INTERVAL_MILLIS = {
|
|
26
|
+
'1-second': MILLIS_SECOND,
|
|
27
|
+
'1-minute': MILLIS_MINUTE,
|
|
28
|
+
'1-hour': MILLIS_HOUR,
|
|
29
|
+
'1-day': MILLIS_DAY,
|
|
30
|
+
'1-week': MILLIS_WEEK,
|
|
31
|
+
'1-month': MILLIS_MONTH,
|
|
32
|
+
'3-month': MILLIS_3_MONTH,
|
|
33
|
+
'1-year': MILLIS_YEAR
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Infer a sensible animation interval from a time filter's domain and (when
|
|
38
|
+
* available) the actual distinct timestamps in the dataset. Mirrors the logic
|
|
39
|
+
* used by spatial-agent's `detectIntervalFromDomain` so the skill-path behaves
|
|
40
|
+
* identically.
|
|
41
|
+
*/
|
|
42
|
+
function detectIntervalFromDomain(domain, mappedValues) {
|
|
43
|
+
var span = domain[1] - domain[0];
|
|
44
|
+
if (span <= 0) return '1-year';
|
|
45
|
+
var numUniqueSteps;
|
|
46
|
+
if (mappedValues && mappedValues.length > 0) {
|
|
47
|
+
var unique = new Set(mappedValues.filter(function (v) {
|
|
48
|
+
return v != null;
|
|
49
|
+
}));
|
|
50
|
+
numUniqueSteps = unique.size;
|
|
51
|
+
} else {
|
|
52
|
+
numUniqueSteps = 2;
|
|
53
|
+
}
|
|
54
|
+
if (numUniqueSteps <= 1) return '1-year';
|
|
55
|
+
var avgGap = span / Math.max(numUniqueSteps - 1, 1);
|
|
56
|
+
if (avgGap >= MILLIS_YEAR * 0.8) return '1-year';
|
|
57
|
+
if (avgGap >= MILLIS_MONTH * 2.5) return '3-month';
|
|
58
|
+
if (avgGap >= MILLIS_MONTH * 0.8) return '1-month';
|
|
59
|
+
if (avgGap >= MILLIS_DAY * 5) return '1-week';
|
|
60
|
+
if (avgGap >= MILLIS_DAY * 0.8) return '1-day';
|
|
61
|
+
if (avgGap >= MILLIS_HOUR * 0.8) return '1-hour';
|
|
62
|
+
if (avgGap >= MILLIS_MINUTE * 0.8) return '1-minute';
|
|
63
|
+
return '1-second';
|
|
64
|
+
}
|
|
65
|
+
var sleep = function sleep(ms) {
|
|
66
|
+
return new Promise(function (resolve) {
|
|
67
|
+
return setTimeout(resolve, ms);
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
var addTimeFilterCommandId = exports.addTimeFilterCommandId = 'map.add-time-filter';
|
|
71
|
+
function getAddTimeFilterCommand(ctx) {
|
|
72
|
+
return {
|
|
73
|
+
id: addTimeFilterCommandId,
|
|
74
|
+
name: 'Add time filter',
|
|
75
|
+
group: 'Map',
|
|
76
|
+
description: "Add a time-range filter to animate a NON-trip layer over a TIMESTAMP/DATE column. The time controller appears at the bottom of the map.\n\nDO NOT call this for a trip layer \u2014 trips have built-in time animation.\n\nThe dataset and a layer for it must already exist on the map (e.g. from map.add-layer or map.load-data).\n\nPass the datasetName and the dateTimeColumn to animate over. The interval is auto-detected from the data when omitted; pass it explicitly to override.",
|
|
77
|
+
metadata: {
|
|
78
|
+
readOnly: false,
|
|
79
|
+
riskLevel: 'medium',
|
|
80
|
+
idempotent: false
|
|
81
|
+
},
|
|
82
|
+
inputSchema: _zod.z.object({
|
|
83
|
+
datasetName: _zod.z.string().describe('The name (label) or id of the dataset to animate.'),
|
|
84
|
+
dateTimeColumn: _zod.z.string().describe('A TIMESTAMP or DATE column in the dataset. Do NOT pass an integer/string epoch column — build a real TIMESTAMP column first.'),
|
|
85
|
+
interval: _zod.z["enum"](['1-second', '1-minute', '1-hour', '1-day', '1-week', '1-month', '3-month', '1-year']).optional().describe('Animation step. Auto-detected from the data span and distinct timestamps when omitted.')
|
|
86
|
+
}),
|
|
87
|
+
execute: function () {
|
|
88
|
+
var _execute = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(_execCtx, input) {
|
|
89
|
+
var _ref, datasetName, dateTimeColumn, interval, _dataset$fields, _visState$filters, _ctx$getVisState$filt3, _resolvedInterval, visState, datasets, datasetId, dataset, filterField, _dataset$fields2, filters, existingFilterIdx, filterIdx, filterId, attempt, _ctx$getVisState$filt, _ctx$getVisState$filt2, currentFilters, targetFilter, resolvedInterval, _ctx$getVisState$filt5, _dataset$fields$index, _dataset$fields3, mappedValues, fieldIdx, rows, MAX_SAMPLES, step, i, val, ts, datasetBins, _attempt, _ctx$getVisState$filt4, updatedFilter, _timeBins$datasetId, timeBins, bins, finalFilter, _INTERVAL_MILLIS, domainStart, windowSize;
|
|
90
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
91
|
+
while (1) switch (_context.prev = _context.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
_ref = input !== null && input !== void 0 ? input : {}, datasetName = _ref.datasetName, dateTimeColumn = _ref.dateTimeColumn, interval = _ref.interval;
|
|
94
|
+
_context.prev = 1;
|
|
95
|
+
if (!(interval !== undefined && (typeof interval !== 'string' || !Object.prototype.hasOwnProperty.call(INTERVAL_MILLIS, interval)))) {
|
|
96
|
+
_context.next = 4;
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
throw new Error("Invalid interval \"".concat(String(interval), "\". Must be one of: ").concat(Object.keys(INTERVAL_MILLIS).join(', '), "."));
|
|
100
|
+
case 4:
|
|
101
|
+
visState = ctx.getVisState();
|
|
102
|
+
datasets = visState.datasets;
|
|
103
|
+
datasetId = Object.keys(datasets).find(function (dataId) {
|
|
104
|
+
return datasets[dataId].label === datasetName || dataId === datasetName;
|
|
105
|
+
});
|
|
106
|
+
if (datasetId) {
|
|
107
|
+
_context.next = 9;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
throw new Error("Dataset ".concat(datasetName, " not found."));
|
|
111
|
+
case 9:
|
|
112
|
+
dataset = datasets[datasetId];
|
|
113
|
+
filterField = (_dataset$fields = dataset.fields) === null || _dataset$fields === void 0 ? void 0 : _dataset$fields.find(function (f) {
|
|
114
|
+
return f.name === dateTimeColumn;
|
|
115
|
+
});
|
|
116
|
+
if (filterField) {
|
|
117
|
+
_context.next = 13;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
throw new Error("Column ".concat(dateTimeColumn, " not found in dataset ").concat(datasetName, ". Available: ").concat((_dataset$fields2 = dataset.fields) === null || _dataset$fields2 === void 0 ? void 0 : _dataset$fields2.map(function (f) {
|
|
121
|
+
return f.name;
|
|
122
|
+
}).join(', ')));
|
|
123
|
+
case 13:
|
|
124
|
+
if (!(filterField.type !== 'timestamp' && filterField.type !== 'date')) {
|
|
125
|
+
_context.next = 15;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
throw new Error("Column ".concat(dateTimeColumn, " is of type \"").concat(filterField.type, "\", not timestamp/date. Build a real TIMESTAMP column first (Kepler.gl cannot animate on integer/string epochs)."));
|
|
129
|
+
case 15:
|
|
130
|
+
// Explicitly typed: `VisState.filters` is untyped (index signature) and
|
|
131
|
+
// strict consumers (e.g. kepler-assistant, which vendors this module)
|
|
132
|
+
// would otherwise flag the `.findIndex(f => …)` callback as implicit any.
|
|
133
|
+
filters = (_visState$filters = visState.filters) !== null && _visState$filters !== void 0 ? _visState$filters : [];
|
|
134
|
+
existingFilterIdx = filters.findIndex(function (f) {
|
|
135
|
+
return (Array.isArray(f.dataId) ? f.dataId.includes(datasetId) : f.dataId === datasetId) && (Array.isArray(f.name) ? f.name.includes(dateTimeColumn) : f.name === dateTimeColumn);
|
|
136
|
+
});
|
|
137
|
+
if (!(existingFilterIdx >= 0)) {
|
|
138
|
+
_context.next = 22;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
filterIdx = existingFilterIdx;
|
|
142
|
+
filterId = filters[existingFilterIdx].id;
|
|
143
|
+
_context.next = 36;
|
|
144
|
+
break;
|
|
145
|
+
case 22:
|
|
146
|
+
filterIdx = filters.length;
|
|
147
|
+
ctx.dispatch((0, _actions.addFilter)(datasetId));
|
|
148
|
+
ctx.dispatch((0, _actions.setFilter)(filterIdx, 'name', dateTimeColumn));
|
|
149
|
+
// Poll for the filter entry to appear instead of a fixed sleep: on
|
|
150
|
+
// slower devices the filter (and its id) may not be available yet,
|
|
151
|
+
// and a fixed delay would leave filterId as an empty string, making
|
|
152
|
+
// the later setFilterAnimationWindow({id: filterId, ...}) behave
|
|
153
|
+
// unpredictably.
|
|
154
|
+
filterId = '';
|
|
155
|
+
attempt = 0;
|
|
156
|
+
case 27:
|
|
157
|
+
if (!(attempt < 10 && !filterId)) {
|
|
158
|
+
_context.next = 34;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
_context.next = 30;
|
|
162
|
+
return sleep(100);
|
|
163
|
+
case 30:
|
|
164
|
+
filterId = (_ctx$getVisState$filt = (_ctx$getVisState$filt2 = ctx.getVisState().filters) === null || _ctx$getVisState$filt2 === void 0 || (_ctx$getVisState$filt2 = _ctx$getVisState$filt2[filterIdx]) === null || _ctx$getVisState$filt2 === void 0 ? void 0 : _ctx$getVisState$filt2.id) !== null && _ctx$getVisState$filt !== void 0 ? _ctx$getVisState$filt : '';
|
|
165
|
+
case 31:
|
|
166
|
+
attempt++;
|
|
167
|
+
_context.next = 27;
|
|
168
|
+
break;
|
|
169
|
+
case 34:
|
|
170
|
+
if (filterId) {
|
|
171
|
+
_context.next = 36;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
throw new Error("Timed out waiting for the time filter on column \"".concat(dateTimeColumn, "\" to be created. Please try again."));
|
|
175
|
+
case 36:
|
|
176
|
+
currentFilters = (_ctx$getVisState$filt3 = ctx.getVisState().filters) !== null && _ctx$getVisState$filt3 !== void 0 ? _ctx$getVisState$filt3 : [];
|
|
177
|
+
targetFilter = currentFilters[filterIdx];
|
|
178
|
+
resolvedInterval = interval;
|
|
179
|
+
if (!(targetFilter !== null && targetFilter !== void 0 && targetFilter.domain && targetFilter.domain.length === 2)) {
|
|
180
|
+
_context.next = 59;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
if (!resolvedInterval) {
|
|
184
|
+
fieldIdx = (_dataset$fields$index = (_dataset$fields3 = dataset.fields) === null || _dataset$fields3 === void 0 ? void 0 : _dataset$fields3.indexOf(filterField)) !== null && _dataset$fields$index !== void 0 ? _dataset$fields$index : -1;
|
|
185
|
+
if (fieldIdx >= 0 && dataset.dataContainer) {
|
|
186
|
+
rows = dataset.dataContainer.numRows();
|
|
187
|
+
mappedValues = [];
|
|
188
|
+
// Sample a bounded number of rows — iterating every row can freeze
|
|
189
|
+
// the UI thread on large datasets, and a sample is enough for a
|
|
190
|
+
// reasonable interval estimate.
|
|
191
|
+
MAX_SAMPLES = 1000;
|
|
192
|
+
step = Math.max(1, Math.floor(rows / MAX_SAMPLES));
|
|
193
|
+
for (i = 0; i < rows; i += step) {
|
|
194
|
+
val = dataset.dataContainer.valueAt(i, fieldIdx);
|
|
195
|
+
if (val != null) {
|
|
196
|
+
ts = typeof val === 'number' ? val : new Date(val).getTime();
|
|
197
|
+
if (!isNaN(ts)) mappedValues.push(ts);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
resolvedInterval = detectIntervalFromDomain(targetFilter.domain, mappedValues);
|
|
202
|
+
}
|
|
203
|
+
ctx.dispatch((0, _actions.setFilter)(filterIdx, 'plotType', {
|
|
204
|
+
interval: resolvedInterval
|
|
205
|
+
}));
|
|
206
|
+
ctx.dispatch((0, _actions.setFilterAnimationWindow)({
|
|
207
|
+
id: filterId,
|
|
208
|
+
animationWindow: 'free'
|
|
209
|
+
}));
|
|
210
|
+
|
|
211
|
+
// Poll for timeBins to become available (kepler computes them async).
|
|
212
|
+
_attempt = 0;
|
|
213
|
+
case 44:
|
|
214
|
+
if (!(_attempt < 10)) {
|
|
215
|
+
_context.next = 57;
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
_context.next = 47;
|
|
219
|
+
return sleep(200);
|
|
220
|
+
case 47:
|
|
221
|
+
updatedFilter = (_ctx$getVisState$filt4 = ctx.getVisState().filters) === null || _ctx$getVisState$filt4 === void 0 ? void 0 : _ctx$getVisState$filt4[filterIdx];
|
|
222
|
+
if (!(updatedFilter !== null && updatedFilter !== void 0 && updatedFilter.domain && updatedFilter.domain.length === 2)) {
|
|
223
|
+
_context.next = 54;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
// timeBins is keyed by dataset id, then by interval:
|
|
227
|
+
// {[dataId]: {[interval]: bins[]}}. Look up the bins for THIS
|
|
228
|
+
// filter's dataset — grabbing the first entry via
|
|
229
|
+
// Object.values(timeBins)[0] would pick the wrong dataset's bins
|
|
230
|
+
// when multiple datasets/filters exist, animating against the
|
|
231
|
+
// wrong time window.
|
|
232
|
+
timeBins = updatedFilter.timeBins;
|
|
233
|
+
bins = timeBins === null || timeBins === void 0 || (_timeBins$datasetId = timeBins[datasetId]) === null || _timeBins$datasetId === void 0 ? void 0 : _timeBins$datasetId[resolvedInterval];
|
|
234
|
+
if (!(bins && bins.length > 0)) {
|
|
235
|
+
_context.next = 54;
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
datasetBins = bins;
|
|
239
|
+
return _context.abrupt("break", 57);
|
|
240
|
+
case 54:
|
|
241
|
+
_attempt++;
|
|
242
|
+
_context.next = 44;
|
|
243
|
+
break;
|
|
244
|
+
case 57:
|
|
245
|
+
finalFilter = (_ctx$getVisState$filt5 = ctx.getVisState().filters) === null || _ctx$getVisState$filt5 === void 0 ? void 0 : _ctx$getVisState$filt5[filterIdx];
|
|
246
|
+
if (finalFilter !== null && finalFilter !== void 0 && finalFilter.domain && finalFilter.domain.length === 2) {
|
|
247
|
+
if (datasetBins && datasetBins.length > 0) {
|
|
248
|
+
ctx.dispatch((0, _actions.setFilterAnimationTime)(filterIdx, 'value', [datasetBins[0].x0, datasetBins[0].x1]));
|
|
249
|
+
} else {
|
|
250
|
+
domainStart = finalFilter.domain[0];
|
|
251
|
+
windowSize = (_INTERVAL_MILLIS = INTERVAL_MILLIS[resolvedInterval]) !== null && _INTERVAL_MILLIS !== void 0 ? _INTERVAL_MILLIS : MILLIS_YEAR;
|
|
252
|
+
ctx.dispatch((0, _actions.setFilterAnimationTime)(filterIdx, 'value', [domainStart, domainStart + windowSize]));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
case 59:
|
|
256
|
+
return _context.abrupt("return", {
|
|
257
|
+
success: true,
|
|
258
|
+
commandId: addTimeFilterCommandId,
|
|
259
|
+
data: {
|
|
260
|
+
details: "Time filter added on column \"".concat(dateTimeColumn, "\" for dataset \"").concat(datasetName, "\" (interval: ").concat((_resolvedInterval = resolvedInterval) !== null && _resolvedInterval !== void 0 ? _resolvedInterval : 'auto', ", filter index: ").concat(filterIdx, "). The time controller is now visible at the bottom of the map."),
|
|
261
|
+
filterIndex: filterIdx,
|
|
262
|
+
interval: resolvedInterval
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
case 62:
|
|
266
|
+
_context.prev = 62;
|
|
267
|
+
_context.t0 = _context["catch"](1);
|
|
268
|
+
return _context.abrupt("return", {
|
|
269
|
+
success: false,
|
|
270
|
+
commandId: addTimeFilterCommandId,
|
|
271
|
+
error: _context.t0 instanceof Error ? _context.t0.message : 'Unknown error',
|
|
272
|
+
data: {
|
|
273
|
+
instruction: 'Check that the dataset exists, the column is a TIMESTAMP/DATE, and a layer for the dataset is already on the map. Do not retry more than once.'
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
case 65:
|
|
277
|
+
case "end":
|
|
278
|
+
return _context.stop();
|
|
279
|
+
}
|
|
280
|
+
}, _callee, null, [[1, 62]]);
|
|
281
|
+
}));
|
|
282
|
+
function execute(_x, _x2) {
|
|
283
|
+
return _execute.apply(this, arguments);
|
|
284
|
+
}
|
|
285
|
+
return execute;
|
|
286
|
+
}()
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfem9kIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwiTUlMTElTX1NFQ09ORCIsIk1JTExJU19NSU5VVEUiLCJNSUxMSVNfSE9VUiIsIk1JTExJU19EQVkiLCJNSUxMSVNfV0VFSyIsIk1JTExJU19NT05USCIsIk1JTExJU18zX01PTlRIIiwiTUlMTElTX1lFQVIiLCJJTlRFUlZBTF9NSUxMSVMiLCJleHBvcnRzIiwiZGV0ZWN0SW50ZXJ2YWxGcm9tRG9tYWluIiwiZG9tYWluIiwibWFwcGVkVmFsdWVzIiwic3BhbiIsIm51bVVuaXF1ZVN0ZXBzIiwibGVuZ3RoIiwidW5pcXVlIiwiU2V0IiwiZmlsdGVyIiwidiIsInNpemUiLCJhdmdHYXAiLCJNYXRoIiwibWF4Iiwic2xlZXAiLCJtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImFkZFRpbWVGaWx0ZXJDb21tYW5kSWQiLCJnZXRBZGRUaW1lRmlsdGVyQ29tbWFuZCIsImN0eCIsImlkIiwibmFtZSIsImdyb3VwIiwiZGVzY3JpcHRpb24iLCJtZXRhZGF0YSIsInJlYWRPbmx5Iiwicmlza0xldmVsIiwiaWRlbXBvdGVudCIsImlucHV0U2NoZW1hIiwieiIsIm9iamVjdCIsImRhdGFzZXROYW1lIiwic3RyaW5nIiwiZGVzY3JpYmUiLCJkYXRlVGltZUNvbHVtbiIsImludGVydmFsIiwib3B0aW9uYWwiLCJleGVjdXRlIiwiX2V4ZWN1dGUiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9leGVjQ3R4IiwiaW5wdXQiLCJfcmVmIiwiX2RhdGFzZXQkZmllbGRzIiwiX3Zpc1N0YXRlJGZpbHRlcnMiLCJfY3R4JGdldFZpc1N0YXRlJGZpbHQzIiwiX3Jlc29sdmVkSW50ZXJ2YWwiLCJ2aXNTdGF0ZSIsImRhdGFzZXRzIiwiZGF0YXNldElkIiwiZGF0YXNldCIsImZpbHRlckZpZWxkIiwiX2RhdGFzZXQkZmllbGRzMiIsImZpbHRlcnMiLCJleGlzdGluZ0ZpbHRlcklkeCIsImZpbHRlcklkeCIsImZpbHRlcklkIiwiYXR0ZW1wdCIsIl9jdHgkZ2V0VmlzU3RhdGUkZmlsdCIsIl9jdHgkZ2V0VmlzU3RhdGUkZmlsdDIiLCJjdXJyZW50RmlsdGVycyIsInRhcmdldEZpbHRlciIsInJlc29sdmVkSW50ZXJ2YWwiLCJfY3R4JGdldFZpc1N0YXRlJGZpbHQ1IiwiX2RhdGFzZXQkZmllbGRzJGluZGV4IiwiX2RhdGFzZXQkZmllbGRzMyIsImZpZWxkSWR4Iiwicm93cyIsIk1BWF9TQU1QTEVTIiwic3RlcCIsImkiLCJ2YWwiLCJ0cyIsImRhdGFzZXRCaW5zIiwiX2F0dGVtcHQiLCJfY3R4JGdldFZpc1N0YXRlJGZpbHQ0IiwidXBkYXRlZEZpbHRlciIsIl90aW1lQmlucyRkYXRhc2V0SWQiLCJ0aW1lQmlucyIsImJpbnMiLCJmaW5hbEZpbHRlciIsIl9JTlRFUlZBTF9NSUxMSVMiLCJkb21haW5TdGFydCIsIndpbmRvd1NpemUiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidW5kZWZpbmVkIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiRXJyb3IiLCJjb25jYXQiLCJTdHJpbmciLCJrZXlzIiwiam9pbiIsImdldFZpc1N0YXRlIiwiZmluZCIsImRhdGFJZCIsImxhYmVsIiwiZmllbGRzIiwiZiIsIm1hcCIsInR5cGUiLCJmaW5kSW5kZXgiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsImRpc3BhdGNoIiwiYWRkRmlsdGVyIiwic2V0RmlsdGVyIiwiaW5kZXhPZiIsImRhdGFDb250YWluZXIiLCJudW1Sb3dzIiwiZmxvb3IiLCJ2YWx1ZUF0IiwiRGF0ZSIsImdldFRpbWUiLCJpc05hTiIsInB1c2giLCJzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3ciLCJhbmltYXRpb25XaW5kb3ciLCJhYnJ1cHQiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwieDAiLCJ4MSIsInN1Y2Nlc3MiLCJjb21tYW5kSWQiLCJkYXRhIiwiZGV0YWlscyIsImZpbHRlckluZGV4IiwidDAiLCJlcnJvciIsIm1lc3NhZ2UiLCJpbnN0cnVjdGlvbiIsInN0b3AiLCJfeCIsIl94MiIsImFwcGx5IiwiYXJndW1lbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RpbWUtZmlsdGVyLWNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHR5cGUge1Jvb21Db21tYW5kfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB0eXBlIEtlcGxlclRhYmxlIGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHR5cGUge0RhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7XG4gIGFkZEZpbHRlcixcbiAgc2V0RmlsdGVyLFxuICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lLFxuICBzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3dcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB0eXBlIHtLZXBsZXJDb250ZXh0fSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgSW50ZXJ2YWxLZXkgPVxuICB8ICcxLXNlY29uZCdcbiAgfCAnMS1taW51dGUnXG4gIHwgJzEtaG91cidcbiAgfCAnMS1kYXknXG4gIHwgJzEtd2VlaydcbiAgfCAnMS1tb250aCdcbiAgfCAnMy1tb250aCdcbiAgfCAnMS15ZWFyJztcblxuY29uc3QgTUlMTElTX1NFQ09ORCA9IDFfMDAwO1xuY29uc3QgTUlMTElTX01JTlVURSA9IDYwICogTUlMTElTX1NFQ09ORDtcbmNvbnN0IE1JTExJU19IT1VSID0gNjAgKiBNSUxMSVNfTUlOVVRFO1xuY29uc3QgTUlMTElTX0RBWSA9IDI0ICogTUlMTElTX0hPVVI7XG5jb25zdCBNSUxMSVNfV0VFSyA9IDcgKiBNSUxMSVNfREFZO1xuY29uc3QgTUlMTElTX01PTlRIID0gMzAgKiBNSUxMSVNfREFZO1xuY29uc3QgTUlMTElTXzNfTU9OVEggPSA5MSAqIE1JTExJU19EQVk7XG5jb25zdCBNSUxMSVNfWUVBUiA9IDM2NSAqIE1JTExJU19EQVk7XG5cbmV4cG9ydCBjb25zdCBJTlRFUlZBTF9NSUxMSVM6IFJlY29yZDxJbnRlcnZhbEtleSwgbnVtYmVyPiA9IHtcbiAgJzEtc2Vjb25kJzogTUlMTElTX1NFQ09ORCxcbiAgJzEtbWludXRlJzogTUlMTElTX01JTlVURSxcbiAgJzEtaG91cic6IE1JTExJU19IT1VSLFxuICAnMS1kYXknOiBNSUxMSVNfREFZLFxuICAnMS13ZWVrJzogTUlMTElTX1dFRUssXG4gICcxLW1vbnRoJzogTUlMTElTX01PTlRILFxuICAnMy1tb250aCc6IE1JTExJU18zX01PTlRILFxuICAnMS15ZWFyJzogTUlMTElTX1lFQVJcbn07XG5cbi8qKlxuICogSW5mZXIgYSBzZW5zaWJsZSBhbmltYXRpb24gaW50ZXJ2YWwgZnJvbSBhIHRpbWUgZmlsdGVyJ3MgZG9tYWluIGFuZCAod2hlblxuICogYXZhaWxhYmxlKSB0aGUgYWN0dWFsIGRpc3RpbmN0IHRpbWVzdGFtcHMgaW4gdGhlIGRhdGFzZXQuIE1pcnJvcnMgdGhlIGxvZ2ljXG4gKiB1c2VkIGJ5IHNwYXRpYWwtYWdlbnQncyBgZGV0ZWN0SW50ZXJ2YWxGcm9tRG9tYWluYCBzbyB0aGUgc2tpbGwtcGF0aCBiZWhhdmVzXG4gKiBpZGVudGljYWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEludGVydmFsRnJvbURvbWFpbihcbiAgZG9tYWluOiBbbnVtYmVyLCBudW1iZXJdLFxuICBtYXBwZWRWYWx1ZXM/OiBudW1iZXJbXVxuKTogSW50ZXJ2YWxLZXkge1xuICBjb25zdCBzcGFuID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICBpZiAoc3BhbiA8PSAwKSByZXR1cm4gJzEteWVhcic7XG5cbiAgbGV0IG51bVVuaXF1ZVN0ZXBzOiBudW1iZXI7XG4gIGlmIChtYXBwZWRWYWx1ZXMgJiYgbWFwcGVkVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB1bmlxdWUgPSBuZXcgU2V0KG1hcHBlZFZhbHVlcy5maWx0ZXIodiA9PiB2ICE9IG51bGwpKTtcbiAgICBudW1VbmlxdWVTdGVwcyA9IHVuaXF1ZS5zaXplO1xuICB9IGVsc2Uge1xuICAgIG51bVVuaXF1ZVN0ZXBzID0gMjtcbiAgfVxuXG4gIGlmIChudW1VbmlxdWVTdGVwcyA8PSAxKSByZXR1cm4gJzEteWVhcic7XG5cbiAgY29uc3QgYXZnR2FwID0gc3BhbiAvIE1hdGgubWF4KG51bVVuaXF1ZVN0ZXBzIC0gMSwgMSk7XG5cbiAgaWYgKGF2Z0dhcCA+PSBNSUxMSVNfWUVBUiAqIDAuOCkgcmV0dXJuICcxLXllYXInO1xuICBpZiAoYXZnR2FwID49IE1JTExJU19NT05USCAqIDIuNSkgcmV0dXJuICczLW1vbnRoJztcbiAgaWYgKGF2Z0dhcCA+PSBNSUxMSVNfTU9OVEggKiAwLjgpIHJldHVybiAnMS1tb250aCc7XG4gIGlmIChhdmdHYXAgPj0gTUlMTElTX0RBWSAqIDUpIHJldHVybiAnMS13ZWVrJztcbiAgaWYgKGF2Z0dhcCA+PSBNSUxMSVNfREFZICogMC44KSByZXR1cm4gJzEtZGF5JztcbiAgaWYgKGF2Z0dhcCA+PSBNSUxMSVNfSE9VUiAqIDAuOCkgcmV0dXJuICcxLWhvdXInO1xuICBpZiAoYXZnR2FwID49IE1JTExJU19NSU5VVEUgKiAwLjgpIHJldHVybiAnMS1taW51dGUnO1xuICByZXR1cm4gJzEtc2Vjb25kJztcbn1cblxuY29uc3Qgc2xlZXAgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG5cbmV4cG9ydCBjb25zdCBhZGRUaW1lRmlsdGVyQ29tbWFuZElkID0gJ21hcC5hZGQtdGltZS1maWx0ZXInIGFzIGNvbnN0O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkVGltZUZpbHRlckNvbW1hbmQoY3R4OiBLZXBsZXJDb250ZXh0KTogUm9vbUNvbW1hbmQge1xuICByZXR1cm4ge1xuICAgIGlkOiBhZGRUaW1lRmlsdGVyQ29tbWFuZElkLFxuICAgIG5hbWU6ICdBZGQgdGltZSBmaWx0ZXInLFxuICAgIGdyb3VwOiAnTWFwJyxcbiAgICBkZXNjcmlwdGlvbjogYEFkZCBhIHRpbWUtcmFuZ2UgZmlsdGVyIHRvIGFuaW1hdGUgYSBOT04tdHJpcCBsYXllciBvdmVyIGEgVElNRVNUQU1QL0RBVEUgY29sdW1uLiBUaGUgdGltZSBjb250cm9sbGVyIGFwcGVhcnMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbWFwLlxuXG5ETyBOT1QgY2FsbCB0aGlzIGZvciBhIHRyaXAgbGF5ZXIg4oCUIHRyaXBzIGhhdmUgYnVpbHQtaW4gdGltZSBhbmltYXRpb24uXG5cblRoZSBkYXRhc2V0IGFuZCBhIGxheWVyIGZvciBpdCBtdXN0IGFscmVhZHkgZXhpc3Qgb24gdGhlIG1hcCAoZS5nLiBmcm9tIG1hcC5hZGQtbGF5ZXIgb3IgbWFwLmxvYWQtZGF0YSkuXG5cblBhc3MgdGhlIGRhdGFzZXROYW1lIGFuZCB0aGUgZGF0ZVRpbWVDb2x1bW4gdG8gYW5pbWF0ZSBvdmVyLiBUaGUgaW50ZXJ2YWwgaXMgYXV0by1kZXRlY3RlZCBmcm9tIHRoZSBkYXRhIHdoZW4gb21pdHRlZDsgcGFzcyBpdCBleHBsaWNpdGx5IHRvIG92ZXJyaWRlLmAsXG4gICAgbWV0YWRhdGE6IHtyZWFkT25seTogZmFsc2UsIHJpc2tMZXZlbDogJ21lZGl1bScsIGlkZW1wb3RlbnQ6IGZhbHNlfSxcbiAgICBpbnB1dFNjaGVtYTogei5vYmplY3Qoe1xuICAgICAgZGF0YXNldE5hbWU6IHouc3RyaW5nKCkuZGVzY3JpYmUoJ1RoZSBuYW1lIChsYWJlbCkgb3IgaWQgb2YgdGhlIGRhdGFzZXQgdG8gYW5pbWF0ZS4nKSxcbiAgICAgIGRhdGVUaW1lQ29sdW1uOiB6XG4gICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAuZGVzY3JpYmUoXG4gICAgICAgICAgJ0EgVElNRVNUQU1QIG9yIERBVEUgY29sdW1uIGluIHRoZSBkYXRhc2V0LiBEbyBOT1QgcGFzcyBhbiBpbnRlZ2VyL3N0cmluZyBlcG9jaCBjb2x1bW4g4oCUIGJ1aWxkIGEgcmVhbCBUSU1FU1RBTVAgY29sdW1uIGZpcnN0LidcbiAgICAgICAgKSxcbiAgICAgIGludGVydmFsOiB6XG4gICAgICAgIC5lbnVtKFsnMS1zZWNvbmQnLCAnMS1taW51dGUnLCAnMS1ob3VyJywgJzEtZGF5JywgJzEtd2VlaycsICcxLW1vbnRoJywgJzMtbW9udGgnLCAnMS15ZWFyJ10pXG4gICAgICAgIC5vcHRpb25hbCgpXG4gICAgICAgIC5kZXNjcmliZShcbiAgICAgICAgICAnQW5pbWF0aW9uIHN0ZXAuIEF1dG8tZGV0ZWN0ZWQgZnJvbSB0aGUgZGF0YSBzcGFuIGFuZCBkaXN0aW5jdCB0aW1lc3RhbXBzIHdoZW4gb21pdHRlZC4nXG4gICAgICAgIClcbiAgICB9KSBhcyBhbnksXG4gICAgZXhlY3V0ZTogYXN5bmMgKF9leGVjQ3R4LCBpbnB1dCkgPT4ge1xuICAgICAgY29uc3Qge2RhdGFzZXROYW1lLCBkYXRlVGltZUNvbHVtbiwgaW50ZXJ2YWx9ID0gKGlucHV0ID8/IHt9KSBhcyB7XG4gICAgICAgIGRhdGFzZXROYW1lOiBzdHJpbmc7XG4gICAgICAgIGRhdGVUaW1lQ29sdW1uOiBzdHJpbmc7XG4gICAgICAgIGludGVydmFsPzogSW50ZXJ2YWxLZXk7XG4gICAgICB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gUnVudGltZSBndWFyZDogdGhlIGJyaWRnZS93ZWJNQ1AgY2FsbCBleGVjdXRlIHdpdGhvdXQgem9kIHBhcnNpbmcsXG4gICAgICAgIC8vIHNvIGFuIGludmFsaWQgaW50ZXJ2YWwgbXVzdCBub3QgYmUgd3JpdHRlbiBpbnRvIGtlcGxlciBmaWx0ZXIgc3RhdGVcbiAgICAgICAgLy8gKHBsb3RUeXBlLmludGVydmFsKS4gVXNlIGFuIG93bi1wcm9wZXJ0eSBjaGVjayDigJQgYGluYCBtYXRjaGVzXG4gICAgICAgIC8vIGluaGVyaXRlZCBwcm9wZXJ0aWVzIChlLmcuIFwidG9TdHJpbmdcIiksIHNvIGEgY3JhZnRlZCBpbnRlcnZhbCBjb3VsZFxuICAgICAgICAvLyBvdGhlcndpc2UgYnlwYXNzIHRoZSBndWFyZCDigJQgYW5kIHJlcXVpcmUgYSBzdHJpbmcgdmFsdWUuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBpbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgKHR5cGVvZiBpbnRlcnZhbCAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSU5URVJWQUxfTUlMTElTLCBpbnRlcnZhbCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGludGVydmFsIFwiJHtTdHJpbmcoaW50ZXJ2YWwpfVwiLiBNdXN0IGJlIG9uZSBvZjogJHtPYmplY3Qua2V5cyhcbiAgICAgICAgICAgICAgSU5URVJWQUxfTUlMTElTXG4gICAgICAgICAgICApLmpvaW4oJywgJyl9LmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZpc1N0YXRlID0gY3R4LmdldFZpc1N0YXRlKCk7XG4gICAgICAgIGNvbnN0IGRhdGFzZXRzOiBEYXRhc2V0cyA9IHZpc1N0YXRlLmRhdGFzZXRzO1xuXG4gICAgICAgIGNvbnN0IGRhdGFzZXRJZCA9IE9iamVjdC5rZXlzKGRhdGFzZXRzKS5maW5kKFxuICAgICAgICAgIGRhdGFJZCA9PiBkYXRhc2V0c1tkYXRhSWRdLmxhYmVsID09PSBkYXRhc2V0TmFtZSB8fCBkYXRhSWQgPT09IGRhdGFzZXROYW1lXG4gICAgICAgICk7XG4gICAgICAgIGlmICghZGF0YXNldElkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYXRhc2V0ICR7ZGF0YXNldE5hbWV9IG5vdCBmb3VuZC5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbZGF0YXNldElkXSBhcyBLZXBsZXJUYWJsZTtcblxuICAgICAgICBjb25zdCBmaWx0ZXJGaWVsZCA9IGRhdGFzZXQuZmllbGRzPy5maW5kKGYgPT4gZi5uYW1lID09PSBkYXRlVGltZUNvbHVtbik7XG4gICAgICAgIGlmICghZmlsdGVyRmllbGQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ29sdW1uICR7ZGF0ZVRpbWVDb2x1bW59IG5vdCBmb3VuZCBpbiBkYXRhc2V0ICR7ZGF0YXNldE5hbWV9LiBBdmFpbGFibGU6ICR7ZGF0YXNldC5maWVsZHNcbiAgICAgICAgICAgICAgPy5tYXAoZiA9PiBmLm5hbWUpXG4gICAgICAgICAgICAgIC5qb2luKCcsICcpfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJGaWVsZC50eXBlICE9PSAndGltZXN0YW1wJyAmJiBmaWx0ZXJGaWVsZC50eXBlICE9PSAnZGF0ZScpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ29sdW1uICR7ZGF0ZVRpbWVDb2x1bW59IGlzIG9mIHR5cGUgXCIke2ZpbHRlckZpZWxkLnR5cGV9XCIsIG5vdCB0aW1lc3RhbXAvZGF0ZS4gQnVpbGQgYSByZWFsIFRJTUVTVEFNUCBjb2x1bW4gZmlyc3QgKEtlcGxlci5nbCBjYW5ub3QgYW5pbWF0ZSBvbiBpbnRlZ2VyL3N0cmluZyBlcG9jaHMpLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXhwbGljaXRseSB0eXBlZDogYFZpc1N0YXRlLmZpbHRlcnNgIGlzIHVudHlwZWQgKGluZGV4IHNpZ25hdHVyZSkgYW5kXG4gICAgICAgIC8vIHN0cmljdCBjb25zdW1lcnMgKGUuZy4ga2VwbGVyLWFzc2lzdGFudCwgd2hpY2ggdmVuZG9ycyB0aGlzIG1vZHVsZSlcbiAgICAgICAgLy8gd291bGQgb3RoZXJ3aXNlIGZsYWcgdGhlIGAuZmluZEluZGV4KGYgPT4g4oCmKWAgY2FsbGJhY2sgYXMgaW1wbGljaXQgYW55LlxuICAgICAgICBjb25zdCBmaWx0ZXJzOiBhbnlbXSA9IHZpc1N0YXRlLmZpbHRlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nRmlsdGVySWR4ID0gZmlsdGVycy5maW5kSW5kZXgoXG4gICAgICAgICAgZiA9PlxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoZi5kYXRhSWQpID8gZi5kYXRhSWQuaW5jbHVkZXMoZGF0YXNldElkKSA6IGYuZGF0YUlkID09PSBkYXRhc2V0SWQpICYmXG4gICAgICAgICAgICAoQXJyYXkuaXNBcnJheShmLm5hbWUpID8gZi5uYW1lLmluY2x1ZGVzKGRhdGVUaW1lQ29sdW1uKSA6IGYubmFtZSA9PT0gZGF0ZVRpbWVDb2x1bW4pXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGZpbHRlcklkeDogbnVtYmVyO1xuICAgICAgICBsZXQgZmlsdGVySWQ6IHN0cmluZztcblxuICAgICAgICBpZiAoZXhpc3RpbmdGaWx0ZXJJZHggPj0gMCkge1xuICAgICAgICAgIGZpbHRlcklkeCA9IGV4aXN0aW5nRmlsdGVySWR4O1xuICAgICAgICAgIGZpbHRlcklkID0gZmlsdGVyc1tleGlzdGluZ0ZpbHRlcklkeF0uaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsdGVySWR4ID0gZmlsdGVycy5sZW5ndGg7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKGFkZEZpbHRlcihkYXRhc2V0SWQpKTtcbiAgICAgICAgICBjdHguZGlzcGF0Y2goc2V0RmlsdGVyKGZpbHRlcklkeCwgJ25hbWUnLCBkYXRlVGltZUNvbHVtbikpO1xuICAgICAgICAgIC8vIFBvbGwgZm9yIHRoZSBmaWx0ZXIgZW50cnkgdG8gYXBwZWFyIGluc3RlYWQgb2YgYSBmaXhlZCBzbGVlcDogb25cbiAgICAgICAgICAvLyBzbG93ZXIgZGV2aWNlcyB0aGUgZmlsdGVyIChhbmQgaXRzIGlkKSBtYXkgbm90IGJlIGF2YWlsYWJsZSB5ZXQsXG4gICAgICAgICAgLy8gYW5kIGEgZml4ZWQgZGVsYXkgd291bGQgbGVhdmUgZmlsdGVySWQgYXMgYW4gZW1wdHkgc3RyaW5nLCBtYWtpbmdcbiAgICAgICAgICAvLyB0aGUgbGF0ZXIgc2V0RmlsdGVyQW5pbWF0aW9uV2luZG93KHtpZDogZmlsdGVySWQsIC4uLn0pIGJlaGF2ZVxuICAgICAgICAgIC8vIHVucHJlZGljdGFibHkuXG4gICAgICAgICAgZmlsdGVySWQgPSAnJztcbiAgICAgICAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IDEwICYmICFmaWx0ZXJJZDsgYXR0ZW1wdCsrKSB7XG4gICAgICAgICAgICBhd2FpdCBzbGVlcCgxMDApO1xuICAgICAgICAgICAgZmlsdGVySWQgPSBjdHguZ2V0VmlzU3RhdGUoKS5maWx0ZXJzPy5bZmlsdGVySWR4XT8uaWQgPz8gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZmlsdGVySWQpIHtcbiAgICAgICAgICAgIC8vIEZhaWwgZmFzdCBpbnN0ZWFkIG9mIHByb2NlZWRpbmcgd2l0aCBhbiBlbXB0eSBpZCDigJQgdGhlIGxhdGVyXG4gICAgICAgICAgICAvLyBzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3coe2lkOiBmaWx0ZXJJZCwgLi4ufSkgd291bGQgbm8tb3Agb3JcbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgd3JvbmcgZmlsdGVyLlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRoZSB0aW1lIGZpbHRlciBvbiBjb2x1bW4gXCIke2RhdGVUaW1lQ29sdW1ufVwiIHRvIGJlIGNyZWF0ZWQuIFBsZWFzZSB0cnkgYWdhaW4uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVycyA9IGN0eC5nZXRWaXNTdGF0ZSgpLmZpbHRlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHRhcmdldEZpbHRlciA9IGN1cnJlbnRGaWx0ZXJzW2ZpbHRlcklkeF07XG5cbiAgICAgICAgbGV0IHJlc29sdmVkSW50ZXJ2YWw6IEludGVydmFsS2V5IHwgc3RyaW5nIHwgdW5kZWZpbmVkID0gaW50ZXJ2YWw7XG5cbiAgICAgICAgaWYgKHRhcmdldEZpbHRlcj8uZG9tYWluICYmIHRhcmdldEZpbHRlci5kb21haW4ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaWYgKCFyZXNvbHZlZEludGVydmFsKSB7XG4gICAgICAgICAgICBsZXQgbWFwcGVkVmFsdWVzOiBudW1iZXJbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSWR4ID0gZGF0YXNldC5maWVsZHM/LmluZGV4T2YoZmlsdGVyRmllbGQpID8/IC0xO1xuICAgICAgICAgICAgaWYgKGZpZWxkSWR4ID49IDAgJiYgZGF0YXNldC5kYXRhQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJvd3MgPSBkYXRhc2V0LmRhdGFDb250YWluZXIubnVtUm93cygpO1xuICAgICAgICAgICAgICBtYXBwZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgLy8gU2FtcGxlIGEgYm91bmRlZCBudW1iZXIgb2Ygcm93cyDigJQgaXRlcmF0aW5nIGV2ZXJ5IHJvdyBjYW4gZnJlZXplXG4gICAgICAgICAgICAgIC8vIHRoZSBVSSB0aHJlYWQgb24gbGFyZ2UgZGF0YXNldHMsIGFuZCBhIHNhbXBsZSBpcyBlbm91Z2ggZm9yIGFcbiAgICAgICAgICAgICAgLy8gcmVhc29uYWJsZSBpbnRlcnZhbCBlc3RpbWF0ZS5cbiAgICAgICAgICAgICAgY29uc3QgTUFYX1NBTVBMRVMgPSAxMDAwO1xuICAgICAgICAgICAgICBjb25zdCBzdGVwID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihyb3dzIC8gTUFYX1NBTVBMRVMpKTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpICs9IHN0ZXApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSBkYXRhc2V0LmRhdGFDb250YWluZXIudmFsdWVBdChpLCBmaWVsZElkeCk7XG4gICAgICAgICAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0cyA9IHR5cGVvZiB2YWwgPT09ICdudW1iZXInID8gdmFsIDogbmV3IERhdGUodmFsIGFzIGFueSkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTih0cykpIG1hcHBlZFZhbHVlcy5wdXNoKHRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmVkSW50ZXJ2YWwgPSBkZXRlY3RJbnRlcnZhbEZyb21Eb21haW4oXG4gICAgICAgICAgICAgIHRhcmdldEZpbHRlci5kb21haW4gYXMgW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICAgICAgbWFwcGVkVmFsdWVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN0eC5kaXNwYXRjaChzZXRGaWx0ZXIoZmlsdGVySWR4LCAncGxvdFR5cGUnLCB7aW50ZXJ2YWw6IHJlc29sdmVkSW50ZXJ2YWx9KSk7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKHNldEZpbHRlckFuaW1hdGlvbldpbmRvdyh7aWQ6IGZpbHRlcklkLCBhbmltYXRpb25XaW5kb3c6ICdmcmVlJ30pKTtcblxuICAgICAgICAgIC8vIFBvbGwgZm9yIHRpbWVCaW5zIHRvIGJlY29tZSBhdmFpbGFibGUgKGtlcGxlciBjb21wdXRlcyB0aGVtIGFzeW5jKS5cbiAgICAgICAgICBsZXQgZGF0YXNldEJpbnM6IHt4MDogbnVtYmVyOyB4MTogbnVtYmVyfVtdIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgMTA7IGF0dGVtcHQrKykge1xuICAgICAgICAgICAgYXdhaXQgc2xlZXAoMjAwKTtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWx0ZXIgPSBjdHguZ2V0VmlzU3RhdGUoKS5maWx0ZXJzPy5bZmlsdGVySWR4XTtcbiAgICAgICAgICAgIGlmICh1cGRhdGVkRmlsdGVyPy5kb21haW4gJiYgdXBkYXRlZEZpbHRlci5kb21haW4ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgIC8vIHRpbWVCaW5zIGlzIGtleWVkIGJ5IGRhdGFzZXQgaWQsIHRoZW4gYnkgaW50ZXJ2YWw6XG4gICAgICAgICAgICAgIC8vIHtbZGF0YUlkXToge1tpbnRlcnZhbF06IGJpbnNbXX19LiBMb29rIHVwIHRoZSBiaW5zIGZvciBUSElTXG4gICAgICAgICAgICAgIC8vIGZpbHRlcidzIGRhdGFzZXQg4oCUIGdyYWJiaW5nIHRoZSBmaXJzdCBlbnRyeSB2aWFcbiAgICAgICAgICAgICAgLy8gT2JqZWN0LnZhbHVlcyh0aW1lQmlucylbMF0gd291bGQgcGljayB0aGUgd3JvbmcgZGF0YXNldCdzIGJpbnNcbiAgICAgICAgICAgICAgLy8gd2hlbiBtdWx0aXBsZSBkYXRhc2V0cy9maWx0ZXJzIGV4aXN0LCBhbmltYXRpbmcgYWdhaW5zdCB0aGVcbiAgICAgICAgICAgICAgLy8gd3JvbmcgdGltZSB3aW5kb3cuXG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVCaW5zID0gKHVwZGF0ZWRGaWx0ZXIgYXMgYW55KS50aW1lQmlucztcbiAgICAgICAgICAgICAgY29uc3QgYmlucyA9IHRpbWVCaW5zPy5bZGF0YXNldElkXT8uW3Jlc29sdmVkSW50ZXJ2YWwgYXMgc3RyaW5nXTtcbiAgICAgICAgICAgICAgaWYgKGJpbnMgJiYgYmlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZGF0YXNldEJpbnMgPSBiaW5zO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZmluYWxGaWx0ZXIgPSBjdHguZ2V0VmlzU3RhdGUoKS5maWx0ZXJzPy5bZmlsdGVySWR4XTtcbiAgICAgICAgICBpZiAoZmluYWxGaWx0ZXI/LmRvbWFpbiAmJiBmaW5hbEZpbHRlci5kb21haW4ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBpZiAoZGF0YXNldEJpbnMgJiYgZGF0YXNldEJpbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjdHguZGlzcGF0Y2goXG4gICAgICAgICAgICAgICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZShmaWx0ZXJJZHgsICd2YWx1ZScsIFtkYXRhc2V0Qmluc1swXS54MCwgZGF0YXNldEJpbnNbMF0ueDFdKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9tYWluU3RhcnQgPSAoZmluYWxGaWx0ZXIuZG9tYWluIGFzIG51bWJlcltdKVswXTtcbiAgICAgICAgICAgICAgY29uc3Qgd2luZG93U2l6ZSA9IElOVEVSVkFMX01JTExJU1tyZXNvbHZlZEludGVydmFsIGFzIEludGVydmFsS2V5XSA/PyBNSUxMSVNfWUVBUjtcbiAgICAgICAgICAgICAgY3R4LmRpc3BhdGNoKFxuICAgICAgICAgICAgICAgIHNldEZpbHRlckFuaW1hdGlvblRpbWUoZmlsdGVySWR4LCAndmFsdWUnLCBbZG9tYWluU3RhcnQsIGRvbWFpblN0YXJ0ICsgd2luZG93U2l6ZV0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGNvbW1hbmRJZDogYWRkVGltZUZpbHRlckNvbW1hbmRJZCxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkZXRhaWxzOiBgVGltZSBmaWx0ZXIgYWRkZWQgb24gY29sdW1uIFwiJHtkYXRlVGltZUNvbHVtbn1cIiBmb3IgZGF0YXNldCBcIiR7ZGF0YXNldE5hbWV9XCIgKGludGVydmFsOiAke1xuICAgICAgICAgICAgICByZXNvbHZlZEludGVydmFsID8/ICdhdXRvJ1xuICAgICAgICAgICAgfSwgZmlsdGVyIGluZGV4OiAke2ZpbHRlcklkeH0pLiBUaGUgdGltZSBjb250cm9sbGVyIGlzIG5vdyB2aXNpYmxlIGF0IHRoZSBib3R0b20gb2YgdGhlIG1hcC5gLFxuICAgICAgICAgICAgZmlsdGVySW5kZXg6IGZpbHRlcklkeCxcbiAgICAgICAgICAgIGludGVydmFsOiByZXNvbHZlZEludGVydmFsXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBjb21tYW5kSWQ6IGFkZFRpbWVGaWx0ZXJDb21tYW5kSWQsXG4gICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluc3RydWN0aW9uOlxuICAgICAgICAgICAgICAnQ2hlY2sgdGhhdCB0aGUgZGF0YXNldCBleGlzdHMsIHRoZSBjb2x1bW4gaXMgYSBUSU1FU1RBTVAvREFURSwgYW5kIGEgbGF5ZXIgZm9yIHRoZSBkYXRhc2V0IGlzIGFscmVhZHkgb24gdGhlIG1hcC4gRG8gbm90IHJldHJ5IG1vcmUgdGhhbiBvbmNlLidcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlBLElBQUFBLElBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQVBBO0FBQ0E7O0FBd0JB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
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getToggleTimeFilterCommand = getToggleTimeFilterCommand;
|
|
8
|
+
exports.toggleTimeFilterCommandId = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _zod = require("zod");
|
|
12
|
+
var _actions = require("@kepler.gl/actions");
|
|
13
|
+
// SPDX-License-Identifier: MIT
|
|
14
|
+
// Copyright contributors to the kepler.gl project
|
|
15
|
+
|
|
16
|
+
var toggleTimeFilterCommandId = exports.toggleTimeFilterCommandId = 'map.toggle-time-filter';
|
|
17
|
+
function getToggleTimeFilterCommand(ctx) {
|
|
18
|
+
return {
|
|
19
|
+
id: toggleTimeFilterCommandId,
|
|
20
|
+
name: 'Toggle time controller',
|
|
21
|
+
group: 'Map',
|
|
22
|
+
description: "Show or hide the enlarged time controller at the bottom of the map.\n\nA time filter must already exist on the map (created via map.add-time-filter).\n\n- action: \"show\" \u2014 enlarge the time controller so it is visible at the bottom of the map.\n- action: \"hide\" \u2014 collapse the time controller back to the side panel.",
|
|
23
|
+
metadata: {
|
|
24
|
+
readOnly: false,
|
|
25
|
+
riskLevel: 'low',
|
|
26
|
+
idempotent: true
|
|
27
|
+
},
|
|
28
|
+
inputSchema: _zod.z.object({
|
|
29
|
+
action: _zod.z["enum"](['show', 'hide']).describe('"show" enlarges the time controller at the bottom of the map; "hide" collapses it to the side panel.'),
|
|
30
|
+
filterIndex: _zod.z.number().optional().describe('Index of the time filter to toggle. If omitted, the first time-range filter found is used.')
|
|
31
|
+
}),
|
|
32
|
+
execute: function () {
|
|
33
|
+
var _execute = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(_execCtx, input) {
|
|
34
|
+
var _ref, action, filterIndex, _visState$filters, visState, filters, targetIdx, found, view;
|
|
35
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
36
|
+
while (1) switch (_context.prev = _context.next) {
|
|
37
|
+
case 0:
|
|
38
|
+
_ref = input !== null && input !== void 0 ? input : {}, action = _ref.action, filterIndex = _ref.filterIndex;
|
|
39
|
+
_context.prev = 1;
|
|
40
|
+
if (!(action !== 'show' && action !== 'hide')) {
|
|
41
|
+
_context.next = 4;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
return _context.abrupt("return", {
|
|
45
|
+
success: false,
|
|
46
|
+
commandId: toggleTimeFilterCommandId,
|
|
47
|
+
error: "Invalid action \"".concat(String(action), "\". Must be \"show\" or \"hide\"."),
|
|
48
|
+
data: {
|
|
49
|
+
instruction: 'Pass action: "show" to enlarge the time controller, or "hide" to collapse it.'
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
case 4:
|
|
53
|
+
if (!(filterIndex !== undefined && (!Number.isInteger(filterIndex) || filterIndex < 0))) {
|
|
54
|
+
_context.next = 6;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
return _context.abrupt("return", {
|
|
58
|
+
success: false,
|
|
59
|
+
commandId: toggleTimeFilterCommandId,
|
|
60
|
+
error: "Invalid filterIndex \"".concat(String(filterIndex), "\". Must be a non-negative integer."),
|
|
61
|
+
data: {
|
|
62
|
+
instruction: 'Pass filterIndex as a non-negative integer, or omit it to auto-detect the first time filter.'
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
case 6:
|
|
66
|
+
visState = ctx.getVisState();
|
|
67
|
+
filters = (_visState$filters = visState.filters) !== null && _visState$filters !== void 0 ? _visState$filters : [];
|
|
68
|
+
if (!(filters.length === 0)) {
|
|
69
|
+
_context.next = 10;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
return _context.abrupt("return", {
|
|
73
|
+
success: false,
|
|
74
|
+
commandId: toggleTimeFilterCommandId,
|
|
75
|
+
error: 'No filters found on the map. Add a time filter first via map.add-time-filter.',
|
|
76
|
+
data: {
|
|
77
|
+
instruction: 'Call map.add-time-filter before map.toggle-time-filter.'
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
case 10:
|
|
81
|
+
if (!(filterIndex === undefined)) {
|
|
82
|
+
_context.next = 17;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
found = filters.findIndex(function (f) {
|
|
86
|
+
return f.type === 'timeRange' || f.type === 'time';
|
|
87
|
+
}); // Don't fall back to index 0 when no time filter exists — toggling
|
|
88
|
+
// the first (non-time) filter would mutate an unrelated filter,
|
|
89
|
+
// contradicting the "a time filter must already exist" contract.
|
|
90
|
+
if (!(found < 0)) {
|
|
91
|
+
_context.next = 14;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
return _context.abrupt("return", {
|
|
95
|
+
success: false,
|
|
96
|
+
commandId: toggleTimeFilterCommandId,
|
|
97
|
+
error: 'No time filter found on the map. Add a time filter first via map.add-time-filter.',
|
|
98
|
+
data: {
|
|
99
|
+
instruction: 'Call map.add-time-filter before map.toggle-time-filter.'
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
case 14:
|
|
103
|
+
targetIdx = found;
|
|
104
|
+
_context.next = 18;
|
|
105
|
+
break;
|
|
106
|
+
case 17:
|
|
107
|
+
targetIdx = filterIndex;
|
|
108
|
+
case 18:
|
|
109
|
+
if (!(targetIdx < 0 || targetIdx >= filters.length)) {
|
|
110
|
+
_context.next = 20;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
return _context.abrupt("return", {
|
|
114
|
+
success: false,
|
|
115
|
+
commandId: toggleTimeFilterCommandId,
|
|
116
|
+
error: "Filter index ".concat(targetIdx, " is out of range. There are ").concat(filters.length, " filter(s)."),
|
|
117
|
+
data: {
|
|
118
|
+
instruction: "Use a filterIndex between 0 and ".concat(filters.length - 1, ".")
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
case 20:
|
|
122
|
+
view = action === 'show' ? 'enlarged' : 'side';
|
|
123
|
+
ctx.dispatch((0, _actions.setFilterView)(targetIdx, view));
|
|
124
|
+
return _context.abrupt("return", {
|
|
125
|
+
success: true,
|
|
126
|
+
commandId: toggleTimeFilterCommandId,
|
|
127
|
+
data: {
|
|
128
|
+
details: action === 'show' ? "Time filter at index ".concat(targetIdx, " is now enlarged. The time controller is visible at the bottom of the map.") : "Time filter at index ".concat(targetIdx, " has been collapsed back to the side panel.")
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
case 25:
|
|
132
|
+
_context.prev = 25;
|
|
133
|
+
_context.t0 = _context["catch"](1);
|
|
134
|
+
return _context.abrupt("return", {
|
|
135
|
+
success: false,
|
|
136
|
+
commandId: toggleTimeFilterCommandId,
|
|
137
|
+
error: _context.t0 instanceof Error ? _context.t0.message : 'Unknown error',
|
|
138
|
+
data: {
|
|
139
|
+
instruction: 'Check that a time filter exists. If the error persists, ask the user to try with different parameters.'
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
case 28:
|
|
143
|
+
case "end":
|
|
144
|
+
return _context.stop();
|
|
145
|
+
}
|
|
146
|
+
}, _callee, null, [[1, 25]]);
|
|
147
|
+
}));
|
|
148
|
+
function execute(_x, _x2) {
|
|
149
|
+
return _execute.apply(this, arguments);
|
|
150
|
+
}
|
|
151
|
+
return execute;
|
|
152
|
+
}()
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfem9kIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwidG9nZ2xlVGltZUZpbHRlckNvbW1hbmRJZCIsImV4cG9ydHMiLCJnZXRUb2dnbGVUaW1lRmlsdGVyQ29tbWFuZCIsImN0eCIsImlkIiwibmFtZSIsImdyb3VwIiwiZGVzY3JpcHRpb24iLCJtZXRhZGF0YSIsInJlYWRPbmx5Iiwicmlza0xldmVsIiwiaWRlbXBvdGVudCIsImlucHV0U2NoZW1hIiwieiIsIm9iamVjdCIsImFjdGlvbiIsImRlc2NyaWJlIiwiZmlsdGVySW5kZXgiLCJudW1iZXIiLCJvcHRpb25hbCIsImV4ZWN1dGUiLCJfZXhlY3V0ZSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX2V4ZWNDdHgiLCJpbnB1dCIsIl9yZWYiLCJfdmlzU3RhdGUkZmlsdGVycyIsInZpc1N0YXRlIiwiZmlsdGVycyIsInRhcmdldElkeCIsImZvdW5kIiwidmlldyIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJzdWNjZXNzIiwiY29tbWFuZElkIiwiZXJyb3IiLCJjb25jYXQiLCJTdHJpbmciLCJkYXRhIiwiaW5zdHJ1Y3Rpb24iLCJ1bmRlZmluZWQiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJnZXRWaXNTdGF0ZSIsImxlbmd0aCIsImZpbmRJbmRleCIsImYiLCJ0eXBlIiwiZGlzcGF0Y2giLCJzZXRGaWx0ZXJWaWV3IiwiZGV0YWlscyIsInQwIiwiRXJyb3IiLCJtZXNzYWdlIiwic3RvcCIsIl94IiwiX3gyIiwiYXBwbHkiLCJhcmd1bWVudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdG9nZ2xlLXRpbWUtZmlsdGVyLWNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHR5cGUge1Jvb21Db21tYW5kfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcbmltcG9ydCB7c2V0RmlsdGVyVmlld30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB0eXBlIHtLZXBsZXJDb250ZXh0fSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZVRpbWVGaWx0ZXJDb21tYW5kSWQgPSAnbWFwLnRvZ2dsZS10aW1lLWZpbHRlcicgYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2dnbGVUaW1lRmlsdGVyQ29tbWFuZChjdHg6IEtlcGxlckNvbnRleHQpOiBSb29tQ29tbWFuZCB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHRvZ2dsZVRpbWVGaWx0ZXJDb21tYW5kSWQsXG4gICAgbmFtZTogJ1RvZ2dsZSB0aW1lIGNvbnRyb2xsZXInLFxuICAgIGdyb3VwOiAnTWFwJyxcbiAgICBkZXNjcmlwdGlvbjogYFNob3cgb3IgaGlkZSB0aGUgZW5sYXJnZWQgdGltZSBjb250cm9sbGVyIGF0IHRoZSBib3R0b20gb2YgdGhlIG1hcC5cblxuQSB0aW1lIGZpbHRlciBtdXN0IGFscmVhZHkgZXhpc3Qgb24gdGhlIG1hcCAoY3JlYXRlZCB2aWEgbWFwLmFkZC10aW1lLWZpbHRlcikuXG5cbi0gYWN0aW9uOiBcInNob3dcIiDigJQgZW5sYXJnZSB0aGUgdGltZSBjb250cm9sbGVyIHNvIGl0IGlzIHZpc2libGUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbWFwLlxuLSBhY3Rpb246IFwiaGlkZVwiIOKAlCBjb2xsYXBzZSB0aGUgdGltZSBjb250cm9sbGVyIGJhY2sgdG8gdGhlIHNpZGUgcGFuZWwuYCxcbiAgICBtZXRhZGF0YToge3JlYWRPbmx5OiBmYWxzZSwgcmlza0xldmVsOiAnbG93JywgaWRlbXBvdGVudDogdHJ1ZX0sXG4gICAgaW5wdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICAgIGFjdGlvbjogelxuICAgICAgICAuZW51bShbJ3Nob3cnLCAnaGlkZSddKVxuICAgICAgICAuZGVzY3JpYmUoXG4gICAgICAgICAgJ1wic2hvd1wiIGVubGFyZ2VzIHRoZSB0aW1lIGNvbnRyb2xsZXIgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbWFwOyBcImhpZGVcIiBjb2xsYXBzZXMgaXQgdG8gdGhlIHNpZGUgcGFuZWwuJ1xuICAgICAgICApLFxuICAgICAgZmlsdGVySW5kZXg6IHpcbiAgICAgICAgLm51bWJlcigpXG4gICAgICAgIC5vcHRpb25hbCgpXG4gICAgICAgIC5kZXNjcmliZShcbiAgICAgICAgICAnSW5kZXggb2YgdGhlIHRpbWUgZmlsdGVyIHRvIHRvZ2dsZS4gSWYgb21pdHRlZCwgdGhlIGZpcnN0IHRpbWUtcmFuZ2UgZmlsdGVyIGZvdW5kIGlzIHVzZWQuJ1xuICAgICAgICApXG4gICAgfSkgYXMgYW55LFxuICAgIGV4ZWN1dGU6IGFzeW5jIChfZXhlY0N0eCwgaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHthY3Rpb24sIGZpbHRlckluZGV4fSA9IChpbnB1dCA/PyB7fSkgYXMge1xuICAgICAgICBhY3Rpb246ICdzaG93JyB8ICdoaWRlJztcbiAgICAgICAgZmlsdGVySW5kZXg/OiBudW1iZXI7XG4gICAgICB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gUnVudGltZSBndWFyZDogdGhlIGJyaWRnZS93ZWJNQ1AgY2FsbCBleGVjdXRlIGRpcmVjdGx5IHdpdGhvdXQgem9kXG4gICAgICAgIC8vIHBhcnNpbmcsIHNvIGEgbWlzc2luZy9pbnZhbGlkIGFjdGlvbiBtdXN0IG5vdCBzaWxlbnRseSBmYWxsIGJhY2sgdG9cbiAgICAgICAgLy8gJ3NpZGUnICh3aGljaCB3b3VsZCBoaWRlIHRoZSBjb250cm9sbGVyIOKAlCBhIHN1cnByaXNpbmcgbXV0YXRpb24pLlxuICAgICAgICBpZiAoYWN0aW9uICE9PSAnc2hvdycgJiYgYWN0aW9uICE9PSAnaGlkZScpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBjb21tYW5kSWQ6IHRvZ2dsZVRpbWVGaWx0ZXJDb21tYW5kSWQsXG4gICAgICAgICAgICBlcnJvcjogYEludmFsaWQgYWN0aW9uIFwiJHtTdHJpbmcoYWN0aW9uKX1cIi4gTXVzdCBiZSBcInNob3dcIiBvciBcImhpZGVcIi5gLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbnN0cnVjdGlvbjpcbiAgICAgICAgICAgICAgICAnUGFzcyBhY3Rpb246IFwic2hvd1wiIHRvIGVubGFyZ2UgdGhlIHRpbWUgY29udHJvbGxlciwgb3IgXCJoaWRlXCIgdG8gY29sbGFwc2UgaXQuJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gUnVudGltZSBndWFyZDogdGhlIGJyaWRnZS93ZWJNQ1AgY2FsbCBleGVjdXRlIHdpdGhvdXQgem9kIHBhcnNpbmcsIHNvXG4gICAgICAgIC8vIGEgc3RyaW5nL2Zsb2F0IGZpbHRlckluZGV4IG11c3Qgbm90IHNsaXAgdGhyb3VnaCBhbmQgYmUgZGlzcGF0Y2hlZFxuICAgICAgICAvLyBpbnRvIHNldEZpbHRlclZpZXcgKGJyZWFraW5nIHJlZHVjZXIgbG9naWMgLyB0b2dnbGluZyB0aGUgd3JvbmdcbiAgICAgICAgLy8gZmlsdGVyKS4gUmVqZWN0IGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBub24tbmVnYXRpdmUgaW50ZWdlci5cbiAgICAgICAgaWYgKGZpbHRlckluZGV4ICE9PSB1bmRlZmluZWQgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGZpbHRlckluZGV4KSB8fCBmaWx0ZXJJbmRleCA8IDApKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgY29tbWFuZElkOiB0b2dnbGVUaW1lRmlsdGVyQ29tbWFuZElkLFxuICAgICAgICAgICAgZXJyb3I6IGBJbnZhbGlkIGZpbHRlckluZGV4IFwiJHtTdHJpbmcoZmlsdGVySW5kZXgpfVwiLiBNdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuYCxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb246XG4gICAgICAgICAgICAgICAgJ1Bhc3MgZmlsdGVySW5kZXggYXMgYSBub24tbmVnYXRpdmUgaW50ZWdlciwgb3Igb21pdCBpdCB0byBhdXRvLWRldGVjdCB0aGUgZmlyc3QgdGltZSBmaWx0ZXIuJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2aXNTdGF0ZSA9IGN0eC5nZXRWaXNTdGF0ZSgpO1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdmlzU3RhdGUuZmlsdGVycyA/PyBbXTtcblxuICAgICAgICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBjb21tYW5kSWQ6IHRvZ2dsZVRpbWVGaWx0ZXJDb21tYW5kSWQsXG4gICAgICAgICAgICBlcnJvcjogJ05vIGZpbHRlcnMgZm91bmQgb24gdGhlIG1hcC4gQWRkIGEgdGltZSBmaWx0ZXIgZmlyc3QgdmlhIG1hcC5hZGQtdGltZS1maWx0ZXIuJyxcbiAgICAgICAgICAgIGRhdGE6IHtpbnN0cnVjdGlvbjogJ0NhbGwgbWFwLmFkZC10aW1lLWZpbHRlciBiZWZvcmUgbWFwLnRvZ2dsZS10aW1lLWZpbHRlci4nfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGFyZ2V0SWR4OiBudW1iZXI7XG4gICAgICAgIGlmIChmaWx0ZXJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBmaWx0ZXJzLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLnR5cGUgPT09ICd0aW1lUmFuZ2UnIHx8IGYudHlwZSA9PT0gJ3RpbWUnKTtcbiAgICAgICAgICAvLyBEb24ndCBmYWxsIGJhY2sgdG8gaW5kZXggMCB3aGVuIG5vIHRpbWUgZmlsdGVyIGV4aXN0cyDigJQgdG9nZ2xpbmdcbiAgICAgICAgICAvLyB0aGUgZmlyc3QgKG5vbi10aW1lKSBmaWx0ZXIgd291bGQgbXV0YXRlIGFuIHVucmVsYXRlZCBmaWx0ZXIsXG4gICAgICAgICAgLy8gY29udHJhZGljdGluZyB0aGUgXCJhIHRpbWUgZmlsdGVyIG11c3QgYWxyZWFkeSBleGlzdFwiIGNvbnRyYWN0LlxuICAgICAgICAgIGlmIChmb3VuZCA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tYW5kSWQ6IHRvZ2dsZVRpbWVGaWx0ZXJDb21tYW5kSWQsXG4gICAgICAgICAgICAgIGVycm9yOlxuICAgICAgICAgICAgICAgICdObyB0aW1lIGZpbHRlciBmb3VuZCBvbiB0aGUgbWFwLiBBZGQgYSB0aW1lIGZpbHRlciBmaXJzdCB2aWEgbWFwLmFkZC10aW1lLWZpbHRlci4nLFxuICAgICAgICAgICAgICBkYXRhOiB7aW5zdHJ1Y3Rpb246ICdDYWxsIG1hcC5hZGQtdGltZS1maWx0ZXIgYmVmb3JlIG1hcC50b2dnbGUtdGltZS1maWx0ZXIuJ31cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldElkeCA9IGZvdW5kO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldElkeCA9IGZpbHRlckluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldElkeCA8IDAgfHwgdGFyZ2V0SWR4ID49IGZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgY29tbWFuZElkOiB0b2dnbGVUaW1lRmlsdGVyQ29tbWFuZElkLFxuICAgICAgICAgICAgZXJyb3I6IGBGaWx0ZXIgaW5kZXggJHt0YXJnZXRJZHh9IGlzIG91dCBvZiByYW5nZS4gVGhlcmUgYXJlICR7ZmlsdGVycy5sZW5ndGh9IGZpbHRlcihzKS5gLFxuICAgICAgICAgICAgZGF0YToge2luc3RydWN0aW9uOiBgVXNlIGEgZmlsdGVySW5kZXggYmV0d2VlbiAwIGFuZCAke2ZpbHRlcnMubGVuZ3RoIC0gMX0uYH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlldyA9IGFjdGlvbiA9PT0gJ3Nob3cnID8gJ2VubGFyZ2VkJyA6ICdzaWRlJztcbiAgICAgICAgY3R4LmRpc3BhdGNoKHNldEZpbHRlclZpZXcodGFyZ2V0SWR4LCB2aWV3IGFzIGFueSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBjb21tYW5kSWQ6IHRvZ2dsZVRpbWVGaWx0ZXJDb21tYW5kSWQsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGV0YWlsczpcbiAgICAgICAgICAgICAgYWN0aW9uID09PSAnc2hvdydcbiAgICAgICAgICAgICAgICA/IGBUaW1lIGZpbHRlciBhdCBpbmRleCAke3RhcmdldElkeH0gaXMgbm93IGVubGFyZ2VkLiBUaGUgdGltZSBjb250cm9sbGVyIGlzIHZpc2libGUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbWFwLmBcbiAgICAgICAgICAgICAgICA6IGBUaW1lIGZpbHRlciBhdCBpbmRleCAke3RhcmdldElkeH0gaGFzIGJlZW4gY29sbGFwc2VkIGJhY2sgdG8gdGhlIHNpZGUgcGFuZWwuYFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgY29tbWFuZElkOiB0b2dnbGVUaW1lRmlsdGVyQ29tbWFuZElkLFxuICAgICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbnN0cnVjdGlvbjpcbiAgICAgICAgICAgICAgJ0NoZWNrIHRoYXQgYSB0aW1lIGZpbHRlciBleGlzdHMuIElmIHRoZSBlcnJvciBwZXJzaXN0cywgYXNrIHRoZSB1c2VyIHRvIHRyeSB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLidcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUEsSUFBQUEsSUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBTEE7QUFDQTs7QUFPTyxJQUFNRSx5QkFBeUIsR0FBQUMsT0FBQSxDQUFBRCx5QkFBQSxHQUFHLHdCQUFpQztBQUVuRSxTQUFTRSwwQkFBMEJBLENBQUNDLEdBQWtCLEVBQWU7RUFDMUUsT0FBTztJQUNMQyxFQUFFLEVBQUVKLHlCQUF5QjtJQUM3QkssSUFBSSxFQUFFLHdCQUF3QjtJQUM5QkMsS0FBSyxFQUFFLEtBQUs7SUFDWkMsV0FBVyw2VUFLeUQ7SUFDcEVDLFFBQVEsRUFBRTtNQUFDQyxRQUFRLEVBQUUsS0FBSztNQUFFQyxTQUFTLEVBQUUsS0FBSztNQUFFQyxVQUFVLEVBQUU7SUFBSSxDQUFDO0lBQy9EQyxXQUFXLEVBQUVDLE1BQUMsQ0FBQ0MsTUFBTSxDQUFDO01BQ3BCQyxNQUFNLEVBQUVGLE1BQUMsUUFDRixDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ3RCRyxRQUFRLENBQ1Asc0dBQ0YsQ0FBQztNQUNIQyxXQUFXLEVBQUVKLE1BQUMsQ0FDWEssTUFBTSxDQUFDLENBQUMsQ0FDUkMsUUFBUSxDQUFDLENBQUMsQ0FDVkgsUUFBUSxDQUNQLDRGQUNGO0lBQ0osQ0FBQyxDQUFRO0lBQ1RJLE9BQU87TUFBQSxJQUFBQyxRQUFBLE9BQUFDLGtCQUFBLDBC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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB0eXBlIHtUYWJsZSBhcyBBcnJvd1RhYmxlfSBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IHR5cGUge1pvZFR5cGV9IGZyb20gJ3pvZCc7XG5pbXBvcnQgdHlwZSB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHR5cGUge0tlcGxlckRpc3BhdGNofSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBTdHJ1Y3R1cmFsIHN1YnNldCBvZiBgQHNxbHJvb21zL3Jvb20tc3RvcmVgJ3MgYFJvb21Db21tYW5kYCDigJQgZW5vdWdoIGZvciB0aGVcbiAqIG1hcC4qIGNvbW1hbmQgZmFjdG9yaWVzIGFuZCBmb3IgYSBob3N0IHRvIHJlZ2lzdGVyIHRoZSBidWlsdCBvYmplY3RzLiBEZWZpbmVkXG4gKiBsb2NhbGx5ICh3aXRoIGB6b2RgLCBhbHJlYWR5IGEgZGVwZW5kZW5jeSkgc28gdGhpcyBwYWNrYWdlIHN0YXlzIGZyZWUgb2ZcbiAqIGBAc3Fscm9vbXMvcm9vbS1zdG9yZWA7IHRoZSBvYmplY3RzIHRoZSBmYWN0b3JpZXMgYnVpbGQgYXJlIHN0cnVjdHVyYWxseVxuICogY29tcGF0aWJsZSB3aXRoIHNxbHJvb21zJyBvd24gYFJvb21Db21tYW5kYC5cbiAqL1xuZXhwb3J0IHR5cGUgUm9vbUNvbW1hbmRSZXN1bHQ8VERhdGEgPSB1bmtub3duPiA9IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgY29tbWFuZElkOiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIGRhdGE/OiBURGF0YTtcbiAgZXJyb3I/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBSb29tQ29tbWFuZEV4ZWN1dGVPdXRwdXQ8VERhdGEgPSB1bmtub3duPiA9IFJvb21Db21tYW5kUmVzdWx0PFREYXRhPiB8IFREYXRhIHwgdm9pZDtcblxuZXhwb3J0IHR5cGUgUm9vbUNvbW1hbmRFeGVjdXRpb25Db250ZXh0ID0ge1xuICBzdG9yZTogdW5rbm93bjtcbiAgZ2V0U3RhdGU6ICgpID0+IHVua25vd247XG4gIGludm9jYXRpb246IHVua25vd247XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufTtcblxuZXhwb3J0IHR5cGUgUm9vbUNvbW1hbmRQb2xpY3lNZXRhZGF0YSA9IHtcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBpZGVtcG90ZW50PzogYm9vbGVhbjtcbiAgcmlza0xldmVsPzogJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJztcbiAgcmVxdWlyZXNDb25maXJtYXRpb24/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUm9vbUNvbW1hbmQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGdyb3VwPzogc3RyaW5nO1xuICBrZXl3b3Jkcz86IHN0cmluZ1tdO1xuICBpbnB1dFNjaGVtYT86IFpvZFR5cGU8dW5rbm93bj47XG4gIG1ldGFkYXRhPzogUm9vbUNvbW1hbmRQb2xpY3lNZXRhZGF0YTtcbiAgZXhlY3V0ZTogKFxuICAgIGNvbnRleHQ6IFJvb21Db21tYW5kRXhlY3V0aW9uQ29udGV4dCxcbiAgICBpbnB1dD86IHVua25vd25cbiAgKSA9PiBSb29tQ29tbWFuZEV4ZWN1dGVPdXRwdXQgfCBQcm9taXNlPFJvb21Db21tYW5kRXhlY3V0ZU91dHB1dD47XG59O1xuXG4vKipcbiAqIEEgY29tbWFuZCdzIG1vZGVsLWZhY2luZyBkZXNjcmlwdG9yOiB0aGUgaWQvbmFtZS9kZXNjcmlwdGlvbi9ncm91cC9rZXl3b3Jkc1xuICogcGx1cyBhIEpTT04tU2NoZW1hLWNvbnZlcnRlZCBgaW5wdXRTY2hlbWFgIGFuZCB0aGUgcG9saWN5IG1ldGFkYXRhLiBUaGlzIGlzXG4gKiB0aGUgc2hhcGUgaG9zdHMgYWR2ZXJ0aXNlIG92ZXIgdGhlIHdpcmUgKGUuZy4gdGhlIGRlbW8tYXBwIGJyaWRnZSdzXG4gKiBgdG9EZXNjcmlwdG9yYCksIHNvIGl0IGxpdmVzIGluIHRoZSBtYXAgc3VyZmFjZSBwYWNrYWdlIHRvIGtlZXAgdGhlIGNvbnRyYWN0XG4gKiBzZWxmLWNvbnRhaW5lZC5cbiAqL1xuZXhwb3J0IHR5cGUgVG9vbERlc2NyaXB0b3IgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGdyb3VwPzogc3RyaW5nO1xuICBrZXl3b3Jkcz86IHN0cmluZ1tdO1xuICBpbnB1dFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1ldGFkYXRhPzogUm9vbUNvbW1hbmRQb2xpY3lNZXRhZGF0YTtcbn07XG5cbi8qKlxuICogU3RydWN0dXJhbCBzbGljZSBvZiBgQHNxbHJvb21zL2R1Y2tkYmAncyBgRHVja0RiQ29ubmVjdG9yYCDigJQgb25seSB0aGUgbWV0aG9kc1xuICogdGhlIG1hcC4qIGNvbW1hbmRzIGNhbGwsIHR5cGVkIGFnYWluc3QgYXBhY2hlLWFycm93IHNvIHRoZSBxdWVyeSByZXN1bHQgZmxvd3NcbiAqIGludG8gYGFycm93VGFibGVUb09iamVjdHNgIC8gYGFycm93U2NoZW1hVG9GaWVsZHNgIHVuY2hhbmdlZC4gS2VwdCBsb2NhbCBzb1xuICogdGhpcyBwYWNrYWdlIG5lZWRzIG5vIGBAc3Fscm9vbXMvZHVja2RiYCBkZXBlbmRlbmN5OyBhIGhvc3QncyByZWFsIHNxbHJvb21zXG4gKiBjb25uZWN0b3Igc2F0aXNmaWVzIHRoaXMgc2hhcGUuXG4gKi9cbmV4cG9ydCB0eXBlIER1Y2tEYkNvbm5lY3RvciA9IHtcbiAgZXhlY3V0ZShzcWw6IHN0cmluZywgb3B0aW9ucz86IHtzaWduYWw/OiBBYm9ydFNpZ25hbH0pOiBQcm9taXNlTGlrZTx1bmtub3duPjtcbiAgcXVlcnkoc3FsOiBzdHJpbmcsIG9wdGlvbnM/OiB7c2lnbmFsPzogQWJvcnRTaWduYWx9KTogUHJvbWlzZUxpa2U8QXJyb3dUYWJsZT47XG4gIGxvYWRBcnJvdyhcbiAgICB0YWJsZTogQXJyb3dUYWJsZSB8IFVpbnQ4QXJyYXksXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgb3B0cz86IHtzY2hlbWE/OiBzdHJpbmd9XG4gICk6IFByb21pc2U8dm9pZD47XG59O1xuXG5leHBvcnQgdHlwZSBWaXNTdGF0ZSA9IHtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICBsYXllcnM6IGFueVtdO1xuICBsYXllckRhdGE6IGFueVtdO1xuICBsb2FkZXJzOiBhbnlbXTtcbiAgbG9hZE9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn07XG5cbi8qKlxuICogQWNjZXNzb3JzIHRvIHRoZSBrZXBsZXIuZ2wgYXBwbGljYXRpb24gc3RhdGUgdGhlIGFzc2lzdGFudCBuZWVkcy4gVGhlIGhvc3RcbiAqIGFwcCBzdXBwbGllcyB0aGVzZSAodmlhIGBzZXRLZXBsZXJTdGF0ZUFjY2Vzc29yc2ApIHNvIHRoaXMgbW9kdWxlIG5ldmVyXG4gKiBoYXJkLWNvZGVzIGEgcmVkdXggc3RhdGUgc2hhcGUgKGUuZy4gYGRlbW8ua2VwbGVyR2wubWFwLnZpc1N0YXRlYCkuIEFueVxuICogYXBwIGNhbiBwcm92aWRlIGFjY2Vzc29ycyBtYXRjaGluZyBpdHMgb3duIHN0b3JlLlxuICovXG5leHBvcnQgdHlwZSBLZXBsZXJTdGF0ZUFjY2Vzc29ycyA9IHtcbiAgZ2V0VmlzU3RhdGU6ICgpID0+IFZpc1N0YXRlO1xuICBnZXRNYXBCb3VuZGFyeTogKCkgPT5cbiAgICB8IHtcbiAgICAgICAgbnc6IFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgIHNlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBLZXBsZXJDb250ZXh0IHByb3ZpZGVzIGFjY2VzcyB0byBrZXBsZXIuZ2wgc3RhdGUgYW5kIGRpc3BhdGNoLlxuICogVGhpcyBpcyBwYXNzZWQgaW50byB0b29sIGZhY3RvcmllcyBpbnN0ZWFkIG9mIHVzaW5nIFJlZHV4IGRpcmVjdGx5LlxuICpcbiAqIFRoZSBmb3VyIGdsdWUgbWV0aG9kcyAoYGdldFZhbHVlc0Zyb21EYXRhc2V0YCwgYGdldERhdGFzZXRDb250ZXh0YCxcbiAqIGBsb2FkVGFibGVUb0tlcGxlcmAsIGBsb2FkVGFibGVJbnRvRHVja0RCYCwgYGdldENvbm5lY3RvcmApIGFyZSB0aGVcbiAqIGtlcGxlci1hcHAtYm91bmQgc2VhbSB0aGUgbWFwLiogY29tbWFuZHMgY2FsbC4gVGhleSBhcmUgaW1wbGVtZW50ZWQgYnkgdGhlXG4gKiBob3N0J3MgZ2x1ZSAoa2VwbGVyLWFzc2lzdGFudCkgc28gdGhpcyBwYWNrYWdlIHN0YXlzIGZyZWUgb2YgdGhlIER1Y2tEQiAvXG4gKiBrZXBsZXItYXBwIHdpcmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgS2VwbGVyQ29udGV4dCA9IHtcbiAgZ2V0VmlzU3RhdGU6ICgpID0+IFZpc1N0YXRlO1xuICBnZXRNYXBCb3VuZGFyeTogKCkgPT5cbiAgICB8IHtcbiAgICAgICAgbnc6IFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgIHNlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkO1xuICBnZXRNYXBib3hUb2tlbjogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkaXNwYXRjaDogS2VwbGVyRGlzcGF0Y2g7XG4gIC8qKiBSZWFkIGEgY29sdW1uJ3MgdmFsdWVzIGZyb20gYSBrZXBsZXIgZGF0YXNldCAoYnkgbGFiZWwgb3IgaWQpLiAqL1xuICBnZXRWYWx1ZXNGcm9tRGF0YXNldDogKGRhdGFzZXROYW1lOiBzdHJpbmcsIHZhcmlhYmxlTmFtZTogc3RyaW5nKSA9PiB1bmtub3duW107XG4gIC8qKiBCdWlsZCB0aGUgZGF0YXNldCtsYXllciBjb250ZXh0IHN0cmluZyBmb3IgdGhlIExMTS4gKi9cbiAgZ2V0RGF0YXNldENvbnRleHQ6ICgpID0+IHN0cmluZztcbiAgLyoqIExvYWQgYSBEdWNrREIgdGFibGUgaW50byBrZXBsZXIuZ2wgYXMgYSBkYXRhc2V0LiAqL1xuICBsb2FkVGFibGVUb0tlcGxlcjogKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7YXV0b0NyZWF0ZUxheWVycz86IGJvb2xlYW47IGNlbnRlck1hcD86IGJvb2xlYW59XG4gICkgPT4gUHJvbWlzZTx7c3VjY2VzczogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmd9PjtcbiAgLyoqIE1hdGVyaWFsaXplIGEga2VwbGVyIGRhdGFzZXQncyBjb2x1bW5zIGludG8gYSBEdWNrREIgdGFibGUgYW5kIHJldHVybiB0aGUgY29ubmVjdG9yLiAqL1xuICBsb2FkVGFibGVJbnRvRHVja0RCOiAoXG4gICAgZGF0YXNldE5hbWU6IHN0cmluZyxcbiAgICB2YXJpYWJsZU5hbWVzOiBzdHJpbmdbXSxcbiAgICBkYlRhYmxlTmFtZTogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTxEdWNrRGJDb25uZWN0b3I+O1xuICAvKiogVGhlIHNoYXJlZCBEdWNrREIgY29ubmVjdG9yICh0aGUgc3RvcmUncywgd2hlbiB3aXJlZCkuICovXG4gIGdldENvbm5lY3RvcjogKCkgPT4gUHJvbWlzZTxEdWNrRGJDb25uZWN0b3I+O1xufTtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
|