@vertigis/arcgis-extensions 37.2.0 → 37.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/AppConfig.schema.json +0 -16
  2. package/data/Feature.js +1 -1
  3. package/data/FeatureSet.js +1 -1
  4. package/data/FieldExtension.js +1 -1
  5. package/data/PopupContentExtension.d.ts +0 -1
  6. package/data/PopupContentExtension.js +1 -1
  7. package/declarations/arcgis-js-api-extensions/index.d.ts +19 -1
  8. package/docs/html/assets/search.js +1 -1
  9. package/docs/html/classes/Entity.EntityBase.html +9 -5
  10. package/docs/html/classes/Hyperlink.Hyperlink.html +9 -5
  11. package/docs/html/classes/LanguageResources.LanguageResources.html +9 -5
  12. package/docs/html/classes/data_ArcGISServiceTableExtension.ArcGISServiceTableExtension.html +9 -5
  13. package/docs/html/classes/data_Attachment.Attachment.html +9 -5
  14. package/docs/html/classes/data_Feature.Feature.html +9 -5
  15. package/docs/html/classes/data_FeatureList.FeatureList.html +7 -3
  16. package/docs/html/classes/data_FeatureSet.FeatureSet.html +9 -5
  17. package/docs/html/classes/data_FeatureSettings.FeatureSettings.html +9 -5
  18. package/docs/html/classes/data_FeatureSourceBase.FeatureSourceBase.html +9 -5
  19. package/docs/html/classes/data_FeatureSourceBase.RelationshipCollection.html +7 -3
  20. package/docs/html/classes/data_FeatureStream.FeatureStream.html +10 -6
  21. package/docs/html/classes/data_FieldExtension.FieldExtension.html +9 -5
  22. package/docs/html/classes/data_PopupContentExtension.PopupContentExtension.html +15 -6
  23. package/docs/html/classes/data_RelationshipBase.RelationshipBase.html +9 -5
  24. package/docs/html/classes/data_Schema.Schema.html +9 -5
  25. package/docs/html/classes/data_TaskSettings.TaskSettings.html +9 -5
  26. package/docs/html/classes/data__TableExtension.TableExtension.html +9 -5
  27. package/docs/html/classes/data__TableExtension.TableFeatureSettings.html +9 -5
  28. package/docs/html/classes/data__TableExtension.TableSchema.html +9 -5
  29. package/docs/html/classes/layer_preset_LayerPreset.LayerPreset.html +9 -5
  30. package/docs/html/classes/layer_preset_LayerPresetSettings.LayerPresetSetting.html +9 -5
  31. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerExtension.html +9 -5
  32. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerRelationshipCollection.html +7 -3
  33. package/docs/html/classes/mapping_BasemapExtension.BasemapExtension.html +9 -5
  34. package/docs/html/classes/mapping_Bookmark.Bookmark.html +9 -5
  35. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtension.html +9 -5
  36. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +9 -5
  37. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtension.html +9 -5
  38. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +9 -5
  39. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtension.html +9 -5
  40. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerReadOnlySchema.html +9 -5
  41. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerExtension.html +9 -5
  42. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerFeatureSettings.html +9 -5
  43. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +9 -5
  44. package/docs/html/classes/mapping_CSVLayerExtension.CSVLayerExtension.html +9 -5
  45. package/docs/html/classes/mapping_ElevationLayerExtension.ElevationLayerExtension.html +9 -5
  46. package/docs/html/classes/mapping_FeatureCollectionLayerExtension.FeatureCollectionLayerExtension.html +9 -5
  47. package/docs/html/classes/mapping_FeatureLayerExtension.FeatureLayerExtension.html +9 -5
  48. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBase.html +9 -5
  49. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerReadOnlySchema.html +9 -5
  50. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerSchema.html +9 -5
  51. package/docs/html/classes/mapping_GeoRSSLayerExtension.GeoRSSLayerExtension.html +9 -5
  52. package/docs/html/classes/mapping_GraphicsLayerExtension.GraphicsLayerExtension.html +9 -5
  53. package/docs/html/classes/mapping_GroundExtension.GroundExtension.html +9 -5
  54. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtension.html +9 -5
  55. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtensionCollection.html +7 -3
  56. package/docs/html/classes/mapping_ImageryLayerExtension.ImageryLayerExtension.html +9 -5
  57. package/docs/html/classes/mapping_ImageryTileLayerExtension.ImageryTileLayerExtension.html +9 -5
  58. package/docs/html/classes/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtension.html +9 -5
  59. package/docs/html/classes/mapping_KMLLayerExtension.KMLLayerExtension.html +9 -5
  60. package/docs/html/classes/mapping_KMLSublayerExtension.KMLSublayerExtension.html +9 -5
  61. package/docs/html/classes/mapping_MapConstraints.MapConstraints.html +9 -5
  62. package/docs/html/classes/mapping_MapExtension.MapExtension.html +9 -5
  63. package/docs/html/classes/mapping_MapImageLayerExtension.MapImageLayerExtension.html +9 -5
  64. package/docs/html/classes/mapping_MapImageSublayerExtension.MapImageSublayerExtension.html +9 -5
  65. package/docs/html/classes/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtension.html +9 -5
  66. package/docs/html/classes/mapping_PointCloudLayerExtension.PointCloudLayerExtension.html +9 -5
  67. package/docs/html/classes/mapping_SceneLayerExtension.SceneLayerExtension.html +9 -5
  68. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerExtension.html +9 -5
  69. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerSchema.html +9 -5
  70. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtension.html +9 -5
  71. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerRelationshipCollection.html +7 -3
  72. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerExtension.html +9 -5
  73. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerRelationshipCollection.html +7 -3
  74. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerSchema.html +9 -5
  75. package/docs/html/classes/mapping_TileLayerExtension.TileLayerExtension.html +9 -5
  76. package/docs/html/classes/mapping_TileSublayerExtension.TileSublayerExtension.html +9 -5
  77. package/docs/html/classes/mapping_UnsupportedLayerExtension.UnsupportedLayerExtension.html +9 -5
  78. package/docs/html/classes/mapping_VectorTileLayerExtension.VectorTileLayerExtension.html +9 -5
  79. package/docs/html/classes/mapping_WMSLayerExtension.WMSLayerExtension.html +9 -5
  80. package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +9 -5
  81. package/docs/html/classes/mapping_WMTSLayerExtension.WMTSLayerExtension.html +9 -5
  82. package/docs/html/classes/mapping_WMTSSublayerExtension.WMTSSublayerExtension.html +9 -5
  83. package/docs/html/classes/mapping_WebTileLayerExtension.WebTileLayerExtension.html +9 -5
  84. package/docs/html/classes/mapping__LayerExtension.LayerExtension.html +9 -5
  85. package/docs/html/classes/mapping__LayerExtension.LayerExtensionSchema.html +9 -5
  86. package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +7 -3
  87. package/docs/html/classes/mapping__SublayerExtension.SublayerExtension.html +9 -5
  88. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +9 -5
  89. package/docs/html/classes/mapping_support_ArrayWrappedCollection.ArrayWrappedCollection.html +7 -3
  90. package/docs/html/classes/mapping_support_LayerListSettings.ExtensionBaseLayerListSettings.html +9 -5
  91. package/docs/html/classes/mapping_support_LayerListSettings.LayerListSettings.html +9 -5
  92. package/docs/html/classes/mapping_support__LayerExtensionCollection.LayerExtensionCollectionBase.html +7 -3
  93. package/docs/html/classes/mapping_support__SublayerExtensionCollection.SublayerExtensionCollectionBase.html +7 -3
  94. package/docs/html/classes/menus_Menu.Menu.html +9 -5
  95. package/docs/html/classes/menus_MenuItem.MenuItem.html +9 -5
  96. package/docs/html/classes/support_FormatSettings.FormatSettings.html +9 -5
  97. package/docs/html/classes/support_InitializableBase.InitializableBase.html +9 -5
  98. package/docs/html/classes/support_InitializableCollectionProxy.InitializableCollectionProxy.html +7 -3
  99. package/docs/html/classes/support_Observable.Observable.html +14 -10
  100. package/docs/html/classes/support_ReadOnlyInitializableCollection.ReadOnlyInitializableCollection.html +7 -3
  101. package/docs/html/classes/support_Serializable.SerializableBase.html +9 -5
  102. package/docs/html/classes/support_Settings.Settings.html +9 -5
  103. package/docs/html/classes/support__ArcGISRelationshipCollection.ArcGISRelationshipCollection.html +7 -3
  104. package/docs/html/classes/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoder.html +9 -5
  105. package/docs/html/classes/tasks_geocoding_Geocoder.Geocoder.html +9 -5
  106. package/docs/html/classes/tasks_query_ArcGISRelationship.ArcGISRelationship.html +9 -5
  107. package/docs/html/classes/tasks_query_QueryBasedRelationship.QueryBasedRelationship.html +9 -5
  108. package/docs/html/classes/utilities_CollectionProxy.CollectionProxy.html +7 -3
  109. package/docs/html/classes/utilities_CopyOnWriteCollection.CopyOnWriteCollection.html +7 -3
  110. package/docs/html/classes/utilities_MapTransformCollection.MapTransformCollection.html +7 -3
  111. package/docs/html/classes/utilities_ObservableMap.ObservableMap.html +9 -5
  112. package/docs/html/classes/utilities_ObservableSet.ObservableSet.html +9 -5
  113. package/docs/html/classes/utilities_ObservableWeakSet.ObservableWeakSet.html +9 -5
  114. package/docs/html/classes/utilities_ReadOnlyCollection.ReadOnlyCollection.html +7 -3
  115. package/docs/html/classes/utilities_ReadOnlyMap.ReadOnlyMap.html +9 -5
  116. package/docs/html/classes/utilities_asyncIterable.AsyncQueue.html +1 -1
  117. package/docs/html/classes/utilities_date.DateFormatter.html +9 -5
  118. package/docs/html/classes/utilities_number.NumberFormatter.html +9 -5
  119. package/docs/html/functions/utilities_watch.watchEach.html +66 -4
  120. package/docs/html/interfaces/data_Feature.PresentableAttributes.html +5 -1
  121. package/docs/html/interfaces/data__Relationship.Relationship-1.html +9 -5
  122. package/docs/html/variables/version.version.html +1 -1
  123. package/layer-preset/LayerPreset.js +1 -1
  124. package/mapping/BuildingComponentSublayerExtension.js +1 -1
  125. package/mapping/MapExtension.js +1 -1
  126. package/mapping/SubtypeSublayerExtension.js +1 -1
  127. package/mapping/_SublayerExtension.js +1 -1
  128. package/mapping/support/LayerListSettings.js +1 -1
  129. package/package.json +1 -1
  130. package/portal/SubtypeGroupLayer.js +1 -1
  131. package/portal/WMSLayer.js +1 -1
  132. package/support/Observable.d.ts +9 -25
  133. package/support/Observable.js +1 -1
  134. package/support/Settings.js +1 -1
  135. package/utilities/watch.d.ts +13 -1
  136. package/utilities/watch.js +1 -1
  137. package/version.d.ts +1 -1
  138. package/version.js +1 -1
@@ -18,7 +18,7 @@
18
18
  <h1>Function watchEach</h1></div>
19
19
  <section class="tsd-panel">
20
20
  <ul class="tsd-signatures tsd-kind-function tsd-parent-kind-module">
21
- <li class="tsd-signature tsd-anchor-link" id="watchEach">watch<wbr/>Each<span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span>collection<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Collection</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span>, path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span>, callback<span class="tsd-signature-symbol">: </span><a href="../types/support_esri.WatchCallback.html" class="tsd-signature-type" data-tsd-kind="Type alias">WatchCallback</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span>, sync<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IHandle</span><a href="#watchEach" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none" id="icon-anchor-a"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5" id="icon-anchor-b"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5" id="icon-anchor-c"></path></svg></a></li>
21
+ <li class="tsd-signature tsd-anchor-link" id="watchEach">watch<wbr/>Each<span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span>collection<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Collection</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span>, path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span>, callback<span class="tsd-signature-symbol">: </span><a href="../types/support_esri.WatchCallback.html" class="tsd-signature-type" data-tsd-kind="Type alias">WatchCallback</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span>, sync<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IHandle</span><a href="#watchEach" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none" id="icon-anchor-a"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5" id="icon-anchor-b"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5" id="icon-anchor-c"></path></svg></a></li>
22
22
  <li class="tsd-description">
23
23
  <div class="tsd-comment tsd-typography"><p>Watches a property on each item in a collection.</p>
24
24
  </div>
@@ -26,7 +26,9 @@
26
26
  <h4>Type Parameters</h4>
27
27
  <ul class="tsd-type-parameters">
28
28
  <li>
29
- <h4>T<span class="tsd-signature-symbol"> extends </span><a href="../interfaces/support_esri.AccessorLike.html" class="tsd-signature-type" data-tsd-kind="Interface">AccessorLike</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></section>
29
+ <h4>T<span class="tsd-signature-symbol"> extends </span><a href="../interfaces/support_esri.AccessorLike.html" class="tsd-signature-type" data-tsd-kind="Interface">AccessorLike</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span></h4></li>
30
+ <li>
31
+ <h4>U = <span class="tsd-signature-type">unknown</span></h4></li></ul></section>
30
32
  <div class="tsd-parameters">
31
33
  <h4 class="tsd-parameters-title">Parameters</h4>
32
34
  <ul class="tsd-parameter-list">
@@ -39,12 +41,72 @@
39
41
  <div class="tsd-comment tsd-typography"><p>The property path to watch on each item.</p>
40
42
  </div></li>
41
43
  <li>
42
- <h5>callback: <a href="../types/support_esri.WatchCallback.html" class="tsd-signature-type" data-tsd-kind="Type alias">WatchCallback</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></h5>
44
+ <h5>callback: <a href="../types/support_esri.WatchCallback.html" class="tsd-signature-type" data-tsd-kind="Type alias">WatchCallback</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span></h5>
43
45
  <div class="tsd-comment tsd-typography"><p>The callback to invoke. Note that the item that changed is
44
46
  passed as the last parameter of the callback (target).</p>
45
47
  </div></li>
46
48
  <li>
