@arcgis/core 4.28.0-next.20230916 → 4.28.0-next.20230919

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 (436) hide show
  1. package/Basemap.js +1 -1
  2. package/WebScene.js +1 -1
  3. package/assets/esri/core/workers/RemoteClient.js +1 -1
  4. package/assets/esri/core/workers/chunks/02d088d47b3a207058fa.js +1 -0
  5. package/assets/esri/core/workers/chunks/0839b45999fcb556e460.js +1 -0
  6. package/assets/esri/core/workers/chunks/092920c25cac89c038ee.js +1 -0
  7. package/assets/esri/core/workers/chunks/09589852b129bfb5624f.js +1 -0
  8. package/assets/esri/core/workers/chunks/09d395a9786607294689.js +1 -0
  9. package/assets/esri/core/workers/chunks/0a322163b3441834b915.js +1 -0
  10. package/assets/esri/core/workers/chunks/132e9e6147304ffd128d.js +1 -0
  11. package/assets/esri/core/workers/chunks/{929580e89267a224abe9.js → 1790ca4193d730f5f206.js} +1 -1
  12. package/assets/esri/core/workers/chunks/1a449168d30a688e6128.js +1 -0
  13. package/assets/esri/core/workers/chunks/{163aee6757dc3fbfd971.js → 1b2f450fdbab3a1fcdce.js} +1 -1
  14. package/assets/esri/core/workers/chunks/1f7e041140088f8ac489.js +1 -0
  15. package/assets/esri/core/workers/chunks/25ab3bec45de900be36e.js +1 -0
  16. package/assets/esri/core/workers/chunks/2c5eb8aaad696fa16744.js +1 -0
  17. package/assets/esri/core/workers/chunks/2cb36f9686693234991a.js +1 -0
  18. package/assets/esri/core/workers/chunks/314c307e30f308a40a28.js +1 -0
  19. package/assets/esri/core/workers/chunks/357d452b8522185cc433.js +1 -0
  20. package/assets/esri/core/workers/chunks/36710c57bb4c49f22bac.js +1 -0
  21. package/assets/esri/core/workers/chunks/{b3fe727c5984d090b8ba.js → 3a7ad0d24264e2bc2e87.js} +33 -33
  22. package/assets/esri/core/workers/chunks/3c4d59018ce8502c65e7.js +1 -0
  23. package/assets/esri/core/workers/chunks/41c0df2577921ed0ee57.js +1 -0
  24. package/assets/esri/core/workers/chunks/43eff89599f36d83924b.js +1 -0
  25. package/assets/esri/core/workers/chunks/4632ada4af99cab70a61.js +1 -0
  26. package/assets/esri/core/workers/chunks/481eab7879ed5d8a1f67.js +1 -0
  27. package/assets/esri/core/workers/chunks/4b3a5cc435435c81e6a5.js +1 -0
  28. package/assets/esri/core/workers/chunks/4f4a424d1747d04501df.js +1 -0
  29. package/assets/esri/core/workers/chunks/506874f562ce11f8914a.js +1 -0
  30. package/assets/esri/core/workers/chunks/{3becdfbb4f76642b20cd.js → 53ba56b86a26913d13b0.js} +1 -1
  31. package/assets/esri/core/workers/chunks/56a4cea67cc579bf7547.js +1 -0
  32. package/assets/esri/core/workers/chunks/56afd89d08c874f620a1.js +1 -0
  33. package/assets/esri/core/workers/chunks/57e8933164c5ebcbf941.js +1 -0
  34. package/assets/esri/core/workers/chunks/5c39d18ae37138e0f56b.js +1 -0
  35. package/assets/esri/core/workers/chunks/6403de6fc067cf8f7436.js +1 -0
  36. package/assets/esri/core/workers/chunks/{f2415258dac8f33694a8.js → 656a8be4ce1bec721366.js} +1 -1
  37. package/assets/esri/core/workers/chunks/{6caf1e08441bd2c69078.js → 6f271249e042086d5a16.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{6cbe3b9597f359ef9d1c.js → 6f324fd19869a7943afa.js} +1 -1
  39. package/assets/esri/core/workers/chunks/727548fffd4e270617d3.js +1 -0
  40. package/assets/esri/core/workers/chunks/77923afde29ae1ff10ca.js +1 -0
  41. package/assets/esri/core/workers/chunks/79683324be49aab79dd8.js +1 -0
  42. package/assets/esri/core/workers/chunks/{e1e678a08d5d778d32c9.js → 7a358b1fd0c0cce59e9b.js} +1 -1
  43. package/assets/esri/core/workers/chunks/7cdb4416afd5922cf5f3.js +1 -0
  44. package/assets/esri/core/workers/chunks/7f680cf24dd97d61bcd2.js +1 -0
  45. package/assets/esri/core/workers/chunks/7f797fed73cf7b48a686.js +1 -0
  46. package/assets/esri/core/workers/chunks/83d1a1b3d371c991cc4c.js +1 -0
  47. package/assets/esri/core/workers/chunks/{6b0abeaba3964ee95724.js → 84870178173951ad6c2b.js} +1 -1
  48. package/assets/esri/core/workers/chunks/861609ebd3a77b787b0f.js +1 -0
  49. package/assets/esri/core/workers/chunks/{d87a48e69568e927361e.js → 869c3927f1e246cd1e42.js} +1 -1
  50. package/assets/esri/core/workers/chunks/95371c0f5464f5daae9f.js +1 -0
  51. package/assets/esri/core/workers/chunks/962b99fd273709c726d3.js +1 -0
  52. package/assets/esri/core/workers/chunks/98fbcbb2115376d7ff62.js +1 -0
  53. package/assets/esri/core/workers/chunks/9abcd1d11bfd92f872ab.js +1 -0
  54. package/assets/esri/core/workers/chunks/{af3a22e9cc1103bf61ec.js → 9dab9f6c07ececa7f851.js} +1 -1
  55. package/assets/esri/core/workers/chunks/a1627c92cdfb48fb8ddd.js +1 -0
  56. package/assets/esri/core/workers/chunks/a98a435d4dbea73f7517.js +1 -0
  57. package/assets/esri/core/workers/chunks/b05bb6e784e5453696be.js +1 -0
  58. package/assets/esri/core/workers/chunks/b428fcb53ecc82b49e66.js +1 -0
  59. package/assets/esri/core/workers/chunks/b51d0ec283f61f638a48.js +1 -0
  60. package/assets/esri/core/workers/chunks/b5ee6c0c07fa50410370.js +1 -0
  61. package/assets/esri/core/workers/chunks/{d3757b49a24149dd3956.js → b9cf8f02974aeb3ce208.js} +1 -1
  62. package/assets/esri/core/workers/chunks/{e269db8a4c443e0628d5.js → bb1c35a959f24ee742ae.js} +1 -1
  63. package/assets/esri/core/workers/chunks/c1141056581af072aee9.js +1 -0
  64. package/assets/esri/core/workers/chunks/c22c2b15fe5f2c97a2ae.js +1 -0
  65. package/assets/esri/core/workers/chunks/{20c91f34cc30aefbcbb8.js → c3b8b40115be5a2b960e.js} +1 -1
  66. package/assets/esri/core/workers/chunks/c8f239c25fe864f0e47a.js +1 -0
  67. package/assets/esri/core/workers/chunks/cbdc5dfc0f27db3d7c93.js +1 -0
  68. package/assets/esri/core/workers/chunks/d824f4b405a72cd2fa74.js +1 -0
  69. package/assets/esri/core/workers/chunks/d96f825630c348c8f2eb.js +1 -0
  70. package/assets/esri/core/workers/chunks/df8f62beb36fb9d2ac81.js +1 -0
  71. package/assets/esri/core/workers/chunks/e4237360eef474d1f0ac.js +1 -0
  72. package/assets/esri/core/workers/chunks/e54ae2a4281dd58e0707.js +1 -0
  73. package/assets/esri/core/workers/chunks/e6faef300ff2e80a20a6.js +1 -0
  74. package/assets/esri/core/workers/chunks/ea332c0b501367df6c98.js +1 -0
  75. package/assets/esri/core/workers/chunks/ed31cf6688c0f7dac1f9.js +1 -0
  76. package/assets/esri/core/workers/chunks/f07a0ea10428adecea1a.js +1 -0
  77. package/assets/esri/core/workers/chunks/f0c3af458c7b4cb4f1b7.js +1 -0
  78. package/assets/esri/core/workers/chunks/f147269d85adfb4588ed.js +1 -0
  79. package/assets/esri/core/workers/chunks/f1eab5c67ed808c18f86.js +1 -0
  80. package/assets/esri/core/workers/chunks/f939b4166f76975f5da0.js +1 -0
  81. package/assets/esri/core/workers/chunks/ff4f4107a866e4a68386.js +1 -0
  82. package/assets/esri/core/workers/chunks/ffc0627707469c87d6be.js +1 -0
  83. package/assets/esri/images/basemap/topo-3d.png +0 -0
  84. package/assets/esri/images/portal/layergroup16.png +0 -0
  85. package/assets/esri/images/portal/layergroup2d16.png +0 -0
  86. package/assets/esri/themes/base/widgets/_CoordinateConversion.scss +1 -1
  87. package/assets/esri/themes/base/widgets/_SketchTooltipControls.scss +1 -1
  88. package/assets/esri/themes/base/widgets/_SnappingControls.scss +1 -1
  89. package/assets/esri/themes/base/widgets/_Tooltip.scss +4 -0
  90. package/assets/esri/themes/dark/main.css +1 -1
  91. package/assets/esri/themes/light/main.css +1 -1
  92. package/assets/esri/themes/light/view.css +1 -1
  93. package/chunks/ImageMaterial.glsl.js +4 -2
  94. package/chunks/Laserlines.glsl.js +1 -1
  95. package/chunks/LineSeries.js +1 -1
  96. package/chunks/Precipitation.glsl.js +1 -1
  97. package/chunks/SSAOBlur.glsl.js +1 -1
  98. package/chunks/Theme.js +1 -1
  99. package/chunks/boundedPlane.js +1 -1
  100. package/chunks/sphere.js +1 -1
  101. package/chunks/vec2.js +1 -1
  102. package/chunks/vec2f64.js +1 -1
  103. package/chunks/vec3.js +1 -1
  104. package/core/libs/gl-matrix-2/factories/vec2f64.js +1 -1
  105. package/core/libs/gl-matrix-2/math/vec2.js +1 -1
  106. package/core/libs/gl-matrix-2/math/vec3.js +1 -1
  107. package/core/libs/gl-matrix-2/vec2.js +1 -1
  108. package/geometry/support/lineSegment.js +1 -1
  109. package/geometry/support/plane.js +1 -1
  110. package/geometry/support/sphere.js +1 -1
  111. package/interfaces.d.ts +91 -237
  112. package/layers/BuildingSceneLayer.js +1 -1
  113. package/layers/FeatureLayer.js +1 -1
  114. package/layers/SceneLayer.js +1 -1
  115. package/layers/VoxelWasmPerSceneView.js +1 -1
  116. package/layers/graphics/sources/support/uploadAssets.js +1 -1
  117. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  118. package/layers/orientedImagery/transformations/imageToGroundUtils.js +1 -1
  119. package/layers/support/arcgisLayerUrl.js +1 -1
  120. package/layers/support/arcgisLayers.js +1 -1
  121. package/layers/support/associatedFeatureServiceUtils.js +5 -0
  122. package/layers/support/layersCreator.js +1 -1
  123. package/layers/video/VideoCameraSensorModel.js +1 -1
  124. package/layers/voxel/voxelPlaneUtils.js +1 -1
  125. package/package.json +1 -1
  126. package/portal/PortalItem.js +1 -1
  127. package/portal/support/layersLoader.js +1 -1
  128. package/portal/support/portalLayers.js +1 -1
  129. package/smartMapping/support/utils.js +1 -1
  130. package/support/basemapDefinitions.js +1 -1
  131. package/support/basemapUtils.js +1 -1
  132. package/support/revision.js +1 -1
  133. package/views/2d/interactive/editingTools/manipulations/ScaleManipulation.js +1 -1
  134. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  135. package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
  136. package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
  137. package/views/3d/analysis/Dimension/lengthDimensionUtils.js +1 -1
  138. package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
  139. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  140. package/views/3d/analysis/Slice/RotateManipulator.js +1 -1
  141. package/views/3d/analysis/Slice/ShiftManipulator.js +1 -1
  142. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  143. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  144. package/views/3d/analysis/support/measurementUtils.js +1 -1
  145. package/views/3d/animation/pointToPoint/Camera.js +1 -1
  146. package/views/3d/camera/constraintUtils/distance.js +1 -1
  147. package/views/3d/camera/constraintUtils/tilt.js +1 -1
  148. package/views/3d/environment/ChapmanAtmosphere.js +1 -1
  149. package/views/3d/environment/LocalAtmosphere.js +1 -1
  150. package/views/3d/environment/MarsAtmosphere.js +1 -1
  151. package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
  152. package/views/3d/interactive/editingTools/lineGraphicVisualElementUtils.js +1 -1
  153. package/views/3d/interactive/editingTools/manipulations/MoveXYAxisManipulation.js +1 -1
  154. package/views/3d/interactive/editingTools/manipulations/MoveXYDiscManipulation.js +1 -1
  155. package/views/3d/interactive/editingTools/manipulations/MoveZManipulation.js +1 -1
  156. package/views/3d/interactive/editingTools/originGraphicVisualElementUtils.js +1 -1
  157. package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
  158. package/views/3d/interactive/editingTools/reshapeGraphic/edgeOffsetUtils.js +1 -1
  159. package/views/3d/interactive/editingTools/settings.js +1 -1
  160. package/views/3d/interactive/editingTools/transformGraphic/ExtentRotate.js +1 -1
  161. package/views/3d/interactive/editingTools/transformGraphic/ExtentScale.js +1 -1
  162. package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
  163. package/views/3d/interactive/editingTools/transformGraphic/extentUtils.js +1 -1
  164. package/views/3d/interactive/manipulatorUtils.js +1 -1
  165. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
  166. package/views/3d/interactive/visualElements/MeasurementAreaVisualElement.js +1 -1
  167. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  168. package/views/3d/interactive/visualElements/VerticesVisualElement.js +1 -1
  169. package/views/3d/layers/MediaLayerView3D.js +1 -1
  170. package/views/3d/layers/PointCloudWorker.js +1 -1
  171. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  172. package/views/3d/layers/graphics/Graphics3DLineCalloutSymbolLayer.js +1 -1
  173. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  174. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  175. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  176. package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
  177. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  178. package/views/3d/layers/graphics/polygonUtils.js +1 -1
  179. package/views/3d/layers/graphics/wosrLoader.js +1 -1
  180. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  181. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  182. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  183. package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
  184. package/views/3d/layers/support/overlayImageUtils.js +1 -1
  185. package/views/3d/layers/support/patternUtils.js +1 -1
  186. package/views/3d/layers/support/uvUtils.js +1 -1
  187. package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
  188. package/views/3d/support/cameraUtils.js +1 -1
  189. package/views/3d/support/engineContent/line.js +1 -1
  190. package/views/3d/support/intersectionUtils.js +1 -1
  191. package/views/3d/support/orientedBoundingBox.js +1 -1
  192. package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
  193. package/views/3d/support/pointsOfInterest/CenterOnSurface.js +1 -1
  194. package/views/3d/support/viewpointUtils.js +1 -1
  195. package/views/3d/terrain/OverlayManager.js +1 -1
  196. package/views/3d/terrain/PatchRenderData.js +1 -1
  197. package/views/3d/terrain/SphericalPatch.js +1 -1
  198. package/views/3d/terrain/Tile.js +1 -1
  199. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  200. package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
  201. package/views/3d/webgl-engine/core/shaderLibrary/hud/AlignPixel.glsl.js +12 -10
  202. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUDVisibility.glsl.js +21 -8
  203. package/views/3d/webgl-engine/core/util/TwoVectorPosition.js +1 -1
  204. package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
  205. package/views/3d/webgl-engine/lib/Camera.js +1 -1
  206. package/views/3d/webgl-engine/lib/Geometry.js +1 -1
  207. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  208. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  209. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  210. package/views/3d/webgl-engine/lib/PathGeometry.js +1 -1
  211. package/views/3d/webgl-engine/lib/PathGeometryData.js +1 -1
  212. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  213. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  214. package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
  215. package/views/3d/webgl-engine/lib/VertexAttribute.js +1 -1
  216. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  217. package/views/3d/webgl-engine/lib/edgeRendering/edgePreprocessing.js +1 -1
  218. package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
  219. package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
  220. package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
  221. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  222. package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
  223. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  224. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  225. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  226. package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
  227. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  228. package/views/3d/webgl-engine/shaders/ImageMaterialTechnique.js +1 -1
  229. package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
  230. package/views/MapView.js +1 -1
  231. package/views/SceneView.js +1 -1
  232. package/views/View.js +1 -1
  233. package/views/draw/DrawGraphicTool.js +1 -1
  234. package/views/draw/support/settings.js +1 -1
  235. package/views/draw/support/surfaceCoordinateSystems.js +1 -1
  236. package/views/interactive/GraphicManipulator.js +1 -1
  237. package/views/interactive/coordinateHelper.js +1 -1
  238. package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
  239. package/views/interactive/sketch/constraints.js +1 -1
  240. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  241. package/views/interactive/snapping/featureSources/sceneLayerSource/SceneLayerSnappingSourceWorker.js +1 -1
  242. package/views/interactive/snapping/featureSources/sceneLayerSource/sceneLayerSnappingUtils.js +1 -1
  243. package/views/interactive/snapping/hints/LineSnappingHint.js +1 -1
  244. package/views/interactive/tooltip/Tooltip.js +1 -1
  245. package/views/interactive/tooltip/TooltipEditableField.js +1 -1
  246. package/views/interactive/tooltip/constraintUtils.js +1 -1
  247. package/views/interactive/tooltip/content/TooltipContent.js +1 -1
  248. package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
  249. package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
  250. package/views/interactive/tooltip/fields/fields.js +1 -1
  251. package/views/navigation/PanSphericalMomentumEstimator.js +1 -1
  252. package/views/support/angularMeasurementUtils.js +1 -1
  253. package/views/support/euclideanAreaMeasurementUtils.js +1 -1
  254. package/views/support/euclideanLengthMeasurementUtils.js +1 -1
  255. package/views/support/geometry3dUtils.js +1 -1
  256. package/widgets/AreaMeasurement2D.js +1 -1
  257. package/widgets/AreaMeasurement3D.js +1 -1
  258. package/widgets/Attachments.js +1 -1
  259. package/widgets/Attribution.js +1 -1
  260. package/widgets/BasemapGallery/css.js +1 -1
  261. package/widgets/BasemapGallery.js +1 -1
  262. package/widgets/BasemapLayerList.js +1 -1
  263. package/widgets/BasemapToggle/css.js +1 -1
  264. package/widgets/BasemapToggle.js +1 -1
  265. package/widgets/Bookmarks/css.js +1 -1
  266. package/widgets/Bookmarks.js +1 -1
  267. package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesNode.js +1 -1
  268. package/widgets/BuildingExplorer/BuildingLevelPicker/Label.js +1 -1
  269. package/widgets/BuildingExplorer/css.js +1 -1
  270. package/widgets/BuildingExplorer.js +1 -1
  271. package/widgets/Compass/css.js +1 -1
  272. package/widgets/Compass.js +1 -1
  273. package/widgets/CoordinateConversion.js +1 -1
  274. package/widgets/Daylight/css.js +1 -1
  275. package/widgets/Daylight.js +1 -1
  276. package/widgets/DirectLineMeasurement3D.js +1 -1
  277. package/widgets/DirectionalPad/css.js +1 -1
  278. package/widgets/DirectionalPad.js +1 -1
  279. package/widgets/Directions/support/resources.js +1 -1
  280. package/widgets/Directions.js +1 -1
  281. package/widgets/DistanceMeasurement2D.js +1 -1
  282. package/widgets/Editor/css.js +1 -1
  283. package/widgets/Editor.js +1 -1
  284. package/widgets/ElevationProfile/css.js +1 -1
  285. package/widgets/ElevationProfile/support/InputRepresentation3D.js +1 -1
  286. package/widgets/ElevationProfile.js +1 -1
  287. package/widgets/Expand.js +1 -1
  288. package/widgets/Feature/FeatureExpression.js +1 -1
  289. package/widgets/Feature/FeatureFields.js +1 -1
  290. package/widgets/Feature/FeatureRelationship.js +1 -1
  291. package/widgets/Feature/resources.js +1 -1
  292. package/widgets/Feature.js +1 -1
  293. package/widgets/FeatureForm/css.js +1 -1
  294. package/widgets/FeatureForm.js +1 -1
  295. package/widgets/FeatureTable/FieldColumn.js +1 -1
  296. package/widgets/FeatureTable/Grid/Column.js +1 -1
  297. package/widgets/FeatureTable/Grid/Grid.js +11 -11
  298. package/widgets/FeatureTable/Grid/support/ButtonMenu.js +1 -1
  299. package/widgets/FeatureTable.js +1 -1
  300. package/widgets/FeatureTemplates.js +1 -1
  301. package/widgets/Features/css.js +1 -1
  302. package/widgets/Features.js +1 -1
  303. package/widgets/FloorFilter/css.js +1 -1
  304. package/widgets/FloorFilter.js +1 -1
  305. package/widgets/Fullscreen.js +1 -1
  306. package/widgets/Histogram.js +1 -1
  307. package/widgets/HistogramRangeSlider.js +1 -1
  308. package/widgets/Home.js +1 -1
  309. package/widgets/LayerList.js +1 -1
  310. package/widgets/Legend/styles/CardCSS.js +1 -1
  311. package/widgets/Legend/styles/Classic.js +1 -1
  312. package/widgets/Legend/styles/ClassicCSS.js +1 -1
  313. package/widgets/Legend.js +1 -1
  314. package/widgets/LineOfSight.js +1 -1
  315. package/widgets/Locate.js +1 -1
  316. package/widgets/Measurement.js +1 -1
  317. package/widgets/NavigationToggle/css.js +1 -1
  318. package/widgets/NavigationToggle.js +1 -1
  319. package/widgets/Popup/actions.js +1 -1
  320. package/widgets/Popup/css.js +1 -1
  321. package/widgets/Popup.js +1 -1
  322. package/widgets/Print.js +1 -1
  323. package/widgets/ScaleBar/css.js +1 -1
  324. package/widgets/ScaleBar.js +1 -1
  325. package/widgets/ScaleRangeSlider/css.js +1 -1
  326. package/widgets/ScaleRangeSlider.js +1 -1
  327. package/widgets/Search/SearchResultRenderer.js +1 -1
  328. package/widgets/Search/css.js +1 -1
  329. package/widgets/Search/searchResultRendererCSS.js +1 -1
  330. package/widgets/Search.js +1 -1
  331. package/widgets/ShadowCast/css.js +1 -1
  332. package/widgets/ShadowCast.js +1 -1
  333. package/widgets/Sketch.js +1 -1
  334. package/widgets/Slice.js +1 -1
  335. package/widgets/Slider/css.js +1 -1
  336. package/widgets/Slider.js +1 -1
  337. package/widgets/Swipe.js +1 -1
  338. package/widgets/TableList.js +1 -1
  339. package/widgets/TimeSlider/css.js +1 -1
  340. package/widgets/TimeSlider.js +1 -1
  341. package/widgets/Track.js +1 -1
  342. package/widgets/UtilityNetworkTrace.js +1 -1
  343. package/widgets/UtilityNetworkValidateTopology.js +1 -1
  344. package/widgets/ValuePicker.js +1 -1
  345. package/widgets/Weather/css.js +1 -1
  346. package/widgets/Weather.js +1 -1
  347. package/widgets/Widget.js +1 -1
  348. package/widgets/Zoom/IconButton.js +1 -1
  349. package/widgets/Zoom.js +1 -1
  350. package/widgets/smartMapping/BinaryColorSizeSlider.js +1 -1
  351. package/widgets/smartMapping/ClassedColorSlider.js +1 -1
  352. package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
  353. package/widgets/smartMapping/ColorSizeSlider.js +1 -1
  354. package/widgets/smartMapping/ColorSlider.js +1 -1
  355. package/widgets/smartMapping/HeatmapSlider.js +1 -1
  356. package/widgets/smartMapping/OpacitySlider.js +1 -1
  357. package/widgets/smartMapping/SizeSlider.js +1 -1
  358. package/widgets/support/DatePicker.js +1 -1
  359. package/widgets/support/Heading.js +1 -1
  360. package/widgets/support/Popover.js +1 -1
  361. package/widgets/support/SelectionToolbar.js +1 -1
  362. package/widgets/support/SketchTooltipControls.js +1 -1
  363. package/widgets/support/SnappingControls.js +1 -1
  364. package/widgets/support/TimePicker.js +1 -1
  365. package/widgets/support/TimezonePicker.js +1 -1
  366. package/widgets/support/globalCss.js +5 -0
  367. package/widgets/support/legacyIcon.js +5 -0
  368. package/assets/esri/core/workers/chunks/02d42698e12805c27689.js +0 -1
  369. package/assets/esri/core/workers/chunks/04a8a1ccf04c5d438886.js +0 -1
  370. package/assets/esri/core/workers/chunks/0af18a96cbd4e2d35436.js +0 -1
  371. package/assets/esri/core/workers/chunks/0cc61f1b2c0473ded5c2.js +0 -1
  372. package/assets/esri/core/workers/chunks/11ab06fc92d0261879d5.js +0 -1
  373. package/assets/esri/core/workers/chunks/123bb1a9946fc21e6377.js +0 -1
  374. package/assets/esri/core/workers/chunks/13a70fb4010be34b7184.js +0 -1
  375. package/assets/esri/core/workers/chunks/1535423349f7eee694bc.js +0 -1
  376. package/assets/esri/core/workers/chunks/15fb79e36f2d8dae5721.js +0 -1
  377. package/assets/esri/core/workers/chunks/1606730e465bb2997f13.js +0 -1
  378. package/assets/esri/core/workers/chunks/1a261dbe8aa1b8b5f57a.js +0 -1
  379. package/assets/esri/core/workers/chunks/227eb5912705913586fe.js +0 -1
  380. package/assets/esri/core/workers/chunks/294c186855d1b6741260.js +0 -1
  381. package/assets/esri/core/workers/chunks/2daa9888b0320bac9bac.js +0 -1
  382. package/assets/esri/core/workers/chunks/3361e3e8385f8de8820c.js +0 -1
  383. package/assets/esri/core/workers/chunks/4655a3c7a7a4940f2c0e.js +0 -1
  384. package/assets/esri/core/workers/chunks/471e467335e9855de27a.js +0 -1
  385. package/assets/esri/core/workers/chunks/49dfdc0463450491df9d.js +0 -1
  386. package/assets/esri/core/workers/chunks/4ccfc9eb1c5488ef2468.js +0 -1
  387. package/assets/esri/core/workers/chunks/520cb1fbd48a7e796c57.js +0 -1
  388. package/assets/esri/core/workers/chunks/56cbdc740897f82da06e.js +0 -1
  389. package/assets/esri/core/workers/chunks/57d367ace83ce3866a87.js +0 -1
  390. package/assets/esri/core/workers/chunks/5a56804cb039bfc9f845.js +0 -1
  391. package/assets/esri/core/workers/chunks/624cda301d6089bdf027.js +0 -1
  392. package/assets/esri/core/workers/chunks/67fab13f56b340076763.js +0 -1
  393. package/assets/esri/core/workers/chunks/6ba6d854be5ed3b319a5.js +0 -1
  394. package/assets/esri/core/workers/chunks/7390bf897f7c62a25678.js +0 -1
  395. package/assets/esri/core/workers/chunks/743f2bc6861995bd6fe3.js +0 -1
  396. package/assets/esri/core/workers/chunks/76c5dfe07b8775e67a9d.js +0 -1
  397. package/assets/esri/core/workers/chunks/777c1d16e08ea14131b6.js +0 -1
  398. package/assets/esri/core/workers/chunks/7a6c856ca59cfc3a8c90.js +0 -1
  399. package/assets/esri/core/workers/chunks/7bac1f75a6fc7947010f.js +0 -1
  400. package/assets/esri/core/workers/chunks/7c54513302c4e88d9b84.js +0 -1
  401. package/assets/esri/core/workers/chunks/80e322c6f4fdc4d348c7.js +0 -1
  402. package/assets/esri/core/workers/chunks/846603a0c4c241660798.js +0 -1
  403. package/assets/esri/core/workers/chunks/8aa7e994b74f66522c37.js +0 -1
  404. package/assets/esri/core/workers/chunks/9102ad2d22b88a361c24.js +0 -1
  405. package/assets/esri/core/workers/chunks/937a9eccbc8257892b24.js +0 -1
  406. package/assets/esri/core/workers/chunks/961ff24849ce85c5d26d.js +0 -1
  407. package/assets/esri/core/workers/chunks/979840360ef98964f940.js +0 -1
  408. package/assets/esri/core/workers/chunks/9800e8dad6fb2e1e7cb0.js +0 -1
  409. package/assets/esri/core/workers/chunks/990a00fcdf7e81c28dff.js +0 -1
  410. package/assets/esri/core/workers/chunks/99bee3a7a57fd2a98cce.js +0 -1
  411. package/assets/esri/core/workers/chunks/9f2e3f4f92cd2991e972.js +0 -1
  412. package/assets/esri/core/workers/chunks/a6130c8f7fe30fa8012b.js +0 -1
  413. package/assets/esri/core/workers/chunks/b1650a7eef36800a62dc.js +0 -1
  414. package/assets/esri/core/workers/chunks/b5d8c45899f02eed4f14.js +0 -1
  415. package/assets/esri/core/workers/chunks/b8f89ec9b1ff937a7040.js +0 -1
  416. package/assets/esri/core/workers/chunks/bbc6bc23c2b5b2075e0e.js +0 -1
  417. package/assets/esri/core/workers/chunks/bd0b9647880cbbec95e2.js +0 -1
  418. package/assets/esri/core/workers/chunks/c4d98d18334172dd463d.js +0 -1
  419. package/assets/esri/core/workers/chunks/c51233ad51823cb98c35.js +0 -1
  420. package/assets/esri/core/workers/chunks/c62846ea388f7db00309.js +0 -1
  421. package/assets/esri/core/workers/chunks/c7a29439ef85ffa2fbc5.js +0 -1
  422. package/assets/esri/core/workers/chunks/cb95260265947abbbe56.js +0 -1
  423. package/assets/esri/core/workers/chunks/ccc6cc52802573fb7532.js +0 -1
  424. package/assets/esri/core/workers/chunks/d6cae0507cf5127e2018.js +0 -1
  425. package/assets/esri/core/workers/chunks/dbf343d1fb746f99bb6e.js +0 -1
  426. package/assets/esri/core/workers/chunks/dc3b11961fe01bee7db4.js +0 -1
  427. package/assets/esri/core/workers/chunks/dc74b4ec85e8e3de5b27.js +0 -1
  428. package/assets/esri/core/workers/chunks/df1629cbe3c6c34ae5ac.js +0 -1
  429. package/assets/esri/core/workers/chunks/edcfc25860fa9ce5a4fb.js +0 -1
  430. package/assets/esri/core/workers/chunks/f152e72bda13ab0d315f.js +0 -1
  431. package/assets/esri/core/workers/chunks/f3554627664a419e00fa.js +0 -1
  432. package/assets/esri/core/workers/chunks/fac6b90e4efe3666e92e.js +0 -1
  433. package/assets/esri/core/workers/chunks/ff4567063d0f9c90905c.js +0 -1
  434. package/layers/support/FetchAssociatedFeatureLayer.js +0 -5
  435. package/widgets/support/SketchTooltipControls/SketchTooltipControlsViewModel.d.ts +0 -4
  436. package/widgets/support/SketchTooltipControls.d.ts +0 -4
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"./request.js";import t from"./core/Collection.js";import{referenceSetter as s}from"./core/collectionUtils.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{destroyMaybe as c}from"./core/maybe.js";import{throwIfAborted as m}from"./core/promiseUtils.js";import{isProtocolRelative as y,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 f}from"./core/accessorSupport/decorators/subclass.js";import{writer as d}from"./core/accessorSupport/decorators/writer.js";import b from"./geometry/SpatialReference.js";import L from"./portal/Portal.js";import w from"./portal/PortalItem.js";import{getBasemapTitle as g,esriBasemapDefinitions as I}from"./support/basemapDefinitions.js";import S from"./support/BasemapStyle.js";import{getLayerJSON as j}from"./webdoc/support/writeUtils.js";var _;let v=0;const M="esri.Basemap";let U=_=class extends(a(n)){constructor(e){super(e),this.id=null,this.portalItem=null,this.spatialReference=null,this.style=null,this.thumbnailUrl=null,this.title="Basemap",this.id=Date.now().toString(16)+"-basemap-"+v++,this.baseLayers=new t,this.referenceLayers=new t;const r=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=>r(e.item))),this.referenceLayers.on("after-add",(e=>r(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(){const e=this.baseLayers.toArray();for(const t of e)t.destroy();const r=this.referenceLayers.toArray();for(const t of r)t.destroy();this.baseLayers.destroy(),this.referenceLayers.destroy(),this.portalItem=c(this.portalItem)}normalizeCtorArgs(e){return e&&"resourceInfo"in e&&(this._set("resourceInfo",e.resourceInfo),delete(e={...e}).resourceInfo),e}set baseLayers(e){this._set("baseLayers",s(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",s(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 _({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&&y(r.url)&&(r.url=`https:${r.url}`),r.templateUrl&&y(r.templateUrl)&&(r.templateUrl=`https:${r.templateUrl}`),r}))),e}async _loadFromSource(e){const{resourceInfo:r,portalItem:t,style:s}=this;m(e);const a=[];if(r){const t=r.context?r.context.url:null;if(a.push(this._loadLayersFromJSON(r.data,t,e)),r.data.id&&!r.data.title){const e=r.data.id;a.push(g(e).then((e=>{e&&this.read({title:e},r.context)})))}}else t?a.push(this._loadFromItem(t,e)):s&&a.push(this._loadFromStylesService(s,e));await Promise.all(a)}async _loadLayersFromJSON(e,r,t){const s=this.resourceInfo&&this.resourceInfo.context,a=this.portalItem&&this.portalItem.portal||s&&s.portal||null,o=F[s?.origin||""]??"web-map",{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),n=[];if(m(t),e.baseMapLayers&&Array.isArray(e.baseMapLayers)){const t={context:{...s,origin:o,url:r,portal:a,layerContainerType:"basemap"},defaultLayerType:"DefaultTileLayer"},l=e=>"web-scene"===o&&"ArcGISSceneServiceLayer"===e.layerType||e.isReference,p=i(this.baseLayers,e.baseMapLayers.filter((e=>!l(e))),t);n.push(p);const c=i(this.referenceLayers,e.baseMapLayers.filter(l),t);n.push(c)}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:x[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)}async _loadFromStylesService(e,t){const s=`${e.serviceUrl}/${e.id}`,a=(await r(s,{query:{language:e.getLanguageParamValue()},signal:t?.signal})).data;if(a.baseMap&&Array.isArray(a.baseMap.baseMapLayers))for(const r of a.baseMap.baseMapLayers)if(!r.customParameters&&r.styleUrl?.includes("?")){const e=h(r.styleUrl);e.query&&(r.styleUrl=e.path,r.customParameters=e.query)}const o=h(s);return this._set("resourceInfo",{data:a.baseMap??{},context:{origin:"web-map",url:o}}),this.read(this.resourceInfo.data,this.resourceInfo.context),this.read({spatialReference:a.spatialReference},this.resourceInfo.context),this._loadLayersFromJSON(this.resourceInfo.data,o,t)}static fromId(e){const r=I[e];return r?_.fromJSON(r):null}};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:t}},writer(e,r,t,s){this._writeBaseLayers(e,r,s)}}}}}})],U.prototype,"baseLayers",null),e([u({type:String,json:{origins:{"web-scene":{write:!0}}}})],U.prototype,"id",void 0),e([u({type:w})],U.prototype,"portalItem",void 0),e([u()],U.prototype,"referenceLayers",null),e([u({readOnly:!0})],U.prototype,"resourceInfo",void 0),e([u({type:b})],U.prototype,"spatialReference",void 0),e([u({type:S})],U.prototype,"style",void 0),e([u()],U.prototype,"thumbnailUrl",void 0),e([u({type:String,json:{origins:{"web-scene":{write:{isRequired:!0}}}}})],U.prototype,"title",void 0),e([d("title")],U.prototype,"writeTitle",null),U=_=e([f(M)],U);const x={"Web Scene":"web-scene","Web Map":"web-map","Link Chart":"link-chart"},F={"web-scene":"web-scene","web-map":"web-map","link-chart":"link-chart"},R=U;export{R as default};
5
+ import{_ as e}from"./chunks/tslib.es6.js";import r from"./request.js";import t from"./core/Collection.js";import{referenceSetter as s}from"./core/collectionUtils.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{destroyMaybe as c}from"./core/maybe.js";import{throwIfAborted as m}from"./core/promiseUtils.js";import{isProtocolRelative as y,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 f}from"./core/accessorSupport/decorators/subclass.js";import{writer as d}from"./core/accessorSupport/decorators/writer.js";import b from"./geometry/SpatialReference.js";import L from"./portal/Portal.js";import w from"./portal/PortalItem.js";import{getBasemapTitle as g,esriBasemapDefinitions as I}from"./support/basemapDefinitions.js";import S from"./support/BasemapStyle.js";import{getLayerJSON as j}from"./webdoc/support/writeUtils.js";var _;let v=0;const M="esri.Basemap";let U=_=class extends(a(n)){constructor(e){super(e),this.id=null,this.portalItem=null,this.spatialReference=null,this.style=null,this.thumbnailUrl=null,this.title="Basemap",this.id=Date.now().toString(16)+"-basemap-"+v++,this.baseLayers=new t,this.referenceLayers=new t;const r=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=>r(e.item))),this.referenceLayers.on("after-add",(e=>r(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(){const e=this.baseLayers.toArray();for(const t of e)t.destroy();const r=this.referenceLayers.toArray();for(const t of r)t.destroy();this.baseLayers.destroy(),this.referenceLayers.destroy(),this.portalItem=c(this.portalItem)}normalizeCtorArgs(e){return e&&"resourceInfo"in e&&(this._set("resourceInfo",e.resourceInfo),delete(e={...e}).resourceInfo),e}set baseLayers(e){this._set("baseLayers",s(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",s(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 _({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&&y(r.url)&&(r.url=`https:${r.url}`),r.templateUrl&&y(r.templateUrl)&&(r.templateUrl=`https:${r.templateUrl}`),r}))),e}async _loadFromSource(e){const{resourceInfo:r,portalItem:t,style:s}=this;m(e);const a=[];if(r){const t=r.context?r.context.url:null;if(a.push(this._loadLayersFromJSON(r.data,t,e)),r.data.id&&!r.data.title){const e=r.data.id;a.push(g(e).then((e=>{e&&this.read({title:e},r.context)})))}}else t?a.push(this._loadFromItem(t,e)):s&&a.push(this._loadFromStylesService(s,e));await Promise.all(a)}async _loadLayersFromJSON(e,r,t){const s=this.resourceInfo&&this.resourceInfo.context,a=this.portalItem&&this.portalItem.portal||s&&s.portal||null,o=F[s?.origin||""]??"web-map",{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),n=[];if(m(t),e.baseMapLayers&&Array.isArray(e.baseMapLayers)){const t={context:{...s,origin:o,url:r,portal:a,layerContainerType:"basemap"},defaultLayerType:"DefaultTileLayer"},l=e=>"web-scene"===o&&"ArcGISSceneServiceLayer"===e.layerType||e.isReference,p=i(this.baseLayers,e.baseMapLayers.filter((e=>!l(e))),t);n.push(p);const c=i(this.referenceLayers,e.baseMapLayers.filter(l),t);n.push(c)}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:x[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)}async _loadFromStylesService(e,t){const s=`${e.serviceUrl}/${e.id}`,a=(await r(s,{query:{language:e.getLanguageParamValue()},signal:t?.signal})).data;if(a.baseMap&&Array.isArray(a.baseMap.baseMapLayers))for(const r of a.baseMap.baseMapLayers)if(!r.customParameters&&r.styleUrl?.includes("?")){const e=h(r.styleUrl);e.query&&(r.styleUrl=e.path,r.customParameters=e.query)}const o=h(s);return this._set("resourceInfo",{data:a.baseMap??{},context:{origin:"web-map",url:o}}),this.read(this.resourceInfo.data,this.resourceInfo.context),this.read({spatialReference:a.spatialReference},this.resourceInfo.context),this._loadLayersFromJSON(this.resourceInfo.data,o,t)}static fromId(e){const r=I[e];return r?_.fromJSON(r,{origin:r.is3d?"web-scene":"web-map"}):null}};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:t}},writer(e,r,t,s){this._writeBaseLayers(e,r,s)}}}}}})],U.prototype,"baseLayers",null),e([u({type:String,json:{origins:{"web-scene":{write:!0}}}})],U.prototype,"id",void 0),e([u({type:w})],U.prototype,"portalItem",void 0),e([u()],U.prototype,"referenceLayers",null),e([u({readOnly:!0})],U.prototype,"resourceInfo",void 0),e([u({type:b})],U.prototype,"spatialReference",void 0),e([u({type:S})],U.prototype,"style",void 0),e([u()],U.prototype,"thumbnailUrl",void 0),e([u({type:String,json:{origins:{"web-scene":{write:{isRequired:!0}}}}})],U.prototype,"title",void 0),e([d("title")],U.prototype,"writeTitle",null),U=_=e([f(M)],U);const x={"Web Scene":"web-scene","Web Map":"web-map","Link Chart":"link-chart"},F={"web-scene":"web-scene","web-map":"web-map","link-chart":"link-chart"},R=U;export{R as default};
package/WebScene.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 o from"./core/Collection.js";import s from"./core/Error.js";import{clone as a}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{destroyMaybe as c}from"./core/maybe.js";import{MultiOriginJSONMixin as d,MultiOriginJSONSupport as h}from"./core/MultiOriginJSONSupport.js";import{EsriPromiseMixin as m}from"./core/Promise.js";import{debounce as u}from"./core/promiseUtils.js";import{on as y}from"./core/reactiveUtils.js";import{urlToObject as w,addQueryParameter as g}from"./core/urlUtils.js";import{property as f}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import{reader as v}from"./core/accessorSupport/decorators/reader.js";import{subclass as b}from"./core/accessorSupport/decorators/subclass.js";import{writer as S}from"./core/accessorSupport/decorators/writer.js";import{updateOrigins as _}from"./core/accessorSupport/originUtils.js";import{readLoadable as A}from"./core/accessorSupport/read.js";import I from"./geometry/Extent.js";import j from"./geometry/HeightModelInfo.js";import{canProjectWithoutEngine as L}from"./geometry/projection.js";import P from"./geometry/SpatialReference.js";import{validateWebSceneError as R}from"./geometry/support/heightModelInfoUtils.js";import{fromJSON as U}from"./geometry/support/jsonUtils.js";import{isEarth as O}from"./geometry/support/spatialReferenceUtils.js";import V from"./portal/Portal.js";import M from"./portal/PortalItem.js";import{toggleTypeKeword as E,TypeKeyword as N}from"./portal/support/portalItemUtils.js";import{hasDeveloperBasemapLayer as T}from"./support/basemapUtils.js";import C from"./support/MapFloorInfo.js";import{WebSceneTag as G}from"./support/tagSymbols.js";import{createSchemaValidationError as F,createCopyError as J}from"./support/webSceneUtils.js";import{ViewingMode as $}from"./views/ViewingMode.js";import{isSpatialReferenceSupported as x}from"./views/support/spatialReferenceSupport.js";import{SaveOperationType as W}from"./webdoc/interfaces.js";import{updateItemWithResources as B,saveResources as k}from"./webdoc/support/saveUtils.js";import{getOptimalThumbnailSize as q}from"./webdoc/support/thumbnailUtils.js";import D from"./webscene/ApplicationProperties.js";import K from"./webscene/Environment.js";import H from"./webscene/InitialViewProperties.js";import z from"./webscene/Presentation.js";import Q from"./webscene/TransportationNetwork.js";import{Version as X}from"./webscene/Version.js";import{getLoader as Y}from"./webscene/support/schemaValidatorLoader.js";var Z;const ee=new X(1,32),te=()=>{const e=8,t=[],r=ee.major;for(let i=e;i<=ee.minor;i++)t.push(`${r}.${i}`);return t},re="Web Scene";let ie=class extends(n.LoadableMixin(m(d(r)))){constructor(e){super(e),this[Z]=!0,this._layersIdGCTimeoutId=void 0,this._updateFromPromise=null,this.applicationProperties=null,this.clippingArea=null,this.clippingEnabled=!1,this.floorInfo=null,this.heightModelInfo=void 0,this.sourceVersion=null,this.transportationNetworks=null,this.presentation=new z,this.initialViewProperties=new H,this.portalItem=null,this.resourceInfo=null,this._debouncedSaveOperations=u((async(e,t,r)=>{switch(e){case W.SAVE:return this._saveImpl(t);case W.SAVE_AS:return this._saveAsImpl(r,t)}})),this._resourceReferences={portalItem:null,paths:[]},this.authoringApp=null,this.authoringAppVersion=null,this._isAuthoringAppSetByUser=!1,this._isAuthoringAppVersionSetByUser=!1}initialize(){if(this.when().catch((e=>{p.getLogger(this).error("#load()","Failed to load web scene",e)})),this.resourceInfo){let t;try{t=this._validateJSON(this.resourceInfo)}catch(e){return void this.addResolvingPromise(Promise.reject(e))}this.read(t),this.addResolvingPromise(this._validateSpatialReference()),this.addResolvingPromise(this._validateHeightModelInfo())}this.addHandles(y((()=>this.allLayers),"change",(()=>this._scheduleLayersIdGC())))}destroy(){this._unscheduleLayersIdGC(),this.presentation&&this.presentation.destroy(),this.portalItem=c(this.portalItem)}writeClippingArea(e,t){t.clippingArea||(t.clippingArea={}),t.clippingArea.geometry=e.toJSON()}readClippingEnabled(e,t){return!!t.clippingArea&&!!t.clippingArea.clip}writeClippingEnabled(e,t){this.clippingArea&&(t.clippingArea||(t.clippingArea={}),t.clippingArea.clip=e)}writeLayers(e,t,r,i){t[r]=this._layersToJSON(e,"operational-layers",i)}readSourceVersion(e,t){const[r,i]=t.version.split(".");return new X(parseInt(r,10),parseInt(i,10))}writeSourceVersion(e,t,r){t[r]=`${ee.major}.${ee.minor}`}writeTables(e,t,r,i){const o=this._layersToJSON(e,"tables",i);o.length&&(t[r]=o)}get thumbnailUrl(){return this.portalItem?.thumbnailUrl??null}set thumbnailUrl(e){e?this._override("thumbnailUrl",e):(this._clearOverride("thumbnailUrl"),this.clear("thumbnailUrl","user"))}set authoringApp(e){this._isAuthoringAppSetByUser=!0,this._set("authoringApp",e)}writeAuthoringApp(e,t){e&&this._isAuthoringAppSetByUser?t.authoringApp=e:t.authoringApp="ArcGIS API for JavaScript"}set authoringAppVersion(e){this._isAuthoringAppVersionSetByUser=!0,this._set("authoringAppVersion",e)}writeAuthoringAppVersion(e,r){e&&this._isAuthoringAppVersionSetByUser?r.authoringAppVersion=e:r.authoringAppVersion=t}writeGround(e,t,r,i){t[r]=e?e.write({},i):{transparency:0,layers:[]}}readInitialViewProperties(e,t){const r={};return t.initialState?.environment&&(r.environment=K.fromJSON(t.initialState.environment)),r.spatialReference=t.spatialReference?P.fromJSON(t.spatialReference):P.WebMercator,r.viewingMode=t.viewingMode??"global",t.initialState?.viewpoint&&(r.viewpoint=i.fromJSON(t.initialState.viewpoint)),new H(r)}get spatialReference(){return this.initialViewProperties?.spatialReference??P.WebMercator}get viewingMode(){return this.initialViewProperties?.viewingMode??"global"}load(e){const t=this.ground;return this.addResolvingPromise(this._loadFromSource().then((()=>{t&&t!==this.ground&&t.destroy()}))),Promise.resolve(this)}loadAll(){return l(this,(e=>{const t=this.presentation&&this.presentation.slides;e(this.ground,this.basemap,this.layers,t&&t.map((e=>e.basemap)),this.tables)}))}read(e,t){t={...t,origin:"web-scene"};const r=this._isAuthoringAppVersionSetByUser,i=this._isAuthoringAppSetByUser;if(A(this,e,(t=>super.read(e,t)),t),i||(this._isAuthoringAppSetByUser=!1),r||(this._isAuthoringAppVersionSetByUser=!1),e.baseMap&&Array.isArray(e.baseMap.elevationLayers)&&this.sourceVersion?.supportsVisibleElevationLayersInSlides){const t=e.baseMap.elevationLayers.map((e=>({id:e.id}))),r=this.presentation.slides,i=(e,t)=>e.visibleLayers.some((e=>e.id===t)),o=t.filter((e=>!r.some((t=>i(t,e.id)))));r.forEach((e=>{e.visibleLayers.addMany(o)}))}}_writeBasemapElevationLayers(e){const t=e.ground&&e.ground.layers;!e.baseMap&&t&&t.length&&(e.baseMap={title:"Basemap",baseMapLayers:[]}),e.baseMap&&(e.baseMap.elevationLayers=a(t))}_layersToJSON(e,t,r){const i={...r,layerContainerType:t};return e.map((e=>this._verifyWritableLayer(e,r)?e.write({},i):null)).filter((e=>!!e)).toArray()}_verifyWritableLayer(e,t){return!!e.persistenceEnabled&&("write"in e||(t&&t.messages&&t.messages.push(new s("layer:unsupported",`Layers (${e.title}, ${e.id}) of type '${e.declaredClass}' cannot be persisted in web scenes`,{layer:e})),!1))}write(e,t){if("loaded"!==this.loadStatus){const e=new s("webscene:not-loaded","Web scene must be loaded before it can be serialized");throw p.getLogger(this).error("#toJSON()","Web scene must be loaded before it can be serialized",this.loadError||this.loadStatus),e}this._runLayersIdGC();const r=!t?.messages;t={messages:[],...t,origin:"web-scene"};const i=super.write(e,t);if(r){const e=t.messages?.filter((e=>"web-document-write:property-required"===e.name))??[];if(e.length){const t=new s("web-document:property-required","One or more properties that are required in the webscene JSON are missing, see details for the specific errors",{errors:e});throw p.getLogger(this).error("#toJSON()","One or more properties that are required in the webscene JSON are missing",e),t}}return this._writeBasemapElevationLayers(i),i}async save(e){return this._debouncedSaveOperations(W.SAVE,e)}async _saveImpl(e){if(!this.portalItem)throw p.getLogger(this).error("save(): requires the .portalItem property to be set"),await Promise.resolve(),new s("webscene:portal-item-not-set","Portal item to save to has not been set on the WebScene");if(this.portalItem?.type!==re)throw await Promise.resolve(),new s("webscene:portal-item-wrong-type",`Portal item needs to have type "${re}"`);const t=this._updateFromPromise;await this._ensureLoadBeforeSave();const r=this._enableVerifyItemRelativeUrls({origin:"web-scene",url:this.portalItem.itemUrl?w(this.portalItem.itemUrl):null,messages:[],portal:this.portalItem.portal??V.getDefault(),portalItem:this.portalItem,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}}),i=this.write({},r);return await Promise.all(r.resources.pendingOperations),await this._verifySave(i,r,e),this._updateTypeKeywords(this.portalItem),await B(this.portalItem,i,this._resourceReferences,r,null),_(r),t&&await t,await this._saveThumbnail(),this.portalItem}async saveAs(e,t){return this._debouncedSaveOperations(W.SAVE_AS,t,e)}async _saveAsImpl(e,t){let r=M.from(e);r||(p.getLogger(this).error("saveAs(portalItem): requires a portal item parameter"),await Promise.reject(new s("webscene:portal-item-required","saveAs requires a portal item to save to"))),r.id&&(r=r.clone(),r.id=null);const i=r.portal||V.getDefault();await this._ensureLoadBeforeSave(),r.type=re,r.portal=i;const o=this._enableVerifyItemRelativeUrls({origin:"web-scene",url:null,messages:[],portal:i,portalItem:r,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}}),a=this.write({},o);await Promise.all(o.resources.pendingOperations),await this._verifySaveAs(a,o,t);const n=this.thumbnailUrl,l=!this._isOverridden("thumbnailUrl");return this._updateTypeKeywords(r),await i.signIn(),await(i.user?.addItem({item:r,folder:t&&t.folder,data:a})),await k(this._resourceReferences,o,null),this.portalItem=r,h.prototype.read.call(this,{version:a.version,authoringApp:a.authoringApp,authoringAppVersion:a.authoringAppVersion},{name:"web-scene",ignoreDefaults:!0,url:r.itemUrl?w(r.itemUrl):void 0}),_(o),n&&(this.thumbnailUrl=l?g(n,"w","8192"):n),o.portalItem=r,await this._saveThumbnail(),r}async _saveThumbnail(){this._isOverridden("thumbnailUrl")&&(await(this.portalItem?.updateThumbnail({thumbnail:this.thumbnailUrl})),this._clearOverride("thumbnailUrl"),this.clear("thumbnailUrl","user"))}_verifySave(e,t,r,i=!1){if(!O(this.spatialReference))return Promise.reject(new s("webscene:unsupported-spatial-reference","Webscenes using spatial reference systems from Mars or Moon can not be saved currently."));let o,a=t.messages?.filter((e=>"error"===e.type)).map((e=>new s(e.name,e.message,e.details)))??[];t.blockedRelativeUrls&&(a=a.concat(t.blockedRelativeUrls.map((e=>new s("url:unsupported",`Relative url '${e}' is not supported in Web Scene`))))),r&&r.ignoreUnsupported&&(a=a.filter((e=>"layer:unsupported"!==e.name&&"symbol:unsupported"!==e.name&&"symbol-layer:unsupported"!==e.name&&"property:unsupported"!==e.name&&"url:unsupported"!==e.name&&"scenemodification:unsupported"!==e.name))),r?.requiredPropertyChecksDisabled&&(a=a.filter((e=>"web-document-write:property-required"!==e.name)));const n=!!r?.strictSchemaValidationEnabled,l=Y();return o=n&&l?l().then((t=>{const r=t.validate(e);if(r.length>0){const e=`webscene did not validate:\n${r.join("\n")}`;p.getLogger(this).error(`${i?"saveAs":"save"}(): ${e}`)}return r.map((e=>new s("webscene:schema-validation",e)))})).then((e=>{if(e.length>0)throw F(e.concat(a));return a})):Promise.resolve(a),o.then((e=>{if(e.length>0)throw new s("webscene:save","Failed to save webscene due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:e})}))}_verifySaveAs(e,t,r){return this.canNotSaveAs(t)?Promise.reject(J()):this._verifySave(e,t,r,!0)}verifySaveAs(e){const t=this._enableVerifyItemRelativeUrls({origin:"web-scene",messages:[]}),r=this.write({},t);return this._verifySaveAs(r,t,e)}canNotSaveAs(e){return e||(e=this._enableVerifyItemRelativeUrls({origin:"web-scene",messages:[]}),this.write({},e)),(e.verifyItemRelativeUrls?.writtenUrls?.length??0)>0}async updateFrom(e,t={}){const r=this._updateFrom(e,t);this._updateFromPromise=r,await r;this._updateFromPromise===r&&(this._updateFromPromise=null)}async _updateFrom(e,t={}){if(await e.whenReady(),!t.environmentExcluded&&e.environment&&(this.initialViewProperties.environment=K.prototype.clone.apply(e.environment)),!t.viewpointExcluded&&e.viewpoint&&(this.initialViewProperties.viewpoint=e.viewpoint.clone()),this.initialViewProperties.spatialReference=e.spatialReference.clone(),this.initialViewProperties.viewingMode=e.viewingMode,null!=e.clippingArea?e.clippingArea!==this.clippingArea&&(this.clippingArea=e.clippingArea.clone(),this.clippingEnabled=!0):this.clippingEnabled=!1,e.heightModelInfo&&(this.heightModelInfo=e.heightModelInfo.clone()),e.map===this)for(const r of e.allLayerViews){const e="visible";e in r&&e in r.layer&&r._isOverridden(e)&&(r.layer[e]=r[e])}(!1===t.thumbnailExcluded||null==t.thumbnailExcluded&&!t.viewpointExcluded)&&await this._updateFromThumbnail(e,t.thumbnailSize??void 0)}async _updateFromThumbnail(e,t){const r=q(e,t),i=await e.takeScreenshot({format:"jpg",width:r.width,height:r.height,disableDecorations:!0});this.thumbnailUrl=i.dataUrl}_loadFromSource(){return this.resourceInfo?this._loadFromJSON(this.resourceInfo,{origin:"web-scene"}):this.portalItem&&this.portalItem.id?this._loadFromItem(this.portalItem):this._loadObjectsWithLayers()}_readAndLoadFromJSON(e,t){const r=this._validateJSON(e);return this.read(r,t),this._loadFromJSON(r,t)}_extractOperationalLayers(e){const t=[];if(!this.sourceVersion?.supportsGround&&e.baseMap&&Array.isArray(e.baseMap.elevationLayers))for(const o of e.baseMap.elevationLayers)t.push(o);const r=[],i=e=>(e.layers&&(e.layers=e.layers.filter(i)),"ArcGISTiledElevationServiceLayer"!==e.layerType||(this.sourceVersion?.supportsGround||r.push(e),!1));return{operationalLayers:e.operationalLayers?e.operationalLayers.filter(i):[],operationalElevationLayers:r,basemapElevationLayers:t}}async _loadFromJSON(e,t){const r=new o;await this._validateSpatialReference(),await this._validateHeightModelInfo();const{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),{operationalLayers:s,operationalElevationLayers:a,basemapElevationLayers:n}=this._extractOperationalLayers(e),l=[],p={context:{...t,layerContainerType:"operational-layers"}};if(this.portalItem&&(p.context.portal=this.portalItem.portal||V.getDefault()),n.length>0){const e={...p,context:{...p.context,layerContainerType:"ground"}};e.defaultLayerType="ArcGISTiledElevationServiceLayer",l.push(i(this.ground.layers,n,e))}if(a.length>0){const e={...p,context:{...p.context,layerContainerType:"ground"}};e.defaultLayerType="ArcGISTiledElevationServiceLayer",l.push(i(r,a,e))}s&&s.length>0&&l.push(i(this.layers,s,p)),e.tables?.length&&l.push(i(this.tables,e.tables,{...p,context:{...p.context,layerContainerType:"tables"},defaultLayerType:"ArcGISFeatureLayer"})),await Promise.allSettled(l),await this._loadObjectsWithLayers(),this.ground.layers.addMany(r)}async _ensureLoadBeforeSave(){await this.load(),await this._loadObjectsWithLayers();const e=[],t=[...this.allLayers.items];for(const{basemap:r}of this.presentation.slides.items)r&&(t.push(...r.baseLayers.items),t.push(...r.referenceLayers.items));for(const r of t)if("beforeSave"in r&&"function"==typeof r.beforeSave){const t=r.beforeSave();t&&e.push(t)}await Promise.allSettled(e)}async _loadObjectsWithLayers(){const e=[];this.ground&&e.push(this.ground.load()),this.basemap&&e.push(this.basemap.load()),this.presentation.slides.forEach((t=>{t.basemap&&e.push(t.basemap.load())})),await Promise.allSettled(e)}async _loadFromItem(e){if(await e.load().catch((e=>{throw new s("webscene:load-portal-item","Failed to load portal item",{error:e})})),"Web Scene"!==e.type)throw new s("webscene:invalid-portal-item","Invalid portal item type '${type}', expected 'Web Scene'",{type:e.type});const t=await e.fetchData();this.resourceInfo=t;const r={origin:"web-scene",url:w(e.itemUrl),portal:e.portal||V.getDefault(),portalItem:e,readResourcePaths:[]};await this._readAndLoadFromJSON(t,r),this._resourceReferences={portalItem:e,paths:r.readResourcePaths??[]}}_validateSpatialReference(){const e=this.initialViewProperties,t=this._sceneSpatialReference;let r;if("local"!==e.viewingMode){if(!x(t,$.Global))return Promise.reject(new s("webscene:unsupported-spatial-reference","Unsupported spatial reference (${spatialReference.wkid}) in global mode, only Web Mercator, WGS84 GCS or CGCS2000 are supported",{spatialReference:t,viewingMode:e.viewingMode}));r=e=>!e||L(e,t)}else{if(!x(t,$.Local))return Promise.reject(new s("webscene:unsupported-spatial-reference","Unsupported spatial reference (${spatialReference.wkid}) in local mode, only projected coordinate systems are supported",{spatialReference:t,viewingMode:e.viewingMode}));r=e=>!e||e.equals(t)}const i=e=>e?.camera?.position.spatialReference??e?.targetGeometry?.spatialReference,o=e.viewpoint,a=i(o);if(a&&!r(a))return Promise.reject(new s("webscene:incompatible-camera-spatial-reference","Camera spatial reference (${cameraSpatialReference.wkid}) is incompatible with the scene spatial reference (${sceneSpatialReference.wkid})",{cameraSpatialReference:a,sceneSpatialReference:t,viewingMode:e.viewingMode}));const n=this.presentation.slides.find((e=>!r(i(e.viewpoint))));if(n){const r=i(n.viewpoint);return Promise.reject(new s("webscene:incompatible-slide-spatial-reference","Slide spatial reference (${slideSpatialReference.wkid}) is incompatible with the scene spatial reference (${sceneSpatialReference.wkid})",{slideSpatialReference:r,sceneSpatialReference:t,viewingMode:e.viewingMode}))}return Promise.resolve()}_validateHeightModelInfo(){const e=this._sceneSpatialReference,t=R(this.heightModelInfo,e);return t?Promise.reject(t):Promise.resolve()}_validateJSON(e){const t=X.parse(e.version||"","webscene");return ee.validate(t),e.version=`${t.major}.${t.minor}`,1===t.major&&t.minor<=2&&(e.spatialReference=P.WebMercator.toJSON()),e}_updateTypeKeywords(e){E(e,N.LOCAL_SCENE,"local"===this.initialViewProperties.viewingMode),E(e,N.DEVELOPER_BASEMAP,T(this.basemap)||this.presentation.slides.some((({basemap:e})=>!!e&&T(e)))),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}get _sceneSpatialReference(){return this.initialViewProperties.spatialReference||P.WebMercator}get _verifyItemRelativeRootPath(){return this.portalItem?.itemUrl?w(this.portalItem.itemUrl).path:null}_enableVerifyItemRelativeUrls(e){const t=this._verifyItemRelativeRootPath;return t&&(e.verifyItemRelativeUrls={rootPath:t,writtenUrls:[]}),e}_unscheduleLayersIdGC(){this._layersIdGCTimeoutId&&(clearTimeout(this._layersIdGCTimeoutId),this._layersIdGCTimeoutId=0)}_scheduleLayersIdGC(){this._unscheduleLayersIdGC(),this._layersIdGCTimeoutId=setTimeout((()=>{this._layersIdGCTimeoutId=0,this._runLayersIdGC()}),3e3)}_runLayersIdGC(){this._unscheduleLayersIdGC();const e=this.applicationProperties&&this.applicationProperties.viewing&&this.applicationProperties.viewing.search,t=e=>this.allLayers.some((t=>t.id===e&&t.persistenceEnabled));e&&e.layers&&(e.layers=e.layers.filter((e=>t(e.id))));const r=this.presentation&&this.presentation.slides;r&&r.forEach((e=>{e.visibleLayers&&(e.visibleLayers=e.visibleLayers.filter((e=>t(e.id))))}))}static fromJSON(e){if(!e)throw new s("webscene:empty-resource","Expected a JSON resource but got nothing");return new this({resourceInfo:e})}};Z=G,ie.version=`${ee.major}.${ee.minor}`,e([f({type:D,json:{write:!0}})],ie.prototype,"applicationProperties",void 0),e([f({type:I,json:{read:{source:"clippingArea.geometry",reader:U},write:{target:"clippingArea.geometry"}}})],ie.prototype,"clippingArea",void 0),e([S("clippingArea")],ie.prototype,"writeClippingArea",null),e([f({type:Boolean,json:{write:{target:"clippingArea.clip"}}})],ie.prototype,"clippingEnabled",void 0),e([v("clippingEnabled",["clippingArea"])],ie.prototype,"readClippingEnabled",null),e([S("clippingEnabled")],ie.prototype,"writeClippingEnabled",null),e([f({type:C,json:{read:{source:"mapFloorInfo"},write:{target:"mapFloorInfo"}}})],ie.prototype,"floorInfo",void 0),e([f({type:j,json:{write:!0}})],ie.prototype,"heightModelInfo",void 0),e([f({json:{write:{target:"operationalLayers",ignoreOrigin:!0}}})],ie.prototype,"layers",void 0),e([S("layers")],ie.prototype,"writeLayers",null),e([f({readOnly:!0,type:X,json:{type:te(),write:{ignoreOrigin:!0,target:"version",isRequired:!0,overridePolicy:()=>({enabled:!0,allowNull:!0,ignoreOrigin:!0})}}})],ie.prototype,"sourceVersion",void 0),e([v("sourceVersion",["version"])],ie.prototype,"readSourceVersion",null),e([S("sourceVersion")],ie.prototype,"writeSourceVersion",null),e([f({json:{read:!1,write:{enabled:!0,ignoreOrigin:!0}}})],ie.prototype,"tables",void 0),e([S("tables")],ie.prototype,"writeTables",null),e([f()],ie.prototype,"thumbnailUrl",null),e([f({type:String,json:{write:{writerEnsuresNonNull:!0,ignoreOrigin:!0}}})],ie.prototype,"authoringApp",null),e([S("authoringApp")],ie.prototype,"writeAuthoringApp",null),e([f({type:String,json:{write:{writerEnsuresNonNull:!0,ignoreOrigin:!0}}})],ie.prototype,"authoringAppVersion",null),e([S("authoringAppVersion")],ie.prototype,"writeAuthoringAppVersion",null),e([f({json:{write:{isRequired:!0,allowNull:!0,ignoreOrigin:!0,enabled:!0}}})],ie.prototype,"ground",void 0),e([S("ground")],ie.prototype,"writeGround",null),e([f({type:o.ofType(Q),json:{write:!0}})],ie.prototype,"transportationNetworks",void 0),e([f({type:z,nonNullable:!0,json:{write:{ignoreOrigin:!0,writer:(e,t,r,i)=>{if(e.slides&&e.slides.length>0){const r={...i,isPresentation:!0};t.presentation=e.write({},r)}}}}})],ie.prototype,"presentation",void 0),e([f({type:H,nonNullable:!0,json:{write:{target:"initialState",isRequired:!0,ignoreOrigin:!0},default:()=>new H({viewingMode:"global",spatialReference:P.WebMercator})}})],ie.prototype,"initialViewProperties",void 0),e([v("initialViewProperties",["initialState.environment","initialState.viewpoint","spatialReference","viewingMode"])],ie.prototype,"readInitialViewProperties",null),e([f({type:P,json:{read:!1,write:{isRequired:!0,ignoreOrigin:!0}}})],ie.prototype,"spatialReference",null),e([f({type:["local","global"],json:{read:!1,write:{isRequired:!0,ignoreOrigin:!0}}})],ie.prototype,"viewingMode",null),e([f({type:M})],ie.prototype,"portalItem",void 0),e([f()],ie.prototype,"resourceInfo",void 0),ie=e([b("esri.WebScene")],ie);const oe=ie;export{oe 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 o from"./core/Collection.js";import s from"./core/Error.js";import{clone as a}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{destroyMaybe as c}from"./core/maybe.js";import{MultiOriginJSONMixin as d,MultiOriginJSONSupport as h}from"./core/MultiOriginJSONSupport.js";import{EsriPromiseMixin as u}from"./core/Promise.js";import{debounce as m}from"./core/promiseUtils.js";import{on as y}from"./core/reactiveUtils.js";import{urlToObject as w,addQueryParameter as g}from"./core/urlUtils.js";import{property as f}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import{reader as b}from"./core/accessorSupport/decorators/reader.js";import{subclass as v}from"./core/accessorSupport/decorators/subclass.js";import{writer as S}from"./core/accessorSupport/decorators/writer.js";import{updateOrigins as _}from"./core/accessorSupport/originUtils.js";import{readLoadable as A}from"./core/accessorSupport/read.js";import I from"./geometry/Extent.js";import j from"./geometry/HeightModelInfo.js";import{canProjectWithoutEngine as L}from"./geometry/projection.js";import R from"./geometry/SpatialReference.js";import{validateWebSceneError as P}from"./geometry/support/heightModelInfoUtils.js";import{fromJSON as U}from"./geometry/support/jsonUtils.js";import{isEarth as O}from"./geometry/support/spatialReferenceUtils.js";import V from"./portal/Portal.js";import M from"./portal/PortalItem.js";import{toggleTypeKeword as E,TypeKeyword as N}from"./portal/support/portalItemUtils.js";import{hasDeveloperBasemapLayer as T}from"./support/basemapUtils.js";import C from"./support/MapFloorInfo.js";import{WebSceneTag as G}from"./support/tagSymbols.js";import{createSchemaValidationError as F,createCopyError as J}from"./support/webSceneUtils.js";import{ViewingMode as $}from"./views/ViewingMode.js";import{isSpatialReferenceSupported as x}from"./views/support/spatialReferenceSupport.js";import{SaveOperationType as W}from"./webdoc/interfaces.js";import{updateItemWithResources as B,saveResources as k}from"./webdoc/support/saveUtils.js";import{getOptimalThumbnailSize as q}from"./webdoc/support/thumbnailUtils.js";import D from"./webscene/ApplicationProperties.js";import K from"./webscene/Environment.js";import H from"./webscene/InitialViewProperties.js";import z from"./webscene/Presentation.js";import Q from"./webscene/TransportationNetwork.js";import{Version as X}from"./webscene/Version.js";import{getLoader as Y}from"./webscene/support/schemaValidatorLoader.js";var Z;const ee=new X(1,32),te=()=>{const e=8,t=[],r=ee.major;for(let i=e;i<=ee.minor;i++)t.push(`${r}.${i}`);return t},re="Web Scene";let ie=class extends(n.LoadableMixin(u(d(r)))){constructor(e){super(e),this[Z]=!0,this._layersIdGCTimeoutId=void 0,this._updateFromPromise=null,this.applicationProperties=null,this.clippingArea=null,this.clippingEnabled=!1,this.floorInfo=null,this.heightModelInfo=void 0,this.sourceVersion=null,this.transportationNetworks=null,this.presentation=new z,this.initialViewProperties=new H,this.portalItem=null,this.resourceInfo=null,this._debouncedSaveOperations=m((async(e,t,r)=>{switch(e){case W.SAVE:return this._saveImpl(t);case W.SAVE_AS:return this._saveAsImpl(r,t)}})),this._resourceReferences={portalItem:null,paths:[]},this.authoringApp=null,this.authoringAppVersion=null,this._isAuthoringAppSetByUser=!1,this._isAuthoringAppVersionSetByUser=!1}initialize(){if(this.when().catch((e=>{p.getLogger(this).error("#load()","Failed to load web scene",e)})),this.resourceInfo){let t;try{t=this._validateJSON(this.resourceInfo)}catch(e){return void this.addResolvingPromise(Promise.reject(e))}this.read(t),this.addResolvingPromise(this._validateSpatialReference()),this.addResolvingPromise(this._validateHeightModelInfo())}this.addHandles(y((()=>this.allLayers),"change",(()=>this._scheduleLayersIdGC())))}destroy(){this._unscheduleLayersIdGC(),this.presentation&&this.presentation.destroy(),this.portalItem=c(this.portalItem)}writeClippingArea(e,t){t.clippingArea||(t.clippingArea={}),t.clippingArea.geometry=e.toJSON()}readClippingEnabled(e,t){return!!t.clippingArea&&!!t.clippingArea.clip}writeClippingEnabled(e,t){this.clippingArea&&(t.clippingArea||(t.clippingArea={}),t.clippingArea.clip=e)}writeLayers(e,t,r,i){t[r]=this._layersToJSON(e,"operational-layers",i)}readSourceVersion(e,t){const[r,i]=t.version.split(".");return new X(parseInt(r,10),parseInt(i,10))}writeSourceVersion(e,t,r){t[r]=`${ee.major}.${ee.minor}`}writeTables(e,t,r,i){const o=this._layersToJSON(e,"tables",i);o.length&&(t[r]=o)}get thumbnailUrl(){return this.portalItem?.thumbnailUrl??null}set thumbnailUrl(e){e?this._override("thumbnailUrl",e):(this._clearOverride("thumbnailUrl"),this.clear("thumbnailUrl","user"))}set authoringApp(e){this._isAuthoringAppSetByUser=!0,this._set("authoringApp",e)}writeAuthoringApp(e,t){e&&this._isAuthoringAppSetByUser?t.authoringApp=e:t.authoringApp="ArcGIS API for JavaScript"}set authoringAppVersion(e){this._isAuthoringAppVersionSetByUser=!0,this._set("authoringAppVersion",e)}writeAuthoringAppVersion(e,r){e&&this._isAuthoringAppVersionSetByUser?r.authoringAppVersion=e:r.authoringAppVersion=t}writeGround(e,t,r,i){t[r]=e?e.write({},i):{transparency:0,layers:[]}}readInitialViewProperties(e,t){const r={};return t.initialState?.environment&&(r.environment=K.fromJSON(t.initialState.environment)),r.spatialReference=t.spatialReference?R.fromJSON(t.spatialReference):R.WebMercator,r.viewingMode=t.viewingMode??"global",t.initialState?.viewpoint&&(r.viewpoint=i.fromJSON(t.initialState.viewpoint)),new H(r)}get spatialReference(){return this.initialViewProperties?.spatialReference??R.WebMercator}get viewingMode(){return this.initialViewProperties?.viewingMode??"global"}load(e){const t=this.ground;return this.addResolvingPromise(this._loadFromSource().then((()=>{t&&t!==this.ground&&t.destroy()}))),Promise.resolve(this)}loadAll(){return l(this,(e=>{const t=this.presentation&&this.presentation.slides;e(this.ground,this.basemap,this.layers,t&&t.map((e=>e.basemap)),this.tables)}))}read(e,t){t={...t,origin:"web-scene"};const r=this._isAuthoringAppVersionSetByUser,i=this._isAuthoringAppSetByUser;if(A(this,e,(t=>super.read(e,t)),t),i||(this._isAuthoringAppSetByUser=!1),r||(this._isAuthoringAppVersionSetByUser=!1),e.baseMap&&Array.isArray(e.baseMap.elevationLayers)&&this.sourceVersion?.supportsVisibleElevationLayersInSlides){const t=e.baseMap.elevationLayers.map((e=>({id:e.id}))),r=this.presentation.slides,i=(e,t)=>e.visibleLayers.some((e=>e.id===t)),o=t.filter((e=>!r.some((t=>i(t,e.id)))));r.forEach((e=>{e.visibleLayers.addMany(o)}))}}_writeBasemapElevationLayers(e){const t=e.ground&&e.ground.layers;!e.baseMap&&t&&t.length&&(e.baseMap={title:"Basemap",baseMapLayers:[]}),e.baseMap&&(e.baseMap.elevationLayers=a(t))}_layersToJSON(e,t,r){const i={...r,layerContainerType:t};return e.map((e=>this._verifyWritableLayer(e,r)?e.write({},i):null)).filter((e=>!!e)).toArray()}_verifyWritableLayer(e,t){return!!e.persistenceEnabled&&("write"in e||(t&&t.messages&&t.messages.push(new s("layer:unsupported",`Layers (${e.title}, ${e.id}) of type '${e.declaredClass}' cannot be persisted in web scenes`,{layer:e})),!1))}write(e,t){if("loaded"!==this.loadStatus){const e=new s("webscene:not-loaded","Web scene must be loaded before it can be serialized");throw p.getLogger(this).error("#toJSON()","Web scene must be loaded before it can be serialized",this.loadError||this.loadStatus),e}this._runLayersIdGC();const r=!t?.messages;t={messages:[],...t,origin:"web-scene"};const i=super.write(e,t);if(r){const e=t.messages?.filter((e=>"web-document-write:property-required"===e.name))??[];if(e.length){const t=new s("web-document:property-required","One or more properties that are required in the webscene JSON are missing, see details for the specific errors",{errors:e});throw p.getLogger(this).error("#toJSON()","One or more properties that are required in the webscene JSON are missing",e),t}}return this._writeBasemapElevationLayers(i),i}async save(e){return this._debouncedSaveOperations(W.SAVE,e)}async _saveImpl(e){if(!this.portalItem)throw p.getLogger(this).error("save(): requires the .portalItem property to be set"),await Promise.resolve(),new s("webscene:portal-item-not-set","Portal item to save to has not been set on the WebScene");if(this.portalItem?.type!==re)throw await Promise.resolve(),new s("webscene:portal-item-wrong-type",`Portal item needs to have type "${re}"`);const t=this._updateFromPromise;await this._ensureLoadBeforeSave();const r=this._enableVerifyItemRelativeUrls({origin:"web-scene",url:this.portalItem.itemUrl?w(this.portalItem.itemUrl):null,messages:[],portal:this.portalItem.portal??V.getDefault(),portalItem:this.portalItem,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}}),i=this.write({},r);return await Promise.all(r.resources.pendingOperations),await this._verifySave(i,r,e),this._updateTypeKeywords(this.portalItem),await B(this.portalItem,i,this._resourceReferences,r,null),_(r),t&&await t,await this._saveThumbnail(),this.portalItem}async saveAs(e,t){return this._debouncedSaveOperations(W.SAVE_AS,t,e)}async _saveAsImpl(e,t){let r=M.from(e);if(!r)throw p.getLogger(this).error("saveAs(portalItem): requires a portal item parameter"),new s("webscene:portal-item-required","saveAs requires a portal item to save to");r.id&&(r=r.clone(),r.id=null);const i=r.portal||V.getDefault();await this._ensureLoadBeforeSave(),r.type=re,r.portal=i;const o=this._enableVerifyItemRelativeUrls({origin:"web-scene",url:null,messages:[],portal:i,portalItem:r,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}}),a=this.write({},o);await Promise.all(o.resources.pendingOperations),await this._verifySaveAs(a,o,t);const n=this.thumbnailUrl,l=!this._isOverridden("thumbnailUrl");if(this._updateTypeKeywords(r),await i.signIn(),!i.user)throw new s("webscene:user-not-signed-in","saveAs requires a user to be signed in to the portal");return await i.user.addItem({item:r,folder:t?.folder,data:a}),await k(this._resourceReferences,o,null),this.portalItem=r,h.prototype.read.call(this,{version:a.version,authoringApp:a.authoringApp,authoringAppVersion:a.authoringAppVersion},{name:"web-scene",ignoreDefaults:!0,url:r.itemUrl?w(r.itemUrl):void 0}),_(o),n&&(this.thumbnailUrl=l?g(n,"w","8192"):n),o.portalItem=r,await this._saveThumbnail(),r}async _saveThumbnail(){this._isOverridden("thumbnailUrl")&&(await(this.portalItem?.updateThumbnail({thumbnail:this.thumbnailUrl})),this._clearOverride("thumbnailUrl"),this.clear("thumbnailUrl","user"))}_verifySave(e,t,r,i=!1){if(!O(this.spatialReference))return Promise.reject(new s("webscene:unsupported-spatial-reference","Webscenes using spatial reference systems from Mars or Moon can not be saved currently."));let o,a=t.messages?.filter((e=>"error"===e.type)).map((e=>new s(e.name,e.message,e.details)))??[];t.blockedRelativeUrls&&(a=a.concat(t.blockedRelativeUrls.map((e=>new s("url:unsupported",`Relative url '${e}' is not supported in Web Scene`))))),r&&r.ignoreUnsupported&&(a=a.filter((e=>"layer:unsupported"!==e.name&&"symbol:unsupported"!==e.name&&"symbol-layer:unsupported"!==e.name&&"property:unsupported"!==e.name&&"url:unsupported"!==e.name&&"scenemodification:unsupported"!==e.name))),r?.requiredPropertyChecksDisabled&&(a=a.filter((e=>"web-document-write:property-required"!==e.name)));const n=!!r?.strictSchemaValidationEnabled,l=Y();return o=n&&l?l().then((t=>{const r=t.validate(e);if(r.length>0){const e=`webscene did not validate:\n${r.join("\n")}`;p.getLogger(this).error(`${i?"saveAs":"save"}(): ${e}`)}return r.map((e=>new s("webscene:schema-validation",e)))})).then((e=>{if(e.length>0)throw F(e.concat(a));return a})):Promise.resolve(a),o.then((e=>{if(e.length>0)throw new s("webscene:save","Failed to save webscene due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:e})}))}_verifySaveAs(e,t,r){return this.canNotSaveAs(t)?Promise.reject(J()):this._verifySave(e,t,r,!0)}verifySaveAs(e){const t=this._enableVerifyItemRelativeUrls({origin:"web-scene",messages:[]}),r=this.write({},t);return this._verifySaveAs(r,t,e)}canNotSaveAs(e){return e||(e=this._enableVerifyItemRelativeUrls({origin:"web-scene",messages:[]}),this.write({},e)),(e.verifyItemRelativeUrls?.writtenUrls?.length??0)>0}async updateFrom(e,t={}){const r=this._updateFrom(e,t);this._updateFromPromise=r,await r;this._updateFromPromise===r&&(this._updateFromPromise=null)}async _updateFrom(e,t={}){if(await e.whenReady(),!t.environmentExcluded&&e.environment&&(this.initialViewProperties.environment=K.prototype.clone.apply(e.environment)),!t.viewpointExcluded&&e.viewpoint&&(this.initialViewProperties.viewpoint=e.viewpoint.clone()),this.initialViewProperties.spatialReference=e.spatialReference.clone(),this.initialViewProperties.viewingMode=e.viewingMode,null!=e.clippingArea?e.clippingArea!==this.clippingArea&&(this.clippingArea=e.clippingArea.clone(),this.clippingEnabled=!0):this.clippingEnabled=!1,e.heightModelInfo&&(this.heightModelInfo=e.heightModelInfo.clone()),e.map===this)for(const r of e.allLayerViews){const e="visible";e in r&&e in r.layer&&r._isOverridden(e)&&(r.layer[e]=r[e])}(!1===t.thumbnailExcluded||null==t.thumbnailExcluded&&!t.viewpointExcluded)&&await this._updateFromThumbnail(e,t.thumbnailSize??void 0)}async _updateFromThumbnail(e,t){const r=q(e,t),i=await e.takeScreenshot({format:"jpg",width:r.width,height:r.height,disableDecorations:!0});this.thumbnailUrl=i.dataUrl}_loadFromSource(){return this.resourceInfo?this._loadFromJSON(this.resourceInfo,{origin:"web-scene"}):this.portalItem&&this.portalItem.id?this._loadFromItem(this.portalItem):this._loadObjectsWithLayers()}_readAndLoadFromJSON(e,t){const r=this._validateJSON(e);return this.read(r,t),this._loadFromJSON(r,t)}_extractOperationalLayers(e){const t=[];if(!this.sourceVersion?.supportsGround&&e.baseMap&&Array.isArray(e.baseMap.elevationLayers))for(const o of e.baseMap.elevationLayers)t.push(o);const r=[],i=e=>(e.layers&&(e.layers=e.layers.filter(i)),"ArcGISTiledElevationServiceLayer"!==e.layerType||(this.sourceVersion?.supportsGround||r.push(e),!1));return{operationalLayers:e.operationalLayers?e.operationalLayers.filter(i):[],operationalElevationLayers:r,basemapElevationLayers:t}}async _loadFromJSON(e,t){const r=new o;await this._validateSpatialReference(),await this._validateHeightModelInfo();const{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),{operationalLayers:s,operationalElevationLayers:a,basemapElevationLayers:n}=this._extractOperationalLayers(e),l=[],p={context:{...t,layerContainerType:"operational-layers"}};if(this.portalItem&&(p.context.portal=this.portalItem.portal||V.getDefault()),n.length>0){const e={...p,context:{...p.context,layerContainerType:"ground"}};e.defaultLayerType="ArcGISTiledElevationServiceLayer",l.push(i(this.ground.layers,n,e))}if(a.length>0){const e={...p,context:{...p.context,layerContainerType:"ground"}};e.defaultLayerType="ArcGISTiledElevationServiceLayer",l.push(i(r,a,e))}s&&s.length>0&&l.push(i(this.layers,s,p)),e.tables?.length&&l.push(i(this.tables,e.tables,{...p,context:{...p.context,layerContainerType:"tables"},defaultLayerType:"ArcGISFeatureLayer"})),await Promise.allSettled(l),await this._loadObjectsWithLayers(),this.ground.layers.addMany(r)}async _ensureLoadBeforeSave(){await this.load(),await this._loadObjectsWithLayers();const e=[],t=[...this.allLayers.items];for(const{basemap:r}of this.presentation.slides.items)r&&(t.push(...r.baseLayers.items),t.push(...r.referenceLayers.items));for(const r of t)if("beforeSave"in r&&"function"==typeof r.beforeSave){const t=r.beforeSave();t&&e.push(t)}await Promise.allSettled(e)}async _loadObjectsWithLayers(){const e=[];this.ground&&e.push(this.ground.load()),this.basemap&&e.push(this.basemap.load()),this.presentation.slides.forEach((t=>{t.basemap&&e.push(t.basemap.load())})),await Promise.allSettled(e)}async _loadFromItem(e){if(await e.load().catch((e=>{throw new s("webscene:load-portal-item","Failed to load portal item",{error:e})})),"Web Scene"!==e.type)throw new s("webscene:invalid-portal-item","Invalid portal item type '${type}', expected 'Web Scene'",{type:e.type});const t=await e.fetchData();this.resourceInfo=t;const r={origin:"web-scene",url:w(e.itemUrl),portal:e.portal||V.getDefault(),portalItem:e,readResourcePaths:[]};await this._readAndLoadFromJSON(t,r),this._resourceReferences={portalItem:e,paths:r.readResourcePaths??[]}}_validateSpatialReference(){const e=this.initialViewProperties,t=this._sceneSpatialReference;let r;if("local"!==e.viewingMode){if(!x(t,$.Global))return Promise.reject(new s("webscene:unsupported-spatial-reference","Unsupported spatial reference (${spatialReference.wkid}) in global mode, only Web Mercator, WGS84 GCS or CGCS2000 are supported",{spatialReference:t,viewingMode:e.viewingMode}));r=e=>!e||L(e,t)}else{if(!x(t,$.Local))return Promise.reject(new s("webscene:unsupported-spatial-reference","Unsupported spatial reference (${spatialReference.wkid}) in local mode, only projected coordinate systems are supported",{spatialReference:t,viewingMode:e.viewingMode}));r=e=>!e||e.equals(t)}const i=e=>e?.camera?.position.spatialReference??e?.targetGeometry?.spatialReference,o=e.viewpoint,a=i(o);if(a&&!r(a))return Promise.reject(new s("webscene:incompatible-camera-spatial-reference","Camera spatial reference (${cameraSpatialReference.wkid}) is incompatible with the scene spatial reference (${sceneSpatialReference.wkid})",{cameraSpatialReference:a,sceneSpatialReference:t,viewingMode:e.viewingMode}));const n=this.presentation.slides.find((e=>!r(i(e.viewpoint))));if(n){const r=i(n.viewpoint);return Promise.reject(new s("webscene:incompatible-slide-spatial-reference","Slide spatial reference (${slideSpatialReference.wkid}) is incompatible with the scene spatial reference (${sceneSpatialReference.wkid})",{slideSpatialReference:r,sceneSpatialReference:t,viewingMode:e.viewingMode}))}return Promise.resolve()}_validateHeightModelInfo(){const e=this._sceneSpatialReference,t=P(this.heightModelInfo,e);return t?Promise.reject(t):Promise.resolve()}_validateJSON(e){const t=X.parse(e.version||"","webscene");return ee.validate(t),e.version=`${t.major}.${t.minor}`,1===t.major&&t.minor<=2&&(e.spatialReference=R.WebMercator.toJSON()),e}_updateTypeKeywords(e){E(e,N.LOCAL_SCENE,"local"===this.initialViewProperties.viewingMode),E(e,N.DEVELOPER_BASEMAP,T(this.basemap)||this.presentation.slides.some((({basemap:e})=>!!e&&T(e)))),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}get _sceneSpatialReference(){return this.initialViewProperties.spatialReference||R.WebMercator}get _verifyItemRelativeRootPath(){return this.portalItem?.itemUrl?w(this.portalItem.itemUrl).path:null}_enableVerifyItemRelativeUrls(e){const t=this._verifyItemRelativeRootPath;return t&&(e.verifyItemRelativeUrls={rootPath:t,writtenUrls:[]}),e}_unscheduleLayersIdGC(){this._layersIdGCTimeoutId&&(clearTimeout(this._layersIdGCTimeoutId),this._layersIdGCTimeoutId=0)}_scheduleLayersIdGC(){this._unscheduleLayersIdGC(),this._layersIdGCTimeoutId=setTimeout((()=>{this._layersIdGCTimeoutId=0,this._runLayersIdGC()}),3e3)}_runLayersIdGC(){this._unscheduleLayersIdGC();const e=this.applicationProperties&&this.applicationProperties.viewing&&this.applicationProperties.viewing.search,t=e=>this.allLayers.some((t=>t.id===e&&t.persistenceEnabled));e&&e.layers&&(e.layers=e.layers.filter((e=>t(e.id))));const r=this.presentation&&this.presentation.slides;r&&r.forEach((e=>{e.visibleLayers&&(e.visibleLayers=e.visibleLayers.filter((e=>t(e.id))))}))}static fromJSON(e){if(!e)throw new s("webscene:empty-resource","Expected a JSON resource but got nothing");return new this({resourceInfo:e})}};Z=G,ie.version=`${ee.major}.${ee.minor}`,e([f({type:D,json:{write:!0}})],ie.prototype,"applicationProperties",void 0),e([f({type:I,json:{read:{source:"clippingArea.geometry",reader:U},write:{target:"clippingArea.geometry"}}})],ie.prototype,"clippingArea",void 0),e([S("clippingArea")],ie.prototype,"writeClippingArea",null),e([f({type:Boolean,json:{write:{target:"clippingArea.clip"}}})],ie.prototype,"clippingEnabled",void 0),e([b("clippingEnabled",["clippingArea"])],ie.prototype,"readClippingEnabled",null),e([S("clippingEnabled")],ie.prototype,"writeClippingEnabled",null),e([f({type:C,json:{read:{source:"mapFloorInfo"},write:{target:"mapFloorInfo"}}})],ie.prototype,"floorInfo",void 0),e([f({type:j,json:{write:!0}})],ie.prototype,"heightModelInfo",void 0),e([f({json:{write:{target:"operationalLayers",ignoreOrigin:!0}}})],ie.prototype,"layers",void 0),e([S("layers")],ie.prototype,"writeLayers",null),e([f({readOnly:!0,type:X,json:{type:te(),write:{ignoreOrigin:!0,target:"version",isRequired:!0,overridePolicy:()=>({enabled:!0,allowNull:!0,ignoreOrigin:!0})}}})],ie.prototype,"sourceVersion",void 0),e([b("sourceVersion",["version"])],ie.prototype,"readSourceVersion",null),e([S("sourceVersion")],ie.prototype,"writeSourceVersion",null),e([f({json:{read:!1,write:{enabled:!0,ignoreOrigin:!0}}})],ie.prototype,"tables",void 0),e([S("tables")],ie.prototype,"writeTables",null),e([f()],ie.prototype,"thumbnailUrl",null),e([f({type:String,json:{write:{writerEnsuresNonNull:!0,ignoreOrigin:!0}}})],ie.prototype,"authoringApp",null),e([S("authoringApp")],ie.prototype,"writeAuthoringApp",null),e([f({type:String,json:{write:{writerEnsuresNonNull:!0,ignoreOrigin:!0}}})],ie.prototype,"authoringAppVersion",null),e([S("authoringAppVersion")],ie.prototype,"writeAuthoringAppVersion",null),e([f({json:{write:{isRequired:!0,allowNull:!0,ignoreOrigin:!0,enabled:!0}}})],ie.prototype,"ground",void 0),e([S("ground")],ie.prototype,"writeGround",null),e([f({type:o.ofType(Q),json:{write:!0}})],ie.prototype,"transportationNetworks",void 0),e([f({type:z,nonNullable:!0,json:{write:{ignoreOrigin:!0,writer:(e,t,r,i)=>{if(e.slides&&e.slides.length>0){const r={...i,isPresentation:!0};t.presentation=e.write({},r)}}}}})],ie.prototype,"presentation",void 0),e([f({type:H,nonNullable:!0,json:{write:{target:"initialState",isRequired:!0,ignoreOrigin:!0},default:()=>new H({viewingMode:"global",spatialReference:R.WebMercator})}})],ie.prototype,"initialViewProperties",void 0),e([b("initialViewProperties",["initialState.environment","initialState.viewpoint","spatialReference","viewingMode"])],ie.prototype,"readInitialViewProperties",null),e([f({type:R,json:{read:!1,write:{isRequired:!0,ignoreOrigin:!0}}})],ie.prototype,"spatialReference",null),e([f({type:["local","global"],json:{read:!1,write:{isRequired:!0,ignoreOrigin:!0}}})],ie.prototype,"viewingMode",null),e([f({type:M})],ie.prototype,"portalItem",void 0),e([f()],ie.prototype,"resourceInfo",void 0),ie=e([v("esri.WebScene")],ie);const oe=ie;export{oe as default};