@arcgis/core 5.1.0-next.121 → 5.1.0-next.123

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 (411) hide show
  1. package/applications/SceneViewer/layerUtils.d.ts +9 -1
  2. package/applications/SceneViewer/layerUtils.js +1 -1
  3. package/arcgisGlobal.d.ts +3 -0
  4. package/assets/esri/core/workers/RemoteClient.js +1 -1
  5. package/assets/esri/core/workers/chunks/{aef0ac417b282a90d214.js → 03e93c18efc67a25ca63.js} +1 -1
  6. package/assets/esri/core/workers/chunks/04895de94657e7f3d7e1.js +1 -0
  7. package/assets/esri/core/workers/chunks/{d35c475f004367e333eb.js → 06df187a116709f69952.js} +1 -1
  8. package/assets/esri/core/workers/chunks/0ecc1bc1686844cdd60e.js +1 -0
  9. package/assets/esri/core/workers/chunks/0f75c19d8e296a32e329.js +1 -0
  10. package/assets/esri/core/workers/chunks/174cc2e69e5b5a13d880.js +1 -0
  11. package/assets/esri/core/workers/chunks/{163ce1be8bfe20e77f97.js → 184d896fe66340129acd.js} +1 -1
  12. package/assets/esri/core/workers/chunks/18f980465db5a86153d1.js +1 -0
  13. package/assets/esri/core/workers/chunks/1996f0a930abdd97b855.js +1 -0
  14. package/assets/esri/core/workers/chunks/1c8436b27a3d3cde5cfc.js +1 -0
  15. package/assets/esri/core/workers/chunks/1cb1f125dccbf8c8cac9.js +1 -0
  16. package/assets/esri/core/workers/chunks/1d7e1bbd321d6f99776c.js +1 -0
  17. package/assets/esri/core/workers/chunks/1f289aa69dd6b6be534a.js +1 -0
  18. package/assets/esri/core/workers/chunks/{da29cf0e64065631a470.js → 24810c36ae09bb4e83dc.js} +1 -1
  19. package/assets/esri/core/workers/chunks/274b82cb183ddd0042f3.js +1 -0
  20. package/assets/esri/core/workers/chunks/2d2895f1fdf44d212a4d.js +1 -0
  21. package/assets/esri/core/workers/chunks/2dbc2fd0f2dde505c465.js +1 -0
  22. package/assets/esri/core/workers/chunks/2dbcdfdf000226bfe746.js +1 -0
  23. package/assets/esri/core/workers/chunks/2e6382d50bf012064eae.js +1 -0
  24. package/assets/esri/core/workers/chunks/30f1909c5ef1835b8507.js +1 -0
  25. package/assets/esri/core/workers/chunks/313773bd9c82d1858929.js +1 -0
  26. package/assets/esri/core/workers/chunks/{1c029b03ed836f393a50.js → 3248001d9dfb9153699e.js} +1 -1
  27. package/assets/esri/core/workers/chunks/3297658ccd8d4b9ce733.js +1 -0
  28. package/assets/esri/core/workers/chunks/{716a4d7e8b908b81870b.js → 32f26757e36704923286.js} +1 -1
  29. package/assets/esri/core/workers/chunks/3529afab0c2444275d91.js +1 -0
  30. package/assets/esri/core/workers/chunks/36dac6ab51d9dbdd091d.js +1 -0
  31. package/assets/esri/core/workers/chunks/390fda094fa8695d98cf.js +1 -0
  32. package/assets/esri/core/workers/chunks/39596715e84d0da2f803.js +30 -0
  33. package/assets/esri/core/workers/chunks/3b3f91a61e3f29af1fb2.js +1 -0
  34. package/assets/esri/core/workers/chunks/{f815106d439ff1f76e51.js → 3b837b512999e6ab24bc.js} +1 -1
  35. package/assets/esri/core/workers/chunks/3d20c86f1fe877bf884b.js +1 -0
  36. package/assets/esri/core/workers/chunks/3e65b4b18760bde8ceee.js +1 -0
  37. package/assets/esri/core/workers/chunks/3ff7aa216cd794d951e8.js +1 -0
  38. package/assets/esri/core/workers/chunks/{8e1865392681d390ab2e.js → 401ee7fa500adad77db1.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{60915a3708a34da1977e.js → 426156137f279d979ddd.js} +1 -1
  40. package/assets/esri/core/workers/chunks/434c1dd3f48e6f0802fc.js +1 -0
  41. package/assets/esri/core/workers/chunks/4517630bf869205bab87.js +1 -0
  42. package/assets/esri/core/workers/chunks/48f1c3a7c9f16d6896f6.js +1 -0
  43. package/assets/esri/core/workers/chunks/4e293c4006bdc7cc4c08.js +1 -0
  44. package/assets/esri/core/workers/chunks/5121768c70f1e03b685c.js +1 -0
  45. package/assets/esri/core/workers/chunks/52f354bf80ee5ab0379a.js +1 -0
  46. package/assets/esri/core/workers/chunks/538537f9bc866d9caa75.js +1 -0
  47. package/assets/esri/core/workers/chunks/58a7cdebc3d182c15ec6.js +1 -0
  48. package/assets/esri/core/workers/chunks/597aa39cdb5366ef9a74.js +1 -0
  49. package/assets/esri/core/workers/chunks/5bfae465872760e7af6d.js +1 -0
  50. package/assets/esri/core/workers/chunks/5cb274e5759f7ca0d4ed.js +1 -0
  51. package/assets/esri/core/workers/chunks/5d3ddbf94539cb4f493e.js +1 -0
  52. package/assets/esri/core/workers/chunks/5dd441db1e74dc9b56e9.js +1 -0
  53. package/assets/esri/core/workers/chunks/64114a7d2da162987958.js +1 -0
  54. package/assets/esri/core/workers/chunks/661f7e3f88727dc4801c.js +1 -0
  55. package/assets/esri/core/workers/chunks/6821462e5c1e9c76010a.js +1 -0
  56. package/assets/esri/core/workers/chunks/684d3cb4fb233180b2d0.js +1 -0
  57. package/assets/esri/core/workers/chunks/686c51fd2144e132783e.js +1 -0
  58. package/assets/esri/core/workers/chunks/{f02fe24177e56a7e42b2.js → 688fe64be39e9ac35ffd.js} +1 -1
  59. package/assets/esri/core/workers/chunks/69e98de578f467a35054.js +1 -0
  60. package/assets/esri/core/workers/chunks/6a3d207308b29651f397.js +1 -0
  61. package/assets/esri/core/workers/chunks/6aabde21b0b376d95888.js +1 -0
  62. package/assets/esri/core/workers/chunks/6d616b66fb32904b55a1.js +1 -0
  63. package/assets/esri/core/workers/chunks/{bcb021a167580bb1619f.js → 6ef3b8d67b498d655a99.js} +1 -1
  64. package/assets/esri/core/workers/chunks/6f125b4ed06c0022dee6.js +1 -0
  65. package/assets/esri/core/workers/chunks/6f4825c3ef1fe202ab82.js +1 -0
  66. package/assets/esri/core/workers/chunks/6f5d61f734ec40dafabb.js +1 -0
  67. package/assets/esri/core/workers/chunks/72d67cc3a382e83bf1a2.js +1 -0
  68. package/assets/esri/core/workers/chunks/78c53aeb0a408ab3c80c.js +1 -0
  69. package/assets/esri/core/workers/chunks/7b5c1030a7cf0f382cc4.js +1 -0
  70. package/assets/esri/core/workers/chunks/{542f5469f7b42026b24f.js → 7cb1afb32ec043e23ec2.js} +1 -1
  71. package/assets/esri/core/workers/chunks/7cee81c5aa1e6b7d2452.js +1 -0
  72. package/assets/esri/core/workers/chunks/7e89cb9ff615742e0894.js +1 -0
  73. package/assets/esri/core/workers/chunks/80f4f686ce403cb2693f.js +1 -0
  74. package/assets/esri/core/workers/chunks/{8477b5fdd99c6ac5c27b.js → 851705cf276eae8d4d37.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{b79428c5093614174e76.js → 8b0a01ebc86ab226f01f.js} +1 -1
  76. package/assets/esri/core/workers/chunks/{452c01cecbbd1e370098.js → 8f93e6fc11a158d4f1ee.js} +1 -1
  77. package/assets/esri/core/workers/chunks/93bd56396b8cd020f965.js +1 -0
  78. package/assets/esri/core/workers/chunks/{359d3acb3953e64e5a78.js → 93ceb74ac88ef460fe5f.js} +1 -1
  79. package/assets/esri/core/workers/chunks/957f7b8de4aecb6f644e.js +1 -0
  80. package/assets/esri/core/workers/chunks/96e46424c3fb1dd9ce3b.js +1 -0
  81. package/assets/esri/core/workers/chunks/976ab2be6c244768c08a.js +1 -0
  82. package/assets/esri/core/workers/chunks/985fceacd6ec137bd490.js +1 -0
  83. package/assets/esri/core/workers/chunks/{e785f76c1a75cb1d1e1f.js → 99101789035f1787c630.js} +1 -1
  84. package/assets/esri/core/workers/chunks/99e5296192ab98fd0d99.js +1 -0
  85. package/assets/esri/core/workers/chunks/9d5f7573bfe3b051daf1.js +1 -0
  86. package/assets/esri/core/workers/chunks/a043e8c49ac8e4d1d0a6.js +1 -0
  87. package/assets/esri/core/workers/chunks/a0c00c6fe60db49b3ab9.js +1 -0
  88. package/assets/esri/core/workers/chunks/a2247f4c3116efb16c4f.js +1 -0
  89. package/assets/esri/core/workers/chunks/a4245bd4e67a428fd835.js +1 -0
  90. package/assets/esri/core/workers/chunks/a442534ac0956a68b769.js +1 -0
  91. package/assets/esri/core/workers/chunks/a4e9a17dacbb52444d75.js +1 -0
  92. package/assets/esri/core/workers/chunks/{8bdca6f06c8b5fedd917.js → a5abba59e738c3240c22.js} +1 -1
  93. package/assets/esri/core/workers/chunks/{06858a0e1033e4a95337.js → a643a4751bbf4430bde2.js} +3 -3
  94. package/assets/esri/core/workers/chunks/aa118c1bcd922b8ac328.js +1 -0
  95. package/assets/esri/core/workers/chunks/aae0049c2c3e15a813e8.js +1 -0
  96. package/assets/esri/core/workers/chunks/ab62724b80b3c478a597.js +1 -0
  97. package/assets/esri/core/workers/chunks/ac33b10fe65f9e9e824f.js +1 -0
  98. package/assets/esri/core/workers/chunks/adc32f6b45ea3026fc34.js +1 -0
  99. package/assets/esri/core/workers/chunks/{7601278ebced0c0c31cf.js → af75e91b88e747aa76ac.js} +1 -1
  100. package/assets/esri/core/workers/chunks/b22a1c98271c2e4d8808.js +1 -0
  101. package/assets/esri/core/workers/chunks/b44cf254585210578eab.js +1 -0
  102. package/assets/esri/core/workers/chunks/{2bcd4d395bfe6a19ccc8.js → b606af35a4fb893b762c.js} +1 -1
  103. package/assets/esri/core/workers/chunks/{9f4681713f03365a2a53.js → b666027b9022fa346a79.js} +1 -1
  104. package/assets/esri/core/workers/chunks/b73c146d3e550eaf07eb.js +1 -0
  105. package/assets/esri/core/workers/chunks/bb867fec068e26bb0c8e.js +1 -0
  106. package/assets/esri/core/workers/chunks/c2a65de34f6a6c89c652.js +1 -0
  107. package/assets/esri/core/workers/chunks/c357c0a08b99c1e7f290.js +1 -0
  108. package/assets/esri/core/workers/chunks/{4a23b27bfbcfa08fd9a7.js → c3cf9e6e91f71c9cc5f3.js} +1 -1
  109. package/assets/esri/core/workers/chunks/c3ff2ff0a86a9143d7a5.js +1 -0
  110. package/assets/esri/core/workers/chunks/c60b4f2dd5fccdf362a7.js +1 -0
  111. package/assets/esri/core/workers/chunks/c6d0b4875b6b8d6bc25a.js +1 -0
  112. package/assets/esri/core/workers/chunks/c755bfd90c9654170e67.js +1 -0
  113. package/assets/esri/core/workers/chunks/c80fc1b3048e8d58a1f8.js +1 -0
  114. package/assets/esri/core/workers/chunks/c911f0b5bdd43b66b731.js +1 -0
  115. package/assets/esri/core/workers/chunks/c9a4601073e1a3eee9d0.js +1 -0
  116. package/assets/esri/core/workers/chunks/ccffaba50674adba7a0f.js +1 -0
  117. package/assets/esri/core/workers/chunks/{24646a1176ce34039155.js → cdf6ad970dc1893dac58.js} +1 -1
  118. package/assets/esri/core/workers/chunks/d13e003c9293cb7e2852.js +1 -0
  119. package/assets/esri/core/workers/chunks/d24e027bb8b2c09f25c8.js +1 -0
  120. package/assets/esri/core/workers/chunks/d2df8c328054dc6cb7b7.js +1 -0
  121. package/assets/esri/core/workers/chunks/{22ac25e8f730218d7e69.js → d36b407f5ad5eabac530.js} +10 -14
  122. package/assets/esri/core/workers/chunks/d52864823067e57a719a.js +1 -0
  123. package/assets/esri/core/workers/chunks/d5c35a75fd4c41def420.js +1 -0
  124. package/assets/esri/core/workers/chunks/d7be278aed1fb37ad5ec.js +1 -0
  125. package/assets/esri/core/workers/chunks/d9d0a07245ee5117d2a0.js +1 -0
  126. package/assets/esri/core/workers/chunks/da1e8b338ab9fe9e0a8e.js +1 -0
  127. package/assets/esri/core/workers/chunks/dd920a6f6422fa213eba.js +1 -0
  128. package/assets/esri/core/workers/chunks/e1505ec80b068011bdc5.js +1 -0
  129. package/assets/esri/core/workers/chunks/e16b7ff4bf24fb99f7ea.js +1 -0
  130. package/assets/esri/core/workers/chunks/e1bf87077541da6853c6.js +1 -0
  131. package/assets/esri/core/workers/chunks/e279bcbe4f10e87bde6c.js +1 -0
  132. package/assets/esri/core/workers/chunks/e4406baf206b9e4c7e4f.js +1 -0
  133. package/assets/esri/core/workers/chunks/e499252cb52f7aed49a0.js +1 -0
  134. package/assets/esri/core/workers/chunks/{e178cd0e9178d6716410.js → e5837e5ac6ef761f26a2.js} +1 -1
  135. package/assets/esri/core/workers/chunks/e6a7272b59a4c2e34dca.js +1 -0
  136. package/assets/esri/core/workers/chunks/e912b515704e20313e53.js +1 -0
  137. package/assets/esri/core/workers/chunks/eabeaab5c4810f999a4d.js +1 -0
  138. package/assets/esri/core/workers/chunks/ec1841e6e498d54012eb.js +1 -0
  139. package/assets/esri/core/workers/chunks/ec723f8777b935c5e81a.js +1 -0
  140. package/assets/esri/core/workers/chunks/ed3d16a5b4084ef61f8a.js +1 -0
  141. package/assets/esri/core/workers/chunks/ef46ef4f0ee9f2aeaa4a.js +1 -0
  142. package/assets/esri/core/workers/chunks/efb4aa5886730ea377bd.js +1 -0
  143. package/assets/esri/core/workers/chunks/{485d20152495c27b8074.js → f2a268c69f2a5566381b.js} +1 -1
  144. package/assets/esri/core/workers/chunks/f590db684d88e72bd79b.js +1 -0
  145. package/assets/esri/core/workers/chunks/{de3d8f83f3ea09b315a0.js → f622ae3887c85535e8ab.js} +1 -1
  146. package/assets/esri/core/workers/chunks/f69df22a5c64389ebe28.js +1 -0
  147. package/assets/esri/core/workers/chunks/{f60292d97bcdbf19165b.js → f6d047358d14328f3622.js} +1 -1
  148. package/assets/esri/core/workers/chunks/f7fca88d120d45bb782a.js +1 -0
  149. package/assets/esri/core/workers/chunks/f819854098d63fe4ccdb.js +1 -0
  150. package/assets/esri/core/workers/chunks/f8f3579d0c1b65762902.js +1 -0
  151. package/assets/esri/core/workers/chunks/f98118127469449ca145.js +1 -0
  152. package/assets/esri/core/workers/chunks/{5abe34bb0110694f7b42.js → faad127dc07e54e7f6d1.js} +1 -1
  153. package/assets/esri/core/workers/chunks/fb6605be0c5e36785543.js +1 -0
  154. package/assets/esri/core/workers/chunks/fbe7dae0b4bf2d172487.js +1 -0
  155. package/assets/esri/core/workers/chunks/fd70a25ffdf2cc6c5be2.js +1 -0
  156. package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
  157. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  158. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  159. package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
  160. package/chunks/GaussianSplatComposition.glsl.js +1 -1
  161. package/chunks/GlobalIllumination.glsl.js +1 -1
  162. package/chunks/GlowComposition.glsl.js +2 -2
  163. package/chunks/OITBlend.glsl.js +3 -3
  164. package/chunks/OITBlendEmission.glsl.js +2 -2
  165. package/chunks/OITDimOpaque.glsl.js +2 -2
  166. package/chunks/SlicePlaneMaterial.glsl.js +4 -4
  167. package/chunks/bundle2.js +1 -1
  168. package/chunks/lyr3DMain.js +1 -1
  169. package/chunks/lyr3DWorker.js +1 -1
  170. package/chunks/vxlLayer.js +1 -1
  171. package/config.js +1 -1
  172. package/core/has.js +1 -1
  173. package/core/sql.d.ts +1 -1
  174. package/geometry/Extent.d.ts +0 -13
  175. package/geometry/Geometry.d.ts +10 -8
  176. package/geometry/Point.d.ts +15 -71
  177. package/graphic/AnnotationGraphicOrigin.d.ts +34 -0
  178. package/graphic/AnnotationGraphicOrigin.js +2 -0
  179. package/graphic/DimensionFeatureGraphicOrigin.d.ts +34 -0
  180. package/graphic/DimensionFeatureGraphicOrigin.js +2 -0
  181. package/identity/IdentityManagerBase.js +1 -1
  182. package/interfaces.d.ts +8 -0
  183. package/kernel.js +1 -1
  184. package/layers/AnnotationLayer.d.ts +263 -32
  185. package/layers/AnnotationLayer.js +1 -1
  186. package/layers/DimensionFeatureLayer.d.ts +263 -32
  187. package/layers/DimensionFeatureLayer.js +1 -1
  188. package/layers/FeatureLayer.d.ts +1 -1
  189. package/layers/GeoJSONLayer.d.ts +7 -7
  190. package/layers/ParquetLayer.d.ts +22 -2
  191. package/layers/SceneLayer.d.ts +4 -2
  192. package/layers/SceneLayer.js +1 -1
  193. package/layers/catalog/CatalogFootprintLayer.d.ts +40 -10
  194. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  195. package/layers/graphics/sources/parquet/ParquetFileInfo.js +2 -0
  196. package/layers/graphics/sources/parquet/ParquetFileStatistics.js +2 -0
  197. package/layers/graphics/sources/parquet/PortalParquetFileProvider.js +1 -1
  198. package/layers/graphics/sources/parquet/PortalParquetLayerFileProvider.js +1 -1
  199. package/layers/graphics/sources/parquet/UrlsFileProvider.js +1 -1
  200. package/layers/graphics/sources/parquet/createFileProvider.js +1 -1
  201. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  202. package/layers/mixins/FeatureLayerBase.d.ts +40 -16
  203. package/layers/mixins/TemporalLayer.d.ts +4 -2
  204. package/layers/support/AnnotationSublayer.d.ts +44 -0
  205. package/layers/support/AnnotationSublayer.js +2 -0
  206. package/layers/support/GeometryEncodingLocation.d.ts +1 -1
  207. package/layers/support/GeometryEncodingWkb.d.ts +3 -2
  208. package/layers/support/ParquetFilesData.d.ts +13 -3
  209. package/layers/support/ParquetPortalItemData.d.ts +12 -1
  210. package/layers/support/arcgisLayers.js +1 -1
  211. package/layers/support/commonProperties.js +1 -1
  212. package/layers/support/featureLayerUtils.js +1 -1
  213. package/layers/support/layerUtils.js +1 -1
  214. package/layers/support/parquetUtils.js +1 -1
  215. package/layers/support/tiles3DUtils.js +1 -1
  216. package/libs/parquet/parquet.js +1 -1
  217. package/package.json +1 -1
  218. package/request/types.d.ts +18 -20
  219. package/rest/support/Query.d.ts +1 -0
  220. package/support/revision.js +1 -1
  221. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  222. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  223. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityPolygonShader.js +1 -1
  224. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  225. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ComplexOutlineFillShader.js +1 -1
  226. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HeatmapAccumulateShader.js +1 -1
  227. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  228. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
  229. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  230. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  231. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  232. package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
  233. package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +1 -1
  234. package/views/2d/layers/features/sources/strategies/ParquetSnapshotLoadStrategy.js +1 -1
  235. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  236. package/views/2d/layers/graphics/GraphicStore.js +1 -1
  237. package/views/3d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles3D.js +1 -1
  238. package/views/3d/layers/FlowSubView3D.js +1 -1
  239. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  240. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  241. package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
  242. package/views/3d/terrain/OverlayManager.js +1 -1
  243. package/views/3d/terrain/TerrainRenderer.js +1 -1
  244. package/views/3d/webgl/RenderNode.d.ts +25 -4
  245. package/views/3d/webgl-engine/collections/Component/ComponentObject.js +1 -1
  246. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  247. package/views/3d/webgl-engine/collections/Component/RenderSubmitSystem.js +1 -1
  248. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  249. package/views/3d/webgl-engine/core/shaderLibrary/util/EmissionDimming.glsl.js +1 -1
  250. package/views/3d/webgl-engine/effects/RenderPlugin.js +1 -1
  251. package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
  252. package/views/3d/webgl-engine/effects/emissive/emissions.js +1 -1
  253. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  254. package/views/3d/webgl-engine/effects/transparency/OITBlend.js +1 -1
  255. package/views/3d/webgl-engine/effects/transparency/OITBlendTechniqueConfiguration.js +1 -1
  256. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  257. package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
  258. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  259. package/views/3d/webgl-engine/lib/RendererBase.js +1 -1
  260. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  261. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  262. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  263. package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +2 -2
  264. package/views/3d/webgl-engine/shaders/SlicePlaneMaterial.glsl.js +1 -1
  265. package/views/3d/webgl-engine/shaders/ToneMapping.glsl.js +6 -10
  266. package/views/layers/FeatureLikeLayerView.d.ts +25 -1
  267. package/views/layers/FeatureLikeLayerView.js +1 -1
  268. package/views/types.d.ts +1 -1
  269. package/views/webgl/RenderingContext.js +1 -1
  270. package/views/webgl/renderState.js +1 -1
  271. package/webdoc/support/webdocSaveUtils.js +1 -1
  272. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.d.ts +10 -2
  273. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  274. package/widgets/BatchAttributeForm/ReactiveContingentValuesManager.js +1 -1
  275. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  276. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.d.ts +2 -6
  277. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.js +1 -1
  278. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  279. package/widgets/BatchAttributeForm/inputs/RelationshipElementInput.js +1 -1
  280. package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
  281. package/widgets/BatchAttributeForm/inputs/types.d.ts +8 -1
  282. package/widgets/BatchAttributeForm/interfaceUtils.js +1 -1
  283. package/widgets/BatchAttributeForm/rendered-content/RelationshipDetails.js +1 -1
  284. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  285. package/widgets/BatchAttributeForm.d.ts +9 -1
  286. package/widgets/BatchAttributeForm.js +1 -1
  287. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  288. package/widgets/FeatureTable/Grid/Column.js +1 -1
  289. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  290. package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
  291. package/widgets/FeatureTable/Grid/GroupColumn.js +1 -1
  292. package/widgets/FeatureTable.js +1 -1
  293. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  294. package/widgets/Print/PrintViewModel.js +1 -1
  295. package/widgets/support/ContingentValuesManager.js +1 -1
  296. package/assets/esri/core/workers/chunks/02aaeaa988e9e7d65a7f.js +0 -1
  297. package/assets/esri/core/workers/chunks/03354ad3d74d858173b4.js +0 -1
  298. package/assets/esri/core/workers/chunks/09a4139fc6d069ab6928.js +0 -1
  299. package/assets/esri/core/workers/chunks/0a510acf50915e00c62b.js +0 -1
  300. package/assets/esri/core/workers/chunks/0a780a883abfcdf0b900.js +0 -1
  301. package/assets/esri/core/workers/chunks/0fbf9bf52ecb4cd8293b.js +0 -1
  302. package/assets/esri/core/workers/chunks/119d352dd586f2bb61ec.js +0 -1
  303. package/assets/esri/core/workers/chunks/130784a27661de6b52a5.js +0 -1
  304. package/assets/esri/core/workers/chunks/145364aa20b4435294c2.js +0 -1
  305. package/assets/esri/core/workers/chunks/1595dc499a06b23b6a96.js +0 -1
  306. package/assets/esri/core/workers/chunks/16713986893adfbc9331.js +0 -1
  307. package/assets/esri/core/workers/chunks/179c9fe4ac83b42e5976.js +0 -1
  308. package/assets/esri/core/workers/chunks/1c64e10f966e26af6fed.js +0 -1
  309. package/assets/esri/core/workers/chunks/201007cf1a91e2b126fc.js +0 -1
  310. package/assets/esri/core/workers/chunks/20d0adc678f11981059c.js +0 -1
  311. package/assets/esri/core/workers/chunks/227eff8aa4a6f5f03bc2.js +0 -1
  312. package/assets/esri/core/workers/chunks/233ff588798c8a5eedf4.js +0 -1
  313. package/assets/esri/core/workers/chunks/238478cfe493fd4a6100.js +0 -1
  314. package/assets/esri/core/workers/chunks/24647e7424798dccdaf5.js +0 -1
  315. package/assets/esri/core/workers/chunks/249616ea2d90d40a8299.js +0 -1
  316. package/assets/esri/core/workers/chunks/24d9e4f1c7b8ff0d2cce.js +0 -1
  317. package/assets/esri/core/workers/chunks/2b36a54927f5a7281da3.js +0 -1
  318. package/assets/esri/core/workers/chunks/2c8584ec1c3c9fd5aba2.js +0 -1
  319. package/assets/esri/core/workers/chunks/2d374cc8c54a722a7afe.js +0 -1
  320. package/assets/esri/core/workers/chunks/2e11b4e9d66474a60064.js +0 -1
  321. package/assets/esri/core/workers/chunks/2fa080539d039c92ce08.js +0 -1
  322. package/assets/esri/core/workers/chunks/3109b05fe4fc40d4f25b.js +0 -1
  323. package/assets/esri/core/workers/chunks/31442f25d550ead58fc4.js +0 -1
  324. package/assets/esri/core/workers/chunks/32323b0e0fcecd8f640e.js +0 -1
  325. package/assets/esri/core/workers/chunks/330da3828eefd8d72d3f.js +0 -1
  326. package/assets/esri/core/workers/chunks/33e0130e6a40fc768978.js +0 -1
  327. package/assets/esri/core/workers/chunks/343ba5ea459e96ba79c6.js +0 -1
  328. package/assets/esri/core/workers/chunks/388e71e8f2ec41bfa5a9.js +0 -1
  329. package/assets/esri/core/workers/chunks/3a5c1c501808352857bd.js +0 -1
  330. package/assets/esri/core/workers/chunks/3aacaa1be5efeac23a37.js +0 -1
  331. package/assets/esri/core/workers/chunks/3b765a8cac9e92f644f2.js +0 -1
  332. package/assets/esri/core/workers/chunks/3bf6d55511cd7722eb93.js +0 -1
  333. package/assets/esri/core/workers/chunks/3e012cd3ca4451f89f59.js +0 -1
  334. package/assets/esri/core/workers/chunks/40910c69307e2d2d3f28.js +0 -1
  335. package/assets/esri/core/workers/chunks/40c4e14e7bb505ef10a3.js +0 -1
  336. package/assets/esri/core/workers/chunks/4193c0cca441be05c80e.js +0 -1
  337. package/assets/esri/core/workers/chunks/423a9882abd4a6dadf86.js +0 -1
  338. package/assets/esri/core/workers/chunks/428561df7ba6f02e2d80.js +0 -1
  339. package/assets/esri/core/workers/chunks/45323491f9005629c602.js +0 -1
  340. package/assets/esri/core/workers/chunks/46d0a25d33b5b328cfce.js +0 -1
  341. package/assets/esri/core/workers/chunks/47dd2bfecc5c4b5f10f0.js +0 -1
  342. package/assets/esri/core/workers/chunks/4845df00f6ebcce6ea3e.js +0 -1
  343. package/assets/esri/core/workers/chunks/4a9dd9f8aa98882218f3.js +0 -1
  344. package/assets/esri/core/workers/chunks/4bfffdfbe6d467f143a4.js +0 -1
  345. package/assets/esri/core/workers/chunks/518046d2b95a7590a092.js +0 -1
  346. package/assets/esri/core/workers/chunks/54dad475dc806a38c287.js +0 -1
  347. package/assets/esri/core/workers/chunks/552945a73a95cd2a9f54.js +0 -1
  348. package/assets/esri/core/workers/chunks/5553279998ae07b60f5f.js +0 -1
  349. package/assets/esri/core/workers/chunks/58155f24f8ed6aca7a21.js +0 -1
  350. package/assets/esri/core/workers/chunks/5838f46d341d2fde42ee.js +0 -1
  351. package/assets/esri/core/workers/chunks/592a599f514de373dead.js +0 -1
  352. package/assets/esri/core/workers/chunks/597eb2e040c86cc3c4fc.js +0 -1
  353. package/assets/esri/core/workers/chunks/5aba23584e0b230c75f5.js +0 -1
  354. package/assets/esri/core/workers/chunks/5f9bacee6fbf9ac1bca0.js +0 -1
  355. package/assets/esri/core/workers/chunks/62206d5d497b95fc4caf.js +0 -1
  356. package/assets/esri/core/workers/chunks/624b1bb269744142b835.js +0 -1
  357. package/assets/esri/core/workers/chunks/62fc3c367f736c73b0d7.js +0 -1
  358. package/assets/esri/core/workers/chunks/643c33a98f2d30a92001.js +0 -1
  359. package/assets/esri/core/workers/chunks/64daa2a714e59d22bbd4.js +0 -1
  360. package/assets/esri/core/workers/chunks/6a5356ebed70e0f8f979.js +0 -1
  361. package/assets/esri/core/workers/chunks/6c9933f948efd7923aa1.js +0 -1
  362. package/assets/esri/core/workers/chunks/7014e73dfd3c8baa704c.js +0 -1
  363. package/assets/esri/core/workers/chunks/76589434d573111a8fb4.js +0 -1
  364. package/assets/esri/core/workers/chunks/767ea5b455b3823afd09.js +0 -1
  365. package/assets/esri/core/workers/chunks/77859a61d059738d057f.js +0 -1
  366. package/assets/esri/core/workers/chunks/78aa5bc6af2758da20d0.js +0 -1
  367. package/assets/esri/core/workers/chunks/7b564226def99fcf79d8.js +0 -1
  368. package/assets/esri/core/workers/chunks/7bbffe07e62897928773.js +0 -1
  369. package/assets/esri/core/workers/chunks/7cadfd7444a2a05cf2fb.js +0 -1
  370. package/assets/esri/core/workers/chunks/823789261ca3338f0fa8.js +0 -1
  371. package/assets/esri/core/workers/chunks/8419934bec7723b0feef.js +0 -1
  372. package/assets/esri/core/workers/chunks/84b0b6e099d949e0fea5.js +0 -1
  373. package/assets/esri/core/workers/chunks/866709e1e55796999f3c.js +0 -1
  374. package/assets/esri/core/workers/chunks/92ab5886aa2d8b9b179f.js +0 -1
  375. package/assets/esri/core/workers/chunks/9a6e62ef984e9c5babc4.js +0 -1
  376. package/assets/esri/core/workers/chunks/9b676606bf839b7aa433.js +0 -1
  377. package/assets/esri/core/workers/chunks/9dcfaca1f4fa8c8026ac.js +0 -1
  378. package/assets/esri/core/workers/chunks/9f23a61c60949459c14f.js +0 -30
  379. package/assets/esri/core/workers/chunks/a03c4c0bf138734a002e.js +0 -1
  380. package/assets/esri/core/workers/chunks/a0fa60a24e58f7a47e41.js +0 -1
  381. package/assets/esri/core/workers/chunks/a261f4c22224511fdfff.js +0 -1
  382. package/assets/esri/core/workers/chunks/a2ac139d0975085279a6.js +0 -1
  383. package/assets/esri/core/workers/chunks/a806ac351ef5da04c250.js +0 -1
  384. package/assets/esri/core/workers/chunks/ab94c9f62462d7a98f6a.js +0 -1
  385. package/assets/esri/core/workers/chunks/abdb05754c50776c3edd.js +0 -1
  386. package/assets/esri/core/workers/chunks/ad488985824fbb830ed6.js +0 -1
  387. package/assets/esri/core/workers/chunks/b0ac4b0b7aec70cfe6eb.js +0 -1
  388. package/assets/esri/core/workers/chunks/b23009d9f8eb7c20ce45.js +0 -1
  389. package/assets/esri/core/workers/chunks/bfbd1ca28ed2f263e58f.js +0 -1
  390. package/assets/esri/core/workers/chunks/c1b6de0d728d25d7905a.js +0 -1
  391. package/assets/esri/core/workers/chunks/c44be4aaba829e6d149d.js +0 -1
  392. package/assets/esri/core/workers/chunks/ca6907e14b1dde4d5c07.js +0 -1
  393. package/assets/esri/core/workers/chunks/ce0e627a5e1cb78adce8.js +0 -1
  394. package/assets/esri/core/workers/chunks/cf7acf5acb6d322fd996.js +0 -1
  395. package/assets/esri/core/workers/chunks/d21480b078ec9680d4c4.js +0 -1
  396. package/assets/esri/core/workers/chunks/d427d8091f18aa7b3867.js +0 -1
  397. package/assets/esri/core/workers/chunks/d81291dac1932350eccd.js +0 -1
  398. package/assets/esri/core/workers/chunks/da3c54e27a808f4fcc18.js +0 -1
  399. package/assets/esri/core/workers/chunks/dc6d50e1097a920ff820.js +0 -1
  400. package/assets/esri/core/workers/chunks/dd58286dde3b20356f84.js +0 -1
  401. package/assets/esri/core/workers/chunks/df412ef1b6dff43970fd.js +0 -1
  402. package/assets/esri/core/workers/chunks/dfeddb7b17fa9eaae64c.js +0 -1
  403. package/assets/esri/core/workers/chunks/e4e0c5a45cf32973d5d5.js +0 -1
  404. package/assets/esri/core/workers/chunks/e638391801ad83fe4a68.js +0 -1
  405. package/assets/esri/core/workers/chunks/e755477dc78e9d6038d4.js +0 -1
  406. package/assets/esri/core/workers/chunks/e7712467db46e1385cf4.js +0 -1
  407. package/assets/esri/core/workers/chunks/ed2cb60e4f17f46fb78d.js +0 -1
  408. package/assets/esri/core/workers/chunks/edb55329305becdb204f.js +0 -1
  409. package/assets/esri/core/workers/chunks/f1fb2f12371f4c562079.js +0 -1
  410. package/assets/esri/core/workers/chunks/f3dfe1bd1146a6927407.js +0 -1
  411. package/assets/esri/core/workers/chunks/ff48334528d2554db4fe.js +0 -1
@@ -0,0 +1,34 @@
1
+ import type GraphicOrigin from "./GraphicOrigin.js";
2
+ import type DimensionFeatureLayer from "../layers/DimensionFeatureLayer.js";
3
+
4
+ /**
5
+ * Provides information about the [DimensionFeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionFeatureLayer/) from which a graphic originates.
6
+ * The [origin](https://developers.arcgis.com/javascript/latest/references/core/Graphic/#origin) information may be available when a graphic is returned from methods such as
7
+ * [hitTest()](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#hitTest) or [queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionFeatureLayer/#queryFeatures).
8
+ *
9
+ * @since 5.1
10
+ * @see [MapView.hitTest()](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#hitTest)
11
+ * @see [SceneView.hitTest()](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#hitTest)
12
+ * @see [DimensionFeatureLayer.queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionFeatureLayer/#queryFeatures)
13
+ * @example
14
+ * // get a point from view's click event
15
+ * view.on("click", async (event) => {
16
+ * // Search for all features only on included layer at the clicked location
17
+ * const response = await view.hitTest(event, {include: layer});
18
+ * // if graphics are returned from layer, get the layer id from graphic origin
19
+ * if (response.results.length > 0) {
20
+ * const originId = response.results[0].graphic?.origin?.layer?.id;
21
+ * }
22
+ * });
23
+ */
24
+ export default class DimensionFeatureGraphicOrigin extends GraphicOrigin {
25
+ constructor(layer: DimensionFeatureLayer);
26
+ /** A layer from which a graphic originates. */
27
+ readonly layer: DimensionFeatureLayer;
28
+ /**
29
+ * Indicates the type of layer the graphic originated from.
30
+ *
31
+ * @default "dimension-feature"
32
+ */
33
+ readonly type: DimensionFeatureLayer["type"];
34
+ }
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
+ import{idFieldsProviderSymbol as r}from"./getIdFieldsProvider.js";import{popupProviderSymbol as e}from"./getPopupProvider.js";import{getSliceableContainerSymbol as t}from"./getSliceableContainer.js";import i from"./GraphicOrigin.js";class s extends i{get[e](){return this.layer}get[r](){return this.layer}get[t](){return this.layer}constructor(r){super(),this.type="dimension-feature",this.layer=r}get id(){return this.layer.id}}export{s as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import e from"../config.js";import t from"../request.js";import r from"../core/Error.js";import{Evented as s}from"../core/Evented.js";import{on as i}from"../core/events.js";import{fixJson as n}from"../core/lang.js";import{getDeepValue as o}from"../core/object.js";import{onAbort as a,isAborted as h}from"../core/promiseUtils.js";import{urlToObject as l,hasSameOrigin as c,Url as d,queryToObject as u,base64UrlEncode as p,objectToQuery as _,normalize as f,getProxyRule as g,makeAbsolute as m,changeDomain as v,addQueryParameters as S}from"../core/urlUtils.js";import w from"./Credential.js";import I from"./IdentityModal.js";import k from"./OAuthCredential.js";import A from"./OAuthInfo.js";import U from"./ServerInfo.js";import{isSecureProxyService as y,normalizeArcGISOnlineOrgDomain as P,parseKnownArcGISOnlineDomain as x}from"../portal/support/urlUtils.js";const O={},T=e=>{const t=new d(e.owningSystemUrl).host,r=new d(e.server).host,s=/.+\.arcgis\.com$/i;return s.test(t)&&s.test(r)},R=(e,t)=>!!(T(e)&&t&&t.some(t=>t.test(e.server)));let C=null,D=null;try{C=window.localStorage,D=window.sessionStorage}catch{}class b extends s{constructor(){super(),this._portalConfig=globalThis.esriGeowConfig,this.serverInfos=[],this.oAuthInfos=[],this.credentials=[],this._soReqs=[],this._xoReqs=[],this._portals=[],this._defaultOAuthInfo=null,this._defaultTokenValidity=60,this.dialog=null,this.tokenValidity=null,this.normalizeWebTierAuth=!1,this._appOrigin="null"!==window.origin?window.origin:window.location.origin,this._appUrlObj=l(window.location.href),this._busy=null,this._rejectOnPersistedPageShow=!1,this._oAuthLocationParams=null,this._gwTokenUrl="/sharing/rest/generateToken",this._agsRest="/rest/services",this._agsPortal=/\/sharing(\/|$)/i,this._agsAdmin=/(https?:\/\/[^/]+\/[^/]+)\/admin\/?(\/.*)?$/i,this._adminSvcs=/\/rest\/admin\/services(\/|$)/i,this._gwDomains=[{regex:/^https?:\/\/www\.arcgis\.com/i,customBaseUrl:"maps.arcgis.com",tokenServiceUrl:"https://www.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/(?:dev|[a-z\d-]+\.mapsdev)\.arcgis\.com/i,customBaseUrl:"mapsdev.arcgis.com",tokenServiceUrl:"https://dev.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/(?:devext|[a-z\d-]+\.mapsdevext)\.arcgis\.com/i,customBaseUrl:"mapsdevext.arcgis.com",tokenServiceUrl:"https://devext.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/(?:qaext|[a-z\d-]+\.mapsqa)\.arcgis\.com/i,customBaseUrl:"mapsqa.arcgis.com",tokenServiceUrl:"https://qaext.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/[a-z\d-]+\.maps\.arcgis\.com/i,customBaseUrl:"maps.arcgis.com",tokenServiceUrl:"https://www.arcgis.com/sharing/rest/generateToken"}],this._legacyFed=[],this._regexSDirUrl=/http.+\/rest\/services\/?/gi,this._regexServerType=/(\/(FeatureServer|GPServer|GeoDataServer|GeocodeServer|GeoenrichmentServer|GeometryServer|GlobeServer|ImageServer|KnowledgeGraphServer|MapServer|MissionServer|MobileServer|NAServer|NetworkDiagramServer|OGCFeatureServer|ParcelFabricServer|RelationalCatalogServer|SceneServer|StreamServer|UtilityNetworkServer|ValidationServer|VectorTileServer|VersionManagementServer|VideoServer|3DTilesServer)).*/gi,this._gwUser=/http.+\/users\/([^/]+).*/i,this._gwItem=/http.+\/items\/([^/]+).*/i,this._gwGroup=/http.+\/groups\/([^/]+).*/i,this._rePortalTokenSvc=/\/sharing(\/rest)?\/generatetoken/i,this._createDefaultOAuthInfo=!0,this._hasTestedIfAppIsOnPortal=!1,this._getPlatformSelfError=null,this._getOAuthLocationParams(),window.addEventListener("pageshow",e=>{this._pageShowHandler(e)})}registerServers(e){const t=this.serverInfos;t?(e=e.filter(e=>!this.findServerInfo(e.server)),this.serverInfos=t.concat(e)):this.serverInfos=e,e.forEach(e=>{e.owningSystemUrl&&this._portals.push(e.owningSystemUrl),e.hasPortal&&this._portals.push(e.server)})}registerOAuthInfos(e){const t=this.oAuthInfos;if(t){for(const r of e){const e=this.findOAuthInfo(r.portalUrl);e&&t.splice(t.indexOf(e),1)}this.oAuthInfos=t.concat(e)}else this.oAuthInfos=e}registerToken(e){e={...e};const t=this._sanitizeUrl(e.server),r=this._isServerRsrc(t);let s,i=this.findServerInfo(t),n=!0;i||(i=new U,i.server=this._getServerInstanceRoot(t),r?i.hasServer=!0:(i.tokenServiceUrl=this._getTokenSvcUrl(t),i.hasPortal=!0),this.registerServers([i])),s=this._findCredential(t),s?(delete e.server,Object.assign(s,e),n=!1):(s=new w({userId:e.userId,server:i.server??void 0,token:e.token,expires:e.expires,ssl:e.ssl,scope:r?"server":"portal"}),s.resources=[t],this.credentials.push(s)),s.emitTokenChange(!1),n||s.refreshServerTokens()}toJSON(){return n({serverInfos:this.serverInfos.map(e=>e.toJSON()),oAuthInfos:this.oAuthInfos.map(e=>e.toJSON()),credentials:this.credentials.map(e=>e.toJSON())})}initialize(e){if(!e)return;"string"==typeof e&&(e=JSON.parse(e));const t=e.serverInfos,r=e.oAuthInfos,s=e.credentials;if(t){const e=[];t.forEach(t=>{t.server&&t.tokenServiceUrl&&e.push(t.declaredClass?t:new U(t))}),e.length&&this.registerServers(e)}if(r){const e=[];r.forEach(t=>{t.appId&&e.push(t.declaredClass?t:new A(t))}),e.length&&this.registerOAuthInfos(e)}s&&s.forEach(e=>{e.server&&e.token&&e.expires&&e.expires>Date.now()&&((e=e.declaredClass?e:new w(e)).emitTokenChange(),this.credentials.push(e))})}findServerInfo(e){let t;e=this._sanitizeUrl(e);for(const r of this.serverInfos)if(this._hasSameServerInstance(r.server,e)){t=r;break}return t}findOAuthInfo(e){let t;e=this._sanitizeUrl(e);for(const r of this.oAuthInfos)if(this._hasSameServerInstance(r.portalUrl,e)){t=r;break}return t}findCredential(e,t){if(!e)return;let r;e=this._sanitizeUrl(e);const s=this._isServerRsrc(e)?"server":"portal";if(t){for(const i of this.credentials)if(this._hasSameServerInstance(i.server,e)&&t===i.userId&&i.scope===s){r=i;break}}else for(const i of this.credentials)if(this._hasSameServerInstance(i.server,e)&&-1!==this._getIdenticalSvcIdx(e,i)&&i.scope===s){r=i;break}return r}getCredential(e,t){let s,i=!1,n=!0;t&&(i=!(!t.token&&!t.credential),s=t.error,n=!1!==t.prompt),t={...t},e=this._sanitizeUrl(e);const o=new AbortController,l=Promise.withResolvers();if(t.signal&&a(t.signal,()=>{o.abort()}),a(o,()=>{l.reject(new r("identity-manager:user-aborted","ABORTED"))}),h(o))return l.promise;t.signal=o.signal;const d=this._isAdminResource(e),u=i?this.findCredential(e):null;let p;if(u&&498===s?.details?.httpStatus)u.destroy();else if(u)return p=new r("identity-manager:not-authorized","You are currently signed in as: '"+u.userId+"'. You do not have access to this resource: "+e,{error:s}),l.reject(p),l.promise;const _=this._findCredential(e,t);if(_)return l.resolve(_),l.promise;let f=this.findServerInfo(e);if(f)!f.hasPortal&&f.server&&f.owningSystemUrl&&this._hasSameServerInstance(f.server,f.owningSystemUrl)&&(f.hasPortal=!0),!f.hasServer&&this._isServerRsrc(e)&&(f._restInfoPms=this._getTokenSvcUrl(e),f.hasServer=!0);else{const t=this._getTokenSvcUrl(e);if(!t)return p=new r("identity-manager:unknown-resource","Unknown resource - could not find token service endpoint."),l.reject(p),l.promise;f=new U,f.server=this._getServerInstanceRoot(e),"string"==typeof t?(f.tokenServiceUrl=t,f.hasPortal=!0):(f._restInfoPms=t,f.hasServer=!0),this.registerServers([f])}return f.hasPortal&&void 0===f._selfReq&&(n||c(f.tokenServiceUrl,this._appOrigin)||this._gwDomains.some(e=>e.tokenServiceUrl===f.tokenServiceUrl))&&(f._selfReq={owningTenant:t?.owningTenant,selfDfd:this._getPortalSelf(f.tokenServiceUrl.replace(this._rePortalTokenSvc,"/sharing/rest/portals/self"),e)}),this._enqueue(e,f,t,l,d)}getResourceName(e){return this._isRESTService(e)?e.replace(this._regexSDirUrl,"").replace(this._regexServerType,"")||"":this._gwUser.test(e)&&e.replace(this._gwUser,"$1")||this._gwItem.test(e)&&e.replace(this._gwItem,"$1")||this._gwGroup.test(e)&&e.replace(this._gwGroup,"$1")||""}generateToken(e,s,i){const n=this._rePortalTokenSvc.test(e.tokenServiceUrl),o=new d(this._appOrigin),a=e.shortLivedTokenValidity;let h,l,u,p,_,f,g,m;s&&(m=this.tokenValidity||a||this._defaultTokenValidity,m>a&&a>0&&(m=a)),i&&(h=i.isAdmin,l=i.serverUrl,u=i.token,f=i.signal,g=i.ssl,e.customParameters=i.customParameters),h?p=e.adminTokenServiceUrl:(p=e.tokenServiceUrl,_=new d(p.toLowerCase()),e.webTierAuth&&i?.serverUrl&&!g&&"http"===o.scheme&&(c(o.uri,p,!0)||"https"===_.scheme&&o.host===_.host&&"7080"===o.port&&"7443"===_.port)&&(p=p.replace(/^https:/i,"http:").replace(/:7443/i,":7080")));const v={query:{request:"getToken",username:s?.username,password:s?.password,serverUrl:l,token:u,expiration:m,referer:h||n?this._appOrigin:null,client:h?"referer":null,f:"json",...e.customParameters},method:"post",authMode:"anonymous",useProxy:this._useProxy(e,i),signal:f};n||(v.withCredentials=!1);return t(p,v).then(t=>{const i=t.data;if(!i?.token)return new r("identity-manager:authentication-failed","Unable to generate token");const n=e.server;return O[n]||(O[n]={}),s&&(O[n][s.username]=s.password),i.validity=m,i})}isBusy(){return!!this._busy}async checkSignInStatus(e){return(await this.checkAppAccess(e,"")).credential}checkAppAccess(e,s,i){let n=!1;return this.getCredential(e,{prompt:!1}).then(o=>{let a;const h={f:"json"};if("portal"===o.scope)if(s&&(this._doPortalSignIn(e)||i?.force))a=o.server+"/sharing/rest/oauth2/validateAppAccess",h.client_id=s;else{if(!o.token)return{credential:o};a=o.server+"/sharing/rest"}else{if(!o.token)return{credential:o};a=o.server+"/rest/services"}return o.token&&(h.token=o.token),t(a,{query:h,authMode:"anonymous"}).then(e=>{if(!1===e.data.valid)throw new r("identity-manager:not-authorized",`You are currently signed in as: '${o.userId}'.`,e.data);return n=!!e.data.viewOnlyUserTypeApp,{credential:o}}).catch(e=>{if("identity-manager:not-authorized"===e.name)throw e;const t=e.details?.httpStatus;if(498===t)throw o.destroy(),new r("identity-manager:not-authenticated","User is not signed in.");if(400===t)throw new r("identity-manager:invalid-request","Bad request");return{credential:o}})}).then(e=>({credential:e.credential,viewOnly:n}))}setOAuthResponseHash(e){e&&(e.startsWith("#")&&(e=e.slice(1)),this._processOAuthPopupParams(u(e)))}setOAuthRedirectionHandler(e){this._oAuthRedirectFunc=e}setProtocolErrorHandler(e){this._protocolFunc=e}signIn(e,t,s={}){const i=Promise.withResolvers(),n=()=>{l?.remove(),c?.remove(),this.dialog?.destroy(),this.dialog=l=c=null},o=()=>{n(),this._oAuthDfd=null,i.reject(new r("identity-manager:user-aborted","ABORTED"))};s.signal&&a(s.signal,()=>{o()});const h=new I({open:!0,resource:this.getResourceName(e),server:t.server});this.dialog=h,this.emit("dialog-create");let l=h.on("cancel",o),c=h.on("submit",e=>{this.generateToken(t,e,{isAdmin:s.isAdmin,signal:s.signal}).then(r=>{n();const o=new w({userId:e.username,server:t.server??void 0,token:r.token,expires:null!=r.expires?Number(r.expires):null,ssl:!!r.ssl,isAdmin:s.isAdmin,validity:r.validity});i.resolve(o)}).catch(e=>{h.error=e,h.signingIn=!1})});return i.promise}oAuthSignIn(e,t,s,i){this._oAuthDfd=Promise.withResolvers();const n=this._oAuthDfd;let o;i?.signal&&a(i.signal,()=>{const e=this._oAuthDfd&&this._oAuthDfd.oAuthWin_;e&&!e.closed?e.close():this.dialog&&d()}),n.resUrl_=e,n.sinfo_=t,n.oinfo_=s;const h=s._oAuthCred;if(h.storage&&("authorization-code"===s.flowType||"auto"===s.flowType&&t.currentVersion>=8.4)){let e=crypto.getRandomValues(new Uint8Array(32));o=p(e),h.codeVerifier=o,e=crypto.getRandomValues(new Uint8Array(32)),h.stateUID=p(e),h.save()||(h.codeVerifier=o=null)}else h.codeVerifier=null;let l,c;this._getCodeChallenge(o).then(r=>{const n=!i||!1!==i.oAuthPopupConfirmation;if(!s.popup||!n)return void this._doOAuthSignIn(e,t,s,r);const o=new I({oAuthPrompt:!0,server:t.server,open:!0});this.dialog=o,this.emit("dialog-create"),l=o.on("cancel",d),c=o.on("submit",()=>{u(),this._doOAuthSignIn(e,t,s,r)})});const d=()=>{u(),this._oAuthDfd=null,n.reject(new r("identity-manager:user-aborted","ABORTED"))},u=()=>{l?.remove(),c?.remove(),this.dialog?.destroy(),this.dialog=null};return n.promise}async refreshToken(e){const t=this.findServerInfo(e.server),r=t?.owningSystemUrl,s=!!r&&"server"===e.scope,i=s&&R(t,this._legacyFed),n=t.webTierAuth,o=n&&this.normalizeWebTierAuth,a=O[e.server],h=a?.[e.userId];let l,c=e.resources&&e.resources[0],d=s?this.findServerInfo(r):null,u={username:e.userId,password:h};if(n&&!o)return;s&&!d&&this.serverInfos.some(e=>(this._isIdProvider(r,e.server)&&(d=e),!!d));const p=d?this.findCredential(d.server,e.userId):null;if(!s||p){if(!i){if(s)l={serverUrl:c,token:p?.token,ssl:p?.ssl};else if(o)u=null,l={ssl:e.ssl};else{if(!h){let r;return c&&(c=this._sanitizeUrl(c),e._enqueued=1,r=this._enqueue(c,t,null,null,e.isAdmin,e),r.then(()=>{e._enqueued=0,e.refreshServerTokens()}).catch(()=>{e._enqueued=0})),r}e.isAdmin&&(l={isAdmin:!0})}return this.generateToken(s?d:t,s?null:u,l).then(t=>{e.token=t.token,e.expires=null!=t.expires?Number(t.expires):null,e.creationTime=Date.now(),e.validity=t.validity,e.emitTokenChange(),e.refreshServerTokens()}).catch(()=>{})}p?.refreshToken()}}refreshServerTokens(e){"portal"===e.scope&&this.credentials.forEach(t=>{const r=this.findServerInfo(t.server),s=r?.owningSystemUrl;t!==e&&t.userId===e.userId&&s&&"server"===t.scope&&(this._hasSameServerInstance(e.server,s)||this._isIdProvider(s,e.server))&&(R(r,this._legacyFed)?(t.token=e.token,t.expires=e.expires,t.creationTime=e.creationTime,t.validity=e.validity,t.emitTokenChange()):t.refreshToken())})}destroyCredentials(){if(this.credentials){this.credentials.slice().forEach(e=>{e.destroy()})}this.emit("credentials-destroy")}enablePostMessageAuth(e="https://www.arcgis.com/sharing/rest"){this._postMessageAuthHandle&&this._postMessageAuthHandle.remove(),this._postMessageAuthHandle=i(window,"message",t=>{if((t.origin===this._appOrigin||t.origin.endsWith(".arcgis.com"))&&"arcgis:auth:requestCredential"===t.data?.type){const r=t.source;this.getCredential(e).then(e=>{r.postMessage({type:"arcgis:auth:credential",credential:{expires:e.expires,server:e.server,ssl:e.ssl,token:e.token,userId:e.userId}},t.origin)}).catch(e=>{r.postMessage({type:"arcgis:auth:error",error:{name:e.name,message:e.message}},t.origin)})}})}disablePostMessageAuth(){this._postMessageAuthHandle&&(this._postMessageAuthHandle.remove(),this._postMessageAuthHandle=null)}_getOAuthLocationParams(){let e=window.location.hash;if(e){e.startsWith("#")&&(e=e.slice(1));const t=u(e);let r=!1;if(t.access_token&&t.expires_in&&t.state&&t.hasOwnProperty("username"))try{t.state=JSON.parse(t.state),t.state.portalUrl&&(this._oAuthLocationParams=t,r=!0)}catch{}else if(t.error&&t.error_description&&(console.log("IdentityManager OAuth Error: ",t.error," - ",t.error_description),"access_denied"===t.error&&(r=!0,t.state)))try{t.state=JSON.parse(t.state)}catch{}r&&(window.location.hash=t.state?.hash||"")}let t=window.location.search;if(t){t.startsWith("?")&&(t=t.slice(1));const e=u(t);let r=!1;if(e.code&&e.state)try{e.state=JSON.parse(e.state),e.state.portalUrl&&e.state.uid&&(this._oAuthLocationParams=e,r=!0)}catch{}else if(e.error&&e.error_description&&(console.log("IdentityManager OAuth Error: ",e.error," - ",e.error_description),"access_denied"===e.error&&(r=!0,e.state)))try{e.state=JSON.parse(e.state)}catch{}if(r){const t={...e};["code","error","error_description","message_code","persist","state"].forEach(e=>{delete t[e]});const r=_(t),s=window.location.pathname+(r?`?${r}`:"")+(e.state?.hash||"");window.history.replaceState(window.history.state,"",s)}}}_getOAuthToken(e,r,s,i,n){return e=e.replace(/^http:/i,"https:"),t(`${e}/sharing/rest/oauth2/token`,{authMode:"anonymous",method:"post",query:i&&n?{grant_type:"authorization_code",code:r,redirect_uri:i,client_id:s,code_verifier:n}:{grant_type:"refresh_token",refresh_token:r,client_id:s}}).then(e=>e.data)}async _getCodeChallenge(e){if(e&&globalThis.isSecureContext){const t=(new TextEncoder).encode(e),r=await crypto.subtle.digest("SHA-256",t);return p(new Uint8Array(r))}return null}_pageShowHandler(e){if(e.persisted&&this.isBusy()&&this._rejectOnPersistedPageShow){const e=new r("identity-manager:user-aborted","ABORTED");this._errbackFunc(e)}}_findCredential(e,t){let r,s,i,n,o=-1;const a=t?.token,h=t?.resource,l=this._isServerRsrc(e)?"server":"portal",c=this.credentials.filter(t=>this._hasSameServerInstance(t.server,e)&&t.scope===l);if(e=h||e,c.length)if(1===c.length){if(r=c[0],i=this.findServerInfo(r.server),s=i?.owningSystemUrl,n=s?this.findCredential(s,r.userId):void 0,o=this._getIdenticalSvcIdx(e,r),!a)return-1===o&&r.resources.push(e),this._addResource(e,n),r;-1!==o&&(r.resources.splice(o,1),this._removeResource(e,n))}else{let t,r;if(c.some(a=>(r=this._getIdenticalSvcIdx(e,a),-1!==r&&(t=a,i=this.findServerInfo(t.server),s=i?.owningSystemUrl,n=s?this.findCredential(s,t.userId):void 0,o=r,!0))),a)t&&(t.resources.splice(o,1),this._removeResource(e,n));else if(t)return this._addResource(e,n),t}}_findOAuthInfo(e){let t=this.findOAuthInfo(e);if(!t)for(const r of this.oAuthInfos)if(this._isIdProvider(r.portalUrl,e)){t=r;break}return t}_addResource(e,t){t&&-1===this._getIdenticalSvcIdx(e,t)&&t.resources.push(e)}_removeResource(e,t){let r=-1;t&&(r=this._getIdenticalSvcIdx(e,t),r>-1&&t.resources.splice(r,1))}_useProxy(e,t){return t?.isAdmin&&!c(e.adminTokenServiceUrl,this._appOrigin)||!this._isPortalDomain(e.tokenServiceUrl)&&"10.1"===String(e.currentVersion)&&!c(e.tokenServiceUrl,this._appOrigin)}_getOrigin(e){const t=new d(e);return t.scheme+"://"+t.host+(null!=t.port?":"+t.port:"")}_getServerInstanceRoot(e){const t=e.toLowerCase();let r=t.indexOf(this._agsRest);return-1===r&&this._isAdminResource(e)&&(r=this._agsAdmin.test(e)?e.replace(this._agsAdmin,"$1").length:e.search(this._adminSvcs)),-1!==r||y(t)||(r=t.indexOf("/sharing")),-1===r&&t.endsWith("/")&&(r=t.length-1),r>-1?e.slice(0,r):e}_hasSameServerInstance(e,t){return e.endsWith("/")&&(e=e.slice(0,-1)),e=e.toLowerCase(),t=this._getServerInstanceRoot(t).toLowerCase(),e=P(e),t=P(t),(e=e.slice(Math.max(0,e.indexOf(":"))))===(t=t.slice(Math.max(0,t.indexOf(":"))))}_sanitizeUrl(t){const r=(e.request.proxyUrl||"").toLowerCase(),s=r?t.toLowerCase().indexOf(r+"?"):-1;return-1!==s&&(t=t.slice(s+r.length+1)),t=f(t),l(t).path}_isRESTService(e){return e.includes(this._agsRest)}_isAdminResource(e){return this._agsAdmin.test(e)||this._adminSvcs.test(e)}_isServerRsrc(e){return this._isRESTService(e)||this._isAdminResource(e)}_isIdenticalService(e,t){let r=!1;if(this._isRESTService(e)&&this._isRESTService(t)){const s=this._getSuffix(e).toLowerCase(),i=this._getSuffix(t).toLowerCase();if(r=s===i,!r){const e=/(.*)\/(MapServer|FeatureServer|UtilityNetworkServer).*/gi;r=s.replaceAll(e,"$1")===i.replaceAll(e,"$1")}}else this._isAdminResource(e)&&this._isAdminResource(t)?r=!0:this._isServerRsrc(e)||this._isServerRsrc(t)||!this._isPortalDomain(e)||(r=!0);return r}_isPortalDomain(t){const r=new d(t.toLowerCase()),s=this._portalConfig;let i=this._gwDomains.some(e=>e.regex.test(r.uri));return!i&&s&&(i=this._hasSameServerInstance(this._getServerInstanceRoot(s.restBaseUrl),r.uri)),i||e.portalUrl&&(i=c(r,e.portalUrl,!0)),i||(i=this._portals.some(e=>this._hasSameServerInstance(e,r.uri))),i=i||this._agsPortal.test(r.path),i}_isIdProvider(e,t){let r=-1,s=-1;this._gwDomains.forEach((i,n)=>{-1===r&&i.regex.test(e)&&(r=n),-1===s&&i.regex.test(t)&&(s=n)});let i=!1;if(r>-1&&s>-1&&(0===r||4===r?0!==s&&4!==s||(i=!0):1===r?1!==s&&2!==s||(i=!0):2===r?2===s&&(i=!0):3===r&&3===s&&(i=!0)),!i){const r=this.findServerInfo(t),s=r?.owningSystemUrl;s&&T(r)&&this._isPortalDomain(s)&&this._isIdProvider(e,s)&&(i=!0)}return i}_getIdenticalSvcIdx(e,t){let r=-1;for(let s=0;s<t.resources.length;s++){const i=t.resources[s];if(this._isIdenticalService(e,i)){r=s;break}}return r}_getSuffix(e){return e.replace(this._regexSDirUrl,"").replace(this._regexServerType,"$1")}_getTokenSvcUrl(e){let r,s,i;if(this._isRESTService(e)||this._isAdminResource(e)){const i=this._getServerInstanceRoot(e);return r=i+"/admin/generateToken",s=t(e=i+"/rest/info",{query:{f:"json"}}).then(e=>e.data),{adminUrl:r,promise:s}}if(this._isPortalDomain(e)){let t="";if(this._gwDomains.some(r=>(r.regex.test(e)&&(t=r.tokenServiceUrl),!!t)),t||this._portals.some(r=>(this._hasSameServerInstance(r,e)&&(t=r+this._gwTokenUrl),!!t)),t||(i=e.toLowerCase().indexOf("/sharing"),-1!==i&&(t=e.slice(0,i)+this._gwTokenUrl)),t||(t=this._getOrigin(e)+this._gwTokenUrl),t){const r=new d(e).port;/^http:\/\//i.test(e)&&"7080"===r&&(t=t.replace(/:7080/i,":7443")),t=t.replace(/http:/i,"https:")}return t}}_processOAuthResponseParams(e,t,r){const s=t._oAuthCred;if(e.code){const i=s.codeVerifier;return s.codeVerifier=null,s.stateUID=null,s.save(),this._getOAuthToken(r.server,e.code,t.appId,this._getRedirectURI(t,!0),i).then(i=>{const n=new w({userId:i.username,server:r.server??void 0,token:i.access_token,expires:Date.now()+1e3*i.expires_in,ssl:i.ssl,oAuthState:e.state,_oAuthCred:s});return t.userId=n.userId,s.storage=i.persist?C:D,s.refreshToken=i.refresh_token,s.token=null,s.expires=i.refresh_token_expires_in?Date.now()+1e3*i.refresh_token_expires_in:null,s.userId=n.userId,s.ssl=n.ssl,s.save(),n})}const i=new w({userId:e.username,server:r.server??void 0,token:e.access_token,expires:Date.now()+1e3*Number(e.expires_in),ssl:"true"===e.ssl,oAuthState:e.state,_oAuthCred:s});return t.userId=i.userId,s.storage=e.persist?C:D,s.refreshToken=null,s.token=i.token,s.expires=i.expires,s.userId=i.userId,s.ssl=i.ssl,s.save(),Promise.resolve(i)}_processOAuthPopupParams(e){const t=this._oAuthDfd;if(this._oAuthDfd=null,t)if(clearInterval(this._oAuthIntervalId),this._oAuthOnPopupHandle?.remove(),e.error){const s="access_denied"===e.error,i=new r(s?"identity-manager:user-aborted":"identity-manager:authentication-failed",s?"ABORTED":"OAuth: "+e.error+" - "+e.error_description);t.reject(i)}else this._processOAuthResponseParams(e,t.oinfo_,t.sinfo_).then(e=>{t.resolve(e)}).catch(e=>{t.reject(e)})}_setOAuthResponseQueryString(e){e&&(e.startsWith("?")&&(e=e.slice(1)),this._processOAuthPopupParams(u(e)))}async _exchangeToken(e,r,s){return(await t(`${e}/sharing/rest/oauth2/exchangeToken`,{authMode:"anonymous",method:"post",query:{f:"json",client_id:r,token:s}})).data.token}async _getPlatformSelf(e,r){if(this._getPlatformSelfError&&Date.now()-this._getPlatformSelfError[1]<1e3)throw this._getPlatformSelfError[0];e=e.replace(/^http:/i,"https:");try{const s=await t(`${e}/sharing/rest/oauth2/platformSelf`,{authMode:"anonymous",headers:{"X-Esri-Auth-Client-Id":r,"X-Esri-Auth-Redirect-Uri":window.location.href.replace(/#.*$/,"")},method:"post",query:{f:"json",expiration:30},withCredentials:!0});return this._getPlatformSelfError=null,s.data}catch(s){throw"OAUTH_0066"===s.details?.messageCode&&(this._getPlatformSelfError=[s,Date.now()]),s}}_getPortalSelf(e,r){let s;if(this._gwDomains.some(t=>(t.regex.test(e)&&(s=t.customBaseUrl),!!s)),s)return Promise.resolve({allSSL:!0,currentVersion:"8.4",customBaseUrl:s,portalMode:"multitenant",supportsOAuth:!0});this._appOrigin.startsWith("https:")?e=e.replace(/^http:/i,"https:").replace(/:7080/i,":7443"):/^http:/i.test(r)&&(e=e.replace(/^https:/i,"http:").replace(/:7443/i,":7080"));return t(e,{query:{f:"json"},authMode:"anonymous",withCredentials:!0}).then(e=>e.data)}_doPortalSignIn(e){const t=this._portalConfig,r=window.location.href,s=this.findServerInfo(e);return!(!t&&!this._isPortalDomain(r)||!(s?s.hasPortal||s.owningSystemUrl&&this._isPortalDomain(s.owningSystemUrl):this._isPortalDomain(e))||!(this._isIdProvider(r,e)||t&&(this._hasSameServerInstance(this._getServerInstanceRoot(t.restBaseUrl),e)||this._isIdProvider(t.restBaseUrl,e))||c(r,e,!0)))}_checkProtocol(e,t,s,i){let n=!0;const o=i?t.adminTokenServiceUrl:t.tokenServiceUrl;if(o.trim().toLowerCase().startsWith("https:")&&!this._appOrigin.startsWith("https:")&&g(o)&&(n=!!this._protocolFunc&&!!this._protocolFunc({resourceUrl:e,serverInfo:t}),!n)){s(new r("identity-manager:aborted","Aborted the Sign-In process to avoid sending password over insecure connection."))}return n}_enqueue(e,t,r,s,i,n){return s||(s=Promise.withResolvers()),s.resUrl_=e,s.sinfo_=t,s.options_=r,s.admin_=i,s.refresh_=n,this._busy?this._hasSameServerInstance(this._getServerInstanceRoot(e),this._busy.resUrl_)?(this._oAuthDfd&&this._oAuthDfd.oAuthWin_&&this._oAuthDfd.oAuthWin_.focus(),this._soReqs.push(s)):this._xoReqs.push(s):this._doSignIn(s),s.promise}_doSignIn(e){this._busy=e,this._rejectOnPersistedPageShow=!1;const t=t=>{const r=e.options_?.resource,s=e.resUrl_,i=e.refresh_;let n=!1;this.credentials.includes(t)||(i&&this.credentials.includes(i)?(i.userId=t.userId,i.token=t.token,i.expires=t.expires,i.validity=t.validity,i.ssl=t.ssl,i.creationTime=t.creationTime,n=!0,t=i):this.credentials.push(t)),t.resources||(t.resources=[]),t.resources.includes(r||s)||t.resources.push(r||s),t.scope=this._isServerRsrc(s)?"server":"portal",t.emitTokenChange();const o=this._soReqs,a={};this._soReqs=[],o.forEach(e=>{if(!this._isIdenticalService(s,e.resUrl_)){const r=this._getSuffix(e.resUrl_);a[r]||(a[r]=!0,t.resources.push(e.resUrl_))}}),e.resolve(t),o.forEach(e=>{this._hasSameServerInstance(this._getServerInstanceRoot(s),e.resUrl_)?e.resolve(t):this._soReqs.push(e)}),this._busy=e.resUrl_=e.sinfo_=e.refresh_=null,n||this.emit("credential-create",{credential:t}),this._soReqs.length?this._doSignIn(this._soReqs.shift()):this._xoReqs.length&&this._doSignIn(this._xoReqs.shift())},s=t=>{e.reject(t),this._busy=e.resUrl_=e.sinfo_=e.refresh_=null,this._soReqs.length?this._doSignIn(this._soReqs.shift()):this._xoReqs.length&&this._doSignIn(this._xoReqs.shift())},n=(o,h,l,d)=>{const u=e.sinfo_,p=!e.options_||!1!==e.options_.prompt,_=u.hasPortal&&this._findOAuthInfo(e.resUrl_);let f,g;if(o)t(new w({userId:o,server:u.server??void 0,token:l??void 0,expires:null!=d?Number(d):null,ssl:!!h}));else if(window!==window.parent&&this._appUrlObj.query?.["arcgis-auth-origin"]&&this._appUrlObj.query?.["arcgis-auth-portal"]&&this._hasSameServerInstance(this._getServerInstanceRoot(this._appUrlObj.query["arcgis-auth-portal"]),e.resUrl_)){window.parent.postMessage({type:"arcgis:auth:requestCredential"},this._appUrlObj.query["arcgis-auth-origin"]);const n=i(window,"message",e=>{e.source===window.parent&&e.data&&("arcgis:auth:credential"===e.data.type?(n.remove(),e.data.credential.expires<Date.now()?s(new r("identity-manager:credential-request-failed","Parent application's token has expired.")):t(new w(e.data.credential))):"arcgis:auth:error"===e.data.type&&(n.remove(),"tokenExpiredError"===e.data.error.name?s(new r("identity-manager:credential-request-failed","Parent application's token has expired.")):s(r.fromJSON(e.data.error))))});a(e.options_?.signal,()=>{n.remove()})}else if(_){let i=_._oAuthCred;if(!i){const e=new k(_,C),t=new k(_,D);e.isValid()&&t.isValid()?e.expires>t.expires?(i=e,t.destroy()):(i=t,e.destroy()):i=e.isValid()?e:t,_._oAuthCred=i}if(i.isValid()){f=new w({userId:i.userId??void 0,server:u.server??void 0,token:i.token??void 0,expires:i.expires,ssl:i.ssl??void 0,_oAuthCred:i});const r=_.appId!==i.appId&&this._doPortalSignIn(e.resUrl_);r||i.refreshToken?(e._pendingDfd=i.refreshToken?this._getOAuthToken(u.server,i.refreshToken,i.appId).then(e=>(f.expires=Date.now()+1e3*e.expires_in,f.token=e.access_token,f)):Promise.resolve(f),e._pendingDfd.then(e=>r?this._exchangeToken(e.server,_.appId,e.token).then(t=>(e.token=t,e)).catch(()=>e):e).then(e=>{t(e)}).catch(e=>{const t=e.details?.httpStatus;t>0&&404!==t?(i.destroy(),n()):s(e)})):t(f)}else if(this._oAuthLocationParams&&this._hasSameServerInstance(_.portalUrl,this._oAuthLocationParams.state.portalUrl)&&(this._oAuthLocationParams.access_token||this._oAuthLocationParams.code&&this._oAuthLocationParams.state.uid===i.stateUID&&i.codeVerifier)){const r=this._oAuthLocationParams;this._oAuthLocationParams=null,e._pendingDfd=this._processOAuthResponseParams(r,_,u).then(e=>{t(e)}).catch(s)}else{const i=()=>{p?e._pendingDfd=this.oAuthSignIn(e.resUrl_,u,_,e.options_).then(t,s):(g=new r("identity-manager:not-authenticated","User is not signed in."),s(g))};this._doPortalSignIn(e.resUrl_)?e._pendingDfd=this._getPlatformSelf(u.server,_.appId).then(e=>{c(e.portalUrl,this._appOrigin,!0)?(f=new w({userId:e.username,server:u.server??void 0,expires:Date.now()+1e3*e.expires_in,token:e.token}),t(f)):i()}).catch(i):i()}}else if(p){if(this._checkProtocol(e.resUrl_,u,s,e.admin_)){let r=e.options_;e.admin_&&(r=r||{},r.isAdmin=!0),e._pendingDfd=this.signIn(e.resUrl_,u,r).then(t,s)}}else g=new r("identity-manager:not-authenticated","User is not signed in."),s(g)},h=()=>{const r=e.sinfo_,i=r.owningSystemUrl,n=e.options_;let o,a,h;if(n&&(o=n.token,a=n.prompt),h=this._findCredential(i,{resource:e.resUrl_}),!h)for(const e of this.credentials)if(this._isIdProvider(i,e.server)){h=e;break}if(h){const i=this.findCredential(e.resUrl_,h.userId);if(i)t(i);else if(R(r,this._legacyFed)){const e=h.toJSON();e.server=r.server,e.resources=null,t(new w(e))}else{(e._pendingDfd=this.generateToken(this.findServerInfo(h.server),null,{serverUrl:e.resUrl_,token:h.token,signal:e.options_.signal,ssl:h.ssl})).then(s=>{t(new w({userId:h?.userId,server:r.server??void 0,token:s.token,expires:null!=s.expires?Number(s.expires):null,ssl:!!s.ssl,isAdmin:e.admin_,validity:s.validity}))},s)}}else{this._busy=null,o&&(e.options_.token=null);(e._pendingDfd=this.getCredential(i.replace(/\/?$/,"/sharing"),{resource:e.resUrl_,owningTenant:r.owningTenant,signal:e.options_.signal,prompt:a})).then(()=>{this._enqueue(e.resUrl_,e.sinfo_,e.options_,e,e.admin_)},t=>{e.resUrl_=e.sinfo_=e.refresh_=null,e.reject(t)})}};this._errbackFunc=s;const l=e.sinfo_.owningSystemUrl,d=this._isServerRsrc(e.resUrl_),u=e.sinfo_._restInfoPms;u?u.promise.then(t=>{const r=e.sinfo_;if(r._restInfoPms){r.adminTokenServiceUrl=r._restInfoPms.adminUrl,r._restInfoPms=null,r.tokenServiceUrl=(o("authInfo.tokenServicesUrl",t)||o("authInfo.tokenServiceUrl",t)||o("tokenServiceUrl",t))??null,r.shortLivedTokenValidity=o("authInfo.shortLivedTokenValidity",t)??null,r.currentVersion=t.currentVersion,r.owningTenant=t.owningTenant;const e=r.owningSystemUrl=t.owningSystemUrl;e&&this._portals.push(e)}d&&r.owningSystemUrl?h():n()},()=>{e.sinfo_._restInfoPms=null;const t=new r("identity-manager:server-identification-failed","Unknown resource - could not find token service endpoint.");s(t)}):d&&l?h():e.sinfo_._selfReq?e.sinfo_._selfReq.selfDfd.then(t=>{const r={};let s,i,n,o;return t&&(s=t.user?.username,r.username=s,r.allSSL=t.allSSL,i=t.supportsOAuth,o=parseFloat(t.currentVersion),"multitenant"===t.portalMode&&(n=t.customBaseUrl),e.sinfo_.currentVersion=o),e.sinfo_.webTierAuth=!!s,s&&this.normalizeWebTierAuth?this.generateToken(e.sinfo_,null,{ssl:r.allSSL}).catch(()=>null).then(e=>(r.portalToken=e?.token,r.tokenExpiration=e?.expires,r)):!s&&i&&o>=4.4&&!this._findOAuthInfo(e.resUrl_)?this._generateOAuthInfo({portalUrl:e.sinfo_.server,customBaseUrl:n,owningTenant:e.sinfo_._selfReq.owningTenant}).catch(()=>null).then(()=>r):r}).catch(()=>null).then(t=>{e.sinfo_._selfReq=null,t?n(t.username,t.allSSL,t.portalToken,t.tokenExpiration):n()}):n()}_generateOAuthInfo(e){let r,s=null,i=e.portalUrl;const n=e.customBaseUrl,o=e.owningTenant,a=!this._defaultOAuthInfo&&this._createDefaultOAuthInfo&&!this._hasTestedIfAppIsOnPortal;if(a){s=this._appUrlObj.path;const e=s.search(/\/(apps|home)\//);s=e>-1?s.slice(0,e):null}return a&&s?(this._hasTestedIfAppIsOnPortal=!0,r=t(s+"/sharing/rest",{query:{f:"json"}}).then(()=>{this._defaultOAuthInfo=new A({appId:"arcgisonline",popupCallbackUrl:s+"/home/oauth-callback.html"})})):r=Promise.resolve(),r.then(()=>{if(this._defaultOAuthInfo)return i=i.replace(/^http:/i,"https:"),t(i+"/sharing/rest/oauth2/validateRedirectUri",{query:{accountId:o,client_id:this._defaultOAuthInfo.appId,redirect_uri:m(this._defaultOAuthInfo.popupCallbackUrl),f:"json"}}).then(e=>{if(e.data.valid){const t=this._defaultOAuthInfo.clone();e.data.urlKey&&n?t.portalUrl="https://"+e.data.urlKey.toLowerCase()+"."+n:t.portalUrl=i,t.popup=window!==window.top||!(c(i,this._appOrigin)||this._gwDomains.some(e=>e.regex.test(i)&&e.regex.test(this._appOrigin))),this.oAuthInfos.push(t)}})})}_doOAuthSignIn(e,t,s,n){const o=s._oAuthCred,a={portalUrl:s.portalUrl};!s.popup&&s.preserveUrlHash&&window.location.hash&&(a.hash=window.location.hash),o.stateUID&&(a.uid=o.stateUID);const h={client_id:s.appId,response_type:o.codeVerifier?"code":"token",state:JSON.stringify(a),expiration:s.expiration,locale:s.locale,redirect_uri:this._getRedirectURI(s,!!o.codeVerifier)};s.forceLogin&&(h.force_login=!0),s.forceUserId&&s.userId&&(h.prepopulatedusername=s.userId),!s.popup&&this._doPortalSignIn(e)&&(h.redirectToUserOrgUrl=!0),o.codeVerifier&&(h.code_challenge=n||o.codeVerifier,h.code_challenge_method=n?"S256":"plain");const l=this._getAuthorizeUrl(s.portalUrl),c=l+"?"+_(h);if(s.popup){const e=window.open(c,"esriJSAPIOAuth",s.popupWindowFeatures);if(e)e.focus(),this._oAuthDfd.oAuthWin_=e,this._oAuthIntervalId=setInterval(()=>{if(e.closed){clearInterval(this._oAuthIntervalId),this._oAuthOnPopupHandle.remove();const e=this._oAuthDfd;if(e){const t=new r("identity-manager:user-aborted","ABORTED");e.reject(t)}}},500),this._oAuthOnPopupHandle=i(window,["arcgis:auth:hash","arcgis:auth:location:search"],e=>{"arcgis:auth:hash"===e.type?this.setOAuthResponseHash(e.detail):this._setOAuthResponseQueryString(e.detail)});else{const e=new r("identity-manager:popup-blocked","ABORTED");this._oAuthDfd.reject(e)}}else this._rejectOnPersistedPageShow=!0,this._oAuthRedirectFunc?this._oAuthRedirectFunc({authorizeParams:h,authorizeUrl:l,resourceUrl:e,serverInfo:t,oAuthInfo:s}):window.location.href=c}_getAuthorizeUrl(e){let t=e.replace(/^http:/i,"https:")+"/sharing/oauth2/authorize";const r=x(t);if(r?.portalHostname){const{customBaseUrl:e,portalHostname:s,urlKey:i}=r;let n=null;if("www.arcgis.com"===s||"devext.arcgis.com"===s&&(n="logindevext.arcgis.com"),n){t=v(t,i?`${i}.${e}`:s,i?`${i}.${n}`:n)}}return t}_getRedirectURI(e,t){const r=window.location.href.replace(/#.*$/,"");if(e.popup)return m(e.popupCallbackUrl);if(t){const e=l(r);return e.query&&["code","error","error_description","message_code","persist","state"].forEach(t=>{delete e.query[t]}),S(e.path,e.query)}return r}}b.prototype.declaredClass="esri.identity.IdentityManagerBase";export{b as IdentityManagerBase};
2
+ import e from"../config.js";import t from"../request.js";import r from"../core/Error.js";import{Evented as s}from"../core/Evented.js";import{on as i}from"../core/events.js";import{fixJson as n}from"../core/lang.js";import{getDeepValue as o}from"../core/object.js";import{onAbort as a,isAborted as h}from"../core/promiseUtils.js";import{urlToObject as l,hasSameOrigin as c,Url as d,queryToObject as u,base64UrlEncode as p,objectToQuery as _,normalize as f,getProxyRule as g,makeAbsolute as m,addQueryParameters as v}from"../core/urlUtils.js";import S from"./Credential.js";import w from"./IdentityModal.js";import I from"./OAuthCredential.js";import k from"./OAuthInfo.js";import A from"./ServerInfo.js";import{isSecureProxyService as U,normalizeArcGISOnlineOrgDomain as y,parseKnownArcGISOnlineDomain as P}from"../portal/support/urlUtils.js";const x={},O=e=>{const t=new d(e.owningSystemUrl).host,r=new d(e.server).host,s=/.+\.arcgis\.com$/i;return s.test(t)&&s.test(r)},T=(e,t)=>!!(O(e)&&t&&t.some(t=>t.test(e.server)));let R=null,C=null;try{R=window.localStorage,C=window.sessionStorage}catch{}class D extends s{constructor(){super(),this._portalConfig=globalThis.esriGeowConfig,this.serverInfos=[],this.oAuthInfos=[],this.credentials=[],this._soReqs=[],this._xoReqs=[],this._portals=[],this._defaultOAuthInfo=null,this._defaultTokenValidity=60,this.dialog=null,this.tokenValidity=null,this.normalizeWebTierAuth=!1,this._appOrigin="null"!==window.origin?window.origin:window.location.origin,this._appUrlObj=l(window.location.href),this._busy=null,this._rejectOnPersistedPageShow=!1,this._oAuthLocationParams=null,this._gwTokenUrl="/sharing/rest/generateToken",this._agsRest="/rest/services",this._agsPortal=/\/sharing(\/|$)/i,this._agsAdmin=/(https?:\/\/[^/]+\/[^/]+)\/admin\/?(\/.*)?$/i,this._adminSvcs=/\/rest\/admin\/services(\/|$)/i,this._gwDomains=[{regex:/^https?:\/\/www\.arcgis\.com/i,customBaseUrl:"maps.arcgis.com",tokenServiceUrl:"https://www.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/(?:dev|[a-z\d-]+\.mapsdev)\.arcgis\.com/i,customBaseUrl:"mapsdev.arcgis.com",tokenServiceUrl:"https://dev.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/(?:devext|[a-z\d-]+\.mapsdevext)\.arcgis\.com/i,customBaseUrl:"mapsdevext.arcgis.com",tokenServiceUrl:"https://devext.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/(?:qaext|[a-z\d-]+\.mapsqa)\.arcgis\.com/i,customBaseUrl:"mapsqa.arcgis.com",tokenServiceUrl:"https://qaext.arcgis.com/sharing/rest/generateToken"},{regex:/^https?:\/\/[a-z\d-]+\.maps\.arcgis\.com/i,customBaseUrl:"maps.arcgis.com",tokenServiceUrl:"https://www.arcgis.com/sharing/rest/generateToken"}],this._legacyFed=[],this._regexSDirUrl=/http.+\/rest\/services\/?/gi,this._regexServerType=/(\/(FeatureServer|GPServer|GeoDataServer|GeocodeServer|GeoenrichmentServer|GeometryServer|GlobeServer|ImageServer|KnowledgeGraphServer|MapServer|MissionServer|MobileServer|NAServer|NetworkDiagramServer|OGCFeatureServer|ParcelFabricServer|RelationalCatalogServer|SceneServer|StreamServer|UtilityNetworkServer|ValidationServer|VectorTileServer|VersionManagementServer|VideoServer|3DTilesServer)).*/gi,this._gwUser=/http.+\/users\/([^/]+).*/i,this._gwItem=/http.+\/items\/([^/]+).*/i,this._gwGroup=/http.+\/groups\/([^/]+).*/i,this._rePortalTokenSvc=/\/sharing(\/rest)?\/generatetoken/i,this._createDefaultOAuthInfo=!0,this._hasTestedIfAppIsOnPortal=!1,this._getPlatformSelfError=null,this._getOAuthLocationParams(),window.addEventListener("pageshow",e=>{this._pageShowHandler(e)})}registerServers(e){const t=this.serverInfos;t?(e=e.filter(e=>!this.findServerInfo(e.server)),this.serverInfos=t.concat(e)):this.serverInfos=e,e.forEach(e=>{e.owningSystemUrl&&this._portals.push(e.owningSystemUrl),e.hasPortal&&this._portals.push(e.server)})}registerOAuthInfos(e){const t=this.oAuthInfos;if(t){for(const r of e){const e=this.findOAuthInfo(r.portalUrl);e&&t.splice(t.indexOf(e),1)}this.oAuthInfos=t.concat(e)}else this.oAuthInfos=e}registerToken(e){e={...e};const t=this._sanitizeUrl(e.server),r=this._isServerRsrc(t);let s,i=this.findServerInfo(t),n=!0;i||(i=new A,i.server=this._getServerInstanceRoot(t),r?i.hasServer=!0:(i.tokenServiceUrl=this._getTokenSvcUrl(t),i.hasPortal=!0),this.registerServers([i])),s=this._findCredential(t),s?(delete e.server,Object.assign(s,e),n=!1):(s=new S({userId:e.userId,server:i.server??void 0,token:e.token,expires:e.expires,ssl:e.ssl,scope:r?"server":"portal"}),s.resources=[t],this.credentials.push(s)),s.emitTokenChange(!1),n||s.refreshServerTokens()}toJSON(){return n({serverInfos:this.serverInfos.map(e=>e.toJSON()),oAuthInfos:this.oAuthInfos.map(e=>e.toJSON()),credentials:this.credentials.map(e=>e.toJSON())})}initialize(e){if(!e)return;"string"==typeof e&&(e=JSON.parse(e));const t=e.serverInfos,r=e.oAuthInfos,s=e.credentials;if(t){const e=[];t.forEach(t=>{t.server&&t.tokenServiceUrl&&e.push(t.declaredClass?t:new A(t))}),e.length&&this.registerServers(e)}if(r){const e=[];r.forEach(t=>{t.appId&&e.push(t.declaredClass?t:new k(t))}),e.length&&this.registerOAuthInfos(e)}s&&s.forEach(e=>{e.server&&e.token&&e.expires&&e.expires>Date.now()&&((e=e.declaredClass?e:new S(e)).emitTokenChange(),this.credentials.push(e))})}findServerInfo(e){let t;e=this._sanitizeUrl(e);for(const r of this.serverInfos)if(this._hasSameServerInstance(r.server,e)){t=r;break}return t}findOAuthInfo(e){let t;e=this._sanitizeUrl(e);for(const r of this.oAuthInfos)if(this._hasSameServerInstance(r.portalUrl,e)){t=r;break}return t}findCredential(e,t){if(!e)return;let r;e=this._sanitizeUrl(e);const s=this._isServerRsrc(e)?"server":"portal";if(t){for(const i of this.credentials)if(this._hasSameServerInstance(i.server,e)&&t===i.userId&&i.scope===s){r=i;break}}else for(const i of this.credentials)if(this._hasSameServerInstance(i.server,e)&&-1!==this._getIdenticalSvcIdx(e,i)&&i.scope===s){r=i;break}return r}getCredential(e,t){let s,i=!1,n=!0;t&&(i=!(!t.token&&!t.credential),s=t.error,n=!1!==t.prompt),t={...t},e=this._sanitizeUrl(e);const o=new AbortController,l=Promise.withResolvers();if(t.signal&&a(t.signal,()=>{o.abort()}),a(o,()=>{l.reject(new r("identity-manager:user-aborted","ABORTED"))}),h(o))return l.promise;t.signal=o.signal;const d=this._isAdminResource(e),u=i?this.findCredential(e):null;let p;if(u&&498===s?.details?.httpStatus)u.destroy();else if(u)return p=new r("identity-manager:not-authorized","You are currently signed in as: '"+u.userId+"'. You do not have access to this resource: "+e,{error:s}),l.reject(p),l.promise;const _=this._findCredential(e,t);if(_)return l.resolve(_),l.promise;let f=this.findServerInfo(e);if(f)!f.hasPortal&&f.server&&f.owningSystemUrl&&this._hasSameServerInstance(f.server,f.owningSystemUrl)&&(f.hasPortal=!0),!f.hasServer&&this._isServerRsrc(e)&&(f._restInfoPms=this._getTokenSvcUrl(e),f.hasServer=!0);else{const t=this._getTokenSvcUrl(e);if(!t)return p=new r("identity-manager:unknown-resource","Unknown resource - could not find token service endpoint."),l.reject(p),l.promise;f=new A,f.server=this._getServerInstanceRoot(e),"string"==typeof t?(f.tokenServiceUrl=t,f.hasPortal=!0):(f._restInfoPms=t,f.hasServer=!0),this.registerServers([f])}return f.hasPortal&&void 0===f._selfReq&&(n||c(f.tokenServiceUrl,this._appOrigin)||this._gwDomains.some(e=>e.tokenServiceUrl===f.tokenServiceUrl))&&(f._selfReq={owningTenant:t?.owningTenant,selfDfd:this._getPortalSelf(f.tokenServiceUrl.replace(this._rePortalTokenSvc,"/sharing/rest/portals/self"),e)}),this._enqueue(e,f,t,l,d)}getResourceName(e){return this._isRESTService(e)?e.replace(this._regexSDirUrl,"").replace(this._regexServerType,"")||"":this._gwUser.test(e)&&e.replace(this._gwUser,"$1")||this._gwItem.test(e)&&e.replace(this._gwItem,"$1")||this._gwGroup.test(e)&&e.replace(this._gwGroup,"$1")||""}generateToken(e,s,i){const n=this._rePortalTokenSvc.test(e.tokenServiceUrl),o=new d(this._appOrigin),a=e.shortLivedTokenValidity;let h,l,u,p,_,f,g,m;s&&(m=this.tokenValidity||a||this._defaultTokenValidity,m>a&&a>0&&(m=a)),i&&(h=i.isAdmin,l=i.serverUrl,u=i.token,f=i.signal,g=i.ssl,e.customParameters=i.customParameters),h?p=e.adminTokenServiceUrl:(p=e.tokenServiceUrl,_=new d(p.toLowerCase()),e.webTierAuth&&i?.serverUrl&&!g&&"http"===o.scheme&&(c(o.uri,p,!0)||"https"===_.scheme&&o.host===_.host&&"7080"===o.port&&"7443"===_.port)&&(p=p.replace(/^https:/i,"http:").replace(/:7443/i,":7080")));const v={query:{request:"getToken",username:s?.username,password:s?.password,serverUrl:l,token:u,expiration:m,referer:h||n?this._appOrigin:null,client:h?"referer":null,f:"json",...e.customParameters},method:"post",authMode:"anonymous",useProxy:this._useProxy(e,i),signal:f};n||(v.withCredentials=!1);return t(p,v).then(t=>{const i=t.data;if(!i?.token)return new r("identity-manager:authentication-failed","Unable to generate token");const n=e.server;return x[n]||(x[n]={}),s&&(x[n][s.username]=s.password),i.validity=m,i})}isBusy(){return!!this._busy}async checkSignInStatus(e){return(await this.checkAppAccess(e,"")).credential}checkAppAccess(e,s,i){let n=!1;return this.getCredential(e,{prompt:!1}).then(o=>{let a;const h={f:"json"};if("portal"===o.scope)if(s&&(this._doPortalSignIn(e)||i?.force))a=o.server+"/sharing/rest/oauth2/validateAppAccess",h.client_id=s;else{if(!o.token)return{credential:o};a=o.server+"/sharing/rest"}else{if(!o.token)return{credential:o};a=o.server+"/rest/services"}return o.token&&(h.token=o.token),t(a,{query:h,authMode:"anonymous"}).then(e=>{if(!1===e.data.valid)throw new r("identity-manager:not-authorized",`You are currently signed in as: '${o.userId}'.`,e.data);return n=!!e.data.viewOnlyUserTypeApp,{credential:o}}).catch(e=>{if("identity-manager:not-authorized"===e.name)throw e;const t=e.details?.httpStatus;if(498===t)throw o.destroy(),new r("identity-manager:not-authenticated","User is not signed in.");if(400===t)throw new r("identity-manager:invalid-request","Bad request");return{credential:o}})}).then(e=>({credential:e.credential,viewOnly:n}))}setOAuthResponseHash(e){e&&(e.startsWith("#")&&(e=e.slice(1)),this._processOAuthPopupParams(u(e)))}setOAuthRedirectionHandler(e){this._oAuthRedirectFunc=e}setProtocolErrorHandler(e){this._protocolFunc=e}signIn(e,t,s={}){const i=Promise.withResolvers(),n=()=>{l?.remove(),c?.remove(),this.dialog?.destroy(),this.dialog=l=c=null},o=()=>{n(),this._oAuthDfd=null,i.reject(new r("identity-manager:user-aborted","ABORTED"))};s.signal&&a(s.signal,()=>{o()});const h=new w({open:!0,resource:this.getResourceName(e),server:t.server});this.dialog=h,this.emit("dialog-create");let l=h.on("cancel",o),c=h.on("submit",e=>{this.generateToken(t,e,{isAdmin:s.isAdmin,signal:s.signal}).then(r=>{n();const o=new S({userId:e.username,server:t.server??void 0,token:r.token,expires:null!=r.expires?Number(r.expires):null,ssl:!!r.ssl,isAdmin:s.isAdmin,validity:r.validity});i.resolve(o)}).catch(e=>{h.error=e,h.signingIn=!1})});return i.promise}oAuthSignIn(e,t,s,i){this._oAuthDfd=Promise.withResolvers();const n=this._oAuthDfd;let o;i?.signal&&a(i.signal,()=>{const e=this._oAuthDfd&&this._oAuthDfd.oAuthWin_;e&&!e.closed?e.close():this.dialog&&d()}),n.resUrl_=e,n.sinfo_=t,n.oinfo_=s;const h=s._oAuthCred;if(h.storage&&("authorization-code"===s.flowType||"auto"===s.flowType&&t.currentVersion>=8.4)){let e=crypto.getRandomValues(new Uint8Array(32));o=p(e),h.codeVerifier=o,e=crypto.getRandomValues(new Uint8Array(32)),h.stateUID=p(e),h.save()||(h.codeVerifier=o=null)}else h.codeVerifier=null;let l,c;this._getCodeChallenge(o).then(r=>{const n=!i||!1!==i.oAuthPopupConfirmation;if(!s.popup||!n)return void this._doOAuthSignIn(e,t,s,r);const o=new w({oAuthPrompt:!0,server:t.server,open:!0});this.dialog=o,this.emit("dialog-create"),l=o.on("cancel",d),c=o.on("submit",()=>{u(),this._doOAuthSignIn(e,t,s,r)})});const d=()=>{u(),this._oAuthDfd=null,n.reject(new r("identity-manager:user-aborted","ABORTED"))},u=()=>{l?.remove(),c?.remove(),this.dialog?.destroy(),this.dialog=null};return n.promise}async refreshToken(e){const t=this.findServerInfo(e.server),r=t?.owningSystemUrl,s=!!r&&"server"===e.scope,i=s&&T(t,this._legacyFed),n=t.webTierAuth,o=n&&this.normalizeWebTierAuth,a=x[e.server],h=a?.[e.userId];let l,c=e.resources&&e.resources[0],d=s?this.findServerInfo(r):null,u={username:e.userId,password:h};if(n&&!o)return;s&&!d&&this.serverInfos.some(e=>(this._isIdProvider(r,e.server)&&(d=e),!!d));const p=d?this.findCredential(d.server,e.userId):null;if(!s||p){if(!i){if(s)l={serverUrl:c,token:p?.token,ssl:p?.ssl};else if(o)u=null,l={ssl:e.ssl};else{if(!h){let r;return c&&(c=this._sanitizeUrl(c),e._enqueued=1,r=this._enqueue(c,t,null,null,e.isAdmin,e),r.then(()=>{e._enqueued=0,e.refreshServerTokens()}).catch(()=>{e._enqueued=0})),r}e.isAdmin&&(l={isAdmin:!0})}return this.generateToken(s?d:t,s?null:u,l).then(t=>{e.token=t.token,e.expires=null!=t.expires?Number(t.expires):null,e.creationTime=Date.now(),e.validity=t.validity,e.emitTokenChange(),e.refreshServerTokens()}).catch(()=>{})}p?.refreshToken()}}refreshServerTokens(e){"portal"===e.scope&&this.credentials.forEach(t=>{const r=this.findServerInfo(t.server),s=r?.owningSystemUrl;t!==e&&t.userId===e.userId&&s&&"server"===t.scope&&(this._hasSameServerInstance(e.server,s)||this._isIdProvider(s,e.server))&&(T(r,this._legacyFed)?(t.token=e.token,t.expires=e.expires,t.creationTime=e.creationTime,t.validity=e.validity,t.emitTokenChange()):t.refreshToken())})}destroyCredentials(){if(this.credentials){this.credentials.slice().forEach(e=>{e.destroy()})}this.emit("credentials-destroy")}enablePostMessageAuth(e="https://www.arcgis.com/sharing/rest"){this._postMessageAuthHandle&&this._postMessageAuthHandle.remove(),this._postMessageAuthHandle=i(window,"message",t=>{if((t.origin===this._appOrigin||t.origin.endsWith(".arcgis.com"))&&"arcgis:auth:requestCredential"===t.data?.type){const r=t.source;this.getCredential(e).then(e=>{r.postMessage({type:"arcgis:auth:credential",credential:{expires:e.expires,server:e.server,ssl:e.ssl,token:e.token,userId:e.userId}},t.origin)}).catch(e=>{r.postMessage({type:"arcgis:auth:error",error:{name:e.name,message:e.message}},t.origin)})}})}disablePostMessageAuth(){this._postMessageAuthHandle&&(this._postMessageAuthHandle.remove(),this._postMessageAuthHandle=null)}_getOAuthLocationParams(){let e=window.location.hash;if(e){e.startsWith("#")&&(e=e.slice(1));const t=u(e);let r=!1;if(t.access_token&&t.expires_in&&t.state&&t.hasOwnProperty("username"))try{t.state=JSON.parse(t.state),t.state.portalUrl&&(this._oAuthLocationParams=t,r=!0)}catch{}else if(t.error&&t.error_description&&(console.log("IdentityManager OAuth Error: ",t.error," - ",t.error_description),"access_denied"===t.error&&(r=!0,t.state)))try{t.state=JSON.parse(t.state)}catch{}r&&(window.location.hash=t.state?.hash||"")}let t=window.location.search;if(t){t.startsWith("?")&&(t=t.slice(1));const e=u(t);let r=!1;if(e.code&&e.state)try{e.state=JSON.parse(e.state),e.state.portalUrl&&e.state.uid&&(this._oAuthLocationParams=e,r=!0)}catch{}else if(e.error&&e.error_description&&(console.log("IdentityManager OAuth Error: ",e.error," - ",e.error_description),"access_denied"===e.error&&(r=!0,e.state)))try{e.state=JSON.parse(e.state)}catch{}if(r){const t={...e};["code","error","error_description","message_code","persist","state"].forEach(e=>{delete t[e]});const r=_(t),s=window.location.pathname+(r?`?${r}`:"")+(e.state?.hash||"");window.history.replaceState(window.history.state,"",s)}}}_getOAuthToken(e,r,s,i,n){return e=e.replace(/^http:/i,"https:"),t(`${e}/sharing/rest/oauth2/token`,{authMode:"anonymous",method:"post",query:i&&n?{grant_type:"authorization_code",code:r,redirect_uri:i,client_id:s,code_verifier:n}:{grant_type:"refresh_token",refresh_token:r,client_id:s}}).then(e=>e.data)}async _getCodeChallenge(e){if(e&&globalThis.isSecureContext){const t=(new TextEncoder).encode(e),r=await crypto.subtle.digest("SHA-256",t);return p(new Uint8Array(r))}return null}_pageShowHandler(e){if(e.persisted&&this.isBusy()&&this._rejectOnPersistedPageShow){const e=new r("identity-manager:user-aborted","ABORTED");this._errbackFunc(e)}}_findCredential(e,t){let r,s,i,n,o=-1;const a=t?.token,h=t?.resource,l=this._isServerRsrc(e)?"server":"portal",c=this.credentials.filter(t=>this._hasSameServerInstance(t.server,e)&&t.scope===l);if(e=h||e,c.length)if(1===c.length){if(r=c[0],i=this.findServerInfo(r.server),s=i?.owningSystemUrl,n=s?this.findCredential(s,r.userId):void 0,o=this._getIdenticalSvcIdx(e,r),!a)return-1===o&&r.resources.push(e),this._addResource(e,n),r;-1!==o&&(r.resources.splice(o,1),this._removeResource(e,n))}else{let t,r;if(c.some(a=>(r=this._getIdenticalSvcIdx(e,a),-1!==r&&(t=a,i=this.findServerInfo(t.server),s=i?.owningSystemUrl,n=s?this.findCredential(s,t.userId):void 0,o=r,!0))),a)t&&(t.resources.splice(o,1),this._removeResource(e,n));else if(t)return this._addResource(e,n),t}}_findOAuthInfo(e){let t=this.findOAuthInfo(e);if(!t)for(const r of this.oAuthInfos)if(this._isIdProvider(r.portalUrl,e)){t=r;break}return t}_addResource(e,t){t&&-1===this._getIdenticalSvcIdx(e,t)&&t.resources.push(e)}_removeResource(e,t){let r=-1;t&&(r=this._getIdenticalSvcIdx(e,t),r>-1&&t.resources.splice(r,1))}_useProxy(e,t){return t?.isAdmin&&!c(e.adminTokenServiceUrl,this._appOrigin)||!this._isPortalDomain(e.tokenServiceUrl)&&"10.1"===String(e.currentVersion)&&!c(e.tokenServiceUrl,this._appOrigin)}_getOrigin(e){const t=new d(e);return t.scheme+"://"+t.host+(null!=t.port?":"+t.port:"")}_getServerInstanceRoot(e){const t=e.toLowerCase();let r=t.indexOf(this._agsRest);return-1===r&&this._isAdminResource(e)&&(r=this._agsAdmin.test(e)?e.replace(this._agsAdmin,"$1").length:e.search(this._adminSvcs)),-1!==r||U(t)||(r=t.indexOf("/sharing")),-1===r&&t.endsWith("/")&&(r=t.length-1),r>-1?e.slice(0,r):e}_hasSameServerInstance(e,t){return e.endsWith("/")&&(e=e.slice(0,-1)),e=e.toLowerCase(),t=this._getServerInstanceRoot(t).toLowerCase(),e=y(e),t=y(t),(e=e.slice(Math.max(0,e.indexOf(":"))))===(t=t.slice(Math.max(0,t.indexOf(":"))))}_sanitizeUrl(t){const r=(e.request.proxyUrl||"").toLowerCase(),s=r?t.toLowerCase().indexOf(r+"?"):-1;return-1!==s&&(t=t.slice(s+r.length+1)),t=f(t),l(t).path}_isRESTService(e){return e.includes(this._agsRest)}_isAdminResource(e){return this._agsAdmin.test(e)||this._adminSvcs.test(e)}_isServerRsrc(e){return this._isRESTService(e)||this._isAdminResource(e)}_isIdenticalService(e,t){let r=!1;if(this._isRESTService(e)&&this._isRESTService(t)){const s=this._getSuffix(e).toLowerCase(),i=this._getSuffix(t).toLowerCase();if(r=s===i,!r){const e=/(.*)\/(MapServer|FeatureServer|UtilityNetworkServer).*/gi;r=s.replaceAll(e,"$1")===i.replaceAll(e,"$1")}}else this._isAdminResource(e)&&this._isAdminResource(t)?r=!0:this._isServerRsrc(e)||this._isServerRsrc(t)||!this._isPortalDomain(e)||(r=!0);return r}_isPortalDomain(t){const r=new d(t.toLowerCase()),s=this._portalConfig;let i=this._gwDomains.some(e=>e.regex.test(r.uri));return!i&&s&&(i=this._hasSameServerInstance(this._getServerInstanceRoot(s.restBaseUrl),r.uri)),i||e.portalUrl&&(i=c(r,e.portalUrl,!0)),i||(i=this._portals.some(e=>this._hasSameServerInstance(e,r.uri))),i=i||this._agsPortal.test(r.path),i}_isIdProvider(e,t){let r=-1,s=-1;this._gwDomains.forEach((i,n)=>{-1===r&&i.regex.test(e)&&(r=n),-1===s&&i.regex.test(t)&&(s=n)});let i=!1;if(r>-1&&s>-1&&(0===r||4===r?0!==s&&4!==s||(i=!0):1===r?1!==s&&2!==s||(i=!0):2===r?2===s&&(i=!0):3===r&&3===s&&(i=!0)),!i){const r=this.findServerInfo(t),s=r?.owningSystemUrl;s&&O(r)&&this._isPortalDomain(s)&&this._isIdProvider(e,s)&&(i=!0)}return i}_getIdenticalSvcIdx(e,t){let r=-1;for(let s=0;s<t.resources.length;s++){const i=t.resources[s];if(this._isIdenticalService(e,i)){r=s;break}}return r}_getSuffix(e){return e.replace(this._regexSDirUrl,"").replace(this._regexServerType,"$1")}_getTokenSvcUrl(e){let r,s,i;if(this._isRESTService(e)||this._isAdminResource(e)){const i=this._getServerInstanceRoot(e);return r=i+"/admin/generateToken",s=t(e=i+"/rest/info",{query:{f:"json"}}).then(e=>e.data),{adminUrl:r,promise:s}}if(this._isPortalDomain(e)){let t="";if(this._gwDomains.some(r=>(r.regex.test(e)&&(t=r.tokenServiceUrl),!!t)),t||this._portals.some(r=>(this._hasSameServerInstance(r,e)&&(t=r+this._gwTokenUrl),!!t)),t||(i=e.toLowerCase().indexOf("/sharing"),-1!==i&&(t=e.slice(0,i)+this._gwTokenUrl)),t||(t=this._getOrigin(e)+this._gwTokenUrl),t){const r=new d(e).port;/^http:\/\//i.test(e)&&"7080"===r&&(t=t.replace(/:7080/i,":7443")),t=t.replace(/http:/i,"https:")}return t}}_processOAuthResponseParams(e,t,r){const s=t._oAuthCred;if(e.code){const i=s.codeVerifier;return s.codeVerifier=null,s.stateUID=null,s.save(),this._getOAuthToken(r.server,e.code,t.appId,this._getRedirectURI(t,!0),i).then(i=>{const n=new S({userId:i.username,server:r.server??void 0,token:i.access_token,expires:Date.now()+1e3*i.expires_in,ssl:i.ssl,oAuthState:e.state,_oAuthCred:s});return t.userId=n.userId,s.storage=i.persist?R:C,s.refreshToken=i.refresh_token,s.token=null,s.expires=i.refresh_token_expires_in?Date.now()+1e3*i.refresh_token_expires_in:null,s.userId=n.userId,s.ssl=n.ssl,s.save(),n})}const i=new S({userId:e.username,server:r.server??void 0,token:e.access_token,expires:Date.now()+1e3*Number(e.expires_in),ssl:"true"===e.ssl,oAuthState:e.state,_oAuthCred:s});return t.userId=i.userId,s.storage=e.persist?R:C,s.refreshToken=null,s.token=i.token,s.expires=i.expires,s.userId=i.userId,s.ssl=i.ssl,s.save(),Promise.resolve(i)}_processOAuthPopupParams(e){const t=this._oAuthDfd;if(this._oAuthDfd=null,t)if(clearInterval(this._oAuthIntervalId),this._oAuthOnPopupHandle?.remove(),e.error){const s="access_denied"===e.error,i=new r(s?"identity-manager:user-aborted":"identity-manager:authentication-failed",s?"ABORTED":"OAuth: "+e.error+" - "+e.error_description);t.reject(i)}else this._processOAuthResponseParams(e,t.oinfo_,t.sinfo_).then(e=>{t.resolve(e)}).catch(e=>{t.reject(e)})}_setOAuthResponseQueryString(e){e&&(e.startsWith("?")&&(e=e.slice(1)),this._processOAuthPopupParams(u(e)))}async _exchangeToken(e,r,s){return(await t(`${e}/sharing/rest/oauth2/exchangeToken`,{authMode:"anonymous",method:"post",query:{f:"json",client_id:r,token:s}})).data.token}async _getPlatformSelf(e,r){if(this._getPlatformSelfError&&Date.now()-this._getPlatformSelfError[1]<1e3)throw this._getPlatformSelfError[0];e=e.replace(/^http:/i,"https:");try{const s=await t(`${e}/sharing/rest/oauth2/platformSelf`,{authMode:"anonymous",headers:{"X-Esri-Auth-Client-Id":r,"X-Esri-Auth-Redirect-Uri":window.location.href.replace(/#.*$/,"")},method:"post",query:{f:"json",expiration:30},withCredentials:!0});return this._getPlatformSelfError=null,s.data}catch(s){throw"OAUTH_0066"===s.details?.messageCode&&(this._getPlatformSelfError=[s,Date.now()]),s}}_getPortalSelf(e,r){let s;if(this._gwDomains.some(t=>(t.regex.test(e)&&(s=t.customBaseUrl),!!s)),s)return Promise.resolve({allSSL:!0,currentVersion:"8.4",customBaseUrl:s,portalMode:"multitenant",supportsOAuth:!0});this._appOrigin.startsWith("https:")?e=e.replace(/^http:/i,"https:").replace(/:7080/i,":7443"):/^http:/i.test(r)&&(e=e.replace(/^https:/i,"http:").replace(/:7443/i,":7080"));return t(e,{query:{f:"json"},authMode:"anonymous",withCredentials:!0}).then(e=>e.data)}_doPortalSignIn(e){const t=this._portalConfig,r=window.location.href,s=this.findServerInfo(e);return!(!t&&!this._isPortalDomain(r)||!(s?s.hasPortal||s.owningSystemUrl&&this._isPortalDomain(s.owningSystemUrl):this._isPortalDomain(e))||!(this._isIdProvider(r,e)||t&&(this._hasSameServerInstance(this._getServerInstanceRoot(t.restBaseUrl),e)||this._isIdProvider(t.restBaseUrl,e))||c(r,e,!0)))}_checkProtocol(e,t,s,i){let n=!0;const o=i?t.adminTokenServiceUrl:t.tokenServiceUrl;if(o.trim().toLowerCase().startsWith("https:")&&!this._appOrigin.startsWith("https:")&&g(o)&&(n=!!this._protocolFunc&&!!this._protocolFunc({resourceUrl:e,serverInfo:t}),!n)){s(new r("identity-manager:aborted","Aborted the Sign-In process to avoid sending password over insecure connection."))}return n}_enqueue(e,t,r,s,i,n){return s||(s=Promise.withResolvers()),s.resUrl_=e,s.sinfo_=t,s.options_=r,s.admin_=i,s.refresh_=n,this._busy?this._hasSameServerInstance(this._getServerInstanceRoot(e),this._busy.resUrl_)?(this._oAuthDfd&&this._oAuthDfd.oAuthWin_&&this._oAuthDfd.oAuthWin_.focus(),this._soReqs.push(s)):this._xoReqs.push(s):this._doSignIn(s),s.promise}_doSignIn(e){this._busy=e,this._rejectOnPersistedPageShow=!1;const t=t=>{const r=e.options_?.resource,s=e.resUrl_,i=e.refresh_;let n=!1;this.credentials.includes(t)||(i&&this.credentials.includes(i)?(i.userId=t.userId,i.token=t.token,i.expires=t.expires,i.validity=t.validity,i.ssl=t.ssl,i.creationTime=t.creationTime,n=!0,t=i):this.credentials.push(t)),t.resources||(t.resources=[]),t.resources.includes(r||s)||t.resources.push(r||s),t.scope=this._isServerRsrc(s)?"server":"portal",t.emitTokenChange();const o=this._soReqs,a={};this._soReqs=[],o.forEach(e=>{if(!this._isIdenticalService(s,e.resUrl_)){const r=this._getSuffix(e.resUrl_);a[r]||(a[r]=!0,t.resources.push(e.resUrl_))}}),e.resolve(t),o.forEach(e=>{this._hasSameServerInstance(this._getServerInstanceRoot(s),e.resUrl_)?e.resolve(t):this._soReqs.push(e)}),this._busy=e.resUrl_=e.sinfo_=e.refresh_=null,n||this.emit("credential-create",{credential:t}),this._soReqs.length?this._doSignIn(this._soReqs.shift()):this._xoReqs.length&&this._doSignIn(this._xoReqs.shift())},s=t=>{e.reject(t),this._busy=e.resUrl_=e.sinfo_=e.refresh_=null,this._soReqs.length?this._doSignIn(this._soReqs.shift()):this._xoReqs.length&&this._doSignIn(this._xoReqs.shift())},n=(o,h,l,d)=>{const u=e.sinfo_,p=!e.options_||!1!==e.options_.prompt,_=u.hasPortal&&this._findOAuthInfo(e.resUrl_);let f,g;if(o)t(new S({userId:o,server:u.server??void 0,token:l??void 0,expires:null!=d?Number(d):null,ssl:!!h}));else if(window!==window.parent&&this._appUrlObj.query?.["arcgis-auth-origin"]&&this._appUrlObj.query?.["arcgis-auth-portal"]&&this._hasSameServerInstance(this._getServerInstanceRoot(this._appUrlObj.query["arcgis-auth-portal"]),e.resUrl_)){window.parent.postMessage({type:"arcgis:auth:requestCredential"},this._appUrlObj.query["arcgis-auth-origin"]);const n=i(window,"message",e=>{e.source===window.parent&&e.data&&("arcgis:auth:credential"===e.data.type?(n.remove(),e.data.credential.expires<Date.now()?s(new r("identity-manager:credential-request-failed","Parent application's token has expired.")):t(new S(e.data.credential))):"arcgis:auth:error"===e.data.type&&(n.remove(),"tokenExpiredError"===e.data.error.name?s(new r("identity-manager:credential-request-failed","Parent application's token has expired.")):s(r.fromJSON(e.data.error))))});a(e.options_?.signal,()=>{n.remove()})}else if(_){let i=_._oAuthCred;if(!i){const e=new I(_,R),t=new I(_,C);e.isValid()&&t.isValid()?e.expires>t.expires?(i=e,t.destroy()):(i=t,e.destroy()):i=e.isValid()?e:t,_._oAuthCred=i}if(i.isValid()){f=new S({userId:i.userId??void 0,server:u.server??void 0,token:i.token??void 0,expires:i.expires,ssl:i.ssl??void 0,_oAuthCred:i});const r=_.appId!==i.appId&&this._doPortalSignIn(e.resUrl_);r||i.refreshToken?(e._pendingDfd=i.refreshToken?this._getOAuthToken(u.server,i.refreshToken,i.appId).then(e=>(f.expires=Date.now()+1e3*e.expires_in,f.token=e.access_token,f)):Promise.resolve(f),e._pendingDfd.then(e=>r?this._exchangeToken(e.server,_.appId,e.token).then(t=>(e.token=t,e)).catch(()=>e):e).then(e=>{t(e)}).catch(e=>{const t=e.details?.httpStatus;t>0&&404!==t?(i.destroy(),n()):s(e)})):t(f)}else if(this._oAuthLocationParams&&this._hasSameServerInstance(_.portalUrl,this._oAuthLocationParams.state.portalUrl)&&(this._oAuthLocationParams.access_token||this._oAuthLocationParams.code&&this._oAuthLocationParams.state.uid===i.stateUID&&i.codeVerifier)){const r=this._oAuthLocationParams;this._oAuthLocationParams=null,e._pendingDfd=this._processOAuthResponseParams(r,_,u).then(e=>{t(e)}).catch(s)}else{const i=()=>{p?e._pendingDfd=this.oAuthSignIn(e.resUrl_,u,_,e.options_).then(t,s):(g=new r("identity-manager:not-authenticated","User is not signed in."),s(g))};this._doPortalSignIn(e.resUrl_)?e._pendingDfd=this._getPlatformSelf(u.server,_.appId).then(e=>{c(e.portalUrl,this._appOrigin,!0)?(f=new S({userId:e.username,server:u.server??void 0,expires:Date.now()+1e3*e.expires_in,token:e.token}),t(f)):i()}).catch(i):i()}}else if(p){if(this._checkProtocol(e.resUrl_,u,s,e.admin_)){let r=e.options_;e.admin_&&(r=r||{},r.isAdmin=!0),e._pendingDfd=this.signIn(e.resUrl_,u,r).then(t,s)}}else g=new r("identity-manager:not-authenticated","User is not signed in."),s(g)},h=()=>{const r=e.sinfo_,i=r.owningSystemUrl,n=e.options_;let o,a,h;if(n&&(o=n.token,a=n.prompt),h=this._findCredential(i,{resource:e.resUrl_}),!h)for(const e of this.credentials)if(this._isIdProvider(i,e.server)){h=e;break}if(h){const i=this.findCredential(e.resUrl_,h.userId);if(i)t(i);else if(T(r,this._legacyFed)){const e=h.toJSON();e.server=r.server,e.resources=null,t(new S(e))}else{(e._pendingDfd=this.generateToken(this.findServerInfo(h.server),null,{serverUrl:e.resUrl_,token:h.token,signal:e.options_.signal,ssl:h.ssl})).then(s=>{t(new S({userId:h?.userId,server:r.server??void 0,token:s.token,expires:null!=s.expires?Number(s.expires):null,ssl:!!s.ssl,isAdmin:e.admin_,validity:s.validity}))},s)}}else{this._busy=null,o&&(e.options_.token=null);(e._pendingDfd=this.getCredential(i.replace(/\/?$/,"/sharing"),{resource:e.resUrl_,owningTenant:r.owningTenant,signal:e.options_.signal,prompt:a})).then(()=>{this._enqueue(e.resUrl_,e.sinfo_,e.options_,e,e.admin_)},t=>{e.resUrl_=e.sinfo_=e.refresh_=null,e.reject(t)})}};this._errbackFunc=s;const l=e.sinfo_.owningSystemUrl,d=this._isServerRsrc(e.resUrl_),u=e.sinfo_._restInfoPms;u?u.promise.then(t=>{const r=e.sinfo_;if(r._restInfoPms){r.adminTokenServiceUrl=r._restInfoPms.adminUrl,r._restInfoPms=null,r.tokenServiceUrl=(o("authInfo.tokenServicesUrl",t)||o("authInfo.tokenServiceUrl",t)||o("tokenServiceUrl",t))??null,r.shortLivedTokenValidity=o("authInfo.shortLivedTokenValidity",t)??null,r.currentVersion=t.currentVersion,r.owningTenant=t.owningTenant;const e=r.owningSystemUrl=t.owningSystemUrl;e&&this._portals.push(e)}d&&r.owningSystemUrl?h():n()},()=>{e.sinfo_._restInfoPms=null;const t=new r("identity-manager:server-identification-failed","Unknown resource - could not find token service endpoint.");s(t)}):d&&l?h():e.sinfo_._selfReq?e.sinfo_._selfReq.selfDfd.then(t=>{const r={};let s,i,n,o;return t&&(s=t.user?.username,r.username=s,r.allSSL=t.allSSL,i=t.supportsOAuth,o=parseFloat(t.currentVersion),"multitenant"===t.portalMode&&(n=t.customBaseUrl),e.sinfo_.currentVersion=o),e.sinfo_.webTierAuth=!!s,s&&this.normalizeWebTierAuth?this.generateToken(e.sinfo_,null,{ssl:r.allSSL}).catch(()=>null).then(e=>(r.portalToken=e?.token,r.tokenExpiration=e?.expires,r)):!s&&i&&o>=4.4&&!this._findOAuthInfo(e.resUrl_)?this._generateOAuthInfo({portalUrl:e.sinfo_.server,customBaseUrl:n,owningTenant:e.sinfo_._selfReq.owningTenant}).catch(()=>null).then(()=>r):r}).catch(()=>null).then(t=>{e.sinfo_._selfReq=null,t?n(t.username,t.allSSL,t.portalToken,t.tokenExpiration):n()}):n()}_generateOAuthInfo(e){let r,s=null,i=e.portalUrl;const n=e.customBaseUrl,o=e.owningTenant,a=!this._defaultOAuthInfo&&this._createDefaultOAuthInfo&&!this._hasTestedIfAppIsOnPortal;if(a){s=this._appUrlObj.path;const e=s.search(/\/(apps|home)\//);s=e>-1?s.slice(0,e):null}return a&&s?(this._hasTestedIfAppIsOnPortal=!0,r=t(s+"/sharing/rest",{query:{f:"json"}}).then(()=>{this._defaultOAuthInfo=new k({appId:"arcgisonline",popupCallbackUrl:s+"/home/oauth-callback.html"})})):r=Promise.resolve(),r.then(()=>{if(this._defaultOAuthInfo)return i=i.replace(/^http:/i,"https:"),t(i+"/sharing/rest/oauth2/validateRedirectUri",{query:{accountId:o,client_id:this._defaultOAuthInfo.appId,redirect_uri:m(this._defaultOAuthInfo.popupCallbackUrl),f:"json"}}).then(e=>{if(e.data.valid){const t=this._defaultOAuthInfo.clone();e.data.urlKey&&n?t.portalUrl="https://"+e.data.urlKey.toLowerCase()+"."+n:t.portalUrl=i,t.popup=window!==window.top||!(c(i,this._appOrigin)||this._gwDomains.some(e=>e.regex.test(i)&&e.regex.test(this._appOrigin))),this.oAuthInfos.push(t)}})})}_doOAuthSignIn(e,t,s,n){const o=s._oAuthCred,a={portalUrl:s.portalUrl};!s.popup&&s.preserveUrlHash&&window.location.hash&&(a.hash=window.location.hash),o.stateUID&&(a.uid=o.stateUID);const h={client_id:s.appId,response_type:o.codeVerifier?"code":"token",state:JSON.stringify(a),expiration:s.expiration,locale:s.locale,redirect_uri:this._getRedirectURI(s,!!o.codeVerifier)};s.forceLogin&&(h.force_login=!0),s.forceUserId&&s.userId&&(h.prepopulatedusername=s.userId),!s.popup&&this._doPortalSignIn(e)&&(h.redirectToUserOrgUrl=!0),o.codeVerifier&&(h.code_challenge=n||o.codeVerifier,h.code_challenge_method=n?"S256":"plain");const l=this._getAuthorizeUrl(s.portalUrl),c=l+"?"+_(h);if(s.popup){const e=window.open(c,"esriJSAPIOAuth",s.popupWindowFeatures);if(e)e.focus(),this._oAuthDfd.oAuthWin_=e,this._oAuthIntervalId=setInterval(()=>{if(e.closed){clearInterval(this._oAuthIntervalId),this._oAuthOnPopupHandle.remove();const e=this._oAuthDfd;if(e){const t=new r("identity-manager:user-aborted","ABORTED");e.reject(t)}}},500),this._oAuthOnPopupHandle=i(window,["arcgis:auth:hash","arcgis:auth:location:search"],e=>{"arcgis:auth:hash"===e.type?this.setOAuthResponseHash(e.detail):this._setOAuthResponseQueryString(e.detail)});else{const e=new r("identity-manager:popup-blocked","ABORTED");this._oAuthDfd.reject(e)}}else this._rejectOnPersistedPageShow=!0,this._oAuthRedirectFunc?this._oAuthRedirectFunc({authorizeParams:h,authorizeUrl:l,resourceUrl:e,serverInfo:t,oAuthInfo:s}):window.location.href=c}_getAuthorizeUrl(e){let t=e.replace(/^http:/i,"https:")+"/sharing/oauth2/authorize";const r=P(t);if(r?.portalHostname){const{customBaseUrl:e,portalHostname:t,urlKey:s}=r}return t}_getRedirectURI(e,t){const r=window.location.href.replace(/#.*$/,"");if(e.popup)return m(e.popupCallbackUrl);if(t){const e=l(r);return e.query&&["code","error","error_description","message_code","persist","state"].forEach(t=>{delete e.query[t]}),v(e.path,e.query)}return r}}D.prototype.declaredClass="esri.identity.IdentityManagerBase";export{D as IdentityManagerBase};
package/interfaces.d.ts CHANGED
@@ -1061,6 +1061,7 @@ declare namespace __esri {
1061
1061
  interface SceneViewerLayerUtils {
1062
1062
  revertLayerProperty: typeof import("./applications/SceneViewer/layerUtils.js").revertLayerProperty;
1063
1063
  originOfLayerProperty: typeof import("./applications/SceneViewer/layerUtils.js").originOfLayerProperty;
1064
+ isGaussianSplat3DTiles: typeof import("./applications/SceneViewer/layerUtils.js").isGaussianSplat3DTiles;
1064
1065
  }
1065
1066
 
1066
1067
  export const SceneViewerLayerUtils: SceneViewerLayerUtils;
@@ -5058,6 +5059,13 @@ declare namespace __esri {
5058
5059
  export type AggregateField = import("./layers/support/AggregateField.js").default;
5059
5060
  export const AggregateField: typeof import("./layers/support/AggregateField.js").default;
5060
5061
 
5062
+ /** @deprecated since 5.0. Refactor using \@arcgis/codemod */
5063
+ export type AnnotationSublayerProperties = import("./layers/support/AnnotationSublayer.js").AnnotationSublayerProperties;
5064
+
5065
+ /** @deprecated since 5.0. Refactor using \@arcgis/codemod */
5066
+ export type AnnotationSublayer = import("./layers/support/AnnotationSublayer.js").default;
5067
+ export const AnnotationSublayer: typeof import("./layers/support/AnnotationSublayer.js").default;
5068
+
5061
5069
  /** @deprecated since 5.0. Refactor using \@arcgis/codemod */
5062
5070
  export type BuildingFieldStatistics = import("./layers/support/BuildingFieldStatistics.js").default;
5063
5071
  export const BuildingFieldStatistics: typeof import("./layers/support/BuildingFieldStatistics.js").default;
package/kernel.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.121",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
2
+ import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.123",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
@@ -1,42 +1,273 @@
1
- import type { __FeatureLayerSansType } from "./FeatureLayer.js";
2
- import type FeatureLayer from "./FeatureLayer.js";
3
- import type { FeatureLayerProperties } from "./FeatureLayer.js";
1
+ import type PopupTemplate from "../PopupTemplate.js";
2
+ import type Extent from "../geometry/Extent.js";
3
+ import type Layer from "./Layer.js";
4
+ import type Field from "./support/Field.js";
5
+ import type FeatureSet from "../rest/support/FeatureSet.js";
6
+ import type Query from "../rest/support/Query.js";
7
+ import type { ClonableMixin } from "../core/Clonable.js";
8
+ import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js";
9
+ import type { LayerEvents, LayerProperties } from "./Layer.js";
10
+ import type { APIKeyMixin, APIKeyMixinProperties } from "./mixins/APIKeyMixin.js";
11
+ import type { BlendLayer, BlendLayerProperties } from "./mixins/BlendLayer.js";
12
+ import type { CustomParametersMixin, CustomParametersMixinProperties } from "./mixins/CustomParametersMixin.js";
13
+ import type { EditBusLayerEvents } from "./mixins/EditBusLayer.js";
14
+ import type { FeatureLayerBase, FeatureLayerBaseProperties } from "./mixins/FeatureLayerBase.js";
15
+ import type { OperationalLayer, OperationalLayerProperties } from "./mixins/OperationalLayer.js";
16
+ import type { PortalLayer, PortalLayerProperties } from "./mixins/PortalLayer.js";
17
+ import type { RefreshableLayer, RefreshableLayerEvents, RefreshableLayerProperties } from "./mixins/RefreshableLayer.js";
18
+ import type { ScaleRangeLayer, ScaleRangeLayerProperties } from "./mixins/ScaleRangeLayer.js";
19
+ import type { TemporalLayer, TemporalLayerProperties } from "./mixins/TemporalLayer.js";
20
+ import type { RequestOptions } from "../request/types.js";
21
+ import type { QueryProperties } from "../rest/support/Query.js";
22
+ import type { CreatePopupTemplateOptions } from "../support/popupUtils.js";
23
+ import type { ObjectId } from "../views/types.js";
24
+ import type { PopupTemplateProperties } from "../PopupTemplate.js";
4
25
 
5
- export interface AnnotationLayerProperties extends FeatureLayerProperties {}
26
+ export interface AnnotationLayerProperties extends LayerProperties, APIKeyMixinProperties, CustomParametersMixinProperties, PortalLayerProperties, OperationalLayerProperties, RefreshableLayerProperties, ScaleRangeLayerProperties, TemporalLayerProperties, BlendLayerProperties, FeatureLayerBaseProperties, Partial<Pick<AnnotationLayer, "outFields" | "popupEnabled">> {
27
+ /**
28
+ * The popup template for the layer. When set on the layer, the `popupTemplate`
29
+ * allows users to access attributes and display their values in the
30
+ * view's Popup when a feature is selected
31
+ * using text and/or charts. See the [PopupTemplate sample](https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/)
32
+ * for an example of how [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/) interacts with an
33
+ * [AnnotationLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/).
34
+ *
35
+ * A default popup template is automatically used if no `popupTemplate` has been defined when
36
+ * [Popup.defaultPopupTemplateEnabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/#defaultPopupTemplateEnabled)
37
+ * is set to `true`.
38
+ *
39
+ * @see [createPopupTemplate()](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/#createPopupTemplate)
40
+ * @see [SceneView.popup](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#popup)
41
+ * @see [View2D.popup](https://developers.arcgis.com/javascript/latest/references/core/views/View2D/#popup)
42
+ */
43
+ popupTemplate?: PopupTemplateProperties | null;
44
+ }
6
45
 
7
- export default class AnnotationLayer extends __FeatureLayerSansType {
46
+ export interface AnnotationLayerEvents extends EditBusLayerEvents, RefreshableLayerEvents, LayerEvents {}
47
+
48
+ export default class AnnotationLayer extends AnnotationLayerSuperclass {
49
+ /**
50
+ * @deprecated
51
+ * Do not directly reference this property.
52
+ * Use EventNames and EventTypes helpers from \@arcgis/core/Evented
53
+ */
54
+ "@eventTypes": AnnotationLayerEvents;
8
55
  /**
9
56
  * @example
10
- * const annotationLayer = new AnnotationLayer({
11
- * url: "..."
57
+ * // Create an annotation layer from a feature service layer URL.
58
+ * ```js
59
+ * const layer = new AnnotationLayer({
60
+ * url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/RiversAnnotation/FeatureServer/0"
12
61
  * });
13
- * @see [Client-side FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#client-side)
62
+ * ```
63
+ */
64
+ constructor(properties?: AnnotationLayerProperties);
65
+ /**
66
+ * An array of fields in the layer.
67
+ *
68
+ * @see [objectIdField](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/#objectIdField)
69
+ */
70
+ get fields(): Field[];
71
+ /**
72
+ * An array of field names from the service to include with each feature.
73
+ * To fetch the values from all fields in the layer, use `["*"]`.
74
+ * Set this property to include the fields that will be used for client-side
75
+ * [queries](https://developers.arcgis.com/javascript/latest/references/core/views/layers/AnnotationLayerView/#queryFeatures)
76
+ * if the fields are not part of required fields.
77
+ *
78
+ * @see [AnnotationLayerView.availableFields](https://developers.arcgis.com/javascript/latest/references/core/views/layers/AnnotationLayerView/#availableFields)
79
+ * @see [fieldUtils](https://developers.arcgis.com/javascript/latest/references/core/layers/support/fieldUtils/)
14
80
  * @example
15
- * // Typical usage
16
- * // Create featurelayer from feature service
17
- * const layer = new FeatureLayer({
18
- * // URL to the service
19
- * url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0"
20
- * });
81
+ * // Includes all fields from the service in the layer
82
+ * layer.outFields = ["*"];
83
+ * @example
84
+ * // Get the specified fields from the service in the layer.
85
+ * // These fields will be added to AnnotationLayerView.availableFields.
86
+ * // Use these fields for client-side filtering and querying.
87
+ * layer.outFields = ["NAME", "POP_2010", "FIPS", "AREA"];
88
+ */
89
+ accessor outFields: string[] | null | undefined;
90
+ /**
91
+ * Indicates whether to display popups when features in the layer are clicked. The layer needs to have a [popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/#popupTemplate) to define what
92
+ * information should be displayed in the popup. Alternatively, a default popup template may be automatically used if
93
+ * [Popup.defaultPopupTemplateEnabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/#defaultPopupTemplateEnabled) is set to `true`.
21
94
  *
22
- * // Typical usage
23
- * // Create featurelayer from client-side graphics
24
- * const layer = new FeatureLayer({
25
- * source: graphics,
26
- * fields: [{
27
- * name: "ObjectID",
28
- * alias: "ObjectID",
29
- * type: "oid"
30
- * }, {
31
- * name: "place",
32
- * alias: "Place",
33
- * type: "string"
34
- * }],
35
- * objectIdField: "ObjectID",
36
- * geometryType: "point"
37
- * });
95
+ * @default true
96
+ * @see [createPopupTemplate()](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/#createPopupTemplate)
97
+ * @see [SceneView.popup](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#popup)
98
+ * @see [View2D.popup](https://developers.arcgis.com/javascript/latest/references/core/views/View2D/#popup)
38
99
  */
39
- constructor(properties?: AnnotationLayerProperties);
100
+ accessor popupEnabled: boolean;
101
+ /**
102
+ * The popup template for the layer. When set on the layer, the `popupTemplate`
103
+ * allows users to access attributes and display their values in the
104
+ * view's Popup when a feature is selected
105
+ * using text and/or charts. See the [PopupTemplate sample](https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/)
106
+ * for an example of how [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/) interacts with an
107
+ * [AnnotationLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/).
108
+ *
109
+ * A default popup template is automatically used if no `popupTemplate` has been defined when
110
+ * [Popup.defaultPopupTemplateEnabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/#defaultPopupTemplateEnabled)
111
+ * is set to `true`.
112
+ *
113
+ * @see [createPopupTemplate()](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/#createPopupTemplate)
114
+ * @see [SceneView.popup](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#popup)
115
+ * @see [View2D.popup](https://developers.arcgis.com/javascript/latest/references/core/views/View2D/#popup)
116
+ */
117
+ get popupTemplate(): PopupTemplate | null | undefined;
118
+ set popupTemplate(value: PopupTemplateProperties | null | undefined);
40
119
  /** The layer type provides a convenient way to check the type of the layer without the need to import specific layer modules. */
41
120
  get type(): "annotation";
42
- }
121
+ /**
122
+ * Creates a popup template for the layer, populated with all the fields of the layer.
123
+ *
124
+ * @param options - Options for creating the popup template.
125
+ * @returns The popup template, or `null` if the layer does not
126
+ * have any fields.
127
+ */
128
+ createPopupTemplate(options?: CreatePopupTemplateOptions): PopupTemplate | null | undefined;
129
+ /**
130
+ * Creates a query object that respects the layer's current filters.
131
+ *
132
+ * @returns A query object initialized from the layer configuration.
133
+ */
134
+ createQuery(): Query;
135
+ /**
136
+ * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the feature service and
137
+ * returns the [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/) of features that satisfy the query. If no
138
+ * parameters are specified, then the extent and count of all features
139
+ * satisfying the layer's configuration/filters are returned.
140
+ *
141
+ * > [!WARNING]
142
+ * >
143
+ * > To query for the extent of features/graphics available to or visible in the
144
+ * > [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/) on the client rather than making a server-side query, you must use the
145
+ * > [AnnotationLayerView.queryExtent()](https://developers.arcgis.com/javascript/latest/references/core/views/layers/AnnotationLayerView/#queryExtent) method.
146
+ *
147
+ * @param query - Specifies the attributes and spatial
148
+ * filter of the query. If no parameters are specified, then the extent and count of all features
149
+ * satisfying the layer's configuration/filters are returned.
150
+ * @param options - An object with the following properties.
151
+ * @returns When resolved, returns the extent and count of the features
152
+ * that satisfy the input query. See the object specification table below for details.
153
+ * Property | Type | Description
154
+ * ---------|------|-------------
155
+ * count | Number | The number of features that satisfy the input query.
156
+ * extent | [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/) \| null | The extent of the features that satisfy the query.
157
+ * @see [Sample - Zoom to extent of all features](https://developers.arcgis.com/javascript/latest/sample-code/featurelayer-queryextent/)
158
+ * @example
159
+ * // Queries for the extent of all features matching the layer's configurations
160
+ * // e.g. definitionExpression
161
+ * layer.queryExtent().then((results) => {
162
+ * // go to the extent of the results satisfying the query
163
+ * view.goTo(results.extent);
164
+ * });
165
+ */
166
+ queryExtent(query?: QueryProperties | null | undefined, options?: RequestOptions): Promise<{
167
+ count: number;
168
+ extent: Extent | null;
169
+ }>;
170
+ /**
171
+ * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the feature service and
172
+ * returns the number of features that satisfy the query. If no parameters are specified,
173
+ * the total number of features satisfying the layer's configuration/filters is returned.
174
+ *
175
+ * > [!WARNING]
176
+ * >
177
+ * > To query for the count of features/graphics available to or visible in the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/)
178
+ * > on the client rather than making a server-side query, you must use the
179
+ * > [AnnotationLayerView.queryFeatureCount()](https://developers.arcgis.com/javascript/latest/references/core/views/layers/AnnotationLayerView/#queryFeatureCount) method.
180
+ *
181
+ * @param query - Specifies the attributes and
182
+ * spatial filter of the query. If no parameters are specified, the total number of features
183
+ * satisfying the layer's configuration/filters is returned.
184
+ * @param options - An object with the following properties.
185
+ * @returns When resolved, returns the number of features that satisfy the query.
186
+ * @see [Sample - Query features from a FeatureLayer](https://developers.arcgis.com/javascript/latest/sample-code/featurelayer-query/)
187
+ * @example
188
+ * // Queries for the count of all features matching the layer's configurations
189
+ * // e.g. definitionExpression
190
+ * layer.queryFeatureCount().then((numFeatures) => {
191
+ * // prints the total count to the console
192
+ * console.log(numFeatures);
193
+ * });
194
+ */
195
+ queryFeatureCount(query?: QueryProperties | null | undefined, options?: RequestOptions): Promise<number>;
196
+ /**
197
+ * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the feature service and returns a
198
+ * [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) once the promise resolves.
199
+ * A [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) contains an array of [features](https://developers.arcgis.com/javascript/latest/references/core/Graphic/).
200
+ * See the [querying](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#querying)
201
+ * section for more information on how to query features from a layer.
202
+ *
203
+ * > [!WARNING]
204
+ * >
205
+ * > **Notes**
206
+ * >
207
+ * > To query features available to or visible in the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/) on the client rather than making a server-side query, you must
208
+ * > use the [AnnotationLayerView.queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/views/layers/AnnotationLayerView/#queryFeatures) method.
209
+ * >
210
+ * > When querying a service with z-values and no [vertical coordinate system](https://doc.esri.com/en/arcgis-pro/latest/help/mapping/properties/vertical-coordinate-systems.html) information,
211
+ * > the z-values will automatically be converted to match the [Query.outSpatialReference](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outSpatialReference) units.
212
+ * > Example: The service has a horizontal spatial reference using `feet` units and the query is made with `outSpatialReference`
213
+ * > based on `meter` units, then [queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationLayer/#queryFeatures) automatically converts the values from `feet` to `meter` units.
214
+ *
215
+ * @param query - Specifies the attributes and spatial
216
+ * filter of the query. If no parameters are specified, then all features satisfying the layer's
217
+ * configuration/filters are returned.
218
+ * @param options - An object with the following properties.
219
+ * @returns When resolved, a [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) containing
220
+ * an array of graphic features is returned.
221
+ * @see [Sample - Query features from a FeatureLayer](https://developers.arcgis.com/javascript/latest/sample-code/featurelayer-query/)
222
+ * @see [Query and filter guide](https://developers.arcgis.com/javascript/latest/query-filter/)
223
+ * @example
224
+ * // Queries for all the features matching the layer's configurations
225
+ * // e.g. definitionExpression
226
+ * layer.queryFeatures().then((results) => {
227
+ * // prints the array of result graphics to the console
228
+ * console.log(results.features);
229
+ * });
230
+ * @example
231
+ * const layer = new AnnotationLayer({
232
+ * url: fsUrl // points to a Feature Service layer url
233
+ * });
234
+ *
235
+ * const query = new Query();
236
+ * query.where = "STATE_NAME = 'Washington'";
237
+ * query.outSpatialReference = { wkid: 102100 };
238
+ * query.returnGeometry = true;
239
+ * query.outFields = [ "CITY_NAME" ];
240
+ *
241
+ * layer.queryFeatures(query).then((results) => {
242
+ * console.log(results.features); // prints the array of features to the console
243
+ * });
244
+ */
245
+ queryFeatures(query?: QueryProperties | null | undefined, options?: RequestOptions): Promise<FeatureSet>;
246
+ /**
247
+ * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the feature service and returns an
248
+ * array of Object IDs for features that satisfy the input query. If no parameters are specified,
249
+ * then the Object IDs of all features satisfying the layer's configuration/filters are returned.
250
+ *
251
+ * > [!WARNING]
252
+ * >
253
+ * > To query for ObjectIDs of features available to or visible in the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/) on the client rather
254
+ * > than making a server-side query, you must use the
255
+ * > [AnnotationLayerView.queryObjectIds()](https://developers.arcgis.com/javascript/latest/references/core/views/layers/AnnotationLayerView/#queryObjectIds) method.
256
+ *
257
+ * @param query - Specifies the attributes and spatial
258
+ * filter of the query. If no parameters are specified, then the Object IDs of all features
259
+ * satisfying the layer's configuration/filters are returned.
260
+ * @param options - An object with the following properties.
261
+ * @returns When resolved, returns an array of numbers representing the object IDs of the features satisfying the query.
262
+ * @see [Sample - Query Related Features](https://developers.arcgis.com/javascript/latest/sample-code/query-related-features/)
263
+ * @example
264
+ * // Queries for all the Object IDs of features matching the layer's configurations
265
+ * // e.g. definitionExpression
266
+ * layer.queryObjectIds().then((results) => {
267
+ * // prints the array of Object IDs to the console
268
+ * console.log(results);
269
+ * });
270
+ */
271
+ queryObjectIds(query?: QueryProperties | null | undefined, options?: RequestOptions): Promise<ObjectId[]>;
272
+ }
273
+ declare const AnnotationLayerSuperclass: typeof Layer & typeof ClonableMixin & typeof APIKeyMixin & typeof CustomParametersMixin & typeof MultiOriginJSONSupportMixin & typeof PortalLayer & typeof OperationalLayer & typeof RefreshableLayer & typeof ScaleRangeLayer & typeof TemporalLayer & typeof BlendLayer & typeof FeatureLayerBase
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../request.js";import r from"../core/Error.js";import{join as o}from"../core/urlUtils.js";import{subclass as a}from"../core/accessorSupport/decorators.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import n from"./FeatureLayer.js";let i=class extends n{constructor(e){super(e),this.supportedSourceTypes=new Set(["Annotation Layer"]),this.type="annotation",this._dataElementPromise=null}async fetchDataElement(e){if(this._dataElementPromise)return this._dataElementPromise;if(!this.url)throw new Error("InternalError: A URL is required to retrieve the data element for this layer.");const a=o(this.url,"queryDataElements"),s={f:"json",layers:this.layerId};return this._dataElementPromise=t(a,{...e,responseType:"json",query:s}).then(e=>{const t=e.data.layerDataElements,o=this.layerId,a=t.find(e=>e.layerId===o);if(!a)throw new r("fetchDataElement:not-available","A data element for this layer could not be retrieved.");return a.dataElement}),this._dataElementPromise}};e([s({json:{read:!1},value:"annotation",readOnly:!0})],i.prototype,"type",void 0),i=e([a("esri.layers.AnnotationLayer")],i);const l=i;export{l as default};
2
+ import{__addDisposableResource as e,__disposeResources as r,__decorate as t}from"tslib";import s from"../PopupTemplate.js";import i from"../request.js";import{ClonableMixin as o}from"../core/Clonable.js";import a from"../core/Collection.js";import n from"../core/Error.js";import{disposable as l,makeHandle as p}from"../core/handleUtils.js";import{MultiOriginJSONSupportMixin as u}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as d,whenOrAbort as m,onAbort as y}from"../core/promiseUtils.js";import{watch as h,sync as c}from"../core/reactiveUtils.js";import{join as f}from"../core/urlUtils.js";import{property as b,subclass as g}from"../core/accessorSupport/decorators.js";import v from"../graphic/AnnotationGraphicOrigin.js";import j from"./Layer.js";import{APIKeyMixin as E}from"./mixins/APIKeyMixin.js";import{ArcGISService as S}from"./mixins/ArcGISService.js";import{BlendLayer as L}from"./mixins/BlendLayer.js";import{CustomParametersMixin as w}from"./mixins/CustomParametersMixin.js";import{FeatureLayerBase as I}from"./mixins/FeatureLayerBase.js";import{OperationalLayer as P}from"./mixins/OperationalLayer.js";import{PortalLayer as x}from"./mixins/PortalLayer.js";import{RefreshableLayer as O}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as T}from"./mixins/ScaleRangeLayer.js";import{TemporalLayer as F}from"./mixins/TemporalLayer.js";import A from"./support/AnnotationSublayer.js";import{barrierWeight as _,popupEnabled as q}from"./support/commonProperties.js";import{ensureLayerCredential as C,createQuery as U,getFieldDomain as D,hasDataChanged as G}from"./support/featureLayerUtils.js";import{defineFieldProperties as N}from"./support/fieldProperties.js";import{fixTimeInfoFields as Q}from"./support/fieldUtils.js";import{serviceSupportsSpatialReference as H}from"./support/versionUtils.js";import J from"../rest/support/Query.js";import{createPopupTemplate as R}from"../support/popupUtils.js";import{reader as M}from"../core/accessorSupport/decorators/reader.js";const k="annotation-layer",B=N(),K=a.ofType(A);let V=class extends(I(L(F(T(O(S(P(x(u(w(E(o(j))))))))))))){constructor(e){super(e),this.barrierWeight="high",this.fields=null,this.fieldsIndex=null,this.graphicOrigin=new v(this),this.operationalLayerType="ArcGISAnnotationLayer",this.outFields=null,this.popupEnabled=!0,this.popupTemplate=null,this.source=null,this.supportedSourceTypes=new Set(["Annotation Layer"]),this.type="annotation",this._dataElementPromise=null,this.addHandles(h(()=>this.sublayers,(e,r)=>this._handleSublayersChange(e,r),c))}destroy(){this.source?.destroy()}load(e){const r=e?.signal,t=this.loadFromPortal({supportedTypes:["Feature Service"]},e).catch(d).then(async()=>{if(this.url&&null==this.layerId&&/FeatureServer|MapServer\/*$/i.test(this.url)){const e=await this._fetchFirstValidLayerId(r);null!=e&&(this.layerId=e)}if(!this.url)throw new n(`${k}:missing-url`,"AnnotationLayer must be created with a url");return this.initLayerProperties(await this.createGraphicsSource(r))}).then(()=>C(this,"load",e));return this.addResolvingPromise(t),Promise.resolve(this)}get editingEnabled(){return this._isOverridden("editingEnabled")?this._get("editingEnabled"):this.loaded&&null!=this.capabilities&&this.capabilities.operations.supportsEditing&&this.userHasEditingPrivileges}set editingEnabled(e){this._overrideIfSome("editingEnabled",e)}get effectiveEditingEnabled(){return!1}get defaultPopupTemplate(){return this.createPopupTemplate()}readSublayers(e,r){const t=new K(r.subtypes.map(({code:e,name:r})=>new A({subtypeCode:e,title:r})).reverse());if(this.visibleLayers){const e=new Set(this.visibleLayers);t.forEach(r=>{r.visible=e.has(r.subtypeCode)})}return t}get visibleLayers(){return this.sublayers?Array.from(new Set(this.sublayers?.toArray().filter(e=>e.visible).map(e=>e.subtypeCode)??null)):this._get("visibleLayers")??[]}set visibleLayers(e){this._set("visibleLayers",e)}createPopupTemplate(e){return R(this,e)}async createGraphicsSource(t){const s={stack:[],error:void 0,hasError:!1};try{const{default:r}=await m(import("./graphics/sources/FeatureLayerSource.js"),t),i=new r({layer:this,supportedSourceTypes:this.supportedSourceTypes});e(s,l(y(t,()=>i.cancelLoad())??p()),!1);return await i.load({signal:t}),i}catch(i){s.error=i,s.hasError=!0}finally{r(s)}}createQuery(){const e=U(this);return e.where=this.definitionExpression||"1=1",e}async fetchDataElement(e){if(this._dataElementPromise)return this._dataElementPromise;if(!this.url)throw new Error("InternalError: A URL is required to retrieve the data element for this layer.");const r=f(this.url,"queryDataElements"),t={f:"json",layers:this.layerId};return this._dataElementPromise=i(r,{...e,responseType:"json",query:t}).then(e=>{const r=e.data.layerDataElements,t=this.layerId,s=r.find(e=>e.layerId===t);if(!s)throw new n("fetchDataElement:not-available","A data element for this layer could not be retrieved.");return s.dataElement}),this._dataElementPromise}getFieldDomain(e,r){return D(this,e,r,this.getField(e)?.domain??null)}async queryFeatures(e,r){const t=await this.load(),s=await t.source.queryFeatures(J.from(e)??t.createQuery(),r),i=this.graphicOrigin;if(s?.features)for(const o of s.features)o.layer=o.sourceLayer=t,o.origin=i;return s}async queryObjectIds(e,r){const t=await this.load();return t.source.queryObjectIds(J.from(e)??t.createQuery(),r)}async queryFeatureCount(e,r){const t=await this.load();return t.source.queryFeatureCount(J.from(e)??t.createQuery(),r)}async queryExtent(e,r){const t=await this.load();return t.source.queryExtent(J.from(e)??t.createQuery(),r)}serviceSupportsSpatialReference(e){return this.loaded&&H(this,e)}async initLayerProperties(e){this._set("source",e),e.sourceJSON&&(this.sourceJSON=e.sourceJSON,this.read(e.sourceJSON,{origin:"service",portalItem:this.portalItem,portal:this.portalItem?.portal,url:this.parsedUrl})),Q(this.timeInfo,this.fieldsIndex)}async hasDataChanged(){return G(this)}_fetchFirstValidLayerId(e){return i(this.url??"",{query:{f:"json",...this.customParameters,token:this.apiKey},responseType:"json",signal:e}).then(e=>{const r=e.data;if(!r)return;this.applyPreferredHost(r);const t=[...r.layers||[],...r.tables||[]];return t.find(({type:e})=>!e||this.supportedSourceTypes.has(e))?.id})}_handleSublayersChange(e,r){r&&(r.forEach(e=>{e.parent=null}),this.removeHandles("sublayers-owner")),e&&(e.forEach(e=>{e.parent=this}),this.addHandles([e.on("after-add",({item:e})=>{e.parent=this}),e.on("after-remove",({item:e})=>{e.parent=null})],"sublayers-owner"))}};t([b(_)],V.prototype,"barrierWeight",void 0),t([b({json:{write:!0}})],V.prototype,"editingEnabled",null),t([b({readOnly:!0})],V.prototype,"effectiveEditingEnabled",null),t([b({...B.fields,readOnly:!0,json:{read:!1,origins:{service:{read:!0}}}})],V.prototype,"fields",void 0),t([b(B.fieldsIndex)],V.prototype,"fieldsIndex",void 0),t([b({readOnly:!0,clonable:!1})],V.prototype,"graphicOrigin",void 0),t([b({type:["ArcGISAnnotationLayer"]})],V.prototype,"operationalLayerType",void 0),t([b(B.outFields)],V.prototype,"outFields",void 0),t([b(q)],V.prototype,"popupEnabled",void 0),t([b({type:s,json:{name:"popupInfo",write:!0}})],V.prototype,"popupTemplate",void 0),t([b({readOnly:!0})],V.prototype,"defaultPopupTemplate",null),t([b({clonable:!1,readOnly:!0})],V.prototype,"source",void 0),t([b({type:K})],V.prototype,"sublayers",void 0),t([M("service","sublayers",["subtypes"])],V.prototype,"readSublayers",null),t([b({json:{read:!1},value:"annotation",readOnly:!0})],V.prototype,"type",void 0),t([b({type:[Number],json:{write:{ignoreOrigin:!0}}})],V.prototype,"visibleLayers",null),V=t([g("esri.layers.AnnotationLayer")],V);const W=V;export{W as default};