@vertigis/arcgis-extensions 33.0.0 → 33.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/html/assets/js/search.js +1 -1
- package/docs/html/classes/mapping__layerextension.arraywrappedcollection.html +2 -2
- package/docs/html/classes/mapping__layerextension.layerextension.html +55 -55
- package/docs/html/classes/mapping__layerextension.layerextensionschema.html +6 -6
- package/docs/html/classes/mapping_buildingscenelayerextension.buildingscenelayerextension.html +44 -44
- package/docs/html/classes/mapping_buildingscenelayerextension.buildingscenelayerreadonlyschema.html +4 -4
- package/docs/html/classes/mapping_csvlayerextension.csvlayerextension.html +50 -50
- package/docs/html/classes/mapping_elevationlayerextension.elevationlayerextension.html +50 -50
- package/docs/html/classes/mapping_featurecollectionlayerextension.featurecollectionlayerextension.html +44 -44
- package/docs/html/classes/mapping_featurelayerextension.featurelayerextension.html +59 -59
- package/docs/html/classes/mapping_featurelayerextensionbase.featurelayerextensionbase.html +48 -48
- package/docs/html/classes/mapping_featurelayerextensionbase.featurelayerschema.html +4 -4
- package/docs/html/classes/mapping_georsslayerextension.georsslayerextension.html +49 -49
- package/docs/html/classes/mapping_graphicslayerextension.graphicslayerextension.html +44 -44
- package/docs/html/classes/mapping_grouplayerextension.grouplayerextension.html +41 -41
- package/docs/html/classes/mapping_imagerylayerextension.imagerylayerextension.html +48 -48
- package/docs/html/classes/mapping_imagerytilelayerextension.imagerytilelayerextension.html +47 -47
- package/docs/html/classes/mapping_integratedmeshlayerextension.integratedmeshlayerextension.html +51 -51
- package/docs/html/classes/mapping_kmllayerextension.kmllayerextension.html +45 -45
- package/docs/html/classes/mapping_mapimagelayerextension.mapimagelayerextension.html +47 -47
- package/docs/html/classes/mapping_openstreetmaplayerextension.openstreetmaplayerextension.html +52 -52
- package/docs/html/classes/mapping_pointcloudlayerextension.pointcloudlayerextension.html +49 -49
- package/docs/html/classes/mapping_scenelayerextension.scenelayerextension.html +48 -48
- package/docs/html/classes/mapping_streamlayerextension.streamlayerextension.html +49 -49
- package/docs/html/classes/mapping_streamlayerextension.streamlayerschema.html +4 -4
- package/docs/html/classes/mapping_tilelayerextension.tilelayerextension.html +46 -46
- package/docs/html/classes/mapping_vectortilelayerextension.vectortilelayerextension.html +49 -49
- package/docs/html/classes/mapping_webtilelayerextension.webtilelayerextension.html +52 -52
- package/docs/html/classes/mapping_wmslayerextension.wmslayerextension.html +46 -46
- package/docs/html/classes/mapping_wmtslayerextension.wmtslayerextension.html +50 -50
- package/docs/html/classes/menus_menuitem.menuitem.html +36 -44
- package/docs/html/classes/tasks_identify_arcgissublayerqueryidentifyprovider.arcgissublayerqueryidentifyprovider.html +2 -2
- package/docs/html/classes/tasks_identify_buildingcomponentsublayerclientsideidentifyprovider.buildingcomponentsublayerclientsideidentifyprovider.html +48 -5
- package/docs/html/classes/tasks_identify_buildingcomponentsublayerhittestidentifyprovider.buildingcomponentsublayerhittestidentifyprovider.html +1 -1
- package/docs/html/classes/tasks_identify_clientsideidentifyprovider.clientsideidentifyprovider.html +55 -7
- package/docs/html/classes/tasks_identify_csvlayer3dhittestidentifyprovider.csvlayer3dhittestidentifyprovider.html +1 -1
- package/docs/html/classes/tasks_identify_csvlayerclientsidequeryidentifyprovider.csvlayerclientsidequeryidentifyprovider.html +13 -7
- package/docs/html/classes/tasks_identify_featurelayer3dhittestidentifyprovider.featurelayer3dhittestidentifyprovider.html +1 -1
- package/docs/html/classes/tasks_identify_featurelayerclientsideidentifyprovider.featurelayerclientsideidentifyprovider.html +66 -8
- package/docs/html/classes/tasks_identify_featurelayerqueryidentifyprovider.featurelayerqueryidentifyprovider.html +2 -2
- package/docs/html/classes/tasks_identify_georsslayeridentifyprovider.georsslayeridentifyprovider.html +2 -2
- package/docs/html/classes/tasks_identify_graphicslayerqueryidentifyprovider.graphicslayerqueryidentifyprovider.html +2 -2
- package/docs/html/classes/tasks_identify_hittestidentifyprovider.hittestidentifyprovider.html +1 -1
- package/docs/html/classes/tasks_identify_identifyproviderbase.identifyproviderbase.html +18 -6
- package/docs/html/classes/tasks_identify_imagerylayeridentifyprovider.imagerylayeridentifyprovider.html +2 -2
- package/docs/html/classes/tasks_identify_kmllayerqueryidentifyprovider.kmllayerqueryidentifyprovider.html +2 -2
- package/docs/html/classes/tasks_identify_pointcloudlayerhittestidentifyprovider.pointcloudlayerhittestidentifyprovider.html +1 -1
- package/docs/html/classes/tasks_identify_scenelayerclientsideidentifyprovider.scenelayerclientsideidentifyprovider.html +48 -5
- package/docs/html/classes/tasks_identify_scenelayerhittestidentifyprovider.scenelayerhittestidentifyprovider.html +1 -1
- package/docs/html/classes/tasks_identify_scenelayerqueryidentifyprovider.scenelayerqueryidentifyprovider.html +2 -2
- package/docs/html/classes/tasks_identify_streamlayerclientsidequeryidentifyprovider.streamlayerclientsidequeryidentifyprovider.html +48 -5
- package/docs/html/classes/tasks_identify_wmssublayeridentifyprovider.wmssublayeridentifyprovider.html +2 -2
- package/docs/html/index.html +3 -0
- package/docs/html/interfaces/mapping__layerextension.layerextensionproperties.html +7 -7
- package/docs/html/interfaces/mapping__layerextension.layerproperties.html +2 -2
- package/docs/html/interfaces/mapping__layerextension.layerreference.html +4 -4
- package/docs/html/interfaces/mapping_buildingscenelayerextension.buildingscenelayerextensionproperties.html +5 -5
- package/docs/html/interfaces/mapping_buildingscenelayerextension.buildingscenelayerproperties.html +2 -2
- package/docs/html/interfaces/mapping_csvlayerextension.csvlayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_elevationlayerextension.elevationlayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_featurelayerextension.featurelayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_featurelayerextension.featurelayerproperties.html +2 -2
- package/docs/html/interfaces/mapping_featurelayerextensionbase.featurelayerbaseproperties.html +2 -2
- package/docs/html/interfaces/mapping_featurelayerextensionbase.featurelayerextensionbaseproperties.html +6 -6
- package/docs/html/interfaces/mapping_georsslayerextension.georsslayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_graphicslayerextension.graphicslayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_grouplayerextension.grouplayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_imagerylayerextension.imagerylayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_imagerytilelayerextension.imagerytilelayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_imagerytilelayerextension.imagerytilelayerproperties.html +2 -2
- package/docs/html/interfaces/mapping_integratedmeshlayerextension.integratedmeshlayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_kmllayerextension.kmllayerextensionproperties.html +5 -5
- package/docs/html/interfaces/mapping_mapimagelayerextension.mapimagelayerextensionproperties.html +5 -5
- package/docs/html/interfaces/mapping_openstreetmaplayerextension.openstreetmaplayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_pointcloudlayerextension.pointcloudlayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_scenelayerextension.scenelayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_streamlayerextension.streamlayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_tilelayerextension.tilelayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_tilelayerextension.tilelayerproperties.html +2 -2
- package/docs/html/interfaces/mapping_vectortilelayerextension.vectortilelayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_webtilelayerextension.webtilelayerextensionproperties.html +6 -6
- package/docs/html/interfaces/mapping_wmslayerextension.wmslayerextensionproperties.html +5 -5
- package/docs/html/interfaces/mapping_wmtslayerextension.wmtslayerextensionproperties.html +5 -5
- package/docs/html/interfaces/portal_tiledmapservicelayer.tiledmapservicelayer-1.html +8 -8
- package/docs/html/modules/mapping__layerextension.html +1 -1
- package/docs/html/modules/portal_tiledmapservicelayer.tiledmapservicelayer.html +11 -5
- package/docs/html/modules/tasks_identify__utilities.html +114 -0
- package/docs/html/modules/utilities__layers.html +35 -35
- package/docs/html/modules/utilities_extensions.html +117 -12
- package/docs/html/modules/version.html +1 -1
- package/docs/html/modules.html +4 -0
- package/mapping/FeatureLayerExtension.js +1 -1
- package/mapping/WMTSLayerExtension.js +1 -1
- package/mapping/_LayerExtension.js +1 -1
- package/menus/MenuItem.d.ts +20 -19
- package/menus/MenuItem.js +1 -1
- package/package.json +1 -1
- package/portal/TiledMapServiceLayer.d.ts +3 -1
- package/portal/TiledMapServiceLayer.js +1 -1
- package/tasks/identify/CSVLayerClientSideQueryIdentifyProvider.d.ts +3 -3
- package/tasks/identify/CSVLayerClientSideQueryIdentifyProvider.js +1 -1
- package/tasks/identify/ClientSideIdentifyProvider.d.ts +6 -4
- package/tasks/identify/ClientSideIdentifyProvider.js +1 -1
- package/tasks/identify/FeatureLayerClientSideIdentifyProvider.d.ts +6 -0
- package/tasks/identify/FeatureLayerClientSideIdentifyProvider.js +1 -1
- package/tasks/identify/IdentifyProviderBase.d.ts +4 -2
- package/tasks/identify/IdentifyProviderBase.js +1 -1
- package/tasks/identify/_utilities.d.ts +1 -0
- package/tasks/identify/_utilities.js +1 -0
- package/utilities/_layers.js +1 -1
- package/utilities/extensions.d.ts +21 -0
- package/utilities/extensions.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -71,17 +71,20 @@
|
|
|
71
71
|
<h3>Functions</h3>
|
|
72
72
|
<ul class="tsd-index-list">
|
|
73
73
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isarcgisservicetableextension" class="tsd-kind-icon">is<wbr>ArcGISService<wbr>Table<wbr>Extension</a></li>
|
|
74
|
+
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isbuildingscenelayerextension" class="tsd-kind-icon">is<wbr>Building<wbr>Scene<wbr>Layer<wbr>Extension</a></li>
|
|
74
75
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#iscsvlayerextension" class="tsd-kind-icon">isCSVLayer<wbr>Extension</a></li>
|
|
75
76
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isfeaturecollectionlayerextension" class="tsd-kind-icon">is<wbr>Feature<wbr>Collection<wbr>Layer<wbr>Extension</a></li>
|
|
76
77
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isfeaturelayerextension" class="tsd-kind-icon">is<wbr>Feature<wbr>Layer<wbr>Extension</a></li>
|
|
77
78
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isgeorsslayerextension" class="tsd-kind-icon">is<wbr>Geo<wbr>Rss<wbr>Layer<wbr>Extension</a></li>
|
|
78
79
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isgrouplayerextension" class="tsd-kind-icon">is<wbr>Group<wbr>Layer<wbr>Extension</a></li>
|
|
79
80
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isimagerylayerextension" class="tsd-kind-icon">is<wbr>Imagery<wbr>Layer<wbr>Extension</a></li>
|
|
81
|
+
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#iskmllayerextension" class="tsd-kind-icon">isKMLLayer<wbr>Extension</a></li>
|
|
80
82
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#ismapimagesublayerextension" class="tsd-kind-icon">is<wbr>Map<wbr>Image<wbr>Sublayer<wbr>Extension</a></li>
|
|
81
83
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isscenelayerextension" class="tsd-kind-icon">is<wbr>Scene<wbr>Layer<wbr>Extension</a></li>
|
|
82
84
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#isstreamlayerextension" class="tsd-kind-icon">is<wbr>Stream<wbr>Layer<wbr>Extension</a></li>
|
|
83
85
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#iswmslayerextension" class="tsd-kind-icon">isWMSLayer<wbr>Extension</a></li>
|
|
84
86
|
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#iswmssublayerextension" class="tsd-kind-icon">isWMSSublayer<wbr>Extension</a></li>
|
|
87
|
+
<li class="tsd-kind-function tsd-parent-kind-module"><a href="utilities_extensions.html#iswmtslayerextension" class="tsd-kind-icon">isWMTSLayer<wbr>Extension</a></li>
|
|
85
88
|
</ul>
|
|
86
89
|
</section>
|
|
87
90
|
</div>
|
|
@@ -99,7 +102,7 @@
|
|
|
99
102
|
<li class="tsd-description">
|
|
100
103
|
<aside class="tsd-sources">
|
|
101
104
|
<ul>
|
|
102
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
105
|
+
<li>Defined in src/utilities/extensions.ts:35</li>
|
|
103
106
|
</ul>
|
|
104
107
|
</aside>
|
|
105
108
|
<div class="tsd-comment tsd-typography">
|
|
@@ -120,6 +123,37 @@
|
|
|
120
123
|
</li>
|
|
121
124
|
</ul>
|
|
122
125
|
</section>
|
|
126
|
+
<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-module">
|
|
127
|
+
<a name="isbuildingscenelayerextension" class="tsd-anchor"></a>
|
|
128
|
+
<h3>is<wbr>Building<wbr>Scene<wbr>Layer<wbr>Extension</h3>
|
|
129
|
+
<ul class="tsd-signatures tsd-kind-function tsd-parent-kind-module">
|
|
130
|
+
<li class="tsd-signature tsd-kind-icon">is<wbr>Building<wbr>Scene<wbr>Layer<wbr>Extension<span class="tsd-signature-symbol">(</span>extension<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">extension</span><span class="tsd-signature-symbol"> is </span><a href="../classes/mapping_buildingscenelayerextension.buildingscenelayerextension.html" class="tsd-signature-type" data-tsd-kind="Class">BuildingSceneLayerExtension</a></li>
|
|
131
|
+
</ul>
|
|
132
|
+
<ul class="tsd-descriptions">
|
|
133
|
+
<li class="tsd-description">
|
|
134
|
+
<aside class="tsd-sources">
|
|
135
|
+
<ul>
|
|
136
|
+
<li>Defined in src/utilities/extensions.ts:211</li>
|
|
137
|
+
</ul>
|
|
138
|
+
</aside>
|
|
139
|
+
<div class="tsd-comment tsd-typography">
|
|
140
|
+
<div class="lead">
|
|
141
|
+
<p>Returns true if the extension is a BuildingSceneLayerExtension.</p>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
<h4 class="tsd-parameters-title">Parameters</h4>
|
|
145
|
+
<ul class="tsd-parameters">
|
|
146
|
+
<li>
|
|
147
|
+
<h5>extension: <span class="tsd-signature-type">unknown</span></h5>
|
|
148
|
+
<div class="tsd-comment tsd-typography">
|
|
149
|
+
<p>The extension to check.</p>
|
|
150
|
+
</div>
|
|
151
|
+
</li>
|
|
152
|
+
</ul>
|
|
153
|
+
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">extension</span><span class="tsd-signature-symbol"> is </span><a href="../classes/mapping_buildingscenelayerextension.buildingscenelayerextension.html" class="tsd-signature-type" data-tsd-kind="Class">BuildingSceneLayerExtension</a></h4>
|
|
154
|
+
</li>
|
|
155
|
+
</ul>
|
|
156
|
+
</section>
|
|
123
157
|
<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-module">
|
|
124
158
|
<a name="iscsvlayerextension" class="tsd-anchor"></a>
|
|
125
159
|
<h3>isCSVLayer<wbr>Extension</h3>
|
|
@@ -130,7 +164,7 @@
|
|
|
130
164
|
<li class="tsd-description">
|
|
131
165
|
<aside class="tsd-sources">
|
|
132
166
|
<ul>
|
|
133
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
167
|
+
<li>Defined in src/utilities/extensions.ts:84</li>
|
|
134
168
|
</ul>
|
|
135
169
|
</aside>
|
|
136
170
|
<div class="tsd-comment tsd-typography">
|
|
@@ -161,7 +195,7 @@
|
|
|
161
195
|
<li class="tsd-description">
|
|
162
196
|
<aside class="tsd-sources">
|
|
163
197
|
<ul>
|
|
164
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
198
|
+
<li>Defined in src/utilities/extensions.ts:70</li>
|
|
165
199
|
</ul>
|
|
166
200
|
</aside>
|
|
167
201
|
<div class="tsd-comment tsd-typography">
|
|
@@ -192,7 +226,7 @@
|
|
|
192
226
|
<li class="tsd-description">
|
|
193
227
|
<aside class="tsd-sources">
|
|
194
228
|
<ul>
|
|
195
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
229
|
+
<li>Defined in src/utilities/extensions.ts:58</li>
|
|
196
230
|
</ul>
|
|
197
231
|
</aside>
|
|
198
232
|
<div class="tsd-comment tsd-typography">
|
|
@@ -223,7 +257,7 @@
|
|
|
223
257
|
<li class="tsd-description">
|
|
224
258
|
<aside class="tsd-sources">
|
|
225
259
|
<ul>
|
|
226
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
260
|
+
<li>Defined in src/utilities/extensions.ts:96</li>
|
|
227
261
|
</ul>
|
|
228
262
|
</aside>
|
|
229
263
|
<div class="tsd-comment tsd-typography">
|
|
@@ -254,7 +288,7 @@
|
|
|
254
288
|
<li class="tsd-description">
|
|
255
289
|
<aside class="tsd-sources">
|
|
256
290
|
<ul>
|
|
257
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
291
|
+
<li>Defined in src/utilities/extensions.ts:49</li>
|
|
258
292
|
</ul>
|
|
259
293
|
</aside>
|
|
260
294
|
<div class="tsd-comment tsd-typography">
|
|
@@ -285,7 +319,7 @@
|
|
|
285
319
|
<li class="tsd-description">
|
|
286
320
|
<aside class="tsd-sources">
|
|
287
321
|
<ul>
|
|
288
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
322
|
+
<li>Defined in src/utilities/extensions.ts:108</li>
|
|
289
323
|
</ul>
|
|
290
324
|
</aside>
|
|
291
325
|
<div class="tsd-comment tsd-typography">
|
|
@@ -306,6 +340,37 @@
|
|
|
306
340
|
</li>
|
|
307
341
|
</ul>
|
|
308
342
|
</section>
|
|
343
|
+
<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-module">
|
|
344
|
+
<a name="iskmllayerextension" class="tsd-anchor"></a>
|
|
345
|
+
<h3>isKMLLayer<wbr>Extension</h3>
|
|
346
|
+
<ul class="tsd-signatures tsd-kind-function tsd-parent-kind-module">
|
|
347
|
+
<li class="tsd-signature tsd-kind-icon">isKMLLayer<wbr>Extension<span class="tsd-signature-symbol">(</span>extension<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">extension</span><span class="tsd-signature-symbol"> is </span><a href="../classes/mapping_kmllayerextension.kmllayerextension.html" class="tsd-signature-type" data-tsd-kind="Class">KMLLayerExtension</a></li>
|
|
348
|
+
</ul>
|
|
349
|
+
<ul class="tsd-descriptions">
|
|
350
|
+
<li class="tsd-description">
|
|
351
|
+
<aside class="tsd-sources">
|
|
352
|
+
<ul>
|
|
353
|
+
<li>Defined in src/utilities/extensions.ts:199</li>
|
|
354
|
+
</ul>
|
|
355
|
+
</aside>
|
|
356
|
+
<div class="tsd-comment tsd-typography">
|
|
357
|
+
<div class="lead">
|
|
358
|
+
<p>Returns true if the extension is a KMLLayerExtension.</p>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
<h4 class="tsd-parameters-title">Parameters</h4>
|
|
362
|
+
<ul class="tsd-parameters">
|
|
363
|
+
<li>
|
|
364
|
+
<h5>extension: <span class="tsd-signature-type">unknown</span></h5>
|
|
365
|
+
<div class="tsd-comment tsd-typography">
|
|
366
|
+
<p>The extension to check.</p>
|
|
367
|
+
</div>
|
|
368
|
+
</li>
|
|
369
|
+
</ul>
|
|
370
|
+
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">extension</span><span class="tsd-signature-symbol"> is </span><a href="../classes/mapping_kmllayerextension.kmllayerextension.html" class="tsd-signature-type" data-tsd-kind="Class">KMLLayerExtension</a></h4>
|
|
371
|
+
</li>
|
|
372
|
+
</ul>
|
|
373
|
+
</section>
|
|
309
374
|
<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-module">
|
|
310
375
|
<a name="ismapimagesublayerextension" class="tsd-anchor"></a>
|
|
311
376
|
<h3>is<wbr>Map<wbr>Image<wbr>Sublayer<wbr>Extension</h3>
|
|
@@ -316,7 +381,7 @@
|
|
|
316
381
|
<li class="tsd-description">
|
|
317
382
|
<aside class="tsd-sources">
|
|
318
383
|
<ul>
|
|
319
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
384
|
+
<li>Defined in src/utilities/extensions.ts:171</li>
|
|
320
385
|
</ul>
|
|
321
386
|
</aside>
|
|
322
387
|
<div class="tsd-comment tsd-typography">
|
|
@@ -347,7 +412,7 @@
|
|
|
347
412
|
<li class="tsd-description">
|
|
348
413
|
<aside class="tsd-sources">
|
|
349
414
|
<ul>
|
|
350
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
415
|
+
<li>Defined in src/utilities/extensions.ts:121</li>
|
|
351
416
|
</ul>
|
|
352
417
|
</aside>
|
|
353
418
|
<div class="tsd-comment tsd-typography">
|
|
@@ -378,7 +443,7 @@
|
|
|
378
443
|
<li class="tsd-description">
|
|
379
444
|
<aside class="tsd-sources">
|
|
380
445
|
<ul>
|
|
381
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
446
|
+
<li>Defined in src/utilities/extensions.ts:134</li>
|
|
382
447
|
</ul>
|
|
383
448
|
</aside>
|
|
384
449
|
<div class="tsd-comment tsd-typography">
|
|
@@ -409,7 +474,7 @@
|
|
|
409
474
|
<li class="tsd-description">
|
|
410
475
|
<aside class="tsd-sources">
|
|
411
476
|
<ul>
|
|
412
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
477
|
+
<li>Defined in src/utilities/extensions.ts:146</li>
|
|
413
478
|
</ul>
|
|
414
479
|
</aside>
|
|
415
480
|
<div class="tsd-comment tsd-typography">
|
|
@@ -440,7 +505,7 @@
|
|
|
440
505
|
<li class="tsd-description">
|
|
441
506
|
<aside class="tsd-sources">
|
|
442
507
|
<ul>
|
|
443
|
-
<li>Defined in src/utilities/extensions.ts:
|
|
508
|
+
<li>Defined in src/utilities/extensions.ts:158</li>
|
|
444
509
|
</ul>
|
|
445
510
|
</aside>
|
|
446
511
|
<div class="tsd-comment tsd-typography">
|
|
@@ -461,6 +526,37 @@
|
|
|
461
526
|
</li>
|
|
462
527
|
</ul>
|
|
463
528
|
</section>
|
|
529
|
+
<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-module">
|
|
530
|
+
<a name="iswmtslayerextension" class="tsd-anchor"></a>
|
|
531
|
+
<h3>isWMTSLayer<wbr>Extension</h3>
|
|
532
|
+
<ul class="tsd-signatures tsd-kind-function tsd-parent-kind-module">
|
|
533
|
+
<li class="tsd-signature tsd-kind-icon">isWMTSLayer<wbr>Extension<span class="tsd-signature-symbol">(</span>extension<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">extension</span><span class="tsd-signature-symbol"> is </span><a href="../classes/mapping_wmtslayerextension.wmtslayerextension.html" class="tsd-signature-type" data-tsd-kind="Class">WMTSLayerExtension</a></li>
|
|
534
|
+
</ul>
|
|
535
|
+
<ul class="tsd-descriptions">
|
|
536
|
+
<li class="tsd-description">
|
|
537
|
+
<aside class="tsd-sources">
|
|
538
|
+
<ul>
|
|
539
|
+
<li>Defined in src/utilities/extensions.ts:186</li>
|
|
540
|
+
</ul>
|
|
541
|
+
</aside>
|
|
542
|
+
<div class="tsd-comment tsd-typography">
|
|
543
|
+
<div class="lead">
|
|
544
|
+
<p>Returns true if the extension is a WMTSLayerExtension.</p>
|
|
545
|
+
</div>
|
|
546
|
+
</div>
|
|
547
|
+
<h4 class="tsd-parameters-title">Parameters</h4>
|
|
548
|
+
<ul class="tsd-parameters">
|
|
549
|
+
<li>
|
|
550
|
+
<h5>extension: <span class="tsd-signature-type">unknown</span></h5>
|
|
551
|
+
<div class="tsd-comment tsd-typography">
|
|
552
|
+
<p>The extension to check.</p>
|
|
553
|
+
</div>
|
|
554
|
+
</li>
|
|
555
|
+
</ul>
|
|
556
|
+
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">extension</span><span class="tsd-signature-symbol"> is </span><a href="../classes/mapping_wmtslayerextension.wmtslayerextension.html" class="tsd-signature-type" data-tsd-kind="Class">WMTSLayerExtension</a></h4>
|
|
557
|
+
</li>
|
|
558
|
+
</ul>
|
|
559
|
+
</section>
|
|
464
560
|
</section>
|
|
465
561
|
</div>
|
|
466
562
|
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
|
|
@@ -479,6 +575,9 @@
|
|
|
479
575
|
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
480
576
|
<a href="utilities_extensions.html#isarcgisservicetableextension" class="tsd-kind-icon">is<wbr>ArcGISService<wbr>Table<wbr>Extension</a>
|
|
481
577
|
</li>
|
|
578
|
+
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
579
|
+
<a href="utilities_extensions.html#isbuildingscenelayerextension" class="tsd-kind-icon">is<wbr>Building<wbr>Scene<wbr>Layer<wbr>Extension</a>
|
|
580
|
+
</li>
|
|
482
581
|
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
483
582
|
<a href="utilities_extensions.html#iscsvlayerextension" class="tsd-kind-icon">isCSVLayer<wbr>Extension</a>
|
|
484
583
|
</li>
|
|
@@ -497,6 +596,9 @@
|
|
|
497
596
|
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
498
597
|
<a href="utilities_extensions.html#isimagerylayerextension" class="tsd-kind-icon">is<wbr>Imagery<wbr>Layer<wbr>Extension</a>
|
|
499
598
|
</li>
|
|
599
|
+
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
600
|
+
<a href="utilities_extensions.html#iskmllayerextension" class="tsd-kind-icon">isKMLLayer<wbr>Extension</a>
|
|
601
|
+
</li>
|
|
500
602
|
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
501
603
|
<a href="utilities_extensions.html#ismapimagesublayerextension" class="tsd-kind-icon">is<wbr>Map<wbr>Image<wbr>Sublayer<wbr>Extension</a>
|
|
502
604
|
</li>
|
|
@@ -512,6 +614,9 @@
|
|
|
512
614
|
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
513
615
|
<a href="utilities_extensions.html#iswmssublayerextension" class="tsd-kind-icon">isWMSSublayer<wbr>Extension</a>
|
|
514
616
|
</li>
|
|
617
|
+
<li class=" tsd-kind-function tsd-parent-kind-module">
|
|
618
|
+
<a href="utilities_extensions.html#iswmtslayerextension" class="tsd-kind-icon">isWMTSLayer<wbr>Extension</a>
|
|
619
|
+
</li>
|
|
515
620
|
</ul>
|
|
516
621
|
</nav>
|
|
517
622
|
</div>
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
<section class="tsd-panel tsd-member tsd-kind-variable tsd-parent-kind-module">
|
|
82
82
|
<a name="version-1" class="tsd-anchor"></a>
|
|
83
83
|
<h3><span class="tsd-flag ts-flagConst">Const</span> version</h3>
|
|
84
|
-
<div class="tsd-signature tsd-kind-icon">version<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">"33.
|
|
84
|
+
<div class="tsd-signature tsd-kind-icon">version<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">"33.3.1"</span><span class="tsd-signature-symbol"> = "33.3.1"</span></div>
|
|
85
85
|
<aside class="tsd-sources">
|
|
86
86
|
<ul>
|
|
87
87
|
<li>Defined in src/version.ts:4</li>
|
package/docs/html/modules.html
CHANGED
|
@@ -373,6 +373,7 @@
|
|
|
373
373
|
<li class="tsd-kind-module"><a href="modules/tasks_identify_streamlayerclientsidequeryidentifyprovider.html" class="tsd-kind-icon">tasks/identify/<wbr>Stream<wbr>Layer<wbr>Client<wbr>Side<wbr>Query<wbr>Identify<wbr>Provider</a></li>
|
|
374
374
|
<li class="tsd-kind-module"><a href="modules/tasks_identify_streamlayerqueryidentifyprovider.html" class="tsd-kind-icon">tasks/identify/<wbr>Stream<wbr>Layer<wbr>Query<wbr>Identify<wbr>Provider</a></li>
|
|
375
375
|
<li class="tsd-kind-module"><a href="modules/tasks_identify_wmssublayeridentifyprovider.html" class="tsd-kind-icon">tasks/identify/WMSSublayer<wbr>Identify<wbr>Provider</a></li>
|
|
376
|
+
<li class="tsd-kind-module"><a href="modules/tasks_identify__utilities.html" class="tsd-kind-icon">tasks/identify/_<wbr>utilities</a></li>
|
|
376
377
|
<li class="tsd-kind-module"><a href="modules/tasks_query_arcgisservicetablequeryprovider.html" class="tsd-kind-icon">tasks/query/<wbr>ArcGISService<wbr>Table<wbr>Query<wbr>Provider</a></li>
|
|
377
378
|
<li class="tsd-kind-module"><a href="modules/tasks_query_arcgissublayerqueryprovider.html" class="tsd-kind-icon">tasks/query/<wbr>ArcGISSublayer<wbr>Query<wbr>Provider</a></li>
|
|
378
379
|
<li class="tsd-kind-module"><a href="modules/tasks_query_buildingcomponentsublayerclientsidequeryprovider.html" class="tsd-kind-icon">tasks/query/<wbr>Building<wbr>Component<wbr>Sublayer<wbr>Client<wbr>Side<wbr>Query<wbr>Provider</a></li>
|
|
@@ -1395,6 +1396,9 @@
|
|
|
1395
1396
|
<li class=" tsd-kind-module">
|
|
1396
1397
|
<a href="modules/tasks_identify_wmssublayeridentifyprovider.html">tasks/identify/WMSSublayer<wbr>Identify<wbr>Provider</a>
|
|
1397
1398
|
</li>
|
|
1399
|
+
<li class=" tsd-kind-module">
|
|
1400
|
+
<a href="modules/tasks_identify__utilities.html">tasks/identify/_<wbr>utilities</a>
|
|
1401
|
+
</li>
|
|
1398
1402
|
<li class=" tsd-kind-module">
|
|
1399
1403
|
<a href="modules/tasks_query_arcgisservicetablequeryprovider.html">tasks/query/<wbr>ArcGISService<wbr>Table<wbr>Query<wbr>Provider</a>
|
|
1400
1404
|
</li>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{config}from"../config.js";import{toAttachment}from"../data/Attachment.js";import{toGraphic}from"../data/Feature.js";import{FeatureSaveError}from"../data/FeatureSaveError.js";import{FeatureLayer as FeatureLayerJson}from"../portal/FeatureLayer.js";import{Layer as PortalLayer}from"../portal/Layer.js";import{DefaultArcGISRequestHelper}from"../support/ArcGISRequestHelper.js";import{cancelify}from"../support/Cancellable.js";import{serializable}from"../support/Serializable.js";import{ArcGISRelationshipCollection}from"../support/_ArcGISRelationshipCollection.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{Collection}from"../utilities/collection.js";import{isFeatureLayerExtension}from"../utilities/extensions.js";import{isFeatureLayer}from"../utilities/layers.js";import{isNumeric}from"../utilities/number.js";import{FeatureLayerExtensionBase,FeatureLayerSchema}from"./FeatureLayerExtensionBase.js";import{addOutFields}from"./support/layers.js";const ERR_INVALID_LAYER_TYPE="Cannot use feature layer that has a source collection and no url.",ERR_SCHEMA_READ_ONLY="This schema property is read-only.",ERR_HEATMAPS_NOT_SUPPORTED="Heatmap rendering has been disabled. They are not supported in this browser.";let FeatureLayerExtension=class extends FeatureLayerExtensionBase{get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get renderer(){var e;return null===(e=this.layer)||void 0===e?void 0:e.renderer}get _layerView(){var e;return this.layer&&(null===(e=this.mapExtension)||void 0===e?void 0:e._layerViews.find((e=>e.layer===this.layer)))}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,requestHelper:{...this._toPropertyDef(e.requestHelper),default:new DefaultArcGISRequestHelper({batchLayerRequests:!1})},enableClientSideData:{serializeModes:["initial"],
|
|
1
|
+
import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{config}from"../config.js";import{toAttachment}from"../data/Attachment.js";import{toGraphic}from"../data/Feature.js";import{FeatureSaveError}from"../data/FeatureSaveError.js";import{FeatureLayer as FeatureLayerJson}from"../portal/FeatureLayer.js";import{Layer as PortalLayer}from"../portal/Layer.js";import{DefaultArcGISRequestHelper}from"../support/ArcGISRequestHelper.js";import{cancelify}from"../support/Cancellable.js";import{serializable}from"../support/Serializable.js";import{ArcGISRelationshipCollection}from"../support/_ArcGISRelationshipCollection.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{Collection}from"../utilities/collection.js";import{isFeatureLayerExtension}from"../utilities/extensions.js";import{isFeatureLayer}from"../utilities/layers.js";import{isNumeric}from"../utilities/number.js";import{FeatureLayerExtensionBase,FeatureLayerSchema}from"./FeatureLayerExtensionBase.js";import{addOutFields}from"./support/layers.js";const ERR_INVALID_LAYER_TYPE="Cannot use feature layer that has a source collection and no url.",ERR_SCHEMA_READ_ONLY="This schema property is read-only.",ERR_HEATMAPS_NOT_SUPPORTED="Heatmap rendering has been disabled. They are not supported in this browser.";let FeatureLayerExtension=class extends FeatureLayerExtensionBase{get enableClientSideData(){var e,r;return void 0===this._enableClientSideData?"cluster"===(null===(r=null===(e=this.layer)||void 0===e?void 0:e.featureReduction)||void 0===r?void 0:r.type):this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get renderer(){var e;return null===(e=this.layer)||void 0===e?void 0:e.renderer}get _layerView(){var e;return this.layer&&(null===(e=this.mapExtension)||void 0===e?void 0:e._layerViews.find((e=>e.layer===this.layer)))}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,requestHelper:{...this._toPropertyDef(e.requestHelper),default:new DefaultArcGISRequestHelper({batchLayerRequests:!1})},enableClientSideData:{serializeModes:["initial"],isDefault:e=>{var r,t;return e===!("cluster"!==(null===(t=null===(r=this.layer)||void 0===r?void 0:r.featureReduction)||void 0===t?void 0:t.type))}}}}_isSupportedLayer(e){return super._isSupportedLayer(e)&&!Collection.isCollection(e.source)}async _getAttachments(e){var r;if(this.layer.capabilities&&!this.layer.capabilities.data.supportsAttachment)return[];const t=`${this._layerUrl}/${e.primaryKey}/attachments`,a=await this.requestHelper.request(t,{query:{f:"json"}});return(null===(r=null==a?void 0:a.data)||void 0===r?void 0:r.attachmentInfos)?a.data.attachmentInfos.map((e=>toAttachment(e,t))):[]}async _addFeatures(e,r){const t=Array.from(e);if(0===t.length)return;const a=await this._applyEdits({addFeatures:t.map(toGraphic)},r);if(!a.addFeatureResults||a.addFeatureResults.length!==t.length)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let i;if(a.addFeatureResults.forEach(((e,r)=>{if(e.error){i=i||new FeatureSaveError("Errors encountered when adding features.");const{primaryKey:a}=t[r];i.errors.set(a,new Error(`Failed to add feature with id ${a}. ${e.error.name} : ${e.error.message}`))}})),i)throw i}async _updateFeatures(e,r){const t=Array.from(e);if(0===t.length)return;const a=await this._applyEdits({updateFeatures:Array.from(e).map(toGraphic)},r);if(!a.updateFeatureResults||a.updateFeatureResults.length!==t.length)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let i;if(a.updateFeatureResults.forEach(((e,r)=>{if(e.error){i=i||new FeatureSaveError("Errors encountered when updating features.");const{primaryKey:a}=t[r];i.errors.set(a,new Error(`Failed to update feature with id ${a}. ${e.error.name} : ${e.error.message}`))}})),i)throw i}async _deleteFeatures(e,r){if(0===e.length)return;const t=await this._applyEdits({deleteFeatures:e.map((e=>({objectId:e})))},r);if(!t.deleteFeatureResults)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let a;if(t.deleteFeatureResults.forEach(((r,t)=>{if(r.error){a=a||new FeatureSaveError("Errors encountered when deleting features.");const i=e[t];a.errors.set(i,new Error(`Failed to delete feature with id ${i}. ${r.error.name} : ${r.error.message}`))}})),a)throw a}_createRelationships(){return new RelationshipCollection(this)}_createSchema(){return new FeatureLayerReadOnlySchema(this)}async _onInitialize(){if(this.layer&&!this._isSupportedLayer(this.layer))throw new InvalidOperationError(ERR_INVALID_LAYER_TYPE);if(await super._onInitialize(),await this.relationships.initialize(),this.layer.renderer&&"heatmap"===this.layer.renderer.type&&!config.heatmapsEnabled)throw new InvalidOperationError(ERR_HEATMAPS_NOT_SUPPORTED);this._updateClientSideFields(),this._watchHandles.push(this.watch("layer",(()=>{this._updateClientSideFields()}),!0)),this.notifyChange("capabilities")}_applyLayerProperties(e,r){if(FeatureLayerJson.isFeatureCollection(e))throw new InvalidOperationError(ERR_INVALID_LAYER_TYPE);return super._applyLayerProperties(e,r)}async _applyPortalItemProperties(e){if("Feature Service"!==e.type)throw new Error(`Cannot create Feature Layer from Portal item that has type: ${e.type}`);const r={layerType:"ArcGISFeatureLayer"};let{url:t}=e;t.match(".*MapServer/\\d{1,}/?$")||t.match(".*FeatureServer/\\d{1,}/?$")||(t=`${t}/0`),r.url=t,await FeatureLayerJson.applyToEsriApiLayer(r,this.layer);const a=await e.fetchData();if(null==a?void 0:a.layers){const e=a.layers.find((e=>e.id===this.layer.layerId));e&&await PortalLayer.applyToEsriApiLayer(e,this.layer)}}_updateClientSideFields(){this.layer&&this._enableClientSideData&&addOutFields(this.layer,this.featureSettings.outFields)}async _applyEdits(e,r={}){const t=this.layer.applyEdits(e),a=await cancelify(t,r.cancelToken);if(!a)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");return a}get _layerUrl(){return isNumeric(this.layer.layerId)?`${this.layer.url}/${this.layer.layerId}`:this.layer.url}};FeatureLayerExtension=__decorate([serializable],FeatureLayerExtension);export{FeatureLayerExtension};let FeatureLayerReadOnlySchema=class extends FeatureLayerSchema{_setSetting(e,r){if(this._layerBindings.has(e))throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY);super._setSetting(e,r)}_createFieldCollection(){return new ReadOnlyCollection(super._createFieldCollection())}_createTypeCollection(){return new ReadOnlyCollection(super._createTypeCollection())}};FeatureLayerReadOnlySchema=__decorate([serializable],FeatureLayerReadOnlySchema);class RelationshipCollection extends ArcGISRelationshipCollection{get _sourceUrl(){if(this._source.layer&&this._source.layer.url)return isNumeric(this._source.layer.layerId)?`${this._source.layer.url}/${this._source.layer.layerId}`:this._source.layer.url}get _sourceLayerId(){return this._source.layer?this._source.layer.layerId:void 0}_findRelatedSource(e){if(!this._source.mapExtension||!this._source.layer||!this._source.layer.url)return;const r=this._source.mapExtension.layerExtensions.initializedItems.find((r=>isFeatureLayerExtension(r)&&r.layer.url===this._source.layer.url&&r.layer.layerId===e));return r||this._source.mapExtension.tableExtensions.initializedItems.find((r=>isFeatureLayer(r.table)&&r.table.url===this._source.layer.url&&r.table.layerId===e))}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{WebTileLayer as WebTileLayerJson}from"../portal/WebTileLayer.js";import{serializable}from"../support/Serializable.js";import{isWMTSLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{getLogger}from"../utilities/log.js";import{WMTSSublayerExtension}from"./WMTSSublayerExtension.js";import{LayerExtension}from"./_LayerExtension.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const log=getLogger("WMTSLayerExtension"),ERR_SUBLAYERX_COLLECTION_READONLY="SublayerExtension collection for WMTSLayerExtension is readonly";let WMTSLayerExtension=class extends LayerExtension{get supportsSublayers(){return!0}get layer(){return super.layer}get sublayerExtensions(){return super.sublayerExtensions}get _layerSupportsHideChildren(){return!1}_createSublayerExtension(e){return new WMTSSublayerExtension(e)}toJSON(e="all"){const r=super.toJSON(e);return r.layer.$ref&&(r.layer.wmtsInfo={}),r}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"WebTiledLayer",wmtsInfo:{}}},layerListSettings:{default:{childrenIncluded:!1}}}}async _onInitialize(){var e,r,t,i;try{await super._onInitialize()}catch(a){if("RESTful"!==this.layer.serviceMode)throw a;{log.warn(`WMTS Layer '${this.id}' failed to load with the 'RESTful' service mode. Now attempting to load the layer with the 'KVP' service mode...`);const{fromEsriApiLayer:a,toEsriApiLayer:o}=WebTileLayerJson,
|
|
1
|
+
import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{WebTileLayer as WebTileLayerJson}from"../portal/WebTileLayer.js";import{serializable}from"../support/Serializable.js";import{isWMTSLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{getLogger}from"../utilities/log.js";import{WMTSSublayerExtension}from"./WMTSSublayerExtension.js";import{LayerExtension}from"./_LayerExtension.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const log=getLogger("WMTSLayerExtension"),ERR_SUBLAYERX_COLLECTION_READONLY="SublayerExtension collection for WMTSLayerExtension is readonly";let WMTSLayerExtension=class extends LayerExtension{get supportsSublayers(){return!0}get layer(){return super.layer}get sublayerExtensions(){return super.sublayerExtensions}get _layerSupportsHideChildren(){return!1}_createSublayerExtension(e){return new WMTSSublayerExtension(e)}toJSON(e="all"){const r=super.toJSON(e);return r.layer.$ref&&(r.layer.wmtsInfo={}),r}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"WebTiledLayer",wmtsInfo:{}}},layerListSettings:{...this._toPropertyDef(e.layerListSettings),default:{childrenIncluded:!1}}}}async _onInitialize(){var e,r,t,i;try{await super._onInitialize()}catch(a){if("RESTful"!==this.layer.serviceMode)throw a;{log.warn(`WMTS Layer '${this.id}' failed to load with the 'RESTful' service mode. Now attempting to load the layer with the 'KVP' service mode...`);const{fromEsriApiLayer:a,toEsriApiLayer:o}=WebTileLayerJson,s=this.layer;await this._switchLayer(await o(a(s))),null===(r=null===(e=this.mapExtension)||void 0===e?void 0:e.map)||void 0===r||r.layers.remove(s),this.layer.serviceMode="KVP",null===(i=null===(t=this.mapExtension)||void 0===t?void 0:t.map)||void 0===i||i.layers.add(this.layer),await super._onInitialize()}}this.layer.watch("activeLayer",(e=>{this.layer.title=e.title,this.notifyChange("title")}),!0)}_isSupportedLayer(e){return isWMTSLayer(e)}_createSublayerExtensionCollection(){return new SublayerExtensionCollectionImpl(this)}async _applyPortalItemProperties(e){if("WMTS"!==e.type)throw new Error(`Cannot create WMTS layer from Portal item that has type: ${e.type}`);const r={layerType:"WebTiledLayer",...await e.fetchData()};return WebTileLayerJson.applyToEsriApiLayer(r,this.layer)}};WMTSLayerExtension=__decorate([serializable],WMTSLayerExtension);export{WMTSLayerExtension};class SublayerExtensionCollectionImpl extends SublayerExtensionCollectionBase{constructor(e){super(e,"layer.sublayers"),this._layerExtension=e}add(e,r){if(checkArg("sublayerX",e).isNotMissing(),e.sublayer&&this._parent.layer.sublayers&&!this._parent.layer.sublayers.includes(e.sublayer))throw new InvalidOperationError(ERR_SUBLAYERX_COLLECTION_READONLY);super.add(e,r)}removeAt(e){throw new InvalidOperationError(ERR_SUBLAYERX_COLLECTION_READONLY)}reorder(e,r){throw new InvalidOperationError(ERR_SUBLAYERX_COLLECTION_READONLY)}reverse(){throw new InvalidOperationError(ERR_SUBLAYERX_COLLECTION_READONLY)}sort(e){throw new InvalidOperationError(ERR_SUBLAYERX_COLLECTION_READONLY)}splice(e,r,...t){throw new InvalidOperationError(ERR_SUBLAYERX_COLLECTION_READONLY)}_createSublayerExtension(e){return this._parent._createSublayerExtension(e)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{ArgumentError}from"../ArgumentError.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{ItemType}from"../ItemType.js";import{FeatureSourceBase}from"../data/FeatureSourceBase.js";import{Schema}from"../data/Schema.js";import{LayerBase as PortalLayerBase}from"../portal/LayerBase.js";import{ERR_LAYER_TYPE_MISMATCH}from"../portal/_layerHelper.js";import{DefaultArcGISRequestHelper}from"../support/ArcGISRequestHelper.js";import{ReadOnlyInitializableCollection}from"../support/ReadOnlyInitializableCollection.js";import{serializable}from"../support/Serializable.js";import{CollectionProxy}from"../utilities/CollectionProxy.js";import{isLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{Collection,compare}from"../utilities/collection.js";import{load}from"../utilities/esri.js";import{hasMmapLayer}from"../utilities/layers.js";import{getLogger}from"../utilities/log.js";import{deepClone}from"../utilities/object.js";import{toPortalItem}from"../utilities/portal.js";import{onCollectionPropertyChange,watchEach}from"../utilities/watch.js";import{_assignSublayerExtensions}from"./_SublayerExtension.js";import{ExtensionBaseLayerListSettings,fromLayerListMode}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const ERR_INVALID_LAYER_TYPE="Invalid type of layer for this type of layer extension.",ERR_FEATURES_NOT_SUPPORTED="This type of layer does not have features.",ERR_ADD_SUBLAYERX_NOT_SUPPORTED="This type of layer cannot have sublayers.",ERR_SCHEMA_READ_ONLY="This schema property is read-only.",DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1});export class LayerExtension extends FeatureSourceBase{constructor(e){super(e),this._itemType=ItemType.LAYER_EXTENSION,this._watchHandles=[],this._dynamicallyAddedLayer=!1,this._visibilityMode="independent",this._onSublayerAddedPostInitialize=async e=>{var t,i;try{await e.initialize()}catch(r){getLayerXLogger().error(`Error occurred while initializing sublayer extension for sublayer '${null!==(i=null!==(t=e.title)&&void 0!==t?t:e.sublayer.id)&&void 0!==i?i:e.id}'. ${r}`)}};const t={...this.getDefaults(),...e};checkArg("properties.layer",t.layer).isNotMissing();const{layer:i}=t;let r;if((null==i?void 0:i.hasOwnProperty("listMode"))&&(r=fromLayerListMode(i.listMode)),this.layerListSettings=this._createLayerListSettings({...r,...t.layerListSettings}),isLayer(i))checkArg("properties.layer",i).satisfies((e=>this._isSupportedLayer(e)),ERR_INVALID_LAYER_TYPE),this._setLayer(i);else if(i){if(i.$portalItem){const e=i.$portalItem;this._portalItem=toPortalItem(e)}this._deferredLayerProperties=i}this._sublayerExtensions=this._createSublayerExtensionCollection(),this.allSublayerExtensions=new AllSublayerExtensionCollectionImpl(this),this.watch("parentLayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible"))),this.watch("layer.sublayers",(()=>this.notifyChange("_sublayers")))}get layer(){return this._layer}get mapExtension(){return this._mapExtension}get basemapExtension(){return this._basemapExtension}get groundExtension(){return this._groundExtension}get parentLayerExtension(){return this._parentLayerExtension}get hasFeatures(){return!1}get capabilities(){return this._capabilities()}get renderer(){}get visibilityMode(){return this._visibilityMode}set visibilityMode(e){this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get sublayerExtensions(){return this._sublayerExtensions}get requestHelper(){return this._requestHelper||(this._requestHelper=new DefaultArcGISRequestHelper),this._requestHelper}set requestHelper(e){this._requestHelper=e}get title(){return this.layer?this.layer.title:void 0}get supportsSublayers(){return!1}get effectiveMinScale(){return this.layer&&this.layer.minScale||0}get effectiveMaxScale(){return this.layer&&this.layer.maxScale||0}get isEffectivelyVisible(){const e=!!this.layer&&this.layer.visible;return this.parentLayerExtension?this.parentLayerExtension.isEffectivelyVisible&&e:e}get effectiveFullExtent(){return this.layer?this.layer.fullExtent:void 0}get _layerSupportsHideChildren(){return this.supportsSublayers}get _sublayers(){if(this.supportsSublayers)return this.layer?this.layer.sublayers:void 0}get dynamicallyAddedLayer(){return this._dynamicallyAddedLayer}set dynamicallyAddedLayer(e){this._dynamicallyAddedLayer=e}static create(e){if(!LayerExtension.factory)throw new InvalidOperationError("Cannot create layer extension: no layer extension factory has been registered.");return LayerExtension.factory.create(e)}static async fromPortalItem(e,t){var i;checkArg("portalItemLike",e).isNotMissing();const r=null!=t?t:{};checkArg("layerExtensionProperties.layer",r.layer).satisfies((e=>!isLayer(e)));const s={...r.layer};checkArg("layerExtensionProperties.layer.$ref",s.$ref).satisfies((e=>null==e));const a=new DefaultArcGISRequestHelper,n=toPortalItem(e);let o;await load(n);const l=null!==(i=n.typeKeywords)&&void 0!==i?i:"";if("Map Service"===n.type)o=l.includes("Tiled")||l.includes("Hosted Service")?"ArcGISTiledMapServiceLayer":"ArcGISMapServiceLayer";else if("Feature Service"===n.type)o="ArcGISFeatureLayer";else if("Image Service"===n.type){const e=await LayerExtension._getLayerData(n.url,a);e.cacheType?"Map"===e.cacheType?o="ArcGISTiledImageServiceLayer":("Elevation"===e.cacheType||l.includes("Elevation 3D Layer"))&&(o="ArcGISTiledElevationServiceLayer"):o=e.singleFusedMapCache||e.tileInfo||l.includes("Hosted Service")?"ArcGISTiledImageServiceLayer":"ArcGISImageServiceLayer"}else if("CSV"===n.type)o="CSV";else if("KML"===n.type)o="KML";else if("Scene Service"===n.type)l.includes("3DObject")||l.includes("Point")?o="ArcGISSceneServiceLayer":l.includes("IntegratedMesh")?o="IntegratedMeshLayer":l.includes("PointCloud")?o="PointCloudLayer":l.includes("Building")&&(o="BuildingSceneLayer");else if("Stream Service"===n.type)o="ArcGISStreamLayer";else if("Vector Tile Service"===n.type)o="VectorTileLayer";else if("Feature Collection"===n.type){o="ArcGISFeatureLayer";const e=await n.fetchData();s.featureCollection=e}else if("WMTS"===n.type){o="WebTiledLayer";const e=await n.fetchData();Object.assign(s,e)}else if("WMS"===n.type){o="WMS";const e=await n.fetchData();Object.assign(s,e)}if(!o)throw new ArgumentError("portalItem","Could not determine correct type of LayerExtension to create from portal item");if(s.layerType&&s.layerType!==o)throw new ArgumentError("layerExtensionProperties.layer.layerType","Layer type defined in layer properties does not match layer type from portal item");return s.layerType=o,s.$portalItem=n,r.layer=s,LayerExtension.create(r)}static _matchesRef(e,t){if(!e||!t)return!1;const i=t.$ref;return"string"==typeof i?e.id===i||e.title===i:!!i&&(e.id===i.id||e.title===i.title&&!i.path)}static async _getLayerData(e,t){const i=await t.request(e,{query:{f:"json"}});if(!i||!i.data)throw new Error(`Response to request for url ${e} was invalid.`);return i.data}getFeatures(e,t){if(!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);return super.getFeatures(e,t)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.addFeatures(e,t)}async updateFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.updateFeatures(e,t)}async deleteFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.deleteFeatures(e,t)}async _createBackingLayer(){this._portalItem||this.layer||this._deferredLayerProperties&&this._deferredLayerProperties.$ref?!this.layer&&this._portalItem&&this._setLayer(await this._createLayer(this.getDefaults().layer)):(this._setLayer(await this._createLayer(this._deferredLayerProperties)),checkArg("properties.layer",this._layer).satisfies((e=>this._isSupportedLayer(e)),ERR_INVALID_LAYER_TYPE),this._deferredLayerProperties=void 0)}_setMapExtension(e){const t=this.mapExtension;this._mapExtension=e,t&&this.featureSettings.formatSettings.parent===t.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.formatSettings)),this._resolveLayer(),this.notifyChange("mapExtension")}_setBasemapExtension(e){this._basemapExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("basemapExtension")}_setGroundExtension(e){this._groundExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("groundExtension")}_setParentLayerExtension(e){const t=this._parentLayerExtension;this._parentLayerExtension=e,t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.mapExtension?this.mapExtension.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&((!this.featureSettings.formatSettings.parent||this.mapExtension&&this.featureSettings.formatSettings.parent===this.mapExtension.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings)),this._resolveLayer(),this.notifyChange("parentLayerExtension")}_resolveLayer(e){var t,i,r;if(this.layer||!this._deferredLayerProperties)return;const s=e=>LayerExtension._matchesRef(e,this._deferredLayerProperties);let a;e?a=e.find(s):(null===(t=this.basemapExtension)||void 0===t?void 0:t.basemap)?(a=this.basemapExtension.basemap.baseLayers.find(s),a=a||this.basemapExtension.basemap.referenceLayers.find(s)):(null===(i=this.groundExtension)||void 0===i?void 0:i.ground)?a=this.groundExtension.ground.layers.find(s):(null===(r=this.parentLayerExtension)||void 0===r?void 0:r.layer)?a=this.parentLayerExtension.layer.layers.find(s):this.mapExtension&&(a=this.mapExtension.map.layers.find(s)),a&&this._isSupportedLayer(a)&&(this._setLayer(a),this._originalRef=this._deferredLayerProperties.$ref,this._deferredLayerProperties.$portalItem&&getLayerXLogger().warn("LayerExtension defined with both $ref and $portalItem. Ignoring $portalItem."))}async _switchLayer(e){if(e===this.layer)return;checkArg("newLayer",e).isNotMissing().satisfies((e=>this._isSupportedLayer(e)),ERR_INVALID_LAYER_TYPE),this.isInitialized&&await load(e);const t=new Map;if(this._sublayers)for(const e of this._sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));e.visible=this.layer.visible,e.opacity=this.layer.opacity,e.listMode=this.layer.listMode,this._setLayer(e);const i=[];if(this._sublayers){const e=this._sublayers.filter((e=>t.has(e.id))).toArray();i.push(...e.map((async e=>{const i=t.get(e.id);await i._switchSublayer(e),this._sublayerExtensions._register(i)})))}this.isInitialized&&i.push(this._initializeChildren()),await Promise.all(i)}_getProjectWebmapJSON(){if(!this.layer)return;let e=PortalLayerBase.fromEsriApiLayer(this.layer);if(!this.dynamicallyAddedLayer){const{id:t,title:i,layerType:r,visibility:s,opacity:a}=e;e={id:t,title:i,layerType:r,visibility:s,opacity:a}}return e}async _onDestroy(){this._watchHandles.forEach((e=>null==e?void 0:e.remove())),await Promise.all(this.sublayerExtensions.toArray().map((e=>e.destroy()))),await super._onDestroy()}_getSerializableProperties(){return{...super._getSerializableProperties(),iconUrl:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.iconUrl:this.getDefault("iconUrl")},visibilityMode:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.visibilityMode:this.getDefault("visibilityMode"),default:"independent"},tpkSource:{serializeModes:["initial"]},layerListSettings:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.layerListSettings:this.getDefault("layerListSettings")},sublayerExtensions:{serializeModes:["initial","project"],serialize:e=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{_assignSublayerExtensions(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},layer:{serializeModes:["initial","project"],serialize:e=>{if(this.layer){if((this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension)&&(this._layer.id||this._layer.title)){const e=PortalLayerBase.getLayerType(this._layer),t=this._getSerializableRefLayerProperties();return{$ref:this._originalRef||{id:this._layer.id,title:this._layer.title,subtype:this._getSerializableLayerType()},layerType:e,...t}}return PortalLayerBase.fromEsriApiLayer(this.layer)}return this._deferredLayerProperties?deepClone(this._deferredLayerProperties):void 0},isDefault:()=>{throw new Error("Missing implementation for _getSerializableProperties() > layer > default. Subclasses of LayerExtension must implement this.")},deserialize:e=>{if(isLayer(e)){if(e!==this.layer)throw new Error("Property 'layer' is read-only.")}else e&&(this._layer?this._applyLayerProperties(e,this.layer):this._deferredLayerProperties&&(this._deferredLayerProperties={...this._deferredLayerProperties,...e}))}},dynamicallyAddedLayer:{serializeModes:["project"],default:!1},requestHelper:{serialize:!1}}}_getSerializableLayerType(){}_getSerializableRefLayerProperties(){return{}}_createSublayerExtension(e){if(!this.supportsSublayers)throw new InvalidOperationError(ERR_ADD_SUBLAYERX_NOT_SUPPORTED);throw new Error("Missing implementation for _createSublayerExtension(). Subclasses of LayerExtension that support sublayers must implement this.")}async _onInitialize(){if(await super._onInitialize(),await this._createBackingLayer(),this._portalItem&&(await load(this._portalItem),await this._applyPortalItemProperties(this._portalItem),this.layer.title=this._portalItem.title,this.layer.portalItem=this._portalItem,this.iconUrl||(this.iconUrl=this._portalItem.thumbnailUrl),await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),this._resolveLayer(),!this.layer){const e=this._deferredLayerProperties.$ref;throw this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension?new InvalidOperationError(`No layer found matching reference "${e}".`):new InvalidOperationError("Cannot resolve layer reference: missing parent.")}this._deferredLayerProperties&&(await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),await this._initializeLayer(),await load(this.layer),this.supportsSublayers&&!this.layer.sublayers&&this.layer._set("sublayers",new Collection),this._sublayerExtensions.onParentInitialized()}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized(),this._watchHandles.push(onCollectionPropertyChange(this,"layer.sublayers",(async e=>{var t;const i=(null!==(t=e.added)&&void 0!==t?t:[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(i.map(this._onSublayerAddedPostInitialize))})))}_applyPortalItemProperties(e){throw new InvalidOperationError("Cannot use this type of layer extension with a PortalItem.")}async _initializeLayer(){}_createLayerListSettings(e){return new LayerExtensionLayerListSettings(e,this)}_createSublayerExtensionCollection(){return new SublayerExtensionCollectionImpl(this)}_capabilities(){return DEFAULT_CAPABILITIES}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}async _createLayer(e){return PortalLayerBase.toEsriApiLayer(e)}_applyLayerProperties(e,t){checkArg("layerJson",e).isNotMissing();const i=e.layerType||e.type;return checkArg("layerJson.layerType",i).satisfies((e=>{var t;return!e||e===(null===(t=this.getDefault("layer"))||void 0===t?void 0:t.layerType)}),ERR_LAYER_TYPE_MISMATCH),checkArg("layer",t).isNotMissing().satisfies((e=>this._isSupportedLayer(e)),ERR_LAYER_TYPE_MISMATCH),PortalLayerBase.applyToEsriApiLayer(e,t)}_setLayer(e){if(this._layer=e,e.watch("visible",this._onVisibleChanged.bind(this)),this.layer.watch("minScale",(()=>this.notifyChange("effectiveMinScale"))),this.layer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layer.watch("title",(()=>this.notifyChange("title"))),this.supportsSublayers)if(this._sublayers)this._setupSublayersHandles();else{const t=e.watch("sublayers",(()=>{this._setupSublayersHandles(),t.remove()}),!0)}this.notifyChange("layer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_setupSublayersHandles(){this._sublayers.on("change",this._onSublayersChange.bind(this)),watchEach(this._sublayers,"visible",this._onSublayersSublayerVisibleChanged.bind(this))}_onVisibleChanged(e){if("inherited"===this.visibilityMode&&this.supportsSublayers&&this._sublayers)for(const t of this._sublayers.toArray())t.visible=e;this.notifyChange("isEffectivelyVisible")}_onSublayersSublayerVisibleChanged(e,t,i,r){e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(r)}_onSublayersChange(e){var t;(null===(t=e.added)||void 0===t?void 0:t.length)&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])}_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.layer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}class SublayerExtensionCollectionImpl extends SublayerExtensionCollectionBase{constructor(e){super(e,"_sublayers"),this._layerExtension=e}add(e,t){if(checkArg("sublayerX",e).isNotMissing(),!this._layerExtension.supportsSublayers)throw new InvalidOperationError(ERR_ADD_SUBLAYERX_NOT_SUPPORTED);const i=e.sublayer?e.sublayer.layer:void 0;i&&i!==this._layerExtension.layer&&i.sublayers.remove(e.sublayer),super.add(e,t)}}class AllSublayerExtensionCollectionImpl extends ReadOnlyInitializableCollection{constructor(e){super(),this._layerExtension=e}get _collection(){return this._layerExtension.sublayerExtensions.flatten((e=>e.sublayerExtensions))}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findBySublayerId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.sublayer.id===e))}forSublayer(e){return checkArg("sublayer",e).isNotMissing(),this.findBySublayerId(e.id)}emit(e,t){if("change"===e){const i=new Collection;i.addMany(t.added);const r=i.flatten((e=>e.sublayerExtensions)).toArray(),s=new Collection;s.addMany(t.removed);const a=s.flatten((e=>e.sublayerExtensions)).toArray(),n=new Collection;n.addMany(t.moved);const o=n.flatten((e=>e.sublayerExtensions)).toArray();return super.emit(e,{added:r,removed:a,moved:o,target:this})}return super.emit(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.sublayer}}let LayerExtensionLayerListSettings=class extends ExtensionBaseLayerListSettings{get _esriLayer(){return this._extension.layer}get _listModePath(){return"layer.listMode"}get _supportsChildren(){return this._extension.supportsSublayers}};LayerExtensionLayerListSettings=__decorate([serializable],LayerExtensionLayerListSettings);let LayerExtensionSchema=class extends Schema{constructor(e){if(super(),this._layerBindings=new Map,this._layerExtension=e,this._bindSettingsToLayerProperties(),e.layer)this._onLayerResolved(e.layer);else{const t=e.watch("layer",(()=>{this._onLayerResolved(e.layer),t.remove()}),!0)}}_getPropertyBindings(){return{}}_getSetting(e,t){if(this._layerBindings.has(e)){let t=this._layerBindings.get(e);if("string"==typeof t&&(t={property:t}),t.hasOwnProperty("value"))return t.value;if(this._layerExtension.layer)return this._layerExtension.layer[t.property]}return super._getSetting(e,t)}_setSetting(e,t){if(this._layerBindings.has(e)){let i=this._layerBindings.get(e);if("string"==typeof i&&(i={property:i}),i.readonly||i.hasOwnProperty("value"))throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY);if(this._layerExtension.layer)return void(this._layerExtension.layer[i.property]=t)}super._setSetting(e,t)}_bindSettingsToLayerProperties(){const e=this._getPropertyBindings();for(const t of Object.keys(e)){let i=e[t];"string"==typeof i&&(i={property:i}),this._layerBindings.set(t,i),i.hasOwnProperty("value")||this._layerExtension.watch(`layer.${i.property}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}_onLayerResolved(e){for(const t of this._layerBindings.keys())this.isModified(t)&&(e[t]=this[t],this.reset(t))}};LayerExtensionSchema=__decorate([serializable],LayerExtensionSchema);export{LayerExtensionSchema};export class ArrayWrappedCollection extends CollectionProxy{constructor(e,t){if(super(),this._layerExtension=e,this._property=t,this._layerProperty=e instanceof LayerExtension?"layer":"sublayer",e[this._layerProperty])this._onLayerResolved(e[this._layerProperty]);else{this._collection=new Collection;const t=e.watch(this._layerProperty,(()=>{const i=e[this._layerProperty];this.length&&(i[this._property]=this.toArray()),this._onLayerResolved(i),t.remove()}),!0)}}add(e,t){const i=this._layerExtension[this._layerProperty];i&&!i[this._property]&&(i[this._property]=[],this._collection=wrapArrayWithCollection(i[this._property])),super.add(e,t)}_onLayerResolved(e){this._collection=wrapArrayWithCollection(e[this._property]||[]),e.watch(this._property,(()=>{this._collection=wrapArrayWithCollection(e[this._property]||[])}),!0)}}export function _assignLayerExtensions(e,t){return compare(e,t,{onNew:(t,i)=>{e.add(t instanceof LayerExtension?t:LayerExtension.create(t),isLayerRef(t)?void 0:i)},onMatch:(t,i,r,s)=>{i instanceof LayerExtension||t.assignProperties(i),r===s||isLayerRef(i)||e.reorder(t,s)},onMissing:t=>{hasMmapLayer([t])&&e.remove(t)},equals:(e,t)=>t instanceof LayerExtension?t===e:!!LayerExtension._matchesRef(e.layer,t.layer)||e.id===t.id})}function wrapArrayWithCollection(e){const t=new Collection;return Object.defineProperty(t,"_items",{get:()=>e}),Object.defineProperty(t,"length",{get:()=>e.length,set:t=>e.length=t}),t}function getLayerXLogger(){return getLogger("geocortex.api.mapping.LayerExtension")}function isLayerRef(e){var t,i;return e instanceof LayerExtension?!!(null===(t=e._deferredLayerProperties)||void 0===t?void 0:t.$ref):!isLayer(e.layer)&&!!(null===(i=e.layer)||void 0===i?void 0:i.$ref)}
|
|
1
|
+
import{__decorate}from"tslib";import{ArgumentError}from"../ArgumentError.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{ItemType}from"../ItemType.js";import{FeatureSourceBase}from"../data/FeatureSourceBase.js";import{Schema}from"../data/Schema.js";import{LayerBase as PortalLayerBase}from"../portal/LayerBase.js";import{ERR_LAYER_TYPE_MISMATCH}from"../portal/_layerHelper.js";import{DefaultArcGISRequestHelper}from"../support/ArcGISRequestHelper.js";import{ReadOnlyInitializableCollection}from"../support/ReadOnlyInitializableCollection.js";import{serializable}from"../support/Serializable.js";import{CollectionProxy}from"../utilities/CollectionProxy.js";import{isLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{Collection,compare}from"../utilities/collection.js";import{load}from"../utilities/esri.js";import{isGroupLayerExtension}from"../utilities/extensions.js";import{hasMmapLayer}from"../utilities/layers.js";import{getLogger}from"../utilities/log.js";import{deepClone}from"../utilities/object.js";import{toPortalItem}from"../utilities/portal.js";import{onCollectionPropertyChange,watchEach}from"../utilities/watch.js";import{_assignSublayerExtensions}from"./_SublayerExtension.js";import{ExtensionBaseLayerListSettings,fromLayerListMode}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const ERR_INVALID_LAYER_TYPE="Invalid type of layer for this type of layer extension.",ERR_FEATURES_NOT_SUPPORTED="This type of layer does not have features.",ERR_ADD_SUBLAYERX_NOT_SUPPORTED="This type of layer cannot have sublayers.",ERR_SCHEMA_READ_ONLY="This schema property is read-only.",DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1});export class LayerExtension extends FeatureSourceBase{constructor(e){super(e),this._itemType=ItemType.LAYER_EXTENSION,this._watchHandles=[],this._dynamicallyAddedLayer=!1,this._visibilityMode="independent",this._onSublayerAddedPostInitialize=async e=>{var t,i;try{await e.initialize()}catch(r){getLayerXLogger().error(`Error occurred while initializing sublayer extension for sublayer '${null!==(i=null!==(t=e.title)&&void 0!==t?t:e.sublayer.id)&&void 0!==i?i:e.id}'. ${r}`)}};const t={...this.getDefaults(),...e};checkArg("properties.layer",t.layer).isNotMissing();const{layer:i}=t;let r;if((null==i?void 0:i.hasOwnProperty("listMode"))&&(r=fromLayerListMode(i.listMode)),this.layerListSettings=this._createLayerListSettings({...r,...t.layerListSettings}),isLayer(i))checkArg("properties.layer",i).satisfies((e=>this._isSupportedLayer(e)),ERR_INVALID_LAYER_TYPE),this._setLayer(i);else if(i){if(i.$portalItem){const e=i.$portalItem;this._portalItem=toPortalItem(e)}this._deferredLayerProperties=i}this._sublayerExtensions=this._createSublayerExtensionCollection(),this.allSublayerExtensions=new AllSublayerExtensionCollectionImpl(this),this.watch("parentLayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible"))),this.watch("layer.sublayers",(()=>this.notifyChange("_sublayers")))}get layer(){return this._layer}get mapExtension(){return this._mapExtension}get basemapExtension(){return this._basemapExtension}get groundExtension(){return this._groundExtension}get parentLayerExtension(){return this._parentLayerExtension}get hasFeatures(){return!1}get capabilities(){return this._capabilities()}get renderer(){}get visibilityMode(){return this._visibilityMode}set visibilityMode(e){this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get sublayerExtensions(){return this._sublayerExtensions}get requestHelper(){return this._requestHelper||(this._requestHelper=new DefaultArcGISRequestHelper),this._requestHelper}set requestHelper(e){this._requestHelper=e}get title(){return this.layer?this.layer.title:void 0}get supportsSublayers(){return!1}get effectiveMinScale(){return this.layer&&this.layer.minScale||0}get effectiveMaxScale(){return this.layer&&this.layer.maxScale||0}get isEffectivelyVisible(){const e=!!this.layer&&this.layer.visible;return this.parentLayerExtension?this.parentLayerExtension.isEffectivelyVisible&&e:e}get effectiveFullExtent(){return this.layer?this.layer.fullExtent:void 0}get _layerSupportsHideChildren(){return this.supportsSublayers}get _sublayers(){if(this.supportsSublayers)return this.layer?this.layer.sublayers:void 0}get dynamicallyAddedLayer(){return this._dynamicallyAddedLayer}set dynamicallyAddedLayer(e){this._dynamicallyAddedLayer=e}static create(e){if(!LayerExtension.factory)throw new InvalidOperationError("Cannot create layer extension: no layer extension factory has been registered.");return LayerExtension.factory.create(e)}static async fromPortalItem(e,t){var i;checkArg("portalItemLike",e).isNotMissing();const r=null!=t?t:{};checkArg("layerExtensionProperties.layer",r.layer).satisfies((e=>!isLayer(e)));const s={...r.layer};checkArg("layerExtensionProperties.layer.$ref",s.$ref).satisfies((e=>null==e));const a=new DefaultArcGISRequestHelper,n=toPortalItem(e);let o;await load(n);const l=null!==(i=n.typeKeywords)&&void 0!==i?i:"";if("Map Service"===n.type)o=l.includes("Tiled")||l.includes("Hosted Service")?"ArcGISTiledMapServiceLayer":"ArcGISMapServiceLayer";else if("Feature Service"===n.type)o="ArcGISFeatureLayer";else if("Image Service"===n.type){const e=await LayerExtension._getLayerData(n.url,a);e.cacheType?"Map"===e.cacheType?o="ArcGISTiledImageServiceLayer":("Elevation"===e.cacheType||l.includes("Elevation 3D Layer"))&&(o="ArcGISTiledElevationServiceLayer"):o=e.singleFusedMapCache||e.tileInfo||l.includes("Hosted Service")?"ArcGISTiledImageServiceLayer":"ArcGISImageServiceLayer"}else if("CSV"===n.type)o="CSV";else if("KML"===n.type)o="KML";else if("Scene Service"===n.type)l.includes("3DObject")||l.includes("Point")?o="ArcGISSceneServiceLayer":l.includes("IntegratedMesh")?o="IntegratedMeshLayer":l.includes("PointCloud")?o="PointCloudLayer":l.includes("Building")&&(o="BuildingSceneLayer");else if("Stream Service"===n.type)o="ArcGISStreamLayer";else if("Vector Tile Service"===n.type)o="VectorTileLayer";else if("Feature Collection"===n.type){o="ArcGISFeatureLayer";const e=await n.fetchData();s.featureCollection=e}else if("WMTS"===n.type){o="WebTiledLayer";const e=await n.fetchData();Object.assign(s,e)}else if("WMS"===n.type){o="WMS";const e=await n.fetchData();Object.assign(s,e)}if(!o)throw new ArgumentError("portalItem","Could not determine correct type of LayerExtension to create from portal item");if(s.layerType&&s.layerType!==o)throw new ArgumentError("layerExtensionProperties.layer.layerType","Layer type defined in layer properties does not match layer type from portal item");return s.layerType=o,s.$portalItem=n,r.layer=s,LayerExtension.create(r)}static _matchesRef(e,t){if(!e||!t)return!1;const i=t.$ref;return"string"==typeof i?e.id===i||e.title===i:!!i&&(e.id===i.id||e.title===i.title&&!i.path)}static async _getLayerData(e,t){const i=await t.request(e,{query:{f:"json"}});if(!i||!i.data)throw new Error(`Response to request for url ${e} was invalid.`);return i.data}getFeatures(e,t){if(!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);return super.getFeatures(e,t)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.addFeatures(e,t)}async updateFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.updateFeatures(e,t)}async deleteFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.deleteFeatures(e,t)}async _createBackingLayer(){this._portalItem||this.layer||this._deferredLayerProperties&&this._deferredLayerProperties.$ref?!this.layer&&this._portalItem&&this._setLayer(await this._createLayer(this.getDefaults().layer)):(this._setLayer(await this._createLayer(this._deferredLayerProperties)),checkArg("properties.layer",this._layer).satisfies((e=>this._isSupportedLayer(e)),ERR_INVALID_LAYER_TYPE),this._deferredLayerProperties=void 0)}_setMapExtension(e){const t=this.mapExtension;this._mapExtension=e,t&&this.featureSettings.formatSettings.parent===t.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.formatSettings)),this._resolveLayer(),this.notifyChange("mapExtension")}_setBasemapExtension(e){this._basemapExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("basemapExtension")}_setGroundExtension(e){this._groundExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("groundExtension")}_setParentLayerExtension(e){const t=this._parentLayerExtension;this._parentLayerExtension=e,t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.mapExtension?this.mapExtension.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&((!this.featureSettings.formatSettings.parent||this.mapExtension&&this.featureSettings.formatSettings.parent===this.mapExtension.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings)),this._resolveLayer(),this.notifyChange("parentLayerExtension")}_resolveLayer(e){var t,i,r;if(this.layer||!this._deferredLayerProperties)return;const s=e=>LayerExtension._matchesRef(e,this._deferredLayerProperties);let a;e?a=e.find(s):(null===(t=this.basemapExtension)||void 0===t?void 0:t.basemap)?(a=this.basemapExtension.basemap.baseLayers.find(s),a=a||this.basemapExtension.basemap.referenceLayers.find(s)):(null===(i=this.groundExtension)||void 0===i?void 0:i.ground)?a=this.groundExtension.ground.layers.find(s):(null===(r=this.parentLayerExtension)||void 0===r?void 0:r.layer)?a=this.parentLayerExtension.layer.layers.find(s):this.mapExtension&&(a=this.mapExtension.map.layers.find(s)),a&&this._isSupportedLayer(a)&&(this._setLayer(a),this._originalRef=this._deferredLayerProperties.$ref,this._deferredLayerProperties.$portalItem&&getLayerXLogger().warn("LayerExtension defined with both $ref and $portalItem. Ignoring $portalItem."))}async _switchLayer(e){if(e===this.layer)return;checkArg("newLayer",e).isNotMissing().satisfies((e=>this._isSupportedLayer(e)),ERR_INVALID_LAYER_TYPE),this.isInitialized&&await load(e);const t=new Map;if(this._sublayers)for(const e of this._sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));e.visible=this.layer.visible,e.opacity=this.layer.opacity,e.listMode=this.layer.listMode,this._setLayer(e);const i=[];if(this._sublayers){const e=this._sublayers.filter((e=>t.has(e.id))).toArray();i.push(...e.map((async e=>{const i=t.get(e.id);await i._switchSublayer(e),this._sublayerExtensions._register(i)})))}this.isInitialized&&i.push(this._initializeChildren()),await Promise.all(i)}_getProjectWebmapJSON(){if(!this.layer)return;let e=PortalLayerBase.fromEsriApiLayer(this.layer);if(!this.dynamicallyAddedLayer){const{id:t,title:i,layerType:r,visibility:s,opacity:a}=e;e={id:t,title:i,layerType:r,visibility:s,opacity:a}}return e}async _onDestroy(){this._watchHandles.forEach((e=>null==e?void 0:e.remove())),await Promise.all(this.sublayerExtensions.toArray().map((e=>e.destroy()))),await super._onDestroy()}_getSerializableProperties(){return{...super._getSerializableProperties(),iconUrl:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.iconUrl:this.getDefault("iconUrl")},visibilityMode:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.visibilityMode:this.getDefault("visibilityMode"),default:"independent"},tpkSource:{serializeModes:["initial"]},layerListSettings:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.layerListSettings:this.getDefault("layerListSettings")},sublayerExtensions:{serializeModes:["initial","project"],serialize:e=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{_assignSublayerExtensions(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},layer:{serializeModes:["initial","project"],serialize:e=>{if(this.layer){if((this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension)&&(this._layer.id||this._layer.title)){const e=PortalLayerBase.getLayerType(this._layer),t=this._getSerializableRefLayerProperties();return{$ref:this._originalRef||{id:this._layer.id,title:this._layer.title,subtype:this._getSerializableLayerType()},layerType:e,...t}}return PortalLayerBase.fromEsriApiLayer(this.layer)}return this._deferredLayerProperties?deepClone(this._deferredLayerProperties):void 0},isDefault:()=>{throw new Error("Missing implementation for _getSerializableProperties() > layer > default. Subclasses of LayerExtension must implement this.")},deserialize:e=>{if(isLayer(e)){if(e!==this.layer)throw new Error("Property 'layer' is read-only.")}else e&&(this._layer?this._applyLayerProperties(e,this.layer):this._deferredLayerProperties&&(this._deferredLayerProperties={...this._deferredLayerProperties,...e}))}},dynamicallyAddedLayer:{serializeModes:["project"],default:!1},requestHelper:{serialize:!1}}}_getSerializableLayerType(){}_getSerializableRefLayerProperties(){return{}}_createSublayerExtension(e){if(!this.supportsSublayers)throw new InvalidOperationError(ERR_ADD_SUBLAYERX_NOT_SUPPORTED);throw new Error("Missing implementation for _createSublayerExtension(). Subclasses of LayerExtension that support sublayers must implement this.")}async _onInitialize(){if(await super._onInitialize(),await this._createBackingLayer(),this._portalItem&&(await load(this._portalItem),await this._applyPortalItemProperties(this._portalItem),this.layer.title=this._portalItem.title,this.layer.portalItem=this._portalItem,this.iconUrl||(this.iconUrl=this._portalItem.thumbnailUrl),await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),this._resolveLayer(),!this.layer){const e=this._deferredLayerProperties.$ref;throw this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension?new InvalidOperationError(`No layer found matching reference "${e}".`):new InvalidOperationError("Cannot resolve layer reference: missing parent.")}this._deferredLayerProperties&&(await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),await this._initializeLayer(),await load(this.layer),this.supportsSublayers&&!this.layer.sublayers&&this.layer._set("sublayers",new Collection),this._sublayerExtensions.onParentInitialized()}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized(),this._watchHandles.push(onCollectionPropertyChange(this,"layer.sublayers",(async e=>{var t;const i=(null!==(t=e.added)&&void 0!==t?t:[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(i.map(this._onSublayerAddedPostInitialize))})))}_applyPortalItemProperties(e){throw new InvalidOperationError("Cannot use this type of layer extension with a PortalItem.")}async _initializeLayer(){}_createLayerListSettings(e){return new LayerExtensionLayerListSettings(e,this)}_createSublayerExtensionCollection(){return new SublayerExtensionCollectionImpl(this)}_capabilities(){return DEFAULT_CAPABILITIES}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}async _createLayer(e){return PortalLayerBase.toEsriApiLayer(e)}_applyLayerProperties(e,t){checkArg("layerJson",e).isNotMissing();const i=e.layerType||e.type;return checkArg("layerJson.layerType",i).satisfies((e=>{var t;return!e||e===(null===(t=this.getDefault("layer"))||void 0===t?void 0:t.layerType)}),ERR_LAYER_TYPE_MISMATCH),checkArg("layer",t).isNotMissing().satisfies((e=>this._isSupportedLayer(e)),ERR_LAYER_TYPE_MISMATCH),PortalLayerBase.applyToEsriApiLayer(e,t)}_setLayer(e){if(this._layer=e,e.watch("visible",this._onVisibleChanged.bind(this)),this.layer.watch("minScale",(()=>this.notifyChange("effectiveMinScale"))),this.layer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layer.watch("title",(()=>this.notifyChange("title"))),this.supportsSublayers)if(this._sublayers)this._setupSublayersHandles();else{const t=e.watch("sublayers",(()=>{this._setupSublayersHandles(),t.remove()}),!0)}this.notifyChange("layer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_setupSublayersHandles(){this._sublayers.on("change",this._onSublayersChange.bind(this)),watchEach(this._sublayers,"visible",this._onSublayersSublayerVisibleChanged.bind(this))}_onVisibleChanged(e){if("inherited"===this.visibilityMode&&this.supportsSublayers&&this._sublayers)for(const t of this._sublayers.toArray())t.visible=e;this.notifyChange("isEffectivelyVisible")}_onSublayersSublayerVisibleChanged(e,t,i,r){e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(r)}_onSublayersChange(e){var t;(null===(t=e.added)||void 0===t?void 0:t.length)&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])}_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.layer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}class SublayerExtensionCollectionImpl extends SublayerExtensionCollectionBase{constructor(e){super(e,"_sublayers"),this._layerExtension=e}add(e,t){if(checkArg("sublayerX",e).isNotMissing(),!this._layerExtension.supportsSublayers)throw new InvalidOperationError(ERR_ADD_SUBLAYERX_NOT_SUPPORTED);const i=e.sublayer?e.sublayer.layer:void 0;i&&i!==this._layerExtension.layer&&i.sublayers.remove(e.sublayer),super.add(e,t)}}class AllSublayerExtensionCollectionImpl extends ReadOnlyInitializableCollection{constructor(e){super(),this._layerExtension=e}get _collection(){return this._layerExtension.sublayerExtensions.flatten((e=>e.sublayerExtensions))}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findBySublayerId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.sublayer.id===e))}forSublayer(e){return checkArg("sublayer",e).isNotMissing(),this.findBySublayerId(e.id)}emit(e,t){if("change"===e){const i=new Collection;i.addMany(t.added);const r=i.flatten((e=>e.sublayerExtensions)).toArray(),s=new Collection;s.addMany(t.removed);const a=s.flatten((e=>e.sublayerExtensions)).toArray(),n=new Collection;n.addMany(t.moved);const o=n.flatten((e=>e.sublayerExtensions)).toArray();return super.emit(e,{added:r,removed:a,moved:o,target:this})}return super.emit(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.sublayer}}let LayerExtensionLayerListSettings=class extends ExtensionBaseLayerListSettings{get _esriLayer(){return this._extension.layer}get _listModePath(){return"layer.listMode"}get _supportsChildren(){return this._extension.supportsSublayers}};LayerExtensionLayerListSettings=__decorate([serializable],LayerExtensionLayerListSettings);let LayerExtensionSchema=class extends Schema{constructor(e){if(super(),this._layerBindings=new Map,this._layerExtension=e,this._bindSettingsToLayerProperties(),e.layer)this._onLayerResolved(e.layer);else{const t=e.watch("layer",(()=>{this._onLayerResolved(e.layer),t.remove()}),!0)}}_getPropertyBindings(){return{}}_getSetting(e,t){if(this._layerBindings.has(e)){let t=this._layerBindings.get(e);if("string"==typeof t&&(t={property:t}),t.hasOwnProperty("value"))return t.value;if(this._layerExtension.layer)return this._layerExtension.layer[t.property]}return super._getSetting(e,t)}_setSetting(e,t){if(this._layerBindings.has(e)){let i=this._layerBindings.get(e);if("string"==typeof i&&(i={property:i}),i.readonly||i.hasOwnProperty("value"))throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY);if(this._layerExtension.layer)return void(this._layerExtension.layer[i.property]=t)}super._setSetting(e,t)}_bindSettingsToLayerProperties(){const e=this._getPropertyBindings();for(const t of Object.keys(e)){let i=e[t];"string"==typeof i&&(i={property:i}),this._layerBindings.set(t,i),i.hasOwnProperty("value")||this._layerExtension.watch(`layer.${i.property}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}_onLayerResolved(e){for(const t of this._layerBindings.keys())this.isModified(t)&&(e[t]=this[t],this.reset(t))}};LayerExtensionSchema=__decorate([serializable],LayerExtensionSchema);export{LayerExtensionSchema};export class ArrayWrappedCollection extends CollectionProxy{constructor(e,t){if(super(),this._layerExtension=e,this._property=t,this._layerProperty=e instanceof LayerExtension?"layer":"sublayer",e[this._layerProperty])this._onLayerResolved(e[this._layerProperty]);else{this._collection=new Collection;const t=e.watch(this._layerProperty,(()=>{const i=e[this._layerProperty];this.length&&(i[this._property]=this.toArray()),this._onLayerResolved(i),t.remove()}),!0)}}add(e,t){const i=this._layerExtension[this._layerProperty];i&&!i[this._property]&&(i[this._property]=[],this._collection=wrapArrayWithCollection(i[this._property])),super.add(e,t)}_onLayerResolved(e){this._collection=wrapArrayWithCollection(e[this._property]||[]),e.watch(this._property,(()=>{this._collection=wrapArrayWithCollection(e[this._property]||[])}),!0)}}export function _assignLayerExtensions(e,t){return compare(e,t,{onNew:(t,i)=>{e.add(t instanceof LayerExtension?t:LayerExtension.create(t),isLayerRef(t)?void 0:i)},onMatch:(t,i,r,s)=>{i instanceof LayerExtension||t.assignProperties(i),r===s||isLayerRef(i)||e.reorder(t,s)},onMissing:t=>{(hasMmapLayer([t])||isGroupLayerExtension(t)&&0===t.layerExtensions.toArray().length)&&e.remove(t)},equals:(e,t)=>t instanceof LayerExtension?t===e:!!LayerExtension._matchesRef(e.layer,t.layer)||e.id===t.id})}function wrapArrayWithCollection(e){const t=new Collection;return Object.defineProperty(t,"_items",{get:()=>e}),Object.defineProperty(t,"length",{get:()=>e.length,set:t=>e.length=t}),t}function getLayerXLogger(){return getLogger("geocortex.api.mapping.LayerExtension")}function isLayerRef(e){var t,i;return e instanceof LayerExtension?!!(null===(t=e._deferredLayerProperties)||void 0===t?void 0:t.$ref):!isLayer(e.layer)&&!!(null===(i=e.layer)||void 0===i?void 0:i.$ref)}
|
package/menus/MenuItem.d.ts
CHANGED
|
@@ -49,6 +49,26 @@ export interface MenuItemProperties extends EntityBaseProperties {
|
|
|
49
49
|
* An item within a {@link Menu}.
|
|
50
50
|
*/
|
|
51
51
|
export declare class MenuItem<TMenuItemProps extends MenuItemProperties = MenuItemProperties, TMenuProps extends MenuProperties = MenuProperties> extends EntityBase<TMenuItemProps> implements MenuItemState {
|
|
52
|
+
/**
|
|
53
|
+
* The factory that will be used whenever a new menu item needs to be
|
|
54
|
+
* created. Applications can supply their own factory to customize menu item
|
|
55
|
+
* creation.
|
|
56
|
+
*/
|
|
57
|
+
static factory: MenuItemFactory;
|
|
58
|
+
/**
|
|
59
|
+
* @inheritdoc
|
|
60
|
+
*/
|
|
61
|
+
protected readonly _itemType: string;
|
|
62
|
+
private _isToggled;
|
|
63
|
+
private _submenu;
|
|
64
|
+
private _iconId;
|
|
65
|
+
private _isEnabled;
|
|
66
|
+
private _description;
|
|
67
|
+
private _title;
|
|
68
|
+
private _hideOnDisable;
|
|
69
|
+
private _action;
|
|
70
|
+
private _alternate;
|
|
71
|
+
constructor(props?: TMenuItemProps);
|
|
52
72
|
/**
|
|
53
73
|
* Determines whether this item supports toggling.
|
|
54
74
|
*/
|
|
@@ -74,12 +94,6 @@ export declare class MenuItem<TMenuItemProps extends MenuItemProperties = MenuIt
|
|
|
74
94
|
* The root menu in the menu hierarchy.
|
|
75
95
|
*/
|
|
76
96
|
get root(): Menu<TMenuItemProps, TMenuProps, this>;
|
|
77
|
-
/**
|
|
78
|
-
* The factory that will be used whenever a new menu item needs to be
|
|
79
|
-
* created. Applications can supply their own factory to customize menu item
|
|
80
|
-
* creation.
|
|
81
|
-
*/
|
|
82
|
-
static factory: MenuItemFactory;
|
|
83
97
|
/**
|
|
84
98
|
* The ID of the icon to show for this item, e.g. "gcx-icon-zoom-in".
|
|
85
99
|
*/
|
|
@@ -117,19 +131,6 @@ export declare class MenuItem<TMenuItemProps extends MenuItemProperties = MenuIt
|
|
|
117
131
|
*/
|
|
118
132
|
get alternate(): MenuItemState | undefined;
|
|
119
133
|
set alternate(value: MenuItemState | undefined);
|
|
120
|
-
/**
|
|
121
|
-
* @inheritdoc
|
|
122
|
-
*/
|
|
123
|
-
protected readonly _itemType: string;
|
|
124
|
-
private _isToggled;
|
|
125
|
-
private _submenu;
|
|
126
|
-
private _iconId;
|
|
127
|
-
private _isEnabled;
|
|
128
|
-
private _description;
|
|
129
|
-
private _title;
|
|
130
|
-
private _hideOnDisable;
|
|
131
|
-
private _action;
|
|
132
|
-
private _alternate;
|
|
133
134
|
/**
|
|
134
135
|
* Creates the appropriate subclass of {@link MenuItem} based on the
|
|
135
136
|
* supplied properties. Applications can customize the default creation
|
package/menus/MenuItem.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var MenuItem_1;import{__decorate}from"tslib";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isMenu,ItemType}from"../ItemType.js";import{serializable}from"../support/Serializable.js";import{Collection}from"../utilities/collection.js";import{Menu}from"./Menu.js";let MenuItem=MenuItem_1=class extends EntityBase{constructor(){super(
|
|
1
|
+
var MenuItem_1;import{__decorate}from"tslib";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isMenu,ItemType}from"../ItemType.js";import{serializable}from"../support/Serializable.js";import{Collection}from"../utilities/collection.js";import{Menu}from"./Menu.js";let MenuItem=MenuItem_1=class extends EntityBase{constructor(e){var t;super(e),this._itemType=ItemType.MENU_ITEM,this._isToggled=!1,this._isEnabled=!0,this._hideOnDisable=!1,this._isToggled=null!==(t=null==e?void 0:e.isToggled)&&void 0!==t&&t}get canBeToggled(){return!!this.alternate}get isToggled(){return this._isToggled}get submenu(){return this._submenu}set submenu(e){if(e&&this._createsCircularReference(this._allSubmenus(e)))throw new InvalidOperationError("Menu is already part of the menu hierarchy.");this._submenu&&delete this._submenu._parentItem,this._submenu=e,this._submenu&&(this._submenu._parentItem=this)}get menu(){return this._menu}get root(){var e,t;return(null===(t=null===(e=this.menu)||void 0===e?void 0:e.parentItem)||void 0===t?void 0:t.root)?this.menu.parentItem.root:this.menu}get iconId(){return this._iconId}set iconId(e){this._iconId=e}get title(){return this._title}set title(e){this._title=e}get description(){return this._description}set description(e){this._description=e}get isEnabled(){return this._isEnabled}set isEnabled(e){this._isEnabled=e}get hideOnDisable(){return this._hideOnDisable}set hideOnDisable(e){this._hideOnDisable=e}get action(){return this._action}set action(e){this._action=e}get alternate(){return this._alternate}set alternate(e){this._alternate=e}static create(e){if(!MenuItem_1.factory)throw new InvalidOperationError("Cannot create menu item: no menu item factory has been registered.");return MenuItem_1.factory.create(e)}toggle(){if(!this.canBeToggled)throw new InvalidOperationError("This menu item cannot be toggled. Set `alternate` to enable toggling.");this._isToggled=!this._isToggled;for(const e of Object.keys(this.alternate)){const t=this.alternate[e];this.alternate[e]=this[e],this[e]=t}}async _onInitialize(){await super._onInitialize(),this.submenu&&await this.submenu.initialize()}_getSerializableProperties(){return{...super._getSerializableProperties(),iconId:"initial",title:"initial",description:"initial",isEnabled:{serializeModes:["initial"],default:!0},hideOnDisable:{serializeModes:["initial"],default:!1},isToggled:{serializeModes:["initial"],deserialize:!1,default:!1},action:"initial",alternate:{serializeModes:["initial"],deserialize:e=>{this.alternate=e?{...e}:void 0}},submenu:{serializeModes:["initial"],deserialize:e=>{e?isMenu(e)?this.submenu=e:this.submenu?this.submenu.assignProperties(e):this.submenu=Menu.create(e):this.submenu=void 0}}}}_createsCircularReference(e,t,i){if(!t&&!this.menu)return!1;const n=null!=t?t:this.menu,s=null!=i?i:this.menu.parentItem&&this.menu.parentItem.root?this.menu.parentItem.root:this.menu;if(e.includes(n))return!0;if(n===s)return!1;const r=n.parentItem.menu;return this._createsCircularReference(e,r,s)}_allSubmenus(e){const t=new Collection;t.add(e);for(const i of e.items.toArray())i.submenu&&t.addMany(this._allSubmenus(i.submenu));return t}};MenuItem.factory={create:e=>new MenuItem_1(e)},MenuItem=MenuItem_1=__decorate([serializable],MenuItem);export{MenuItem};
|
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type EsriTileLayer from "@arcgis/core/layers/TileLayer";
|
|
2
|
+
import Portal from "@arcgis/core/portal/Portal";
|
|
2
3
|
import type { BaseMapLayerBase } from "./BaseMapLayer.js";
|
|
3
4
|
import type { Extent } from "./Extent.js";
|
|
4
5
|
import { Layer } from "./Layer.js";
|
|
@@ -27,8 +28,9 @@ export declare namespace TiledMapServiceLayer {
|
|
|
27
28
|
*
|
|
28
29
|
* @param layerJson The layer JSON to apply.
|
|
29
30
|
* @param layer The layer object to apply it to.
|
|
31
|
+
* @param portal The Portal to use for resolving portal item IDs.
|
|
30
32
|
*/
|
|
31
|
-
function applyToEsriApiLayer(layerJson: TiledMapServiceLayer, layer: EsriTileLayer): Promise<void>;
|
|
33
|
+
function applyToEsriApiLayer(layerJson: TiledMapServiceLayer, layer: EsriTileLayer, portal?: Portal): Promise<void>;
|
|
32
34
|
/**
|
|
33
35
|
* Converts an Esri JavaScript API TileLayer object to its ArcGIS Portal
|
|
34
36
|
* JSON representation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isTileLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{Layer}from"./Layer.js";import{ERR_LAYER_TYPE_MISMATCH,applyLayerBaseToEsriApiLayer,applyBasemapLayerToEsriApiLayer,applyOperationalLayerToEsriApiLayer,fromEsriApiLayerToLayerBase,fromEsriApiLayerToOperationalLayer}from"./_layerHelper.js";export var TiledMapServiceLayer;async function applySublayerPropertiesToEsriApiLayer(e
|
|
1
|
+
import Portal from"@arcgis/core/portal/Portal";import PortalItem from"@arcgis/core/portal/PortalItem";import{isTileLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{Layer}from"./Layer.js";import{ERR_LAYER_TYPE_MISMATCH,applyLayerBaseToEsriApiLayer,applyBasemapLayerToEsriApiLayer,applyOperationalLayerToEsriApiLayer,fromEsriApiLayerToLayerBase,fromEsriApiLayerToOperationalLayer}from"./_layerHelper.js";export var TiledMapServiceLayer;async function applySublayerPropertiesToEsriApiLayer(r,e){if(r.layers&&e.sublayers)for(const a of r.layers){if(void 0===a.id||null===a.id)continue;const r=e.allSublayers.find((r=>r.id===a.id));r&&await Layer.applyToEsriApiSublayer(a,r)}}!function(r){async function e(r,e,a){if(checkArg("layerJson",r).isNotMissing(),checkArg("layerJson.layerType",r.layerType).satisfies((r=>!r||"ArcGISTiledMapServiceLayer"===r),ERR_LAYER_TYPE_MISMATCH),checkArg("layer",e).isNotMissing().satisfies(isTileLayer,ERR_LAYER_TYPE_MISMATCH),applyLayerBaseToEsriApiLayer(r,e),applyBasemapLayerToEsriApiLayer(r,e),applyOperationalLayerToEsriApiLayer(r,e),r.hasOwnProperty("customParameters")&&(e.customParameters=r.customParameters),r.hasOwnProperty("url")&&(e.url=r.url),r.hasOwnProperty("itemId")&&(e.portalItem?e.portalItem.id=r.itemId:e.portalItem=new PortalItem({id:r.itemId,portal:a||Portal.getDefault()})),e.loaded)await applySublayerPropertiesToEsriApiLayer(r,e);else{const a=e.load;let i=!1;e.load=async()=>{await a(),i||(i=!0,await applySublayerPropertiesToEsriApiLayer(r,e))}}}r.esriTileLayerDefaults={legendEnabled:!0,visible:!0,opacity:1,minScale:0,maxScale:0},r.toEsriApiLayer=async function(r){checkArg("layerJson",r).isNotMissing(),checkArg("layerJson.layerType",r.layerType).satisfies((r=>!r||"ArcGISTiledMapServiceLayer"===r),ERR_LAYER_TYPE_MISMATCH);const a={};(null==r?void 0:r.url)&&(a.url=r.url);const i=new((await import("@arcgis/core/layers/TileLayer")).default)(a);return await e(r,i),i},r.applyToEsriApiLayer=e,r.fromEsriApiTileLayer=function(e){checkArg("layer",e).isNotMissing();const a={...fromEsriApiLayerToLayerBase(e,r.esriTileLayerDefaults),...fromEsriApiLayerToOperationalLayer(e),customParameters:e.customParameters,layerType:"ArcGISTiledMapServiceLayer",url:e.url};return e.portalItem&&(a.itemId=e.portalItem.id),a}}(TiledMapServiceLayer||(TiledMapServiceLayer={}));
|