@esri/solutions-components 0.7.49 → 0.7.51
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/basemap-gallery_7.cjs.entry.js +30 -26
- package/dist/cjs/card-manager_3.cjs.entry.js +72 -42
- package/dist/cjs/crowdsource-manager.cjs.entry.js +31 -45
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +31 -73
- package/dist/collection/components/floor-filter/floor-filter.js +30 -26
- package/dist/collection/components/layer-table/layer-table.js +76 -63
- package/dist/components/crowdsource-manager.js +31 -51
- package/dist/components/floor-filter2.js +30 -26
- package/dist/components/layer-table2.js +74 -43
- package/dist/esm/basemap-gallery_7.entry.js +30 -26
- package/dist/esm/card-manager_3.entry.js +72 -42
- package/dist/esm/crowdsource-manager.entry.js +31 -45
- package/dist/esm/loader.js +1 -1
- package/dist/esm/solutions-components.js +1 -1
- package/dist/solutions-components/p-697e9e11.entry.js +6 -0
- package/dist/solutions-components/p-7cfc4ba5.entry.js +6 -0
- package/dist/solutions-components/p-b4d2feb0.entry.js +6 -0
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +6 -41
- package/dist/types/components/floor-filter/floor-filter.d.ts +1 -1
- package/dist/types/components/layer-table/layer-table.d.ts +25 -5
- package/dist/types/components.d.ts +0 -18
- package/package.json +1 -1
- package/dist/solutions-components/p-6a83b842.entry.js +0 -6
- package/dist/solutions-components/p-6d9f6b6a.entry.js +0 -6
- package/dist/solutions-components/p-766c0b57.entry.js +0 -6
@@ -136,8 +136,17 @@ const FloorFilter = class {
|
|
136
136
|
//
|
137
137
|
//--------------------------------------------------------------------------
|
138
138
|
async mapViewWatchHandler() {
|
139
|
-
|
140
|
-
|
139
|
+
const webMap = this.mapView.map;
|
140
|
+
await webMap.when(() => {
|
141
|
+
if (this.floorFilterWidget) {
|
142
|
+
this.floorFilterWidget.destroy();
|
143
|
+
this.floorFilterWidget = undefined;
|
144
|
+
}
|
145
|
+
if (this._floorFilterElement) {
|
146
|
+
this._floorFilterElement.remove();
|
147
|
+
this._floorFilterElement = document.createElement("div");
|
148
|
+
}
|
149
|
+
this._initFloorFilter(this.mapView, webMap);
|
141
150
|
});
|
142
151
|
}
|
143
152
|
//--------------------------------------------------------------------------
|
@@ -177,30 +186,25 @@ const FloorFilter = class {
|
|
177
186
|
/**
|
178
187
|
* Initialize the floor filter or reset the current view if it already exists
|
179
188
|
*/
|
180
|
-
_initFloorFilter(view) {
|
181
|
-
var _a, _b, _c
|
182
|
-
if (view && this.enabled && this.FloorFilter && (
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
this.
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
this.
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
this.
|
198
|
-
|
199
|
-
});
|
200
|
-
}
|
201
|
-
else {
|
202
|
-
this.floorFilterWidget.viewModel.view = view;
|
203
|
-
}
|
189
|
+
_initFloorFilter(view, webMap) {
|
190
|
+
var _a, _b, _c;
|
191
|
+
if (view && this.enabled && this.FloorFilter && (webMap === null || webMap === void 0 ? void 0 : webMap.floorInfo)) {
|
192
|
+
this.floorFilterWidget = new this.FloorFilter({
|
193
|
+
container: this._floorFilterElement,
|
194
|
+
view
|
195
|
+
});
|
196
|
+
(_a = this._facilityHandle) === null || _a === void 0 ? void 0 : _a.remove();
|
197
|
+
this._facilityHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.facility, (facility) => {
|
198
|
+
this.facilityChanged.emit(facility);
|
199
|
+
});
|
200
|
+
(_b = this._levelHandle) === null || _b === void 0 ? void 0 : _b.remove();
|
201
|
+
this._levelHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.level, (level) => {
|
202
|
+
this.levelChanged.emit(level);
|
203
|
+
});
|
204
|
+
(_c = this._siteHandle) === null || _c === void 0 ? void 0 : _c.remove();
|
205
|
+
this._siteHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.site, (site) => {
|
206
|
+
this.siteChanged.emit(site);
|
207
|
+
});
|
204
208
|
}
|
205
209
|
}
|
206
210
|
get el() { return index.getElement(this); }
|
@@ -149,7 +149,6 @@ const LayerTable = class {
|
|
149
149
|
this.onTableNodeCreate = (node) => {
|
150
150
|
this._tableNode = node;
|
151
151
|
};
|
152
|
-
this.defaultFilter = undefined;
|
153
152
|
this.defaultGlobalId = undefined;
|
154
153
|
this.defaultLayerId = undefined;
|
155
154
|
this.defaultOid = undefined;
|
@@ -185,6 +184,18 @@ const LayerTable = class {
|
|
185
184
|
// Watch handlers
|
186
185
|
//
|
187
186
|
//--------------------------------------------------------------------------
|
187
|
+
/**
|
188
|
+
* Handle url defaults when defaultOid is set
|
189
|
+
*/
|
190
|
+
async defaultOidWatchHandler() {
|
191
|
+
await this._handleDefaults();
|
192
|
+
}
|
193
|
+
/**
|
194
|
+
* Handle url defaults when defaultGlobalId is set
|
195
|
+
*/
|
196
|
+
async defaultGlobalIdWatchHandler() {
|
197
|
+
await this._handleDefaults();
|
198
|
+
}
|
188
199
|
/**
|
189
200
|
* Reset the toolInfos when export csv is enabled/disabled
|
190
201
|
*/
|
@@ -872,22 +883,6 @@ const LayerTable = class {
|
|
872
883
|
else {
|
873
884
|
urlObj.searchParams.delete("oid");
|
874
885
|
}
|
875
|
-
if (this._filterActive) {
|
876
|
-
const filter = JSON.parse(this._filterList.urlParams.get("filter"));
|
877
|
-
const layerExpressions = this._filterList.layerExpressions.map(layerExp => {
|
878
|
-
layerExp.expressions = layerExp.expressions.map(exp => {
|
879
|
-
if (exp.id.toString() === filter.expressionId.toString()) {
|
880
|
-
exp.active = true;
|
881
|
-
}
|
882
|
-
return exp;
|
883
|
-
});
|
884
|
-
return layerExp;
|
885
|
-
});
|
886
|
-
urlObj.searchParams.set("filter", JSON.stringify(layerExpressions));
|
887
|
-
}
|
888
|
-
else {
|
889
|
-
urlObj.searchParams.delete("filter");
|
890
|
-
}
|
891
886
|
this._shareNode.shareUrl = urlObj.href;
|
892
887
|
}
|
893
888
|
/**
|
@@ -901,7 +896,7 @@ const LayerTable = class {
|
|
901
896
|
* @returns VNode The tooltip node
|
902
897
|
*/
|
903
898
|
_getToolTip(placement, referenceElement, text) {
|
904
|
-
return (index.h("calcite-tooltip", { placement: placement, "reference-element": referenceElement }, index.h("span", null, text)));
|
899
|
+
return document.getElementById(referenceElement) ? (index.h("calcite-tooltip", { placement: placement, "reference-element": referenceElement }, index.h("span", null, text))) : undefined;
|
905
900
|
}
|
906
901
|
/**
|
907
902
|
* Get an id with a prefix to the user supplied value
|
@@ -1064,7 +1059,11 @@ const LayerTable = class {
|
|
1064
1059
|
_resetColumnTemplates() {
|
1065
1060
|
var _a, _b;
|
1066
1061
|
const columnTemplates = this._getColumnTemplates((_a = this._layer) === null || _a === void 0 ? void 0 : _a.id, (_b = this._layer) === null || _b === void 0 ? void 0 : _b.fields);
|
1067
|
-
|
1062
|
+
const hasChange = columnTemplates === null || columnTemplates === void 0 ? void 0 : columnTemplates.some((ct, i) => {
|
1063
|
+
var _a;
|
1064
|
+
return JSON.stringify((_a = this._table) === null || _a === void 0 ? void 0 : _a.tableTemplate.columnTemplates[i]) !== JSON.stringify(ct);
|
1065
|
+
});
|
1066
|
+
if (this._table && columnTemplates && hasChange) {
|
1068
1067
|
this._table.tableTemplate = new this.TableTemplate({
|
1069
1068
|
columnTemplates
|
1070
1069
|
});
|
@@ -1087,37 +1086,67 @@ const LayerTable = class {
|
|
1087
1086
|
this._table.view = this.mapView;
|
1088
1087
|
this._table.layer = this._layer;
|
1089
1088
|
}
|
1089
|
+
await this._initLayerRefresh();
|
1090
1090
|
this._checkEditEnabled();
|
1091
1091
|
this._table.editingEnabled = this._editEnabled && this.enableInlineEdit;
|
1092
1092
|
await this.reactiveUtils.once(() => this._table.state === "loaded")
|
1093
1093
|
.then(async () => {
|
1094
|
-
var _a, _b, _c;
|
1095
1094
|
this._table.highlightIds.removeAll();
|
1096
1095
|
this._table.clearSelectionFilter();
|
1097
1096
|
this._resetColumnTemplates();
|
1098
|
-
if (!this._defaultOidHonored && ((_a = this.defaultOid) === null || _a === void 0 ? void 0 : _a.length) > 0 && this.defaultOid[0] > -1) {
|
1099
|
-
this._selectDefaultFeature(this.defaultOid);
|
1100
|
-
this._defaultOidHonored = true;
|
1101
|
-
}
|
1102
|
-
if (!this._defaultGlobalIdHonored && ((_b = this.defaultGlobalId) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
1103
|
-
const features = await mapViewUtils.queryFeaturesByGlobalID(this.defaultGlobalId, this._layer);
|
1104
|
-
const oids = (features === null || features === void 0 ? void 0 : features.length) > 0 ? features.map(f => f.getObjectId()) : undefined;
|
1105
|
-
if (oids) {
|
1106
|
-
this._selectDefaultFeature(oids);
|
1107
|
-
}
|
1108
|
-
this._defaultGlobalIdHonored = true;
|
1109
|
-
}
|
1110
|
-
if (!this._defaultFilterHonored && ((_c = this.defaultFilter) === null || _c === void 0 ? void 0 : _c.length) > 0 && this._filterList) {
|
1111
|
-
this._layerExpressions = this.defaultFilter;
|
1112
|
-
this._filterActive = true;
|
1113
|
-
this._defaultFilterHonored = true;
|
1114
|
-
}
|
1115
1097
|
this._showOnlySelected = false;
|
1098
|
+
await this._handleDefaults();
|
1116
1099
|
await this._sortTable();
|
1117
1100
|
this._initToolInfos();
|
1118
1101
|
this._updateToolbar();
|
1119
1102
|
});
|
1120
1103
|
}
|
1104
|
+
/**
|
1105
|
+
* Update the current IDs when that layers data is modified
|
1106
|
+
*/
|
1107
|
+
async _initLayerRefresh() {
|
1108
|
+
if (this._refreshHandle) {
|
1109
|
+
this._refreshHandle.remove();
|
1110
|
+
}
|
1111
|
+
this._refreshHandle = this._layer.on("refresh", (evt) => {
|
1112
|
+
if (evt.dataChanged) {
|
1113
|
+
this._skipOnChange = true;
|
1114
|
+
void this._updateAllIds();
|
1115
|
+
}
|
1116
|
+
});
|
1117
|
+
}
|
1118
|
+
/**
|
1119
|
+
* Reset _allIds when the layers data has changed and refresh the selection ids and table
|
1120
|
+
*/
|
1121
|
+
async _updateAllIds() {
|
1122
|
+
this._allIds = await mapViewUtils.queryAllIds(this._layer);
|
1123
|
+
this.selectedIds = this.selectedIds.filter(id => this._allIds.indexOf(id) > -1);
|
1124
|
+
await this._refresh();
|
1125
|
+
}
|
1126
|
+
/**
|
1127
|
+
* Handle default OID or GlobalID from url parameters
|
1128
|
+
*/
|
1129
|
+
async _handleDefaults() {
|
1130
|
+
var _a, _b;
|
1131
|
+
if (!this._defaultOidHonored && ((_a = this.defaultOid) === null || _a === void 0 ? void 0 : _a.length) > 0 && this.defaultOid[0] > -1 && this._table) {
|
1132
|
+
await this._selectDefaultFeature(this.defaultOid);
|
1133
|
+
this._defaultOidHonored = true;
|
1134
|
+
this.defaultOid = undefined;
|
1135
|
+
this._showOnlySelected = false;
|
1136
|
+
this._toggleShowSelected();
|
1137
|
+
}
|
1138
|
+
if (!this._defaultGlobalIdHonored && ((_b = this.defaultGlobalId) === null || _b === void 0 ? void 0 : _b.length) > 0 && this._table) {
|
1139
|
+
const features = await mapViewUtils.queryFeaturesByGlobalID(this.defaultGlobalId, this._layer);
|
1140
|
+
const oids = (features === null || features === void 0 ? void 0 : features.length) > 0 ? features.map(f => f.getObjectId()) : undefined;
|
1141
|
+
if (oids) {
|
1142
|
+
await this._selectDefaultFeature(oids);
|
1143
|
+
}
|
1144
|
+
this._defaultGlobalIdHonored = true;
|
1145
|
+
this.defaultGlobalId = undefined;
|
1146
|
+
this._showOnlySelected = false;
|
1147
|
+
this._toggleShowSelected();
|
1148
|
+
}
|
1149
|
+
}
|
1121
1150
|
/**
|
1122
1151
|
* Store the column names and current hidden status to support show/hide of columns
|
1123
1152
|
* @param fieldNames optional list of names from new config options
|
@@ -1146,13 +1175,12 @@ const LayerTable = class {
|
|
1146
1175
|
/**
|
1147
1176
|
* Select the feature that was specified via url params
|
1148
1177
|
*/
|
1149
|
-
_selectDefaultFeature(oids) {
|
1178
|
+
async _selectDefaultFeature(oids) {
|
1150
1179
|
if (oids.length > 0) {
|
1151
1180
|
this._table.highlightIds.addMany(oids);
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
});
|
1181
|
+
// This is messed up and only make this worse
|
1182
|
+
//const i = this._table.viewModel.getObjectIdIndex(oids[0]);
|
1183
|
+
//this._table.viewModel.scrollToIndex(i);
|
1156
1184
|
}
|
1157
1185
|
}
|
1158
1186
|
/**
|
@@ -1528,6 +1556,8 @@ const LayerTable = class {
|
|
1528
1556
|
}
|
1529
1557
|
get el() { return index.getElement(this); }
|
1530
1558
|
static get watchers() { return {
|
1559
|
+
"defaultOid": ["defaultOidWatchHandler"],
|
1560
|
+
"defaultGlobalId": ["defaultGlobalIdWatchHandler"],
|
1531
1561
|
"enableCSV": ["enableCSVWatchHandler"],
|
1532
1562
|
"enableInlineEdit": ["enableInlineEditWatchHandler"],
|
1533
1563
|
"enableShare": ["enableShareWatchHandler"],
|
@@ -19,13 +19,27 @@ const crowdsourceManagerCss = ":host{display:block;--calcite-label-margin-bottom
|
|
19
19
|
const CrowdsourceManager = class {
|
20
20
|
constructor(hostRef) {
|
21
21
|
index.registerInstance(this, hostRef);
|
22
|
+
//--------------------------------------------------------------------------
|
23
|
+
//
|
24
|
+
// Properties (protected)
|
25
|
+
//
|
26
|
+
//--------------------------------------------------------------------------
|
27
|
+
/**
|
28
|
+
* boolean: When true the map view will be set after render due to popup obstructing the view
|
29
|
+
* MapView.when is not fired when mapView is not currently visible
|
30
|
+
*/
|
31
|
+
this._defaultCenterHonored = false;
|
32
|
+
/**
|
33
|
+
* boolean: When true the map view will be set after render due to popup obstructing the view
|
34
|
+
* MapView.when is not fired when mapView is not currently visible
|
35
|
+
*/
|
36
|
+
this._defaultLevelHonored = false;
|
22
37
|
/**
|
23
38
|
* boolean: When true the map view will be set after render due to popup obstructing the view
|
24
39
|
* MapView.when is not fired when mapView is not currently visible
|
25
40
|
*/
|
26
41
|
this._shouldSetMapView = false;
|
27
42
|
this.defaultCenter = "";
|
28
|
-
this.defaultFilter = "";
|
29
43
|
this.defaultGlobalId = "";
|
30
44
|
this.defaultLayer = "";
|
31
45
|
this.defaultLevel = "";
|
@@ -70,39 +84,6 @@ const CrowdsourceManager = class {
|
|
70
84
|
// Watch handlers
|
71
85
|
//
|
72
86
|
//--------------------------------------------------------------------------
|
73
|
-
/**
|
74
|
-
* Watch for center url param to be set
|
75
|
-
*/
|
76
|
-
defaultCenterWatchHandler() {
|
77
|
-
this._defaultCenter = !this.defaultCenter ? undefined :
|
78
|
-
this.defaultCenter.split(";").map(v => parseFloat(v));
|
79
|
-
}
|
80
|
-
/**
|
81
|
-
* Watch for filter url param to be set
|
82
|
-
*/
|
83
|
-
defaultFilterWatchHandler() {
|
84
|
-
this._defaultFilter = JSON.parse(this.defaultFilter);
|
85
|
-
}
|
86
|
-
/**
|
87
|
-
* Watch for globalid url param to be set
|
88
|
-
*/
|
89
|
-
defaultGlobalIdWatchHandler() {
|
90
|
-
this._defaultGlobalId = !this.defaultGlobalId ? undefined :
|
91
|
-
this.defaultGlobalId.indexOf(",") > -1 ? this.defaultGlobalId.split(",") : [this.defaultGlobalId];
|
92
|
-
}
|
93
|
-
/**
|
94
|
-
* Watch for oid url param to be set
|
95
|
-
*/
|
96
|
-
defaultOidWatchHandler() {
|
97
|
-
this._defaultOid = !this.defaultOid ? undefined :
|
98
|
-
this.defaultOid.indexOf(",") > -1 ? this.defaultOid.split(",").map(o => parseInt(o, 10)) : [parseInt(this.defaultOid, 10)];
|
99
|
-
}
|
100
|
-
/**
|
101
|
-
* Watch for zoom level param to be set
|
102
|
-
*/
|
103
|
-
defaultLevelWatchHandler() {
|
104
|
-
this._defaultLevel = !this.defaultLevel ? undefined : parseInt(this.defaultLevel, 10);
|
105
|
-
}
|
106
87
|
/**
|
107
88
|
* When true the map zoom tools will be available
|
108
89
|
*/
|
@@ -394,6 +375,7 @@ const CrowdsourceManager = class {
|
|
394
375
|
* @protected
|
395
376
|
*/
|
396
377
|
_getTable(layoutMode, panelOpen, hideTable) {
|
378
|
+
var _a, _b;
|
397
379
|
const tableClass = hideTable && this._isMobile ? "visibility-hidden" : "";
|
398
380
|
const tableSizeClass = this._getTableSizeClass(layoutMode, panelOpen);
|
399
381
|
const icon = this._getDividerIcon(layoutMode, panelOpen);
|
@@ -402,7 +384,11 @@ const CrowdsourceManager = class {
|
|
402
384
|
const toggleLayout = layoutMode === interfaces.ELayoutMode.HORIZONTAL ? "horizontal" : "vertical";
|
403
385
|
const toggleSlot = layoutMode === interfaces.ELayoutMode.HORIZONTAL ? "header" : "panel-start";
|
404
386
|
const hasMapAndLayer = this.defaultWebmap && this.defaultLayer;
|
405
|
-
|
387
|
+
const globalId = !this.defaultGlobalId ? undefined :
|
388
|
+
((_a = this.defaultGlobalId) === null || _a === void 0 ? void 0 : _a.indexOf(",")) > -1 ? this.defaultGlobalId.split(",") : [this.defaultGlobalId];
|
389
|
+
const defaultOid = !this.defaultOid ? undefined :
|
390
|
+
((_b = this.defaultOid) === null || _b === void 0 ? void 0 : _b.indexOf(",")) > -1 ? this.defaultOid.split(",").map(o => parseInt(o, 10)) : [parseInt(this.defaultOid, 10)];
|
391
|
+
return (index.h("calcite-shell", { class: `${tableSizeClass} ${tableClass} border-bottom` }, !this._isMobile ? (index.h("calcite-action-bar", { class: "border-sides", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, index.h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), text: "" }), index.h("calcite-tooltip", { label: tooltip, placement: "bottom", "reference-element": id }, index.h("span", null, tooltip)))) : undefined, index.h("div", { class: `width-full height-full position-relative` }, index.h("layer-table", { defaultGlobalId: hasMapAndLayer ? globalId : undefined, defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultOid: hasMapAndLayer && !globalId ? defaultOid : undefined, enableAutoRefresh: this.enableAutoRefresh, enableCSV: this.enableCSV, enableColumnReorder: this.enableColumnReorder, enableInlineEdit: this.enableInlineEdit, enableShare: this.enableShare, isMobile: this._isMobile, mapInfo: this._mapInfo, mapView: this === null || this === void 0 ? void 0 : this._mapView, onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._layerTable = el, shareIncludeEmbed: this.shareIncludeEmbed, shareIncludeSocial: this.shareIncludeSocial, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected }))));
|
406
392
|
}
|
407
393
|
/**
|
408
394
|
* Update the component layout when its size changes
|
@@ -455,17 +441,22 @@ const CrowdsourceManager = class {
|
|
455
441
|
* @protected
|
456
442
|
*/
|
457
443
|
async _setMapView() {
|
444
|
+
var _a;
|
458
445
|
this._mapInfo = this._getMapInfo(this._mapChange.id);
|
459
446
|
this._mapView = this._mapChange.mapView;
|
460
447
|
this._initMapZoom();
|
461
448
|
this._mapView.popupEnabled = false;
|
462
|
-
|
449
|
+
const center = !this.defaultCenter || this._defaultCenterHonored ?
|
450
|
+
undefined : (_a = this.defaultCenter) === null || _a === void 0 ? void 0 : _a.split(";").map(v => parseFloat(v));
|
451
|
+
const zoom = !this.defaultLevel || this._defaultLevelHonored ?
|
452
|
+
undefined : parseInt(this.defaultLevel, 10);
|
453
|
+
if (center && zoom) {
|
463
454
|
await this._mapView.goTo({
|
464
|
-
center
|
465
|
-
zoom
|
455
|
+
center,
|
456
|
+
zoom
|
466
457
|
});
|
467
|
-
this.
|
468
|
-
this.
|
458
|
+
this._defaultCenterHonored = true;
|
459
|
+
this._defaultLevelHonored = true;
|
469
460
|
}
|
470
461
|
}
|
471
462
|
/**
|
@@ -497,11 +488,6 @@ const CrowdsourceManager = class {
|
|
497
488
|
}
|
498
489
|
get el() { return index.getElement(this); }
|
499
490
|
static get watchers() { return {
|
500
|
-
"defaultCenter": ["defaultCenterWatchHandler"],
|
501
|
-
"defaultFilter": ["defaultFilterWatchHandler"],
|
502
|
-
"defaultGlobalId": ["defaultGlobalIdWatchHandler"],
|
503
|
-
"defaultOid": ["defaultOidWatchHandler"],
|
504
|
-
"defaultLevel": ["defaultLevelWatchHandler"],
|
505
491
|
"enableZoom": ["enableZoomWatchHandler"]
|
506
492
|
}; }
|
507
493
|
};
|