@arcgis/core 4.28.0-next.20230628 → 4.28.0-next.20230630

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 (225) hide show
  1. package/Basemap.js +1 -1
  2. package/WebMap.js +1 -1
  3. package/assets/esri/core/workers/RemoteClient.js +1 -1
  4. package/assets/esri/core/workers/chunks/0fb1dcc426b36b64df57.js +1 -0
  5. package/assets/esri/core/workers/chunks/{cdd40ce2b6c7ffc7aae1.js → 121e1f6295078ff472d9.js} +1 -1
  6. package/assets/esri/core/workers/chunks/17428e2661846c430f36.js +1 -0
  7. package/assets/esri/core/workers/chunks/1c4475057483041418c3.js +1 -0
  8. package/assets/esri/core/workers/chunks/1caf5062d9e752d6fc5d.js +1 -0
  9. package/assets/esri/core/workers/chunks/1f3502573d87a41ef309.js +1 -0
  10. package/assets/esri/core/workers/chunks/2104037076cac08a86a8.js +1 -0
  11. package/assets/esri/core/workers/chunks/21e5839efeb8d4a33158.js +1 -0
  12. package/assets/esri/core/workers/chunks/2d011c07ed6ec656884b.js +1 -0
  13. package/assets/esri/core/workers/chunks/2f9aec2238ff6cb99e09.js +1 -0
  14. package/assets/esri/core/workers/chunks/388087609ec31456bf75.js +1 -0
  15. package/assets/esri/core/workers/chunks/3f808a9a32e09f12c8e2.js +1 -0
  16. package/assets/esri/core/workers/chunks/44de576ed448b1d90afe.js +1 -0
  17. package/assets/esri/core/workers/chunks/4564acb145061d8eff35.js +1 -0
  18. package/assets/esri/core/workers/chunks/473401ce9a6b9f745d79.js +1 -0
  19. package/assets/esri/core/workers/chunks/4804020020afbe5c9450.js +1 -0
  20. package/assets/esri/core/workers/chunks/4bbbc6f6b9e1b9aa41d9.js +1 -0
  21. package/assets/esri/core/workers/chunks/512b37dfed32bd4e7779.js +1 -0
  22. package/assets/esri/core/workers/chunks/{eff6ebce38498a67d34e.js → 58ca4a14a6b419b2a186.js} +1 -1
  23. package/assets/esri/core/workers/chunks/5caa18b501b69a32fdef.js +1 -0
  24. package/assets/esri/core/workers/chunks/{71fbda510a7baf170046.js → 5d621c7fb044c7ce956a.js} +1 -1
  25. package/assets/esri/core/workers/chunks/63c755307cf3e223022b.js +1 -0
  26. package/assets/esri/core/workers/chunks/653b97674d8aa92ae45b.js +1 -0
  27. package/assets/esri/core/workers/chunks/69d6e022cc30ba90f276.js +1 -0
  28. package/assets/esri/core/workers/chunks/6e75955095362a758608.js +1 -0
  29. package/assets/esri/core/workers/chunks/730eb7e5f617fdab4f10.js +1 -0
  30. package/assets/esri/core/workers/chunks/7533b30a84240a5e734a.js +2 -0
  31. package/assets/esri/core/workers/chunks/{6a3d611e8842afbb50ab.js.LICENSE.txt → 7533b30a84240a5e734a.js.LICENSE.txt} +5 -0
  32. package/assets/esri/core/workers/chunks/765ba95fcf11eea01118.js +1 -0
  33. package/assets/esri/core/workers/chunks/7deec47a626292ba8361.js +1 -0
  34. package/assets/esri/core/workers/chunks/7e413e74d3424d4de29f.js +1 -0
  35. package/assets/esri/core/workers/chunks/826c4777e103153718a2.js +1 -0
  36. package/assets/esri/core/workers/chunks/8b359c3ab0328f691ebc.js +1 -0
  37. package/assets/esri/core/workers/chunks/{0c621046b7211cdde980.js → 93e898dc81a699f93ee2.js} +1 -1
  38. package/assets/esri/core/workers/chunks/96c8df103782c717a524.js +1 -0
  39. package/assets/esri/core/workers/chunks/970d0f0ae4c80ce740de.js +1 -0
  40. package/assets/esri/core/workers/chunks/97b7e5b766df650ebb0d.js +1 -0
  41. package/assets/esri/core/workers/chunks/{3bee743f4c9370045a5d.js → 9c909d1356ae9a97c996.js} +1 -1
  42. package/assets/esri/core/workers/chunks/a2023974fe3ced3d18ce.js +1 -0
  43. package/assets/esri/core/workers/chunks/{c3f4c5d530b586a3454d.js → a3b4ffce24af4bdd51fe.js} +1 -1
  44. package/assets/esri/core/workers/chunks/aac14b378215d45b6c82.js +1 -0
  45. package/assets/esri/core/workers/chunks/ab3d945ece3e41e80862.js +1 -0
  46. package/assets/esri/core/workers/chunks/aca2b351a56715e0031b.js +1 -0
  47. package/assets/esri/core/workers/chunks/b02307668b89bec565bf.js +1 -0
  48. package/assets/esri/core/workers/chunks/{bf3a6346ec25692e130c.js → b43ecdff439d9f4223f1.js} +1 -1
  49. package/assets/esri/core/workers/chunks/bbb981552af3d81073a6.js +1 -0
  50. package/assets/esri/core/workers/chunks/bd62bab5831db0b4ed05.js +1 -0
  51. package/assets/esri/core/workers/chunks/{69f51a7768bf51c9e346.js → befba0bc0409f9a1f0bc.js} +1 -1
  52. package/assets/esri/core/workers/chunks/c4bcc610f5352815a154.js +1 -0
  53. package/assets/esri/core/workers/chunks/c7affe71abbf791475fc.js +1 -0
  54. package/assets/esri/core/workers/chunks/cea2d209de9e85fca22a.js +1 -0
  55. package/assets/esri/core/workers/chunks/d12313b3d1ab84b405e6.js +1 -0
  56. package/assets/esri/core/workers/chunks/d218190dbb8c1e090bc7.js +1 -0
  57. package/assets/esri/core/workers/chunks/d4cb1cdd1cc5240526de.js +1 -0
  58. package/assets/esri/core/workers/chunks/d86ec98a0582cd3dfe8c.js +1 -0
  59. package/assets/esri/core/workers/chunks/d9547775ee9289af8b75.js +1 -0
  60. package/assets/esri/core/workers/chunks/{017910d3512367b5d22e.js → da17d217222d6aee4c3e.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{013efa75c96be04cf57a.js → dd6b59200a59d8361014.js} +1 -1
  62. package/assets/esri/core/workers/chunks/e06d3649540219430f4d.js +1 -0
  63. package/assets/esri/core/workers/chunks/e0dfd109e860371d7323.js +1 -0
  64. package/assets/esri/core/workers/chunks/e144f4343910ca9c2c5c.js +1 -0
  65. package/assets/esri/core/workers/chunks/{d16850b98a53ade0de10.js → e6d2c971560cf0d52ea5.js} +1 -1
  66. package/assets/esri/core/workers/chunks/e768bf483efc60a53ed1.js +1 -0
  67. package/assets/esri/core/workers/chunks/e86f9ee29ea5587c7488.js +1 -0
  68. package/assets/esri/core/workers/chunks/eee4eeb64a637e9a2be0.js +1 -0
  69. package/assets/esri/core/workers/chunks/f3225ae2673562f2592d.js +1 -0
  70. package/assets/esri/core/workers/chunks/f3451baca674807cf3b0.js +1 -0
  71. package/assets/esri/core/workers/chunks/f6ae8c288a42e4ba5bd5.js +1 -0
  72. package/assets/esri/core/workers/chunks/{cc15e28a99694120556d.js → fbc60f4873dbf2cab9c7.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{99512f2aa78e8ff6b6c6.js → fe43a33f00ba2db2e0e4.js} +1 -1
  74. package/assets/esri/core/workers/chunks/ff5b8dedfba461432956.js +1 -0
  75. package/assets/esri/themes/base/widgets/_ButtonMenu.scss +0 -41
  76. package/assets/esri/themes/base/widgets/_Editor.scss +4 -2
  77. package/assets/esri/themes/base/widgets/_ElevationProfile.scss +24 -189
  78. package/assets/esri/themes/base/widgets/_FeatureTable.scss +0 -7
  79. package/assets/esri/themes/base/widgets/_MeasurementWidgetContent.scss +1 -1
  80. package/assets/esri/themes/dark/main.css +1 -1
  81. package/assets/esri/themes/light/main.css +1 -1
  82. package/assets/esri/themes/light/view.css +1 -1
  83. package/chunks/Theme.js +1 -1
  84. package/chunks/tslib.es6.js +1 -1
  85. package/core/Collection.js +1 -1
  86. package/core/CollectionFlattener.js +1 -1
  87. package/core/promiseUtils.js +1 -1
  88. package/core/reactiveUtils.js +1 -1
  89. package/geometry/support/MeshGeoreferencedRelativeVertexSpace.js +1 -1
  90. package/geometry/support/MeshLocalVertexSpace.js +1 -1
  91. package/interfaces.d.ts +32 -0
  92. package/layers/FeatureLayer.js +1 -1
  93. package/layers/SubtypeGroupLayer.js +1 -1
  94. package/layers/VoxelWasmPerSceneView.js +1 -1
  95. package/layers/graphics/data/QueryEngineCapabilities.js +1 -1
  96. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  97. package/layers/graphics/sources/OGCFeatureSource.js +1 -1
  98. package/layers/mixins/ArcGISImageService.js +1 -1
  99. package/layers/mixins/FeatureLayerBase.js +1 -1
  100. package/layers/mixins/PortalLayer.js +1 -1
  101. package/layers/mixins/refresh.js +1 -1
  102. package/layers/ogc/wfsUtils.js +1 -1
  103. package/layers/save/featureLayerUtils.js +1 -1
  104. package/layers/support/capabilities.js +1 -1
  105. package/layers/support/featureLayerUtils.js +1 -1
  106. package/layers/support/layersCreator.js +1 -1
  107. package/layers/support/serviceCapabilitiesUtils.js +1 -1
  108. package/package.json +1 -1
  109. package/smartMapping/support/adapters/support/utils.js +1 -1
  110. package/support/revision.js +1 -1
  111. package/support/timeUtils.js +1 -1
  112. package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
  113. package/views/2d/layers/features/sources/DataTileSource.js +1 -1
  114. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  115. package/views/3d/analysis/Dimension/DimensionController.js +1 -1
  116. package/views/3d/analysis/Dimension/DimensionVisualization.js +1 -1
  117. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  118. package/views/3d/analysis/DimensionAnalysisView3D.js +1 -1
  119. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  120. package/views/3d/environment/Precipitation.js +1 -1
  121. package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
  122. package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
  123. package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
  124. package/views/3d/layers/I3SMeshView3D.js +1 -1
  125. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  126. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  127. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  128. package/views/3d/support/DisplayQualityProfile.js +1 -1
  129. package/views/3d/support/MemoryController.js +1 -1
  130. package/views/3d/terrain/OverlayManager.js +1 -1
  131. package/views/3d/terrain/TerrainRenderer.js +1 -1
  132. package/views/3d/terrain/TerrainSurface.js +1 -1
  133. package/views/3d/webgl-engine/Stage.js +1 -1
  134. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  135. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  136. package/views/3d/webgl-engine/lib/RenderPluginManager.js +1 -1
  137. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  138. package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
  139. package/views/3d/webgl-engine/lib/lodRendering/BackedBufferObject.js +1 -1
  140. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  141. package/views/3d/webgl-engine/lib/lodRendering/RenderInstanceData.js +1 -1
  142. package/views/draw/support/GraphicMover.js +1 -1
  143. package/views/interactive/dragEventPipeline.js +1 -1
  144. package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
  145. package/views/layers/FeatureLayerView.js +1 -1
  146. package/views/layers/support/MapServiceLayerViewHelper.js +1 -1
  147. package/views/webgl/RenderingContext.js +1 -1
  148. package/views/webgl/Util.js +1 -1
  149. package/views/webgl/capabilities/Capabilities.js +1 -1
  150. package/webdoc/support/saveUtils.js +1 -1
  151. package/widgets/Editor/UpdateWorkflow.js +1 -1
  152. package/widgets/Editor/workflowUtils.js +1 -1
  153. package/widgets/ElevationProfile/components/Legend.js +1 -1
  154. package/widgets/ElevationProfile/components/LegendItem.js +1 -1
  155. package/widgets/ElevationProfile/components/SettingsButton.js +1 -1
  156. package/widgets/ElevationProfile/components/Statistics.js +1 -1
  157. package/widgets/ElevationProfile/css.js +1 -1
  158. package/widgets/ElevationProfile.js +1 -1
  159. package/widgets/Feature/FeatureMedia/xyChart.js +1 -1
  160. package/widgets/FeatureTable/Grid/support/ButtonMenu.js +1 -1
  161. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
  162. package/widgets/FeatureTemplates/ItemList.js +1 -1
  163. package/widgets/FeatureTemplates.js +1 -1
  164. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  165. package/widgets/Widget.js +1 -1
  166. package/widgets/support/chartUtilsAm5.js +1 -1
  167. package/assets/esri/core/workers/chunks/0380e9f61b6f3ca85139.js +0 -1
  168. package/assets/esri/core/workers/chunks/1497709057d28ce7c1be.js +0 -1
  169. package/assets/esri/core/workers/chunks/156e801a3262f0ac79c0.js +0 -1
  170. package/assets/esri/core/workers/chunks/15cd07230970ea4e61cb.js +0 -1
  171. package/assets/esri/core/workers/chunks/1a42c6a0b5a1c7dd8bfb.js +0 -1
  172. package/assets/esri/core/workers/chunks/1ae75f5282e983f6d768.js +0 -1
  173. package/assets/esri/core/workers/chunks/21132f6fba46bcfdebdb.js +0 -1
  174. package/assets/esri/core/workers/chunks/26dc66f0e00d533d9001.js +0 -1
  175. package/assets/esri/core/workers/chunks/294285f2822c101326ec.js +0 -1
  176. package/assets/esri/core/workers/chunks/29f9a380610e4fd98a7c.js +0 -1
  177. package/assets/esri/core/workers/chunks/303238fc2fcdbb277981.js +0 -1
  178. package/assets/esri/core/workers/chunks/3f19a7fa65ebedd6b938.js +0 -1
  179. package/assets/esri/core/workers/chunks/4018d8a06471423cb672.js +0 -1
  180. package/assets/esri/core/workers/chunks/40ee4e0a5000a08c3abd.js +0 -1
  181. package/assets/esri/core/workers/chunks/4128e45e17c9e5280e11.js +0 -1
  182. package/assets/esri/core/workers/chunks/4a071d0b980911e3d010.js +0 -1
  183. package/assets/esri/core/workers/chunks/4af955f49b69b7f31b2a.js +0 -1
  184. package/assets/esri/core/workers/chunks/505792ce8cbbddd2e815.js +0 -1
  185. package/assets/esri/core/workers/chunks/52e111852b038069d983.js +0 -1
  186. package/assets/esri/core/workers/chunks/570e94f4fbefc856d303.js +0 -1
  187. package/assets/esri/core/workers/chunks/5b9c531a8e9591167cbd.js +0 -1
  188. package/assets/esri/core/workers/chunks/5f6e899aceffcf9bffb0.js +0 -1
  189. package/assets/esri/core/workers/chunks/60486acc5dacf73f851a.js +0 -1
  190. package/assets/esri/core/workers/chunks/6a3d611e8842afbb50ab.js +0 -2
  191. package/assets/esri/core/workers/chunks/719f741a0e45c3e694ba.js +0 -1
  192. package/assets/esri/core/workers/chunks/7304f45f5622a68253e4.js +0 -1
  193. package/assets/esri/core/workers/chunks/7694521b44681d52b713.js +0 -1
  194. package/assets/esri/core/workers/chunks/7dc6774c77c822b68c99.js +0 -1
  195. package/assets/esri/core/workers/chunks/82a103a8b5382300889d.js +0 -1
  196. package/assets/esri/core/workers/chunks/840fd05ceaa038c476d6.js +0 -1
  197. package/assets/esri/core/workers/chunks/847f3d6bb0d0318e1f74.js +0 -1
  198. package/assets/esri/core/workers/chunks/89f7fd2ab92aa14fe0c0.js +0 -1
  199. package/assets/esri/core/workers/chunks/8a6f29f2ebd59783bb1b.js +0 -1
  200. package/assets/esri/core/workers/chunks/9112d2c37c8709ee972f.js +0 -1
  201. package/assets/esri/core/workers/chunks/9b9dea1e51d1fc7d82d6.js +0 -1
  202. package/assets/esri/core/workers/chunks/a0face18b3ea567999ef.js +0 -1
  203. package/assets/esri/core/workers/chunks/a6ece91e6b3343f133a0.js +0 -1
  204. package/assets/esri/core/workers/chunks/b9ef05c22bc3e395bcb3.js +0 -1
  205. package/assets/esri/core/workers/chunks/bb3c94acc6d60436e40a.js +0 -1
  206. package/assets/esri/core/workers/chunks/bc5e34200776cfc83d5b.js +0 -1
  207. package/assets/esri/core/workers/chunks/c3ab84c5b4e6ae91cde9.js +0 -1
  208. package/assets/esri/core/workers/chunks/c43d3c7e255f2c409c8f.js +0 -1
  209. package/assets/esri/core/workers/chunks/c6af4e533e24a2cf4da6.js +0 -1
  210. package/assets/esri/core/workers/chunks/c8c7482b4ba91fb7c296.js +0 -1
  211. package/assets/esri/core/workers/chunks/c9f5e949830196ad9458.js +0 -1
  212. package/assets/esri/core/workers/chunks/ce9c99cee3d1a3963e7c.js +0 -1
  213. package/assets/esri/core/workers/chunks/cf9a87b53ea74bae6a37.js +0 -1
  214. package/assets/esri/core/workers/chunks/d24f7ef6eca8c91b90b4.js +0 -1
  215. package/assets/esri/core/workers/chunks/da0ab3f64802204323ed.js +0 -1
  216. package/assets/esri/core/workers/chunks/de20572d334abd4a7d82.js +0 -1
  217. package/assets/esri/core/workers/chunks/df661a3b3629bd122a73.js +0 -1
  218. package/assets/esri/core/workers/chunks/eb7053ba7e491bf25829.js +0 -1
  219. package/assets/esri/core/workers/chunks/f0d994ec2c21d5e47ef5.js +0 -1
  220. package/assets/esri/core/workers/chunks/f1da7b29eecad0e9efae.js +0 -1
  221. package/assets/esri/core/workers/chunks/f1ebc68f46261bd642c2.js +0 -1
  222. package/assets/esri/core/workers/chunks/f53f20c7100092823487.js +0 -1
  223. package/assets/esri/core/workers/chunks/f556490dae3c69419052.js +0 -1
  224. package/assets/esri/core/workers/chunks/f6b7713b600b1d253801.js +0 -1
  225. package/views/webgl/capabilities/Instancing.js +0 -5
package/Basemap.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"./chunks/tslib.es6.js";import r from"./core/Collection.js";import{referenceSetter as t}from"./core/collectionUtils.js";import{deprecated as s}from"./core/deprecate.js";import{JSONSupportMixin as a}from"./core/JSONSupport.js";import{isClonable as o,clone as i}from"./core/lang.js";import n from"./core/Loadable.js";import{loadAll as l}from"./core/loadAll.js";import p from"./core/Logger.js";import{throwIfAborted as c,eachAlways as m}from"./core/promiseUtils.js";import{isProtocolRelative as h,urlToObject as u}from"./core/urlUtils.js";import{property as y}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import{subclass as d}from"./core/accessorSupport/decorators/subclass.js";import{writer as f}from"./core/accessorSupport/decorators/writer.js";import b from"./geometry/SpatialReference.js";import L from"./portal/Portal.js";import g from"./portal/PortalItem.js";import{getBasemapTitle as w,esriBasemapDefinitions as I}from"./support/basemapDefinitions.js";import{getLayerJSON as j}from"./webdoc/support/writeUtils.js";var S;let v=0;const _="esri.Basemap";let M=S=class extends(a(n)){constructor(e){super(e),this.id=null,this.portalItem=null,this.spatialReference=null,this.thumbnailUrl=null,this.title="Basemap",this.id=Date.now().toString(16)+"-basemap-"+v++,this.baseLayers=new r,this.referenceLayers=new r;const t=e=>{e.parent&&e.parent!==this&&"remove"in e.parent&&e.parent.remove(e),e.parent=this,"elevation"===e.type&&p.getLogger(this).error(`Layer '${e.title}, id:${e.id}' of type '${e.type}' is not supported as a basemap layer and will therefore be ignored.`)},s=e=>{e.parent=null};this.addHandles([this.baseLayers.on("after-add",(e=>t(e.item))),this.referenceLayers.on("after-add",(e=>t(e.item))),this.baseLayers.on("after-remove",(e=>s(e.item))),this.referenceLayers.on("after-remove",(e=>s(e.item)))])}initialize(){this.when().catch((e=>{p.getLogger(this).error("#load()",`Failed to load basemap (title: '${this.title}', id: '${this.id}')`,e)})),this.resourceInfo&&this.read(this.resourceInfo.data,this.resourceInfo.context)}destroy(){this.baseLayers.destroy(),this.referenceLayers.destroy(),this.portalItem=null}normalizeCtorArgs(e){return e&&"resourceInfo"in e&&(this._set("resourceInfo",e.resourceInfo),delete(e={...e}).resourceInfo),e}set baseLayers(e){this._set("baseLayers",t(e,this._get("baseLayers")))}_writeBaseLayers(e,r,t){const s=[];e?(t={...t,layerContainerType:"basemap"},this.baseLayers.forEach((e=>{const r=j(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&s.push(r)})),this.referenceLayers.forEach((e=>{const r=j(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&("scene"!==e.type&&(r.isReference=!0),s.push(r))})),r.baseMapLayers=s):r.baseMapLayers=s}set referenceLayers(e){this._set("referenceLayers",t(e,this._get("referenceLayers")))}writeTitle(e,r){r.title=e||"Basemap"}load(e){return this.addResolvingPromise(this._loadFromSource(e)),Promise.resolve(this)}loadAll(){return l(this,(e=>{e(this.baseLayers,this.referenceLayers)}))}clone(){const e={id:this.id,title:this.title,portalItem:this.portalItem,baseLayers:this.baseLayers.map((e=>o(e)?e.clone():e)),referenceLayers:this.referenceLayers.map((e=>o(e)?e.clone():e))};return this.loaded&&(e.loadStatus="loaded"),new S({resourceInfo:this.resourceInfo}).set(e)}read(e,r){this.resourceInfo||this._set("resourceInfo",{data:e,context:r}),super.read(e,r)}write(e,r){return e=e||{},r&&r.origin||(r={origin:"web-map",...r}),super.write(e,r),!this.loaded&&this.resourceInfo&&this.resourceInfo.data.baseMapLayers&&(e.baseMapLayers=this.resourceInfo.data.baseMapLayers.map((e=>{const r=i(e);return r.url&&h(r.url)&&(r.url=`https:${r.url}`),r.templateUrl&&h(r.templateUrl)&&(r.templateUrl=`https:${r.templateUrl}`),r}))),e}async _loadFromSource(e){const{resourceInfo:r,portalItem:t}=this;c(e);const s=[];if(r){const t=r.context?r.context.url:null;if(s.push(this._loadLayersFromJSON(r.data,t,e)),r.data.id&&!r.data.title){const e=r.data.id;s.push(w(e).then((e=>{e&&this.read({title:e},r.context)})))}}else t&&s.push(this._loadFromItem(t,e));await Promise.all(s)}async _loadLayersFromJSON(e,r,t){const s=this.resourceInfo&&this.resourceInfo.context,a=this.portalItem&&this.portalItem.portal||s&&s.portal||null,o=x[s?.origin||""]??"web-map",{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),n=[];if(c(t),e.baseMapLayers&&Array.isArray(e.baseMapLayers)){const t={context:{origin:o,url:r,portal:a,layerContainerType:"basemap"},defaultLayerType:"DefaultTileLayer"},s=e=>"web-scene"===o&&"ArcGISSceneServiceLayer"===e.layerType||e.isReference,l=i(this.baseLayers,e.baseMapLayers.filter((e=>!s(e))),t);n.push(l);const p=i(this.referenceLayers,e.baseMapLayers.filter(s),t);n.push(p)}await m(n)}async _loadFromItem(e,r){const t=await e.load(r),s=await t.fetchData("json",r),a=u(e.itemUrl??"");return this._set("resourceInfo",{data:s.baseMap??{},context:{origin:U[e.type||""]??"web-map",portal:e.portal||L.getDefault(),url:a}}),this.read(this.resourceInfo.data,this.resourceInfo.context),this.read({spatialReference:s.spatialReference},this.resourceInfo.context),this.read({title:e.title,thumbnailUrl:e.thumbnailUrl},{origin:"portal-item",portal:e.portal||L.getDefault(),url:a}),this._loadLayersFromJSON(this.resourceInfo.data,a,r)}static fromId(e){const r=I[e];if(!r)return null;if(r.deprecated){let r=null;"dark-gray"===e?r="dark-gray-vector":"gray"===e?r="gray-vector":"streets"===e?r="streets-vector":"topo"===e&&(r="topo-vector"),s(p.getLogger(_),`The ${e} basemap has entered mature support and is no longer being updated.`,{replacement:r,see:"https://arcg.is/1iq8aD",warnOnce:!0})}return S.fromJSON(r)}};e([y({json:{write:{ignoreOrigin:!0,target:"baseMapLayers",writer(e,r,t,s){this._writeBaseLayers(e,r,s)}},origins:{"web-scene":{write:{ignoreOrigin:!0,target:{baseMapLayers:{type:r}},writer(e,r,t,s){this._writeBaseLayers(e,r,s)}}}}}})],M.prototype,"baseLayers",null),e([y({type:String,json:{origins:{"web-scene":{write:!0}}}})],M.prototype,"id",void 0),e([y({type:g})],M.prototype,"portalItem",void 0),e([y()],M.prototype,"referenceLayers",null),e([y({readOnly:!0})],M.prototype,"resourceInfo",void 0),e([y({type:b})],M.prototype,"spatialReference",void 0),e([y()],M.prototype,"thumbnailUrl",void 0),e([y({type:String,json:{origins:{"web-scene":{write:{isRequired:!0}}}}})],M.prototype,"title",void 0),e([f("title")],M.prototype,"writeTitle",null),M=S=e([d(_)],M);const U={"Web Scene":"web-scene","Web Map":"web-map","Link Chart":"link-chart"},x={"web-scene":"web-scene","web-map":"web-map","link-chart":"link-chart"},O=M;export{O as default};
5
+ import{_ as e}from"./chunks/tslib.es6.js";import r from"./core/Collection.js";import{referenceSetter as t}from"./core/collectionUtils.js";import{deprecated as s}from"./core/deprecate.js";import{JSONSupportMixin as a}from"./core/JSONSupport.js";import{isClonable as o,clone as i}from"./core/lang.js";import n from"./core/Loadable.js";import{loadAll as l}from"./core/loadAll.js";import p from"./core/Logger.js";import{throwIfAborted as c}from"./core/promiseUtils.js";import{isProtocolRelative as m,urlToObject as h}from"./core/urlUtils.js";import{property as u}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import{subclass as y}from"./core/accessorSupport/decorators/subclass.js";import{writer as d}from"./core/accessorSupport/decorators/writer.js";import f from"./geometry/SpatialReference.js";import b from"./portal/Portal.js";import L from"./portal/PortalItem.js";import{getBasemapTitle as g,esriBasemapDefinitions as w}from"./support/basemapDefinitions.js";import{getLayerJSON as I}from"./webdoc/support/writeUtils.js";var j;let S=0;const v="esri.Basemap";let _=j=class extends(a(n)){constructor(e){super(e),this.id=null,this.portalItem=null,this.spatialReference=null,this.thumbnailUrl=null,this.title="Basemap",this.id=Date.now().toString(16)+"-basemap-"+S++,this.baseLayers=new r,this.referenceLayers=new r;const t=e=>{e.parent&&e.parent!==this&&"remove"in e.parent&&e.parent.remove(e),e.parent=this,"elevation"===e.type&&p.getLogger(this).error(`Layer '${e.title}, id:${e.id}' of type '${e.type}' is not supported as a basemap layer and will therefore be ignored.`)},s=e=>{e.parent=null};this.addHandles([this.baseLayers.on("after-add",(e=>t(e.item))),this.referenceLayers.on("after-add",(e=>t(e.item))),this.baseLayers.on("after-remove",(e=>s(e.item))),this.referenceLayers.on("after-remove",(e=>s(e.item)))])}initialize(){this.when().catch((e=>{p.getLogger(this).error("#load()",`Failed to load basemap (title: '${this.title}', id: '${this.id}')`,e)})),this.resourceInfo&&this.read(this.resourceInfo.data,this.resourceInfo.context)}destroy(){this.baseLayers.destroy(),this.referenceLayers.destroy(),this.portalItem=null}normalizeCtorArgs(e){return e&&"resourceInfo"in e&&(this._set("resourceInfo",e.resourceInfo),delete(e={...e}).resourceInfo),e}set baseLayers(e){this._set("baseLayers",t(e,this._get("baseLayers")))}_writeBaseLayers(e,r,t){const s=[];e?(t={...t,layerContainerType:"basemap"},this.baseLayers.forEach((e=>{const r=I(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&s.push(r)})),this.referenceLayers.forEach((e=>{const r=I(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&("scene"!==e.type&&(r.isReference=!0),s.push(r))})),r.baseMapLayers=s):r.baseMapLayers=s}set referenceLayers(e){this._set("referenceLayers",t(e,this._get("referenceLayers")))}writeTitle(e,r){r.title=e||"Basemap"}load(e){return this.addResolvingPromise(this._loadFromSource(e)),Promise.resolve(this)}loadAll(){return l(this,(e=>{e(this.baseLayers,this.referenceLayers)}))}clone(){const e={id:this.id,title:this.title,portalItem:this.portalItem,baseLayers:this.baseLayers.map((e=>o(e)?e.clone():e)),referenceLayers:this.referenceLayers.map((e=>o(e)?e.clone():e))};return this.loaded&&(e.loadStatus="loaded"),new j({resourceInfo:this.resourceInfo}).set(e)}read(e,r){this.resourceInfo||this._set("resourceInfo",{data:e,context:r}),super.read(e,r)}write(e,r){return e=e||{},r&&r.origin||(r={origin:"web-map",...r}),super.write(e,r),!this.loaded&&this.resourceInfo&&this.resourceInfo.data.baseMapLayers&&(e.baseMapLayers=this.resourceInfo.data.baseMapLayers.map((e=>{const r=i(e);return r.url&&m(r.url)&&(r.url=`https:${r.url}`),r.templateUrl&&m(r.templateUrl)&&(r.templateUrl=`https:${r.templateUrl}`),r}))),e}async _loadFromSource(e){const{resourceInfo:r,portalItem:t}=this;c(e);const s=[];if(r){const t=r.context?r.context.url:null;if(s.push(this._loadLayersFromJSON(r.data,t,e)),r.data.id&&!r.data.title){const e=r.data.id;s.push(g(e).then((e=>{e&&this.read({title:e},r.context)})))}}else t&&s.push(this._loadFromItem(t,e));await Promise.all(s)}async _loadLayersFromJSON(e,r,t){const s=this.resourceInfo&&this.resourceInfo.context,a=this.portalItem&&this.portalItem.portal||s&&s.portal||null,o=U[s?.origin||""]??"web-map",{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),n=[];if(c(t),e.baseMapLayers&&Array.isArray(e.baseMapLayers)){const t={context:{origin:o,url:r,portal:a,layerContainerType:"basemap"},defaultLayerType:"DefaultTileLayer"},s=e=>"web-scene"===o&&"ArcGISSceneServiceLayer"===e.layerType||e.isReference,l=i(this.baseLayers,e.baseMapLayers.filter((e=>!s(e))),t);n.push(l);const p=i(this.referenceLayers,e.baseMapLayers.filter(s),t);n.push(p)}await Promise.allSettled(n)}async _loadFromItem(e,r){const t=await e.load(r),s=await t.fetchData("json",r),a=h(e.itemUrl??"");return this._set("resourceInfo",{data:s.baseMap??{},context:{origin:M[e.type||""]??"web-map",portal:e.portal||b.getDefault(),url:a}}),this.read(this.resourceInfo.data,this.resourceInfo.context),this.read({spatialReference:s.spatialReference},this.resourceInfo.context),this.read({title:e.title,thumbnailUrl:e.thumbnailUrl},{origin:"portal-item",portal:e.portal||b.getDefault(),url:a}),this._loadLayersFromJSON(this.resourceInfo.data,a,r)}static fromId(e){const r=w[e];if(!r)return null;if(r.deprecated){let r=null;"dark-gray"===e?r="dark-gray-vector":"gray"===e?r="gray-vector":"streets"===e?r="streets-vector":"topo"===e&&(r="topo-vector"),s(p.getLogger(v),`The ${e} basemap has entered mature support and is no longer being updated.`,{replacement:r,see:"https://arcg.is/1iq8aD",warnOnce:!0})}return j.fromJSON(r)}};e([u({json:{write:{ignoreOrigin:!0,target:"baseMapLayers",writer(e,r,t,s){this._writeBaseLayers(e,r,s)}},origins:{"web-scene":{write:{ignoreOrigin:!0,target:{baseMapLayers:{type:r}},writer(e,r,t,s){this._writeBaseLayers(e,r,s)}}}}}})],_.prototype,"baseLayers",null),e([u({type:String,json:{origins:{"web-scene":{write:!0}}}})],_.prototype,"id",void 0),e([u({type:L})],_.prototype,"portalItem",void 0),e([u()],_.prototype,"referenceLayers",null),e([u({readOnly:!0})],_.prototype,"resourceInfo",void 0),e([u({type:f})],_.prototype,"spatialReference",void 0),e([u()],_.prototype,"thumbnailUrl",void 0),e([u({type:String,json:{origins:{"web-scene":{write:{isRequired:!0}}}}})],_.prototype,"title",void 0),e([d("title")],_.prototype,"writeTitle",null),_=j=e([y(v)],_);const M={"Web Scene":"web-scene","Web Map":"web-map","Link Chart":"link-chart"},U={"web-scene":"web-scene","web-map":"web-map","link-chart":"link-chart"},x=_;export{x as default};
package/WebMap.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"./chunks/tslib.es6.js";import{version as t}from"./kernel.js";import r from"./Map.js";import i from"./Viewpoint.js";import{isSome as o}from"./core/arrayUtils.js";import a from"./core/Collection.js";import s from"./core/Error.js";import n from"./core/Loadable.js";import{loadAll as l}from"./core/loadAll.js";import p from"./core/Logger.js";import{MultiOriginJSONMixin as u,MultiOriginJSONSupport as m}from"./core/MultiOriginJSONSupport.js";import{EsriPromiseMixin as h}from"./core/Promise.js";import{debounce as d,eachAlways as c}from"./core/promiseUtils.js";import{whenOnce as y}from"./core/reactiveUtils.js";import{urlToObject as w,hasSameCanonicalArcGISOnlinePortal as f,isDataProtocol as g,dataComponents as b,addQueryParameter as _}from"./core/urlUtils.js";import{property as v}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import"./core/has.js";import{reader as A}from"./core/accessorSupport/decorators/reader.js";import{subclass as I}from"./core/accessorSupport/decorators/subclass.js";import{writer as S}from"./core/accessorSupport/decorators/writer.js";import{updateOrigins as j}from"./core/accessorSupport/originUtils.js";import{readLoadable as U}from"./core/accessorSupport/read.js";import O from"./geometry/SpatialReference.js";import{equals as P}from"./geometry/support/spatialReferenceUtils.js";import{webMercatorToGeographic as L}from"./geometry/support/webMercatorUtils.js";import{isServerOrServicesAGOLUrl as V}from"./layers/support/arcgisLayerUrl.js";import{isLayerWithFeatureLayerSource as R,isFeatureCollectionLayer as T}from"./layers/support/layerUtils.js";import F from"./networks/UtilityNetwork.js";import W from"./portal/Portal.js";import k from"./portal/PortalItem.js";import{removeTypeKeyword as N,addTypeKeyword as E,hasTypeKeyword as M,TypeKeyword as C}from"./portal/support/portalItemUtils.js";import{project as x}from"./rest/geometryService/project.js";import B from"./rest/support/ProjectParameters.js";import{hasDeveloperBasemapLayer as J,isDeveloperBasemapLayer as D,findSpatialReference as G}from"./support/basemapUtils.js";import K from"./support/MapFloorInfo.js";import $ from"./webdoc/GeotriggersInfo.js";import{SaveOperationType as z}from"./webdoc/interfaces.js";import q from"./webdoc/RangeInfo.js";import H from"./webdoc/Widgets.js";import{getOptimalThumbnailSize as Q}from"./webdoc/support/thumbnailUtils.js";import{getLayerJSON as X}from"./webdoc/support/writeUtils.js";import Y from"./webmap/ApplicationProperties.js";import Z from"./webmap/Bookmark.js";import ee from"./webmap/InitialViewProperties.js";import{computeInitialViewpoint as te}from"./webmap/initialViewPropertiesUtils.js";import{Version as re}from"./webmap/Version.js";import ie from"./webmap/background/ColorBackground.js";const oe=new re(2,28),ae="Web Map",se=a.ofType(Z),ne=a.ofType(F),le=new Map;le.set("image/jpeg","jpeg"),le.set("image/jpg","jpg"),le.set("image/png","png"),le.set("image/gif","gif");const pe="ArcGIS Pro",ue=C.JSAPI,me="CollectorDisabled",he="Collector",de="Data Editing",ce="OfflineDisabled",ye="Offline",we="Workforce Project",fe="Workforce Worker",ge="Workforce Dispatcher",be="Offline Map Areas",_e="FieldMapsDisabled",ve=C.DEVELOPER_BASEMAP,Ae="UtilityNetwork",Ie=["NatGeo_World_Map","Ocean_Basemap","USA_Topo_Maps","World_Imagery","World_Street_Map","World_Terrain_Base","World_Topo_Map","World_Hillshade","Canvas/World_Light_Gray_Base","Canvas/World_Light_Gray_Reference","Canvas/World_Dark_Gray_Base","Canvas/World_Dark_Gray_Reference","Ocean/World_Ocean_Base","Ocean/World_Ocean_Reference","Reference/World_Boundaries_and_Places","Reference/World_Reference_Overlay","Reference/World_Transportation"].map((e=>e.toLowerCase()));let Se=class extends(u(n.LoadableMixin(h(r)))){constructor(e){super(e),this._isAuthoringAppSetByUser=!1,this._isAuthoringAppVersionSetByUser=!1,this._thumbnailFilename=null,this._updateFromPromise=null,this._resourceReferences={portalItem:null,paths:[]},this.applicationProperties=null,this.bookmarks=new se,this.floorInfo=null,this.geotriggersInfo=null,this.initialViewProperties=new ee,this.portalItem=null,this.presentation=null,this.sourceVersion=null,this.widgets=null,this.utilityNetworks=null,this._debouncedSaveOperations=d((async(e,t,r)=>{switch(e){case z.SAVE:return this._saveImpl(t);case z.SAVE_AS:return this._saveAsImpl(r,t)}})),this.authoringApp=this.authoringAppVersion=null,this._isAuthoringAppSetByUser=this._isAuthoringAppVersionSetByUser=!1}destroy(){const e=this.portalItem;this.portalItem=null,e?.destroy()}initialize(){if(this.when().catch((e=>{p.getLogger(this).error("#load()","Failed to load web map",e)})),this.resourceInfo){let t;try{t=this._validateJSON(this.resourceInfo)}catch(e){return void this.addResolvingPromise(Promise.reject(e))}this.read(t)}}set authoringApp(e){this._isAuthoringAppSetByUser=!0,this._set("authoringApp",e)}writeAuthoringApp(e,t){e&&this._isAuthoringAppSetByUser?t.authoringApp=e:t.authoringApp=ue}set authoringAppVersion(e){this._isAuthoringAppVersionSetByUser=!0,this._set("authoringAppVersion",e)}writeAuthoringAppVersion(e,r){e&&this._isAuthoringAppVersionSetByUser?r.authoringAppVersion=e:r.authoringAppVersion=t}readInitialViewProperties(e,t){const r=new ee;t.background&&(r.background=ie.fromJSON(t.background));const o=t.initialState?.viewpoint;if(o){if(o.rotation){re.parse(t.version||"","webmap").lessThan(2,20)&&t.authoringApp===pe&&(o.rotation*=-1)}r.viewpoint=i.fromJSON(o)}return t.mapRangeInfo&&(r.rangeInfo=q.fromJSON(t.mapRangeInfo)),t.spatialReference&&(r.spatialReference=O.fromJSON(t.spatialReference)),r}writeInitialViewProperties(e,t,r,i){if(!e)return;const o=e.background;o&&o.color&&(t.background=o.write({},i)),e.viewpoint&&(t.initialState={viewpoint:e.viewpoint.write({},i)}),e.rangeInfo&&(t.mapRangeInfo=e.rangeInfo.toJSON(i)),e.spatialReference&&(t.spatialReference=e.spatialReference.write({},i))}writeLayers(e,t,r,i){t[r]=this._writeLayers(e,i,"operational-layers")}readSourceVersion(e,t){const[r,i]=t.version.split(".");return new re(parseInt(r,10),parseInt(i,10))}writeSourceVersion(e,t,r){t[r]=`${oe.major}.${oe.minor}`}writeTables(e,t,r,i){const o=this._writeLayers(e,i,"tables");o.length&&(t[r]=o)}get thumbnailUrl(){return this.portalItem&&this.portalItem.thumbnailUrl||null}set thumbnailUrl(e){e?(this._override("thumbnailUrl",e),this._thumbnailFilename=this._generateCustomThumbnailFilename(e)):this._clearThumbnailOverride()}load(e){return this.addResolvingPromise(this._loadFromSource()),Promise.resolve(this)}loadAll(){return l(this,(e=>{e(this.ground,this.basemap,this.layers,this.tables)}))}read(e,t){t={...t,origin:"web-map"};const r=this._getAuthoringPropsState();U(this,e,(t=>super.read(e,t)),t),this._restoreAuthoringPropsFromState(r)}write(e,t){if("loaded"!==this.loadStatus){const e=new s("webmap:not-loaded","Web map must be loaded before it can be serialized");throw p.getLogger(this).error("#toJSON()","Web map must be loaded before it can be serialized",this.loadError||this.loadStatus),e}return this._removeDanglingLayerRefs(),t={...t,origin:"web-map",restrictedWebMapWriting:!0,webmap:this},super.write(e,t)}async save(e){return this._debouncedSaveOperations(z.SAVE,e)}async saveAs(e,t){return this._debouncedSaveOperations(z.SAVE_AS,t,e)}async updateFrom(e,t){const r=this._updateFromInternal(e,t);this._updateFromPromise=r,await r;r===this._updateFromPromise&&(this._updateFromPromise=null)}getLayerJSONFromResourceInfo(e){const t=this.resourceInfo;return this._collectAllLayersJSON([...t?.baseMap?.baseMapLayers||[],...t?.operationalLayers||[],...this.basemap?.resourceInfo?.data?.baseMapLayers||[]]).find((t=>t.id===e.id))}async _saveImpl(e){e=e||{},this._validateItem();const t=import("./webdoc/support/saveUtils.js");await this._updateFromPromise,await this.load(),await this._loadLayerContainers(),await this._beforeSave(),await this._validateMap();const r=this.portalItem,i=w(r.itemUrl),o={origin:"web-map",messages:[],writtenProperties:[],url:i,portal:r.portal||W.getDefault(),portalItem:r,verifyItemRelativeUrls:i?{rootPath:i.path,writtenUrls:[]}:null,blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},a=this.write({},o);return await Promise.all(o.resources.pendingOperations),this._validateJSONForWriting(o,e),await this._updateItemProperties(r),await this._updateItem(r,a,o),await Promise.all([this._updateItemThumbnail(),t.then((({saveResources:e})=>e(this._resourceReferences,o,null)))]),r}async _saveAsImpl(e,t){t=t||{};const r=this._getPortalItem(e),i=import("./webdoc/support/saveUtils.js");await this._updateFromPromise,await this.load(),await this._loadLayerContainers(),await this._beforeSave(),await this._validateMap();const o={origin:"web-map",messages:[],writtenProperties:[],url:null,portal:r.portal,portalItem:r,blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},a=this.write({},o);await Promise.all(o.resources.pendingOperations),this._validateJSONForWriting(o,t),await this._updateItemPropertiesForSaveAs(r);const s=this._getThumbnailState();return await this._createItem(r,a,o,t)&&(this._resourceReferences.portalItem=r),this._restoreThumbnailFromState(s),await Promise.all([this._updateItemThumbnail(),i.then((({saveResources:e})=>e(this._resourceReferences,o,null)))]),r}_collectAllLayersJSON(e){return e.reduce(((e,t)=>(e.push(t),"GroupLayer"===t.layerType&&(e=e.concat(this._collectAllLayersJSON(t.layers||[]))),e)),[])}_writeLayers(e,t,r){t={...t,layerContainerType:r};return e.map((e=>X(e,"tables"===r?null:this.getLayerJSONFromResourceInfo(e),t))).filter(o).toArray()}_loadFromSource(){return this.resourceInfo?this._loadFromJSON(this.resourceInfo,{origin:"web-map"}):this.portalItem&&this.portalItem.id?this._loadFromItem(this.portalItem):Promise.resolve()}async _loadFromItem(e){if(await e.load().catch((e=>{throw new s("webmap:load-portal-item","Failed to load portal item",{error:e})})),"Web Map"!==e.type)throw new s("webmap:invalid-portal-item",`Invalid portal item type '${e.type}', expected 'Web Map'`,{type:e.type});const t=await e.fetchData();this.resourceInfo=t;const r={origin:"web-map",url:w(e.itemUrl),portal:e.portal||W.getDefault(),portalItem:e,readResourcePaths:[]};await this._readAndLoadFromJSON(t,r),this._resourceReferences={portalItem:e,paths:r.readResourcePaths??[]};const i=await te(this.initialViewProperties,e,p.getLogger(this));if(i){const e=this.initialViewProperties?.clone()??new ee;e.viewpoint=i,this.initialViewProperties=e}}_readAndLoadFromJSON(e,t){const r=this._validateJSON(e);return this.read(r,t),this._loadFromJSON(r,t)}_validateJSON(e){const t=re.parse(e.version||"","webmap");return oe.validate(t),e.version=`${t.major}.${t.minor}`,e}_loadFromJSON(e,t){const r={context:{...t,layerContainerType:"operational-layers"}};return this.portalItem&&(r.context.portal=this.portalItem.portal||W.getDefault()),import("./layers/support/layersCreator.js").then((({populateOperationalLayers:t})=>{const i=[],o=e.operationalLayers;o&&o.length&&i.push(t(this.layers,o,r));const a={...r,context:{...r.context,layerContainerType:"tables"},defaultLayerType:"ArcGISFeatureLayer"},s=e.tables;return s&&s.length&&i.push(t(this.tables,s,a)),c(i).then((()=>{}))}))}_removeDanglingLayerRefs(){const e=this.applicationProperties,t=e&&e.viewing&&e.viewing.search,r=e=>this.allLayers.some((t=>t.id===e));t&&t.layers&&(t.layers=t.layers.filter((e=>r(e.id)))),t&&t.tables&&(t.tables=t.tables.filter((e=>this.tables.some((t=>t.id===e.id)))));const i=e&&e.editing&&e.editing.locationTracking;i&&i.info&&!r(i.info.layerId)&&(e.editing=null);const o=this.presentation&&this.presentation.slides;o&&o.forEach((e=>{e.visibleLayers&&(e.visibleLayers=e.visibleLayers.filter((e=>r(e.id))))}))}async _validateMap(){if(!this.basemap?.baseLayers.length)throw new s("webmap:save","Map does not have a valid basemap with a base layer.");let e=null;if(await y((()=>{const t=G(this.initialViewProperties,this.basemap);return e=t.spatialReference,!t.updating})),!P(e,this.initialViewProperties.spatialReference))throw new s("webmap:save","The spatial reference of the basemap is not compatible with the one from the map.",{expected:this.initialViewProperties.spatialReference,actual:e})}_validateItem(){if(!this.portalItem)throw p.getLogger(this).error("save: requires the portalItem property to be set"),new s("webmap:portal-item-not-set","Portal item to save to has not been set on the WebMap");this._validateItemType(this.portalItem)}_validateItemType(e){if(e.type!==ae)throw new s("webmap:portal-item-wrong-type",`Portal item needs to have type "${ae}"`)}_loadLayerContainers(){const e=[];return this.basemap&&e.push(this.basemap.load()),this.ground&&e.push(this.ground.load()),c(e).then((()=>{}))}async _beforeSave(){const e=[];for(const t of this.allLayers)if("beforeSave"in t&&"function"==typeof t.beforeSave){const r=t.beforeSave();r&&e.push(r)}await c(e)}_loadAllLayers(){const e=this._getAllLayersAndTables().map((e=>e.load()));return c(e).then((()=>{}))}_getAllLayersAndTables(){return this.allLayers.concat(this.allTables)}_validateJSONForWriting(e,t){let r=(e.messages??[]).filter((e=>"error"===e.type)).map((e=>new s(e.name,e.message,e.details)));if(e.blockedRelativeUrls&&(r=r.concat(e.blockedRelativeUrls.map((e=>new s("url:unsupported",`Relative url '${e}' is not supported in Web Map`))))),t.ignoreUnsupported&&(r=r.filter((e=>"layer:unsupported"!==e.name&&"symbol:unsupported"!==e.name&&"symbol-layer:unsupported"!==e.name&&"property:unsupported"!==e.name&&"url:unsupported"!==e.name))),r.length>0)throw new s("webmap:save","Failed to save webmap due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:r})}async _updateItemProperties(e){e.extent=await this._getWGS84Extent(this.initialViewProperties.viewpoint.targetGeometry),await this._updateTypeKeywords(e)}async _updateItemPropertiesForSaveAs(e){N(e,me),N(e,_e),N(e,C.METADATA),N(e,ce),N(e,be),N(e,ge),N(e,we),N(e,fe),await this._updateItemProperties(e)}async _getWGS84Extent(e){const t=e.clone().normalize();let r;if(t.length>1)for(const i of t)r?i.width>r.width&&(r=i):r=i;else r=t[0];return this._projectToWGS84(r)}async _projectToWGS84(e){const t=e.spatialReference;if(t.isWGS84)return e.clone();if(t.isWebMercator)return L(e);const{getGeometryServiceURL:r}=await import("./portal/support/geometryServiceUtils.js"),i=await r(this.portalItem),o=new B;o.geometries=[e],o.outSpatialReference=O.WGS84;return(await x(i,o))[0]}async _updateTypeKeywords(e){E(e,ue),await this._loadAllLayers(),this._evalCollectorKeyword(e),this._evalDataEditingKeyword(e),this._evalOfflineKeyword(e),this._evalDeveloperBasemapKeyword(e),this._evalUtilityNetworkKeyword(e),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}_evalCollectorKeyword(e){M(e,me)||M(e,we)||M(e,fe)||M(e,ge)||!this._hasEditableFeatureLayer()?N(e,he):E(e,he)}_evalDataEditingKeyword(e){this._hasEditableFeatureLayer()?E(e,de):N(e,de)}_evalOfflineKeyword(e){!M(e,ce)&&this._isOfflineCapableMap()?E(e,ye):N(e,ye)}_evalDeveloperBasemapKeyword(e){J(this.basemap)?E(e,ve):N(e,ve)}_evalUtilityNetworkKeyword(e){this.utilityNetworks?.length?E(e,Ae):N(e,Ae)}_hasEditableFeatureLayer(){return this._getAllLayersAndTables().some((e=>e.loaded&&R(e)&&e.capabilities.operations.supportsEditing&&e.editingEnabled&&("subtype-group"!==e.type||e.sublayers.some((e=>e.editingEnabled)))))}_isOfflineCapableMap(){return this._getAllLayersAndTables().filter((e=>"group"!==e.type)).every((e=>e.loaded&&this._isOfflineCapableLayer(e)))}_isFeatureCollectionLike(e){return T(e)||"map-notes"===e.type||"route"===e.type}_isOfflineCapableLayer(e){return R(e)&&e.capabilities.operations.supportsSync||this._isFeatureCollectionLike(e)&&!e.portalItem||("tile"===e.type||"vector-tile"===e.type)&&(e.capabilities.operations.supportsExportTiles||this._isExportableAGOLTileLayer(e)||D(e))&&e.spatialReference.equals(this.initialViewProperties.spatialReference)}_isExportableAGOLTileLayer(e){return"tile"===e.type&&(V(e.url)&&Ie.some((t=>e.url?.toLowerCase().includes("/"+t+"/"))))}async _updateItem(e,t,r){await e.update({data:t}),this._syncUpInstanceWithItem(e,t,r)}async _createItem(e,t,r,i){const o=this.portalItem,a={item:o,authenticated:!(!o?.id||!o.portal.user)},n=e.portal;await n.signIn();const{copyAllowed:l,itemReloaded:p}=await this._isCopyAllowed(a,n);if(a.authenticated||=p,!l)throw new s("webmap:save-as-copy-not-allowed","Owner of this map does not allow others to save a copy");const u=await this._initializeNewItem(e,a,t,i);return this.portalItem=e,this._syncUpInstanceWithItem(e,t,r),u}async _isCopyAllowed(e,t){const{item:r,authenticated:i}=e;return r?.id&&r.typeKeywords?.includes("useOnly")?r.portal.portalHostname!==t.portalHostname?{copyAllowed:!1,itemReloaded:!1}:(i||await r.reload(),{copyAllowed:"admin"===r.itemControl||"update"===r.itemControl,itemReloaded:!0}):{copyAllowed:!0,itemReloaded:!1}}async _initializeNewItem(e,t,r,i){const o=e.portal,{item:a}=t,{folder:s,copyAllResources:n}=i;let l=!1;if(n&&a?.id&&f(a.portal.url,o.url)){const{total:e}=await a.fetchResources();l=!!e}if(l){const t=await a.copy({copyResources:"all",folder:s});e.id=t.id,e.portal=t.portal;const i=e.toJSON();await e.load(),e.read(i),await e.update({data:r})}else await(o.user?.addItem({item:e,folder:s,data:r}));return l}_syncUpInstanceWithItem(e,t,r){m.prototype.read.call(this,{version:t.version,authoringApp:t.authoringApp,authoringAppVersion:t.authoringAppVersion},{origin:"web-map",ignoreDefaults:!0,url:e.itemUrl?w(e.itemUrl):void 0}),j(r),this.resourceInfo=t}async _updateItemThumbnail(){this.thumbnailUrl&&this._isOverridden("thumbnailUrl")&&(await(this.portalItem?.updateThumbnail({thumbnail:this.thumbnailUrl,filename:this._thumbnailFilename})),this._clearThumbnailOverride())}_getPortalItem(e){let t=k.from(e);return t.id&&(t=t.clone(),t.id=null),t.type||(t.type=ae),t.portal||(t.portal=W.getDefault()),this._validateItemType(t),t}async _updateFromInternal(e,t){if(t=t||{},await y((()=>e.ready)),this._updateInitialViewProperties(e,t),e.map===this)for(const r of e.allLayerViews)"visible"in r&&"visible"in r.layer&&r._isOverridden("visible")&&(r.layer.visible=r.visible),"featureEffect"in r&&"featureEffect"in r.layer&&r._isOverridden("featureEffect")&&(r.layer.featureEffect=r.featureEffect);await this._updateThumbnailUrl(e,t)}_updateInitialViewProperties(e,t){if(t.backgroundExcluded||(this.initialViewProperties.background=e.background?.clone()),this.initialViewProperties.spatialReference=e.spatialReference?.clone(),t.viewpointExcluded||(this.initialViewProperties.viewpoint=new i({rotation:e.rotation,scale:t.scalePreserved?e.scale:null,targetGeometry:this._getViewExtent(e)})),!t.widgetsExcluded)for(const r of e.persistableViewModels)r.updateWebDocument(this)}_getViewExtent(e){const t=e.center.clone().normalize(),r=e.extent.clone(),i=r.width/2;return r.xmin=t.x-i,r.xmax=t.x+i,r}async _updateThumbnailUrl(e,t){if(t.thumbnailExcluded)return;const r=Q(e,t.thumbnailSize),i=await e.takeScreenshot({format:"png",width:r.width,height:r.height});this._setAutoGeneratedThumbnail(i.dataUrl)}_setAutoGeneratedThumbnail(e){this.thumbnailUrl=e,this._thumbnailFilename=null}_clearThumbnailOverride(){this._clearOverride("thumbnailUrl"),this.clear("thumbnailUrl","user"),this._thumbnailFilename=null}_generateCustomThumbnailFilename(e){if(g(e)){const t=b(e),r=t&&t.mediaType,i=r&&le.get(r.toLowerCase())||null,o=`thumbnail${Date.now()}`;return i?`${o}.${i}`:o}return null}_getThumbnailState(){let e=this.thumbnailUrl;return e&&(e=this._isOverridden("thumbnailUrl")?e:_(e,"w","8192")),{thumbnailUrl:e,filename:this._thumbnailFilename}}_restoreThumbnailFromState(e){this.thumbnailUrl=e.thumbnailUrl,this._thumbnailFilename=e.filename}_getAuthoringPropsState(){return{authoringApp:this.authoringApp,authoringAppVersion:this.authoringAppVersion,isAuthoringAppSetByUser:this._isAuthoringAppSetByUser,isAuthoringAppVersionSetByUser:this._isAuthoringAppVersionSetByUser}}_restoreAuthoringPropsFromState(e){e.isAuthoringAppSetByUser?this.authoringApp=e.authoringApp:this._isAuthoringAppSetByUser=!1,e.isAuthoringAppVersionSetByUser?this.authoringAppVersion=e.authoringAppVersion:this._isAuthoringAppVersionSetByUser=!1}static fromJSON(e){const t=e;if(!t)throw new s("webmap:empty-resource","Expected a JSON resource but got nothing");return new this({resourceInfo:t})}};Se.VERSION=oe,e([v({type:Y,json:{write:!0}})],Se.prototype,"applicationProperties",void 0),e([v({type:String,json:{write:{allowNull:!0,ignoreOrigin:!0}}})],Se.prototype,"authoringApp",null),e([S("authoringApp")],Se.prototype,"writeAuthoringApp",null),e([v({type:String,json:{write:{allowNull:!0,ignoreOrigin:!0}}})],Se.prototype,"authoringAppVersion",null),e([S("authoringAppVersion")],Se.prototype,"writeAuthoringAppVersion",null),e([v({json:{read:{source:"baseMap"},write:{target:"baseMap"}}})],Se.prototype,"basemap",void 0),e([v({type:se,json:{write:{overridePolicy:e=>({enabled:!!(e&&e.length>0),ignoreOrigin:!0})}}})],Se.prototype,"bookmarks",void 0),e([v({type:K,json:{read:{source:"mapFloorInfo"},write:{target:"mapFloorInfo"}}})],Se.prototype,"floorInfo",void 0),e([v({type:$,json:{write:!0}})],Se.prototype,"geotriggersInfo",void 0),e([v({type:ee,nonNullable:!0,json:{read:{source:["background","initialState.viewpoint","mapRangeInfo","spatialReference"]},write:{ignoreOrigin:!0,target:{background:{type:ie},"initialState.viewpoint":{type:i},mapRangeInfo:{type:q},spatialReference:{type:O}}}}})],Se.prototype,"initialViewProperties",void 0),e([A("initialViewProperties")],Se.prototype,"readInitialViewProperties",null),e([S("initialViewProperties")],Se.prototype,"writeInitialViewProperties",null),e([v({json:{read:!1,write:{target:"operationalLayers",ignoreOrigin:!0}}})],Se.prototype,"layers",void 0),e([S("layers")],Se.prototype,"writeLayers",null),e([v({type:k})],Se.prototype,"portalItem",void 0),e([v({json:{write:!0}})],Se.prototype,"presentation",void 0),e([v()],Se.prototype,"resourceInfo",void 0),e([v({readOnly:!0,type:re,json:{read:{source:"version"},write:{allowNull:!0,ignoreOrigin:!0,target:"version",isRequired:!0}}})],Se.prototype,"sourceVersion",void 0),e([A("sourceVersion")],Se.prototype,"readSourceVersion",null),e([S("sourceVersion")],Se.prototype,"writeSourceVersion",null),e([v({json:{read:!1,write:{ignoreOrigin:!0}}})],Se.prototype,"tables",void 0),e([S("tables")],Se.prototype,"writeTables",null),e([v()],Se.prototype,"thumbnailUrl",null),e([v({type:H,json:{write:!0}})],Se.prototype,"widgets",void 0),e([v({type:ne,json:{read:!0,write:!0}})],Se.prototype,"utilityNetworks",void 0),Se=e([I("esri.WebMap")],Se);const je=Se;export{je as default};
5
+ import{_ as e}from"./chunks/tslib.es6.js";import{version as t}from"./kernel.js";import r from"./Map.js";import i from"./Viewpoint.js";import{isSome as o}from"./core/arrayUtils.js";import a from"./core/Collection.js";import s from"./core/Error.js";import n from"./core/Loadable.js";import{loadAll as l}from"./core/loadAll.js";import p from"./core/Logger.js";import{MultiOriginJSONMixin as m,MultiOriginJSONSupport as u}from"./core/MultiOriginJSONSupport.js";import{EsriPromiseMixin as h}from"./core/Promise.js";import{debounce as d}from"./core/promiseUtils.js";import{whenOnce as c}from"./core/reactiveUtils.js";import{urlToObject as y,hasSameCanonicalArcGISOnlinePortal as w,isDataProtocol as f,dataComponents as g,addQueryParameter as b}from"./core/urlUtils.js";import{property as _}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import"./core/has.js";import{reader as v}from"./core/accessorSupport/decorators/reader.js";import{subclass as A}from"./core/accessorSupport/decorators/subclass.js";import{writer as S}from"./core/accessorSupport/decorators/writer.js";import{updateOrigins as I}from"./core/accessorSupport/originUtils.js";import{readLoadable as j}from"./core/accessorSupport/read.js";import P from"./geometry/SpatialReference.js";import{equals as U}from"./geometry/support/spatialReferenceUtils.js";import{webMercatorToGeographic as O}from"./geometry/support/webMercatorUtils.js";import{isServerOrServicesAGOLUrl as L}from"./layers/support/arcgisLayerUrl.js";import{isLayerWithFeatureLayerSource as V,isFeatureCollectionLayer as R}from"./layers/support/layerUtils.js";import T from"./networks/UtilityNetwork.js";import F from"./portal/Portal.js";import W from"./portal/PortalItem.js";import{removeTypeKeyword as k,addTypeKeyword as N,hasTypeKeyword as E,TypeKeyword as M}from"./portal/support/portalItemUtils.js";import{project as C}from"./rest/geometryService/project.js";import x from"./rest/support/ProjectParameters.js";import{hasDeveloperBasemapLayer as B,isDeveloperBasemapLayer as J,findSpatialReference as D}from"./support/basemapUtils.js";import G from"./support/MapFloorInfo.js";import K from"./webdoc/GeotriggersInfo.js";import{SaveOperationType as $}from"./webdoc/interfaces.js";import z from"./webdoc/RangeInfo.js";import q from"./webdoc/Widgets.js";import{getOptimalThumbnailSize as H}from"./webdoc/support/thumbnailUtils.js";import{getLayerJSON as Q}from"./webdoc/support/writeUtils.js";import X from"./webmap/ApplicationProperties.js";import Y from"./webmap/Bookmark.js";import Z from"./webmap/InitialViewProperties.js";import{computeInitialViewpoint as ee}from"./webmap/initialViewPropertiesUtils.js";import{Version as te}from"./webmap/Version.js";import re from"./webmap/background/ColorBackground.js";const ie=new te(2,28),oe="Web Map",ae=a.ofType(Y),se=a.ofType(T),ne=new Map;ne.set("image/jpeg","jpeg"),ne.set("image/jpg","jpg"),ne.set("image/png","png"),ne.set("image/gif","gif");const le="ArcGIS Pro",pe=M.JSAPI,me="CollectorDisabled",ue="Collector",he="Data Editing",de="OfflineDisabled",ce="Offline",ye="Workforce Project",we="Workforce Worker",fe="Workforce Dispatcher",ge="Offline Map Areas",be="FieldMapsDisabled",_e=M.DEVELOPER_BASEMAP,ve="UtilityNetwork",Ae=["NatGeo_World_Map","Ocean_Basemap","USA_Topo_Maps","World_Imagery","World_Street_Map","World_Terrain_Base","World_Topo_Map","World_Hillshade","Canvas/World_Light_Gray_Base","Canvas/World_Light_Gray_Reference","Canvas/World_Dark_Gray_Base","Canvas/World_Dark_Gray_Reference","Ocean/World_Ocean_Base","Ocean/World_Ocean_Reference","Reference/World_Boundaries_and_Places","Reference/World_Reference_Overlay","Reference/World_Transportation"].map((e=>e.toLowerCase()));let Se=class extends(m(n.LoadableMixin(h(r)))){constructor(e){super(e),this._isAuthoringAppSetByUser=!1,this._isAuthoringAppVersionSetByUser=!1,this._thumbnailFilename=null,this._updateFromPromise=null,this._resourceReferences={portalItem:null,paths:[]},this.applicationProperties=null,this.bookmarks=new ae,this.floorInfo=null,this.geotriggersInfo=null,this.initialViewProperties=new Z,this.portalItem=null,this.presentation=null,this.sourceVersion=null,this.widgets=null,this.utilityNetworks=null,this._debouncedSaveOperations=d((async(e,t,r)=>{switch(e){case $.SAVE:return this._saveImpl(t);case $.SAVE_AS:return this._saveAsImpl(r,t)}})),this.authoringApp=this.authoringAppVersion=null,this._isAuthoringAppSetByUser=this._isAuthoringAppVersionSetByUser=!1}destroy(){const e=this.portalItem;this.portalItem=null,e?.destroy()}initialize(){if(this.when().catch((e=>{p.getLogger(this).error("#load()","Failed to load web map",e)})),this.resourceInfo){let t;try{t=this._validateJSON(this.resourceInfo)}catch(e){return void this.addResolvingPromise(Promise.reject(e))}this.read(t)}}set authoringApp(e){this._isAuthoringAppSetByUser=!0,this._set("authoringApp",e)}writeAuthoringApp(e,t){e&&this._isAuthoringAppSetByUser?t.authoringApp=e:t.authoringApp=pe}set authoringAppVersion(e){this._isAuthoringAppVersionSetByUser=!0,this._set("authoringAppVersion",e)}writeAuthoringAppVersion(e,r){e&&this._isAuthoringAppVersionSetByUser?r.authoringAppVersion=e:r.authoringAppVersion=t}readInitialViewProperties(e,t){const r=new Z;t.background&&(r.background=re.fromJSON(t.background));const o=t.initialState?.viewpoint;if(o){if(o.rotation){te.parse(t.version||"","webmap").lessThan(2,20)&&t.authoringApp===le&&(o.rotation*=-1)}r.viewpoint=i.fromJSON(o)}return t.mapRangeInfo&&(r.rangeInfo=z.fromJSON(t.mapRangeInfo)),t.spatialReference&&(r.spatialReference=P.fromJSON(t.spatialReference)),r}writeInitialViewProperties(e,t,r,i){if(!e)return;const o=e.background;o&&o.color&&(t.background=o.write({},i)),e.viewpoint&&(t.initialState={viewpoint:e.viewpoint.write({},i)}),e.rangeInfo&&(t.mapRangeInfo=e.rangeInfo.toJSON(i)),e.spatialReference&&(t.spatialReference=e.spatialReference.write({},i))}writeLayers(e,t,r,i){t[r]=this._writeLayers(e,i,"operational-layers")}readSourceVersion(e,t){const[r,i]=t.version.split(".");return new te(parseInt(r,10),parseInt(i,10))}writeSourceVersion(e,t,r){t[r]=`${ie.major}.${ie.minor}`}writeTables(e,t,r,i){const o=this._writeLayers(e,i,"tables");o.length&&(t[r]=o)}get thumbnailUrl(){return this.portalItem&&this.portalItem.thumbnailUrl||null}set thumbnailUrl(e){e?(this._override("thumbnailUrl",e),this._thumbnailFilename=this._generateCustomThumbnailFilename(e)):this._clearThumbnailOverride()}load(e){return this.addResolvingPromise(this._loadFromSource()),Promise.resolve(this)}loadAll(){return l(this,(e=>{e(this.ground,this.basemap,this.layers,this.tables)}))}read(e,t){t={...t,origin:"web-map"};const r=this._getAuthoringPropsState();j(this,e,(t=>super.read(e,t)),t),this._restoreAuthoringPropsFromState(r)}write(e,t){if("loaded"!==this.loadStatus){const e=new s("webmap:not-loaded","Web map must be loaded before it can be serialized");throw p.getLogger(this).error("#toJSON()","Web map must be loaded before it can be serialized",this.loadError||this.loadStatus),e}return this._removeDanglingLayerRefs(),t={...t,origin:"web-map",restrictedWebMapWriting:!0,webmap:this},super.write(e,t)}async save(e){return this._debouncedSaveOperations($.SAVE,e)}async saveAs(e,t){return this._debouncedSaveOperations($.SAVE_AS,t,e)}async updateFrom(e,t){const r=this._updateFromInternal(e,t);this._updateFromPromise=r,await r;r===this._updateFromPromise&&(this._updateFromPromise=null)}getLayerJSONFromResourceInfo(e){const t=this.resourceInfo;return this._collectAllLayersJSON([...t?.baseMap?.baseMapLayers||[],...t?.operationalLayers||[],...this.basemap?.resourceInfo?.data?.baseMapLayers||[]]).find((t=>t.id===e.id))}async _saveImpl(e){e=e||{},this._validateItem();const t=import("./webdoc/support/saveUtils.js");await this._updateFromPromise,await this.load(),await this._loadLayerContainers(),await this._beforeSave(),await this._validateMap();const r=this.portalItem,i=y(r.itemUrl),o={origin:"web-map",messages:[],writtenProperties:[],url:i,portal:r.portal||F.getDefault(),portalItem:r,verifyItemRelativeUrls:i?{rootPath:i.path,writtenUrls:[]}:null,blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},a=this.write({},o);return await Promise.all(o.resources.pendingOperations),this._validateJSONForWriting(o,e),await this._updateItemProperties(r),await this._updateItem(r,a,o),await Promise.all([this._updateItemThumbnail(),t.then((({saveResources:e})=>e(this._resourceReferences,o,null)))]),r}async _saveAsImpl(e,t){t=t||{};const r=this._getPortalItem(e),i=import("./webdoc/support/saveUtils.js");await this._updateFromPromise,await this.load(),await this._loadLayerContainers(),await this._beforeSave(),await this._validateMap();const o={origin:"web-map",messages:[],writtenProperties:[],url:null,portal:r.portal,portalItem:r,blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},a=this.write({},o);await Promise.all(o.resources.pendingOperations),this._validateJSONForWriting(o,t),await this._updateItemPropertiesForSaveAs(r);const s=this._getThumbnailState();return await this._createItem(r,a,o,t)&&(this._resourceReferences.portalItem=r),this._restoreThumbnailFromState(s),await Promise.all([this._updateItemThumbnail(),i.then((({saveResources:e})=>e(this._resourceReferences,o,null)))]),r}_collectAllLayersJSON(e){return e.reduce(((e,t)=>(e.push(t),"GroupLayer"===t.layerType&&(e=e.concat(this._collectAllLayersJSON(t.layers||[]))),e)),[])}_writeLayers(e,t,r){t={...t,layerContainerType:r};return e.map((e=>Q(e,"tables"===r?null:this.getLayerJSONFromResourceInfo(e),t))).filter(o).toArray()}_loadFromSource(){return this.resourceInfo?this._loadFromJSON(this.resourceInfo,{origin:"web-map"}):this.portalItem&&this.portalItem.id?this._loadFromItem(this.portalItem):Promise.resolve()}async _loadFromItem(e){if(await e.load().catch((e=>{throw new s("webmap:load-portal-item","Failed to load portal item",{error:e})})),"Web Map"!==e.type)throw new s("webmap:invalid-portal-item",`Invalid portal item type '${e.type}', expected 'Web Map'`,{type:e.type});const t=await e.fetchData();this.resourceInfo=t;const r={origin:"web-map",url:y(e.itemUrl),portal:e.portal||F.getDefault(),portalItem:e,readResourcePaths:[]};await this._readAndLoadFromJSON(t,r),this._resourceReferences={portalItem:e,paths:r.readResourcePaths??[]};const i=await ee(this.initialViewProperties,e,p.getLogger(this));if(i){const e=this.initialViewProperties?.clone()??new Z;e.viewpoint=i,this.initialViewProperties=e}}_readAndLoadFromJSON(e,t){const r=this._validateJSON(e);return this.read(r,t),this._loadFromJSON(r,t)}_validateJSON(e){const t=te.parse(e.version||"","webmap");return ie.validate(t),e.version=`${t.major}.${t.minor}`,e}async _loadFromJSON(e,t){const r={context:{...t,layerContainerType:"operational-layers"}};return this.portalItem&&(r.context.portal=this.portalItem.portal||F.getDefault()),import("./layers/support/layersCreator.js").then((async({populateOperationalLayers:t})=>{const i=[],o=e.operationalLayers;o&&o.length&&i.push(t(this.layers,o,r));const a={...r,context:{...r.context,layerContainerType:"tables"},defaultLayerType:"ArcGISFeatureLayer"},s=e.tables;s&&s.length&&i.push(t(this.tables,s,a)),await Promise.allSettled(i)}))}_removeDanglingLayerRefs(){const e=this.applicationProperties,t=e&&e.viewing&&e.viewing.search,r=e=>this.allLayers.some((t=>t.id===e));t&&t.layers&&(t.layers=t.layers.filter((e=>r(e.id)))),t&&t.tables&&(t.tables=t.tables.filter((e=>this.tables.some((t=>t.id===e.id)))));const i=e&&e.editing&&e.editing.locationTracking;i&&i.info&&!r(i.info.layerId)&&(e.editing=null);const o=this.presentation&&this.presentation.slides;o&&o.forEach((e=>{e.visibleLayers&&(e.visibleLayers=e.visibleLayers.filter((e=>r(e.id))))}))}async _validateMap(){if(!this.basemap?.baseLayers.length)throw new s("webmap:save","Map does not have a valid basemap with a base layer.");let e=null;if(await c((()=>{const t=D(this.initialViewProperties,this.basemap);return e=t.spatialReference,!t.updating})),!U(e,this.initialViewProperties.spatialReference))throw new s("webmap:save","The spatial reference of the basemap is not compatible with the one from the map.",{expected:this.initialViewProperties.spatialReference,actual:e})}_validateItem(){if(!this.portalItem)throw p.getLogger(this).error("save: requires the portalItem property to be set"),new s("webmap:portal-item-not-set","Portal item to save to has not been set on the WebMap");this._validateItemType(this.portalItem)}_validateItemType(e){if(e.type!==oe)throw new s("webmap:portal-item-wrong-type",`Portal item needs to have type "${oe}"`)}async _loadLayerContainers(){const e=[];this.basemap&&e.push(this.basemap.load()),this.ground&&e.push(this.ground.load()),await Promise.allSettled(e)}async _beforeSave(){const e=[];for(const t of this.allLayers)if("beforeSave"in t&&"function"==typeof t.beforeSave){const r=t.beforeSave();r&&e.push(r)}await Promise.allSettled(e)}async _loadAllLayers(){const e=this._getAllLayersAndTables().items.map((e=>e.load()));await Promise.allSettled(e)}_getAllLayersAndTables(){return this.allLayers.concat(this.allTables)}_validateJSONForWriting(e,t){let r=(e.messages??[]).filter((e=>"error"===e.type)).map((e=>new s(e.name,e.message,e.details)));if(e.blockedRelativeUrls&&(r=r.concat(e.blockedRelativeUrls.map((e=>new s("url:unsupported",`Relative url '${e}' is not supported in Web Map`))))),t.ignoreUnsupported&&(r=r.filter((e=>"layer:unsupported"!==e.name&&"symbol:unsupported"!==e.name&&"symbol-layer:unsupported"!==e.name&&"property:unsupported"!==e.name&&"url:unsupported"!==e.name))),r.length>0)throw new s("webmap:save","Failed to save webmap due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:r})}async _updateItemProperties(e){e.extent=await this._getWGS84Extent(this.initialViewProperties.viewpoint.targetGeometry),await this._updateTypeKeywords(e)}async _updateItemPropertiesForSaveAs(e){k(e,me),k(e,be),k(e,M.METADATA),k(e,de),k(e,ge),k(e,fe),k(e,ye),k(e,we),await this._updateItemProperties(e)}async _getWGS84Extent(e){const t=e.clone().normalize();let r;if(t.length>1)for(const i of t)r?i.width>r.width&&(r=i):r=i;else r=t[0];return this._projectToWGS84(r)}async _projectToWGS84(e){const t=e.spatialReference;if(t.isWGS84)return e.clone();if(t.isWebMercator)return O(e);const{getGeometryServiceURL:r}=await import("./portal/support/geometryServiceUtils.js"),i=await r(this.portalItem),o=new x;o.geometries=[e],o.outSpatialReference=P.WGS84;return(await C(i,o))[0]}async _updateTypeKeywords(e){N(e,pe),await this._loadAllLayers(),this._evalCollectorKeyword(e),this._evalDataEditingKeyword(e),this._evalOfflineKeyword(e),this._evalDeveloperBasemapKeyword(e),this._evalUtilityNetworkKeyword(e),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}_evalCollectorKeyword(e){E(e,me)||E(e,ye)||E(e,we)||E(e,fe)||!this._hasEditableFeatureLayer()?k(e,ue):N(e,ue)}_evalDataEditingKeyword(e){this._hasEditableFeatureLayer()?N(e,he):k(e,he)}_evalOfflineKeyword(e){!E(e,de)&&this._isOfflineCapableMap()?N(e,ce):k(e,ce)}_evalDeveloperBasemapKeyword(e){B(this.basemap)?N(e,_e):k(e,_e)}_evalUtilityNetworkKeyword(e){this.utilityNetworks?.length?N(e,ve):k(e,ve)}_hasEditableFeatureLayer(){return this._getAllLayersAndTables().some((e=>e.loaded&&V(e)&&e.capabilities.operations.supportsEditing&&e.editingEnabled&&("subtype-group"!==e.type||e.sublayers.some((e=>e.editingEnabled)))))}_isOfflineCapableMap(){return this._getAllLayersAndTables().filter((e=>"group"!==e.type)).every((e=>e.loaded&&this._isOfflineCapableLayer(e)))}_isFeatureCollectionLike(e){return R(e)||"map-notes"===e.type||"route"===e.type}_isOfflineCapableLayer(e){return V(e)&&e.capabilities.operations.supportsSync||this._isFeatureCollectionLike(e)&&!e.portalItem||("tile"===e.type||"vector-tile"===e.type)&&(e.capabilities.operations.supportsExportTiles||this._isExportableAGOLTileLayer(e)||J(e))&&e.spatialReference.equals(this.initialViewProperties.spatialReference)}_isExportableAGOLTileLayer(e){return"tile"===e.type&&(L(e.url)&&Ae.some((t=>e.url?.toLowerCase().includes("/"+t+"/"))))}async _updateItem(e,t,r){await e.update({data:t}),this._syncUpInstanceWithItem(e,t,r)}async _createItem(e,t,r,i){const o=this.portalItem,a={item:o,authenticated:!(!o?.id||!o.portal.user)},n=e.portal;await n.signIn();const{copyAllowed:l,itemReloaded:p}=await this._isCopyAllowed(a,n);if(a.authenticated||=p,!l)throw new s("webmap:save-as-copy-not-allowed","Owner of this map does not allow others to save a copy");const m=await this._initializeNewItem(e,a,t,i);return this.portalItem=e,this._syncUpInstanceWithItem(e,t,r),m}async _isCopyAllowed(e,t){const{item:r,authenticated:i}=e;return r?.id&&r.typeKeywords?.includes("useOnly")?r.portal.portalHostname!==t.portalHostname?{copyAllowed:!1,itemReloaded:!1}:(i||await r.reload(),{copyAllowed:"admin"===r.itemControl||"update"===r.itemControl,itemReloaded:!0}):{copyAllowed:!0,itemReloaded:!1}}async _initializeNewItem(e,t,r,i){const o=e.portal,{item:a}=t,{folder:s,copyAllResources:n}=i;let l=!1;if(n&&a?.id&&w(a.portal.url,o.url)){const{total:e}=await a.fetchResources();l=!!e}if(l){const t=await a.copy({copyResources:"all",folder:s});e.id=t.id,e.portal=t.portal;const i=e.toJSON();await e.load(),e.read(i),await e.update({data:r})}else await(o.user?.addItem({item:e,folder:s,data:r}));return l}_syncUpInstanceWithItem(e,t,r){u.prototype.read.call(this,{version:t.version,authoringApp:t.authoringApp,authoringAppVersion:t.authoringAppVersion},{origin:"web-map",ignoreDefaults:!0,url:e.itemUrl?y(e.itemUrl):void 0}),I(r),this.resourceInfo=t}async _updateItemThumbnail(){this.thumbnailUrl&&this._isOverridden("thumbnailUrl")&&(await(this.portalItem?.updateThumbnail({thumbnail:this.thumbnailUrl,filename:this._thumbnailFilename})),this._clearThumbnailOverride())}_getPortalItem(e){let t=W.from(e);return t.id&&(t=t.clone(),t.id=null),t.type||(t.type=oe),t.portal||(t.portal=F.getDefault()),this._validateItemType(t),t}async _updateFromInternal(e,t){if(t=t||{},await c((()=>e.ready)),this._updateInitialViewProperties(e,t),e.map===this)for(const r of e.allLayerViews)"visible"in r&&"visible"in r.layer&&r._isOverridden("visible")&&(r.layer.visible=r.visible),"featureEffect"in r&&"featureEffect"in r.layer&&r._isOverridden("featureEffect")&&(r.layer.featureEffect=r.featureEffect);await this._updateThumbnailUrl(e,t)}_updateInitialViewProperties(e,t){if(t.backgroundExcluded||(this.initialViewProperties.background=e.background?.clone()),this.initialViewProperties.spatialReference=e.spatialReference?.clone(),t.viewpointExcluded||(this.initialViewProperties.viewpoint=new i({rotation:e.rotation,scale:t.scalePreserved?e.scale:null,targetGeometry:this._getViewExtent(e)})),!t.widgetsExcluded)for(const r of e.persistableViewModels)r.updateWebDocument(this)}_getViewExtent(e){const t=e.center.clone().normalize(),r=e.extent.clone(),i=r.width/2;return r.xmin=t.x-i,r.xmax=t.x+i,r}async _updateThumbnailUrl(e,t){if(t.thumbnailExcluded)return;const r=H(e,t.thumbnailSize),i=await e.takeScreenshot({format:"png",width:r.width,height:r.height});this._setAutoGeneratedThumbnail(i.dataUrl)}_setAutoGeneratedThumbnail(e){this.thumbnailUrl=e,this._thumbnailFilename=null}_clearThumbnailOverride(){this._clearOverride("thumbnailUrl"),this.clear("thumbnailUrl","user"),this._thumbnailFilename=null}_generateCustomThumbnailFilename(e){if(f(e)){const t=g(e),r=t&&t.mediaType,i=r&&ne.get(r.toLowerCase())||null,o=`thumbnail${Date.now()}`;return i?`${o}.${i}`:o}return null}_getThumbnailState(){let e=this.thumbnailUrl;return e&&(e=this._isOverridden("thumbnailUrl")?e:b(e,"w","8192")),{thumbnailUrl:e,filename:this._thumbnailFilename}}_restoreThumbnailFromState(e){this.thumbnailUrl=e.thumbnailUrl,this._thumbnailFilename=e.filename}_getAuthoringPropsState(){return{authoringApp:this.authoringApp,authoringAppVersion:this.authoringAppVersion,isAuthoringAppSetByUser:this._isAuthoringAppSetByUser,isAuthoringAppVersionSetByUser:this._isAuthoringAppVersionSetByUser}}_restoreAuthoringPropsFromState(e){e.isAuthoringAppSetByUser?this.authoringApp=e.authoringApp:this._isAuthoringAppSetByUser=!1,e.isAuthoringAppVersionSetByUser?this.authoringAppVersion=e.authoringAppVersion:this._isAuthoringAppVersionSetByUser=!1}static fromJSON(e){const t=e;if(!t)throw new s("webmap:empty-resource","Expected a JSON resource but got nothing");return new this({resourceInfo:t})}};Se.VERSION=ie,e([_({type:X,json:{write:!0}})],Se.prototype,"applicationProperties",void 0),e([_({type:String,json:{write:{allowNull:!0,ignoreOrigin:!0}}})],Se.prototype,"authoringApp",null),e([S("authoringApp")],Se.prototype,"writeAuthoringApp",null),e([_({type:String,json:{write:{allowNull:!0,ignoreOrigin:!0}}})],Se.prototype,"authoringAppVersion",null),e([S("authoringAppVersion")],Se.prototype,"writeAuthoringAppVersion",null),e([_({json:{read:{source:"baseMap"},write:{target:"baseMap"}}})],Se.prototype,"basemap",void 0),e([_({type:ae,json:{write:{overridePolicy:e=>({enabled:!!(e&&e.length>0),ignoreOrigin:!0})}}})],Se.prototype,"bookmarks",void 0),e([_({type:G,json:{read:{source:"mapFloorInfo"},write:{target:"mapFloorInfo"}}})],Se.prototype,"floorInfo",void 0),e([_({type:K,json:{write:!0}})],Se.prototype,"geotriggersInfo",void 0),e([_({type:Z,nonNullable:!0,json:{read:{source:["background","initialState.viewpoint","mapRangeInfo","spatialReference"]},write:{ignoreOrigin:!0,target:{background:{type:re},"initialState.viewpoint":{type:i},mapRangeInfo:{type:z},spatialReference:{type:P}}}}})],Se.prototype,"initialViewProperties",void 0),e([v("initialViewProperties")],Se.prototype,"readInitialViewProperties",null),e([S("initialViewProperties")],Se.prototype,"writeInitialViewProperties",null),e([_({json:{read:!1,write:{target:"operationalLayers",ignoreOrigin:!0}}})],Se.prototype,"layers",void 0),e([S("layers")],Se.prototype,"writeLayers",null),e([_({type:W})],Se.prototype,"portalItem",void 0),e([_({json:{write:!0}})],Se.prototype,"presentation",void 0),e([_()],Se.prototype,"resourceInfo",void 0),e([_({readOnly:!0,type:te,json:{read:{source:"version"},write:{allowNull:!0,ignoreOrigin:!0,target:"version",isRequired:!0}}})],Se.prototype,"sourceVersion",void 0),e([v("sourceVersion")],Se.prototype,"readSourceVersion",null),e([S("sourceVersion")],Se.prototype,"writeSourceVersion",null),e([_({json:{read:!1,write:{ignoreOrigin:!0}}})],Se.prototype,"tables",void 0),e([S("tables")],Se.prototype,"writeTables",null),e([_()],Se.prototype,"thumbnailUrl",null),e([_({type:q,json:{write:!0}})],Se.prototype,"widgets",void 0),e([_({type:se,json:{read:!0,write:!0}})],Se.prototype,"utilityNetworks",void 0),Se=e([A("esri.WebMap")],Se);const Ie=Se;export{Ie as default};