47
- <h5>sync: <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = false</span></h5>
49
+ <h5><code class="tsd-tag ts-flagOptional">Optional</code> sync: <span class="tsd-signature-type">boolean</span></h5>
50
+ <div class="tsd-comment tsd-typography"><p>Whether to invoke the callback synchronously. The default is
51
+ <code>false</code>.</p>
52
+ </div></li></ul></div>
53
+ <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IHandle</span></h4></li>
54
+ <li class="tsd-signature tsd-anchor-link" id="watchEach-1">watch<wbr/>Each<span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span>collection<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Collection</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span>, getValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span>item<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span><span class="tsd-signature-symbol">)</span>, callback<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span>newValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span>, oldValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span>, item<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span>, sync<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IHandle</span><a href="#watchEach-1" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></li>
55
+ <li class="tsd-description">
56
+ <div class="tsd-comment tsd-typography"><p>Watches a property on each item in a collection.</p>
57
+ </div>
58
+ <section class="tsd-panel tsd-type-parameters">
59
+ <h4>Type Parameters</h4>
60
+ <ul class="tsd-type-parameters">
61
+ <li>
62
+ <h4>T<span class="tsd-signature-symbol"> extends </span><a href="../interfaces/support_esri.AccessorLike.html" class="tsd-signature-type" data-tsd-kind="Interface">AccessorLike</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span></h4></li>
63
+ <li>
64
+ <h4>U = <span class="tsd-signature-type">unknown</span></h4></li></ul></section>
65
+ <div class="tsd-parameters">
66
+ <h4 class="tsd-parameters-title">Parameters</h4>
67
+ <ul class="tsd-parameter-list">
68
+ <li>
69
+ <h5>collection: <span class="tsd-signature-type">Collection</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">&gt;</span></h5>
70
+ <div class="tsd-comment tsd-typography"><p>The collection of items to watch.</p>
71
+ </div></li>
72
+ <li>
73
+ <h5>getValue: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span>item<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span><span class="tsd-signature-symbol">)</span></h5>
74
+ <div class="tsd-comment tsd-typography"><p>Function used to get the current value from each item. All
75
+ accessed properties will be tracked.</p>
76
+ </div>
77
+ <ul class="tsd-parameters">
78
+ <li class="tsd-parameter-signature">
79
+ <ul class="tsd-signatures tsd-kind-type-literal">
80
+ <li class="tsd-signature"><span class="tsd-signature-symbol">(</span>item<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span></li>
81
+ <li class="tsd-description">
82
+ <div class="tsd-parameters">
83
+ <h4 class="tsd-parameters-title">Parameters</h4>
84
+ <ul class="tsd-parameter-list">
85
+ <li>
86
+ <h5>item: <span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span></h5></li></ul></div>
87
+ <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span></h4></li></ul></li></ul></li>
88
+ <li>
89
+ <h5>callback: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span>newValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span>, oldValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span>, item<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span></h5>
90
+ <div class="tsd-comment tsd-typography"><p>The callback to invoke. Note that the item that changed is
91
+ passed as the last parameter of the callback.</p>
92
+ </div>
93
+ <ul class="tsd-parameters">
94
+ <li class="tsd-parameter-signature">
95
+ <ul class="tsd-signatures tsd-kind-type-literal">
96
+ <li class="tsd-signature"><span class="tsd-signature-symbol">(</span>newValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span>, oldValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span>, item<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
97
+ <li class="tsd-description">
98
+ <div class="tsd-parameters">
99
+ <h4 class="tsd-parameters-title">Parameters</h4>
100
+ <ul class="tsd-parameter-list">
101
+ <li>
102
+ <h5>newValue: <span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span></h5></li>
103
+ <li>
104
+ <h5>oldValue: <span class="tsd-signature-type" data-tsd-kind="Type parameter">U</span></h5></li>
105
+ <li>
106
+ <h5>item: <span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span></h5></li></ul></div>
107
+ <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></li></ul></li>
108
+ <li>
109
+ <h5><code class="tsd-tag ts-flagOptional">Optional</code> sync: <span class="tsd-signature-type">boolean</span></h5>
48
110
  <div class="tsd-comment tsd-typography"><p>Whether to invoke the callback synchronously. The default is
49
111
  <code>false</code>.</p>
50
112
  </div></li></ul></div>
@@ -102,6 +102,9 @@ order.</p>
102
102
  <li class="tsd-description">
103
103
  <div class="tsd-comment tsd-typography"><p>Indicates that the given property has changed, causing observers to be
104
104
  notified.</p>
105
+
106
+ <h3>Deprecated</h3><p>This function is no longer supported. Use <code>notifyChange()</code>
107
+ instead. The <code>force=true</code> behavior is no longer possible.</p>
105
108
  </div>
106
109
  <div class="tsd-parameters">
107
110
  <h4 class="tsd-parameters-title">Parameters</h4>
@@ -113,7 +116,8 @@ notified.</p>
113
116
  <li>
114
117
  <h5>force: <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = false</span></h5>
115
118
  <div class="tsd-comment tsd-typography"><p>Whether to always invoke the callback, even if the value
116
- hasn&#39;t changed.</p>
119
+ hasn&#39;t changed. NO LONGER SUPPORTED. This will always effectively be
120
+ <code>false</code>.</p>
117
121
  </div></li></ul></div>
118
122
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
119
123
  <p>Inherited from <a href="../classes/utilities_ReadOnlyMap.ReadOnlyMap.html">ReadOnlyMap</a>.<a href="../classes/utilities_ReadOnlyMap.ReadOnlyMap.html#_notifyChange">_notifyChange</a></p></aside></li></ul></section>
@@ -112,6 +112,9 @@ and another source.</p>
112
112
  <li class="tsd-description">
113
113
  <div class="tsd-comment tsd-typography"><p>Indicates that the given property has changed, causing observers to be
114
114
  notified.</p>
115
+
116
+ <h3>Deprecated</h3><p>This function is no longer supported. Use <code>notifyChange()</code>
117
+ instead. The <code>force=true</code> behavior is no longer possible.</p>
115
118
  </div>
116
119
  <div class="tsd-parameters">
117
120
  <h4 class="tsd-parameters-title">Parameters</h4>
@@ -123,7 +126,8 @@ notified.</p>
123
126
  <li>
124
127
  <h5>force: <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = false</span></h5>
125
128
  <div class="tsd-comment tsd-typography"><p>Whether to always invoke the callback, even if the value
126
- hasn&#39;t changed.</p>
129
+ hasn&#39;t changed. NO LONGER SUPPORTED. This will always effectively be
130
+ <code>false</code>.</p>
127
131
  </div></li></ul></div>
128
132
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
129
133
  <p>Inherited from <a href="../classes/support_Observable.Observable.html">Observable</a>.<a href="../classes/support_Observable.Observable.html#_notifyChange">_notifyChange</a></p></aside></li></ul></section>
@@ -286,16 +290,16 @@ multiple properties and nesting.</p>
286
290
  <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface tsd-is-inherited"><a id="notifyChange" class="tsd-anchor"></a>
287
291
  <h3 class="tsd-anchor-link"><span>notify<wbr/>Change</span><a href="#notifyChange" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
288
292
  <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface tsd-is-inherited">
289
- <li class="tsd-signature tsd-anchor-link" id="notifyChange.notifyChange-1">notify<wbr/>Change<span class="tsd-signature-symbol">(</span>property<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#notifyChange.notifyChange-1" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></li>
293
+ <li class="tsd-signature tsd-anchor-link" id="notifyChange.notifyChange-1">notify<wbr/>Change<span class="tsd-signature-symbol">(</span>propertyName<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#notifyChange.notifyChange-1" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></li>
290
294
  <li class="tsd-description">
291
- <div class="tsd-comment tsd-typography"><p>Indicates that the given property has changed, causing observers to be
292
- notified.</p>
295
+ <div class="tsd-comment tsd-typography"><p>Indicates that the given property might have changed, causing observers
296
+ to be notified if it did.</p>
293
297
  </div>
294
298
  <div class="tsd-parameters">
295
299
  <h4 class="tsd-parameters-title">Parameters</h4>
296
300
  <ul class="tsd-parameter-list">
297
301
  <li>
298
- <h5>property: <span class="tsd-signature-type">string</span></h5>
302
+ <h5>propertyName: <span class="tsd-signature-type">string</span></h5>
299
303
  <div class="tsd-comment tsd-typography"><p>The property that changed (or might have changed).</p>
300
304
  </div></li></ul></div>
301
305
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
@@ -16,7 +16,7 @@
16
16
  <li><a href="../modules/version.html">version</a></li>
17
17
  <li><a href="version.version.html">version</a></li></ul>
18
18
  <h1>Variable version<code class="tsd-tag ts-flagConst">Const</code> </h1></div>
19
- <div class="tsd-signature">version<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;37.2.0&quot;</span><span class="tsd-signature-symbol"> = &quot;37.2.0&quot;</span></div>
19
+ <div class="tsd-signature">version<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;37.3.0&quot;</span><span class="tsd-signature-symbol"> = &quot;37.3.0&quot;</span></div>
20
20
  <div class="tsd-comment tsd-typography"><p>The current version of the Geocortex ArcGIS Extensions API.</p>
21
21
  </div></div>
22
22
  <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
@@ -1 +1 @@
1
- var LayerPreset_1;import{__decorate}from"tslib";import{whenOnce}from"@arcgis/core/core/watchUtils";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isLayerExtension,isMapExtension,ItemType}from"../ItemType.js";import{MapExtension}from"../mapping/MapExtension.js";import{BaseMap as PortalBasemap}from"../portal/BaseMap.js";import{serializable}from"../support/Serializable.js";import{Collection}from"../support/esri.js";import{ObservableMap}from"../utilities/ObservableMap.js";import{basemapsAreEquivalent,createStandardBasemap}from"../utilities/basemaps.js";import{isGroupLayerExtension}from"../utilities/extensions.js";import{map}from"../utilities/iterable.js";import{getLogger}from"../utilities/log.js";import{isMap,isWebMap,isWebScene}from"../utilities/mapping.js";import{LayerPresetSetting}from"./LayerPresetSettings.js";const ERR_LAYER_UNDEFINED="Cannot define a LayerPresetSetting that does not have layer reference.",log=getLogger("layer-preset");let LayerPreset=LayerPreset_1=class extends EntityBase{constructor(){super(...arguments),this._itemType=ItemType.LAYER_PRESET}static createFrom(e){const t=new LayerPreset_1,a=toMapExtension(e);a.basemapExtension?.basemap&&(t.basemap=PortalBasemap.fromEsriApiBasemap(a.basemapExtension.basemap));for(const e of a.basemapOptions.toArray())e.included&&e.basemap&&(t.basemapOptions=t.basemapOptions||[],t.basemapOptions.push(PortalBasemap.fromEsriApiBasemap(e.basemap)));const i=_createFlattenedLayerXList(a);for(const e of i.toArray()){const a=_createLayerPresetSetting(e);if(a){const i=e.allSublayerExtensions;if(i.length>0){a.sublayers=new ObservableMap;for(const e of i.toArray().filter((e=>!!e.sublayer))){const t=_createLayerPresetSetting(e);t&&a.sublayers.set(_createRef(e.sublayer),t)}}t.layers=t.layers??new Map,t.layers.set(_createRef(e.layer),a)}}return t}async applyTo(e){if(isIterable(e)){for(const t of e)await this.applyTo(t);return}const t=toMapExtension(e);if(this.basemap){const e="string"==typeof this.basemap?await createStandardBasemap(this.basemap):this.basemap,a=t.basemapOptions.find((t=>basemapsAreEquivalent(t.basemap,e)));a&&(t.basemapExtension=a,a.included=!0)}if(this.basemapOptions){const e=new Collection;for(const a of await Promise.all(this.basemapOptions.map((async e=>"string"==typeof e?createStandardBasemap(e):e)))){const i=t.basemapOptions.find((e=>basemapsAreEquivalent(e.basemap,a)));i&&(i.included=!0,e.add(i))}for(const a of t.basemapOptions.toArray())e.includes(a)||t.basemapExtension===a||(a.included=!1)}if(this.layers){const e=_createFlattenedLayerXList(t);e.forEach((e=>e._resolveLayer()));for(const t of this.layers.keys()){const a=_createRef(t);let i=e.find((e=>e.layer.id===a.id));if(i||(i=e.find((e=>e.layer.title===a.title))),i){const a=this.layers.get(t);_applyLayerPresetSetting(a,i),e.remove(i);const r=()=>{const e=new Collection;e.addMany(i.allSublayerExtensions.toArray());for(const t of a.sublayers.keys()){const i=_createRef(t);let r=e.find((e=>e.sublayer?.id===i.id&&e.sublayer?.title===i.title));r||(r=e.find((e=>e.sublayer?.title===i.title))),r||(r=e.find((e=>e.sublayer?.id===i.id))),r&&(_applyLayerPresetSetting(a.sublayers.get(t),r),e.remove(r))}_handleNotFound(e)};i.layer.loaded?r():whenOnce(i.layer,"loaded",(()=>{try{r()}catch(e){log.error({message:`Error applying LayerPreset to sublayers of LayerExtension with ID '${i.id}' and title '${i.title}'.`,error:e})}}))}}_handleNotFound(e)}}_getSerializableProperties(){return{...super._getSerializableProperties(),title:"initial",iconUrl:"initial",description:"initial",layers:{serializeModes:["initial"],serialize:e=>{if(this.layers)return Array.from(map(this.layers.entries(),(t=>{let a={layer:t[0]};const i=t[1].toJSON(e),{sublayers:r}=i;return a={...a,...i,sublayers:r},a})))},deserialize:e=>{this.layers=new Map;for(const t of e){if(!t.layer)throw new InvalidOperationError(ERR_LAYER_UNDEFINED);this.layers.set(t.layer,new LayerPresetSetting(t))}},isDefault:e=>!e},icon:"initial",basemap:"initial",basemapOptions:{serializeModes:["initial"]}}}};LayerPreset=LayerPreset_1=__decorate([serializable],LayerPreset);export{LayerPreset};function _createLayerPresetSetting(e){const t=new LayerPresetSetting,a=_getBackingLayer(e);if(t.visible=a.visible,t.opacity=a.opacity,e.layerListSettings.included)return t.expanded=e.layerListSettings.expanded,t}function _applyLayerPresetSetting(e,t){const a=_getBackingLayer(t);void 0!==e.visible&&null!==e.visible&&(a.visible=e.visible),void 0!==e.opacity&&null!==e.opacity&&(a.opacity=e.opacity),void 0!==e.maxScale&&null!==e.maxScale&&(a.maxScale=e.maxScale),void 0!==e.minScale&&null!==e.minScale&&(a.minScale=e.minScale),void 0!==e.includedInLayerList&&null!==e.includedInLayerList&&(t.layerListSettings.included=e.includedInLayerList),void 0!==e.expanded&&null!==e.expanded&&(t.layerListSettings.expanded=e.expanded),void 0!==e.childrenIncludedInLayerList&&null!==e.childrenIncludedInLayerList&&(t.layerListSettings.childrenIncluded=e.childrenIncludedInLayerList)}function _createRef(e){return"string"==typeof e?{id:e,title:e}:"number"==typeof e?{id:e}:{id:e.id,title:e.title}}function _createFlattenedLayerXList(e){if(isMapExtension(e))return _createFlattenedLayerXList(e.layerExtensions);const t=new Collection;for(const a of e.filter((e=>!!e.layer)).toArray())t.add(a),isGroupLayerExtension(a)&&t.addMany(_createFlattenedLayerXList(a.layerExtensions));return t}function _handleNotFound(e){for(const t of e.toArray()){if(t?.dynamicallyAddedLayer)return;const e=_getBackingLayer(t);e&&(e.visible=!1)}}function _getBackingLayer(e){return isLayerExtension(e)?e.layer:e.sublayer}function toMapExtension(e){const t=e;return isMap(t)||isWebMap(t)||isWebScene(t)?new MapExtension({map:t}):e}function isIterable(e){return!!e?.[Symbol.iterator]}
1
+ var LayerPreset_1;import{__decorate}from"tslib";import{whenOnce}from"@arcgis/core/core/reactiveUtils";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isLayerExtension,isMapExtension,ItemType}from"../ItemType.js";import{MapExtension}from"../mapping/MapExtension.js";import{BaseMap as PortalBasemap}from"../portal/BaseMap.js";import{serializable}from"../support/Serializable.js";import{Collection}from"../support/esri.js";import{ObservableMap}from"../utilities/ObservableMap.js";import{basemapsAreEquivalent,createStandardBasemap}from"../utilities/basemaps.js";import{isGroupLayerExtension}from"../utilities/extensions.js";import{map}from"../utilities/iterable.js";import{getLogger}from"../utilities/log.js";import{isMap,isWebMap,isWebScene}from"../utilities/mapping.js";import{LayerPresetSetting}from"./LayerPresetSettings.js";const ERR_LAYER_UNDEFINED="Cannot define a LayerPresetSetting that does not have layer reference.",log=getLogger("layer-preset");let LayerPreset=LayerPreset_1=class extends EntityBase{constructor(){super(...arguments),this._itemType=ItemType.LAYER_PRESET}static createFrom(e){const t=new LayerPreset_1,a=toMapExtension(e);a.basemapExtension?.basemap&&(t.basemap=PortalBasemap.fromEsriApiBasemap(a.basemapExtension.basemap));for(const e of a.basemapOptions.toArray())e.included&&e.basemap&&(t.basemapOptions=t.basemapOptions||[],t.basemapOptions.push(PortalBasemap.fromEsriApiBasemap(e.basemap)));const i=_createFlattenedLayerXList(a);for(const e of i.toArray()){const a=_createLayerPresetSetting(e);if(a){const i=e.allSublayerExtensions;if(i.length>0){a.sublayers=new ObservableMap;for(const e of i.toArray().filter((e=>!!e.sublayer))){const t=_createLayerPresetSetting(e);t&&a.sublayers.set(_createRef(e.sublayer),t)}}t.layers=t.layers??new Map,t.layers.set(_createRef(e.layer),a)}}return t}async applyTo(e){if(isIterable(e)){for(const t of e)await this.applyTo(t);return}const t=toMapExtension(e);if(this.basemap){const e="string"==typeof this.basemap?await createStandardBasemap(this.basemap):this.basemap,a=t.basemapOptions.find((t=>basemapsAreEquivalent(t.basemap,e)));a&&(t.basemapExtension=a,a.included=!0)}if(this.basemapOptions){const e=new Collection;for(const a of await Promise.all(this.basemapOptions.map((async e=>"string"==typeof e?createStandardBasemap(e):e)))){const i=t.basemapOptions.find((e=>basemapsAreEquivalent(e.basemap,a)));i&&(i.included=!0,e.add(i))}for(const a of t.basemapOptions.toArray())e.includes(a)||t.basemapExtension===a||(a.included=!1)}if(this.layers){const e=_createFlattenedLayerXList(t);e.forEach((e=>e._resolveLayer()));for(const t of this.layers.keys()){const a=_createRef(t);let i=e.find((e=>e.layer.id===a.id));if(i||(i=e.find((e=>e.layer.title===a.title))),i){const a=this.layers.get(t);_applyLayerPresetSetting(a,i),e.remove(i);const r=()=>{const e=new Collection;e.addMany(i.allSublayerExtensions.toArray());for(const t of a.sublayers.keys()){const i=_createRef(t);let r=e.find((e=>e.sublayer?.id===i.id&&e.sublayer?.title===i.title));r||(r=e.find((e=>e.sublayer?.title===i.title))),r||(r=e.find((e=>e.sublayer?.id===i.id))),r&&(_applyLayerPresetSetting(a.sublayers.get(t),r),e.remove(r))}_handleNotFound(e)};i.layer.loaded?r():(async()=>{await whenOnce((()=>i.layer.loaded));try{r()}catch(e){log.error({message:`Error applying LayerPreset to sublayers of LayerExtension with ID '${i.id}' and title '${i.title}'.`,error:e})}})()}}_handleNotFound(e)}}_getSerializableProperties(){return{...super._getSerializableProperties(),title:"initial",iconUrl:"initial",description:"initial",layers:{serializeModes:["initial"],serialize:e=>{if(this.layers)return Array.from(map(this.layers.entries(),(t=>{let a={layer:t[0]};const i=t[1].toJSON(e),{sublayers:r}=i;return a={...a,...i,sublayers:r},a})))},deserialize:e=>{this.layers=new Map;for(const t of e){if(!t.layer)throw new InvalidOperationError(ERR_LAYER_UNDEFINED);this.layers.set(t.layer,new LayerPresetSetting(t))}},isDefault:e=>!e},icon:"initial",basemap:"initial",basemapOptions:{serializeModes:["initial"]}}}};LayerPreset=LayerPreset_1=__decorate([serializable],LayerPreset);export{LayerPreset};function _createLayerPresetSetting(e){const t=new LayerPresetSetting,a=_getBackingLayer(e);if(t.visible=a.visible,t.opacity=a.opacity,e.layerListSettings.included)return t.expanded=e.layerListSettings.expanded,t}function _applyLayerPresetSetting(e,t){const a=_getBackingLayer(t);void 0!==e.visible&&null!==e.visible&&(a.visible=e.visible),void 0!==e.opacity&&null!==e.opacity&&(a.opacity=e.opacity),void 0!==e.maxScale&&null!==e.maxScale&&(a.maxScale=e.maxScale),void 0!==e.minScale&&null!==e.minScale&&(a.minScale=e.minScale),void 0!==e.includedInLayerList&&null!==e.includedInLayerList&&(t.layerListSettings.included=e.includedInLayerList),void 0!==e.expanded&&null!==e.expanded&&(t.layerListSettings.expanded=e.expanded),void 0!==e.childrenIncludedInLayerList&&null!==e.childrenIncludedInLayerList&&(t.layerListSettings.childrenIncluded=e.childrenIncludedInLayerList)}function _createRef(e){return"string"==typeof e?{id:e,title:e}:"number"==typeof e?{id:e}:{id:e.id,title:e.title}}function _createFlattenedLayerXList(e){if(isMapExtension(e))return _createFlattenedLayerXList(e.layerExtensions);const t=new Collection;for(const a of e.filter((e=>!!e.layer)).toArray())t.add(a),isGroupLayerExtension(a)&&t.addMany(_createFlattenedLayerXList(a.layerExtensions));return t}function _handleNotFound(e){for(const t of e.toArray()){if(t?.dynamicallyAddedLayer)return;const e=_getBackingLayer(t);e&&(e.visible=!1)}}function _getBackingLayer(e){return isLayerExtension(e)?e.layer:e.sublayer}function toMapExtension(e){const t=e;return isMap(t)||isWebMap(t)||isWebScene(t)?new MapExtension({map:t}):e}function isIterable(e){return!!e?.[Symbol.iterator]}
@@ -1 +1 @@
1
- var BuildingComponentSublayerExtension_1;import{__decorate}from"tslib";import{once}from"@arcgis/core/core/watchUtils";import{InvalidOperationError}from"../InvalidOperationError.js";import{BuildingSceneSublayer}from"../portal/BuildingSceneSublayer.js";import{serializable}from"../support/Serializable.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{isBuildingComponentSublayer}from"../utilities/_layers.js";import{BuildingSublayerExtension,BuildingSublayerSchema}from"./BuildingSublayerExtension.js";import{ArrayWrappedCollection}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields}from"./support/layers.js";const DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1}),ERR_SCHEMA_READ_ONLY="This schema property is read-only.";let BuildingComponentSublayerExtension=BuildingComponentSublayerExtension_1=class extends BuildingSublayerExtension{constructor(e){super(e),this._capabilitiesField=DEFAULT_CAPABILITIES}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get renderer(){return this.sublayer?.renderer}get sublayer(){return super.sublayer}get hasFeatures(){return!0}get _layerView(){return this.sublayer&&this.layerExtension?._layerView?.sublayerViews?.find((e=>e.sublayer===this.sublayer))}_createSublayerExtension(e){return new BuildingComponentSublayerExtension_1(e)}async _createSublayer(e){const t=new((await import("@arcgis/core/layers/buildingSublayers/BuildingComponentSublayer")).default);return await BuildingSceneSublayer.applyToEsriApiBuildingSublayer(e,t),t}_isSupportedSublayer(e){return isBuildingComponentSublayer(e)}_createSchema(){return new BuildingComponentSublayerSchema(this)}_getSerializableProperties(){return{...super._getSerializableProperties(),enableClientSideData:{serializeModes:["initial"],default:!1}}}_capabilities(){return this._capabilitiesField}async _onInitialize(){await super._onInitialize(),this._capabilitiesField={...DEFAULT_CAPABILITIES,supportsQuery:!!this.sublayer.capabilities?.data},this._updateClientSideFields(),this._watchHandles.push(this.watch("sublayer",(()=>{this._updateClientSideFields()}),!0))}async _postInitialize(){if(await super._postInitialize(),!this.sublayer.fields){const e=this.sublayer.watch("fields",(async()=>{const{popupTemplate:t}=this.featureSettings;await Promise.all(this.schema.fieldExtensions.toArray().map((e=>e.initialize()))),!t.title&&this.schema.displayField&&(t.title=`{${this.schema.displayField}}`),this.featureSettings._isDefaultPopupTemplate&&!this.featureSettings.popupTemplate.fieldInfos?.length&&(this.featureSettings.popupTemplate.fieldInfos=this.schema.createAllFieldInfos()),e.remove()}))}}_createLayerListSettings(e){return new BuildingComponentSublayerExtensionLayerListSettings(e,this)}_watchSublayerProperties(){const e=()=>{this._watchHandles.push(this.sublayer.watch("minScale",(()=>this._notifyChange("effectiveMinScale")),!0),this.sublayer.watch("maxScale",(()=>this._notifyChange("effectiveMaxScale")),!0))};this.sublayer.layer?e():this._watchHandles.push(once(this.sublayer,"layer",(()=>{e()})))}_createFeatureSettings(){return new BuildingComponentSublayerFeatureSettings(this)}_updateClientSideFields(){this.sublayer&&this._enableClientSideData&&addOutFields(this.sublayer,this.featureSettings.outFields)}};BuildingComponentSublayerExtension=BuildingComponentSublayerExtension_1=__decorate([serializable],BuildingComponentSublayerExtension);export{BuildingComponentSublayerExtension};let BuildingComponentSublayerFeatureSettings=class extends PopupTemplateFeatureSettings{};BuildingComponentSublayerFeatureSettings=__decorate([serializable],BuildingComponentSublayerFeatureSettings);let BuildingComponentSublayerSchema=class extends BuildingSublayerSchema{constructor(e){super(e),this._fieldCollection=this._createFieldCollection()}get _fields(){return this._fieldCollection}get primaryKeyField(){return this._sublayerExtension.sublayer?.objectIdField}set primaryKeyField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get geometryType(){return this._sublayerExtension.sublayer?.geometryType}set geometryType(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}_createFieldCollection(){return new ReadOnlyCollection(new ArrayWrappedCollection({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"fields"}))}};BuildingComponentSublayerSchema=__decorate([serializable],BuildingComponentSublayerSchema);export{BuildingComponentSublayerSchema};let BuildingComponentSublayerExtensionLayerListSettings=class extends ExtensionBaseLayerListSettings{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};BuildingComponentSublayerExtensionLayerListSettings=__decorate([serializable],BuildingComponentSublayerExtensionLayerListSettings);
1
+ var BuildingComponentSublayerExtension_1;import{__decorate}from"tslib";import{watch}from"@arcgis/core/core/reactiveUtils";import{InvalidOperationError}from"../InvalidOperationError.js";import{BuildingSceneSublayer}from"../portal/BuildingSceneSublayer.js";import{serializable}from"../support/Serializable.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{isBuildingComponentSublayer}from"../utilities/_layers.js";import{BuildingSublayerExtension,BuildingSublayerSchema}from"./BuildingSublayerExtension.js";import{ArrayWrappedCollection}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields}from"./support/layers.js";const DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1}),ERR_SCHEMA_READ_ONLY="This schema property is read-only.";let BuildingComponentSublayerExtension=BuildingComponentSublayerExtension_1=class extends BuildingSublayerExtension{constructor(e){super(e),this._capabilitiesField=DEFAULT_CAPABILITIES}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get renderer(){return this.sublayer?.renderer}get sublayer(){return super.sublayer}get hasFeatures(){return!0}get _layerView(){return this.sublayer&&this.layerExtension?._layerView?.sublayerViews?.find((e=>e.sublayer===this.sublayer))}_createSublayerExtension(e){return new BuildingComponentSublayerExtension_1(e)}async _createSublayer(e){const t=new((await import("@arcgis/core/layers/buildingSublayers/BuildingComponentSublayer")).default);return await BuildingSceneSublayer.applyToEsriApiBuildingSublayer(e,t),t}_isSupportedSublayer(e){return isBuildingComponentSublayer(e)}_createSchema(){return new BuildingComponentSublayerSchema(this)}_getSerializableProperties(){return{...super._getSerializableProperties(),enableClientSideData:{serializeModes:["initial"],default:!1}}}_capabilities(){return this._capabilitiesField}async _onInitialize(){await super._onInitialize(),this._capabilitiesField={...DEFAULT_CAPABILITIES,supportsQuery:!!this.sublayer.capabilities?.data},this._updateClientSideFields(),this._watchHandles.push(this.watch("sublayer",(()=>{this._updateClientSideFields()}),!0))}async _postInitialize(){if(await super._postInitialize(),!this.sublayer.fields){const e=this.sublayer.watch("fields",(async()=>{const{popupTemplate:t}=this.featureSettings;await Promise.all(this.schema.fieldExtensions.toArray().map((e=>e.initialize()))),!t.title&&this.schema.displayField&&(t.title=`{${this.schema.displayField}}`),this.featureSettings._isDefaultPopupTemplate&&!this.featureSettings.popupTemplate.fieldInfos?.length&&(this.featureSettings.popupTemplate.fieldInfos=this.schema.createAllFieldInfos()),e.remove()}))}}_createLayerListSettings(e){return new BuildingComponentSublayerExtensionLayerListSettings(e,this)}_watchSublayerProperties(){const e=()=>{this._watchHandles.push(this.sublayer.watch("minScale",(()=>this.notifyChange("effectiveMinScale")),!0),this.sublayer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale")),!0))};this.sublayer.layer?e():this._watchHandles.push(watch((()=>this.sublayer.layer),e,{once:!0}))}_createFeatureSettings(){return new BuildingComponentSublayerFeatureSettings(this)}_updateClientSideFields(){this.sublayer&&this._enableClientSideData&&addOutFields(this.sublayer,this.featureSettings.outFields)}};BuildingComponentSublayerExtension=BuildingComponentSublayerExtension_1=__decorate([serializable],BuildingComponentSublayerExtension);export{BuildingComponentSublayerExtension};let BuildingComponentSublayerFeatureSettings=class extends PopupTemplateFeatureSettings{};BuildingComponentSublayerFeatureSettings=__decorate([serializable],BuildingComponentSublayerFeatureSettings);let BuildingComponentSublayerSchema=class extends BuildingSublayerSchema{constructor(e){super(e),this._fieldCollection=this._createFieldCollection()}get _fields(){return this._fieldCollection}get primaryKeyField(){return this._sublayerExtension.sublayer?.objectIdField}set primaryKeyField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get geometryType(){return this._sublayerExtension.sublayer?.geometryType}set geometryType(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}_createFieldCollection(){return new ReadOnlyCollection(new ArrayWrappedCollection({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"fields"}))}};BuildingComponentSublayerSchema=__decorate([serializable],BuildingComponentSublayerSchema);export{BuildingComponentSublayerSchema};let BuildingComponentSublayerExtensionLayerListSettings=class extends ExtensionBaseLayerListSettings{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};BuildingComponentSublayerExtensionLayerListSettings=__decorate([serializable],BuildingComponentSublayerExtensionLayerListSettings);
@@ -1 +1 @@
1
- import{__decorate}from"tslib";import{ArgumentError}from"../ArgumentError.js";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isBasemapExtension,isBookmark,isGroundExtension,isLayerPreset,isMenu,isTableExtension,ItemType}from"../ItemType.js";import{TableExtension}from"../data/TableExtension.js";import{LayerPreset}from"../layer-preset/LayerPreset.js";import{Menu}from"../menus/Menu.js";import{WebMap as WebMapJson}from"../portal/WebMap.js";import{WebScene as WebSceneJson}from"../portal/WebScene.js";import{resolveRelativeHrefs}from"../portal/_utils.js";import{DefaultArcGISRequestHelper}from"../support/ArcGISRequestHelper.js";import{FormatSettings}from"../support/FormatSettings.js";import{InitializableCollectionProxy}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection}from"../support/ReadOnlyInitializableCollection.js";import{serializable}from"../support/Serializable.js";import{WellKnownBasemap}from"../support/esri.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{basemapsAreEquivalent,createStandardBasemap,isStandardBasemap}from"../utilities/basemaps.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{project}from"../utilities/geometry.js";import{find}from"../utilities/iterable.js";import{layersAreEquivalent}from"../utilities/layers.js";import{getLogger}from"../utilities/log.js";import{getMapSpatialReference,isMap,isWebMap,isWebScene}from"../utilities/mapping.js";import{toPortalItem as toPortalItemBase}from"../utilities/portal.js";import{parallelEach}from"../utilities/promise.js";import{onCollectionPropertyChange,onEach}from"../utilities/watch.js";import{BasemapExtension}from"./BasemapExtension.js";import{Bookmark}from"./Bookmark.js";import{GroundExtension}from"./GroundExtension.js";import{MapConstraints}from"./MapConstraints.js";import{UnsupportedLayerExtension}from"./UnsupportedLayerExtension.js";import{_assignLayerExtensions,LayerExtension}from"./_LayerExtension.js";import{LayerExtensionCollectionBase}from"./support/_LayerExtensionCollection.js";const log=getLogger("MapExtension");let MapExtension=class extends EntityBase{constructor(e){super(e),this.isSwitchingMap=!1,this._layerViews=new Collection,this._itemType=ItemType.MAP_EXTENSION,this._skipBasemapOptions=!1;let t={...e};this._basemapOptions=new BasemapExtensionCollection(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new Collection,this.constraints=new MapConstraints,this.watch(["_map","_scene"],(e=>{e&&(onEach(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),onEach(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})))}));const{webMap:i,webScene:s,initialViewMode:a,map:n,basemapOptions:r}=t;if(this._webMap=i,this._webScene=s,this._webMapItem=toPortalItem(i),this._webSceneItem=toPortalItem(s),this.initialViewMode=a,isWebScene(n)&&s)throw new ArgumentError("Cannot specify webScene property if map is initialized to a WebScene instance.");if(isMap(n)&&i)throw new ArgumentError("Cannot specify webMap property if map is initialized to a 2D Map instance.");if(isWebScene(n)||isWebMap(n)||isMap(n))this.assignProperties({basemapOptions:r}),this._skipBasemapOptions=!!r;else{const{map:e,layerExtensions:i,tableExtensions:s,groundExtension:a,basemapOptions:n,basemapExtension:r,...o}=t;this._deferredProperties={map:e,layerExtensions:i,tableExtensions:s,groundExtension:a,basemapOptions:n,basemapExtension:r},t=o,n&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(t),this.watch("map.basemap",(()=>this._onBasemapChange()),!0),this.watch("map.ground",(()=>this._onGroundChange()),!0),this.allLayerExtensions=new AllLayerExtensionCollectionImpl(this),this.map?.basemap&&this._onBasemapChange()}get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?isWebScene(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":isWebScene(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new DefaultArcGISRequestHelper),this._requestHelper}set requestHelper(e){this._requestHelper=e}get basemapExtension(){return this._basemapExtension}set basemapExtension(e){const t=this._basemapExtension;if(t!==e)if(t&&t._setMapExtension(void 0),e){if(e._setMapExtension(this),this.isInitialized&&!e.basemap){if(e.isInitialized)throw e._setMapExtension(void 0),new InvalidOperationError("Cannot set MapExtension.basemapExtension without a valid Esri Basemap object");e.initialize()}this._ensureIsBasemapOption(e),this.map&&e.basemap&&e.basemap!==this.map.basemap?this.map.basemap=e.basemap:this._basemapExtension=e}else this.map.basemap=void 0,this._basemapExtension=void 0}get groundExtension(){return this._groundExtension||(this.groundExtension=new GroundExtension({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new InvalidOperationError("Cannot set map.ground to undefined");const t=this._groundExtension;t!==e&&(t&&t._setMapExtension(void 0),e._setMapExtension(this),e._resolveGround(),e.ground?(this._groundExtensions.set(e.ground,e),this.map&&e.ground!==this.map.ground?this.map.ground=e.ground:this._groundExtension=e):this._groundExtension=e)}get basemapOptions(){return this._basemapOptions}get bookmarks(){return this._bookmarks}get initialBasemapExtension(){return this._initialBasemapExtension}get initialLayerPreset(){return this._initialLayerPreset}set initialLayerPreset(e){if(!e)return void(this._initialLayerPreset=void 0);const t=isLayerPreset(e)?e:new LayerPreset(e);this._initialLayerPreset=t}get _spatialReference(){return getMapSpatialReference(this.map)}get webMapItemTitle(){if(this._webMapItem)return this._webMapItem.title}get webSceneItemTitle(){if(this._webSceneItem)return this._webSceneItem.title}get title(){return this._title?this._title:this._webMapItem&&"map"===this.viewMode?this.webMapItemTitle:this._webSceneItem&&"scene"===this.viewMode?this.webSceneItemTitle:void 0}set title(e){this._title=e}get contextMenu(){return this._contextMenu}set contextMenu(e){this._contextMenu=e,e&&this.isInitialized&&!e.isInitialized&&(async()=>{try{await e.initialize()}catch(e){e instanceof Error&&log.error({message:"An error occurred while initializing context menu.",error:e})}})()}get _allLayerViews(){const e=t=>{const i=[t];return Collection.isCollection(t.sublayerViews)?i.push(...t.sublayerViews.toArray().flatMap(e)):Collection.isCollection(t.layerViews)&&i.push(...t.layerViews.toArray().flatMap(e)),i};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}getAllFeatureSources(e=(()=>!0)){const t=[],i=a=>{a.hasFeatures&&t.push(a);for(const t of a.sublayerExtensions.initializedItems.filter(e).toArray())s(t);if(isGroupLayerExtension(a))for(const t of a.layerExtensions.initializedItems.filter(e).toArray())i(t)},s=i=>{t.push(i);for(const t of i.sublayerExtensions.initializedItems.filter(e).toArray())s(t)};for(const t of this.layerExtensions.initializedItems.filter(e).toArray())i(t);for(const i of this.tableExtensions.initializedItems.filter(e).toArray())t.push(i);if(this.basemapExtension){for(const t of this.basemapExtension.baseLayerExtensions.initializedItems.filter(e).toArray())i(t);for(const t of this.basemapExtension.referenceLayerExtensions.initializedItems.filter(e).toArray())i(t)}return t}isSupportedViewMode(e){return e===this.viewMode||!(!this.webMap&&!this.webScene)&&("scene"===e?!!this.webScene:!!this.webMap)}async switchViewMode(e){if(checkArg("viewMode",e).isNotMissing().satisfies((e=>this.isSupportedViewMode(e)),"Unsupported view mode."),this.viewMode===e)return;let t;"scene"===e?(await this._createScene(),t=this._scene):(await this._createMap(),t=this._map),t.basemap=this.map.basemap,await this.switchMap(t),this._notifyChange("viewMode"),this._notifyChange("title")}async switchMap(e){if(checkArg("newMap",e).isNotMissing(),e===this.map)return;if(!this.map)return void this._setMap(e);this.isSwitchingMap=!0,this.isInitialized&&await load(e);const t=new Map;this.map.layers.forEach((e=>t.set(e,this.layerExtensions.forLayer(e))));const{basemapExtension:i}=this;this._setMap(e),this._updateBookmarks();const s=[];for(const e of this.map.layers.toArray()){const i=find(t.entries(),(([t])=>layersAreEquivalent(t,e)));if(i)s.push((async()=>{const t=i[1];await t._switchLayer(e),this._layerExtensions._register(t)})());else{const t=this._layerExtensions._forLayer(e);t?.layer!==e&&s.push(t._switchLayer(e))}}this.map.basemap&&i&&basemapsAreEquivalent(this.map.basemap,i.basemap)&&s.push((async()=>{await i._switchBasemap(this.map.basemap),this.basemapExtension=i})()),this.isInitialized&&s.push(this._initializeChildren()),await Promise.all(s),this.isSwitchingMap=!1}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new InvalidOperationError("Cannot unset both webMap and webScene.");this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=toPortalItem(e),await load(this._webMapItem),"map"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createMap(),await this.switchMap(this._map),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("scene")),this._notifyChange("webMap"),this._notifyChange("initialViewMode"),this._notifyChange("title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new InvalidOperationError("Cannot unset both webMap and webScene.");this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=toPortalItem(e),await load(this._webSceneItem),"scene"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createScene(),await this.switchMap(this._scene),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("map")),this._notifyChange("webScene"),this._notifyChange("initialViewMode"),this._notifyChange("title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{if(isPortalItem(this.webScene)){const e=new((await import("@arcgis/core/WebScene")).default);await this._loadAndApplyPortalItemData(this._webSceneItem,e),this._scene=e}else this._scene=await WebSceneJson.toEsriApiWebScene(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{if(isPortalItem(this.webMap)){const e=new((await import("@arcgis/core/WebMap")).default);await this._loadAndApplyPortalItemData(this._webMapItem,e),this._map=e}else this._map=await WebMapJson.toEsriApiWebMap(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t=("map"===this.viewMode?this._scene:this._map)?.layers.toArray()??[],i=e.filter((e=>!t.includes(e.layer)&&!t.some((t=>e.layer&&(LayerExtension._matchesRef(t,e.layer)||layersAreEquivalent(t,e.layer))))));_assignLayerExtensions(this.layerExtensions,i)}},serialize:e=>{if(this._deferredProperties?.layerExtensions)return this._deferredProperties.layerExtensions;{const t="map"===this.viewMode,i=(t?this._map:this._scene)?.layers.toArray();let s=(t?this._scene:this._map)?.layers.toArray()??[];return s=s.filter((e=>!i.find((t=>layersAreEquivalent(t,e))))),this.layerExtensions.concat(s.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>!(t instanceof UnsupportedLayerExtension||"initial"===e)||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?compare(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(isTableExtension(e)?e:TableExtension.create(e),t)},onMatch:(e,t,i,s)=>{isTableExtension(t)||e.assignProperties(t),i!==s&&this.tableExtensions.reorder(e,s)},equals:(e,t)=>isTableExtension(t)?t===e:!!TableExtension._matchesRef(e,t.table)||e.id===t.id}):this._deferredProperties={...this._deferredProperties,tableExtensions:e}},serialize:()=>this._deferredProperties?.tableExtensions?this._deferredProperties?.tableExtensions:this.tableExtensions.toArray()},basemapExtension:{serializeModes:["project"],deserialize:e=>{this.map?e?isBasemapExtension(e)?this.basemapExtension=e:this.basemapExtension?this.basemapExtension.assignProperties(e):this.basemapExtension=BasemapExtension.create(e):this.basemapExtension=void 0:this._deferredProperties={...this._deferredProperties,basemapExtension:e}},serialize:()=>this._deferredProperties?.basemapExtension?this._deferredProperties?.basemapExtension:this.basemapExtension},basemapOptions:{serializeModes:["initial"],deserialize:e=>{this._skipBasemapOptions?this._skipBasemapOptions=!1:(compare(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(isBasemapExtension(e)?e:BasemapExtension.create(e),t)},onMatch:(e,t,i,s)=>{isBasemapExtension(t)||e.assignProperties(t),i!==s&&this.basemapOptions.reorder(e,s)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(isBasemapExtension(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const i=e.toJSON();return basemapsAreEquivalent(i.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&parallelEach(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{this.map?isGroundExtension(e)?this.groundExtension=e:this.groundExtension.assignProperties(e):this._deferredProperties={...this._deferredProperties,groundExtension:e}},serialize:()=>this._deferredProperties?.groundExtension?this._deferredProperties?.groundExtension:this.groundExtension},bookmarks:{serialize:()=>this.bookmarks.map((e=>e.toJSON())).toArray(),deserialize:e=>{this.bookmarks.addMany(e.map((e=>isBookmark(e)?e:new Bookmark(e))))}},webMap:{serializeModes:["initial"],deserialize:!1},webScene:{serializeModes:["initial"],deserialize:!1},initialLayerPreset:"initial",initialViewMode:{serializeModes:["initial","project"],serialize:e=>"project"===e?this.viewMode:"scene"!==this.initialViewMode||!this.webScene&&this.webMap?"map":"scene",deserialize:e=>{this.viewMode!==e&&(this._deserializedViewMode=e),this._initialViewMode=e},isDefault:(e,t)=>"project"!==t&&"map"===e},formatSettings:"initial",constraints:"initial",title:"initial",onClick:"initial",onHover:"initial",onHoverEnd:"initial",onInitialized:"initial",onViewpointChanged:"initial",contextMenu:{serializeModes:["initial"],deserialize:e=>{e?isMenu(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=Menu.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>({operationalLayers:this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),tables:this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})))}),deserialize:e=>{if(this.map)if(isMap(e)||isWebMap(e)||isWebScene(e)){if(e!==this.map)throw new ArgumentError("properties.map","Property 'map' is read-only.")}else this._deserializedMapPromise=(async()=>{this._deserializedViewMode&&this.webMap&&this.webScene&&(this._deserializedViewModePromise=this.switchViewMode(this._deserializedViewMode),await this._deserializedViewModePromise,this._deserializedViewMode=void 0,this._deserializedViewModePromise=void 0),await this._applyMapProperties(e,this.map),this._deserializedMapPromise=void 0})();else this._deferredProperties={...this._deferredProperties,map:e}}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,i){await parallelEach(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let s=e;const a=this.basemapOptions.find((e=>basemapsAreEquivalent(e.basemap,s.baseMap)));a&&(t.basemap=a.basemap,s={...s,baseMap:{...s.baseMap,title:t.basemap.title}}),isWebScene(t)?await WebSceneJson.applyToEsriApiWebScene(s,t,i):await WebMapJson.applyToEsriApiMap(s,t,i)}_createFormatSettings(){return new FormatSettings}_createLayerExtensionCollection(){return new LayerExtensionCollectionImpl(this)}_createTableExtensionCollection(){return new TableExtensionCollectionImpl(this)}async _onInitialize(){await super._onInitialize();const{basemapExtension:e,basemapOptions:t,groundExtension:i,webMap:s,webScene:a,map:n,...r}=this._deferredProperties??{};if(t&&this.assignProperties({basemapOptions:t}),this.map||("scene"===this.initialViewMode?this._setMap(new((await import("@arcgis/core/WebScene")).default)):this._setMap(new((await import("@arcgis/core/WebMap")).default))),this.map.basemap&&this._onBasemapChange(),(s||a)&&await this._applyMapProperties("scene"===this.initialViewMode?a:s,this.map),e&&(this.assignProperties({basemapExtension:e}),await this.basemapExtension._createBackingBasemap()),i&&this.assignProperties({groundExtension:i}),this._webMapItem||this._webSceneItem){await Promise.all([load(this.map),load(this._webMapItem),load(this._webSceneItem)]),validatePortalItem(this._webMapItem,"webMap","Web Map"),validatePortalItem(this._webSceneItem,"webScene","Web Scene");const e=isWebScene(this.map)?this._webSceneItem:this._webMapItem;await this._loadAndApplyPortalItemData(e)}else await load(this.map);n&&await this._applyMapProperties(n,this.map),this.assignProperties(r),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks(),this.contextMenu&&await this.contextMenu.initialize();for(const e of this.layerExtensions.toArray())await e._createBackingLayer();await Promise.all(this.tableExtensions.map((e=>e._createBackingTable())).toArray())}async _postInitialize(){await super._postInitialize(),await this._createStandardBasemapOptions(),await parallelEach(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new Collection(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>{this.layerExtensions.remove(e)};const t=new Collection(this.tableExtensions.filter((e=>!!e.table)));if(t.remove=e=>{this.tableExtensions.remove(e)},yield e,yield t,this.basemapExtension){const e=new Collection;e.add(this.basemapExtension),yield e}const i=new Collection;i.add(this.groundExtension),yield i}_initMapFromProperties(e){const t=e.map;isMap(t)||isWebMap(t)||isWebScene(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!isPortalItem(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!isPortalItem(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){isWebScene(e)?this._scene=e:this._map=e,this._currentMap=e,this.basemapExtension?.basemap&&!e.basemap&&(e.basemap=this.basemapExtension.basemap),this.groundExtension?.ground&&!e.ground&&(e.ground=this.groundExtension.ground),this._notifyChange("map")}async _loadAndApplyPortalItemData(e,t){await load(e);const i=await e.fetchData();resolveRelativeHrefs(i,e),await this._inferLayerTypes(i),this.basemapExtension?.basemap&&!t&&delete i.baseMap,GroundExtension.isDefaultGround(this.groundExtension.ground)||t||delete i.ground;const s=t||this.map;await load(s),await this._applyMapProperties(i,s,e),s.portalItem=e;const{viewpoint:a,spatialReference:n}=s.initialViewProperties;a&&a.targetGeometry&&!a.targetGeometry.spatialReference.equals(n)&&(s.initialViewProperties.viewpoint.targetGeometry=(await project([a.targetGeometry],n))[0]),a&&a.camera&&(a.camera.position.spatialReference=n.clone())}_onBasemapChange(){if(this._basemapExtension){if(this.basemapExtension.basemap==this.map.basemap)return;this._basemapExtension._setMapExtension(void 0)}if(this.map.basemap){let e=this.basemapOptions.find((e=>e.basemap===this.map.basemap));e||(e=BasemapExtension.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0)),e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;this._notifyChange("basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.groundExtension.ground===this.map.ground)return void(this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,this.groundExtension));this.groundExtension._setMapExtension(void 0)}this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,new GroundExtension({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,this._notifyChange("groundExtension")}async _inferLayerTypes(e){const t=[];if(e.operationalLayers)for(const i of e.operationalLayers)t.push(this._inferLayerType(i));if(e.baseMap&&t.push(this._inferBasemapLayerTypes(e.baseMap)),e.hasOwnProperty("ground")&&t.push(this._inferGroundLayerTypes(e.ground)),e.presentation?.slides)for(const i of e.presentation.slides)i.baseMap&&"string"!=typeof i.baseMap&&t.push(this._inferBasemapLayerTypes(i.baseMap));await Promise.all(t)}async _inferBasemapLayerTypes(e){const t=[];if(e.baseMapLayers)for(const i of e.baseMapLayers)t.push(this._inferLayerType(i));await Promise.all(t)}async _inferGroundLayerTypes(e){const t=[];if(e.layers)for(const i of e.layers)t.push(this._inferLayerType(i));await Promise.all(t)}async _inferLayerType(e){if(!e.layerType)if(e.type)e.layerType=e.type;else if(e.url){const t=e.url;if(t.match(".*MapServer/\\d{1,}/?$")||t.match(".*FeatureServer/\\d{1,}/?$"))e.layerType="ArcGISFeatureLayer";else if(t.match(".*StreamServer/?$"))e.layerType="ArcGISStreamLayer";else if(t.match(".*ImageServer/?$")){const i=await this._getLayerData(t);i.cacheType?"Map"===i.cacheType?e.layerType="ArcGISTiledImageServiceLayer":"Elevation"===i.cacheType&&(e.layerType="ArcGISTiledElevationServiceLayer"):e.layerType="ArcGISImageServiceLayer"}else if(t.match(".*MapServer/?$")){const i=await this._getLayerData(t);e.layerType=i.tileInfo?"ArcGISTiledMapServiceLayer":"ArcGISMapServiceLayer"}else if(t.match(".*\\.(csv|txt)$"))e.layerType="CSV";else if(t.match(".*\\.kml$"))e.layerType="KML";else if(t.match(".*SceneServer/layers/\\d{1,}/?$")){const i=await this._getLayerData(t);"3DObject"===i.layerType?e.layerType="ArcGISSceneServiceLayer":"IntegratedMesh"===i.layerType?e.layerType="IntegratedMeshLayer":"PointCloud"===i.layerType&&(e.layerType="PointCloudLayer")}else t.match(".*(\\.xml|rss/?)$")&&(e.layerType="GeoRSS")}else if(e.layers){e.layerType="GroupLayer";const t=[];for(const i of e.layers)t.push(this._inferLayerType(i));await Promise.all(t)}else e.templateUrl&&e.tileInfo?e.layerType="WebTiledLayer":e.featureCollection?e.layerType="ArcGISFeatureLayer":e.styleUrl?e.layerType="VectorTileLayer":e.mapUrl&&(e.layerType="WMS")}async _getLayerData(e){const t=await this.requestHelper.request(e,{query:{f:"json"}});if(!t||!t.data)throw new Error(`Response to request for url ${e} was invalid.`);return t.data}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e&&e.isWebMercator&&await parallelEach([WellKnownBasemap.SATELLITE,WellKnownBasemap.HYBRID_VECTOR,WellKnownBasemap.STREETS_VECTOR,WellKnownBasemap.TOPO_VECTOR,WellKnownBasemap.STREETS_NAVIGATION_VECTOR,WellKnownBasemap.STREETS_NIGHT_VECTOR,WellKnownBasemap.TERRAIN_VECTOR,WellKnownBasemap.DARK_GRAY_VECTOR,WellKnownBasemap.GRAY_VECTOR,WellKnownBasemap.OCEANS_VECTOR,WellKnownBasemap.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await createStandardBasemap(e);basemapsAreEquivalent(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(BasemapExtension.create({basemap:t}),void 0,!1)}))}_ensureIsBasemapOption(e){const t=this.basemapOptions.findIndex((t=>t.basemap===e.basemap));t>=0?this._basemapOptions.getItemAt(t)!==e&&(this._basemapOptions.removeAtInternal(t),this._basemapOptions.addInternal(e,t)):this._basemapOptions.addInternal(e,0)}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),isWebMap(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new Bookmark({source:"map",title:e.name,viewpoint:e.viewpoint}))})):isWebScene(this.map)&&this.map.presentation?.slides?.length>0&&this.map.presentation.slides.forEach((e=>{const t={source:"map",title:e.title.text,viewpoint:e.viewpoint},i=new Bookmark(t);this.bookmarks.add(i)}))}};MapExtension=__decorate([serializable],MapExtension);export{MapExtension};class LayerExtensionCollectionImpl extends LayerExtensionCollectionBase{constructor(e){super(e,"map.layers")}get _mapExtension(){return this._parent}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(ItemType.LAYER_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}}class BasemapExtensionCollection extends InitializableCollectionProxy{constructor(e){super(new Collection),this.isExplicitlyModified=!1,this._mapExtension=e}add(e,t){super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e)}addMany(e,t){super.addMany(e,t),this.isExplicitlyModified=!0}addInternal(e,t,i=!0){const s=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-t.length):e};let a;if(e.basemap){const t=s(e.basemap.id);if(a=this.findIndex((e=>s(e.basemap?.id)===t)),isStandardBasemap(e.basemap)&&a>=0){if(!i)return;super.removeAt(a)}}super.add(e,t??(a>=0?a:void 0))}removeAt(e){const t=super.removeAt(e);return t&&(this.isExplicitlyModified=!0,t===this._mapExtension.basemapExtension&&(e<this.length?this._mapExtension.basemapExtension=this.getItemAt(e):this.length?this._mapExtension.basemapExtension=this.getItemAt(e-1):this._mapExtension.basemapExtension=void 0)),t}removeAll(){this._mapExtension.basemapExtension=void 0,super.removeAll()}removeAtInternal(e){return super.removeAt(e)}removeAllInternal(){for(;this.length;)this.removeAtInternal(this.length-1)}reorder(e,t){return super.reorder(e,t),this.isExplicitlyModified=!0,e}reorderInternal(e,t){return super.reorder(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.basemap}}class TableExtensionCollectionImpl extends InitializableCollectionProxy{constructor(e){super(),this._tableExtensionMap=new WeakMap,this._uninitializedTableExtensions=new Set,this._mapExtension=e,onCollectionPropertyChange(this._mapExtension,"map.tables",(e=>{const t={added:(e.added||[]).map((e=>this._forTable(e))),moved:(e.moved||[]).map((e=>this._forTable(e))),removed:(e.removed||[]).map((e=>this._forTable(e))),target:this};this.emit("change",t)})),this._mapExtension.watch("map.tables.length",(()=>this._notifyChange("length")))}get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new ReadOnlyCollection(new Collection)}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(ItemType.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new TableExtensionCollectionImpl(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.table.id===e))}forTable(e){if(checkArg("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(checkArg("tableX",e).isNotMissing(),e.mapExtension&&e.mapExtension.tableExtensions.remove(e),e._setMapExtension(this._mapExtension),e.table){const i=this._tableExtensionMap.get(e.table);if(this._tableExtensionMap.set(e.table,e),i&&i!==e&&this._onRemoved(i),this._tables.includes(e.table))if(void 0===t){const t={added:[e],moved:[],removed:i?[i]:[],target:this};this.emit("change",t)}else this._tables.reorder(e.table,t);else this._tables.add(e.table,t)}else{this._uninitializedTableExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("change",t)}this._onAdded(e)}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedTableExtensions.has(t)){this._uninitializedTableExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("change",e)}else this._tables.remove(t.table);return this._onRemoved(t),t}}reorder(e,t){if(e&&this._tables.includes(e.table))return this._tables.reorder(e.table,t),e}sort(e){this._tables.sort(((t,i)=>e(this._forTable(t),this._forTable(i))))}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.table}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}_forTable(e){for(const e of this._uninitializedTableExtensions)e._resolveTable(),e.table&&(this._tableExtensionMap.set(e.table,e),this._uninitializedTableExtensions.delete(e));if(!this._tableExtensionMap.has(e)){const t=TableExtension.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class AllLayerExtensionCollectionImpl extends ReadOnlyInitializableCollection{constructor(e){super(),this._mapExtension=e}get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[]));return this._mapExtension.basemapExtension&&(e=e.concat(this._mapExtension.basemapExtension.baseLayerExtensions.toArray()).concat(this._mapExtension.basemapExtension.referenceLayerExtensions.toArray())),e=e.concat(this._mapExtension.groundExtension.layerExtensions.toArray()),e}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.layer.id===e))}forLayer(e){return checkArg("layer",e).isNotMissing(),this.findByLayerId(e.id)}emit(e,t){if("change"===e){const i=new Collection;i.addMany(t.added);const s=i.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[])).toArray(),a=new Collection;a.addMany(t.removed);const n=a.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[])).toArray(),r=new Collection;r.addMany(t.moved);const o=r.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[])).toArray();super.emit(e,{added:s,removed:n,moved:o,target:this})}return super.emit(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function toPortalItem(e){if("object"!=typeof e||!e||!e.baseMap)return toPortalItemBase(e)}function isPortalItem(e){return"object"!=typeof e||e&&!e.baseMap}function validatePortalItem(e,t,i){if(e?.type&&e.type!==i)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}
1
+ import{__decorate}from"tslib";import{ArgumentError}from"../ArgumentError.js";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isBasemapExtension,isBookmark,isGroundExtension,isLayerPreset,isMenu,isTableExtension,ItemType}from"../ItemType.js";import{TableExtension}from"../data/TableExtension.js";import{LayerPreset}from"../layer-preset/LayerPreset.js";import{Menu}from"../menus/Menu.js";import{WebMap as WebMapJson}from"../portal/WebMap.js";import{WebScene as WebSceneJson}from"../portal/WebScene.js";import{resolveRelativeHrefs}from"../portal/_utils.js";import{DefaultArcGISRequestHelper}from"../support/ArcGISRequestHelper.js";import{FormatSettings}from"../support/FormatSettings.js";import{InitializableCollectionProxy}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection}from"../support/ReadOnlyInitializableCollection.js";import{serializable}from"../support/Serializable.js";import{WellKnownBasemap}from"../support/esri.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{basemapsAreEquivalent,createStandardBasemap,isStandardBasemap}from"../utilities/basemaps.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{project}from"../utilities/geometry.js";import{find}from"../utilities/iterable.js";import{layersAreEquivalent}from"../utilities/layers.js";import{getLogger}from"../utilities/log.js";import{getMapSpatialReference,isMap,isWebMap,isWebScene}from"../utilities/mapping.js";import{toPortalItem as toPortalItemBase}from"../utilities/portal.js";import{parallelEach}from"../utilities/promise.js";import{onCollectionPropertyChange,onEach}from"../utilities/watch.js";import{BasemapExtension}from"./BasemapExtension.js";import{Bookmark}from"./Bookmark.js";import{GroundExtension}from"./GroundExtension.js";import{MapConstraints}from"./MapConstraints.js";import{UnsupportedLayerExtension}from"./UnsupportedLayerExtension.js";import{_assignLayerExtensions,LayerExtension}from"./_LayerExtension.js";import{LayerExtensionCollectionBase}from"./support/_LayerExtensionCollection.js";const log=getLogger("MapExtension");let MapExtension=class extends EntityBase{constructor(e){super(e),this.isSwitchingMap=!1,this._layerViews=new Collection,this._itemType=ItemType.MAP_EXTENSION,this._skipBasemapOptions=!1;let t={...e};this._basemapOptions=new BasemapExtensionCollection(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new Collection,this.constraints=new MapConstraints,this.watch(["_map","_scene"],(e=>{e&&(onEach(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),onEach(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})))}));const{webMap:i,webScene:s,initialViewMode:a,map:n,basemapOptions:r}=t;if(this._webMap=i,this._webScene=s,this._webMapItem=toPortalItem(i),this._webSceneItem=toPortalItem(s),this.initialViewMode=a,isWebScene(n)&&s)throw new ArgumentError("Cannot specify webScene property if map is initialized to a WebScene instance.");if(isMap(n)&&i)throw new ArgumentError("Cannot specify webMap property if map is initialized to a 2D Map instance.");if(isWebScene(n)||isWebMap(n)||isMap(n))this.assignProperties({basemapOptions:r}),this._skipBasemapOptions=!!r;else{const{map:e,layerExtensions:i,tableExtensions:s,groundExtension:a,basemapOptions:n,basemapExtension:r,...o}=t;this._deferredProperties={map:e,layerExtensions:i,tableExtensions:s,groundExtension:a,basemapOptions:n,basemapExtension:r},t=o,n&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(t),this.watch("map.basemap",(()=>this._onBasemapChange()),!0),this.watch("map.ground",(()=>this._onGroundChange()),!0),this.allLayerExtensions=new AllLayerExtensionCollectionImpl(this),this.map?.basemap&&this._onBasemapChange()}get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?isWebScene(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":isWebScene(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new DefaultArcGISRequestHelper),this._requestHelper}set requestHelper(e){this._requestHelper=e}get basemapExtension(){return this._basemapExtension}set basemapExtension(e){const t=this._basemapExtension;if(t!==e)if(t&&t._setMapExtension(void 0),e){if(e._setMapExtension(this),this.isInitialized&&!e.basemap){if(e.isInitialized)throw e._setMapExtension(void 0),new InvalidOperationError("Cannot set MapExtension.basemapExtension without a valid Esri Basemap object");e.initialize()}this._ensureIsBasemapOption(e),this.map&&e.basemap&&e.basemap!==this.map.basemap?this.map.basemap=e.basemap:this._basemapExtension=e}else this.map.basemap=void 0,this._basemapExtension=void 0}get groundExtension(){return this._groundExtension||(this.groundExtension=new GroundExtension({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new InvalidOperationError("Cannot set map.ground to undefined");const t=this._groundExtension;t!==e&&(t&&t._setMapExtension(void 0),e._setMapExtension(this),e._resolveGround(),e.ground?(this._groundExtensions.set(e.ground,e),this.map&&e.ground!==this.map.ground?this.map.ground=e.ground:this._groundExtension=e):this._groundExtension=e)}get basemapOptions(){return this._basemapOptions}get bookmarks(){return this._bookmarks}get initialBasemapExtension(){return this._initialBasemapExtension}get initialLayerPreset(){return this._initialLayerPreset}set initialLayerPreset(e){if(!e)return void(this._initialLayerPreset=void 0);const t=isLayerPreset(e)?e:new LayerPreset(e);this._initialLayerPreset=t}get _spatialReference(){return getMapSpatialReference(this.map)}get webMapItemTitle(){if(this._webMapItem)return this._webMapItem.title}get webSceneItemTitle(){if(this._webSceneItem)return this._webSceneItem.title}get title(){return this._title?this._title:this._webMapItem&&"map"===this.viewMode?this.webMapItemTitle:this._webSceneItem&&"scene"===this.viewMode?this.webSceneItemTitle:void 0}set title(e){this._title=e}get contextMenu(){return this._contextMenu}set contextMenu(e){this._contextMenu=e,e&&this.isInitialized&&!e.isInitialized&&(async()=>{try{await e.initialize()}catch(e){e instanceof Error&&log.error({message:"An error occurred while initializing context menu.",error:e})}})()}get _allLayerViews(){const e=t=>{const i=[t];return Collection.isCollection(t.sublayerViews)?i.push(...t.sublayerViews.toArray().flatMap(e)):Collection.isCollection(t.layerViews)&&i.push(...t.layerViews.toArray().flatMap(e)),i};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}getAllFeatureSources(e=(()=>!0)){const t=[],i=a=>{a.hasFeatures&&t.push(a);for(const t of a.sublayerExtensions.initializedItems.filter(e).toArray())s(t);if(isGroupLayerExtension(a))for(const t of a.layerExtensions.initializedItems.filter(e).toArray())i(t)},s=i=>{t.push(i);for(const t of i.sublayerExtensions.initializedItems.filter(e).toArray())s(t)};for(const t of this.layerExtensions.initializedItems.filter(e).toArray())i(t);for(const i of this.tableExtensions.initializedItems.filter(e).toArray())t.push(i);if(this.basemapExtension){for(const t of this.basemapExtension.baseLayerExtensions.initializedItems.filter(e).toArray())i(t);for(const t of this.basemapExtension.referenceLayerExtensions.initializedItems.filter(e).toArray())i(t)}return t}isSupportedViewMode(e){return e===this.viewMode||!(!this.webMap&&!this.webScene)&&("scene"===e?!!this.webScene:!!this.webMap)}async switchViewMode(e){if(checkArg("viewMode",e).isNotMissing().satisfies((e=>this.isSupportedViewMode(e)),"Unsupported view mode."),this.viewMode===e)return;let t;"scene"===e?(await this._createScene(),t=this._scene):(await this._createMap(),t=this._map),t.basemap=this.map.basemap,await this.switchMap(t),this.notifyChange("viewMode"),this.notifyChange("title")}async switchMap(e){if(checkArg("newMap",e).isNotMissing(),e===this.map)return;if(!this.map)return void this._setMap(e);this.isSwitchingMap=!0,this.isInitialized&&await load(e);const t=new Map;this.map.layers.forEach((e=>t.set(e,this.layerExtensions.forLayer(e))));const{basemapExtension:i}=this;this._setMap(e),this._updateBookmarks();const s=[];for(const e of this.map.layers.toArray()){const i=find(t.entries(),(([t])=>layersAreEquivalent(t,e)));if(i)s.push((async()=>{const t=i[1];await t._switchLayer(e),this._layerExtensions._register(t)})());else{const t=this._layerExtensions._forLayer(e);t?.layer!==e&&s.push(t._switchLayer(e))}}this.map.basemap&&i&&basemapsAreEquivalent(this.map.basemap,i.basemap)&&s.push((async()=>{await i._switchBasemap(this.map.basemap),this.basemapExtension=i})()),this.isInitialized&&s.push(this._initializeChildren()),await Promise.all(s),this.isSwitchingMap=!1}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new InvalidOperationError("Cannot unset both webMap and webScene.");this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=toPortalItem(e),await load(this._webMapItem),"map"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createMap(),await this.switchMap(this._map),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("scene")),this.notifyChange("webMap"),this.notifyChange("initialViewMode"),this.notifyChange("title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new InvalidOperationError("Cannot unset both webMap and webScene.");this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=toPortalItem(e),await load(this._webSceneItem),"scene"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createScene(),await this.switchMap(this._scene),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("map")),this.notifyChange("webScene"),this.notifyChange("initialViewMode"),this.notifyChange("title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{if(isPortalItem(this.webScene)){const e=new((await import("@arcgis/core/WebScene")).default);await this._loadAndApplyPortalItemData(this._webSceneItem,e),this._scene=e}else this._scene=await WebSceneJson.toEsriApiWebScene(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{if(isPortalItem(this.webMap)){const e=new((await import("@arcgis/core/WebMap")).default);await this._loadAndApplyPortalItemData(this._webMapItem,e),this._map=e}else this._map=await WebMapJson.toEsriApiWebMap(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t=("map"===this.viewMode?this._scene:this._map)?.layers.toArray()??[],i=e.filter((e=>!t.includes(e.layer)&&!t.some((t=>e.layer&&(LayerExtension._matchesRef(t,e.layer)||layersAreEquivalent(t,e.layer))))));_assignLayerExtensions(this.layerExtensions,i)}},serialize:e=>{if(this._deferredProperties?.layerExtensions)return this._deferredProperties.layerExtensions;{const t="map"===this.viewMode,i=(t?this._map:this._scene)?.layers.toArray();let s=(t?this._scene:this._map)?.layers.toArray()??[];return s=s.filter((e=>!i.find((t=>layersAreEquivalent(t,e))))),this.layerExtensions.concat(s.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>!(t instanceof UnsupportedLayerExtension||"initial"===e)||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?compare(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(isTableExtension(e)?e:TableExtension.create(e),t)},onMatch:(e,t,i,s)=>{isTableExtension(t)||e.assignProperties(t),i!==s&&this.tableExtensions.reorder(e,s)},equals:(e,t)=>isTableExtension(t)?t===e:!!TableExtension._matchesRef(e,t.table)||e.id===t.id}):this._deferredProperties={...this._deferredProperties,tableExtensions:e}},serialize:()=>this._deferredProperties?.tableExtensions?this._deferredProperties?.tableExtensions:this.tableExtensions.toArray()},basemapExtension:{serializeModes:["project"],deserialize:e=>{this.map?e?isBasemapExtension(e)?this.basemapExtension=e:this.basemapExtension?this.basemapExtension.assignProperties(e):this.basemapExtension=BasemapExtension.create(e):this.basemapExtension=void 0:this._deferredProperties={...this._deferredProperties,basemapExtension:e}},serialize:()=>this._deferredProperties?.basemapExtension?this._deferredProperties?.basemapExtension:this.basemapExtension},basemapOptions:{serializeModes:["initial"],deserialize:e=>{this._skipBasemapOptions?this._skipBasemapOptions=!1:(compare(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(isBasemapExtension(e)?e:BasemapExtension.create(e),t)},onMatch:(e,t,i,s)=>{isBasemapExtension(t)||e.assignProperties(t),i!==s&&this.basemapOptions.reorder(e,s)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(isBasemapExtension(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const i=e.toJSON();return basemapsAreEquivalent(i.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&parallelEach(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{this.map?isGroundExtension(e)?this.groundExtension=e:this.groundExtension.assignProperties(e):this._deferredProperties={...this._deferredProperties,groundExtension:e}},serialize:()=>this._deferredProperties?.groundExtension?this._deferredProperties?.groundExtension:this.groundExtension},bookmarks:{serialize:()=>this.bookmarks.map((e=>e.toJSON())).toArray(),deserialize:e=>{this.bookmarks.addMany(e.map((e=>isBookmark(e)?e:new Bookmark(e))))}},webMap:{serializeModes:["initial"],deserialize:!1},webScene:{serializeModes:["initial"],deserialize:!1},initialLayerPreset:"initial",initialViewMode:{serializeModes:["initial","project"],serialize:e=>"project"===e?this.viewMode:"scene"!==this.initialViewMode||!this.webScene&&this.webMap?"map":"scene",deserialize:e=>{this.viewMode!==e&&(this._deserializedViewMode=e),this._initialViewMode=e},isDefault:(e,t)=>"project"!==t&&"map"===e},formatSettings:"initial",constraints:"initial",title:"initial",onClick:"initial",onHover:"initial",onHoverEnd:"initial",onInitialized:"initial",onViewpointChanged:"initial",contextMenu:{serializeModes:["initial"],deserialize:e=>{e?isMenu(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=Menu.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>({operationalLayers:this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),tables:this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})))}),deserialize:e=>{if(this.map)if(isMap(e)||isWebMap(e)||isWebScene(e)){if(e!==this.map)throw new ArgumentError("properties.map","Property 'map' is read-only.")}else this._deserializedMapPromise=(async()=>{this._deserializedViewMode&&this.webMap&&this.webScene&&(this._deserializedViewModePromise=this.switchViewMode(this._deserializedViewMode),await this._deserializedViewModePromise,this._deserializedViewMode=void 0,this._deserializedViewModePromise=void 0),await this._applyMapProperties(e,this.map),this._deserializedMapPromise=void 0})();else this._deferredProperties={...this._deferredProperties,map:e}}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,i){await parallelEach(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let s=e;const a=this.basemapOptions.find((e=>basemapsAreEquivalent(e.basemap,s.baseMap)));a&&(t.basemap=a.basemap,s={...s,baseMap:{...s.baseMap,title:t.basemap.title}}),isWebScene(t)?await WebSceneJson.applyToEsriApiWebScene(s,t,i):await WebMapJson.applyToEsriApiMap(s,t,i)}_createFormatSettings(){return new FormatSettings}_createLayerExtensionCollection(){return new LayerExtensionCollectionImpl(this)}_createTableExtensionCollection(){return new TableExtensionCollectionImpl(this)}async _onInitialize(){await super._onInitialize();const{basemapExtension:e,basemapOptions:t,groundExtension:i,webMap:s,webScene:a,map:n,...r}=this._deferredProperties??{};if(t&&this.assignProperties({basemapOptions:t}),this.map||("scene"===this.initialViewMode?this._setMap(new((await import("@arcgis/core/WebScene")).default)):this._setMap(new((await import("@arcgis/core/WebMap")).default))),this.map.basemap&&this._onBasemapChange(),(s||a)&&await this._applyMapProperties("scene"===this.initialViewMode?a:s,this.map),e&&(this.assignProperties({basemapExtension:e}),await this.basemapExtension._createBackingBasemap()),i&&this.assignProperties({groundExtension:i}),this._webMapItem||this._webSceneItem){await Promise.all([load(this.map),load(this._webMapItem),load(this._webSceneItem)]),validatePortalItem(this._webMapItem,"webMap","Web Map"),validatePortalItem(this._webSceneItem,"webScene","Web Scene");const e=isWebScene(this.map)?this._webSceneItem:this._webMapItem;await this._loadAndApplyPortalItemData(e)}else await load(this.map);n&&await this._applyMapProperties(n,this.map),this.assignProperties(r),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks(),this.contextMenu&&await this.contextMenu.initialize();for(const e of this.layerExtensions.toArray())await e._createBackingLayer();await Promise.all(this.tableExtensions.map((e=>e._createBackingTable())).toArray())}async _postInitialize(){await super._postInitialize(),await this._createStandardBasemapOptions(),await parallelEach(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new Collection(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>{this.layerExtensions.remove(e)};const t=new Collection(this.tableExtensions.filter((e=>!!e.table)));if(t.remove=e=>{this.tableExtensions.remove(e)},yield e,yield t,this.basemapExtension){const e=new Collection;e.add(this.basemapExtension),yield e}const i=new Collection;i.add(this.groundExtension),yield i}_initMapFromProperties(e){const t=e.map;isMap(t)||isWebMap(t)||isWebScene(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!isPortalItem(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!isPortalItem(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){isWebScene(e)?this._scene=e:this._map=e,this._currentMap=e,this.basemapExtension?.basemap&&!e.basemap&&(e.basemap=this.basemapExtension.basemap),this.groundExtension?.ground&&!e.ground&&(e.ground=this.groundExtension.ground),this.notifyChange("map")}async _loadAndApplyPortalItemData(e,t){await load(e);const i=await e.fetchData();resolveRelativeHrefs(i,e),await this._inferLayerTypes(i),this.basemapExtension?.basemap&&!t&&delete i.baseMap,GroundExtension.isDefaultGround(this.groundExtension.ground)||t||delete i.ground;const s=t||this.map;await load(s),await this._applyMapProperties(i,s,e),s.portalItem=e;const{viewpoint:a,spatialReference:n}=s.initialViewProperties;a&&a.targetGeometry&&!a.targetGeometry.spatialReference.equals(n)&&(s.initialViewProperties.viewpoint.targetGeometry=(await project([a.targetGeometry],n))[0]),a&&a.camera&&(a.camera.position.spatialReference=n.clone())}_onBasemapChange(){if(this._basemapExtension){if(this.basemapExtension.basemap==this.map.basemap)return;this._basemapExtension._setMapExtension(void 0)}if(this.map.basemap){let e=this.basemapOptions.find((e=>e.basemap===this.map.basemap));e||(e=BasemapExtension.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0)),e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;this.notifyChange("basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.groundExtension.ground===this.map.ground)return void(this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,this.groundExtension));this.groundExtension._setMapExtension(void 0)}this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,new GroundExtension({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,this.notifyChange("groundExtension")}async _inferLayerTypes(e){const t=[];if(e.operationalLayers)for(const i of e.operationalLayers)t.push(this._inferLayerType(i));if(e.baseMap&&t.push(this._inferBasemapLayerTypes(e.baseMap)),e.hasOwnProperty("ground")&&t.push(this._inferGroundLayerTypes(e.ground)),e.presentation?.slides)for(const i of e.presentation.slides)i.baseMap&&"string"!=typeof i.baseMap&&t.push(this._inferBasemapLayerTypes(i.baseMap));await Promise.all(t)}async _inferBasemapLayerTypes(e){const t=[];if(e.baseMapLayers)for(const i of e.baseMapLayers)t.push(this._inferLayerType(i));await Promise.all(t)}async _inferGroundLayerTypes(e){const t=[];if(e.layers)for(const i of e.layers)t.push(this._inferLayerType(i));await Promise.all(t)}async _inferLayerType(e){if(!e.layerType)if(e.type)e.layerType=e.type;else if(e.url){const t=e.url;if(t.match(".*MapServer/\\d{1,}/?$")||t.match(".*FeatureServer/\\d{1,}/?$"))e.layerType="ArcGISFeatureLayer";else if(t.match(".*StreamServer/?$"))e.layerType="ArcGISStreamLayer";else if(t.match(".*ImageServer/?$")){const i=await this._getLayerData(t);i.cacheType?"Map"===i.cacheType?e.layerType="ArcGISTiledImageServiceLayer":"Elevation"===i.cacheType&&(e.layerType="ArcGISTiledElevationServiceLayer"):e.layerType="ArcGISImageServiceLayer"}else if(t.match(".*MapServer/?$")){const i=await this._getLayerData(t);e.layerType=i.tileInfo?"ArcGISTiledMapServiceLayer":"ArcGISMapServiceLayer"}else if(t.match(".*\\.(csv|txt)$"))e.layerType="CSV";else if(t.match(".*\\.kml$"))e.layerType="KML";else if(t.match(".*SceneServer/layers/\\d{1,}/?$")){const i=await this._getLayerData(t);"3DObject"===i.layerType?e.layerType="ArcGISSceneServiceLayer":"IntegratedMesh"===i.layerType?e.layerType="IntegratedMeshLayer":"PointCloud"===i.layerType&&(e.layerType="PointCloudLayer")}else t.match(".*(\\.xml|rss/?)$")&&(e.layerType="GeoRSS")}else if(e.layers){e.layerType="GroupLayer";const t=[];for(const i of e.layers)t.push(this._inferLayerType(i));await Promise.all(t)}else e.templateUrl&&e.tileInfo?e.layerType="WebTiledLayer":e.featureCollection?e.layerType="ArcGISFeatureLayer":e.styleUrl?e.layerType="VectorTileLayer":e.mapUrl&&(e.layerType="WMS")}async _getLayerData(e){const t=await this.requestHelper.request(e,{query:{f:"json"}});if(!t||!t.data)throw new Error(`Response to request for url ${e} was invalid.`);return t.data}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e&&e.isWebMercator&&await parallelEach([WellKnownBasemap.SATELLITE,WellKnownBasemap.HYBRID_VECTOR,WellKnownBasemap.STREETS_VECTOR,WellKnownBasemap.TOPO_VECTOR,WellKnownBasemap.STREETS_NAVIGATION_VECTOR,WellKnownBasemap.STREETS_NIGHT_VECTOR,WellKnownBasemap.TERRAIN_VECTOR,WellKnownBasemap.DARK_GRAY_VECTOR,WellKnownBasemap.GRAY_VECTOR,WellKnownBasemap.OCEANS_VECTOR,WellKnownBasemap.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await createStandardBasemap(e);basemapsAreEquivalent(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(BasemapExtension.create({basemap:t}),void 0,!1)}))}_ensureIsBasemapOption(e){const t=this.basemapOptions.findIndex((t=>t.basemap===e.basemap));t>=0?this._basemapOptions.getItemAt(t)!==e&&(this._basemapOptions.removeAtInternal(t),this._basemapOptions.addInternal(e,t)):this._basemapOptions.addInternal(e,0)}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),isWebMap(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new Bookmark({source:"map",title:e.name,viewpoint:e.viewpoint}))})):isWebScene(this.map)&&this.map.presentation?.slides?.length>0&&this.map.presentation.slides.forEach((e=>{const t={source:"map",title:e.title.text,viewpoint:e.viewpoint},i=new Bookmark(t);this.bookmarks.add(i)}))}};MapExtension=__decorate([serializable],MapExtension);export{MapExtension};class LayerExtensionCollectionImpl extends LayerExtensionCollectionBase{constructor(e){super(e,"map.layers")}get _mapExtension(){return this._parent}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(ItemType.LAYER_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}}class BasemapExtensionCollection extends InitializableCollectionProxy{constructor(e){super(new Collection),this.isExplicitlyModified=!1,this._mapExtension=e}add(e,t){super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e)}addMany(e,t){super.addMany(e,t),this.isExplicitlyModified=!0}addInternal(e,t,i=!0){const s=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-t.length):e};let a;if(e.basemap){const t=s(e.basemap.id);if(a=this.findIndex((e=>s(e.basemap?.id)===t)),isStandardBasemap(e.basemap)&&a>=0){if(!i)return;super.removeAt(a)}}super.add(e,t??(a>=0?a:void 0))}removeAt(e){const t=super.removeAt(e);return t&&(this.isExplicitlyModified=!0,t===this._mapExtension.basemapExtension&&(e<this.length?this._mapExtension.basemapExtension=this.getItemAt(e):this.length?this._mapExtension.basemapExtension=this.getItemAt(e-1):this._mapExtension.basemapExtension=void 0)),t}removeAll(){this._mapExtension.basemapExtension=void 0,super.removeAll()}removeAtInternal(e){return super.removeAt(e)}removeAllInternal(){for(;this.length;)this.removeAtInternal(this.length-1)}reorder(e,t){return super.reorder(e,t),this.isExplicitlyModified=!0,e}reorderInternal(e,t){return super.reorder(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.basemap}}class TableExtensionCollectionImpl extends InitializableCollectionProxy{constructor(e){super(),this._tableExtensionMap=new WeakMap,this._uninitializedTableExtensions=new Set,this._mapExtension=e,onCollectionPropertyChange(this._mapExtension,"map.tables",(e=>{const t={added:(e.added||[]).map((e=>this._forTable(e))),moved:(e.moved||[]).map((e=>this._forTable(e))),removed:(e.removed||[]).map((e=>this._forTable(e))),target:this};this.emit("change",t)})),this._mapExtension.watch("map.tables.length",(()=>this.notifyChange("length")))}get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new ReadOnlyCollection(new Collection)}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(ItemType.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new TableExtensionCollectionImpl(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.table.id===e))}forTable(e){if(checkArg("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(checkArg("tableX",e).isNotMissing(),e.mapExtension&&e.mapExtension.tableExtensions.remove(e),e._setMapExtension(this._mapExtension),e.table){const i=this._tableExtensionMap.get(e.table);if(this._tableExtensionMap.set(e.table,e),i&&i!==e&&this._onRemoved(i),this._tables.includes(e.table))if(void 0===t){const t={added:[e],moved:[],removed:i?[i]:[],target:this};this.emit("change",t)}else this._tables.reorder(e.table,t);else this._tables.add(e.table,t)}else{this._uninitializedTableExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("change",t)}this._onAdded(e)}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedTableExtensions.has(t)){this._uninitializedTableExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("change",e)}else this._tables.remove(t.table);return this._onRemoved(t),t}}reorder(e,t){if(e&&this._tables.includes(e.table))return this._tables.reorder(e.table,t),e}sort(e){this._tables.sort(((t,i)=>e(this._forTable(t),this._forTable(i))))}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.table}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}_forTable(e){for(const e of this._uninitializedTableExtensions)e._resolveTable(),e.table&&(this._tableExtensionMap.set(e.table,e),this._uninitializedTableExtensions.delete(e));if(!this._tableExtensionMap.has(e)){const t=TableExtension.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class AllLayerExtensionCollectionImpl extends ReadOnlyInitializableCollection{constructor(e){super(),this._mapExtension=e}get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[]));return this._mapExtension.basemapExtension&&(e=e.concat(this._mapExtension.basemapExtension.baseLayerExtensions.toArray()).concat(this._mapExtension.basemapExtension.referenceLayerExtensions.toArray())),e=e.concat(this._mapExtension.groundExtension.layerExtensions.toArray()),e}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.layer.id===e))}forLayer(e){return checkArg("layer",e).isNotMissing(),this.findByLayerId(e.id)}emit(e,t){if("change"===e){const i=new Collection;i.addMany(t.added);const s=i.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[])).toArray(),a=new Collection;a.addMany(t.removed);const n=a.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[])).toArray(),r=new Collection;r.addMany(t.moved);const o=r.flatten((e=>isGroupLayerExtension(e)?e.layerExtensions:[])).toArray();super.emit(e,{added:s,removed:n,moved:o,target:this})}return super.emit(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function toPortalItem(e){if("object"!=typeof e||!e||!e.baseMap)return toPortalItemBase(e)}function isPortalItem(e){return"object"!=typeof e||e&&!e.baseMap}function validatePortalItem(e,t,i){if(e?.type&&e.type!==i)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}
@@ -1 +1 @@
1
- import{__decorate}from"tslib";import AttachmentQuery from"@arcgis/core/rest/support/AttachmentQuery";import{InvalidOperationError}from"../InvalidOperationError.js";import{toAttachment}from"../data/Attachment.js";import{toGraphic}from"../data/Feature.js";import{FeatureSaveError}from"../data/FeatureSaveError.js";import{addAttachment,deleteAttachments}from"../data/support/attachments.js";import{Layer as PortalLayer}from"../portal/Layer.js";import{cancelify}from"../support/Cancellable.js";import{serializable}from"../support/Serializable.js";import{ArcGISRelationshipCollection}from"../support/_ArcGISRelationshipCollection.js";import{executeQuery}from"../support/_query.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{isFeatureLayer,isSubtypeGroupLayer,isSubtypeSublayer}from"../utilities/layers.js";import{parse}from"../utilities/number.js";import{SublayerExtension,SublayerSchema}from"./_SublayerExtension.js";import{ArrayWrappedCollection}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings}from"./support/PopupTemplateFeatureSettings.js";import{getGlobalIdField,isGlobalIdUsed}from"./support/layers.js";let SubtypeSublayerExtension=class extends SublayerExtension{get supportsSublayers(){return!1}get layerExtension(){return super.layerExtension}get renderer(){return this.sublayer?.renderer}get hasFeatures(){return!0}get sublayer(){return super.sublayer}get sublayerExtensions(){return super.sublayerExtensions}get attachmentTypes(){return this.layerExtension?.attachmentTypes}get canChangeRenderer(){return!0}get canChangeOpacity(){return!1}async _addAttachment(e,t){return addAttachment(e,this.sublayer.layer,t,{attachmentTypes:this.layerExtension?.attachmentTypes})}async _deleteAttachments(e,t){return deleteAttachments(e,this.sublayer.layer,t)}_isSupportedSublayer(e){return isSubtypeSublayer(e)}_createLayerListSettings(e){return new SubtypeSublayerExtensionLayerListSettings(e,this)}_createFeatureSettings(){return new SubtypeSublayerFeatureSettings(this)}_createSublayer(e){return PortalLayer.toEsriApiSublayer(e,"ArcGISSubtypeGroupLayer")}_createSchema(){return new SubtypeSublayerSchema(this)}_createRelationships(){return new SubtypeSublayerRelationshipCollection(this)}async _applySublayerProperties(e,t){return PortalLayer.applyToEsriApiSublayer(e,t)}_capabilities(){return this.layerExtension?.capabilities}async _onInitialize(){await super._onInitialize(),await this.relationships.initialize(),this._watchHandles.push(this.watch("layerExtension.attachmentTypes",(()=>this._notifyChange("attachmentTypes"))))}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized()}_getFeatures(e,t){if(!this.sublayer?.layer)return super._getFeatures(e,t);const r=this.sublayer?.layer.createQuery();return r.objectIds=e.map((e=>parse(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,executeQuery(r,this,this.sublayer.layer,t.cancelToken)}async _getAttachments(e){if(!this.sublayer?.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=new AttachmentQuery({objectIds:[t]}),a=await this.sublayer.layer.queryAttachments(r);return a?.[t]?.length?a[t].map((e=>toAttachment(e,e.url))):[]}async _addFeatures(e,t){const r=Array.from(e);if(0===r.length||!this.sublayer?.layer)return;const a=await this._applyEdits({addFeatures:r.map(toGraphic)},t);if(!a.addFeatureResults||a.addFeatureResults.length!==r.length)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let s;if(a.addFeatureResults.forEach(((e,t)=>{const{objectId:a,globalId:i,error:l}=e,n=r[t];if(l){s=s||new FeatureSaveError("Errors encountered when adding features.");const{title:r}=n;s.errors.set(`${r}-${t}`,new Error(`Failed to add feature '${r}'. ${e.error.name} : ${e.error.message}`))}else{const{primaryKeyField:e}=n.schema;n.attributes.set(e,a);const t=getGlobalIdField(this.sublayer.layer);t&&i&&n.attributes.set(t,i)}})),s)throw s}async _updateFeatures(e,t){const r=Array.from(e);if(0===r.length)return;const a=await this._applyEdits({updateFeatures:Array.from(e).map(toGraphic)},t);if(!a.updateFeatureResults||a.updateFeatureResults.length!==r.length)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let s;if(a.updateFeatureResults.forEach(((e,t)=>{if(e.error){s=s||new FeatureSaveError("Errors encountered when updating features.");const{primaryKey:a}=r[t];s.errors.set(a,new Error(`Failed to update feature with id ${a}. ${e.error.name} : ${e.error.message}`))}})),s)throw s}async _deleteFeatures(e,t){if(0===e.length)return;const r=await this._applyEdits({deleteFeatures:e.map((e=>({objectId:e})))},t);if(!r.deleteFeatureResults)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let a;if(r.deleteFeatureResults.forEach(((t,r)=>{if(t.error){a=a||new FeatureSaveError("Errors encountered when deleting features.");const s=e[r];a.errors.set(s,new Error(`Failed to delete feature with id ${s}. ${t.error.name} : ${t.error.message}`))}})),a)throw a}_serializeSublayer(e){return PortalLayer.fromEsriApiSublayer(e)}async _applyEdits(e,t={}){const r=isGlobalIdUsed(this.sublayer.layer,e),a=this.sublayer.layer.applyEdits(e,{globalIdUsed:r}),s=await cancelify(a,t.cancelToken);if(!s)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");return s}};SubtypeSublayerExtension=__decorate([serializable],SubtypeSublayerExtension);export{SubtypeSublayerExtension};const ERR_SCHEMA_READ_ONLY="This schema property is read-only.";let SubtypeSublayerSchema=class extends SublayerSchema{constructor(e){super(e),this._fieldCollection=this._createFieldCollection()}get primaryKeyField(){return this._sublayerExtension.sublayer?.layer?.objectIdField}set primaryKeyField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get geometryType(){return this._sublayerExtension.sublayer?.layer?.geometryType}set geometryType(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get displayField(){return this._sublayerExtension.sublayer?.layer?.displayField}set displayField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get typeIdField(){return this._sublayerExtension.sublayer?.layer?.typeIdField}set typeIdField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get _fields(){return this._fieldCollection}_createFieldCollection(){return new ReadOnlyCollection(new ArrayWrappedCollection({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"layer.fields"}))}_getPropertyBindings(){return{primaryKeyField:"layer.objectIdField",geometryType:"layer.geometryType",spatialReference:"layer.spatialReference",displayField:"layer.displayField",typeIdField:"layer.typeIdField"}}};SubtypeSublayerSchema=__decorate([serializable],SubtypeSublayerSchema);export{SubtypeSublayerSchema};let SubtypeSublayerFeatureSettings=class extends PopupTemplateFeatureSettings{get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.sublayer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};SubtypeSublayerFeatureSettings=__decorate([serializable],SubtypeSublayerFeatureSettings);let SubtypeSublayerExtensionLayerListSettings=class extends ExtensionBaseLayerListSettings{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};SubtypeSublayerExtensionLayerListSettings=__decorate([serializable],SubtypeSublayerExtensionLayerListSettings);export class SubtypeSublayerRelationshipCollection extends ArcGISRelationshipCollection{get _sourceUrl(){const e=this._source.sublayer?.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.sublayer?.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.layerExtension?.mapExtension||!this._source.sublayer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.layerExtension.mapExtension.layerExtensions.initializedItems.find((r=>(isFeatureLayer(r.layer)||isSubtypeGroupLayer(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.layerExtension.mapExtension.tableExtensions.initializedItems.find((r=>isFeatureLayer(r.table)&&r.table.url===t&&r.table.layerId===e))}}
1
+ import{__decorate}from"tslib";import AttachmentQuery from"@arcgis/core/rest/support/AttachmentQuery";import{InvalidOperationError}from"../InvalidOperationError.js";import{toAttachment}from"../data/Attachment.js";import{toGraphic}from"../data/Feature.js";import{FeatureSaveError}from"../data/FeatureSaveError.js";import{addAttachment,deleteAttachments}from"../data/support/attachments.js";import{Layer as PortalLayer}from"../portal/Layer.js";import{cancelify}from"../support/Cancellable.js";import{serializable}from"../support/Serializable.js";import{ArcGISRelationshipCollection}from"../support/_ArcGISRelationshipCollection.js";import{executeQuery}from"../support/_query.js";import{ReadOnlyCollection}from"../utilities/ReadOnlyCollection.js";import{isFeatureLayer,isSubtypeGroupLayer,isSubtypeSublayer}from"../utilities/layers.js";import{parse}from"../utilities/number.js";import{SublayerExtension,SublayerSchema}from"./_SublayerExtension.js";import{ArrayWrappedCollection}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings}from"./support/PopupTemplateFeatureSettings.js";import{getGlobalIdField,isGlobalIdUsed}from"./support/layers.js";let SubtypeSublayerExtension=class extends SublayerExtension{get supportsSublayers(){return!1}get layerExtension(){return super.layerExtension}get renderer(){return this.sublayer?.renderer}get hasFeatures(){return!0}get sublayer(){return super.sublayer}get sublayerExtensions(){return super.sublayerExtensions}get attachmentTypes(){return this.layerExtension?.attachmentTypes}get canChangeRenderer(){return!0}get canChangeOpacity(){return!1}async _addAttachment(e,t){return addAttachment(e,this.sublayer.layer,t,{attachmentTypes:this.layerExtension?.attachmentTypes})}async _deleteAttachments(e,t){return deleteAttachments(e,this.sublayer.layer,t)}_isSupportedSublayer(e){return isSubtypeSublayer(e)}_createLayerListSettings(e){return new SubtypeSublayerExtensionLayerListSettings(e,this)}_createFeatureSettings(){return new SubtypeSublayerFeatureSettings(this)}_createSublayer(e){return PortalLayer.toEsriApiSublayer(e,"ArcGISSubtypeGroupLayer")}_createSchema(){return new SubtypeSublayerSchema(this)}_createRelationships(){return new SubtypeSublayerRelationshipCollection(this)}async _applySublayerProperties(e,t){return PortalLayer.applyToEsriApiSublayer(e,t)}_capabilities(){return this.layerExtension?.capabilities}async _onInitialize(){await super._onInitialize(),await this.relationships.initialize(),this._watchHandles.push(this.watch("layerExtension.attachmentTypes",(()=>this.notifyChange("attachmentTypes"))))}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized()}_getFeatures(e,t){if(!this.sublayer?.layer)return super._getFeatures(e,t);const r=this.sublayer?.layer.createQuery();return r.objectIds=e.map((e=>parse(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,executeQuery(r,this,this.sublayer.layer,t.cancelToken)}async _getAttachments(e){if(!this.sublayer?.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=new AttachmentQuery({objectIds:[t]}),a=await this.sublayer.layer.queryAttachments(r);return a?.[t]?.length?a[t].map((e=>toAttachment(e,e.url))):[]}async _addFeatures(e,t){const r=Array.from(e);if(0===r.length||!this.sublayer?.layer)return;const a=await this._applyEdits({addFeatures:r.map(toGraphic)},t);if(!a.addFeatureResults||a.addFeatureResults.length!==r.length)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let s;if(a.addFeatureResults.forEach(((e,t)=>{const{objectId:a,globalId:i,error:l}=e,n=r[t];if(l){s=s||new FeatureSaveError("Errors encountered when adding features.");const{title:r}=n;s.errors.set(`${r}-${t}`,new Error(`Failed to add feature '${r}'. ${e.error.name} : ${e.error.message}`))}else{const{primaryKeyField:e}=n.schema;n.attributes.set(e,a);const t=getGlobalIdField(this.sublayer.layer);t&&i&&n.attributes.set(t,i)}})),s)throw s}async _updateFeatures(e,t){const r=Array.from(e);if(0===r.length)return;const a=await this._applyEdits({updateFeatures:Array.from(e).map(toGraphic)},t);if(!a.updateFeatureResults||a.updateFeatureResults.length!==r.length)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let s;if(a.updateFeatureResults.forEach(((e,t)=>{if(e.error){s=s||new FeatureSaveError("Errors encountered when updating features.");const{primaryKey:a}=r[t];s.errors.set(a,new Error(`Failed to update feature with id ${a}. ${e.error.name} : ${e.error.message}`))}})),s)throw s}async _deleteFeatures(e,t){if(0===e.length)return;const r=await this._applyEdits({deleteFeatures:e.map((e=>({objectId:e})))},t);if(!r.deleteFeatureResults)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");let a;if(r.deleteFeatureResults.forEach(((t,r)=>{if(t.error){a=a||new FeatureSaveError("Errors encountered when deleting features.");const s=e[r];a.errors.set(s,new Error(`Failed to delete feature with id ${s}. ${t.error.name} : ${t.error.message}`))}})),a)throw a}_serializeSublayer(e){return PortalLayer.fromEsriApiSublayer(e)}async _applyEdits(e,t={}){const r=isGlobalIdUsed(this.sublayer.layer,e),a=this.sublayer.layer.applyEdits(e,{globalIdUsed:r}),s=await cancelify(a,t.cancelToken);if(!s)throw new FeatureSaveError("Received malformed response from server while saving feature(s).");return s}};SubtypeSublayerExtension=__decorate([serializable],SubtypeSublayerExtension);export{SubtypeSublayerExtension};const ERR_SCHEMA_READ_ONLY="This schema property is read-only.";let SubtypeSublayerSchema=class extends SublayerSchema{constructor(e){super(e),this._fieldCollection=this._createFieldCollection()}get primaryKeyField(){return this._sublayerExtension.sublayer?.layer?.objectIdField}set primaryKeyField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get geometryType(){return this._sublayerExtension.sublayer?.layer?.geometryType}set geometryType(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get displayField(){return this._sublayerExtension.sublayer?.layer?.displayField}set displayField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get typeIdField(){return this._sublayerExtension.sublayer?.layer?.typeIdField}set typeIdField(e){throw new InvalidOperationError(ERR_SCHEMA_READ_ONLY)}get _fields(){return this._fieldCollection}_createFieldCollection(){return new ReadOnlyCollection(new ArrayWrappedCollection({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"layer.fields"}))}_getPropertyBindings(){return{primaryKeyField:"layer.objectIdField",geometryType:"layer.geometryType",spatialReference:"layer.spatialReference",displayField:"layer.displayField",typeIdField:"layer.typeIdField"}}};SubtypeSublayerSchema=__decorate([serializable],SubtypeSublayerSchema);export{SubtypeSublayerSchema};let SubtypeSublayerFeatureSettings=class extends PopupTemplateFeatureSettings{get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.sublayer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};SubtypeSublayerFeatureSettings=__decorate([serializable],SubtypeSublayerFeatureSettings);let SubtypeSublayerExtensionLayerListSettings=class extends ExtensionBaseLayerListSettings{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};SubtypeSublayerExtensionLayerListSettings=__decorate([serializable],SubtypeSublayerExtensionLayerListSettings);export class SubtypeSublayerRelationshipCollection extends ArcGISRelationshipCollection{get _sourceUrl(){const e=this._source.sublayer?.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.sublayer?.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.layerExtension?.mapExtension||!this._source.sublayer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.layerExtension.mapExtension.layerExtensions.initializedItems.find((r=>(isFeatureLayer(r.layer)||isSubtypeGroupLayer(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.layerExtension.mapExtension.tableExtensions.initializedItems.find((r=>isFeatureLayer(r.table)&&r.table.url===t&&r.table.layerId===e))}}
@@ -1 +1 @@
1
- import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{isSublayerExtension,ItemType}from"../ItemType.js";import{FeatureSourceBase}from"../data/FeatureSourceBase.js";import{Schema}from"../data/Schema.js";import{serializable}from"../support/Serializable.js";import{isBuildingComponentSublayer,isBuildingGroupSublayer,isKMLSublayer,isMapImageSublayer,isSubtypeSublayer,isTileLayer,isWMSSublayer,isWMTSSublayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{compare}from"../utilities/collection.js";import{load}from"../utilities/esri.js";import{getLogger}from"../utilities/log.js";import{parse}from"../utilities/number.js";import{deepClone}from"../utilities/object.js";import{onCollectionPropertyChange,watchCollectionPropertyEach}from"../utilities/watch.js";import{fromLayerListMode,LayerListSettings}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const log=getLogger("SublayerExtension"),ERR_INVALID_SUBLAYER_TYPE="Invalid type of sublayer for this type of sublayer extension.",ERR_FEATURES_NOT_SUPPORTED="This type of layer does not have features.",ERR_SUBLAYERX_NOT_SUPPORTED="This type of sublayer extension cannot have child sublayer extensions.",DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1});export function getSublayerType(e){if(isMapImageSublayer(e))return isTileLayer(e?.layer)?"ArcGISTiledSublayer":"ArcGISMapServiceSublayer";if(isKMLSublayer(e))return"KMLSublayer";if(isWMTSSublayer(e))return"WMTSSublayer";if(isWMSSublayer(e))return"WMSSublayer";if(isBuildingComponentSublayer(e))return"BuildingComponentSublayer";if(isBuildingGroupSublayer(e))return"BuildingGroupSublayer";if(isSubtypeSublayer(e))return"SubtypeSublayer";throw new Error(`Unknown sublayer type for ESRI sublayer: ${e}`)}export class SublayerExtension extends FeatureSourceBase{constructor(e){super(e),this._itemType=ItemType.SUBLAYER_EXTENSION,this._watchHandles=[],this._onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){log.error({message:`Error occurred while initializing sublayer extension for sublayer '${e.title??e.sublayer.id??e.id}'.`,error:t})}},this._onSetSublayerVisible=e=>{if("inherited"===this.visibilityMode&&this.supportsSublayers&&this.sublayerExtensions)for(const t of this.sublayerExtensions.toArray())t.sublayer&&t.canToggleVisibility&&(t.sublayer.visible=e);this.notifyChange("isEffectivelyVisible")},this._onSetSublayersSublayerVisible=(e,t,i,s)=>{e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(s)},this._onSublayersChange=e=>{e.added?.length&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])};const t=e||{};this._visibilityMode=this.canToggleVisibility?"independent":"inherited",this._sublayerExtensions=this._createSublayerExtensionCollection();const i=t.sublayer;let s;i?.hasOwnProperty("listMode")&&(s=fromLayerListMode(i.listMode)),this.layerListSettings=this._createLayerListSettings({...s,...t.layerListSettings}),isSublayer(i)?(checkArg("properties.sublayer",i).satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this._setSublayer(i)):i&&(this._deferredSublayerProperties=i),this.watch("parentSublayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))}get sublayer(){return this._sublayer}get layerExtension(){return this._layerExtension}get parentSublayerExtension(){return this._parentSublayerExtension}get hasFeatures(){return!1}get sublayerExtensions(){return this._sublayerExtensions}get renderer(){}get visibilityMode(){return this.canToggleVisibility?this._visibilityMode:"inherited"}set visibilityMode(e){checkArg("visibilityMode",e).satisfies((e=>this.canToggleVisibility||"inherited"===e),'Sublayers of this type only support a visibility mode of "inherited".'),this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get capabilities(){return this._capabilities()}get effectiveMinScale(){const e=this.sublayer?this.sublayer.minScale:0;if(this.parentSublayerExtension){const t=this.parentSublayerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}if(this.layerExtension){const t=this.layerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}return e}get effectiveMaxScale(){const e=this.sublayer?this.sublayer.maxScale:0;return this.parentSublayerExtension&&this.parentSublayerExtension.effectiveMaxScale>e?this.parentSublayerExtension.effectiveMaxScale:this.layerExtension&&this.layerExtension.effectiveMaxScale>e?this.layerExtension.effectiveMaxScale:e}get isEffectivelyVisible(){const e=!!this.sublayer&&this.sublayer.visible;return this.parentSublayerExtension?this.parentSublayerExtension.isEffectivelyVisible&&e:this.layerExtension?this.layerExtension.isEffectivelyVisible&&e:e}get title(){return this.sublayer?.title??("string"==typeof this._deferredSublayerProperties?.$ref||"number"==typeof this._deferredSublayerProperties?.$ref?this._deferredSublayerProperties?.$ref.toString():this._deferredSublayerProperties?.$ref?.title??this._deferredSublayerProperties?.$ref?.id.toString())??"Sublayer"}get supportsSublayers(){return!1}get canToggleVisibility(){return!0}get canChangeOpacity(){return!0}get canChangeScale(){return!0}get canChangeRenderer(){return!1}get canChangeLabels(){return!1}get _layerSupportsHideChildren(){return!1}get _sublayers(){if(this.supportsSublayers)return this.sublayer?.sublayers}get effectiveFullExtent(){return this._effectiveFullExtent?this._effectiveFullExtent:this.parentSublayerExtension?this.parentSublayerExtension.effectiveFullExtent:this.layerExtension?this.layerExtension.effectiveFullExtent:void 0}get initialVisibility(){return this._initialVisibility??this.sublayer?.visible??!1}static create(e){if(!SublayerExtension.factory)throw new InvalidOperationError("Cannot create sublayer extension: no sublayer extension factory has been registered.");return SublayerExtension.factory.create(e)}static _matchesRef(e,t,i){if(!e||!t)return!1;let s=t.$ref;if("string"==typeof s){const e=parse(s);s={id:isNaN(e)?s:e,title:s}}else"number"==typeof s&&(s={id:s});return"both"===i?e.id===s.id&&e.title===s.title:"by-id"===i?e.id===s.id:"by-title"===i&&e.title===s.title}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)}_resolveSublayer(){if(this._sublayer||!this._deferredSublayerProperties||!this.layerExtension||!this.layerExtension.layer||!this.layerExtension.layer.sublayers)return;const e=e=>t=>SublayerExtension._matchesRef(t,this._deferredSublayerProperties,e),t=this.layerExtension.layer.sublayers.flatten((e=>e.sublayers));let i=t.find(e("both"));if(i||(i=t.find(e("by-title"))),i||(i=t.find(e("by-id"))),i&&this._isSupportedSublayer(i)){this._setSublayer(i);const e={sublayer:this._deferredSublayerProperties};this.assignProperties(e),this._originalRef=this._deferredSublayerProperties.$ref,this._deferredSublayerProperties=void 0}}_setLayerExtension(e){const t=this.layerExtension;this._layerExtension=e,this.layerExtension&&(this.layerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.layerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layerExtension.watch("isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))),this._parentSublayerExtension||(t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings))),this._resolveSublayer(),this.notifyChange("layerExtension"),this._sublayerExtensions.onLayerExtensionChanged()}_setParentSublayerExtension(e){const t=this._parentSublayerExtension;this._parentSublayerExtension=e,this.parentSublayerExtension&&(this.parentSublayerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.parentSublayerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale")))),t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.layerExtension?this.layerExtension.featureSettings.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=this.layerExtension?this.layerExtension.taskSettings:void 0)),e&&((!this.featureSettings.formatSettings.parent||this.layerExtension&&this.featureSettings.formatSettings.parent===this.layerExtension.featureSettings.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),(!this.taskSettings.parent||this.layerExtension&&this.taskSettings.parent===this.layerExtension.taskSettings)&&(this.taskSettings.parent=e.taskSettings)),this._resolveSublayer(),this.notifyChange("parentSublayerExtension")}async _switchSublayer(e){if(e===this.sublayer)return;checkArg("newSublayer",e).isNotMissing().satisfies((e=>e.id===this.sublayer.id),"Sublayer ID must match existing sublayer.").satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this.isInitialized&&await load(e);const t=new Map;if(this.sublayer?.sublayers)for(const e of this.sublayer.sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));this.canToggleVisibility&&(e.visible=this.sublayer.visible),this.canChangeOpacity&&(e.opacity=this.sublayer.opacity),this._setSublayer(e);const i=[];if(this.sublayer.sublayers){const e=this.sublayer.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)}async _postInitialize(){await super._postInitialize(),this._watchHandles.push(onCollectionPropertyChange(this,"sublayer.sublayers",(async e=>{const t=(e.added??[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(t.map(this._onSublayerAddedPostInitialize))})))}async _onDestroy(){this._watchHandles.forEach((e=>e?.remove())),await Promise.all(this.sublayerExtensions.toArray().map((e=>e.destroy()))),await super._onDestroy()}_getSerializableProperties(){return{...super._getSerializableProperties(),iconUrl:"initial",visibilityMode:{serializeModes:["initial"],default:this.canToggleVisibility?"independent":"inherited"},layerListSettings:"initial",sublayerExtensions:{serializeModes:["initial","project"],serialize:()=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{_assignSublayerExtensions(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},sublayer:{serializeModes:["initial","project"],serialize:()=>{if(this.sublayer){if(!this._layerExtension)return this._serializeSublayer(this._sublayer);{const e=getSublayerType(this._sublayer);if(this._originalRef)return{$ref:this._originalRef,$sublayerType:e};if(this._sublayer.title||this._sublayer.id)return{...this._createSublayerRef(),$sublayerType:e}}}else if(this._deferredSublayerProperties)return deepClone(this._deferredSublayerProperties)},deserialize:e=>{if(isSublayer(e)){if(e!==this.sublayer)throw new Error("Property 'sublayer' is read-only.")}else this._sublayer?this._applySublayerProperties(e,this._sublayer):this._deferredSublayerProperties&&(this._deferredSublayerProperties={...this._deferredSublayerProperties,...e})}},requestHelper:{serialize:!1}}}_createSublayerExtension(e){throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED)}_createSchema(){return new SublayerSchema(this)}_createLayerListSettings(e){return new LayerListSettings(e)}_capabilities(){return DEFAULT_CAPABILITIES}async _onInitialize(){if(await super._onInitialize(),this._sublayer||this._deferredSublayerProperties&&this._deferredSublayerProperties?.$ref||(this._setSublayer(await this._createSublayer(this._deferredSublayerProperties)),this._deferredSublayerProperties=void 0),this._resolveSublayer(),!this._sublayer){const e=this._deferredSublayerProperties?.$ref;if(!this._layerExtension)throw new InvalidOperationError("Cannot resolve sublayer reference: missing parent layer extension.");throw new InvalidOperationError(`No sublayer found matching reference "${e}".`)}this._initialVisibility=this.sublayer.visible,this._sublayerExtensions.onParentInitialized()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}_createSublayerRef(){return{$ref:{id:this._sublayer.id,title:this._sublayer.title}}}_createSublayerExtensionCollection(){return new SubSublayerExtensionCollection(this)}_watchSublayerProperties(){this._watchHandles.push(this.sublayer.watch("minScale",(()=>this._notifyChange("effectiveMinScale")),!0),this.sublayer.watch("maxScale",(()=>this._notifyChange("effectiveMaxScale")),!0))}_setSublayer(e){this._sublayer=e,this._watchHandles.push(e.watch("visible",this._onSetSublayerVisible,!0)),this.supportsSublayers&&this._watchHandles.push(onCollectionPropertyChange(e,"sublayers",this._onSublayersChange,!0),watchCollectionPropertyEach(e,"sublayers","visible",this._onSetSublayersSublayerVisible,!0)),this._onSetSublayerVisible(this.sublayer.visible),"exclusive"===this.visibilityMode&&this._ensureAtMostOneChildSublayerVisible(),this._watchSublayerProperties(),this.notifyChange("sublayer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.sublayer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}let SublayerSchema=class extends Schema{constructor(e){super(),this._sublayerBindings=new Map,this._sublayerExtension=e,this._bindSettingsToSublayerProperties()}get spatialReference(){if(this._sublayerExtension.layerExtension)return this._sublayerExtension.layerExtension.schema.spatialReference}set spatialReference(e){throw new InvalidOperationError("Cannot set sublayer schema spatial reference.")}_getPropertyBindings(){return{}}_bindSettingsToSublayerProperties(){const e=this._getPropertyBindings();for(const t of Object.keys(e)){let i=e[t];"string"==typeof i&&(i={property:i}),this._sublayerBindings.set(t,i),i.hasOwnProperty("value")||this._sublayerExtension.watch(`sublayer.${i.property}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}};SublayerSchema=__decorate([serializable],SublayerSchema);export{SublayerSchema};export class SubSublayerExtensionCollection extends SublayerExtensionCollectionBase{constructor(e){super(e,"sublayer.sublayers")}get _layerExtension(){return this._parent.layerExtension}add(e,t){if(checkArg("sublayerX",e).isNotMissing(),!this._parent.supportsSublayers)throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED);e.sublayer&&this._parent.sublayer&&!this._parent.sublayer.sublayers&&(this._parent.sublayer.sublayers=[]),e.parentSublayerExtension&&e.parentSublayerExtension.sublayerExtensions.remove(e),super.add(e,t)}_onAdded(e){super._onAdded(e),e._setParentSublayerExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setParentSublayerExtension(void 0)}}export function _assignSublayerExtensions(e,t,i){compare(e,t,{onNew:(t,s)=>{e.add(isSublayerExtension(t)?t:i(t),isSublayerRef(t)?void 0:s)},onMatch:(t,i,s,r)=>{isSublayerExtension(i)||t.assignProperties(i),s===r||isSublayerRef(i)||e.reorder(t,r)},equals:(e,t)=>isSublayerExtension(t)?t===e:!!SublayerExtension._matchesRef(e.sublayer,t.sublayer,"both")||e.id===t.id})}function isSublayer(e){return e&&"function"==typeof e.get}function isSublayerRef(e){return isSublayerExtension(e)?!!e._deferredSublayerProperties?.$ref:!isSublayer(e.sublayer)&&!!e.sublayer?.$ref}
1
+ import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{isSublayerExtension,ItemType}from"../ItemType.js";import{FeatureSourceBase}from"../data/FeatureSourceBase.js";import{Schema}from"../data/Schema.js";import{serializable}from"../support/Serializable.js";import{isBuildingComponentSublayer,isBuildingGroupSublayer,isKMLSublayer,isMapImageSublayer,isSubtypeSublayer,isTileLayer,isWMSSublayer,isWMTSSublayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{compare}from"../utilities/collection.js";import{load}from"../utilities/esri.js";import{getLogger}from"../utilities/log.js";import{parse}from"../utilities/number.js";import{deepClone}from"../utilities/object.js";import{onCollectionPropertyChange,watchCollectionPropertyEach}from"../utilities/watch.js";import{fromLayerListMode,LayerListSettings}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const log=getLogger("SublayerExtension"),ERR_INVALID_SUBLAYER_TYPE="Invalid type of sublayer for this type of sublayer extension.",ERR_FEATURES_NOT_SUPPORTED="This type of layer does not have features.",ERR_SUBLAYERX_NOT_SUPPORTED="This type of sublayer extension cannot have child sublayer extensions.",DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1});export function getSublayerType(e){if(isMapImageSublayer(e))return isTileLayer(e?.layer)?"ArcGISTiledSublayer":"ArcGISMapServiceSublayer";if(isKMLSublayer(e))return"KMLSublayer";if(isWMTSSublayer(e))return"WMTSSublayer";if(isWMSSublayer(e))return"WMSSublayer";if(isBuildingComponentSublayer(e))return"BuildingComponentSublayer";if(isBuildingGroupSublayer(e))return"BuildingGroupSublayer";if(isSubtypeSublayer(e))return"SubtypeSublayer";throw new Error(`Unknown sublayer type for ESRI sublayer: ${e}`)}export class SublayerExtension extends FeatureSourceBase{constructor(e){super(e),this._itemType=ItemType.SUBLAYER_EXTENSION,this._watchHandles=[],this._onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){log.error({message:`Error occurred while initializing sublayer extension for sublayer '${e.title??e.sublayer.id??e.id}'.`,error:t})}},this._onSetSublayerVisible=e=>{if("inherited"===this.visibilityMode&&this.supportsSublayers&&this.sublayerExtensions)for(const t of this.sublayerExtensions.toArray())t.sublayer&&t.canToggleVisibility&&(t.sublayer.visible=e);this.notifyChange("isEffectivelyVisible")},this._onSetSublayersSublayerVisible=(e,t,i,s)=>{e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(s)},this._onSublayersChange=e=>{e.added?.length&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])};const t=e||{};this._visibilityMode=this.canToggleVisibility?"independent":"inherited",this._sublayerExtensions=this._createSublayerExtensionCollection();const i=t.sublayer;let s;i?.hasOwnProperty("listMode")&&(s=fromLayerListMode(i.listMode)),this.layerListSettings=this._createLayerListSettings({...s,...t.layerListSettings}),isSublayer(i)?(checkArg("properties.sublayer",i).satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this._setSublayer(i)):i&&(this._deferredSublayerProperties=i),this.watch("parentSublayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))}get sublayer(){return this._sublayer}get layerExtension(){return this._layerExtension}get parentSublayerExtension(){return this._parentSublayerExtension}get hasFeatures(){return!1}get sublayerExtensions(){return this._sublayerExtensions}get renderer(){}get visibilityMode(){return this.canToggleVisibility?this._visibilityMode:"inherited"}set visibilityMode(e){checkArg("visibilityMode",e).satisfies((e=>this.canToggleVisibility||"inherited"===e),'Sublayers of this type only support a visibility mode of "inherited".'),this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get capabilities(){return this._capabilities()}get effectiveMinScale(){const e=this.sublayer?this.sublayer.minScale:0;if(this.parentSublayerExtension){const t=this.parentSublayerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}if(this.layerExtension){const t=this.layerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}return e}get effectiveMaxScale(){const e=this.sublayer?this.sublayer.maxScale:0;return this.parentSublayerExtension&&this.parentSublayerExtension.effectiveMaxScale>e?this.parentSublayerExtension.effectiveMaxScale:this.layerExtension&&this.layerExtension.effectiveMaxScale>e?this.layerExtension.effectiveMaxScale:e}get isEffectivelyVisible(){const e=!!this.sublayer&&this.sublayer.visible;return this.parentSublayerExtension?this.parentSublayerExtension.isEffectivelyVisible&&e:this.layerExtension?this.layerExtension.isEffectivelyVisible&&e:e}get title(){return this.sublayer?.title??("string"==typeof this._deferredSublayerProperties?.$ref||"number"==typeof this._deferredSublayerProperties?.$ref?this._deferredSublayerProperties?.$ref.toString():this._deferredSublayerProperties?.$ref?.title??this._deferredSublayerProperties?.$ref?.id.toString())??"Sublayer"}get supportsSublayers(){return!1}get canToggleVisibility(){return!0}get canChangeOpacity(){return!0}get canChangeScale(){return!0}get canChangeRenderer(){return!1}get canChangeLabels(){return!1}get _layerSupportsHideChildren(){return!1}get _sublayers(){if(this.supportsSublayers)return this.sublayer?.sublayers}get effectiveFullExtent(){return this._effectiveFullExtent?this._effectiveFullExtent:this.parentSublayerExtension?this.parentSublayerExtension.effectiveFullExtent:this.layerExtension?this.layerExtension.effectiveFullExtent:void 0}get initialVisibility(){return this._initialVisibility??this.sublayer?.visible??!1}static create(e){if(!SublayerExtension.factory)throw new InvalidOperationError("Cannot create sublayer extension: no sublayer extension factory has been registered.");return SublayerExtension.factory.create(e)}static _matchesRef(e,t,i){if(!e||!t)return!1;let s=t.$ref;if("string"==typeof s){const e=parse(s);s={id:isNaN(e)?s:e,title:s}}else"number"==typeof s&&(s={id:s});return"both"===i?e.id===s.id&&e.title===s.title:"by-id"===i?e.id===s.id:"by-title"===i&&e.title===s.title}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)}_resolveSublayer(){if(this._sublayer||!this._deferredSublayerProperties||!this.layerExtension||!this.layerExtension.layer||!this.layerExtension.layer.sublayers)return;const e=e=>t=>SublayerExtension._matchesRef(t,this._deferredSublayerProperties,e),t=this.layerExtension.layer.sublayers.flatten((e=>e.sublayers));let i=t.find(e("both"));if(i||(i=t.find(e("by-title"))),i||(i=t.find(e("by-id"))),i&&this._isSupportedSublayer(i)){this._setSublayer(i);const e={sublayer:this._deferredSublayerProperties};this.assignProperties(e),this._originalRef=this._deferredSublayerProperties.$ref,this._deferredSublayerProperties=void 0}}_setLayerExtension(e){const t=this.layerExtension;this._layerExtension=e,this.layerExtension&&(this.layerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.layerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layerExtension.watch("isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))),this._parentSublayerExtension||(t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings))),this._resolveSublayer(),this.notifyChange("layerExtension"),this._sublayerExtensions.onLayerExtensionChanged()}_setParentSublayerExtension(e){const t=this._parentSublayerExtension;this._parentSublayerExtension=e,this.parentSublayerExtension&&(this.parentSublayerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.parentSublayerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale")))),t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.layerExtension?this.layerExtension.featureSettings.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=this.layerExtension?this.layerExtension.taskSettings:void 0)),e&&((!this.featureSettings.formatSettings.parent||this.layerExtension&&this.featureSettings.formatSettings.parent===this.layerExtension.featureSettings.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),(!this.taskSettings.parent||this.layerExtension&&this.taskSettings.parent===this.layerExtension.taskSettings)&&(this.taskSettings.parent=e.taskSettings)),this._resolveSublayer(),this.notifyChange("parentSublayerExtension")}async _switchSublayer(e){if(e===this.sublayer)return;checkArg("newSublayer",e).isNotMissing().satisfies((e=>e.id===this.sublayer.id),"Sublayer ID must match existing sublayer.").satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this.isInitialized&&await load(e);const t=new Map;if(this.sublayer?.sublayers)for(const e of this.sublayer.sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));this.canToggleVisibility&&(e.visible=this.sublayer.visible),this.canChangeOpacity&&(e.opacity=this.sublayer.opacity),this._setSublayer(e);const i=[];if(this.sublayer.sublayers){const e=this.sublayer.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)}async _postInitialize(){await super._postInitialize(),this._watchHandles.push(onCollectionPropertyChange(this,"sublayer.sublayers",(async e=>{const t=(e.added??[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(t.map(this._onSublayerAddedPostInitialize))})))}async _onDestroy(){this._watchHandles.forEach((e=>e?.remove())),await Promise.all(this.sublayerExtensions.toArray().map((e=>e.destroy()))),await super._onDestroy()}_getSerializableProperties(){return{...super._getSerializableProperties(),iconUrl:"initial",visibilityMode:{serializeModes:["initial"],default:this.canToggleVisibility?"independent":"inherited"},layerListSettings:"initial",sublayerExtensions:{serializeModes:["initial","project"],serialize:()=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{_assignSublayerExtensions(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},sublayer:{serializeModes:["initial","project"],serialize:()=>{if(this.sublayer){if(!this._layerExtension)return this._serializeSublayer(this._sublayer);{const e=getSublayerType(this._sublayer);if(this._originalRef)return{$ref:this._originalRef,$sublayerType:e};if(this._sublayer.title||this._sublayer.id)return{...this._createSublayerRef(),$sublayerType:e}}}else if(this._deferredSublayerProperties)return deepClone(this._deferredSublayerProperties)},deserialize:e=>{if(isSublayer(e)){if(e!==this.sublayer)throw new Error("Property 'sublayer' is read-only.")}else this._sublayer?this._applySublayerProperties(e,this._sublayer):this._deferredSublayerProperties&&(this._deferredSublayerProperties={...this._deferredSublayerProperties,...e})}},requestHelper:{serialize:!1}}}_createSublayerExtension(e){throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED)}_createSchema(){return new SublayerSchema(this)}_createLayerListSettings(e){return new LayerListSettings(e)}_capabilities(){return DEFAULT_CAPABILITIES}async _onInitialize(){if(await super._onInitialize(),this._sublayer||this._deferredSublayerProperties&&this._deferredSublayerProperties?.$ref||(this._setSublayer(await this._createSublayer(this._deferredSublayerProperties)),this._deferredSublayerProperties=void 0),this._resolveSublayer(),!this._sublayer){const e=this._deferredSublayerProperties?.$ref;if(!this._layerExtension)throw new InvalidOperationError("Cannot resolve sublayer reference: missing parent layer extension.");throw new InvalidOperationError(`No sublayer found matching reference "${e}".`)}this._initialVisibility=this.sublayer.visible,this._sublayerExtensions.onParentInitialized()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}_createSublayerRef(){return{$ref:{id:this._sublayer.id,title:this._sublayer.title}}}_createSublayerExtensionCollection(){return new SubSublayerExtensionCollection(this)}_watchSublayerProperties(){this._watchHandles.push(this.sublayer.watch("minScale",(()=>this.notifyChange("effectiveMinScale")),!0),this.sublayer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale")),!0))}_setSublayer(e){this._sublayer=e,this._watchHandles.push(e.watch("visible",this._onSetSublayerVisible,!0)),this.supportsSublayers&&this._watchHandles.push(onCollectionPropertyChange(e,"sublayers",this._onSublayersChange,!0),watchCollectionPropertyEach(e,"sublayers","visible",this._onSetSublayersSublayerVisible,!0)),this._onSetSublayerVisible(this.sublayer.visible),"exclusive"===this.visibilityMode&&this._ensureAtMostOneChildSublayerVisible(),this._watchSublayerProperties(),this.notifyChange("sublayer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.sublayer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}let SublayerSchema=class extends Schema{constructor(e){super(),this._sublayerBindings=new Map,this._sublayerExtension=e,this._bindSettingsToSublayerProperties()}get spatialReference(){if(this._sublayerExtension.layerExtension)return this._sublayerExtension.layerExtension.schema.spatialReference}set spatialReference(e){throw new InvalidOperationError("Cannot set sublayer schema spatial reference.")}_getPropertyBindings(){return{}}_bindSettingsToSublayerProperties(){const e=this._getPropertyBindings();for(const t of Object.keys(e)){let i=e[t];"string"==typeof i&&(i={property:i}),this._sublayerBindings.set(t,i),i.hasOwnProperty("value")||this._sublayerExtension.watch(`sublayer.${i.property}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}};SublayerSchema=__decorate([serializable],SublayerSchema);export{SublayerSchema};export class SubSublayerExtensionCollection extends SublayerExtensionCollectionBase{constructor(e){super(e,"sublayer.sublayers")}get _layerExtension(){return this._parent.layerExtension}add(e,t){if(checkArg("sublayerX",e).isNotMissing(),!this._parent.supportsSublayers)throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED);e.sublayer&&this._parent.sublayer&&!this._parent.sublayer.sublayers&&(this._parent.sublayer.sublayers=[]),e.parentSublayerExtension&&e.parentSublayerExtension.sublayerExtensions.remove(e),super.add(e,t)}_onAdded(e){super._onAdded(e),e._setParentSublayerExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setParentSublayerExtension(void 0)}}export function _assignSublayerExtensions(e,t,i){compare(e,t,{onNew:(t,s)=>{e.add(isSublayerExtension(t)?t:i(t),isSublayerRef(t)?void 0:s)},onMatch:(t,i,s,r)=>{isSublayerExtension(i)||t.assignProperties(i),s===r||isSublayerRef(i)||e.reorder(t,r)},equals:(e,t)=>isSublayerExtension(t)?t===e:!!SublayerExtension._matchesRef(e.sublayer,t.sublayer,"both")||e.id===t.id})}function isSublayer(e){return e&&"function"==typeof e.get}function isSublayerRef(e){return isSublayerExtension(e)?!!e._deferredSublayerProperties?.$ref:!isSublayer(e.sublayer)&&!!e.sublayer?.$ref}
@@ -1 +1 @@
1
- import{__decorate}from"tslib";import{whenDefinedOnce}from"@arcgis/core/core/watchUtils";import{InvalidOperationError}from"../../InvalidOperationError.js";import{isLayerExtension}from"../../ItemType.js";import{serializable,SerializableBase}from"../../support/Serializable.js";import{checkArg}from"../../utilities/checkArg.js";export class LayerListSettingsProperties{}let LayerListSettings=class extends SerializableBase{get expanded(){return this._expanded}set expanded(e){this._expanded=e}get included(){return this._included}set included(e){this._included=e}get initialExpanded(){return this._initialExpanded}get initialChildrenIncluded(){return this._initialChildrenIncluded}get initialIncluded(){return this._initialIncluded}get childrenIncluded(){return this._childrenIncluded}set childrenIncluded(e){this._childrenIncluded=e}_getSerializableProperties(){return{expanded:{serializeModes:["initial"],default:!1},included:{serializeModes:["initial"],default:!0},childrenIncluded:{serializeModes:["initial"],default:!0}}}};LayerListSettings=__decorate([serializable],LayerListSettings);export{LayerListSettings};export class ExtensionBaseLayerListSettings extends LayerListSettings{constructor(e,i,t){checkArg("extension",i).isNotMissing().isDefined(),super(e),this._extension=i,this._defaultChildrenIncluded=t;const d=isLayerExtension(i)?"layer":"sublayer";"included"in e?(this._initialIncluded=e.included,this._notifyChange("initialIncluded")):(whenDefinedOnce(i,d,(()=>{this._initialIncluded=this.included,this._notifyChange("initialIncluded")})),void 0===this._initialIncluded&&(this._initialIncluded=!0,this._notifyChange("initialIncluded"))),"childrenIncluded"in e?(this._initialChildrenIncluded=e.childrenIncluded,this._notifyChange("initialChildrenIncluded")):(whenDefinedOnce(i,d,(()=>{this._initialChildrenIncluded=this.childrenIncluded,this._notifyChange("initialChildrenIncluded")})),void 0===this._initialChildrenIncluded&&(this._initialChildrenIncluded=!0,this._notifyChange("initialChildrenIncluded"))),whenDefinedOnce(i,d,(()=>{void 0===this._initialEsriLayerListMode&&(this._initialEsriLayerListMode=this._esriLayer.listMode)})),this._initialExpanded=e.expanded??!1}get included(){return void 0!==super.included?super.included:!this._esriLayer||"hide"!==this._esriLayer.listMode}set included(e){checkArg("value",e).satisfies((e=>"boolean"==typeof e),"LayerListSettings must be set to boolean values"),super.included=e,this._setListMode()}get childrenIncluded(){return void 0!==super.childrenIncluded?super.childrenIncluded:this._esriLayer?this._supportsChildren&&"show"===this._esriLayer.listMode:this._defaultChildrenIncluded??this._supportsChildren}set childrenIncluded(e){if(checkArg("value",e).satisfies((e=>"boolean"==typeof e),"LayerListSettings must be set to boolean values"),!this._supportsChildren&&e)throw new InvalidOperationError("Cannot set 'childrenIncluded' to true on a layer that does not support sublayers.");super.childrenIncluded=e,this._setListMode()}get expanded(){return super.expanded}set expanded(e){if(checkArg("value",e).satisfies((e=>"boolean"==typeof e),"LayerListSettings must be set to boolean values"),!this._supportsChildren&&e)throw new InvalidOperationError("Cannot set 'expanded' to true on a layer that does not support sublayers.");super.expanded=e}onLayerExtensionInitialized(){this._setListMode(),this._extension.watch(this._listModePath,((e,i)=>{e!==i&&(super.childrenIncluded=void 0,super.included=void 0)}),!0)}_getSerializableProperties(){return{...super._getSerializableProperties(),included:{serializeModes:["initial"],isDefault:e=>!!e},childrenIncluded:{serializeModes:["initial"],isDefault:e=>e===this._childrenIncludedSerializationDefault()}}}_childrenIncludedSerializationDefault(){return this._esriLayer?"show"===this._initialEsriLayerListMode:this._defaultChildrenIncluded??this._supportsChildren}_setListMode(){const e=this._esriLayer;e&&(void 0===this._initialEsriLayerListMode&&(this._initialEsriLayerListMode=e.listMode),!this.childrenIncluded&&this._extension._layerSupportsHideChildren&&this.included?e.listMode="hide-children":this.childrenIncluded||this.included?e.listMode="show":e.listMode="hide")}}export function fromLayerListMode(e){const i={};return"hide"===e?i.included=!1:"show"===e?i.included=!0:"hide-children"===e&&(i.childrenIncluded=!1),i}
1
+ import{__decorate}from"tslib";import{whenOnce}from"@arcgis/core/core/reactiveUtils";import{InvalidOperationError}from"../../InvalidOperationError.js";import{isLayerExtension}from"../../ItemType.js";import{serializable,SerializableBase}from"../../support/Serializable.js";import{checkArg}from"../../utilities/checkArg.js";export class LayerListSettingsProperties{}let LayerListSettings=class extends SerializableBase{get expanded(){return this._expanded}set expanded(e){this._expanded=e}get included(){return this._included}set included(e){this._included=e}get initialExpanded(){return this._initialExpanded}get initialChildrenIncluded(){return this._initialChildrenIncluded}get initialIncluded(){return this._initialIncluded}get childrenIncluded(){return this._childrenIncluded}set childrenIncluded(e){this._childrenIncluded=e}_getSerializableProperties(){return{expanded:{serializeModes:["initial"],default:!1},included:{serializeModes:["initial"],default:!0},childrenIncluded:{serializeModes:["initial"],default:!0}}}};LayerListSettings=__decorate([serializable],LayerListSettings);export{LayerListSettings};export class ExtensionBaseLayerListSettings extends LayerListSettings{constructor(e,i,t){checkArg("extension",i).isNotMissing().isDefined(),super(e),this._extension=i,this._defaultChildrenIncluded=t;const d=()=>isLayerExtension(i)?i.layer:i.sublayer,n=d();"included"in e?(this._initialIncluded=e.included,this.notifyChange("initialIncluded")):(n?this._initialIncluded=this.included:(async()=>{await whenOnce(d),this._initialIncluded=this.included,this.notifyChange("initialIncluded")})(),void 0===this._initialIncluded&&(this._initialIncluded=!0,this.notifyChange("initialIncluded"))),"childrenIncluded"in e?(this._initialChildrenIncluded=e.childrenIncluded,this.notifyChange("initialChildrenIncluded")):(n?this._initialChildrenIncluded=this.childrenIncluded:(async()=>{await whenOnce(d),this._initialChildrenIncluded=this.childrenIncluded,this.notifyChange("initialChildrenIncluded")})(),void 0===this._initialChildrenIncluded&&(this._initialChildrenIncluded=!0,this.notifyChange("initialChildrenIncluded"))),n?this._initialEsriLayerListMode=n.listMode:(async()=>{await whenOnce(d),void 0===this._initialEsriLayerListMode&&(this._initialEsriLayerListMode=this._esriLayer.listMode)})(),this._initialExpanded=e.expanded??!1}get included(){return void 0!==super.included?super.included:!this._esriLayer||"hide"!==this._esriLayer.listMode}set included(e){checkArg("value",e).satisfies((e=>"boolean"==typeof e),"LayerListSettings must be set to boolean values"),super.included=e,this._setListMode()}get childrenIncluded(){return void 0!==super.childrenIncluded?super.childrenIncluded:this._esriLayer?this._supportsChildren&&"show"===this._esriLayer.listMode:this._defaultChildrenIncluded??this._supportsChildren}set childrenIncluded(e){if(checkArg("value",e).satisfies((e=>"boolean"==typeof e),"LayerListSettings must be set to boolean values"),!this._supportsChildren&&e)throw new InvalidOperationError("Cannot set 'childrenIncluded' to true on a layer that does not support sublayers.");super.childrenIncluded=e,this._setListMode()}get expanded(){return super.expanded}set expanded(e){if(checkArg("value",e).satisfies((e=>"boolean"==typeof e),"LayerListSettings must be set to boolean values"),!this._supportsChildren&&e)throw new InvalidOperationError("Cannot set 'expanded' to true on a layer that does not support sublayers.");super.expanded=e}onLayerExtensionInitialized(){this._setListMode(),this._extension.watch(this._listModePath,((e,i)=>{e!==i&&(super.childrenIncluded=void 0,super.included=void 0)}),!0)}_getSerializableProperties(){return{...super._getSerializableProperties(),included:{serializeModes:["initial"],isDefault:e=>!!e},childrenIncluded:{serializeModes:["initial"],isDefault:e=>e===this._childrenIncludedSerializationDefault()}}}_childrenIncludedSerializationDefault(){return this._esriLayer?"show"===this._initialEsriLayerListMode:this._defaultChildrenIncluded??this._supportsChildren}_setListMode(){const e=this._esriLayer;e&&(void 0===this._initialEsriLayerListMode&&(this._initialEsriLayerListMode=e.listMode),!this.childrenIncluded&&this._extension._layerSupportsHideChildren&&this.included?e.listMode="hide-children":this.childrenIncluded||this.included?e.listMode="show":e.listMode="hide")}}export function fromLayerListMode(e){const i={};return"hide"===e?i.included=!1:"show"===e?i.included=!0:"hide-children"===e&&(i.childrenIncluded=!1),i}