@vertigis/arcgis-extensions 53.4.0 → 53.5.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 (210) hide show
  1. package/AppConfig.schema.json +7 -0
  2. package/README.md +0 -1
  3. package/data/ArcGISServiceTableExtension.js +1 -1
  4. package/data/Feature.js +1 -1
  5. package/data/FeatureList.js +1 -1
  6. package/data/FeatureSettings.d.ts +1 -0
  7. package/data/FeatureSettings.js +1 -1
  8. package/data/FeatureSourceBase.d.ts +1 -0
  9. package/data/FeatureSourceBase.js +1 -1
  10. package/data/FieldExtension.d.ts +1 -0
  11. package/data/FieldExtension.js +1 -1
  12. package/data/PopupContentExtension.d.ts +1 -0
  13. package/data/PopupContentExtension.js +1 -1
  14. package/data/Schema.d.ts +4 -0
  15. package/data/Schema.js +1 -1
  16. package/data/_TableExtension.d.ts +6 -1
  17. package/data/_TableExtension.js +1 -1
  18. package/docs/html/assets/highlight.css +6 -6
  19. package/docs/html/assets/navigation.js +1 -1
  20. package/docs/html/assets/search.js +1 -1
  21. package/docs/html/classes/Entity.EntityBase.html +4 -3
  22. package/docs/html/classes/data_ArcGISServiceTableExtension.ArcGISServiceTableExtension.html +4 -3
  23. package/docs/html/classes/data_Attachment.Attachment.html +4 -3
  24. package/docs/html/classes/data_Feature.Feature.html +4 -3
  25. package/docs/html/classes/data_FeatureList.FeatureList.html +13 -34
  26. package/docs/html/classes/data_FeatureSettings.FeatureSettings.html +6 -4
  27. package/docs/html/classes/data_FeatureSourceBase.FeatureSourceBase.html +7 -6
  28. package/docs/html/classes/data_FeatureSourceBase.RelationshipCollection.html +13 -34
  29. package/docs/html/classes/data_FeatureStream.FeatureStream.html +4 -3
  30. package/docs/html/classes/data_FieldExtension.FieldExtension.html +7 -6
  31. package/docs/html/classes/data_PopupContentExtension.PopupContentExtension.html +6 -5
  32. package/docs/html/classes/data_RelationshipBase.RelationshipBase.html +4 -3
  33. package/docs/html/classes/data_Schema.Schema.html +7 -4
  34. package/docs/html/classes/data_TaskSettings.TaskSettings.html +6 -4
  35. package/docs/html/classes/data__TableExtension.TableExtension.html +4 -3
  36. package/docs/html/classes/data__TableExtension.TableFeatureSettings.html +6 -4
  37. package/docs/html/classes/data__TableExtension.TableSchema.html +8 -5
  38. package/docs/html/classes/layer_preset_LayerPreset.LayerPreset.html +4 -3
  39. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerExtension.html +4 -6
  40. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerRelationshipCollection.html +13 -34
  41. package/docs/html/classes/mapping_BasemapExtension.BasemapExtension.html +5 -7
  42. package/docs/html/classes/mapping_Bookmark.Bookmark.html +4 -3
  43. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtension.html +4 -6
  44. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +7 -4
  45. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtension.html +4 -6
  46. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +7 -4
  47. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtension.html +5 -8
  48. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerReadOnlySchema.html +7 -4
  49. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerExtension.html +4 -6
  50. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerFeatureSettings.html +6 -4
  51. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +7 -4
  52. package/docs/html/classes/mapping_CSVLayerExtension.CSVLayerExtension.html +5 -8
  53. package/docs/html/classes/mapping_ElevationLayerExtension.ElevationLayerExtension.html +5 -8
  54. package/docs/html/classes/mapping_FeatureCollectionLayerExtension.FeatureCollectionLayerExtension.html +5 -8
  55. package/docs/html/classes/mapping_FeatureLayerExtension.FeatureLayerExtension.html +5 -8
  56. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBase.html +5 -8
  57. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerReadOnlySchema.html +7 -4
  58. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerSchema.html +7 -4
  59. package/docs/html/classes/mapping_GeoJSONLayerExtension.GeoJSONLayerExtension.html +5 -8
  60. package/docs/html/classes/mapping_GeoRSSLayerExtension.GeoRSSLayerExtension.html +5 -8
  61. package/docs/html/classes/mapping_GraphicsLayerExtension.GraphicsLayerExtension.html +5 -8
  62. package/docs/html/classes/mapping_GroundExtension.GroundExtension.html +5 -7
  63. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtension.html +5 -8
  64. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtensionCollection.html +14 -35
  65. package/docs/html/classes/mapping_ImageryLayerExtension.ImageryLayerExtension.html +5 -8
  66. package/docs/html/classes/mapping_ImageryTileLayerExtension.ImageryTileLayerExtension.html +5 -8
  67. package/docs/html/classes/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtension.html +5 -8
  68. package/docs/html/classes/mapping_KMLLayerExtension.KMLLayerExtension.html +5 -8
  69. package/docs/html/classes/mapping_KMLSublayerExtension.KMLSublayerExtension.html +4 -6
  70. package/docs/html/classes/mapping_MapConstraints.MapConstraints.html +6 -4
  71. package/docs/html/classes/mapping_MapExtension.MapExtension.html +12 -7
  72. package/docs/html/classes/mapping_MapImageLayerExtension.MapImageLayerExtension.html +5 -8
  73. package/docs/html/classes/mapping_MapImageSublayerExtension.MapImageSublayerExtension.html +4 -6
  74. package/docs/html/classes/mapping_MapNotesLayerExtension.MapNotesLayerExtension.html +5 -8
  75. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtension.html +4 -6
  76. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionSchema.html +7 -4
  77. package/docs/html/classes/mapping_MediaLayerExtension.MediaLayerExtension.html +5 -8
  78. package/docs/html/classes/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtension.html +5 -8
  79. package/docs/html/classes/mapping_PointCloudLayerExtension.PointCloudLayerExtension.html +5 -8
  80. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtension.html +5 -8
  81. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtensionSchema.html +7 -4
  82. package/docs/html/classes/mapping_SceneLayerExtension.SceneLayerExtension.html +5 -8
  83. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerExtension.html +5 -8
  84. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerSchema.html +7 -4
  85. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtension.html +5 -8
  86. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerRelationshipCollection.html +13 -34
  87. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerSchema.html +7 -4
  88. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerExtension.html +4 -6
  89. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerRelationshipCollection.html +13 -34
  90. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerSchema.html +7 -4
  91. package/docs/html/classes/mapping_TileLayerExtension.TileLayerExtension.html +5 -8
  92. package/docs/html/classes/mapping_TileSublayerExtension.TileSublayerExtension.html +4 -6
  93. package/docs/html/classes/mapping_UnsupportedLayerExtension.UnsupportedLayerExtension.html +5 -8
  94. package/docs/html/classes/mapping_VectorTileLayerExtension.VectorTileLayerExtension.html +5 -8
  95. package/docs/html/classes/mapping_WFSLayerExtension.WFSLayerExtension.html +5 -8
  96. package/docs/html/classes/mapping_WMSLayerExtension.WMSLayerExtension.html +5 -8
  97. package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +4 -6
  98. package/docs/html/classes/mapping_WMTSLayerExtension.WMTSLayerExtension.html +5 -8
  99. package/docs/html/classes/mapping_WebTileLayerExtension.WebTileLayerExtension.html +5 -8
  100. package/docs/html/classes/mapping__LayerExtension.LayerExtension.html +5 -8
  101. package/docs/html/classes/mapping__LayerExtension.LayerExtensionReadOnlySchema.html +7 -4
  102. package/docs/html/classes/mapping__LayerExtension.LayerExtensionSchema.html +7 -4
  103. package/docs/html/classes/mapping__LayerExtensionCollectionImpl.LayerExtensionCollectionImpl.html +14 -35
  104. package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +14 -35
  105. package/docs/html/classes/mapping__SublayerExtension.SublayerExtension.html +4 -6
  106. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +7 -4
  107. package/docs/html/classes/mapping_support_ArrayWrappedCollection.ArrayWrappedCollection.html +13 -34
  108. package/docs/html/classes/mapping_support__LayerExtensionCollection.LayerExtensionCollectionBase.html +16 -37
  109. package/docs/html/classes/mapping_support__SublayerExtensionCollection.SublayerExtensionCollectionBase.html +16 -37
  110. package/docs/html/classes/menus_Menu.Menu.html +4 -3
  111. package/docs/html/classes/menus_MenuItem.MenuItem.html +4 -3
  112. package/docs/html/classes/support_FormatSettings.FormatSettings.html +6 -4
  113. package/docs/html/classes/support_HandlesMixin.HandlesMixin.html +5 -0
  114. package/docs/html/classes/support_InitializableBase.InitializableBase.html +10 -9
  115. package/docs/html/classes/support_InitializableCollectionProxy.InitializableCollectionProxy.html +15 -35
  116. package/docs/html/classes/support_ReadOnlyInitializableCollection.ReadOnlyInitializableCollection.html +15 -35
  117. package/docs/html/classes/support_Settings.Settings.html +10 -8
  118. package/docs/html/classes/support__ArcGISRelationshipCollection.ArcGISRelationshipCollection.html +13 -34
  119. package/docs/html/classes/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoder.html +3 -2
  120. package/docs/html/classes/tasks_geocoding_Geocoder.Geocoder.html +3 -2
  121. package/docs/html/classes/tasks_identify_IdentifyService.IdentifyService.html +4 -3
  122. package/docs/html/classes/tasks_query_ArcGISRelationship.ArcGISRelationship.html +4 -3
  123. package/docs/html/classes/tasks_query_QueryBasedRelationship.QueryBasedRelationship.html +4 -3
  124. package/docs/html/classes/tasks_query_QueryService.QueryService.html +4 -3
  125. package/docs/html/classes/tasks_search_SearchService.SearchService.html +4 -3
  126. package/docs/html/classes/utilities_CaseInsensitiveObservableMap.CaseInsensitiveObservableMap.html +6 -4
  127. package/docs/html/classes/utilities_CollectionProxy.CollectionProxy.html +16 -36
  128. package/docs/html/classes/utilities_CopyOnWriteCollection.CopyOnWriteCollection.html +13 -34
  129. package/docs/html/classes/utilities_MapTransformCollection.MapTransformCollection.html +13 -34
  130. package/docs/html/classes/utilities_ObservableMap.ObservableMap.html +8 -6
  131. package/docs/html/classes/utilities_ReadOnlyCollection.ReadOnlyCollection.html +15 -35
  132. package/docs/html/classes/utilities_ReadOnlyMap.ReadOnlyMap.html +6 -4
  133. package/docs/html/classes/utilities__ReferenceCountedHandle.default.html +3 -1
  134. package/docs/html/functions/support_HandlesMixin.handles.html +4 -0
  135. package/docs/html/functions/support_observableUtils.observable-1.html +3 -3
  136. package/docs/html/functions/support_observableUtils.onWatch.html +1 -1
  137. package/docs/html/functions/support_observableUtils.watch.html +1 -1
  138. package/docs/html/functions/support_observableUtils.watchEach.html +1 -1
  139. package/docs/html/functions/utilities__layers.groundsAreEquivalent.html +4 -0
  140. package/docs/html/functions/utilities_checkArg.checkArg.html +1 -1
  141. package/docs/html/interfaces/data_Feature.PresentableAttributes.html +6 -4
  142. package/docs/html/interfaces/data_support_attachments.AttachmentEnabledLayer.html +1 -1
  143. package/docs/html/interfaces/utilities_CollectionProxy.CollectionProxyOptions.html +4 -0
  144. package/docs/html/modules/support_HandlesMixin.html +3 -0
  145. package/docs/html/modules/utilities_CollectionProxy.html +1 -0
  146. package/docs/html/modules/utilities__layers.html +1 -0
  147. package/docs/html/modules.html +1 -0
  148. package/docs/html/variables/version.version.html +1 -1
  149. package/mapping/ArcGISSublayerExtension.js +1 -1
  150. package/mapping/BasemapExtension.d.ts +4 -6
  151. package/mapping/BasemapExtension.js +1 -1
  152. package/mapping/BuildingComponentSublayerExtension.d.ts +1 -0
  153. package/mapping/BuildingComponentSublayerExtension.js +1 -1
  154. package/mapping/BuildingSceneLayerExtension.d.ts +1 -1
  155. package/mapping/BuildingSceneLayerExtension.js +1 -1
  156. package/mapping/CSVLayerExtension.js +1 -1
  157. package/mapping/FeatureLayerExtension.js +1 -1
  158. package/mapping/FeatureLayerExtensionBase.d.ts +1 -0
  159. package/mapping/FeatureLayerExtensionBase.js +1 -1
  160. package/mapping/GeoJSONLayerExtension.js +1 -1
  161. package/mapping/GeoRSSLayerExtension.js +1 -1
  162. package/mapping/GraphicsLayerExtension.js +1 -1
  163. package/mapping/GroundExtension.d.ts +0 -6
  164. package/mapping/GroundExtension.js +1 -1
  165. package/mapping/GroupLayerExtension.d.ts +1 -0
  166. package/mapping/GroupLayerExtension.js +1 -1
  167. package/mapping/ImageryLayerExtension.js +1 -1
  168. package/mapping/MapExtension.d.ts +18 -0
  169. package/mapping/MapExtension.js +1 -1
  170. package/mapping/MapImageSublayerExtension.js +1 -1
  171. package/mapping/MapNotesSublayerExtension.js +1 -1
  172. package/mapping/PointCloudLayerExtension.js +1 -1
  173. package/mapping/RouteLayerExtension.js +1 -1
  174. package/mapping/SceneLayerExtension.js +1 -1
  175. package/mapping/StreamLayerExtension.d.ts +1 -0
  176. package/mapping/StreamLayerExtension.js +1 -1
  177. package/mapping/SubtypeGroupLayerExtension.d.ts +2 -1
  178. package/mapping/SubtypeGroupLayerExtension.js +1 -1
  179. package/mapping/SubtypeSublayerExtension.d.ts +2 -0
  180. package/mapping/SubtypeSublayerExtension.js +1 -1
  181. package/mapping/WFSLayerExtension.js +1 -1
  182. package/mapping/WMTSLayerExtension.js +1 -1
  183. package/mapping/_LayerExtension.d.ts +5 -7
  184. package/mapping/_LayerExtension.js +1 -1
  185. package/mapping/_SublayerExtension.d.ts +14 -6
  186. package/mapping/_SublayerExtension.js +1 -1
  187. package/mapping/support/ArrayWrappedCollection.js +1 -1
  188. package/mapping/support/_LayerExtensionCollection.d.ts +1 -0
  189. package/mapping/support/_LayerExtensionCollection.js +1 -1
  190. package/mapping/support/_SublayerExtensionCollection.d.ts +1 -0
  191. package/mapping/support/_SublayerExtensionCollection.js +1 -1
  192. package/package.json +1 -1
  193. package/support/HandlesMixin.d.ts +27 -0
  194. package/support/HandlesMixin.js +1 -0
  195. package/support/InitializableBase.d.ts +1 -1
  196. package/support/InitializableBase.js +1 -1
  197. package/support/Settings.d.ts +2 -2
  198. package/support/Settings.js +1 -1
  199. package/utilities/CollectionProxy.d.ts +22 -3
  200. package/utilities/CollectionProxy.js +1 -1
  201. package/utilities/MapTransformCollection.js +1 -1
  202. package/utilities/ObservableMap.d.ts +1 -1
  203. package/utilities/ObservableMap.js +1 -1
  204. package/utilities/ReadOnlyMap.js +1 -1
  205. package/utilities/_ReferenceCountedHandle.d.ts +4 -0
  206. package/utilities/_ReferenceCountedHandle.js +1 -1
  207. package/utilities/_layers.d.ts +10 -1
  208. package/utilities/_layers.js +1 -1
  209. package/version.d.ts +1 -1
  210. package/version.js +1 -1
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import t,{}from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as s}from"../Entity.js";import{InvalidOperationError as a}from"../InvalidOperationError.js";import{isBasemapExtension as n,isBookmark as o,isGroundExtension as r,isLayerPreset as p,isMenu as m,isTableExtension as h,ItemType as l}from"../ItemType.js";import{TableExtension as d}from"../data/TableExtension.js";import{layerToParentJsonCache as c}from"../json/LayerJson.js";import{applyJsonToWebMap as b}from"../json/WebMapJson.js";import{applyJsonToWebScene as _}from"../json/WebSceneJson.js";import{LayerPreset as f}from"../layer-preset/LayerPreset.js";import{Menu as E}from"../menus/Menu.js";import{DefaultArcGISRequestHelper as x}from"../support/ArcGISRequestHelper.js";import{FormatSettings as u}from"../support/FormatSettings.js";import{InitializableCollectionProxy as w}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection as y}from"../support/ReadOnlyInitializableCollection.js";import{serializable as M}from"../support/Serializable.js";import{WellKnownBasemap as g}from"../support/esri.js";import{createIHandle as v,notifyChange as I,onWatch as S,watch as A,watchEvent as z}from"../support/observableUtils.js";import{ReadOnlyCollection as O}from"../utilities/ReadOnlyCollection.js";import T from"../utilities/_ReferenceCountedHandle.js";import{basemapsAreEquivalent as P,createStandardBasemap as V,getStandardBasemapId as L,isStandardBasemap as k,isStandardBasemap2D as B}from"../utilities/basemaps.js";import{checkArg as C}from"../utilities/checkArg.js";import{compare as j}from"../utilities/collection.js";import{load as R}from"../utilities/esri.js";import{isGroupLayerExtension as H}from"../utilities/extensions.js";import{filter as N}from"../utilities/iterable.js";import{isWMTSLayer as W,layersAreEquivalent as J}from"../utilities/layers.js";import{getLogger as F}from"../utilities/log.js";import{getMapSpatialReference as q,isMap as G,isWebMap as D,isWebScene as U}from"../utilities/mapping.js";import{toPortalItem as $}from"../utilities/portal.js";import{parallelEach as X}from"../utilities/promise.js";import{onCollectionPropertyChange as Y,onEach as K}from"../utilities/watch.js";import{BasemapExtension as Q}from"./BasemapExtension.js";import{Bookmark as Z}from"./Bookmark.js";import{GroundExtension as ee}from"./GroundExtension.js";import{MapConstraints as te}from"./MapConstraints.js";import{_assignLayerExtensions as ie}from"./_LayerExtension.js";import{LayerExtensionCollectionImpl as se}from"./_LayerExtensionCollectionImpl.js";const ae=F("MapExtension");let ne=class extends s{get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?U(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":U(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new x),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 a("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=ee.create({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new a("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=p(e)?e:new f(e);this._initialLayerPreset=t}get _spatialReference(){return q(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}formatSettings;constraints;onClick;onHover;onHoverEnd;onInitialized;onViewpointChanged;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&&ae.error({message:"An error occurred while initializing context menu.",error:e})}})()}isSwitchingMap=!1;_layerViews=new t;get _allLayerViews(){const e=i=>{const s=[i];return t.isCollection(i.sublayerViews)?s.push(...i.sublayerViews.toArray().flatMap(e)):t.isCollection(i.layerViews)&&s.push(...i.layerViews.toArray().flatMap(e)),s};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}tableExtensions;allLayerExtensions;_itemType=l.MAP_EXTENSION;_map;_scene;_deserializedMapPromise;_deserializedViewMode;_deserializedViewModePromise;_deferredProperties;_currentMap;_requestHelper;_basemapExtension;_groundExtension;_basemapOptions;_groundExtensions;_bookmarks;_layerExtensions;_webMap;_webMapItem;_webScene;_webSceneItem;_title;_initialViewMode;_initialLayerPreset;_initialBasemapExtension;_skipBasemapOptions=!1;_createScenePromise;_createMapPromise;_contextMenu;constructor(e){super(e);let s={...e};this._basemapOptions=new oe(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new t,this.constraints=new te;const a=[],n=[];A(this,"_map",(e=>{if(e)a.push(K(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),K(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})));else for(const e of a)e.remove()}),{sync:!0}),A(this,"_scene",(e=>{if(e)n.push(K(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),K(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})));else for(const e of n)e.remove()}),{sync:!0});const{webMap:o,webScene:r,initialViewMode:p,map:m,basemapOptions:h}=s;if(this._webMap=o,this._webScene=r,this._webMapItem=me(o),this._webSceneItem=me(r),this.initialViewMode=p,U(m)&&r)throw new i("Cannot specify webScene property if map is initialized to a WebScene instance.");if(G(m)&&o)throw new i("Cannot specify webMap property if map is initialized to a 2D Map instance.");if(U(m)||D(m)||G(m))this.assignProperties({basemapOptions:h}),this._skipBasemapOptions=!!h;else{const{layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n,...o}=s;this._deferredProperties={layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n},s=o,a&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(s),A(this,"map.basemap",(()=>this._onBasemapChange()),{sync:!0}),A(this,"map.ground",(()=>this._onGroundChange()),{sync:!0}),this.allLayerExtensions=new pe(this),this.map?.basemap&&this._onBasemapChange()}getLayerExtensionsForView(e=this.viewMode){return(("map"===e?this._map:this._scene)?.layers.toArray()??[]).map((e=>this._layerExtensions._forLayer(e))).filter((e=>!e.dynamicallyAddedLayer))}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(H(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(C("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),await this.switchMap(t),I(this,"viewMode"),I(this,"title")}async switchMap(e){if(C("newMap",e).isNotMissing(),e===this.map)return;if(!this.map)return void this._setMap(e);this.isSwitchingMap=!0,this.isInitialized&&await de(e),(!e.basemap||B(e.basemap))&&this.map?.basemap&&B(this.map.basemap)&&(e.basemap=this.map.basemap);const t=new Map(this.map.layers.map((e=>[e,this.layerExtensions.forLayer(e)]))),i=new Map(this.map.tables.map((e=>[e,this.tableExtensions.forTable(e)]))),{basemapExtension:s}=this;this._setMap(e),this._updateBookmarks();const a=[];for(const e of this.map.layers.toArray()){const i=[...N(t.entries(),(([t])=>J(t,e)))];if(1===i.length){const[t]=i;a.push((async()=>{const i=t[1];await i._switchLayer(e),this._layerExtensions._register(i)})())}else{const t=this._layerExtensions._forLayer(e);t&&t.layer!==e&&a.push(t._switchLayer(e))}}for(const e of this.map.tables.toArray()){const t=[...N(i.entries(),(([t])=>J(t,e)))];if(1===t.length){const[i]=t;a.push((async()=>{const t=i[1];await t._switchTable(e),this.tableExtensions.add(t)})())}else{const t=this.tableExtensions.forTable(e);t&&t.table!==e&&a.push(t._switchTable(e))}}this.map.basemap&&s&&P(this.map.basemap,s.basemap)&&a.push((async()=>{await s._switchBasemap(this.map.basemap),this.basemapExtension=s})()),await Promise.all(a),this.isInitialized&&await this._initializeChildren(),this.isSwitchingMap=!1}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new a("Cannot unset both webMap and webScene.");const t=this._map?.basemap;this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=me(e),await R(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._cleanPreviousBasemapOptions(t),I(this,"webMap"),I(this,"initialViewMode"),I(this,"title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new a("Cannot unset both webMap and webScene.");const t=this._scene?.basemap;this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=me(e),await R(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._cleanPreviousBasemapOptions(t),I(this,"webScene"),I(this,"initialViewMode"),I(this,"title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{const e=(await import("@arcgis/core/WebScene")).default;he(this.webScene)?(this._webSceneItem.type="Web Scene",this._scene=new e({portalItem:this._webSceneItem})):this._scene=e.fromJSON(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{const e=(await import("@arcgis/core/WebMap")).default;he(this.webMap)?(this._webMapItem.type="Web Map",this._map=new e({portalItem:this._webMapItem})):this._map=e.fromJSON(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t="map"===this.viewMode,i=(t?this._scene:this._map)?.layers.toArray()??[],s=e.filter((e=>!i.includes(e.layer)&&!i.some((t=>e.layer&&J(t,e.layer)))));ie(this.layerExtensions,s)}},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=>J(t,e))))),this.layerExtensions.concat(s.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>"initial"!==e||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?j(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(h(e)?e:d.create(e),t)},onMatch:(e,t,i,s)=>{h(t)||e.assignProperties(t),i!==s&&this.tableExtensions.reorder(e,s)},equals:(e,t)=>h(t)?t===e:!!d._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=>{if(this.map)if(e)if(n(e))this.basemapExtension=e;else{if(this.basemapExtension)return this.basemapExtension.assignPropertiesAsync(e);this.basemapExtension=Q.create(e)}else this.basemapExtension=void 0;else 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:(j(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(n(e)?e:Q.create(e),t)},onMatch:(e,t,i,s)=>{n(t)||e.assignProperties(t),i!==s&&this.basemapOptions.reorder(e,s)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(n(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const i=e.toJSON();return P(i.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&X(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{if(this.map){if(!r(e))return this.groundExtension.assignPropertiesAsync(e);this.groundExtension=e}else 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=>o(e)?e:new Z(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?m(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=E.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>{c.lookup=new WeakMap;const e=this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),t=this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})));return c.lookup=void 0,e.length>0||t.length>0?{operationalLayers:e,tables:t}:{}},deserialize:e=>{if(!this.map)throw new i("Cannot specify JSON object for the 'map' property. It must be an ArcGIS API Map instance. To specify JSON, use 'webMap' or 'webScene' instead.");if(G(e)||D(e)||U(e)){if(e!==this.map)throw new i("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})()}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,i){await X(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let s=e;const a=this.basemapOptions.find((e=>P(e.basemap,s.baseMap)));a&&(t.basemap=a.basemap,s={...s,baseMap:{...s.baseMap,title:t.basemap.title}}),U(t)?await _(s,t,i):await b(s,t,i)}_createFormatSettings(){return new u}_createLayerExtensionCollection(){return new se(this)}_createTableExtensionCollection(){return new re(this)}async _onInitialize(){await super._onInitialize();const{basemapOptions:e,basemapExtension:t,webMap:i,webScene:s,...a}=this._deferredProperties??{};if(this.map||("scene"===this.initialViewMode?(await this._createScene(),this._setMap(this._scene)):(await this._createMap(),this._setMap(this._map))),this._webMapItem||this._webSceneItem?(await Promise.all([de(this.map),R(this._webMapItem),R(this._webSceneItem)]),le(this._webMapItem,"webMap","Web Map"),le(this._webSceneItem,"webScene","Web Scene")):await de(this.map),t&&(!n(t)&&t.basemap?this.basemapExtension=Q.create(t):await this.assignPropertiesAsync({basemapExtension:t}),await this.basemapExtension._createBackingBasemap()),e){const t=e.find((e=>n(e)&&P(this.map.basemap,e.toJSON().basemap)));if(t){const e=t.toJSON().basemap?.id??t.basemap?.id,i=t.toJSON().basemap?.title;await t._switchBasemap(this.map.basemap),this.basemapExtension=t,e&&(this.map.basemap.id=e),i&&(this.map.basemap.title=i)}await this.assignPropertiesAsync({basemapOptions:e})}await this.assignPropertiesAsync(a),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks();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 X(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new t(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>this.layerExtensions.remove(e);const i=new t(this.tableExtensions.filter((e=>!!e.table)));if(i.remove=e=>this.tableExtensions.remove(e),yield e,yield i,this.basemapExtension){const e=new t;e.add(this.basemapExtension),yield e}const s=new t;s.add(this.groundExtension),yield s}_initMapFromProperties(e){const t=e.map;G(t)||D(t)||U(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!he(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!he(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){U(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),I(this,"map")}_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=>this.map.basemap===e.basemap));if(!e){const t=this.basemapOptions.find((e=>P(e.basemap,this.map.basemap)));t?(e=t,e._switchBasemap(this.map.basemap)):(e=Q.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0))}e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;I(this,"basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.map.ground&&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.map.ground&&!this._groundExtensions.has(this.map.ground)&&this._groundExtensions.set(this.map.ground,ee.create({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e&&e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,I(this,"groundExtension")}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e?.isWebMercator&&await X([g.SATELLITE,g.HYBRID_VECTOR,g.STREETS_VECTOR,g.TOPO_VECTOR,g.STREETS_NAVIGATION_VECTOR,g.STREETS_NIGHT_VECTOR,g.TERRAIN_VECTOR,g.DARK_GRAY_VECTOR,g.GRAY_VECTOR,g.OCEANS_VECTOR,g.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await V(e);P(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(Q.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)}_cleanPreviousBasemapOptions(e){if(e&&!k(e))for(let t=this._basemapOptions.length-1;t>=0;t--){const i=this._basemapOptions.getItemAt(t),s=P(i.basemap,e),a=P(i.basemap,this._map?.basemap)||P(i.basemap,this._scene?.basemap);s&&!a&&this._basemapOptions.removeAtInternal(t)}}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),D(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new Z({source:"map",title:e.name,viewpoint:e.viewpoint}))})):U(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 Z(t);this.bookmarks.add(i)}))}};ne=e([M],ne);export{ne as MapExtension};class oe extends w{isExplicitlyModified=!1;_mapExtension;constructor(e){super(new t),this._mapExtension=e}add(e,t){return super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e),this}addMany(e,t){return super.addMany(e,t),this.isExplicitlyModified=!0,this}addInternal(e,t,i=!0){const s=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-7):e};let a;if(e.basemap){const t=s(e.basemap.id);if(a=k(e.basemap)?this.findIndex((e=>s(e.basemap?.id)===t)):this.findIndex((t=>P(t.basemap,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(){return 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 re extends w{get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new O(new t)}_mapExtension;_tableExtensionMap=new WeakMap;_uninitializedTableExtensions=new Set;_onChangeMapTablesHandle=new T((()=>Y(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)}))));_onBeforeAddMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-add",e=>this.emit("before-add",{...e,item:this._forTable(e.item)})])));_onBeforeRemoveMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-remove",e=>this.emit("before-remove",{...e,item:this._forTable(e.item)})])));_onBeforeChangesMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-changes",e=>this.emit("before-changes",{...e})])));_onAfterAddMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-add",e=>this.emit("after-add",{...e,item:this._forTable(e.item)})],(e=>{if(null!=e)for(const t of e)this.emit("after-add",{item:this._forTable(t)})}))));_onAfterRemoveMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-remove",e=>this.emit("after-remove",{...e,item:this._forTable(e.item)})],((e,t)=>{if(null!=t)for(const e of t)this.emit("after-remove",{item:this._forTable(e)})}))));_onAfterChangesMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-changes",e=>this.emit("after-changes",{...e,target:this})],(()=>{this.emit("after-changes",{target:this})}))));constructor(e){super(),this._mapExtension=e,S(this,"length",(()=>A(this._mapExtension,"map.tables.length",(()=>I(this,"length")),{sync:!0})))}on(e,t){const i=[];return"change"===e?i.push(this._onChangeMapTablesHandle.add()):"before-add"===e?i.push(this._onBeforeAddMapTablesHandle.add()):"before-remove"===e?i.push(this._onBeforeRemoveMapTablesHandle.add()):"before-changes"===e?i.push(this._onBeforeChangesMapTablesHandle.add()):"after-add"===e?i.push(this._onAfterAddMapTablesHandle.add()):"after-remove"===e?i.push(this._onAfterRemoveMapTablesHandle.add()):"after-changes"===e&&i.push(this._onAfterChangesMapTablesHandle.add()),i.push(super.on(e,t)),v(i)}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(l.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new re(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return C("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return C("id",e).isNotMissing(),this.find((t=>t._tableId===e))}forTable(e){if(C("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(C("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};i&&this.emit("after-remove",{item:i}),this.emit("after-add",{item:e}),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("after-add",{item:e}),this.emit("change",t)}return this._onAdded(e),this}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("after-remove",{item:t}),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){return this._tables.sort(((t,i)=>e(this._forTable(t),this._forTable(i)))),this}_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=d.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class pe extends y{get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>H(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}_mapExtension;_onChangeLayerExtensionsHandle=new T((()=>{const e=new WeakMap,i=new Set,s=a=>{const n=new t(a.added).flatten((e=>H(e)?e.layerExtensions:[])),o=new t(a.moved).flatten((e=>H(e)?e.layerExtensions:[])),r=new t(a.removed).flatten((e=>H(e)?e.layerExtensions:[]));for(const t of n)if(!e.has(t)&&H(t)){const a=t.layerExtensions.on("change",s);e.set(t,a),i.add(a)}for(const t of r){const s=e.get(t);s&&(s.remove(),e.delete(t),i.delete(s))}this.emit("change",{added:n.toArray(),moved:o.toArray(),removed:r.toArray()})};i.add(this._mapExtension.layerExtensions.on("change",s));const a=this._mapExtension.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const t of a)if(H(t)){const a=t.layerExtensions.on("change",s);e.set(t,a),i.add(a)}return i.add(Y(this._mapExtension,"basemapExtension.baseLayerExtensions",(e=>{this.emit("change",{...e})}))),i.add(Y(this._mapExtension,"basemapExtension.referenceLayerExtensions",(e=>{this.emit("change",{...e})}))),i.add(this._mapExtension.groundExtension.layerExtensions.on("change",(e=>{this.emit("change",{...e})}))),v(i)}));_onAfterAddLayerExtensionsHandle=new T((()=>{const e=new WeakMap,t=new Set,i=i=>{const s=e.get(i);s&&(s.remove(),e.delete(i),t.delete(s))},s=e=>{const t=e.item;if(H(t)){const e=t.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const t of e)i(t)}i(t)},a=i=>{this.emit("after-add",{...i});const n=i.item;if(H(n)){const o=n.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const n of o)if(this.emit("after-add",{...i,item:n}),!e.has(n)&&H(n)){const i=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",s),r=v([i,o]);e.set(n,r),t.add(r)}}};t.add(this._mapExtension.layerExtensions.on("after-add",a)),t.add(this._mapExtension.layerExtensions.on("after-remove",s));const n=this._mapExtension.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const i of n)if(H(i)){const n=i.layerExtensions.on("after-add",a),o=i.layerExtensions.on("after-remove",s),r=v([n,o]);e.set(i,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-add",e=>this.emit("after-add",{...e})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-add",e=>this.emit("after-add",{...e})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-add",(e=>{this.emit("after-add",{...e})}))),v(t)}));_onAfterRemoveLayerExtensionsHandle=new T((()=>{const e=new WeakMap,t=new Set,i=i=>{const s=e.get(i);s&&(s.remove(),e.delete(i),t.delete(s))},s=e=>{this.emit("after-remove",{...e});const t=e.item;if(H(t)){const s=t.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const t of s)this.emit("after-remove",{...e,item:t}),i(t)}i(t)},a=i=>{const n=i.item;if(H(n)){const i=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",s),r=v([i,o]);e.set(n,r),t.add(r)}};t.add(this._mapExtension.layerExtensions.on("after-remove",s)),t.add(this._mapExtension.layerExtensions.on("after-add",a));const n=this._mapExtension.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const i of n)if(H(i)){const n=i.layerExtensions.on("after-add",a),o=i.layerExtensions.on("after-remove",s),r=v([n,o]);e.set(i,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-remove",(e=>{this.emit("after-remove",{...e})}))),v(t)}));constructor(e){super(),this._mapExtension=e}on(e,t){const i=[];return"change"===e?i.push(this._onChangeLayerExtensionsHandle.add()):"after-add"===e?i.push(this._onAfterAddLayerExtensionsHandle.add()):"after-remove"===e&&i.push(this._onAfterRemoveLayerExtensionsHandle.add()),i.push(super.on(e,t)),v(i)}findById(e){return C("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return C("id",e).isNotMissing(),this.find((t=>t._layerId===e))}forLayer(e){return C("layer",e).isNotMissing(),this.findByLayerId(e.id)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function me(e){if(!(null==e||"object"==typeof e&&e?.baseMap))return $(e)}function he(e){return"object"!=typeof e||e&&!e.baseMap}function le(e,t,i){if(e?.type&&e.type!==i)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}async function de(e){await R(e),e.basemap&&(await R(e.basemap),e.basemap.baseLayers.filter((e=>W(e))).map((e=>{const t=e;return t.activeLayer.imageFormat=t.activeLayer.imageFormat??(t.activeLayer.imageFormats?.length>0?t.activeLayer.imageFormats[0]:""),t.activeLayer.styleId=t.activeLayer.styleId??"",t})),e.basemap.id=L(e.basemap)??e.basemap.id)}
1
+ var e;import{__decorate as t}from"tslib";import s,{}from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as a}from"../Entity.js";import{InvalidOperationError as n}from"../InvalidOperationError.js";import{isBasemapExtension as o,isBookmark as r,isGroundExtension as p,isLayerPreset as h,isMenu as m,isTableExtension as d,ItemType as l}from"../ItemType.js";import{TableExtension as _}from"../data/TableExtension.js";import{layerToParentJsonCache as b}from"../json/LayerJson.js";import{applyJsonToWebMap as c}from"../json/WebMapJson.js";import{applyJsonToWebScene as f}from"../json/WebSceneJson.js";import{LayerPreset as E}from"../layer-preset/LayerPreset.js";import{Menu as x}from"../menus/Menu.js";import{DefaultArcGISRequestHelper as u}from"../support/ArcGISRequestHelper.js";import{FormatSettings as y}from"../support/FormatSettings.js";import{InitializableCollectionProxy as w}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection as M}from"../support/ReadOnlyInitializableCollection.js";import{serializable as g}from"../support/Serializable.js";import{WellKnownBasemap as v}from"../support/esri.js";import{createIHandle as I,notifyChange as A,onWatch as S,watch as O,watchEvent as z}from"../support/observableUtils.js";import{ReadOnlyCollection as T}from"../utilities/ReadOnlyCollection.js";import P from"../utilities/_ReferenceCountedHandle.js";import{groundsAreEquivalent as L}from"../utilities/_layers.js";import{basemapsAreEquivalent as V,createStandardBasemap as B,getStandardBasemapId as k,isStandardBasemap as C,isStandardBasemap2D as H}from"../utilities/basemaps.js";import{checkArg as j}from"../utilities/checkArg.js";import{compare as R}from"../utilities/collection.js";import{load as N}from"../utilities/esri.js";import{isGroupLayerExtension as W}from"../utilities/extensions.js";import{filter as J}from"../utilities/iterable.js";import{isWMTSLayer as F,layersAreEquivalent as G}from"../utilities/layers.js";import{getLogger as q}from"../utilities/log.js";import{getMapSpatialReference as K,isMap as D,isWebMap as U,isWebScene as $}from"../utilities/mapping.js";import{toPortalItem as X}from"../utilities/portal.js";import{parallelEach as Y}from"../utilities/promise.js";import{onCollectionPropertyChange as Q,onEach as Z}from"../utilities/watch.js";import{BasemapExtension as ee}from"./BasemapExtension.js";import{Bookmark as te}from"./Bookmark.js";import{GroundExtension as se}from"./GroundExtension.js";import{MapConstraints as ie}from"./MapConstraints.js";import{_assignLayerExtensions as ae}from"./_LayerExtension.js";import{LayerExtensionCollectionImpl as ne}from"./_LayerExtensionCollectionImpl.js";const oe=q("MapExtension");let re=class extends a{static{e=this}static _mapEventHandlesKey="map-extension-map-event-handles";static _sceneEventHandlesKey="map-extension-scene-event-handles";get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?$(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":$(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new u),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 n("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=se.create({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new n("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=h(e)?e:new E(e);this._initialLayerPreset=t}get _spatialReference(){return K(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}formatSettings;constraints;onClick;onHover;onHoverEnd;onInitialized;onViewpointChanged;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&&oe.error({message:"An error occurred while initializing context menu.",error:e})}})()}_layerViews=new s;get _allLayerViews(){const e=t=>{const i=[t];return s.isCollection(t.sublayerViews)?i.push(...t.sublayerViews.toArray().flatMap(e)):s.isCollection(t.layerViews)&&i.push(...t.layerViews.toArray().flatMap(e)),i};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}get isSwitchingMap(){return this._isSwitchingMap}tableExtensions;allLayerExtensions;_itemType=l.MAP_EXTENSION;_isSwitchingMap=!1;_map;_scene;_deserializedMapPromise;_deserializedViewMode;_deserializedViewModePromise;_deferredProperties;_currentMap;_requestHelper;_basemapExtension;_groundExtension;_basemapOptions;_groundExtensions;_bookmarks;_layerExtensions;_webMap;_webMapItem;_webScene;_webSceneItem;_title;_initialViewMode;_initialLayerPreset;_initialBasemapExtension;_skipBasemapOptions=!1;_createScenePromise;_createMapPromise;_contextMenu;constructor(t){super(t);let a={...t};this._basemapOptions=new pe(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new s,this.constraints=new ie,this._handles.add([O(this,"_map",(t=>{t?this._handles.add([Z(t.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),Z(t.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)}))],e._mapEventHandlesKey):this._handles.remove(e._mapEventHandlesKey)}),{sync:!0}),O(this,"_scene",(t=>{t?this._handles.add([Z(t.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),Z(t.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)}))],e._sceneEventHandlesKey):this._handles.remove(e._sceneEventHandlesKey)}),{sync:!0})]);const{webMap:n,webScene:o,initialViewMode:r,map:p,basemapOptions:h}=a;if(this._webMap=n,this._webScene=o,this._webMapItem=de(n),this._webSceneItem=de(o),this.initialViewMode=r,$(p)&&o)throw new i("Cannot specify webScene property if map is initialized to a WebScene instance.");if(D(p)&&n)throw new i("Cannot specify webMap property if map is initialized to a 2D Map instance.");if($(p)||U(p)||D(p))this.assignProperties({basemapOptions:h}),this._skipBasemapOptions=!!h;else{const{layerExtensions:e,tableExtensions:t,groundExtension:s,basemapOptions:i,basemapExtension:n,...o}=a;this._deferredProperties={layerExtensions:e,tableExtensions:t,groundExtension:s,basemapOptions:i,basemapExtension:n},a=o,i&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(a),this._handles.add([O(this,"map.basemap",(()=>this._onBasemapChange()),{sync:!0}),O(this,"map.ground",(()=>this._onGroundChange()),{sync:!0})]),this.allLayerExtensions=new me(this),this.map?.basemap&&this._onBasemapChange()}getLayerExtensionsForView(e=this.viewMode){return(("map"===e?this._map:this._scene)?.layers.toArray()??[]).map((e=>this._layerExtensions._forLayer(e))).filter((e=>!e.dynamicallyAddedLayer))}getAllFeatureSources(e=()=>!0){const t=[],s=a=>{a.hasFeatures&&t.push(a);for(const t of a.sublayerExtensions.initializedItems.filter(e).toArray())i(t);if(W(a))for(const t of a.layerExtensions.initializedItems.filter(e).toArray())s(t)},i=s=>{t.push(s);for(const t of s.sublayerExtensions.initializedItems.filter(e).toArray())i(t)};for(const t of this.layerExtensions.initializedItems.filter(e).toArray())s(t);for(const s of this.tableExtensions.initializedItems.filter(e).toArray())t.push(s);if(this.basemapExtension){for(const t of this.basemapExtension.baseLayerExtensions.initializedItems.filter(e).toArray())s(t);for(const t of this.basemapExtension.referenceLayerExtensions.initializedItems.filter(e).toArray())s(t)}return t}isSupportedViewMode(e){return e===this.viewMode||!(!this.webMap&&!this.webScene)&&("scene"===e?!!this.webScene:!!this.webMap)}async switchViewMode(e){if(j("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),await this.switchMap(t),A(this,"viewMode"),A(this,"title")}async switchMap(t){if(j("newMap",t).isNotMissing(),t===this.map)return;if(!this.map)return void this._setMap(t);this._layerViews.removeAll(),"map"===this.viewMode?this._handles.remove(e._mapEventHandlesKey):this._handles.remove(e._sceneEventHandlesKey),this._isSwitchingMap=!0,this.isInitialized&&await be(t),this._preserveBasemapAndGround(t);const s=new Map(this.map.layers.map((e=>[e,this.layerExtensions.forLayer(e)]))),i=new Map(this.map.tables.map((e=>[e,this.tableExtensions.forTable(e)]))),{basemapExtension:a}=this;this._setMap(t),this._updateBookmarks();const n=[];for(const e of this.map.layers.toArray()){const t=[...J(s.entries(),(([t])=>G(t,e)))];if(1===t.length){const[s]=t;n.push((async()=>{const t=s[1];await t._switchLayer(e),this._layerExtensions._register(t)})())}else{const t=this._layerExtensions._forLayer(e);t&&t.layer!==e&&n.push(t._switchLayer(e))}}for(const e of this.map.tables.toArray()){const t=[...J(i.entries(),(([t])=>G(t,e)))];if(1===t.length){const[s]=t;n.push((async()=>{const t=s[1];await t._switchTable(e),this.tableExtensions.add(t)})())}else{const t=this.tableExtensions.forTable(e);t&&t.table!==e&&n.push(t._switchTable(e))}}this.map.basemap&&a&&V(this.map.basemap,a.basemap)&&n.push((async()=>{await a._switchBasemap(this.map.basemap),this.basemapExtension=a})()),await Promise.all(n),this.isInitialized&&(a&&a!==this.basemapExtension&&(this.basemapOptions.includes(a)||await a.destroy()),await this._initializeChildren()),this._isSwitchingMap=!1}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new n("Cannot unset both webMap and webScene.");const t=this._map?.basemap;this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=de(e),await N(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._cleanPreviousBasemapOptions(t),A(this,"webMap"),A(this,"initialViewMode"),A(this,"title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new n("Cannot unset both webMap and webScene.");const t=this._scene?.basemap;this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=de(e),await N(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._cleanPreviousBasemapOptions(t),A(this,"webScene"),A(this,"initialViewMode"),A(this,"title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _onDestroy(){await Promise.all([...Array.from(this._layerExtensions,(e=>e.destroy())),...Array.from(this.tableExtensions,(e=>e.destroy())),...Array.from(this._basemapOptions,(e=>e.destroy())),...this._groundExtension?[this._groundExtension.destroy()]:[]]),this._layerExtensions.destroy(),this.tableExtensions.destroy(),this.allLayerExtensions.destroy(),this._basemapOptions.destroy(),this._bookmarks.destroy(),this._layerViews.destroy(),await super._onDestroy()}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{const e=(await import("@arcgis/core/WebScene")).default;le(this.webScene)?(this._webSceneItem.type="Web Scene",this._scene=new e({portalItem:this._webSceneItem})):this._scene=e.fromJSON(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{const e=(await import("@arcgis/core/WebMap")).default;le(this.webMap)?(this._webMapItem.type="Web Map",this._map=new e({portalItem:this._webMapItem})):this._map=e.fromJSON(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t="map"===this.viewMode,s=(t?this._scene:this._map)?.layers.toArray()??[],i=e.filter((e=>!s.includes(e.layer)&&!s.some((t=>e.layer&&G(t,e.layer)))));ae(this.layerExtensions,i)}},serialize:e=>{if(this._deferredProperties?.layerExtensions)return this._deferredProperties.layerExtensions;{const t="map"===this.viewMode,s=(t?this._map:this._scene)?.layers.toArray();let i=(t?this._scene:this._map)?.layers.toArray()??[];return i=i.filter((e=>!s.find((t=>G(t,e))))),this.layerExtensions.concat(i.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>"initial"!==e||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?R(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(d(e)?e:_.create(e),t)},onMatch:(e,t,s,i)=>{d(t)||e.assignProperties(t),s!==i&&this.tableExtensions.reorder(e,i)},equals:(e,t)=>d(t)?t===e:!!_._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=>{if(this.map)if(e)if(o(e))this.basemapExtension=e;else{if(this.basemapExtension)return this.basemapExtension.assignPropertiesAsync(e);this.basemapExtension=ee.create(e)}else this.basemapExtension=void 0;else 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:(R(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(o(e)?e:ee.create(e),t)},onMatch:(e,t,s,i)=>{o(t)||e.assignProperties(t),s!==i&&this.basemapOptions.reorder(e,i)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(o(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const s=e.toJSON();return V(s.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&Y(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{if(this.map){if(!p(e))return this.groundExtension.assignPropertiesAsync(e);this.groundExtension=e}else 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=>r(e)?e:new te(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?m(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=x.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>{b.lookup=new WeakMap;const e=this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),t=this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})));return b.lookup=void 0,e.length>0||t.length>0?{operationalLayers:e,tables:t}:{}},deserialize:e=>{if(!this.map)throw new i("Cannot specify JSON object for the 'map' property. It must be an ArcGIS API Map instance. To specify JSON, use 'webMap' or 'webScene' instead.");if(D(e)||U(e)||$(e)){if(e!==this.map)throw new i("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})()}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,s){await Y(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let i=e;const a=this.basemapOptions.find((e=>V(e.basemap,i.baseMap)));a&&(t.basemap=a.basemap,i={...i,baseMap:{...i.baseMap,title:t.basemap.title}}),$(t)?await f(i,t,s):await c(i,t,s)}_createFormatSettings(){return new y}_createLayerExtensionCollection(){return new ne(this)}_createTableExtensionCollection(){return new he(this)}async _onInitialize(){await super._onInitialize();const{basemapOptions:e,basemapExtension:t,webMap:s,webScene:i,...a}=this._deferredProperties??{};if(this.map||("scene"===this.initialViewMode?(await this._createScene(),this._setMap(this._scene)):(await this._createMap(),this._setMap(this._map))),this._webMapItem||this._webSceneItem?(await Promise.all([be(this.map),N(this._webMapItem),N(this._webSceneItem)]),_e(this._webMapItem,"webMap","Web Map"),_e(this._webSceneItem,"webScene","Web Scene")):await be(this.map),t&&(!o(t)&&t.basemap?this.basemapExtension=ee.create(t):await this.assignPropertiesAsync({basemapExtension:t}),await this.basemapExtension._createBackingBasemap()),e){const t=e.find((e=>o(e)&&V(this.map.basemap,e.toJSON().basemap)));if(t){const e=t.toJSON().basemap?.id??t.basemap?.id,s=t.toJSON().basemap?.title;await t._switchBasemap(this.map.basemap),this.basemapExtension=t,e&&(this.map.basemap.id=e),s&&(this.map.basemap.title=s)}await this.assignPropertiesAsync({basemapOptions:e})}await this.assignPropertiesAsync(a),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks();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 Y(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new s(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>this.layerExtensions.remove(e);const t=new s(this.tableExtensions.filter((e=>!!e.table)));if(t.remove=e=>this.tableExtensions.remove(e),yield e,yield t,this.basemapExtension){const e=new s;e.add(this.basemapExtension),yield e}const i=new s;i.add(this.groundExtension),yield i}_preserveBasemapAndGround(e){(!e.basemap||H(e.basemap))&&this.map?.basemap&&H(this.map.basemap)&&(e.basemap=this.map.basemap),this.map?.ground&&e.ground&&L(this.map.ground,e.ground)&&(e.ground=this.map.ground)}_initMapFromProperties(e){const t=e.map;D(t)||U(t)||$(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!le(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!le(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){$(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),A(this,"map")}_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=>this.map.basemap===e.basemap));if(!e){const t=this.basemapOptions.find((e=>V(e.basemap,this.map.basemap)));t?(e=t,e._switchBasemap(this.map.basemap)):(e=ee.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0))}e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;A(this,"basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.map.ground&&this.groundExtension.ground===this.map.ground)return void(this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,this.groundExtension));{const e=this.groundExtension,t=e.ground;e._setMapExtension(void 0),this.isSwitchingMap&&t&&t!==this._map?.ground&&t!==this._scene?.ground&&t!==this.map?.ground&&(this._groundExtensions.delete(t),e.destroy())}}this.map.ground&&!this._groundExtensions.has(this.map.ground)&&this._groundExtensions.set(this.map.ground,se.create({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e&&e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,A(this,"groundExtension")}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e?.isWebMercator&&await Y([v.SATELLITE,v.HYBRID_VECTOR,v.STREETS_VECTOR,v.TOPO_VECTOR,v.STREETS_NAVIGATION_VECTOR,v.STREETS_NIGHT_VECTOR,v.TERRAIN_VECTOR,v.DARK_GRAY_VECTOR,v.GRAY_VECTOR,v.OCEANS_VECTOR,v.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await B(e);V(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(ee.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)}_cleanPreviousBasemapOptions(e){if(e&&!C(e))for(let t=this._basemapOptions.length-1;t>=0;t--){const s=this._basemapOptions.getItemAt(t),i=V(s.basemap,e),a=V(s.basemap,this._map?.basemap)||V(s.basemap,this._scene?.basemap);i&&!a&&this._basemapOptions.removeAtInternal(t)}}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),U(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new te({source:"map",title:e.name,viewpoint:e.viewpoint}))})):$(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},s=new te(t);this.bookmarks.add(s)}))}};re=e=t([g],re);export{re as MapExtension};class pe extends w{isExplicitlyModified=!1;_mapExtension;constructor(e){super(new s),this._mapExtension=e}add(e,t){return super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e),this}addMany(e,t){return super.addMany(e,t),this.isExplicitlyModified=!0,this}addInternal(e,t,s=!0){const i=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-7):e};let a;if(e.basemap){const t=i(e.basemap.id);if(a=C(e.basemap)?this.findIndex((e=>i(e.basemap?.id)===t)):this.findIndex((t=>V(t.basemap,e.basemap))),a>=0){if(!s)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(){return 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 he extends w{get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new T(new s)}_mapExtension;_tableExtensionMap=new WeakMap;_uninitializedTableExtensions=new Set;_onChangeMapTablesHandle=new P((()=>Q(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)}))));_onBeforeAddMapTablesHandle=new P((()=>z(this._mapExtension,"map.tables",["before-add",e=>this.emit("before-add",{...e,item:this._forTable(e.item)})])));_onBeforeRemoveMapTablesHandle=new P((()=>z(this._mapExtension,"map.tables",["before-remove",e=>this.emit("before-remove",{...e,item:this._forTable(e.item)})])));_onBeforeChangesMapTablesHandle=new P((()=>z(this._mapExtension,"map.tables",["before-changes",e=>this.emit("before-changes",{...e})])));_onAfterAddMapTablesHandle=new P((()=>z(this._mapExtension,"map.tables",["after-add",e=>this.emit("after-add",{...e,item:this._forTable(e.item)})],(e=>{if(null!=e)for(const t of e)this.emit("after-add",{item:this._forTable(t)})}))));_onAfterRemoveMapTablesHandle=new P((()=>z(this._mapExtension,"map.tables",["after-remove",e=>this.emit("after-remove",{...e,item:this._forTable(e.item)})],((e,t)=>{if(null!=t)for(const e of t)this.emit("after-remove",{item:this._forTable(e)})}))));_onAfterChangesMapTablesHandle=new P((()=>z(this._mapExtension,"map.tables",["after-changes",e=>this.emit("after-changes",{...e,target:this})],(()=>{this.emit("after-changes",{target:this})}))));constructor(e){super(),this._mapExtension=e,S(this,"length",(()=>O(this._mapExtension,"map.tables.length",(()=>A(this,"length")),{sync:!0})))}on(e,t){const s=[];return"change"===e?s.push(this._onChangeMapTablesHandle.add()):"before-add"===e?s.push(this._onBeforeAddMapTablesHandle.add()):"before-remove"===e?s.push(this._onBeforeRemoveMapTablesHandle.add()):"before-changes"===e?s.push(this._onBeforeChangesMapTablesHandle.add()):"after-add"===e?s.push(this._onAfterAddMapTablesHandle.add()):"after-remove"===e?s.push(this._onAfterRemoveMapTablesHandle.add()):"after-changes"===e&&s.push(this._onAfterChangesMapTablesHandle.add()),s.push(super.on(e,t)),I(s)}destroy(){this._onChangeMapTablesHandle.destroy(),this._onBeforeAddMapTablesHandle.destroy(),this._onBeforeRemoveMapTablesHandle.destroy(),this._onBeforeChangesMapTablesHandle.destroy(),this._onAfterAddMapTablesHandle.destroy(),this._onAfterRemoveMapTablesHandle.destroy(),this._onAfterChangesMapTablesHandle.destroy();new Set(this).forEach((e=>this._onRemoved(e))),this._uninitializedTableExtensions.clear(),this._tableExtensionMap=new WeakMap,super.destroy()}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(l.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new he(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return j("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return j("id",e).isNotMissing(),this.find((t=>t._tableId===e))}forTable(e){if(j("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(j("tableX",e).isNotMissing(),e.mapExtension&&e.mapExtension.tableExtensions.remove(e),e._setMapExtension(this._mapExtension),e.table){const s=this._tableExtensionMap.get(e.table);if(this._tableExtensionMap.set(e.table,e),s&&s!==e&&this._onRemoved(s),this._tables.includes(e.table))if(void 0===t){const t={added:[e],moved:[],removed:s?[s]:[],target:this};s&&this.emit("after-remove",{item:s}),this.emit("after-add",{item:e}),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("after-add",{item:e}),this.emit("change",t)}return this._onAdded(e),this}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("after-remove",{item:t}),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){return this._tables.sort(((t,s)=>e(this._forTable(t),this._forTable(s)))),this}_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=_.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class me extends M{get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>W(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}_mapExtension;_onChangeLayerExtensionsHandle=new P((()=>{const e=new WeakMap,t=new Set,i=a=>{const n=new s(a.added).flatten((e=>W(e)?e.layerExtensions:[])),o=new s(a.moved).flatten((e=>W(e)?e.layerExtensions:[])),r=new s(a.removed).flatten((e=>W(e)?e.layerExtensions:[]));for(const s of n)if(!e.has(s)&&W(s)){const a=s.layerExtensions.on("change",i);e.set(s,a),t.add(a)}for(const s of r){const i=e.get(s);i&&(i.remove(),e.delete(s),t.delete(i))}this.emit("change",{added:n.toArray(),moved:o.toArray(),removed:r.toArray()})};t.add(this._mapExtension.layerExtensions.on("change",i));const a=this._mapExtension.layerExtensions.flatten((e=>W(e)?e.layerExtensions:[]));for(const s of a)if(W(s)){const a=s.layerExtensions.on("change",i);e.set(s,a),t.add(a)}return t.add(Q(this._mapExtension,"basemapExtension.baseLayerExtensions",(e=>{this.emit("change",{...e})}))),t.add(Q(this._mapExtension,"basemapExtension.referenceLayerExtensions",(e=>{this.emit("change",{...e})}))),t.add(this._mapExtension.groundExtension.layerExtensions.on("change",(e=>{this.emit("change",{...e})}))),I(t)}));_onAfterAddLayerExtensionsHandle=new P((()=>{const e=new WeakMap,t=new Set,s=s=>{const i=e.get(s);i&&(i.remove(),e.delete(s),t.delete(i))},i=e=>{const t=e.item;if(W(t)){const e=t.layerExtensions.flatten((e=>W(e)?e.layerExtensions:[]));for(const t of e)s(t)}s(t)},a=s=>{this.emit("after-add",{...s});const n=s.item;if(W(n)){const o=n.layerExtensions.flatten((e=>W(e)?e.layerExtensions:[]));for(const n of o)if(this.emit("after-add",{...s,item:n}),!e.has(n)&&W(n)){const s=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",i),r=I([s,o]);e.set(n,r),t.add(r)}}};t.add(this._mapExtension.layerExtensions.on("after-add",a)),t.add(this._mapExtension.layerExtensions.on("after-remove",i));const n=this._mapExtension.layerExtensions.flatten((e=>W(e)?e.layerExtensions:[]));for(const s of n)if(W(s)){const n=s.layerExtensions.on("after-add",a),o=s.layerExtensions.on("after-remove",i),r=I([n,o]);e.set(s,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-add",e=>this.emit("after-add",{...e})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-add",e=>this.emit("after-add",{...e})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-add",(e=>{this.emit("after-add",{...e})}))),I(t)}));_onAfterRemoveLayerExtensionsHandle=new P((()=>{const e=new WeakMap,t=new Set,s=s=>{const i=e.get(s);i&&(i.remove(),e.delete(s),t.delete(i))},i=e=>{this.emit("after-remove",{...e});const t=e.item;if(W(t)){const i=t.layerExtensions.flatten((e=>W(e)?e.layerExtensions:[]));for(const t of i)this.emit("after-remove",{...e,item:t}),s(t)}s(t)},a=s=>{const n=s.item;if(W(n)){const s=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",i),r=I([s,o]);e.set(n,r),t.add(r)}};t.add(this._mapExtension.layerExtensions.on("after-remove",i)),t.add(this._mapExtension.layerExtensions.on("after-add",a));const n=this._mapExtension.layerExtensions.flatten((e=>W(e)?e.layerExtensions:[]));for(const s of n)if(W(s)){const n=s.layerExtensions.on("after-add",a),o=s.layerExtensions.on("after-remove",i),r=I([n,o]);e.set(s,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-remove",(e=>{this.emit("after-remove",{...e})}))),I(t)}));constructor(e){super(),this._mapExtension=e}on(e,t){const s=[];return"change"===e?s.push(this._onChangeLayerExtensionsHandle.add()):"after-add"===e?s.push(this._onAfterAddLayerExtensionsHandle.add()):"after-remove"===e&&s.push(this._onAfterRemoveLayerExtensionsHandle.add()),s.push(super.on(e,t)),I(s)}destroy(){this._onChangeLayerExtensionsHandle.destroy(),this._onAfterAddLayerExtensionsHandle.destroy(),this._onAfterRemoveLayerExtensionsHandle.destroy(),super.destroy()}findById(e){return j("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return j("id",e).isNotMissing(),this.find((t=>t._layerId===e))}forLayer(e){return j("layer",e).isNotMissing(),this.findByLayerId(e.id)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function de(e){if(!(null==e||"object"==typeof e&&e?.baseMap))return X(e)}function le(e){return"object"!=typeof e||e&&!e.baseMap}function _e(e,t,s){if(e?.type&&e.type!==s)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}async function be(e){await N(e),e.basemap&&(await N(e.basemap),e.basemap.baseLayers.filter((e=>F(e))).map((e=>{const t=e;return t.activeLayer.imageFormat=t.activeLayer.imageFormat??(t.activeLayer.imageFormats?.length>0?t.activeLayer.imageFormats[0]:""),t.activeLayer.styleId=t.activeLayer.styleId??"",t})),e.basemap.id=k(e.basemap)??e.basemap.id)}
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{serializable as r}from"../support/Serializable.js";import{ArcGISSublayerExtension as s}from"./ArcGISSublayerExtension.js";import{SublayerExtension as a}from"./_SublayerExtension.js";let t=class extends s{get layerExtension(){return super.layerExtension}get sublayerExtensions(){return super.sublayerExtensions}get canChangeOpacity(){const e=this.layerExtension.layer.capabilities;return!(this.sublayerExtensions.length>0)&&e?.exportMap.supportsDynamicLayers}get canChangeRenderer(){const e=this.layerExtension.layer.capabilities;return e?.exportMap.supportsDynamicLayers}get canChangeLabels(){const e=this.layerExtension.layer.capabilities;return e?.exportMap.supportsDynamicLayers}get canChangeDefinitionExpression(){return!0}async _switchSublayer(e){e.layer?.capabilities?.exportMap?.supportsDynamicLayers&&(e.labelsVisible=this.sublayer.labelsVisible),await super._switchSublayer(e)}async _onInitialize(){await super._onInitialize(),this.sublayer?.renderer&&"tile"!==this.sublayer?.layer?.type&&this.sublayer?.layer?.capabilities?.exportMap?.supportsDynamicLayers&&(this.sublayer.renderer=this.sublayer.renderer.clone())}_createSublayerExtension(e){return a.factory.create(e,"ArcGISMapServiceSublayer")}};t=e([r],t);export{t as MapImageSublayerExtension};
1
+ import{__decorate as e}from"tslib";import{serializable as r}from"../support/Serializable.js";import{ArcGISSublayerExtension as s}from"./ArcGISSublayerExtension.js";import{SublayerExtension as a}from"./_SublayerExtension.js";let t=class extends s{get layerExtension(){return super.layerExtension}get sublayerExtensions(){return super.sublayerExtensions}get canChangeOpacity(){const e=this.layerExtension.layer.capabilities;return!(this.sublayerExtensions.length>0)&&e?.exportMap.supportsDynamicLayers}get canChangeRenderer(){const e=this.layerExtension.layer.capabilities;return e?.exportMap.supportsDynamicLayers}get canChangeLabels(){const e=this.layerExtension.layer?.capabilities,r=!!e?.exportMap.supportsDynamicLayers,s=this.sublayer?.sourceJSON?.drawingInfo?.labelingInfo?.length>0;return r&&!s}get canChangeDefinitionExpression(){return!0}async _switchSublayer(e){e.layer?.capabilities?.exportMap?.supportsDynamicLayers&&(e.labelsVisible=this.sublayer.labelsVisible),await super._switchSublayer(e)}async _onInitialize(){await super._onInitialize(),this.sublayer?.renderer&&"tile"!==this.sublayer?.layer?.type&&this.sublayer?.layer?.capabilities?.exportMap?.supportsDynamicLayers&&(this.sublayer.renderer=this.sublayer.renderer.clone())}_createSublayerExtension(e){return a.factory.create(e,"ArcGISMapServiceSublayer")}};t=e([r],t);export{t as MapImageSublayerExtension};
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{serializable as r}from"../support/Serializable.js";import{watch as s}from"../support/observableUtils.js";import{isMapNotesSublayer as i}from"../utilities/_layers.js";import{SublayerExtension as n,SublayerSchema as o,SubSublayerExtensionCollection as a}from"./_SublayerExtension.js";const l="Map Notes sublayers cannot be created or configured from JSON. They must be created with an ESRI MapNotesSublayer object.",u="SublayerExtension collection for MapNotesLayerExtension is readonly";let y=class extends n{get sublayer(){return super.sublayer}get layerExtension(){return super.layerExtension}get sublayerExtensions(){return super.sublayerExtensions}get canChangeScale(){return!1}get canChangeOpacity(){return!1}get canToggleVisibility(){return!0}get hasFeatures(){return!0}constructor(e){super(e);const r=e?.sublayer;if(!this.sublayer&&!r?.$ref)throw new t(l);const s=this.sublayer?.layer??this.layerExtension?.layer;s&&s._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(s._fields))}_capabilities(){return{...super._capabilities(),supportsQuery:!0,supportsStandardizedQueries:!0}}_createSchema(){return new h(this)}async _onInitialize(){await super._onInitialize(),s(this,"sublayer.layer",(e=>{e._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(e._fields))}))}_isSupportedSublayer(e){return i(e)}_createSublayer(e){throw new t(l)}async _applySublayerProperties(e,t){}_createSublayerExtensionCollection(){return new p(this)}_serializeSublayer(e){return this._createSublayerRef()}};y=e([r],y);export{y as MapNotesSublayerExtension};class p extends a{get _layerExtension(){return super._layerExtension}constructor(e,t){super(e,"__GCX_NO_VALUE")}add(e,r){throw new t(u)}removeAt(e){throw new t(u)}reorder(e,r){throw new t(u)}reverse(){throw new t(u)}sort(e){throw new t(u)}splice(e,r,...s){throw new t(u)}_createClone(){return new p(this._parent)}_createSublayerExtension(e){return this._layerExtension._createSublayerExtension(e)}}let h=class extends o{get geometryType(){return this._getSetting("geometryType",this._getDefaultGeometryType())}set geometryType(e){this._setSetting("geometryType",e)}_getDefaultGeometryType(){const e=this._sublayerExtension.sublayer?.graphics.getItemAt(0)?.geometry?.type;return"Areas"===this._sublayerExtension.title||"Polygons"===this._sublayerExtension.title||"polygon"===e?"polygon":"Lines"===this._sublayerExtension.title||"Polylines"===this._sublayerExtension.title||"polyline"===e?"polyline":"Points"===this._sublayerExtension.title||"Text"===this._sublayerExtension.title||"point"===e?"point":"Multipoints"===this._sublayerExtension.title||"multipoint"===e?"multipoint":void 0}};h=e([r],h);export{h as MapNotesSublayerExtensionSchema};
1
+ import{__decorate as e}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{serializable as r}from"../support/Serializable.js";import{watch as s}from"../support/observableUtils.js";import{isMapNotesSublayer as i}from"../utilities/_layers.js";import{SublayerExtension as n,SublayerSchema as o,SubSublayerExtensionCollection as a}from"./_SublayerExtension.js";const l="Map Notes sublayers cannot be created or configured from JSON. They must be created with an ESRI MapNotesSublayer object.",u="SublayerExtension collection for MapNotesLayerExtension is readonly";let y=class extends n{get sublayer(){return super.sublayer}get layerExtension(){return super.layerExtension}get sublayerExtensions(){return super.sublayerExtensions}get canChangeScale(){return!1}get canChangeOpacity(){return!1}get canToggleVisibility(){return!0}get hasFeatures(){return!0}constructor(e){super(e);const r=e?.sublayer;if(!this.sublayer&&!r?.$ref)throw new t(l);const s=this.sublayer?.layer??this.layerExtension?.layer;s&&s._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(s._fields))}_capabilities(){return{...super._capabilities(),supportsQuery:!0,supportsStandardizedQueries:!0}}_createSchema(){return new h(this)}async _onInitialize(){await super._onInitialize(),this._handles.add(s(this,"sublayer.layer",(e=>{e._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(e._fields))})))}_isSupportedSublayer(e){return i(e)}_createSublayer(e){throw new t(l)}async _applySublayerProperties(e,t){}_createSublayerExtensionCollection(){return new p(this)}_serializeSublayer(e){return this._createSublayerRef()}};y=e([r],y);export{y as MapNotesSublayerExtension};class p extends a{get _layerExtension(){return super._layerExtension}constructor(e,t){super(e,"__GCX_NO_VALUE")}add(e,r){throw new t(u)}removeAt(e){throw new t(u)}reorder(e,r){throw new t(u)}reverse(){throw new t(u)}sort(e){throw new t(u)}splice(e,r,...s){throw new t(u)}_createClone(){return new p(this._parent)}_createSublayerExtension(e){return this._layerExtension._createSublayerExtension(e)}}let h=class extends o{get geometryType(){return this._getSetting("geometryType",this._getDefaultGeometryType())}set geometryType(e){this._setSetting("geometryType",e)}_getDefaultGeometryType(){const e=this._sublayerExtension.sublayer?.graphics.getItemAt(0)?.geometry?.type;return"Areas"===this._sublayerExtension.title||"Polygons"===this._sublayerExtension.title||"polygon"===e?"polygon":"Lines"===this._sublayerExtension.title||"Polylines"===this._sublayerExtension.title||"polyline"===e?"polyline":"Points"===this._sublayerExtension.title||"Text"===this._sublayerExtension.title||"point"===e?"point":"Multipoints"===this._sublayerExtension.title||"multipoint"===e?"multipoint":void 0}};h=e([r],h);export{h as MapNotesSublayerExtensionSchema};
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import t from"@arcgis/core/layers/support/CodedValueDomain";import r from"@arcgis/core/popup/ExpressionInfo";import i from"@arcgis/core/popup/FieldInfo";import{serializable as s}from"../support/Serializable.js";import{notifyChange as a,watch as n}from"../support/observableUtils.js";import{ReadOnlyCollection as o}from"../utilities/ReadOnlyCollection.js";import{isPointCloudLayer as l}from"../utilities/_layers.js";import{LayerExtension as p,LayerExtensionSchema as u}from"./_LayerExtension.js";import{ArrayWrappedCollection as d}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as f}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields as m}from"./support/layers.js";let c=class extends p{_enableClientSideData;get layer(){return super.layer}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}get hasFeatures(){return!0}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get canChangeOpacity(){return!1}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();return e&&delete e.opacity,e}async _onInitialize(){await super._onInitialize(),this._updateClientSideFields(),n(this,"layer",(()=>{this._updateClientSideFields()}),{sync:!0})}async _postInitialize(){await super._postInitialize(),await this._setDecodedPopupFieldInfos()}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"PointCloudLayer"}},enableClientSideData:{serializeModes:["initial"],default:!0}}}_isSupportedLayer(e){return l(e)}_createSchema(){return new _(this)}_createFeatureSettings(){return new f(this)}_updateClientSideFields(){this.layer&&this._enableClientSideData&&m(this.layer,this.featureSettings.outFields)}_updateFieldExpressions(e,t){if(this.schema.fields.some((t=>t.name===e))){const s=this.featureSettings.popupTemplate.fieldInfos?.find((t=>t.fieldName===e));if(!s)return;s.visible=!1,this.featureSettings.popupTemplate.fieldInfos=[...this.featureSettings.popupTemplate.fieldInfos,new i({fieldName:`expression/__gcx-${e.toLowerCase()}`})],this.featureSettings.popupTemplate.expressionInfos=[...this.featureSettings.popupTemplate.expressionInfos,new r({expression:t,name:`__gcx-${e.toLowerCase()}`,returnType:"string",title:e})]}}async _setDecodedPopupFieldInfos(){const e=this.schema.fields.find((e=>"CLASS_CODE"===e.name));if(e){const r=await this.layer.queryCachedStatistics("CLASS_CODE"),i=r?.labels?.labels;i&&(e.domain=new t({codedValues:i.map((e=>({code:e.value,name:e.label})))}))}null==this.featureSettings.popupTemplate.expressionInfos&&(this.featureSettings.popupTemplate.expressionInfos=[]);this._updateFieldExpressions("RGB","var rgb = $feature.RGB; var red = Floor(rgb/65536,0); var green = Floor((rgb-(red*65536))/256,0); var blue = rgb-(red*65536)-(green*256); return 'rgb(' + red + ',' + green + ',' + blue + ')';");this._updateFieldExpressions("RETURNS","var returnnumber = $feature.RETURNS % 16; var numberofreturns = Floor($feature.RETURNS / 16); return returnnumber + ' / ' + numberofreturns;")}};c=e([s],c);export{c as PointCloudLayerExtension};let _=class extends u{_fieldCollection;constructor(e){super(e),this._fieldCollection=new o(new d({parent:e,targetProperty:"layer",arrayProperty:"fields"})),a(this,"_fields")}get _fields(){return this._fieldCollection}_getPropertyBindings(){return{spatialReference:{property:"spatialReference",readonly:!0}}}};_=e([s],_);
1
+ import{__decorate as e}from"tslib";import t from"@arcgis/core/layers/support/CodedValueDomain";import r from"@arcgis/core/popup/ExpressionInfo";import i from"@arcgis/core/popup/FieldInfo";import{serializable as s}from"../support/Serializable.js";import{notifyChange as a,watch as n}from"../support/observableUtils.js";import{ReadOnlyCollection as o}from"../utilities/ReadOnlyCollection.js";import{isPointCloudLayer as l}from"../utilities/_layers.js";import{LayerExtension as p,LayerExtensionSchema as u}from"./_LayerExtension.js";import{ArrayWrappedCollection as d}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as f}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields as m}from"./support/layers.js";let c=class extends p{_enableClientSideData;get layer(){return super.layer}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}get hasFeatures(){return!0}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get canChangeOpacity(){return!1}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();return e&&delete e.opacity,e}async _onInitialize(){await super._onInitialize(),this._updateClientSideFields(),this._handles.add(n(this,"layer",(()=>{this._updateClientSideFields()}),{sync:!0}))}async _postInitialize(){await super._postInitialize(),await this._setDecodedPopupFieldInfos()}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"PointCloudLayer"}},enableClientSideData:{serializeModes:["initial"],default:!0}}}_isSupportedLayer(e){return l(e)}_createSchema(){return new y(this)}_createFeatureSettings(){return new f(this)}_updateClientSideFields(){this.layer&&this._enableClientSideData&&m(this.layer,this.featureSettings.outFields)}_updateFieldExpressions(e,t){if(this.schema.fields.some((t=>t.name===e))){const s=this.featureSettings.popupTemplate.fieldInfos?.find((t=>t.fieldName===e));if(!s)return;s.visible=!1,this.featureSettings.popupTemplate.fieldInfos=[...this.featureSettings.popupTemplate.fieldInfos,new i({fieldName:`expression/__gcx-${e.toLowerCase()}`})],this.featureSettings.popupTemplate.expressionInfos=[...this.featureSettings.popupTemplate.expressionInfos,new r({expression:t,name:`__gcx-${e.toLowerCase()}`,returnType:"string",title:e})]}}async _setDecodedPopupFieldInfos(){const e=this.schema.fields.find((e=>"CLASS_CODE"===e.name));if(e){const r=await this.layer.queryCachedStatistics("CLASS_CODE"),i=r?.labels?.labels;i&&(e.domain=new t({codedValues:i.map((e=>({code:e.value,name:e.label})))}))}null==this.featureSettings.popupTemplate.expressionInfos&&(this.featureSettings.popupTemplate.expressionInfos=[]);this._updateFieldExpressions("RGB","var rgb = $feature.RGB; var red = Floor(rgb/65536,0); var green = Floor((rgb-(red*65536))/256,0); var blue = rgb-(red*65536)-(green*256); return 'rgb(' + red + ',' + green + ',' + blue + ')';");this._updateFieldExpressions("RETURNS","var returnnumber = $feature.RETURNS % 16; var numberofreturns = Floor($feature.RETURNS / 16); return returnnumber + ' / ' + numberofreturns;")}};c=e([s],c);export{c as PointCloudLayerExtension};let y=class extends u{_fieldCollection;constructor(e){super(e),this._fieldCollection=new o(new d({parent:e,targetProperty:"layer",arrayProperty:"fields"}),{destroyBackingCollection:!0}),a(this,"_fields")}destroy(){this._fieldCollection.destroy(),super.destroy()}get _fields(){return this._fieldCollection}_getPropertyBindings(){return{spatialReference:{property:"spatialReference",readonly:!0}}}};y=e([s],y);
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{_isRouteLayerJson as r}from"../json/FeatureLayerJson.js";import{applyJsonToLayer as t}from"../json/LayerJson.js";import{serializable as a}from"../support/Serializable.js";import{watch as s}from"../support/observableUtils.js";import{isRouteLayer as o}from"../utilities/_layers.js";import{checkArg as i}from"../utilities/checkArg.js";import{LayerExtension as l,LayerExtensionSchema as p}from"./_LayerExtension.js";export const ROUTE_LAYER_TYPE="route-layer";let n=class extends l{get hasFeatures(){return!0}get layer(){return super.layer}get supportsSublayers(){return!1}constructor(e){super(e),this.layer&&this.layer._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(this.layer._fields))}async _onInitialize(){return s(this,"layer",(e=>{e._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(e._fields))})),super._onInitialize()}_applyLayerProperties(e,t){return e.hasOwnProperty("featureCollection")&&i("layerJson",e).satisfies(r),super._applyLayerProperties(e,t)}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISFeatureLayer",featureCollectionType:"route"}}}}_isSupportedLayer(e){return o(e)}async _applyPortalItemProperties(e){if("Feature Collection"!==e.type)throw new Error(`Cannot create Route Layer from Portal item that has type: ${e.type}`);const a=await e.fetchData();if(!r({layerType:"ArcGISFeatureLayer",featureCollection:a}))throw new Error("Cannot create Route Layer from Portal item that contains a non route layer feature collection");return t({layerType:"ArcGISFeatureLayer",featureCollection:a},this.layer)}_capabilities(){return{supportsAdd:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!0,supportsUpdate:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!0}}_getSerializableLayerType(){return"route-layer"}_getSerializableRefLayerProperties(){return this.layer?.featureCollectionType?{featureCollectionType:this.layer.featureCollectionType}:{}}_createSchema(){const e=new y(this);return e.primaryKeyField="globalid",e}};n=e([a],n);export{n as RouteLayerExtension};let y=class extends p{get hasGeometry(){return!0}};y=e([a],y);export{y as RouteLayerExtensionSchema};
1
+ import{__decorate as e}from"tslib";import{_isRouteLayerJson as r}from"../json/FeatureLayerJson.js";import{applyJsonToLayer as t}from"../json/LayerJson.js";import{serializable as a}from"../support/Serializable.js";import{watch as s}from"../support/observableUtils.js";import{isRouteLayer as i}from"../utilities/_layers.js";import{checkArg as o}from"../utilities/checkArg.js";import{LayerExtension as l,LayerExtensionSchema as p}from"./_LayerExtension.js";export const ROUTE_LAYER_TYPE="route-layer";let n=class extends l{get hasFeatures(){return!0}get layer(){return super.layer}get supportsSublayers(){return!1}constructor(e){super(e),this.layer&&this.layer._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(this.layer._fields))}async _onInitialize(){return this._handles.add(s(this,"layer",(e=>{e._fields&&this.schema?.fields&&(this.schema.fields.removeAll(),this.schema.fields.addMany(e._fields))}))),super._onInitialize()}_applyLayerProperties(e,t){return e.hasOwnProperty("featureCollection")&&o("layerJson",e).satisfies(r),super._applyLayerProperties(e,t)}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISFeatureLayer",featureCollectionType:"route"}}}}_isSupportedLayer(e){return i(e)}async _applyPortalItemProperties(e){if("Feature Collection"!==e.type)throw new Error(`Cannot create Route Layer from Portal item that has type: ${e.type}`);const a=await e.fetchData();if(!r({layerType:"ArcGISFeatureLayer",featureCollection:a}))throw new Error("Cannot create Route Layer from Portal item that contains a non route layer feature collection");return t({layerType:"ArcGISFeatureLayer",featureCollection:a},this.layer)}_capabilities(){return{supportsAdd:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!0,supportsUpdate:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!0}}_getSerializableLayerType(){return"route-layer"}_getSerializableRefLayerProperties(){return this.layer?.featureCollectionType?{featureCollectionType:this.layer.featureCollectionType}:{}}_createSchema(){const e=new y(this);return e.primaryKeyField="globalid",e}};n=e([a],n);export{n as RouteLayerExtension};let y=class extends p{get hasGeometry(){return!0}};y=e([a],y);export{y as RouteLayerExtensionSchema};
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{serializable as t}from"../support/Serializable.js";import{notifyChange as r,watch as i}from"../support/observableUtils.js";import{ReadOnlyCollection as s}from"../utilities/ReadOnlyCollection.js";import{isSceneLayer as a}from"../utilities/_layers.js";import{LayerExtension as l,LayerExtensionSchema as n}from"./_LayerExtension.js";import{ArrayWrappedCollection as o}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as p}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields as d}from"./support/layers.js";let u=class extends l{get layer(){return super.layer}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}_enableClientSideData;get renderer(){return this.layer?.renderer}get hasFeatures(){return!0}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeDefinitionExpression(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_capabilities(){return Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!0})}async _onInitialize(){await super._onInitialize(),this._updateClientSideFields(),this._watchHandles.push(i(this,"layer",(()=>{this._updateClientSideFields()}),{sync:!0})),this.layer.associatedLayer||this.layer.outFields||(this.layer.outFields=this.layer.fields.map((e=>e.name)),this.layer.outFields&&!this.layer.outFields.includes(this.layer.objectIdField)&&this.layer.outFields.push(this.layer.objectIdField))}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISSceneServiceLayer"}},enableClientSideData:{serializeModes:["initial"],default:!1}}}_isSupportedLayer(e){return a(e)}_createSchema(){return new y(this)}_createFeatureSettings(){return new p(this)}async _applyPortalItemProperties(e){if("Scene Service"!==e.type)throw new Error(`Cannot create Scene Layer from Portal item that has type: ${e.type}`);if(!e.typeKeywords.includes("3DObject")&&!e.typeKeywords.includes("Point"))throw new Error("Cannot create Scene Layer from Portal item that does not reference a Scene layer");this.layer.url=e.url||this.layer.url}_updateClientSideFields(){this.layer&&this._enableClientSideData&&d(this.layer,this.featureSettings.outFields)}};u=e([t],u);export{u as SceneLayerExtension};let y=class extends n{_fieldsCollection;constructor(e){super(e),this._fieldsCollection=new s(new o({parent:e,targetProperty:"layer",arrayProperty:"fields"})),r(this,"_fields")}_getPropertyBindings(){return{spatialReference:"spatialReference",geometryType:"geometryType"}}get _fields(){return this._fieldsCollection}};y=e([t],y);
1
+ import{__decorate as e}from"tslib";import{serializable as t}from"../support/Serializable.js";import{notifyChange as r,watch as i}from"../support/observableUtils.js";import{ReadOnlyCollection as s}from"../utilities/ReadOnlyCollection.js";import{isSceneLayer as a}from"../utilities/_layers.js";import{LayerExtension as l,LayerExtensionSchema as n}from"./_LayerExtension.js";import{ArrayWrappedCollection as o}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as p}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields as d}from"./support/layers.js";let y=class extends l{get layer(){return super.layer}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}_enableClientSideData;get renderer(){return this.layer?.renderer}get hasFeatures(){return!0}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeDefinitionExpression(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_capabilities(){return Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!0})}async _onInitialize(){await super._onInitialize(),this._updateClientSideFields(),this._handles.add(i(this,"layer",(()=>{this._updateClientSideFields()}),{sync:!0})),this.layer.associatedLayer||this.layer.outFields||(this.layer.outFields=this.layer.fields.map((e=>e.name)),this.layer.outFields&&!this.layer.outFields.includes(this.layer.objectIdField)&&this.layer.outFields.push(this.layer.objectIdField))}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISSceneServiceLayer"}},enableClientSideData:{serializeModes:["initial"],default:!1}}}_isSupportedLayer(e){return a(e)}_createSchema(){return new u(this)}_createFeatureSettings(){return new p(this)}async _applyPortalItemProperties(e){if("Scene Service"!==e.type)throw new Error(`Cannot create Scene Layer from Portal item that has type: ${e.type}`);if(!e.typeKeywords.includes("3DObject")&&!e.typeKeywords.includes("Point"))throw new Error("Cannot create Scene Layer from Portal item that does not reference a Scene layer");this.layer.url=e.url||this.layer.url}_updateClientSideFields(){this.layer&&this._enableClientSideData&&d(this.layer,this.featureSettings.outFields)}};y=e([t],y);export{y as SceneLayerExtension};let u=class extends n{_fieldsCollection;constructor(e){super(e),this._fieldsCollection=new s(new o({parent:e,targetProperty:"layer",arrayProperty:"fields"}),{destroyBackingCollection:!0}),r(this,"_fields")}destroy(){this._fieldsCollection.destroy(),super.destroy()}_getPropertyBindings(){return{spatialReference:"spatialReference",geometryType:"geometryType"}}get _fields(){return this._fieldsCollection}};u=e([t],u);
@@ -51,6 +51,7 @@ export declare class StreamLayerExtension extends LayerExtension<StreamLayerExte
51
51
  export declare class StreamLayerSchema extends LayerExtensionSchema {
52
52
  private readonly _fieldCollection;
53
53
  constructor(layerExtension: StreamLayerExtension);
54
+ destroy(): void;
54
55
  get _fields(): Collection<Field>;
55
56
  /**
56
57
  * Creates the backing collection for fields.
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{applyJsonToLayer as r,layerToJson as t}from"../json/LayerJson.js";import{serializable as i}from"../support/Serializable.js";import{notifyChange as a}from"../support/observableUtils.js";import{ReadOnlyCollection as n}from"../utilities/ReadOnlyCollection.js";import{isStreamLayer as s}from"../utilities/_layers.js";import{LayerExtension as o,LayerExtensionSchema as l}from"./_LayerExtension.js";import{ArrayWrappedCollection as p}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as y}from"./support/PopupTemplateFeatureSettings.js";let c=class extends o{get layer(){return super.layer}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}get hasFeatures(){return!0}get renderer(){return this.layer.renderer}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeDefinitionExpression(){return!0}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:r}=t(this.layer),{definitionExpression:i,drawingInfo:a}=r??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),a&&(e.layerDefinition={...e.layerDefinition,drawingInfo:a}),e}_capabilities(){return{...super._capabilities(),supportsStandardizedQueries:!0}}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISStreamLayer"}}}}_createSchema(){return new u(this)}_isSupportedLayer(e){return s(e)}_createFeatureSettings(){return new m(this)}async _applyPortalItemProperties(e){if("Stream Service"!==e.type)throw new Error(`Cannot create Stream Layer from Portal item that has type: ${e.type}`);this.layer.url=e.url||this.layer.url;const t=await e.fetchData();t&&Object.keys(t).length>0&&await r(t,this.layer)}};c=e([i],c);export{c as StreamLayerExtension};let u=class extends l{_fieldCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),a(this,"_fields")}get _fields(){return this._fieldCollection}_createFieldCollection(){return new n(new p({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"}))}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField"}}};u=e([i],u);export{u as StreamLayerSchema};let m=class extends y{get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.layer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};m=e([i],m);
1
+ import{__decorate as e}from"tslib";import{applyJsonToLayer as t,layerToJson as r}from"../json/LayerJson.js";import{serializable as i}from"../support/Serializable.js";import{notifyChange as a}from"../support/observableUtils.js";import{ReadOnlyCollection as o}from"../utilities/ReadOnlyCollection.js";import{isStreamLayer as s}from"../utilities/_layers.js";import{LayerExtension as n,LayerExtensionSchema as l}from"./_LayerExtension.js";import{ArrayWrappedCollection as p}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as y}from"./support/PopupTemplateFeatureSettings.js";let c=class extends n{get layer(){return super.layer}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}get hasFeatures(){return!0}get renderer(){return this.layer.renderer}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeDefinitionExpression(){return!0}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:t}=r(this.layer),{definitionExpression:i,drawingInfo:a}=t??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),a&&(e.layerDefinition={...e.layerDefinition,drawingInfo:a}),e}_capabilities(){return{...super._capabilities(),supportsStandardizedQueries:!0}}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISStreamLayer"}}}}_createSchema(){return new d(this)}_isSupportedLayer(e){return s(e)}_createFeatureSettings(){return new u(this)}async _applyPortalItemProperties(e){if("Stream Service"!==e.type)throw new Error(`Cannot create Stream Layer from Portal item that has type: ${e.type}`);this.layer.url=e.url||this.layer.url;const r=await e.fetchData();r&&Object.keys(r).length>0&&await t(r,this.layer)}};c=e([i],c);export{c as StreamLayerExtension};let d=class extends l{_fieldCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),a(this,"_fields")}destroy(){this._fieldCollection.destroy(),super.destroy()}get _fields(){return this._fieldCollection}_createFieldCollection(){return new o(new p({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"}),{destroyBackingCollection:!0})}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField"}}};d=e([i],d);export{d as StreamLayerSchema};let u=class extends y{get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.layer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};u=e([i],u);
@@ -12,7 +12,7 @@ import type { Relationship } from "../data/_Relationship";
12
12
  import type { SubtypeGroupLayerJson } from "../json/SubtypeGroupLayerJson.js";
13
13
  import type { PropertyDefs } from "../support/Serializable.js";
14
14
  import { ArcGISRelationshipCollection } from "../support/_ArcGISRelationshipCollection.js";
15
- import type { SubtypeSublayerExtensionCollection, SubtypeSublayerExtensionProperties, SubtypeSublayerExtension } from "./SubtypeSublayerExtension.js";
15
+ import type { SubtypeSublayerExtension, SubtypeSublayerExtensionCollection, SubtypeSublayerExtensionProperties } from "./SubtypeSublayerExtension.js";
16
16
  import type { LayerExtensionProperties, LayerExtensionSchemaPropertyBinding, LayerProperties } from "./_LayerExtension.js";
17
17
  import { LayerExtension, LayerExtensionReadOnlySchema } from "./_LayerExtension.js";
18
18
  /**
@@ -108,6 +108,7 @@ export declare class SubtypeGroupLayerSchema extends LayerExtensionReadOnlySchem
108
108
  private readonly _fieldCollection;
109
109
  private readonly _typesCollection;
110
110
  constructor(layerExtension: LayerExtension);
111
+ destroy(): void;
111
112
  get types(): Collection<FeatureType>;
112
113
  get _fields(): Collection<Field>;
113
114
  /**
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import t from"@arcgis/core/layers/support/FeatureTemplate.js";import r from"@arcgis/core/layers/support/FeatureType.js";import s from"@arcgis/core/rest/support/AttachmentQuery";import{toAttachment as i}from"../data/Attachment.js";import{addAttachment as a,deleteAttachments as l,supportsAttachmentEditing as n}from"../data/support/attachments.js";import{applyJsonToLayer as o,layerToJson as y}from"../json/LayerJson.js";import{serializable as p}from"../support/Serializable.js";import{ArcGISRelationshipCollection as u}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as c}from"../support/_featureEdit.js";import{notifyChange as d,watch as h}from"../support/observableUtils.js";import{ReadOnlyCollection as m}from"../utilities/ReadOnlyCollection.js";import{isFeatureLayer as b,isSubtypeGroupLayer as _}from"../utilities/_layers.js";import{getGdbVersion as f}from"../utilities/_version.js";import{parse as g}from"../utilities/format/number.js";import{caseInsensitiveEquals as S}from"../utilities/string.js";import{onCollectionPropertyChange as C}from"../utilities/watch.js";import{LayerExtension as F,LayerExtensionReadOnlySchema as w}from"./_LayerExtension.js";import{SublayerExtension as j}from"./_SublayerExtension.js";import{ArrayWrappedCollection as x}from"./support/ArrayWrappedCollection.js";import{addOutFields as E}from"./support/layers.js";let I=class extends F{attachmentTypes;get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get layer(){return super.layer}get sublayerExtensions(){return super.sublayerExtensions}get supportsSublayers(){return!0}get sublayersAreReadOnly(){return!1}get hasFeatures(){return!0}get canChangeDefinitionExpression(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_subtypes;_enableClientSideData;constructor(e){super(e),C(this,"layer.sublayers",this._onSubtypeSublayersChange)}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const t=y(this.layer);return t.layers&&(e.layers=t.layers.map((e=>{const{layerDefinition:t,visibility:r,subtypeCode:s,layerType:i}=e,a={layerType:i,visibility:r,subtypeCode:s};return t?.drawingInfo&&(a.layerDefinition={drawingInfo:t.drawingInfo}),a}))),e}_createRelationships(){return new SubtypeGroupLayerRelationshipCollection(this)}async _onInitialize(){await super._onInitialize(),this._updateSubtypes(),this._addDomainsToFields(),await this.relationships.initialize()}async _postInitialize(){await super._postInitialize();this._watchHandles.push(h(this,"layer",(()=>{this._addTemplatesToSublayers(),this._updateClientSideFields()}),{sync:!0,initial:!0}))}_capabilities(){const e=n(this.layer);return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:e,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsAttachmentEditing:e}}_createSublayerExtension(e){return j.factory.create(e,"SubtypeSublayer")}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"SubtypeGroupLayer"}},enableClientSideData:{serializeModes:["initial"],default:!1},attachmentTypes:["initial"]}}_isSupportedLayer(e){return _(e)}_createSchema(){return new T(this)}async _getAttachments(e){if(!this.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=this.layer?.gdbVersion??f(this.layer?.customParameters),a=new s({objectIds:[t]}),l=await this.layer.queryAttachments(a);return l?.[t]?.length?l[t].map((e=>i(e,{gdbVersion:r}))):[]}async _addAttachment(e,t){return a(e,this.layer,t,{attachmentTypes:this.attachmentTypes})}async _deleteAttachments(e,t){return l(e,this.layer,t)}async _applyPortalItemProperties(e){if("Feature Service"!==e.type)throw new Error(`Cannot create SubtypeGroupLayer from Portal item that has type: ${e.type}`);let{url:t}=e;t.match(".*MapServer/\\d{1,}/?$")||t.match(".*FeatureServer/\\d{1,}/?$")||(t=`${t}/0`),this.layer.url=t||this.layer.url;const r=await e.fetchData();r&&await o(r,this.layer)}async*_getFeatures(e,t){this.layer||(yield*super._getFeatures(e,t));const r=this.layer.createQuery();r.objectIds=e.map((e=>g(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}async _addFeatures(e,t){await c({adds:e},this.layer,t)}async _updateFeatures(e,t){await c({updates:e},this.layer,t)}async _deleteFeatures(e,t){await c({deletes:e},this.layer,t)}_onSubtypeSublayersChange=e=>{e.removed?.length&&(this.sublayerExtensions.removeMany(this.sublayerExtensions.filter((e=>!e.sublayer))),this._updateSubtypes())};_updateClientSideFields(){this.layer&&this._enableClientSideData&&(E(this.layer,this.featureSettings.outFields),this.allSublayerExtensions.forEach((e=>E(this.layer,e.featureSettings.outFields))))}_updateSubtypes(){if(!this.layer.subtypes)return;const e=[];for(const t of this.layer.sublayers){const s=this.layer.subtypes.find((e=>e.code===t.subtypeCode));s&&e.push(new r({id:s.code,name:s.name,domains:s.domains??{},templates:t.templates}))}this._subtypes=e}_addTemplatesToSublayers(){const e=this.layer.sourceJSON?.templates?.map((e=>t.fromJSON(e)));for(let r=0;r<this.sublayerExtensions.length;r++){const s=this.sublayerExtensions.getItemAt(r);if(null==s.sublayer)continue;const i=this.layer.sourceJSON?.types.filter((e=>e.name===s.title))[0]?.templates;(null==s.sublayer.templates||0===s.sublayer.templates.length||A(s))&&i?s._defaultTemplates=i.map((e=>t.fromJSON(e))):1!==e.length||1===this.sublayerExtensions.length||s.sublayer.templates||(s._defaultTemplates=e.map((e=>{const r=t.fromJSON(e.toJSON());r.name=s.title;const i=r.prototype?.attributes;return"number"==typeof i?.[this.layer.subtypeField]&&(i[this.layer.subtypeField]=s.sublayer.subtypeCode),r}))),A(s)&&(s.sublayer.templates[0].name=s.sublayer.title)}}_addDomainsToFields(){if(this._subtypes)for(const e of this._subtypes)for(const[t,r]of Object.entries(e.domains)){const e=this.layer.fields.find((e=>S(e.name,t)));e&&!e.domain&&(e.domain=r)}}};I=e([p],I);export{I as SubtypeGroupLayerExtension};let T=class extends w{_fieldCollection;_typesCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._typesCollection=this._createTypesCollection(),d(this,"_fields")}get types(){return this._typesCollection}get _fields(){return this._fieldCollection}_createFieldCollection(){return new m(new x({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"}))}_createTypesCollection(){return new m(new x({parent:this._layerExtension,arrayProperty:"_subtypes"}))}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField",typeIdField:"subtypeField"}}};T=e([p],T);export{T as SubtypeGroupLayerSchema};export class SubtypeGroupLayerRelationshipCollection extends u{get _sourceUrl(){const e=this._source.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.mapExtension||!this._source.layer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.mapExtension.allLayerExtensions.initializedItems.find((r=>(b(r.layer)||_(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.mapExtension.tableExtensions.initializedItems.find((r=>b(r.table)&&r.table.url===t&&r.table.layerId===e))}}function A(e){return 1===e.sublayer?.templates?.length&&"New Feature"===e.sublayer.templates[0].name}
1
+ import{__decorate as e}from"tslib";import t from"@arcgis/core/layers/support/FeatureTemplate.js";import r from"@arcgis/core/layers/support/FeatureType.js";import s from"@arcgis/core/rest/support/AttachmentQuery";import{toAttachment as i}from"../data/Attachment.js";import{addAttachment as a,deleteAttachments as l,supportsAttachmentEditing as n}from"../data/support/attachments.js";import{applyJsonToLayer as o,layerToJson as y}from"../json/LayerJson.js";import{serializable as p}from"../support/Serializable.js";import{ArcGISRelationshipCollection as u}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as d}from"../support/_featureEdit.js";import{notifyChange as c,watch as h}from"../support/observableUtils.js";import{ReadOnlyCollection as m}from"../utilities/ReadOnlyCollection.js";import{isFeatureLayer as b,isSubtypeGroupLayer as _}from"../utilities/_layers.js";import{getGdbVersion as f}from"../utilities/_version.js";import{parse as g}from"../utilities/format/number.js";import{caseInsensitiveEquals as S}from"../utilities/string.js";import{onCollectionPropertyChange as C}from"../utilities/watch.js";import{LayerExtension as F,LayerExtensionReadOnlySchema as w}from"./_LayerExtension.js";import{SublayerExtension as j}from"./_SublayerExtension.js";import{ArrayWrappedCollection as x}from"./support/ArrayWrappedCollection.js";import{addOutFields as E}from"./support/layers.js";let I=class extends F{attachmentTypes;get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get layer(){return super.layer}get sublayerExtensions(){return super.sublayerExtensions}get supportsSublayers(){return!0}get sublayersAreReadOnly(){return!1}get hasFeatures(){return!0}get canChangeDefinitionExpression(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_subtypes;_enableClientSideData;constructor(e){super(e),C(this,"layer.sublayers",this._onSubtypeSublayersChange)}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const t=y(this.layer);return t.layers&&(e.layers=t.layers.map((e=>{const{layerDefinition:t,visibility:r,subtypeCode:s,layerType:i}=e,a={layerType:i,visibility:r,subtypeCode:s};return t?.drawingInfo&&(a.layerDefinition={drawingInfo:t.drawingInfo}),a}))),e}_createRelationships(){return new SubtypeGroupLayerRelationshipCollection(this)}async _onInitialize(){await super._onInitialize(),this._updateSubtypes(),this._addDomainsToFields(),await this.relationships.initialize()}async _postInitialize(){await super._postInitialize();this._handles.add(h(this,"layer",(()=>{this._addTemplatesToSublayers(),this._updateClientSideFields()}),{sync:!0,initial:!0}))}_capabilities(){const e=n(this.layer);return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:e,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsAttachmentEditing:e}}_createSublayerExtension(e){return j.factory.create(e,"SubtypeSublayer")}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"SubtypeGroupLayer"}},enableClientSideData:{serializeModes:["initial"],default:!1},attachmentTypes:["initial"]}}_isSupportedLayer(e){return _(e)}_createSchema(){return new T(this)}async _getAttachments(e){if(!this.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=this.layer?.gdbVersion??f(this.layer?.customParameters),a=new s({objectIds:[t]}),l=await this.layer.queryAttachments(a);return l?.[t]?.length?l[t].map((e=>i(e,{gdbVersion:r}))):[]}async _addAttachment(e,t){return a(e,this.layer,t,{attachmentTypes:this.attachmentTypes})}async _deleteAttachments(e,t){return l(e,this.layer,t)}async _applyPortalItemProperties(e){if("Feature Service"!==e.type)throw new Error(`Cannot create SubtypeGroupLayer from Portal item that has type: ${e.type}`);let{url:t}=e;t.match(".*MapServer/\\d{1,}/?$")||t.match(".*FeatureServer/\\d{1,}/?$")||(t=`${t}/0`),this.layer.url=t||this.layer.url;const r=await e.fetchData();r&&await o(r,this.layer)}async*_getFeatures(e,t){this.layer||(yield*super._getFeatures(e,t));const r=this.layer.createQuery();r.objectIds=e.map((e=>g(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}async _addFeatures(e,t){await d({adds:e},this.layer,t)}async _updateFeatures(e,t){await d({updates:e},this.layer,t)}async _deleteFeatures(e,t){await d({deletes:e},this.layer,t)}_onSubtypeSublayersChange=e=>{e.removed?.length&&(this.sublayerExtensions.removeMany(this.sublayerExtensions.filter((e=>!e.sublayer))),this._updateSubtypes())};_updateClientSideFields(){this.layer&&this._enableClientSideData&&(E(this.layer,this.featureSettings.outFields),this.allSublayerExtensions.forEach((e=>E(this.layer,e.featureSettings.outFields))))}_updateSubtypes(){if(!this.layer.subtypes)return;const e=[];for(const t of this.layer.sublayers){const s=this.layer.subtypes.find((e=>e.code===t.subtypeCode));s&&e.push(new r({id:s.code,name:s.name,domains:s.domains??{},templates:t.templates}))}this._subtypes=e}_addTemplatesToSublayers(){const e=this.layer.sourceJSON?.templates?.map((e=>t.fromJSON(e)));for(let r=0;r<this.sublayerExtensions.length;r++){const s=this.sublayerExtensions.getItemAt(r);if(null==s.sublayer)continue;const i=this.layer.sourceJSON?.types.filter((e=>e.name===s.title))[0]?.templates;(null==s.sublayer.templates||0===s.sublayer.templates.length||A(s))&&i?s._defaultTemplates=i.map((e=>t.fromJSON(e))):1!==e.length||1===this.sublayerExtensions.length||s.sublayer.templates||(s._defaultTemplates=e.map((e=>{const r=t.fromJSON(e.toJSON());r.name=s.title;const i=r.prototype?.attributes;return"number"==typeof i?.[this.layer.subtypeField]&&(i[this.layer.subtypeField]=s.sublayer.subtypeCode),r}))),A(s)&&(s.sublayer.templates[0].name=s.sublayer.title)}}_addDomainsToFields(){if(this._subtypes)for(const e of this._subtypes)for(const[t,r]of Object.entries(e.domains)){const e=this.layer.fields.find((e=>S(e.name,t)));e&&!e.domain&&(e.domain=r)}}};I=e([p],I);export{I as SubtypeGroupLayerExtension};let T=class extends w{_fieldCollection;_typesCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._typesCollection=this._createTypesCollection(),c(this,"_fields")}destroy(){this._fieldCollection.destroy(),this._typesCollection.destroy(),super.destroy()}get types(){return this._typesCollection}get _fields(){return this._fieldCollection}_createFieldCollection(){return new m(new x({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"}),{destroyBackingCollection:!0})}_createTypesCollection(){return new m(new x({parent:this._layerExtension,arrayProperty:"_subtypes"}),{destroyBackingCollection:!0})}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField",typeIdField:"subtypeField"}}};T=e([p],T);export{T as SubtypeGroupLayerSchema};export class SubtypeGroupLayerRelationshipCollection extends u{get _sourceUrl(){const e=this._source.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.mapExtension||!this._source.layer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.mapExtension.allLayerExtensions.initializedItems.find((r=>(b(r.layer)||_(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.mapExtension.tableExtensions.initializedItems.find((r=>b(r.table)&&r.table.url===t&&r.table.layerId===e))}}function A(e){return 1===e.sublayer?.templates?.length&&"New Feature"===e.sublayer.templates[0].name}
@@ -121,6 +121,7 @@ export declare class SubtypeSublayerExtension<TProperties extends SubtypeSublaye
121
121
  * An implementation of SublayerSchema specific to SubtypeSublayers.
122
122
  */
123
123
  export declare class SubtypeSublayerSchema extends SublayerSchema {
124
+ private static readonly _subtypesWatchHandlesKey;
124
125
  /**
125
126
  * The sublayer that the Schema represents.
126
127
  */
@@ -138,6 +139,7 @@ export declare class SubtypeSublayerSchema extends SublayerSchema {
138
139
  set typeIdField(value: string);
139
140
  get types(): Collection<FeatureType>;
140
141
  constructor(layerExtension: SubtypeSublayerExtension);
142
+ destroy(): void;
141
143
  get _fields(): Collection<Field>;
142
144
  /**
143
145
  * Creates the backing collection for fields.
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import r from"@arcgis/core/rest/support/AttachmentQuery";import{InvalidOperationError as s}from"../InvalidOperationError.js";import{toAttachment as i}from"../data/Attachment.js";import{addAttachment as a,deleteAttachments as n}from"../data/support/attachments.js";import{applyJsonToSublayer as l,jsonToSublayer as o,sublayerToJson as y}from"../json/SublayerJson.js";import{serializable as u}from"../support/Serializable.js";import{ArcGISRelationshipCollection as p}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as c}from"../support/_featureEdit.js";import{notifyChange as d,onWatch as h,watch as m}from"../support/observableUtils.js";import{ReadOnlyCollection as b}from"../utilities/ReadOnlyCollection.js";import{getGdbVersion as _}from"../utilities/_version.js";import{parse as g}from"../utilities/format/number.js";import{isFeatureLayer as f,isSubtypeGroupLayer as x,isSubtypeSublayer as E}from"../utilities/layers.js";import{caseInsensitiveEquals as S}from"../utilities/string.js";import{SublayerExtension as F,SublayerSchema as w}from"./_SublayerExtension.js";import{ArrayWrappedCollection as j}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings as C}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings as I}from"./support/PopupTemplateFeatureSettings.js";let T=class extends F{_defaultTemplates;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 canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeOpacity(){return!1}get defaultTemplates(){return this._defaultTemplates}async _addAttachment(e,t){return a(e,this.sublayer.layer,t,{attachmentTypes:this.layerExtension?.attachmentTypes})}async _deleteAttachments(e,t){return n(e,this.sublayer.layer,t)}_isSupportedSublayer(e){return E(e)}_createLayerListSettings(e){return new R(e,this)}_createFeatureSettings(){return new A(this)}_createSublayer(e){return o(e,"SubtypeGroupLayer")}_createSchema(){return new L(this)}_createRelationships(){return new SubtypeSublayerRelationshipCollection(this)}async _applySublayerProperties(e,t){return l(e,t)}_capabilities(){return this.layerExtension?.capabilities}async _onInitialize(){const e=(await import("@arcgis/core/layers/support/SubtypeSublayer.js")).default;"layer"in e.prototype||Object.defineProperty(e.prototype,"layer",{get:function(){return this.parent},set:function(e){this.parent=e}}),await super._onInitialize(),await this.relationships.initialize(),this._watchHandles.push(h(this,"attachmentTypes",(()=>m(this,"layerExtension.attachmentTypes",(()=>d(this,"attachmentTypes")),{sync:!0})))),this._addDomainsToFields()}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();r.objectIds=e.map((e=>g(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry;const s=this;return{async*[Symbol.asyncIterator](){yield*(await import("../support/_query.js")).executeQuery(r,s,s.sublayer.layer,t.cancelToken)}}}async _getAttachments(e){if(!this.sublayer?.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,s=this.sublayer?.layer?.gdbVersion??_(this.sublayer?.layer?.customParameters),a=new r({objectIds:[t]}),n=await this.sublayer.layer.queryAttachments(a);return n?.[t]?.length?n[t].map((e=>i(e,{gdbVersion:s}))):[]}async _addFeatures(e,t){await c({adds:e},this.sublayer.layer,t)}async _updateFeatures(e,t){await c({updates:e},this.sublayer.layer,t)}async _deleteFeatures(e,t){await c({deletes:e},this.sublayer.layer,t)}_serializeSublayer(e){return y(e)}_addDomainsToFields(){const e=this.sublayer.parent.subtypes.find((e=>e.code===this.sublayer.subtypeCode));if(e?.domains)for(const[t,r]of Object.entries(e.domains)){const e=this.sublayer.fields.find((e=>S(e.name,t)));e&&!e.domain&&(e.domain=r)}}};T=e([u],T);export{T as SubtypeSublayerExtension};const z="This schema property is read-only.";let L=class extends w{_fieldCollection;_readonlyTypesCollection;_typesCollection;get primaryKeyField(){return this._sublayerExtension.sublayer?.layer?.objectIdField}set primaryKeyField(e){throw new s(z)}get geometryType(){return this._sublayerExtension.sublayer?.layer?.geometryType}set geometryType(e){throw new s(z)}get displayField(){return this._sublayerExtension.sublayer?.layer?.displayField}set displayField(e){throw new s(z)}get typeIdField(){return this._sublayerExtension.sublayer?.layer?.subtypeField}set typeIdField(e){throw new s(z)}get types(){return this._readonlyTypesCollection}constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._typesCollection=new t,this._readonlyTypesCollection=new b(this._typesCollection);const r=()=>this._sublayerExtension.sublayer?.subtypeCode,s=()=>{const e=this._sublayerExtension.layerExtension?._subtypes?.find((e=>e.id===r()));return!!e&&(this._typesCollection.add(e),!0)};if(this._sublayerExtension.layerExtension?._subtypes?.some((e=>e.id===r())))s();else{const e=m(this._sublayerExtension,"layerExtension._subtypes",(()=>{s()&&e.remove()}),{sync:!0})}d(this,"_fields")}get _fields(){return this._fieldCollection}_createFieldCollection(){return new b(new j({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"fields"}))}_getPropertyBindings(){return{primaryKeyField:"parent.objectIdField",geometryType:"parent.geometryType",spatialReference:"parent.spatialReference",displayField:"parent.displayField",typeIdField:"parent.typeIdField"}}};L=e([u],L);export{L as SubtypeSublayerSchema};let A=class extends I{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)}};A=e([u],A);let R=class extends C{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};R=e([u],R);export class SubtypeSublayerRelationshipCollection extends p{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.allLayerExtensions.initializedItems.find((r=>(f(r.layer)||x(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.layerExtension.mapExtension.tableExtensions.initializedItems.find((r=>f(r.table)&&r.table.url===t&&r.table.layerId===e))}}
1
+ var e;import{__decorate as t}from"tslib";import r from"@arcgis/core/core/Collection";import s from"@arcgis/core/rest/support/AttachmentQuery";import{InvalidOperationError as i}from"../InvalidOperationError.js";import{toAttachment as a}from"../data/Attachment.js";import{addAttachment as n,deleteAttachments as l}from"../data/support/attachments.js";import{applyJsonToSublayer as o,jsonToSublayer as y,sublayerToJson as u}from"../json/SublayerJson.js";import{serializable as p}from"../support/Serializable.js";import{ArcGISRelationshipCollection as c}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as d}from"../support/_featureEdit.js";import{notifyChange as h,onWatch as m,watch as b}from"../support/observableUtils.js";import{ReadOnlyCollection as _}from"../utilities/ReadOnlyCollection.js";import{getGdbVersion as g}from"../utilities/_version.js";import{parse as f}from"../utilities/format/number.js";import{isFeatureLayer as x,isSubtypeGroupLayer as E,isSubtypeSublayer as S}from"../utilities/layers.js";import{caseInsensitiveEquals as F}from"../utilities/string.js";import{SublayerExtension as w,SublayerSchema as C}from"./_SublayerExtension.js";import{ArrayWrappedCollection as j}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings as T}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings as I}from"./support/PopupTemplateFeatureSettings.js";let z=class extends w{_defaultTemplates;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 canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeOpacity(){return!1}get defaultTemplates(){return this._defaultTemplates}async _addAttachment(e,t){return n(e,this.sublayer.layer,t,{attachmentTypes:this.layerExtension?.attachmentTypes})}async _deleteAttachments(e,t){return l(e,this.sublayer.layer,t)}_isSupportedSublayer(e){return S(e)}_createLayerListSettings(e){return new P(e,this)}_createFeatureSettings(){return new R(this)}_createSublayer(e){return y(e,"SubtypeGroupLayer")}_createSchema(){return new A(this)}_createRelationships(){return new SubtypeSublayerRelationshipCollection(this)}async _applySublayerProperties(e,t){return o(e,t)}_capabilities(){return this.layerExtension?.capabilities}async _onInitialize(){const e=(await import("@arcgis/core/layers/support/SubtypeSublayer.js")).default;"layer"in e.prototype||Object.defineProperty(e.prototype,"layer",{get:function(){return this.parent},set:function(e){this.parent=e}}),await super._onInitialize(),await this.relationships.initialize(),this._handles.add(m(this,"attachmentTypes",(()=>b(this,"layerExtension.attachmentTypes",(()=>h(this,"attachmentTypes")),{sync:!0})))),this._addDomainsToFields()}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();r.objectIds=e.map((e=>f(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry;const s=this;return{async*[Symbol.asyncIterator](){yield*(await import("../support/_query.js")).executeQuery(r,s,s.sublayer.layer,t.cancelToken)}}}async _getAttachments(e){if(!this.sublayer?.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=this.sublayer?.layer?.gdbVersion??g(this.sublayer?.layer?.customParameters),i=new s({objectIds:[t]}),n=await this.sublayer.layer.queryAttachments(i);return n?.[t]?.length?n[t].map((e=>a(e,{gdbVersion:r}))):[]}async _addFeatures(e,t){await d({adds:e},this.sublayer.layer,t)}async _updateFeatures(e,t){await d({updates:e},this.sublayer.layer,t)}async _deleteFeatures(e,t){await d({deletes:e},this.sublayer.layer,t)}_serializeSublayer(e){return u(e)}_addDomainsToFields(){const e=this.sublayer.parent.subtypes.find((e=>e.code===this.sublayer.subtypeCode));if(e?.domains)for(const[t,r]of Object.entries(e.domains)){const e=this.sublayer.fields.find((e=>F(e.name,t)));e&&!e.domain&&(e.domain=r)}}};z=t([p],z);export{z as SubtypeSublayerExtension};const L="This schema property is read-only.";let A=class extends C{static{e=this}static _subtypesWatchHandlesKey="subtype-sublayer-schema-subtypes-watch-handles";_fieldCollection;_readonlyTypesCollection;_typesCollection;get primaryKeyField(){return this._sublayerExtension.sublayer?.layer?.objectIdField}set primaryKeyField(e){throw new i(L)}get geometryType(){return this._sublayerExtension.sublayer?.layer?.geometryType}set geometryType(e){throw new i(L)}get displayField(){return this._sublayerExtension.sublayer?.layer?.displayField}set displayField(e){throw new i(L)}get typeIdField(){return this._sublayerExtension.sublayer?.layer?.subtypeField}set typeIdField(e){throw new i(L)}get types(){return this._readonlyTypesCollection}constructor(t){super(t),this._fieldCollection=this._createFieldCollection(),this._typesCollection=new r,this._readonlyTypesCollection=new _(this._typesCollection);const s=()=>this._sublayerExtension.sublayer?.subtypeCode,i=()=>{const e=this._sublayerExtension.layerExtension?._subtypes?.find((e=>e.id===s()));return!!e&&(this._typesCollection.add(e),!0)};this._sublayerExtension.layerExtension?._subtypes?.some((e=>e.id===s()))?i():this._handles.add(b(this._sublayerExtension,"layerExtension._subtypes",(()=>{i()&&this._handles.remove(e._subtypesWatchHandlesKey)}),{sync:!0}),e._subtypesWatchHandlesKey),h(this,"_fields")}destroy(){this._fieldCollection.destroy(),this._readonlyTypesCollection.destroy(),super.destroy()}get _fields(){return this._fieldCollection}_createFieldCollection(){return new _(new j({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"fields"}),{destroyBackingCollection:!0})}_getPropertyBindings(){return{primaryKeyField:"parent.objectIdField",geometryType:"parent.geometryType",spatialReference:"parent.spatialReference",displayField:"parent.displayField",typeIdField:"parent.typeIdField"}}};A=e=t([p],A);export{A as SubtypeSublayerSchema};let R=class extends I{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)}};R=t([p],R);let P=class extends T{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};P=t([p],P);export class SubtypeSublayerRelationshipCollection extends c{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.allLayerExtensions.initializedItems.find((r=>(x(r.layer)||E(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.layerExtension.mapExtension.tableExtensions.initializedItems.find((r=>x(r.table)&&r.table.url===t&&r.table.layerId===e))}}
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{layerToJson as t}from"../json/LayerJson.js";import{serializable as r}from"../support/Serializable.js";import{notifyChange as i,watch as a}from"../support/observableUtils.js";import{ReadOnlyCollection as s}from"../utilities/ReadOnlyCollection.js";import{isWFSLayer as n}from"../utilities/_layers.js";import{LayerExtension as l,LayerExtensionSchema as o}from"./_LayerExtension.js";import{ArrayWrappedCollection as p}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as d}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields as y}from"./support/layers.js";let u=class extends l{get renderer(){return this.layer?.renderer}get hasFeatures(){return!0}get layer(){return super.layer}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeDefinitionExpression(){return!0}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}_enableClientSideData;get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:r}=t(this.layer),{definitionExpression:i,drawingInfo:a}=r??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),a&&(e.layerDefinition={...e.layerDefinition,drawingInfo:a}),e}async _onInitialize(){await super._onInitialize(),this._updateClientSideFields(),this._watchHandles.push(a(this,"layer",(()=>{this._updateClientSideFields()}),{sync:!0}))}_applyPortalItemProperties(e){if("WFS"!==e.type)throw new Error(`Cannot create WFS layer from Portal item that has type: ${e.type}`);this.layer.url=e.url||this.layer.url}_capabilities(){return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:!1,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsStandardizedQueries:!0}}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"WFS"}},enableClientSideData:{serializeModes:["initial"],default:!1}}}_isSupportedLayer(e){return n(e)}_createFeatureSettings(){return new d(this)}_createSchema(){return new h(this)}async*_getFeatures(e,t){const r=this.layer.createQuery();r.objectIds=e,r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}_updateClientSideFields(){this.layer&&this._enableClientSideData&&y(this.layer,this.featureSettings.outFields)}};u=e([r],u);export{u as WFSLayerExtension};let h=class extends o{_fieldsCollection;constructor(e){super(e),this._fieldsCollection=new s(new p({parent:e,targetProperty:"layer",arrayProperty:"fields"})),i(this,"_fields")}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField"}}get _fields(){return this._fieldsCollection}};h=e([r],h);
1
+ import{__decorate as e}from"tslib";import{layerToJson as t}from"../json/LayerJson.js";import{serializable as r}from"../support/Serializable.js";import{notifyChange as i,watch as a}from"../support/observableUtils.js";import{ReadOnlyCollection as s}from"../utilities/ReadOnlyCollection.js";import{isWFSLayer as l}from"../utilities/_layers.js";import{LayerExtension as n,LayerExtensionSchema as o}from"./_LayerExtension.js";import{ArrayWrappedCollection as p}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as d}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields as y}from"./support/layers.js";let u=class extends n{get renderer(){return this.layer?.renderer}get hasFeatures(){return!0}get layer(){return super.layer}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeDefinitionExpression(){return!0}get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}_enableClientSideData;get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:r}=t(this.layer),{definitionExpression:i,drawingInfo:a}=r??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),a&&(e.layerDefinition={...e.layerDefinition,drawingInfo:a}),e}async _onInitialize(){await super._onInitialize(),this._updateClientSideFields(),this._handles.add(a(this,"layer",(()=>{this._updateClientSideFields()}),{sync:!0}))}_applyPortalItemProperties(e){if("WFS"!==e.type)throw new Error(`Cannot create WFS layer from Portal item that has type: ${e.type}`);this.layer.url=e.url||this.layer.url}_capabilities(){return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:!1,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsStandardizedQueries:!0}}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"WFS"}},enableClientSideData:{serializeModes:["initial"],default:!1}}}_isSupportedLayer(e){return l(e)}_createFeatureSettings(){return new d(this)}_createSchema(){return new c(this)}async*_getFeatures(e,t){const r=this.layer.createQuery();r.objectIds=e,r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}_updateClientSideFields(){this.layer&&this._enableClientSideData&&y(this.layer,this.featureSettings.outFields)}};u=e([r],u);export{u as WFSLayerExtension};let c=class extends o{_fieldsCollection;constructor(e){super(e),this._fieldsCollection=new s(new p({parent:e,targetProperty:"layer",arrayProperty:"fields"}),{destroyBackingCollection:!0}),i(this,"_fields")}destroy(){this._fieldsCollection.destroy(),super.destroy()}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField"}}get _fields(){return this._fieldsCollection}};c=e([r],c);
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{applyJsonToLayer as t,jsonToLayer as r,layerToJson as a}from"../json/LayerJson.js";import{serializable as i}from"../support/Serializable.js";import{notifyChange as s,watch as o}from"../support/observableUtils.js";import{isWMTSLayer as l}from"../utilities/_layers.js";import{getLogger as y}from"../utilities/log.js";import{LayerExtension as n,LayerExtensionLayerListSettings as m}from"./_LayerExtension.js";const p=y("WMTSLayerExtension");let h=class extends n{get supportsSublayers(){return!1}get layer(){return super.layer}get _layerSupportsHideChildren(){return!1}toJSON(e="all"){const t=super.toJSON(e);if(t)return t.layer.$ref&&(t.layer.wmtsInfo={}),t}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"WebTiledLayer",wmtsInfo:{}}}}}_createLayerListSettings(e){return new m(e,this,!1)}async _onInitialize(){try{await super._onInitialize()}catch(e){if("RESTful"!==this.layer.serviceMode)throw e;{p.warn(`WMTS Layer '${this.id}' failed to load with the 'RESTful' service mode. Now attempting to load the layer with the 'KVP' service mode...`);const e=this.layer;await this._switchLayer(await r(a(e))),this.mapExtension?.map?.layers.remove(e),this.layer.serviceMode="KVP",this.mapExtension?.map?.layers.add(this.layer),await super._onInitialize()}}finally{this._ensureActiveLayerDefaults()}o(this.layer,"activeLayer",(e=>{this._ensureActiveLayerDefaults(),this.layer.title=e.title,s(this,"title")}),{sync:!0})}_isSupportedLayer(e){return l(e)}async _applyPortalItemProperties(e){if("WMTS"!==e.type)throw new Error(`Cannot create WMTS layer from Portal item that has type: ${e.type}`);const r={layerType:"WebTiledLayer",...await e.fetchData()};return t(r,this.layer)}_ensureActiveLayerDefaults(){const e=this.layer?.activeLayer;e&&(e.imageFormats=e.imageFormats?.length?e.imageFormats:["image/png"],e.imageFormat=e.imageFormat||e.imageFormats[0],e.styleId=e.styleId??"")}};h=e([i],h);export{h as WMTSLayerExtension};
1
+ import{__decorate as e}from"tslib";import{applyJsonToLayer as t,jsonToLayer as r,layerToJson as a}from"../json/LayerJson.js";import{serializable as i}from"../support/Serializable.js";import{notifyChange as s,watch as o}from"../support/observableUtils.js";import{isWMTSLayer as l}from"../utilities/_layers.js";import{getLogger as n}from"../utilities/log.js";import{LayerExtension as y,LayerExtensionLayerListSettings as m}from"./_LayerExtension.js";const p=n("WMTSLayerExtension");let h=class extends y{get supportsSublayers(){return!1}get layer(){return super.layer}get _layerSupportsHideChildren(){return!1}toJSON(e="all"){const t=super.toJSON(e);if(t)return t.layer.$ref&&(t.layer.wmtsInfo={}),t}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"WebTiledLayer",wmtsInfo:{}}}}}_createLayerListSettings(e){return new m(e,this,!1)}async _onInitialize(){try{await super._onInitialize()}catch(e){if("RESTful"!==this.layer.serviceMode)throw e;{p.warn(`WMTS Layer '${this.id}' failed to load with the 'RESTful' service mode. Now attempting to load the layer with the 'KVP' service mode...`);const e=this.layer;await this._switchLayer(await r(a(e))),this.mapExtension?.map?.layers.remove(e),this.layer.serviceMode="KVP",this.mapExtension?.map?.layers.add(this.layer),await super._onInitialize()}}finally{this._ensureActiveLayerDefaults()}this._handles.add(o(this.layer,"activeLayer",(e=>{this._ensureActiveLayerDefaults(),this.layer.title=e.title,s(this,"title")}),{sync:!0}))}_isSupportedLayer(e){return l(e)}async _applyPortalItemProperties(e){if("WMTS"!==e.type)throw new Error(`Cannot create WMTS layer from Portal item that has type: ${e.type}`);const r={layerType:"WebTiledLayer",...await e.fetchData()};return t(r,this.layer)}_ensureActiveLayerDefaults(){const e=this.layer?.activeLayer;e&&(e.imageFormats=e.imageFormats?.length?e.imageFormats:["image/png"],e.imageFormat=e.imageFormat||e.imageFormats[0],e.styleId=e.styleId??"")}};h=e([i],h);export{h as WMTSLayerExtension};
@@ -1,5 +1,4 @@
1
1
  import Collection from "@arcgis/core/core/Collection";
2
- import type { ResourceHandle } from "@arcgis/core/core/Handles.js";
3
2
  import type Extent from "@arcgis/core/geometry/Extent";
4
3
  import type Layer from "@arcgis/core/layers/Layer";
5
4
  import type PortalItem from "@arcgis/core/portal/PortalItem";
@@ -239,6 +238,10 @@ export declare abstract class LayerExtension<TProperties extends LayerExtensionP
239
238
  */
240
239
  get dynamicallyAddedLayer(): boolean;
241
240
  set dynamicallyAddedLayer(value: boolean);
241
+ /**
242
+ * Handle group key for watchers on the current `layer`.
243
+ */
244
+ private static readonly _layerWatchHandlesKey;
242
245
  /**
243
246
  * An optional remote source for a .tpk, .tpkx or .vtpk file. May be a
244
247
  * portal item URL or a portal item ID. Mobile Only.
@@ -262,12 +265,6 @@ export declare abstract class LayerExtension<TProperties extends LayerExtensionP
262
265
  * @inheritDoc
263
266
  */
264
267
  protected readonly _itemType: string;
265
- /**
266
- * A set of watch handles that get cleaned up when the class instance is
267
- * destroyed.
268
- */
269
- protected readonly _watchHandles: ResourceHandle[];
270
- protected readonly _layerWatchHandles: ResourceHandle[];
271
268
  private _mapExtension;
272
269
  private _basemapExtension;
273
270
  private _groundExtension;
@@ -275,6 +272,7 @@ export declare abstract class LayerExtension<TProperties extends LayerExtensionP
275
272
  private readonly _sublayerExtensions;
276
273
  private _layer;
277
274
  private _dynamicallyAddedLayer;
275
+ private _isSwitchingLayer;
278
276
  private _deferredLayerProperties;
279
277
  private _requestHelper;
280
278
  private _initialDefinitionExpression;