@arcgis/core 5.2.0-next.13 → 5.2.0-next.14

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 (303) hide show
  1. package/arcgisGlobal.d.ts +3 -3
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/03354e9256b2f77fd4f2.js +1 -0
  4. package/assets/esri/core/workers/chunks/0826d36dfbfa28442b70.js +1 -0
  5. package/assets/esri/core/workers/chunks/{87c2d4d58c2487324fb7.js → 0a8ba5cb857f61de40fb.js} +3 -3
  6. package/assets/esri/core/workers/chunks/152f1c08197955224ad3.js +1 -0
  7. package/assets/esri/core/workers/chunks/1a0903b1d2d5101977c6.js +1 -0
  8. package/assets/esri/core/workers/chunks/{de541ad390a8d258d2e6.js → 1d5db8746a4f1ed1d18f.js} +1 -1
  9. package/assets/esri/core/workers/chunks/1effde6a39ef0d4af525.js +1 -0
  10. package/assets/esri/core/workers/chunks/{2a5176533e78a92d8e5b.js → 20c729fca2e4b4c6b28d.js} +1 -1
  11. package/assets/esri/core/workers/chunks/23d50c4478f40a7d62bf.js +1 -0
  12. package/assets/esri/core/workers/chunks/2623cd08487fdc9a94f1.js +1 -0
  13. package/assets/esri/core/workers/chunks/2c3fc2805f6de0963789.js +1 -0
  14. package/assets/esri/core/workers/chunks/2c4f10eaf02ef090ee8f.js +1 -0
  15. package/assets/esri/core/workers/chunks/314bc1b356d43bfa72a8.js +1 -0
  16. package/assets/esri/core/workers/chunks/{34544c79ce568f30a094.js → 31762eb20a9a0ed3f8b0.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{26dca1d387183282276a.js → 318a2702632aaa4d3a63.js} +1 -1
  18. package/assets/esri/core/workers/chunks/3526ab3b1f87c24ae6f8.js +1 -0
  19. package/assets/esri/core/workers/chunks/{81808c3aead7dfac3049.js → 38cfedce779dd75bd217.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{5075e85e1eafd431a8c0.js → 39c994536ce6c1e5c956.js} +1 -1
  21. package/assets/esri/core/workers/chunks/3b74749db78bcba2bc16.js +1 -0
  22. package/assets/esri/core/workers/chunks/3d83ac791212b81c9d11.js +1 -0
  23. package/assets/esri/core/workers/chunks/3ecb906322a6a5c8c93b.js +1 -0
  24. package/assets/esri/core/workers/chunks/3f67162456a1f02190fa.js +1 -0
  25. package/assets/esri/core/workers/chunks/{ef46ef4f0ee9f2aeaa4a.js → 426b8e1e2eef2460851d.js} +1 -1
  26. package/assets/esri/core/workers/chunks/4376bc2934a996d8bc27.js +1 -0
  27. package/assets/esri/core/workers/chunks/44d0ca9d4c5f1722688c.js +1 -0
  28. package/assets/esri/core/workers/chunks/{e25bcfdd8f20f8a08b19.js → 4d57c771af4137f74bfb.js} +1 -1
  29. package/assets/esri/core/workers/chunks/4e4419282c4bf7ee4678.js +1 -0
  30. package/assets/esri/core/workers/chunks/4e788fc6cb2ea936f676.js +1 -0
  31. package/assets/esri/core/workers/chunks/4f51963815b0d53ffbd9.js +1 -0
  32. package/assets/esri/core/workers/chunks/5100b5a6a506c704dfaf.js +1 -0
  33. package/assets/esri/core/workers/chunks/52afd43bbe23e358efb5.js +1 -0
  34. package/assets/esri/core/workers/chunks/5aba23584e0b230c75f5.js +1 -0
  35. package/assets/esri/core/workers/chunks/{d3c760109a70a71448c5.js → 67773a9f031d9f1d672f.js} +1 -1
  36. package/assets/esri/core/workers/chunks/6f7193b9ff5942c0d354.js +1 -0
  37. package/assets/esri/core/workers/chunks/70737052bab29fcaa120.js +1 -0
  38. package/assets/esri/core/workers/chunks/718d2d430c1a5a940b83.js +1 -0
  39. package/assets/esri/core/workers/chunks/71c996e1ae84d9daddf2.js +1 -0
  40. package/assets/esri/core/workers/chunks/753e0b21e57c12c742ee.js +1 -0
  41. package/assets/esri/core/workers/chunks/764c8ba14ab74b66b391.js +1 -0
  42. package/assets/esri/core/workers/chunks/{1996f0a930abdd97b855.js → 7a8ed08cd173963b3112.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{cc697c4d9cdc116373dc.js → 81726d997a2d34449bb2.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{74e1826ad9e2c4fd3b42.js → 81883bca8a79ee2ddb00.js} +1 -1
  45. package/assets/esri/core/workers/chunks/{9fee0110dc7fee4c95e2.js → 854c320af09b6afc4b80.js} +2 -2
  46. package/assets/esri/core/workers/chunks/85505a8b8b0794656d06.js +1 -0
  47. package/assets/esri/core/workers/chunks/859bc873e7af911a518f.js +1 -0
  48. package/assets/esri/core/workers/chunks/{8407c91cce31e087b41b.js → 886ae23a1d8fa21e531f.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{3ff7aa216cd794d951e8.js → 8e99f937fd36cf2cd05f.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{c357c0a08b99c1e7f290.js → 9331969046f2b277d620.js} +1 -1
  51. package/assets/esri/core/workers/chunks/93d08d82ceab19e314f8.js +1 -0
  52. package/assets/esri/core/workers/chunks/97a654e8054302582a3b.js +1 -0
  53. package/assets/esri/core/workers/chunks/97d2bdbea39cbcf8fd0f.js +1 -0
  54. package/assets/esri/core/workers/chunks/a0208e35b217808777c4.js +1 -0
  55. package/assets/esri/core/workers/chunks/{f25bb204cf6727f6fdef.js → a0876a52a3c2ad849370.js} +1 -1
  56. package/assets/esri/core/workers/chunks/{7ad09ac5793e8d47b4b2.js → a4b970a841b3085500fc.js} +1 -1
  57. package/assets/esri/core/workers/chunks/aa5f36d7ed59c625ba78.js +1 -0
  58. package/assets/esri/core/workers/chunks/b045bffb4f2eb9203183.js +1 -0
  59. package/assets/esri/core/workers/chunks/b590402170ae289290d7.js +1 -0
  60. package/assets/esri/core/workers/chunks/b9935cc8e2bd4045058a.js +1 -0
  61. package/assets/esri/core/workers/chunks/{1a527c0740d9f4fa0791.js → bc547cf814d6703cef59.js} +1 -1
  62. package/assets/esri/core/workers/chunks/bcc097271f5cdf0a97a7.js +1 -0
  63. package/assets/esri/core/workers/chunks/bdc66ef2b6ed783047d5.js +1 -0
  64. package/assets/esri/core/workers/chunks/be1d2c3a61e6447fbbc7.js +1 -0
  65. package/assets/esri/core/workers/chunks/bf6ae205fbfbfcd1a0ee.js +1 -0
  66. package/assets/esri/core/workers/chunks/bfd1aef8ac795e1ce227.js +1 -0
  67. package/assets/esri/core/workers/chunks/c148ad0ea9258046ac1f.js +1 -0
  68. package/assets/esri/core/workers/chunks/{0f75c19d8e296a32e329.js → c2cd80b712f29e8cbb8d.js} +1 -1
  69. package/assets/esri/core/workers/chunks/cc0efa716b8414a44398.js +1 -0
  70. package/assets/esri/core/workers/chunks/{8f6833671c071b522923.js → cd66bd30f654fe571e57.js} +1 -1
  71. package/assets/esri/core/workers/chunks/cf41a66fb97c1076fb34.js +1 -0
  72. package/assets/esri/core/workers/chunks/cf8ce21dc649021e97f6.js +1 -0
  73. package/assets/esri/core/workers/chunks/d3be4d914fc99a1d686c.js +1 -0
  74. package/assets/esri/core/workers/chunks/dbd2bfcbf3e0f86f07b8.js +1 -0
  75. package/assets/esri/core/workers/chunks/{6675d56f49d07a97dc40.js → dd0c1cf921369e2bc48b.js} +1 -1
  76. package/assets/esri/core/workers/chunks/df18b0a653b328d8d052.js +1 -0
  77. package/assets/esri/core/workers/chunks/df54e741db40b308c2dd.js +2 -0
  78. package/assets/esri/core/workers/chunks/{89e09276086745aa21fa.js → e4e2f479c0c45ae1b2c3.js} +1 -1
  79. package/assets/esri/core/workers/chunks/e656fd5ecf9ac059a87b.js +1 -0
  80. package/assets/esri/core/workers/chunks/{58a7cdebc3d182c15ec6.js → e77df11aee136d64ff0f.js} +1 -1
  81. package/assets/esri/core/workers/chunks/{7a474ce61cf484df87b4.js → e80376832050a4b6d28a.js} +1 -1
  82. package/assets/esri/core/workers/chunks/f116331c6eca937aac8e.js +1 -0
  83. package/assets/esri/core/workers/chunks/{3b837b512999e6ab24bc.js → f148666308071bdb185a.js} +1 -1
  84. package/assets/esri/core/workers/chunks/f23e995320674b32e142.js +1 -0
  85. package/assets/esri/core/workers/chunks/f334bf192dff5af10a70.js +1 -0
  86. package/assets/esri/core/workers/chunks/f76b1fc36f5606cac2c8.js +1 -0
  87. package/assets/esri/core/workers/chunks/{893c0d28a5bf3f9f29f1.js → f93facf47aba9b128fcc.js} +1 -1
  88. package/assets/esri/core/workers/chunks/fa1336b60278017d2525.js +1 -0
  89. package/assets/esri/core/workers/chunks/{c911f0b5bdd43b66b731.js → fa3faec65882c5b6f1a0.js} +1 -1
  90. package/assets/esri/core/workers/chunks/fccc34b86454c56f27ab.js +1 -0
  91. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  92. package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core-simd.wasm +0 -0
  93. package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core.wasm +0 -0
  94. package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +5 -1
  95. package/assets/esri/themes/dark/main.css +1 -1
  96. package/assets/esri/themes/light/main.css +1 -1
  97. package/assets/esri/themes/light/view.css +1 -1
  98. package/assets/esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis.json +1 -1
  99. package/assets/esri/views/3d/analysis/ShadowCast/t9n/ShadowCastAnalysis_en.json +1 -1
  100. package/chunks/Component.glsl.js +6 -6
  101. package/chunks/GlobalIlluminationBlur.glsl.js +7 -7
  102. package/chunks/arcgis-knowledge-client-core-simd.js +1 -1
  103. package/chunks/arcgis-knowledge-client-core.js +1 -1
  104. package/chunks/bundle2.js +1 -1
  105. package/config.js +1 -1
  106. package/core/promiseUtils.d.ts +1 -1
  107. package/core/promiseUtils.js +1 -1
  108. package/core/units.js +1 -1
  109. package/form/types.d.ts +1 -1
  110. package/geometry/Mesh.d.ts +220 -95
  111. package/geometry/operators/support/projectionZScaling.js +1 -1
  112. package/geometry/support/MeshGeoreferencedVertexSpace.d.ts +35 -13
  113. package/geometry/support/MeshLocalVertexSpace.d.ts +32 -8
  114. package/geometry/support/MeshVertexAttributes.d.ts +6 -2
  115. package/geometry/support/heightModelInfoUtils.js +1 -1
  116. package/geometry/support/zscale.js +1 -1
  117. package/graphic/{AnnotationGraphicOrigin.d.ts → AnnotationFeatureGraphicOrigin.d.ts} +9 -9
  118. package/graphic/{AnnotationGraphicOrigin.js → AnnotationFeatureGraphicOrigin.js} +1 -1
  119. package/interfaces.d.ts +3 -3
  120. package/kernel.js +1 -1
  121. package/layers/{AnnotationLayer.d.ts → AnnotationFeatureLayer.d.ts} +24 -24
  122. package/layers/AnnotationFeatureLayer.js +2 -0
  123. package/layers/GaussianSplatLayer.d.ts +4 -1
  124. package/layers/graphics/data/QueryEngine.js +1 -1
  125. package/layers/graphics/data/queryUtils.js +1 -1
  126. package/layers/graphics/sources/parquet/ParquetFileStatistics.js +1 -1
  127. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  128. package/layers/graphics/sources/support/parquetIdUtils.js +1 -1
  129. package/layers/save/featureLayerUtils.js +1 -1
  130. package/layers/support/AnnotationSublayer.d.ts +7 -7
  131. package/layers/support/FeatureEffect.d.ts +3 -2
  132. package/layers/support/arcgisLayers.js +1 -1
  133. package/layers/support/fetchService.js +1 -1
  134. package/layers/support/layerUtils.js +1 -1
  135. package/layers/support/layersLoader.js +1 -1
  136. package/layers/support/parquetUtils.js +1 -1
  137. package/layers/support/schemaValidator.js +1 -1
  138. package/layers/types.d.ts +1 -1
  139. package/networks/Network.js +1 -1
  140. package/networks/UtilityNetwork.js +1 -1
  141. package/networks/support/networkFieldUtils.js +1 -1
  142. package/package.json +2 -2
  143. package/portal/schemas/definitions.js +1 -1
  144. package/portal/schemas/gaussianSplatLayerItem.js +2 -0
  145. package/portal/schemas/integratedMesh3DTilesLayerItem.js +1 -1
  146. package/portal/support/loadUtils.js +1 -1
  147. package/renderers/support/types.d.ts +1 -1
  148. package/renderers/visualVariables/RotationVariable.d.ts +1 -16
  149. package/renderers/visualVariables/RotationVariable.js +1 -1
  150. package/rest/knowledgeGraph/ReplicaDefinition.d.ts +0 -2
  151. package/rest/knowledgeGraph/ServiceDefinition.d.ts +1 -1
  152. package/rest/knowledgeGraph/wasmInterface/replicaToWasmEncodedFactories.js +1 -1
  153. package/rest/knowledgeGraph/wasmInterface/wasmToReplicaFactories.js +1 -1
  154. package/rest/knowledgeGraphService.js +1 -1
  155. package/rest/networks/support/QueryAssociationsParameters.d.ts +2 -2
  156. package/rest/networks/support/SynthesizeAssociationGeometriesParameters.d.ts +2 -2
  157. package/rest/networks/support/TraceParameters.d.ts +2 -2
  158. package/rest/support/AttributeBinsQuery.js +1 -1
  159. package/rest/support/Query.js +1 -1
  160. package/rest/support/TopFeaturesQuery.js +1 -1
  161. package/support/revision.js +1 -1
  162. package/views/2d/engine/webgl/TextureManager.js +1 -1
  163. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  164. package/views/2d/engine/webgl/util/createMatcher.js +1 -1
  165. package/views/2d/layerViewModuleImportUtils.js +1 -1
  166. package/views/2d/layers/AnnotationFeatureLayerView2D.js +2 -0
  167. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  168. package/views/2d/layers/TileLayerView2D.js +1 -1
  169. package/views/2d/layers/features/sources/strategies/support/queryAdapters.js +1 -1
  170. package/views/2d/layers/support/annodime/annotationSchema.js +1 -1
  171. package/views/2d/types.d.ts +2 -2
  172. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  173. package/views/3d/analysis/ShadowCast/ShadowCastTooltip.js +1 -1
  174. package/views/3d/layerViewModuleImportUtils.js +1 -1
  175. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  176. package/views/3d/support/GaussianSplatSortWorker.js +1 -1
  177. package/views/3d/support/GaussianSplatWorkerHandle.js +1 -1
  178. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
  179. package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +1 -1
  180. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  181. package/views/3d/terrain/Tile.js +1 -1
  182. package/views/3d/terrain/isTerrainSurfaceLayer.js +1 -1
  183. package/views/3d/types.d.ts +1 -1
  184. package/views/3d/webgl-engine/core/shaderLibrary/TextureBackedBuffer.glsl.js +7 -7
  185. package/views/3d/webgl-engine/core/shaderLibrary/TextureBackedBufferFields.glsl.js +29 -20
  186. package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatTextureFetch.glsl.js +6 -8
  187. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TexelFormatInfo.js +2 -0
  188. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBackedBufferFieldCreation.js +1 -1
  189. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBackedBufferLayout.js +1 -1
  190. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js +1 -1
  191. package/views/layers/{AnnotationLayerView.d.ts → AnnotationFeatureLayerView.d.ts} +6 -6
  192. package/views/layers/FeatureLikeLayerView.d.ts +2 -2
  193. package/views/layers/FeatureLikeLayerView.js +1 -1
  194. package/webdoc/widgets/FloorFilter.d.ts +14 -1
  195. package/webdoc/widgets/FloorFilter.js +1 -1
  196. package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
  197. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.d.ts +12 -4
  198. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  199. package/widgets/BatchAttributeForm/ReactiveGraphic.js +1 -1
  200. package/widgets/BatchAttributeForm/ValueChangeTransaction.js +2 -0
  201. package/widgets/BatchAttributeForm/VisibleElements.d.ts +8 -1
  202. package/widgets/BatchAttributeForm/VisibleElements.js +1 -1
  203. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  204. package/widgets/BatchAttributeForm/css.js +1 -1
  205. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  206. package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
  207. package/widgets/BatchAttributeForm/inputs/BatchFormInputs.d.ts +3 -0
  208. package/widgets/BatchAttributeForm/inputs/BatchFormInputs.js +1 -1
  209. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  210. package/widgets/BatchAttributeForm/inputs/GroupInput.js +1 -1
  211. package/widgets/BatchAttributeForm/inputs/InputBase.js +1 -1
  212. package/widgets/BatchAttributeForm/inputs/RelationshipElementInput.js +1 -1
  213. package/widgets/BatchAttributeForm/inputs/support/inputUtils.js +1 -1
  214. package/widgets/BatchAttributeForm/interfaceUtils.js +1 -1
  215. package/widgets/BatchAttributeForm/stringUtils.js +2 -0
  216. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  217. package/widgets/BatchAttributeForm/types.d.ts +19 -3
  218. package/widgets/BatchAttributeForm.js +1 -1
  219. package/widgets/Editor/AddAssociationWorkflow.js +1 -1
  220. package/widgets/Editor/AddAssociationWorkflowData.js +1 -1
  221. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  222. package/widgets/Editor/EditorViewModel.d.ts +1 -1
  223. package/widgets/Editor/EditorViewModel.js +1 -1
  224. package/widgets/Editor/MergeFeaturesWorkflow.d.ts +3 -3
  225. package/widgets/Editor/MergeFeaturesWorkflow.js +1 -1
  226. package/widgets/Editor/SplitFeatureWorkflow.d.ts +3 -3
  227. package/widgets/Editor/SplitFeatureWorkflow.js +1 -1
  228. package/widgets/Editor/UpdateFeatureWorkflow.js +1 -1
  229. package/widgets/Editor/UpdateFeaturesWorkflow.js +1 -1
  230. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  231. package/widgets/Editor/UpdateRecordWorkflowData.js +1 -1
  232. package/widgets/Editor/UpdateWorkflow.js +1 -1
  233. package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
  234. package/widgets/Editor/support/SketchController.js +1 -1
  235. package/widgets/Editor/workflowUtils.js +1 -1
  236. package/widgets/Editor.js +1 -1
  237. package/widgets/FloorFilter/FloorFilterViewModel.d.ts +10 -0
  238. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  239. package/assets/esri/core/workers/chunks/07cc5743cb6a9fd68adb.js +0 -1
  240. package/assets/esri/core/workers/chunks/0bb159ba0226122465cf.js +0 -1
  241. package/assets/esri/core/workers/chunks/160e5b99f1097a473e6b.js +0 -1
  242. package/assets/esri/core/workers/chunks/17e68828ca6ff6912d3e.js +0 -1
  243. package/assets/esri/core/workers/chunks/1e340536d3c5f94920b5.js +0 -1
  244. package/assets/esri/core/workers/chunks/24810c36ae09bb4e83dc.js +0 -1
  245. package/assets/esri/core/workers/chunks/274b82cb183ddd0042f3.js +0 -1
  246. package/assets/esri/core/workers/chunks/297ae764445e6f73a5ea.js +0 -1
  247. package/assets/esri/core/workers/chunks/29aba121db7f00e0cf81.js +0 -1
  248. package/assets/esri/core/workers/chunks/2a3145a595d19391bb8a.js +0 -1
  249. package/assets/esri/core/workers/chunks/3297658ccd8d4b9ce733.js +0 -1
  250. package/assets/esri/core/workers/chunks/38ca59db0e8f45bd7811.js +0 -1
  251. package/assets/esri/core/workers/chunks/3c5534c576528c1921d2.js +0 -1
  252. package/assets/esri/core/workers/chunks/40b3cdf81c79bbc44527.js +0 -2
  253. package/assets/esri/core/workers/chunks/41f12eb7c9b7086528d5.js +0 -1
  254. package/assets/esri/core/workers/chunks/426156137f279d979ddd.js +0 -1
  255. package/assets/esri/core/workers/chunks/4714241189c13d0db897.js +0 -1
  256. package/assets/esri/core/workers/chunks/537c5dd4cd0a067199d1.js +0 -1
  257. package/assets/esri/core/workers/chunks/538537f9bc866d9caa75.js +0 -1
  258. package/assets/esri/core/workers/chunks/5437a1c05c1bd2175981.js +0 -1
  259. package/assets/esri/core/workers/chunks/58ac245ff7fb57c1004f.js +0 -1
  260. package/assets/esri/core/workers/chunks/5c7aff9604b4576a0e1d.js +0 -1
  261. package/assets/esri/core/workers/chunks/5d3ddbf94539cb4f493e.js +0 -1
  262. package/assets/esri/core/workers/chunks/5eb9fdb076488de9cd83.js +0 -1
  263. package/assets/esri/core/workers/chunks/603177137eb680afe371.js +0 -1
  264. package/assets/esri/core/workers/chunks/629099f05ca5c9ca1973.js +0 -1
  265. package/assets/esri/core/workers/chunks/62f78fa455d556008f6a.js +0 -1
  266. package/assets/esri/core/workers/chunks/686c51fd2144e132783e.js +0 -1
  267. package/assets/esri/core/workers/chunks/6f0341cfa4c68e6e60b3.js +0 -1
  268. package/assets/esri/core/workers/chunks/70229007d594536ba6a3.js +0 -1
  269. package/assets/esri/core/workers/chunks/7e89cb9ff615742e0894.js +0 -1
  270. package/assets/esri/core/workers/chunks/890b7a1153b7f65eba9a.js +0 -1
  271. package/assets/esri/core/workers/chunks/9660ae52fb3951a19e9c.js +0 -1
  272. package/assets/esri/core/workers/chunks/a4245bd4e67a428fd835.js +0 -1
  273. package/assets/esri/core/workers/chunks/ac33b10fe65f9e9e824f.js +0 -1
  274. package/assets/esri/core/workers/chunks/b5937ce657c1fff3864f.js +0 -1
  275. package/assets/esri/core/workers/chunks/c3cf9e6e91f71c9cc5f3.js +0 -1
  276. package/assets/esri/core/workers/chunks/c80fc1b3048e8d58a1f8.js +0 -1
  277. package/assets/esri/core/workers/chunks/cc3e895cff019e811c07.js +0 -1
  278. package/assets/esri/core/workers/chunks/d122431f3b0b88dcb488.js +0 -1
  279. package/assets/esri/core/workers/chunks/d24e027bb8b2c09f25c8.js +0 -1
  280. package/assets/esri/core/workers/chunks/d2df8c328054dc6cb7b7.js +0 -1
  281. package/assets/esri/core/workers/chunks/d41caf20c26f80385265.js +0 -1
  282. package/assets/esri/core/workers/chunks/d468994822f9bc3d6279.js +0 -1
  283. package/assets/esri/core/workers/chunks/d63f532dd7d60ee8ef2c.js +0 -1
  284. package/assets/esri/core/workers/chunks/d64613209a9eb1eafb11.js +0 -1
  285. package/assets/esri/core/workers/chunks/d7be278aed1fb37ad5ec.js +0 -1
  286. package/assets/esri/core/workers/chunks/d8ec0afb2b91ccf32e55.js +0 -1
  287. package/assets/esri/core/workers/chunks/da1e8b338ab9fe9e0a8e.js +0 -1
  288. package/assets/esri/core/workers/chunks/dd920a6f6422fa213eba.js +0 -1
  289. package/assets/esri/core/workers/chunks/e279bcbe4f10e87bde6c.js +0 -1
  290. package/assets/esri/core/workers/chunks/e2de13810dce01b98520.js +0 -1
  291. package/assets/esri/core/workers/chunks/e5837e5ac6ef761f26a2.js +0 -1
  292. package/assets/esri/core/workers/chunks/e82488b9b3bb0c1dedb4.js +0 -1
  293. package/assets/esri/core/workers/chunks/f274a8e8c7ca4294e876.js +0 -1
  294. package/assets/esri/core/workers/chunks/f292c2c22a3822343118.js +0 -1
  295. package/assets/esri/core/workers/chunks/f4f642ddd4d5db7cbbb4.js +0 -1
  296. package/assets/esri/core/workers/chunks/f6d047358d14328f3622.js +0 -1
  297. package/assets/esri/core/workers/chunks/fb6605be0c5e36785543.js +0 -1
  298. package/assets/esri/core/workers/chunks/fd70a25ffdf2cc6c5be2.js +0 -1
  299. package/layers/AnnotationLayer.js +0 -2
  300. package/views/2d/layers/AnnotationLayerView2D.js +0 -2
  301. /package/assets/esri/core/workers/chunks/{9fee0110dc7fee4c95e2.js.LICENSE.txt → 854c320af09b6afc4b80.js.LICENSE.txt} +0 -0
  302. /package/assets/esri/core/workers/chunks/{40b3cdf81c79bbc44527.js.LICENSE.txt → df54e741db40b308c2dd.js.LICENSE.txt} +0 -0
  303. /package/views/layers/{AnnotationLayerView.js → AnnotationFeatureLayerView.js} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Graphic.js";import a from"../../core/Error.js";import{makeHandle as i,handlesGroup as r,abortHandle as s}from"../../core/handleUtils.js";import"../../core/has.js";import n from"../../core/Logger.js";import{removeMaybe as o,destroyMaybe as l}from"../../core/maybe.js";import{isPromiseLike as d,debounce as c}from"../../core/promiseUtils.js";import{watch as u,initial as p,sync as h,whenOnce as m,syncAndInitial as f}from"../../core/reactiveUtils.js";import{generateBracedUUID as g}from"../../core/uuid.js";import{property as w,subclass as y}from"../../core/accessorSupport/decorators.js";import{isSharedTemplateOrMetadata as v,isSharedTemplate as _,getCreationAttributes as F,isStandardFeatureTemplate as b}from"../../editing/templateUtils.js";import{getFullTemplate as M}from"../../editing/sharedTemplates/templateLoader.js";import I from"../../layers/GraphicsLayer.js";import{isSceneLayer as V,isTable as k}from"../../layers/support/layerUtils.js";import{isNumber as S}from"../../support/guards.js";import{getDisplayedSymbol as T}from"../../symbols/support/symbolUtils.js";import{updateGraphicSymbolWhenRequired as C}from"../../views/draw/support/editingSessionUtils.js";import{getDrawHelpMessage as A}from"../../views/draw/support/helpMessageUtils.js";import P from"../../views/draw/support/HighlightHelper.js";import E from"../../views/interactive/sketch/SketchOptions.js";import U from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{temporaryHighlightName as H}from"../../views/support/HighlightDefaults.js";import L from"./CreateFeaturesWorkflowData.js";import{isModelUpload as O,handleModelUpload as j}from"./modelUploadUtils.js";import x from"./Workflow.js";import{activeSketchToolDrawsUnsupportedCurve as D,createToolFromGeometryType as z,containsUnsupportedCurve as R,findEditorItemForLayer as W,getServiceEditsFromWorkflowData as G,getServiceInfoForLayer as N,orderEditsByRelationshipDependencies as K,getServiceLayersById as Z,startCreatingNewFeature as q,syncUpdateOptions as B,findLayerInfo as J,isTerminalUpdateEventType as Q,getVisualVariableAttributes as X,startUpdatingFeatureGeometry as Y,createWorkflowSteps as $,avoidFeatureTemplateSelectionWithOnlyOneItem as ee,setUpSketchCreateWatchers as te,setRelationshipFields as ae,prepareAttachmentsForCreateFeaturesWorkflow as ie,showProgressCursor as re,setVisualVariablesAndElevationInfoForUpdate as se,visualVariableInteractiveUpdate as ne}from"./workflowUtils.js";import oe from"../FeatureForm/FeatureFormViewModel.js";import le from"../Sketch/SketchViewModel.js";var de;const ce=Symbol(),ue=Symbol(),pe=Symbol(),he=Symbol(),me={point:["point"],multipoint:["multipoint"],polygon:["polygon","freehandPolygon","rectangle","circle"],polyline:["polyline","freehandPolyline"],mesh:[],multipatch:[]};let fe=de=class extends x{constructor(e){super(e),this.type="create-features",this.createFeatureState="create-new",this.data=void 0,this.isNested=!1,this._getDrawMeshHelpMessage=void 0,this._webStyleCache=new Map,this._featureFormHandle=null,this._visualVariableAttributes={rotation:null,size:null},this._formViewModel=new oe,this._sketchLayer=null,this._sketchViewModel=null,this._attachmentFileInfos=new Map,this._isActive=!0}initialize(){this.isNested&&(this._isActive=!1),this._initializeSketchViewModel()}destroy(){this._sketchViewModel.destroy()}get allowSave(){return!this.updating}get curveResizeDisabled(){return this.data.curveResizeDisabled}get curveUpdatesDisabled(){return this.data.curveUpdatesDisabled}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return!!this.data.editorItem?.hasInvalidFormTemplate}get hasPendingEdits(){if(this.pendingFeatures.some(e=>!!this.data.getEditsForPendingFeature(e)?.modified))return!0;const{creationInfo:e,upload:t}=this.data,{activeComponent:a,createGraphic:i}=this._sketchViewModel,r=i?.geometry?.type;return!("polyline"!==r&&"polygon"!==r&&"multipoint"!==r||"draw-2d"!==a?.type&&"draw-3d"!==a?.type)&&a.drawOperation.committedVertices.length>0||(!(!t||"pending"!==t.state&&"success"!==t.state)||!!e?.geometryToPlace)}get hasPreviousStep(){return this._stepIndex>0||"update-pending"===this.createFeatureState&&!!this.data.selectedPendingFeature&&!this.parent&&!O(this.data.creationInfo)}get helpMessage(){const{creationInfo:e,viewModel:t}=this.data;if("creating-features"!==this.stepId||!e)return;const{_sketchViewModel:a}=this,{drawTool:i,isUsingLegacyCreateTools:r}=a;if(!r)return i?.helpMessageKey??"noTool";const s=e.layer.geometryType,n=a.createGraphic;if("mesh"===s){this._getDrawMeshHelpMessage||import("../../views/draw/support/helpMessageUtils3d.js").then(e=>{this._getDrawMeshHelpMessage=e.getDrawMeshHelpMessage});const{view:e}=t;return"3d"===e?.type?this._getDrawMeshHelpMessage?.(n,e):void 0}const{activeCreateToolDrawMode:o,activeTool:l}=a;return A("rectangle"===l||"circle"===l?l:s,n?.geometry,o)}get noticeMessage(){if(D(this._sketchViewModel,this.data.editorItem))return"curveToolDensifyWarning"}get layer(){return this.data.creationInfo?.layer}get numPendingFeatures(){return this.pendingFeatures.length}get numPendingFeaturesExcludingHidden(){return this.pendingFeatures.filter(e=>this.data.isDisplayable(e)).length}get parent(){return this.data.parent}get pendingFeatures(){return this.data.pendingFeatures}get keyboardCancellationEnabled(){return 0===this.numPendingFeatures}get reliesOnOwnerAdminPrivileges(){return this.data.editorItem?.capabilities.create.reliesOnOwnerAdminPrivileges??!1}get saveActionLabel(){return"create"}get shouldShowAttachments(){return(this.data.selectedPendingFeature&&this.data.editorItem?.capabilities.create.attachments.enabled)??!1}get shouldAllowAttachmentEditing(){return this.shouldShowAttachments}get sketchUpdateOptions(){const{editorItem:e}=this.data;return{enableScaling:!this.curveResizeDisabled,multipleSelectionEnabled:!1,reshapeOptions:{enableCreateCurveFromStraightEdge:!V(e?.layer)&&!!e?.capabilities.supportsTrueCurve}}}get sketchViewModel(){return this._sketchViewModel}get test(){}get availableCreateTools(){const e=this.data.creationInfo?.layer.geometryType,t=this.data.viewModel.view;if(!e)return[];if(this.data.creationInfo?.maxFeatures&&this.data.creationInfo.maxFeatures<=this.numPendingFeatures)return[];if(v(this.data.fullTemplate)){const{tool:t}=z(e,this.data.fullTemplate);return[t]}return"2d"!==t?.type&&"multipoint"===e?[]:[...me[e]]}get _attachmentsActive(){const e=this.data.viewModel.attachmentsViewModel.mode,t=this.stepId;return this.shouldShowAttachments&&("add"===e||"edit"===e||"adding-attachment"===t||"editing-attachment"===t)}getUpdating(){return!!this._sketchViewModel?.updating}async enter(){this._isActive=!0,"awaiting-feature-creation-info"!==this.stepId&&await this._updatingHandles.addPromise(this._setUpCreatingFeaturesStep())}exit(){this._isActive=!1,this.removeHandles([pe])}async updatePendingFeature(e){if(e!==this.data.selectedPendingFeature)return this._sketchViewModel.cancel(),this._startUpdating({feature:e})}async start(){return await super.start(),k(this.data.creationInfo?.layer)?null:{enter:async()=>{},exit:async()=>{},viewModel:this._sketchViewModel}}async save(e){const{formViewModel:t}=this;if(t.pendingSubtypeChoice)return;t.submit(),this._stashValidationState();const a=this.data.selectedPendingFeature,i=this._hasValidationErrors(a)?a:this.data.pendingFeatures.find(e=>this._hasValidationErrors(e));if(i)return await this._startUpdating({feature:i}),void t?.submit();const{pendingFeatures:r,editorItem:s}=this.data;if(s&&e&&R(r.toArray(),s)){if(!await e("curveEditingDensifyPrompt"))return this.reset()}return super.save()}back(e){return"update-pending"!==this.createFeatureState||!this.data.selectedPendingFeature||O(this.data.creationInfo)||this._attachmentsActive||this.parent?super.back(e):this._clearSelectedFeature()}previous(e){return"update-pending"!==this.createFeatureState||!this.data.selectedPendingFeature||O(this.data.creationInfo)||this._attachmentsActive?super.previous(e):this._clearSelectedFeature()}cancelFeature(e){this.data.isSharedTemplateWorkflow?n.getLogger(this).warn("Cannot cancel individual features created by shared templates."):(this.data.removePendingFeature(e),this.sketchViewModel.removeGraphic(e))}static create(e){const{addAttachmentsCallback:t,applyEdits:a,applyEditsFeatureService:i,isNested:r,creationInfo:s,parent:n,snappingManager:o,startAt:l,viewModel:d}=e,c=e.sketchOptions??new E,u=s?.layer,p=u?W(d.editorItems,u):void 0,h=new de({data:new L({creationInfo:s,editorItem:p,parent:n,sketchOptions:c,snappingManager:o,viewModel:d}),isNested:r,onCommit:async e=>{const{creationInfo:r}=e;if(!r)return;h._sketchViewModel.cancel();const s=e.pendingFeatures.toArray(),{layer:n}=r,o=n.capabilities?.editing.supportsGlobalId&&"globalIdField"in n,l=h._attachmentFileInfos,{fullTemplate:c}=e,u=G(h.data),p=_(c)&&u;if(o){if(ve(s),p){let t=Fe(u,l);const a=await(N(n,d.view)?.load());a&&(t=K({edits:t,serviceInfo:a,view:d.view,findOriginalFeature:t=>e.getEditsForPendingFeature(t)?.initialFeature??t})),await i(c.featureService,t,{globalIdUsed:!0,honorSequenceOfEdits:!0,gdbVersion:c.layer.gdbVersion??void 0})}else{const e=_e(s,l);await a(n,e,{globalIdUsed:!0})}return}const m=p?await i(c.featureService,u,{gdbVersion:c.layer.gdbVersion??void 0}):[await a(n,{addFeatures:s})];m&&l.size>0&&await Promise.all(m.map(e=>{if(e?.addFeatureResults)return t(n,ye(s,e.addFeatureResults,n,l))}))}});return h._set("steps",this._createWorkflowSteps(h,l)),h}_fadeExistingFeatures(e){if("effect"in e){const t=e.effect;return e.effect="saturate(0.6) opacity(0.8)",i(()=>e.effect=t)}const t=e.opacity;return e.opacity=.7,i(()=>e.opacity=t)}async _initializeFullTemplateAndExecutorInfo(e){const{creationInfo:t}=e,{view:a}=e.viewModel;if(!t||!a)return null;const i=await M(a,t.template);if(e.fullTemplate=i,i&&_(i)){const{createTemplateExecutor:r}=await import("../../editing/sharedTemplates/executor/createTemplateExecutor.js"),s={completionResults:[],executor:await r(i),serviceLayersById:Z(t.layer,a)};e.templateExecutorInfo=s}return i}async _startCreating(){this.removeHandles(ue);const{data:e}=this;if(!e.creationInfo)return;const t=this.data.creationInfo?.maxFeatures;if(t&&this.numPendingFeatures>=t)return this.sketchViewModel.cancel(),void(this.numPendingFeatures&&await this._startUpdating({feature:this.pendingFeatures.at(-1)}));this.createFeatureState="create-new",await q(this._sketchViewModel,this._sketchLayer,e,this._webStyleCache)}async _clearSelectedFeature(){const e=this._formViewModel.pendingSubtypeChoice;e&&(e.resolve("undo"),await e.promise),this._stashValidationState(),this.sketchViewModel.cancel(),this.data.selectedPendingFeature=null,this._featureFormHandle=o(this._featureFormHandle),this._formViewModel.feature=null;const t=this.data.viewModel.attachmentsViewModel;"add"!==t.mode&&"edit"!==t.mode||await(this.data.viewModel.activeWorkflow?.previous())}_stashValidationState(){const e=this._formViewModel.feature,t=e&&this.data.getEditsForPendingFeature(e);t&&(t.submittable=this._formViewModel.submittable)}async _selectFeatureForUpdate({feature:e,initialFeature:t=e}){this._stashValidationState();const{data:a,pendingFeatures:i,_webStyleCache:s}=this;i.includes(e)||a.addPendingFeature(e,t),a.selectedPendingFeature=e;const{_formViewModel:n,_sketchViewModel:l,sketchUpdateOptions:d}=this,{creationInfo:c,viewModel:p}=a,{attachmentsViewModel:h,layerInfos:m,view:f}=p;if(!f||!c)return;B(l,d),o(this._featureFormHandle);const g=e.sourceLayer,w=J(m,g),y=w?.formTemplate,v=f.spatialReference;n.set({editType:"INSERT",feature:e,formTemplate:y,spatialReference:v,map:f.map}),"add"!==h.mode&&"edit"!==h.mode||await(p.activeWorkflow?.previous()),h.graphic=e,h.fileInfos.removeAll(),h.mode="view";(this._attachmentFileInfos.get(e)||[]).forEach(({file:e,form:t})=>h.addFile(e,t)),await C(e,s,"2d"===f.type?f.scale:null);const _=a.getEditsForPendingFeature(e);this._featureFormHandle=r([n.on("value-change",async({fieldName:t,value:a})=>{if(_?.updateAttributes(n.getValues()),S(a)){const e=this._visualVariableAttributes;e.size&&!e.size.isUpdatingInteractively&&t===e.size.field&&e.size.setInitialValue(a),e.rotation&&!e.rotation.isUpdatingInteractively&&t===e.rotation.field&&e.rotation.setInitialValue(a)}await C(e,s,"2d"===f.type?f.scale:null)}),l.on(["update","undo","redo"],e=>{("undo"===e.type||"redo"===e.type||"update"===e.type&&null!=e.toolEventInfo&&Q(e.toolEventInfo.type))&&n.notifyFeatureGeometryChanged()}),u(()=>n.feature?.sourceLayer,t=>e.sourceLayer=t),u(()=>[n.feature,n.submittable],()=>this._stashValidationState())]),this.createFeatureState="update-pending"}async _startUpdating({feature:e,initialFeature:t=e}){await this._selectFeatureForUpdate({feature:e,initialFeature:t});const{_sketchLayer:a,_sketchViewModel:i,data:r}=this,{creationInfo:s,viewModel:n}=r,{view:o}=n;if(!o||!s)return;const l=e.sourceLayer??s.layer;return k(l)?void 0:(this._visualVariableAttributes=X(e),Y({graphic:e,sketchLayer:a,sketchViewModel:i,sourceLayer:l,updateOptions:this.sketchUpdateOptions,visualVariables:this._visualVariableAttributes,webStyleCache:this._webStyleCache}))}static _createWorkflowSteps(e,t="awaiting-feature-creation-info"){const{data:a}=e,i=$(["awaiting-feature-creation-info","creating-features","adding-attachment","editing-attachment"],t,{"awaiting-feature-creation-info":()=>({id:"awaiting-feature-creation-info",async setUp(){const{creationInfo:t,viewModel:i}=a,{view:r}=i;r&&(O(t)?e.addHandles(await j({view:r,data:a,next:()=>e.next(),cancel:()=>i.cancelWorkflow({warnIfNoWorkflow:!1})}),this.id):(a.parent&&t&&e.addHandles(i.restrictFeatureTemplatesViewModelToLayer(t.layer),this.id),e.addHandles(i.featureTemplatesViewModel.on("select",({item:t})=>{t&&(a.creationInfo={...a.creationInfo,layer:t.layer,template:t.template},e.next())}),this.id)))},async tearDown(){e.removeHandles(this.id)}}),"creating-features":()=>({id:"creating-features",async setUp(){e._isActive&&await e._setUpCreatingFeaturesStep()},async tearDown(t){const{viewModel:i}=a;t.canceled&&(e.removeHandles([pe,ce,ue,he]),i.attachmentsViewModel.fileInfos.removeAll(),e._attachmentFileInfos.clear())}}),"adding-attachment":()=>({id:"adding-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}})});return ee(a,i)}static _configureSketchViewModel(e){const{data:t,_sketchLayer:a,_sketchViewModel:s,_webStyleCache:n}=e,{creationInfo:o,viewModel:l}=t,{view:d}=l,p=[];if(!d)return i();if("2d"===d.type){o&&p.push(e._fadeExistingFeatures(o.layer));const t=c((e,t)=>Promise.all(e.map(e=>C(e,n,t))));p.push(u(()=>d.scale,e=>t(a.graphics,e)))}const h=F(t.fullTemplate,o?.attributeOverrides,o?.layer),m=u(()=>s.createGraphic&&s.activeComponent,()=>{s.createGraphic&&s.activeComponent&&!e.hasHandles(ue)&&e._updatingHandles.consumePromise(te({creationAttributes:h,data:t,sketchViewModel:s,view:d,webStyleCache:n}).then(t=>e.addHandles(t,ue)))}),f=async t=>{if("cancel"!==t.state&&"complete"!==t.state||e.removeHandles(ue),"cancel"===t.state&&null!==d.activeTool&&d.activeTool!==e.sketchViewModel.activeComponent&&(await e._waitForActiveToolCleared(),await e._startCreating()),"complete"===t.state&&t.graphic){const a=await e._processEdits(t.graphic,{scale:"2d"===d.type?d.scale:null,useSourceLayer:!0,webStyleCache:e._webStyleCache});a&&(await e._waitForActiveToolCleared(),await e._startUpdating({feature:a}))}},g=async i=>{const{attachmentsViewModel:r}=l,{_formViewModel:n}=e;if(i.graphics.length>1)return void await e._clearSelectedFeature();const c=i.graphics[0];if("complete"===i.state){const{submittable:t}=n;if(e.numPendingFeatures!==o?.maxFeatures&&t||n.submit(),await e._clearSelectedFeature(),"add"!==r.mode&&"edit"!==r.mode||await(l.activeWorkflow?.previous()),null==e.data.selectedPendingFeature&&(null==d.activeTool||d.activeTool===e.sketchViewModel.activeComponent)&&(await e.sketchViewModel.wait(),"ready"===e.sketchViewModel.state&&"mesh"!==e.data.creationInfo?.layer.geometryType))return e._startCreating()}else{if("start"===i.state)return c.sourceLayer??=t.creationInfo?.layer,await se({graphic:c,sketchLayer:a,sketchViewModel:s,visualVariables:e._visualVariableAttributes,webStyleCache:e._webStyleCache,sourceLayer:c.sourceLayer}),e._selectFeatureForUpdate({feature:c});if("active"===i.state){await e.updatePendingFeature(c);const t=e._visualVariableAttributes;ne(d,c,i,t)&&await C(c,e._webStyleCache,"2d"===d.type?d.scale:null);const a=c.attributes,{rotation:r,size:s}=t;if(null!=r){const{field:e}=r;n.setValue(e,a[e])}if(null!=s){const{field:e}=s;n.setValue(e,a[e])}}}},w=async a=>{if(a.graphics.forEach(e=>{t.removePendingFeature(e)}),!O(t.creationInfo))return e._startCreating()},y=async()=>{if(O(t.creationInfo))try{await e.data.viewModel.back()}catch{}return e._startCreating()};p.push(m,s.on("create",t=>e._updatingHandles.addPromise(f(t))),s.on("update",t=>e._updatingHandles.addPromise(g(t))),s.on("delete",t=>e._updatingHandles.addPromise(w(t))),e._updatingHandles.addWhen(()=>!e.numPendingFeatures,()=>e._updatingHandles.addPromise(y())),i(()=>{s.cancel()}),ge(s,a,t),...we(t));const v=r(p);return s.addHandles(v),v}_initializeSketchViewModel(){const{data:e}=this,{view:t}=e.viewModel,a=new I({elevationInfo:e.creationInfo?.layer.elevationInfo,internal:!0,listMode:"hide",title:"createFeaturesWorkflow-internal"}),r=new le({layer:a,creationMode:"single",sketchOptions:e.sketchOptions,snappingManager:e.snappingManager,useLegacyCreateTools:e.viewModel.useLegacyCreateTools,updateOnGraphicClick:!1,defaultUpdateOptions:this.sketchUpdateOptions,view:t});this._sketchLayer=a,this._sketchViewModel=r,t?.map.add(a),this.addHandles([i(()=>{t?.destroyed||t?.map.remove(a),l(a)}),u(()=>this.numPendingFeatures>0,e=>this._sketchViewModel.updateOnGraphicClick=e,p),u(()=>this.sketchUpdateOptions,e=>{r.defaultUpdateOptions=e,B(r,e)},h)])}_hasValidationErrors(e){return!!e&&(!this.data.isSubmittable(e)||!!this._formViewModel.validateContingencyConstraints(e.attributes,{includeIncompleteViolations:!0})?.length)}async _processEdits(e,t){const{data:a,_formViewModel:i,_sketchLayer:r}=this,{layerInfos:s,view:n}=a.viewModel;i.editType="INSERT",i.map=n?.map,i.spatialReference=n?.spatialReference;const{templateExecutorInfo:o}=a;if(!o){const t=e.clone();return t.geometry=null,await this._addAndInitializeEdits(e,t),e}r.remove(e);const{executor:l}=o,c=l(e.geometry,"completion"),u=d(c)?await c:c;o.completionResults.push(u),ae(u.relationships),i.editType="INSERT",i.map=n?.map,i.spatialReference=n?.spatialReference,u.primary&&a.creationInfo?.attributeOverrides&&(u.primary.graphic.attributes={...u.primary.graphic.attributes,...a.creationInfo.attributeOverrides});for(const d of u.edits){let e=null;if(d.addFeatures)for(const a of d.addFeatures){const i=a.clone();i.geometry=null,null!=a.geometry&&(a.symbol=await T(a,t),r.add(a)),a.sourceLayer!==e?.layer&&(e=J(s,a.sourceLayer));const n=!!u.associationGraphics?.has(a);await this._addAndInitializeEdits(a,i,e,n)}}i.feature=null,await m(()=>!i.updating);return u.edits.reduce((e,t)=>e+(t.addFeatures?.length??0),0)>1?null:u.primary?.graphic}async _addAndInitializeEdits(e,t,a,i=!1){const{data:r,_formViewModel:s}=this,{layerInfos:n}=r.viewModel,o=r.addPendingFeature(e,t,{isAssociation:i});a??=J(n,e.sourceLayer),s.feature=e,s.formTemplate=a?.formTemplate,await m(()=>!s.updating),o.updateAttributes(s.getValues()),o.submittable=s.submittable}async _setUpCreatingFeaturesStep(){if(this.hasHandles(pe))return;const{data:e,sketchViewModel:s}=this,{creationInfo:n,viewModel:l}=e,{attachmentsViewModel:d,view:c}=l;if(!c||!n?.layer)throw new a("missing-parameters","CreateFeaturesWorkflow requires a view and creationInfo.");const{initialFeature:h,layer:m}=n,f=[],g=[];this._featureFormHandle=o(this._featureFormHandle),this._visualVariableAttributes={rotation:null,size:null},e.editorItem=W(l.editorItems,n.layer),n.template&&(null==e.fullTemplate&&await this._initializeFullTemplateAndExecutorInfo(e),g.push(i(()=>{e.templateExecutorInfo&&(e.templateExecutorInfo.completionResults=[])}))),s.allowDeleteKey=!e.isSharedTemplateWorkflow,ie(d),f.push(u(()=>d.mode,e=>{switch(e){case"add":this.go("adding-attachment");break;case"edit":this.go("editing-attachment")}}));const w=re(c);f.push(w);const y=k(n.layer),{template:_}=n,M=!_||b(_)||v(_)&&"feature"===_.type,I=y&&M;try{if(I){const a=h??new t({attributes:F(e.fullTemplate,n.attributeOverrides,m),sourceLayer:m}),i=await this._processEdits(a);i&&await this._startUpdating({feature:i})}else f.push(de._configureSketchViewModel(this)),h?(O(n)&&n.geometryToPlace&&(h.attributes=F(e.fullTemplate,n.attributeOverrides,m)),s.addGraphic(h),await this._startUpdating({feature:h})):await this._startCreating()}finally{w.remove()}const V=i(()=>{for(const t of e.pendingFeatures)s.removeGraphic(t),e.removePendingFeature(t)}),S=u(()=>c?.timeZone,e=>{this._formViewModel.timeZone=e,this.data.timeZone=e},p),T=i(()=>{O(n)&&l.cancelWorkflow({warnIfNoWorkflow:!1})});this._featureFormHandle&&f.push(this._featureFormHandle),this.addHandles(f,this._handleKeys.beforeCommit),this.addHandles(g,this._handleKeys.afterCommit),this.addHandles([i(()=>d.fileInfos.removeAll()),r(f),r(g),T,V,S],pe)}async _waitForActiveToolCleared(){const e=this.data.viewModel.view;if(null==e?.activeTool)return;const t=new AbortController;this.addHandles(s(t),he),await m(()=>null==e?.activeTool,t.signal),t.abort()}};function ge(e,t,a){let s=null;const n=()=>e.snappingOptions.featureSources,o=()=>(s=new U({layer:t}),n().add(s),s),d=()=>{null!=s&&(n().remove(s),s=l(s))};return r([u(()=>{const e=a.creationInfo?.layer,t=n().find(t=>t.layer===e);return{hasFeatureLayerSource:!!t,enabled:t?.enabled??!1}},({hasFeatureLayerSource:e,enabled:t})=>{if(!e)return d();s??=o(),s.enabled=t},f),i(d)])}function we(e){const t=e.viewModel.view;if(!t)return[];const a=[];if("3d"===t.type){const r=new P({view:t});a.push(u(()=>e.selectedPendingFeature,(e,t)=>{r.remove(e),r.add(t)}),i(()=>r.destroy()))}const r=new P({view:t,highlightName:H});return a.push(u(()=>e.temporaryHighlightFeature,e=>{r.removeAll(),r.add(e)}),i(()=>r.destroy())),a}function ye(e,t,a,i){const r=[];return t.forEach((t,s)=>{if(!t.error){const n=e[s],o=i.get(n)||[];n.attributes[a.objectIdField]=t.objectId,o.forEach(({form:e})=>r.push({feature:n,attachment:e}))}}),r}function ve(e){for(const t of e){const{sourceLayer:e}=t;e&&"globalIdField"in e&&null!=e.globalIdField&&(t.attributes[e.globalIdField]??=g())}}function _e(e,t){const a=[];if(!t||0===t.size)return{addFeatures:e};for(const[i,r]of t)for(const{file:e}of r)a.push({feature:i,attachment:{globalId:g(),data:e}});return a.length?{addFeatures:e,addAttachments:a}:{addFeatures:e}}function Fe(e,t){return e.map(e=>{const{addFeatures:a}=e;if(!a||0===a.length)return e;const i=[];for(const r of a){const e=t.get(r);if(e)for(const{file:t}of e)i.push({feature:r,attachment:{globalId:g(),data:t}})}return i.length?{...e,addAttachments:i}:e})}e([w()],fe.prototype,"allowSave",null),e([w()],fe.prototype,"createFeatureState",void 0),e([w()],fe.prototype,"curveResizeDisabled",null),e([w()],fe.prototype,"curveUpdatesDisabled",null),e([w()],fe.prototype,"data",void 0),e([w({constructOnly:!0})],fe.prototype,"isNested",void 0),e([w()],fe.prototype,"formViewModel",null),e([w()],fe.prototype,"hasInvalidFormTemplate",null),e([w()],fe.prototype,"hasPendingEdits",null),e([w()],fe.prototype,"hasPreviousStep",null),e([w()],fe.prototype,"_getDrawMeshHelpMessage",void 0),e([w()],fe.prototype,"helpMessage",null),e([w()],fe.prototype,"noticeMessage",null),e([w()],fe.prototype,"layer",null),e([w()],fe.prototype,"parent",null),e([w()],fe.prototype,"keyboardCancellationEnabled",null),e([w()],fe.prototype,"reliesOnOwnerAdminPrivileges",null),e([w()],fe.prototype,"saveActionLabel",null),e([w()],fe.prototype,"shouldShowAttachments",null),e([w()],fe.prototype,"shouldAllowAttachmentEditing",null),e([w()],fe.prototype,"sketchUpdateOptions",null),e([w()],fe.prototype,"sketchViewModel",null),e([w()],fe.prototype,"availableCreateTools",null),e([w()],fe.prototype,"_attachmentsActive",null),fe=de=e([y("esri.widgets.Editor.CreateFeaturesWorkflow")],fe);const be=fe;export{be as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Graphic.js";import a from"../../core/Collection.js";import i from"../../core/Error.js";import{makeHandle as r,handlesGroup as s,abortHandle as n}from"../../core/handleUtils.js";import"../../core/has.js";import o from"../../core/Logger.js";import{removeMaybe as l,destroyMaybe as d}from"../../core/maybe.js";import{isPromiseLike as c,debounce as u}from"../../core/promiseUtils.js";import{watch as h,initial as p,sync as m,whenOnce as f,syncAndInitial as g}from"../../core/reactiveUtils.js";import{generateBracedUUID as w}from"../../core/uuid.js";import{property as y,subclass as v}from"../../core/accessorSupport/decorators.js";import{isSharedTemplateOrMetadata as F,isSharedTemplate as _,getCreationAttributes as b,isStandardFeatureTemplate as M}from"../../editing/templateUtils.js";import{getFullTemplate as I}from"../../editing/sharedTemplates/templateLoader.js";import V from"../../layers/GraphicsLayer.js";import{isSceneLayer as k,isTable as S}from"../../layers/support/layerUtils.js";import{isNumber as A}from"../../support/guards.js";import{getDisplayedSymbol as C}from"../../symbols/support/symbolUtils.js";import{updateGraphicSymbolWhenRequired as T}from"../../views/draw/support/editingSessionUtils.js";import{getDrawHelpMessage as P}from"../../views/draw/support/helpMessageUtils.js";import E from"../../views/draw/support/HighlightHelper.js";import H from"../../views/interactive/sketch/SketchOptions.js";import U from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{temporaryHighlightName as L}from"../../views/support/HighlightDefaults.js";import j from"../BatchAttributeForm/BatchAttributeFormViewModel.js";import O from"./CreateFeaturesWorkflowData.js";import{isModelUpload as x,handleModelUpload as D}from"./modelUploadUtils.js";import z from"./Workflow.js";import{activeSketchToolDrawsUnsupportedCurve as R,createToolFromGeometryType as W,containsUnsupportedCurve as G,findEditorItemForLayer as N,getServiceEditsFromWorkflowData as K,getServiceInfoForLayer as B,orderEditsByRelationshipDependencies as Z,getServiceLayersById as q,startCreatingNewFeature as J,syncUpdateOptions as Q,findLayerInfo as X,handleFormValuesChangeEvent as Y,isTerminalUpdateEventType as $,getVisualVariableAttributes as ee,startUpdatingFeatureGeometry as te,createWorkflowSteps as ae,avoidFeatureTemplateSelectionWithOnlyOneItem as ie,setUpSketchCreateWatchers as re,setRelationshipFields as se,prepareAttachmentsForCreateFeaturesWorkflow as ne,showProgressCursor as oe,setVisualVariablesAndElevationInfoForUpdate as le,visualVariableInteractiveUpdate as de}from"./workflowUtils.js";import ce from"../Sketch/SketchViewModel.js";var ue;const he=Symbol(),pe=Symbol(),me=Symbol(),fe=Symbol(),ge={point:["point"],multipoint:["multipoint"],polygon:["polygon","freehandPolygon","rectangle","circle"],polyline:["polyline","freehandPolyline"],mesh:[],multipatch:[]};let we=ue=class extends z{constructor(e){super(e),this.type="create-features",this.createFeatureState="create-new",this.data=void 0,this.isNested=!1,this._getDrawMeshHelpMessage=void 0,this._webStyleCache=new Map,this._featureFormHandle=null,this._visualVariableAttributes={rotation:null,size:null},this._formViewModel=new j,this._sketchLayer=null,this._sketchViewModel=null,this._attachmentFileInfos=new Map,this._isActive=!0}initialize(){this.isNested&&(this._isActive=!1),this._initializeSketchViewModel()}destroy(){this._sketchViewModel.destroy()}get allowSave(){return!this.updating}get curveResizeDisabled(){return this.data.curveResizeDisabled}get curveUpdatesDisabled(){return this.data.curveUpdatesDisabled}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return!!this.data.editorItem?.hasInvalidFormTemplate}get hasPendingEdits(){if(this.pendingFeatures.some(e=>!!this.data.getEditsForPendingFeature(e)?.modified))return!0;const{creationInfo:e,upload:t}=this.data,{activeComponent:a,createGraphic:i}=this._sketchViewModel,r=i?.geometry?.type;return!("polyline"!==r&&"polygon"!==r&&"multipoint"!==r||"draw-2d"!==a?.type&&"draw-3d"!==a?.type)&&a.drawOperation.committedVertices.length>0||(!(!t||"pending"!==t.state&&"success"!==t.state)||!!e?.geometryToPlace)}get hasPreviousStep(){return this._stepIndex>0||"update-pending"===this.createFeatureState&&!!this.data.selectedPendingFeature&&!this.parent&&!x(this.data.creationInfo)}get helpMessage(){const{creationInfo:e,viewModel:t}=this.data;if("creating-features"!==this.stepId||!e)return;const{_sketchViewModel:a}=this,{drawTool:i,isUsingLegacyCreateTools:r}=a;if(!r)return i?.helpMessageKey??"noTool";const s=e.layer.geometryType,n=a.createGraphic;if("mesh"===s){this._getDrawMeshHelpMessage||import("../../views/draw/support/helpMessageUtils3d.js").then(e=>{this._getDrawMeshHelpMessage=e.getDrawMeshHelpMessage});const{view:e}=t;return"3d"===e?.type?this._getDrawMeshHelpMessage?.(n,e):void 0}const{activeCreateToolDrawMode:o,activeTool:l}=a;return P("rectangle"===l||"circle"===l?l:s,n?.geometry,o)}get noticeMessage(){if(R(this._sketchViewModel,this.data.editorItem))return"curveToolDensifyWarning"}get layer(){return this.data.creationInfo?.layer}get numPendingFeatures(){return this.pendingFeatures.length}get numPendingFeaturesExcludingHidden(){return this.pendingFeatures.filter(e=>this.data.isDisplayable(e)).length}get parent(){return this.data.parent}get pendingFeatures(){return this.data.pendingFeatures}get keyboardCancellationEnabled(){return 0===this.numPendingFeatures}get reliesOnOwnerAdminPrivileges(){return this.data.editorItem?.capabilities.create.reliesOnOwnerAdminPrivileges??!1}get saveActionLabel(){return"create"}get shouldShowAttachments(){return(this.data.selectedPendingFeature&&this.data.editorItem?.capabilities.create.attachments.enabled)??!1}get shouldAllowAttachmentEditing(){return this.shouldShowAttachments}get sketchUpdateOptions(){const{editorItem:e}=this.data;return{enableScaling:!this.curveResizeDisabled,multipleSelectionEnabled:!1,reshapeOptions:{enableCreateCurveFromStraightEdge:!k(e?.layer)&&!!e?.capabilities.supportsTrueCurve}}}get sketchViewModel(){return this._sketchViewModel}get test(){}get availableCreateTools(){const e=this.data.creationInfo?.layer.geometryType,t=this.data.viewModel.view;if(!e)return[];if(this.data.creationInfo?.maxFeatures&&this.data.creationInfo.maxFeatures<=this.numPendingFeatures)return[];if(F(this.data.fullTemplate)){const{tool:t}=W(e,this.data.fullTemplate);return[t]}return"2d"!==t?.type&&"multipoint"===e?[]:[...ge[e]]}get _attachmentsActive(){const e=this.data.viewModel.attachmentsViewModel.mode,t=this.stepId;return this.shouldShowAttachments&&("add"===e||"edit"===e||"adding-attachment"===t||"editing-attachment"===t)}getUpdating(){return!!this._sketchViewModel?.updating}async enter(){this._isActive=!0,"awaiting-feature-creation-info"!==this.stepId&&await this._updatingHandles.addPromise(this._setUpCreatingFeaturesStep())}exit(){this._isActive=!1,this.removeHandles([me])}async updatePendingFeature(e){if(e!==this.data.selectedPendingFeature)return this._sketchViewModel.cancel(),this._startUpdating({feature:e})}async start(){return await super.start(),S(this.data.creationInfo?.layer)?null:{enter:async()=>{},exit:async()=>{},viewModel:this._sketchViewModel}}async save(e){const{formViewModel:t}=this;await t.submit(),this._stashValidationState();const a=this.data.selectedPendingFeature,i=this._hasValidationErrors(a)?a:this.data.pendingFeatures.find(e=>this._hasValidationErrors(e));if(i)return await this._startUpdating({feature:i}),void await(t?.submit());const{pendingFeatures:r,editorItem:s}=this.data;if(s&&e&&G(r.toArray(),s)){if(!await e("curveEditingDensifyPrompt"))return this.reset()}return super.save()}back(e){return"update-pending"!==this.createFeatureState||!this.data.selectedPendingFeature||x(this.data.creationInfo)||this._attachmentsActive||this.parent?super.back(e):this._clearSelectedFeature()}previous(e){return"update-pending"!==this.createFeatureState||!this.data.selectedPendingFeature||x(this.data.creationInfo)||this._attachmentsActive?super.previous(e):this._clearSelectedFeature()}cancelFeature(e){this.data.isSharedTemplateWorkflow?o.getLogger(this).warn("Cannot cancel individual features created by shared templates."):(this.data.removePendingFeature(e),this.sketchViewModel.removeGraphic(e))}static create(e){const{addAttachmentsCallback:t,applyEdits:a,applyEditsFeatureService:i,isNested:r,creationInfo:s,parent:n,snappingManager:o,startAt:l,viewModel:d}=e,c=e.sketchOptions??new H,u=s?.layer,h=u?N(d.editorItems,u):void 0,p=new ue({data:new O({creationInfo:s,editorItem:h,parent:n,sketchOptions:c,snappingManager:o,viewModel:d}),isNested:r,onCommit:async e=>{const{creationInfo:r}=e;if(!r)return;p._sketchViewModel.cancel();const s=e.pendingFeatures.toArray(),{layer:n}=r,o=n.capabilities?.editing.supportsGlobalId&&"globalIdField"in n,l=p._attachmentFileInfos,{fullTemplate:c}=e,u=K(p.data),h=_(c)&&u;if(o){if(_e(s),h){let t=Me(u,l);const a=await(B(n,d.view)?.load());a&&(t=Z({edits:t,serviceInfo:a,view:d.view,findOriginalFeature:t=>e.getEditsForPendingFeature(t)?.initialFeature??t})),await i(c.featureService,t,{globalIdUsed:!0,honorSequenceOfEdits:!0,gdbVersion:c.layer.gdbVersion??void 0})}else{const e=be(s,l);await a(n,e,{globalIdUsed:!0})}return}const m=h?await i(c.featureService,u,{gdbVersion:c.layer.gdbVersion??void 0}):[await a(n,{addFeatures:s})];m&&l.size>0&&await Promise.all(m.map(e=>{if(e?.addFeatureResults)return t(n,Fe(s,e.addFeatureResults,n,l))}))}});return p._set("steps",this._createWorkflowSteps(p,l)),p}_fadeExistingFeatures(e){if("effect"in e){const t=e.effect;return e.effect="saturate(0.6) opacity(0.8)",r(()=>e.effect=t)}const t=e.opacity;return e.opacity=.7,r(()=>e.opacity=t)}async _initializeFullTemplateAndExecutorInfo(e){const{creationInfo:t}=e,{view:a}=e.viewModel;if(!t||!a)return null;const i=await I(a,t.template);if(e.fullTemplate=i,i&&_(i)){const{createTemplateExecutor:r}=await import("../../editing/sharedTemplates/executor/createTemplateExecutor.js"),s={completionResults:[],executor:await r(i),serviceLayersById:q(t.layer,a)};e.templateExecutorInfo=s}return i}async _startCreating(){this.removeHandles(pe);const{data:e}=this;if(!e.creationInfo)return;const t=this.data.creationInfo?.maxFeatures;if(t&&this.numPendingFeatures>=t)return this.sketchViewModel.cancel(),void(this.numPendingFeatures&&await this._startUpdating({feature:this.pendingFeatures.at(-1)}));this.createFeatureState="create-new",await J(this._sketchViewModel,this._sketchLayer,e,this._webStyleCache)}async _clearSelectedFeature(){this._stashValidationState(),this.sketchViewModel.cancel(),this.data.selectedPendingFeature=null,this._featureFormHandle=l(this._featureFormHandle),this._formViewModel.features=new a,this._formViewModel.activeFeatureIndex=-1;const e=this.data.viewModel.attachmentsViewModel;"add"!==e.mode&&"edit"!==e.mode||await(this.data.viewModel.activeWorkflow?.previous())}_stashValidationState(){const e=this._formViewModel.activeFeature,t=e&&this.data.getEditsForPendingFeature(e);t&&(t.submittable=this._formViewModel.valid)}async _selectFeatureForUpdate({feature:e,initialFeature:t=e}){this._stashValidationState();const{data:i,pendingFeatures:r,_webStyleCache:n}=this;r.includes(e)||i.addPendingFeature(e,t),i.selectedPendingFeature=e;const{_formViewModel:o,_sketchViewModel:d,sketchUpdateOptions:c}=this,{creationInfo:u,viewModel:p}=i,{attachmentsViewModel:m,layerInfos:f,view:g}=p;if(!g||!u)return;Q(d,c),l(this._featureFormHandle);const w=e.sourceLayer,y=X(f,w),v=g.spatialReference;o.set({editType:"INSERT",features:new a([e]),activeFeatureIndex:0,layerInfos:y?[y]:null,spatialReference:v,map:g.map}),"add"!==m.mode&&"edit"!==m.mode||await(p.activeWorkflow?.previous()),m.graphic=e,m.fileInfos.removeAll(),m.mode="view";(this._attachmentFileInfos.get(e)||[]).forEach(({file:e,form:t})=>m.addFile(e,t)),await T(e,n,"2d"===g.type?g.scale:null);const F=i.getEditsForPendingFeature(e);this._featureFormHandle=s([o.on("values-change",Y({filter:e=>e===F?.feature,forEachValueChange:(e,t)=>{if(A(t)){const a=this._visualVariableAttributes;a.size&&!a.size.isUpdatingInteractively&&e===a.size.field&&a.size.setInitialValue(t),a.rotation&&!a.rotation.isUpdatingInteractively&&e===a.rotation.field&&a.rotation.setInitialValue(t)}},forEachFeature:e=>{F?.updateAttributes(o.getValues(e)),T(e,n,"2d"===g.type?g.scale:null)}})),d.on(["update","undo","redo"],t=>{("undo"===t.type||"redo"===t.type||"update"===t.type&&null!=t.toolEventInfo&&$(t.toolEventInfo.type))&&o.notifyGeometriesChanged([e])}),h(()=>o.activeFeature?.sourceLayer,t=>e.sourceLayer=t),h(()=>[o.activeFeature,o.valid],()=>this._stashValidationState())]),this.createFeatureState="update-pending"}async _startUpdating({feature:e,initialFeature:t=e}){await this._selectFeatureForUpdate({feature:e,initialFeature:t});const{_sketchLayer:a,_sketchViewModel:i,data:r}=this,{creationInfo:s,viewModel:n}=r,{view:o}=n;if(!o||!s)return;const l=e.sourceLayer??s.layer;return S(l)?void 0:(this._visualVariableAttributes=ee(e),te({graphic:e,sketchLayer:a,sketchViewModel:i,sourceLayer:l,updateOptions:this.sketchUpdateOptions,visualVariables:this._visualVariableAttributes,webStyleCache:this._webStyleCache}))}static _createWorkflowSteps(e,t="awaiting-feature-creation-info"){const{data:a}=e,i=ae(["awaiting-feature-creation-info","creating-features","adding-attachment","editing-attachment"],t,{"awaiting-feature-creation-info":()=>({id:"awaiting-feature-creation-info",async setUp(){const{creationInfo:t,viewModel:i}=a,{view:r}=i;r&&(x(t)?e.addHandles(await D({view:r,data:a,next:()=>e.next(),cancel:()=>i.cancelWorkflow({warnIfNoWorkflow:!1})}),this.id):(a.parent&&t&&e.addHandles(i.restrictFeatureTemplatesViewModelToLayer(t.layer),this.id),e.addHandles(i.featureTemplatesViewModel.on("select",({item:t})=>{t&&(a.creationInfo={...a.creationInfo,layer:t.layer,template:t.template},e.next())}),this.id)))},async tearDown(){e.removeHandles(this.id)}}),"creating-features":()=>({id:"creating-features",async setUp(){e._isActive&&await e._setUpCreatingFeaturesStep()},async tearDown(t){const{viewModel:i}=a;t.canceled&&(e.removeHandles([me,he,pe,fe]),i.attachmentsViewModel.fileInfos.removeAll(),e._attachmentFileInfos.clear())}}),"adding-attachment":()=>({id:"adding-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}})});return ie(a,i)}static _configureSketchViewModel(e){const{data:t,_sketchLayer:a,_sketchViewModel:i,_webStyleCache:n}=e,{creationInfo:o,viewModel:l}=t,{view:d}=l,c=[];if(!d)return r();if("2d"===d.type){o&&c.push(e._fadeExistingFeatures(o.layer));const t=u((e,t)=>Promise.all(e.map(e=>T(e,n,t))));c.push(h(()=>d.scale,e=>t(a.graphics,e)))}const p=b(t.fullTemplate,o?.attributeOverrides,o?.layer),m=h(()=>i.createGraphic&&i.activeComponent,()=>{i.createGraphic&&i.activeComponent&&!e.hasHandles(pe)&&e._updatingHandles.consumePromise(re({creationAttributes:p,data:t,sketchViewModel:i,view:d,webStyleCache:n}).then(t=>e.addHandles(t,pe)))}),f=async t=>{if("cancel"!==t.state&&"complete"!==t.state||e.removeHandles(pe),"cancel"===t.state&&null!==d.activeTool&&d.activeTool!==e.sketchViewModel.activeComponent&&(await e._waitForActiveToolCleared(),await e._startCreating()),"complete"===t.state&&t.graphic){const a=await e._processEdits(t.graphic,{scale:"2d"===d.type?d.scale:null,useSourceLayer:!0,webStyleCache:e._webStyleCache});a&&(await e._waitForActiveToolCleared(),await e._startUpdating({feature:a}))}},g=async r=>{const{attachmentsViewModel:s}=l,{_formViewModel:n}=e;if(r.graphics.length>1)return void await e._clearSelectedFeature();const c=r.graphics[0];if("complete"===r.state){if(e.numPendingFeatures!==o?.maxFeatures&&n.valid||n.submit(),await e._clearSelectedFeature(),"add"!==s.mode&&"edit"!==s.mode||await(l.activeWorkflow?.previous()),null==e.data.selectedPendingFeature&&(null==d.activeTool||d.activeTool===e.sketchViewModel.activeComponent)&&(await e.sketchViewModel.wait(),"ready"===e.sketchViewModel.state&&"mesh"!==e.data.creationInfo?.layer.geometryType))return e._startCreating()}else{if("start"===r.state)return c.sourceLayer??=t.creationInfo?.layer,await le({graphic:c,sketchLayer:a,sketchViewModel:i,visualVariables:e._visualVariableAttributes,webStyleCache:e._webStyleCache,sourceLayer:c.sourceLayer}),e._selectFeatureForUpdate({feature:c});if("active"===r.state){await e.updatePendingFeature(c);const t=e._visualVariableAttributes;de(d,c,r,t)&&await T(c,e._webStyleCache,"2d"===d.type?d.scale:null);const a=c.attributes,{rotation:i,size:s}=t;if(null!=i){const{field:t}=i;e._updatingHandles.consumePromise(n.setFieldValue(t,a[t]))}if(null!=s){const{field:t}=s;e._updatingHandles.consumePromise(n.setFieldValue(t,a[t]))}}}},w=async a=>{if(a.graphics.forEach(e=>{t.removePendingFeature(e)}),!x(t.creationInfo))return e._startCreating()},y=async()=>{if(x(t.creationInfo))try{await e.data.viewModel.back()}catch{}return e._startCreating()};c.push(m,i.on("create",t=>e._updatingHandles.addPromise(f(t))),i.on("update",t=>e._updatingHandles.addPromise(g(t))),i.on("delete",t=>e._updatingHandles.addPromise(w(t))),e._updatingHandles.addWhen(()=>!e.numPendingFeatures,()=>e._updatingHandles.addPromise(y())),r(()=>{i.cancel()}),ye(i,a,t),...ve(t));const v=s(c);return i.addHandles(v),v}_initializeSketchViewModel(){const{data:e}=this,{view:t}=e.viewModel,a=new V({elevationInfo:e.creationInfo?.layer.elevationInfo,internal:!0,listMode:"hide",title:"createFeaturesWorkflow-internal"}),i=new ce({layer:a,creationMode:"single",sketchOptions:e.sketchOptions,snappingManager:e.snappingManager,useLegacyCreateTools:e.viewModel.useLegacyCreateTools,updateOnGraphicClick:!1,defaultUpdateOptions:this.sketchUpdateOptions,view:t});this._sketchLayer=a,this._sketchViewModel=i,t?.map.add(a),this.addHandles([r(()=>{t?.destroyed||t?.map.remove(a),d(a)}),h(()=>this.numPendingFeatures>0,e=>this._sketchViewModel.updateOnGraphicClick=e,p),h(()=>this.sketchUpdateOptions,e=>{i.defaultUpdateOptions=e,Q(i,e)},m)])}_hasValidationErrors(e){return!!e&&!this.data.isSubmittable(e)}async _processEdits(e,t){const{data:i,_formViewModel:r,_sketchLayer:s}=this,{layerInfos:n,view:o}=i.viewModel;r.editType="INSERT",r.map=o?.map,r.spatialReference=o?.spatialReference;const{templateExecutorInfo:l}=i;if(!l){const t=e.clone();return t.geometry=null,await this._addAndInitializeEdits(e,t),e}s.remove(e);const{executor:d}=l,u=d(e.geometry,"completion"),h=c(u)?await u:u;l.completionResults.push(h),se(h.relationships),r.editType="INSERT",r.map=o?.map,r.spatialReference=o?.spatialReference,h.primary&&i.creationInfo?.attributeOverrides&&(h.primary.graphic.attributes={...h.primary.graphic.attributes,...i.creationInfo.attributeOverrides});for(const a of h.edits){let e=null;if(a.addFeatures)for(const i of a.addFeatures){const a=i.clone();a.geometry=null,null!=i.geometry&&(i.symbol=await C(i,t),s.add(i)),i.sourceLayer!==e?.layer&&(e=X(n,i.sourceLayer));const r=!!h.associationGraphics?.has(i);await this._addAndInitializeEdits(i,a,e,r)}}r.features=new a,r.activeFeatureIndex=-1,await f(()=>!r.updating);return h.edits.reduce((e,t)=>e+(t.addFeatures?.length??0),0)>1?null:h.primary?.graphic}async _addAndInitializeEdits(e,t,i,r=!1){const{data:s,_formViewModel:n}=this,{layerInfos:o}=s.viewModel,l=s.addPendingFeature(e,t,{isAssociation:r});i??=X(o,e.sourceLayer),n.features=new a([e]),n.activeFeatureIndex=0,n.layerInfos=i?[i]:null,await f(()=>!n.updating),l.updateAttributes(n.getValues(e)),l.submittable=n.valid}async _setUpCreatingFeaturesStep(){if(this.hasHandles(me))return;const{data:e,sketchViewModel:a}=this,{creationInfo:n,viewModel:o}=e,{attachmentsViewModel:d,view:c}=o;if(!c||!n?.layer)throw new i("missing-parameters","CreateFeaturesWorkflow requires a view and creationInfo.");const{initialFeature:u,layer:m}=n,f=[],g=[];this._featureFormHandle=l(this._featureFormHandle),this._visualVariableAttributes={rotation:null,size:null},e.editorItem=N(o.editorItems,n.layer),n.template&&(null==e.fullTemplate&&await this._initializeFullTemplateAndExecutorInfo(e),g.push(r(()=>{e.templateExecutorInfo&&(e.templateExecutorInfo.completionResults=[])}))),a.allowDeleteKey=!e.isSharedTemplateWorkflow,ne(d),f.push(h(()=>d.mode,e=>{switch(e){case"add":this.go("adding-attachment");break;case"edit":this.go("editing-attachment")}}));const w=oe(c);f.push(w);const y=S(n.layer),{template:v}=n,_=!v||M(v)||F(v)&&"feature"===v.type,I=y&&_;try{if(I){const a=u??new t({attributes:b(e.fullTemplate,n.attributeOverrides,m),sourceLayer:m}),i=await this._processEdits(a);i&&await this._startUpdating({feature:i})}else f.push(ue._configureSketchViewModel(this)),u?(x(n)&&n.geometryToPlace&&(u.attributes=b(e.fullTemplate,n.attributeOverrides,m)),a.addGraphic(u),await this._startUpdating({feature:u})):await this._startCreating()}finally{w.remove()}const V=r(()=>{for(const t of e.pendingFeatures)a.removeGraphic(t),e.removePendingFeature(t)}),k=h(()=>c?.timeZone,e=>{this._formViewModel.timeZone=e,this.data.timeZone=e},p),A=r(()=>{x(n)&&o.cancelWorkflow({warnIfNoWorkflow:!1})});this._featureFormHandle&&f.push(this._featureFormHandle),this.addHandles(f,this._handleKeys.beforeCommit),this.addHandles(g,this._handleKeys.afterCommit),this.addHandles([r(()=>d.fileInfos.removeAll()),s(f),s(g),A,V,k],me)}async _waitForActiveToolCleared(){const e=this.data.viewModel.view;if(null==e?.activeTool)return;const t=new AbortController;this.addHandles(n(t),fe),await f(()=>null==e?.activeTool,t.signal),t.abort()}};function ye(e,t,a){let i=null;const n=()=>e.snappingOptions.featureSources,o=()=>(i=new U({layer:t}),n().add(i),i),l=()=>{null!=i&&(n().remove(i),i=d(i))};return s([h(()=>{const e=a.creationInfo?.layer,t=n().find(t=>t.layer===e);return{hasFeatureLayerSource:!!t,enabled:t?.enabled??!1}},({hasFeatureLayerSource:e,enabled:t})=>{if(!e)return l();i??=o(),i.enabled=t},g),r(l)])}function ve(e){const t=e.viewModel.view;if(!t)return[];const a=[];if("3d"===t.type){const i=new E({view:t});a.push(h(()=>e.selectedPendingFeature,(e,t)=>{i.remove(e),i.add(t)}),r(()=>i.destroy()))}const i=new E({view:t,highlightName:L});return a.push(h(()=>e.temporaryHighlightFeature,e=>{i.removeAll(),i.add(e)}),r(()=>i.destroy())),a}function Fe(e,t,a,i){const r=[];return t.forEach((t,s)=>{if(!t.error){const n=e[s],o=i.get(n)||[];n.attributes[a.objectIdField]=t.objectId,o.forEach(({form:e})=>r.push({feature:n,attachment:e}))}}),r}function _e(e){for(const t of e){const{sourceLayer:e}=t;e&&"globalIdField"in e&&null!=e.globalIdField&&(t.attributes[e.globalIdField]??=w())}}function be(e,t){const a=[];if(!t||0===t.size)return{addFeatures:e};for(const[i,r]of t)for(const{file:e}of r)a.push({feature:i,attachment:{globalId:w(),data:e}});return a.length?{addFeatures:e,addAttachments:a}:{addFeatures:e}}function Me(e,t){return e.map(e=>{const{addFeatures:a}=e;if(!a||0===a.length)return e;const i=[];for(const r of a){const e=t.get(r);if(e)for(const{file:t}of e)i.push({feature:r,attachment:{globalId:w(),data:t}})}return i.length?{...e,addAttachments:i}:e})}e([y()],we.prototype,"allowSave",null),e([y()],we.prototype,"createFeatureState",void 0),e([y()],we.prototype,"curveResizeDisabled",null),e([y()],we.prototype,"curveUpdatesDisabled",null),e([y()],we.prototype,"data",void 0),e([y({constructOnly:!0})],we.prototype,"isNested",void 0),e([y()],we.prototype,"formViewModel",null),e([y()],we.prototype,"hasInvalidFormTemplate",null),e([y()],we.prototype,"hasPendingEdits",null),e([y()],we.prototype,"hasPreviousStep",null),e([y()],we.prototype,"_getDrawMeshHelpMessage",void 0),e([y()],we.prototype,"helpMessage",null),e([y()],we.prototype,"noticeMessage",null),e([y()],we.prototype,"layer",null),e([y()],we.prototype,"parent",null),e([y()],we.prototype,"keyboardCancellationEnabled",null),e([y()],we.prototype,"reliesOnOwnerAdminPrivileges",null),e([y()],we.prototype,"saveActionLabel",null),e([y()],we.prototype,"shouldShowAttachments",null),e([y()],we.prototype,"shouldAllowAttachmentEditing",null),e([y()],we.prototype,"sketchUpdateOptions",null),e([y()],we.prototype,"sketchViewModel",null),e([y()],we.prototype,"availableCreateTools",null),e([y()],we.prototype,"_attachmentsActive",null),we=ue=e([v("esri.widgets.Editor.CreateFeaturesWorkflow")],we);const Ie=we;export{Ie as default};
@@ -188,7 +188,7 @@ export default class EditorViewModel extends EventedAccessor {
188
188
  *
189
189
  * @since 4.33
190
190
  */
191
- get formViewModel(): BatchAttributeFormViewModel | FeatureFormViewModel | null | undefined;
191
+ get formViewModel(): BatchAttributeFormViewModel | null | undefined;
192
192
  /**
193
193
  * Use this property to determine if the next generation geometry creation
194
194
  * has been disabled. This can happen when
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{isSome as t}from"../../core/arrayUtils.js";import{createTask as i}from"../../core/asyncUtils.js";import o from"../../core/Collection.js";import{deprecatedFunction as r}from"../../core/deprecate.js";import s from"../../core/Error.js";import{EventedAccessor as a}from"../../core/Evented.js";import{abortHandle as n,makeHandle as l}from"../../core/handleUtils.js";import"../../core/has.js";import c from"../../core/Logger.js";import{destroyMaybe as d,abortMaybe as p,removeMaybe as h}from"../../core/maybe.js";import{throwIfAborted as u}from"../../core/promiseUtils.js";import w from"../../core/ReactiveMap.js";import{watch as f,syncAndInitial as m,initial as y,on as g,when as k,sync as v,whenOnce as _}from"../../core/reactiveUtils.js";import{property as W,subclass as M}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as T}from"../../core/support/UpdatingHandles.js";import{getTemplatesForLayers as F}from"../../editing/templateUtils.js";import{getGraphicLayer as b}from"../../graphic/graphicOriginUtils.js";import S from"../../layers/GraphicsLayer.js";import{isEditableLayer as V}from"../../layers/support/editableLayers.js";import{isFeatureLayer as I,isSubtypeGroupLayer as L,getOwningPortalUrl as E}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as C}from"../../portal/support/urlUtils.js";import A from"../../views/SelectionManager.js";import{fetchFullFeaturesByObjectId as U}from"../../views/draw/support/editingSessionUtils.js";import O from"../../views/interactive/sketch/SketchLabelOptions.js";import j from"../../views/interactive/sketch/SketchOptions.js";import P from"../../views/interactive/sketch/SketchTooltipOptions.js";import R from"../../views/interactive/sketch/SketchValueOptions.js";import{SnappingManager as H}from"../../views/interactive/snapping/SnappingManager.js";import q from"../../views/interactive/snapping/SnappingOptions.js";import{isSelectableLayer as x}from"../../views/support/selectionUtils.js";import G from"../Attachments/AttachmentsViewModel.js";import D from"./CreateFeaturesWorkflow.js";import B from"./UpdateWorkflow.js";import{getLayersFromWorkflow as N,isCreateFeaturesWorkflow as Q,isUpdateRecordWorkflow as z,isUpdateFeaturesWorkflow as Z,isMergeFeaturesWorkflow as $,isSplitFeatureWorkflow as J,isUpdateWorkflow as K,isFeatureFormViewModel as X,findEditorItemForLayerOrThrow as Y,toFeatureInfos as ee,fetchFullFeatures as te,findEditorItemForLayer as ie,whenEditorLayerView as oe,isBatchAttributeFormViewModel as re}from"./workflowUtils.js";import se from"./support/EditorItem.js";import{assertViewNot3D as ae,MultipleSourceLayersError as ne,InsufficientFeatureCountError as le,MissingOriginLayerError as ce,assertMergeWorkflowCapabilities as de,FetchFullFeatureError as pe,assertSplitWorkflowCapabilities as he}from"./support/errors.js";import{makeTemplateGroupInfoForLayer as ue}from"../FeatureTemplates/featureTemplatesUtils.js";import we from"../FeatureTemplates/FeatureTemplatesViewModel.js";import fe from"../Sketch/SketchViewModel.js";import me from"../Spinner/SpinnerViewModel.js";import{goTo as ye}from"../support/goToUtils.js";import{isFeatureItem as ge,isLayerItem as ke}from"../support/SelectionList/selectionListUtils.js";import ve from"../support/SelectionList/SelectionListViewModel.js";import _e from"../support/SelectionToolbar/SelectionToolbarViewModel.js";function We(e,t){return e?.find(e=>e.layer===t)}let Me=class extends a{constructor(e){super(e),this._defaultSelectionManager=new A,this._queuedSelectionTool=null,this._sketchEventListenerHandle=null,this._sketchGraphicsLayer=new S({listMode:"hide",internal:!0,title:"Editor sketch layer"}),this._snappingManager=null,this._templatesByLayer=new Map,this._updateItemsTask=null,this._updateTemplatesTask=null,this._updatingHandles=new T,this._featureTemplatesViewModelIsRestricted=!1,this.activeWorkflow=null,this._activityQueue=new o,this.editorItems=new o,this.editorItemsLayerMap=new w,this.failures=[],this.hideTemplatesForInactiveLayers=!1,this.attachmentsViewModel=new G({capabilities:{editing:!0}}),this.featureTemplatesViewModel=new we({disabledItemFunction:({layer:e})=>this._itemIsSuspended(e)}),this.layerInfos=null,this.ownSketchViewModel=new fe({layer:this._sketchGraphicsLayer,useLegacyCreateTools:this._get("useLegacyCreateTools")??!0}),this.selectionListViewModel=new ve,this.selectionManager=null,this.selectionToolbarViewModel=new _e({continuousSelectionEnabled:!0,defaultOperationType:"replace",persistSelection:!1,returnGeometry:!1}),this.sketchOptions=new j,this.snappingOptions=new q({attributeRulesEnabled:!0}),this.spinnerViewModel=new me,this.syncViewSelection=!1,this.pageStack=[],this.showDiscardEditsPrompt=()=>Promise.resolve(!0),this.showConfirmationPrompt=()=>Promise.resolve(!0),this._candidateCommitted=!1,this.back=async()=>{if("viewing-selection-list"===this.state)return this.selectionListViewModel.filterText=void 0,void this.effectiveSelectionManager.clear();this.canGoBack&&(this.activeWorkflow?.hasPreviousStep?await this.activeWorkflow.back(this.showDiscardEditsPrompt):await this._cancelWorkflow({force:!this.hasPendingEdits}))},this.saveWorkflow=async()=>await(this.activeWorkflow?.save(this.showConfirmationPrompt)),this.selectFeature=(e,t=!1)=>{const i=this.activeWorkflow;if(this._candidateCommitted||"update"!==i?.type)return;const{rootFeatures:o}=i.data;o.removeAll(),e&&o.add(e),t&&(i.next(),this._candidateCommitted=!0)}}initialize(){this.addHandles([f(()=>{const e=this.view,t=e?.map?.editableLayers.toArray(),i=e?.allLayerViews,o=i?.filter(e=>!!t?.includes(e.layer));return[t,o,this.layerInfos]},()=>this._updateEditorItems(),m),f(()=>this.hideTemplatesForInactiveLayers,()=>this.syncFeatureTemplates()),f(()=>this._selectionSources,()=>this._syncSelectionSources(),y),g(()=>this.activeWorkflow,"cancel",()=>this.emit("workflow-cancel")),g(()=>this.activeWorkflow,"commit",()=>this.emit("workflow-commit")),g(()=>this.activeWorkflow,"complete",()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)}),k(()=>!this.activeWorkflow&&this._queuedSelectionTool,()=>this._queuedSelectionTool&&this.selectionToolbarViewModel.activateTool(this._queuedSelectionTool)),f(()=>this.activeWorkflow,e=>this._defaultSelectionManager.highlightEnabled=!e),k(()=>this.view?.map,e=>e.add(this._sketchGraphicsLayer),y),g(()=>this.editorItems,"change",()=>this._afterEditorItemsChange()),f(()=>[this.canCreate,this.canUpdateVisible],()=>this._afterEditorItemsChange()),f(()=>this.page,(e,t)=>{const i=[...this.pageStack];if(-1===i.indexOf(e))i.push(e);else for(;i.length&&i.at(-1)!==e;)i.pop();this.pageStack=i},m),k(()=>"awaiting-update-feature-candidate"===this.state,()=>this._candidateCommitted=!1),g(()=>this.featureTemplatesViewModel,"select",async({item:e,oldItem:t})=>{const{activeWorkflow:i}=this;if(i){if("update"===i.type&&"awaiting-feature-creation-info"===i.activeWorkflow?.stepId)return;try{await this.cancelWorkflow({force:!this.hasPendingEdits})}catch{return void this.featureTemplatesViewModel.select(t,{emit:!1})}}if(!e)return;const o={layer:e.layer,template:e.template};if(e.supportsUpload)return this.featureTemplatesViewModel.select(t,{emit:!1}),this.startCreateFeaturesWorkflow(o);await this.startCreateFeaturesWorkflowAtFeatureCreation(o)}),f(()=>[this.view,this.featureTemplatesViewModel],([e,t])=>{t.view=e},m),g(()=>this.view,"key-down",e=>{"Escape"===e.key&&this.activeWorkflow?.keyboardCancellationEnabled&&(e.stopPropagation(),this.back())}),g(()=>this.sketchViewModel,["create","delete","update"],e=>{const{activeWorkflow:t}=this,i=N(t),o=`sketch-${e.type}`;this.emit(o,{type:o,detail:e,layer:i[0],layers:i})},v),f(()=>this.view,e=>{if(this._snappingManager=d(this._snappingManager),!e)return;const t=this.snappingOptions;this._snappingManager=new H({view:e,options:t}),this.ownSketchViewModel.snappingManager=this._snappingManager},m),f(()=>this.snappingOptions,e=>{this._snappingManager&&(this._snappingManager.options=e)},m),g(()=>this.selectionToolbarViewModel,"complete",e=>this._onSelectionComplete(e)),f(()=>({view:this.view,selectionManager:this.effectiveSelectionManager,selectionListViewModel:this.selectionListViewModel,selectionToolbarViewModel:this.selectionToolbarViewModel}),({view:e,selectionManager:t,selectionListViewModel:i,selectionToolbarViewModel:o})=>{t.view=e,i.view=e,o.view=e},m),f(()=>this.effectiveSelectionManager,e=>{this.selectionListViewModel.selectionManager=e,this.selectionToolbarViewModel.selectionManager=e},m)])}destroy(){this._cancelWorkflow({warnIfNoWorkflow:!1}).then(()=>{this.view?.map?.remove(this._sketchGraphicsLayer),this.view=null}),this._updateItemsTask=p(this._updateItemsTask),this._updatingHandles.destroy(),this._sketchEventListenerHandle=h(this._sketchEventListenerHandle),this.selectionListViewModel?.destroy(),this.selectionToolbarViewModel?.destroy(),this._defaultSelectionManager.destroy()}get _featureTemplatesLayersAndTables(){const e=new o;for(const t of this.editorItems){const i=this.hideTemplatesForInactiveLayers&&!t.visible;t.supportsCreateFeaturesWorkflow&&!i&&e.push(t.layer)}return e}get _selectionSources(){const e=new o;if(this.syncViewSelection||this.selectionManager)return e;for(const t of this.editorItems)x(t.layer)&&t.supportsUpdateWorkflow&&e.push(t.layer);return e}get activeFeatureCount(){const e=this.activeLeafWorkflow;return Q(e)?e.pendingFeatures.length:z(e)&&e.data.edits.feature?1:Z(e)?e.data.fullFeatures.length:$(e)?e.data.features.length:J(e)?2:0}get activeLeafWorkflow(){const e=this.activeWorkflow;return e&&K(e)?e.activeWorkflow??e:e}get canCreate(){return this.editorItems.some(e=>e.supportsCreateFeaturesWorkflow)}get canCreateVisible(){return!!this.featureTemplatesLayers.length}get canUpdate(){return this.editorItems.some(e=>e.supportsUpdateWorkflow)}get canUpdateVisible(){return this.editorItems.some(e=>e.supportsUpdateWorkflow&&e.visible)}get featureTemplatesLayers(){return this._featureTemplatesLayersAndTables.filter(e=>"scene"===e.type||!e.isTable)}get effectiveSelectionManager(){const e=this.view;return e&&this.syncViewSelection?e.selectionManager:this.selectionManager??this._defaultSelectionManager}get featureFormViewModel(){const e=this.activeWorkflow?.formViewModel;return X(e)?e:null}get formViewModel(){return this.activeWorkflow?.formViewModel}get utilityNetworkAssociationAddAssociationViewModel(){const{activeWorkflow:e}=this;return"update"===e?.type?e.activeUtilityNetworkAssociationAddAssociationViewModel:null}get labelOptions(){return this.sketchOptions.labels}set labelOptions(e){this.sketchOptions.labels=e}get useLegacyCreateTools(){return this.ownSketchViewModel.useLegacyCreateTools}set useLegacyCreateTools(e){this.ownSketchViewModel.useLegacyCreateTools=e}get isUsingLegacyCreateTools(){return this.useLegacyCreateTools||"2d"!==this.view?.type}get sketchViewModel(){const{activeWorkflow:e}=this;return"update"===e?.type?e.activeSketchViewModel:"create-features"===e?.type?e.sketchViewModel:this.ownSketchViewModel}get state(){if(!this.view?.ready)return"disabled";const e=this.attachmentsViewModel.mode;if("add"===e)return"adding-attachment";if("edit"===e)return"editing-attachment";const{activeWorkflow:t}=this,i=!t?.stepId;return this.effectiveSelectionManager.count&&i?"viewing-selection-list":i?"ready":"update"===t.type&&t.activeWorkflow?.stepId?t.activeWorkflow.stepId:t.stepId}get syncing(){return this._activityQueue.length>0}get updating(){return this._updatingHandles.updating||!0===this.activeWorkflow?.updating}get tooltipOptions(){return this.sketchOptions.tooltips}set tooltipOptions(e){this.sketchOptions.tooltips=e}get valueOptions(){return this.sketchOptions.values}set valueOptions(e){this.sketchOptions.values=e}set view(e){this.ownSketchViewModel.view=e,this.spinnerViewModel.view=e,this._set("view",e)}get canZoomTo(){return this._getWorkingFeatures().some(e=>e.geometry)}get page(){const{activeWorkflow:e,state:t}=this;if("update"===e?.type&&X(e.formViewModel)){const{associatedLayer:t,associationId:i}=e.formViewModel;if(t||null!=i)return"viewing-associated-features"}if("update"===e?.type&&"awaiting-feature-to-update"===e.stepId)return"ready";if("create-features"===e?.type&&0===e.numPendingFeatures){const t=e.data.upload;if(t)return"default"===t.state?"ready":"creating-features-upload-details"}return t??"disabled"}get featureFormDisabled(){const{activeLeafWorkflow:e}=this;if(z(e))return!1===e.data.editorItem?.capabilities.update.attributes||!0===e.formViewModel.disabled;if(Z(e)){const{formViewModel:t}=e;return t.disabled||t.readOnly}return!1}get featureFormHasAssociation(){return!!this.featureFormViewModel?.activeAssociation}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeLeafWorkflow:e}=this;if(z(e)){const{data:t}=e;return t.editorItem?.capabilities.delete.enabled&&!t.readOnly}return!!Z(e)&&e.data.editorItems.every(e=>e.capabilities.delete.enabled)}get hasPendingEdits(){return this.activeWorkflow?.hasPendingEdits??!1}get snappingManager(){return this._snappingManager}activateSelectionTool(e){return this.selectionToolbarViewModel.activateTool(e)}cancelSelectionTool(){this.selectionToolbarViewModel.cancel()}getTemplatesForLayer(e){return this._templatesByLayer.get(e)??[]}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateFeaturesWorkflowAtFeatureCreation(e){return this.startCreateFeaturesWorkflow(e,"creating-features")}async startCreateFeaturesWorkflow(e,t="awaiting-feature-creation-info"){if(await _(()=>!this.updating),!this.canCreate)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled.");const i=this._createUpdatingResolver();try{await this._cancelWorkflow();const i=this._createCreateFeaturesWorkflow(e,t);this._set("activeWorkflow",i),await i.start()}catch(o){this._logErrorAndCancelWorkflow(o)}finally{i.resolve()}}async startCreateFeaturesWorkflowAtFeatureEdit(e){await _(()=>!this.updating);const t=this._createUpdatingResolver();try{const{initialFeature:t}=e,i=t.sourceLayer=t.layer,o=i?Y(this.editorItems,i):void 0;if(!o?.supportsCreateFeaturesWorkflow)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled for this layer.");await this._cancelWorkflow();const r=this._createCreateFeaturesWorkflow({initialFeature:t,layer:o.layer,maxFeatures:1},"creating-features");this._set("activeWorkflow",r),await r.start()}catch(i){this._logErrorAndCancelWorkflow(i)}finally{t.resolve()}}async startMergeFeaturesWorkflow(e,t={}){await _(()=>!this.updating),ae(this,"merge-features");const i=Array.isArray(e)?ee(e):[e];if(i.length>1)throw new ne;if(0===i.length||i[0].objectIds.length<2)throw new le(2);const r=i[0],s=r.layer;if(!s)throw new ce;const a=Y(this.editorItems,s);de(a);const l=this._createUpdatingResolver(),c=new AbortController;this.addHandles(n(c));try{await this._cancelWorkflow(),this.cancelSelectionTool();const e=await U(r.objectIds,s,this.view?.spatialReference,c.signal);if(e.length!==r.objectIds.length)throw new pe;let i;if(t.keyFeature){const o=t.keyFeature.getObjectId();i=e.find(e=>e.getObjectId()===o)??t.keyFeature}const a=this._createUpdateWorkflow("editing-existing-feature",{rootFeatures:new o(e),rootWorkflowOptions:{type:"merge",props:{...t,keyFeature:i}}});this._set("activeWorkflow",a),this.addHandles(this._destroyWorkflowOnCommit(a)),await a.start()}catch(d){this._logErrorAndCancelWorkflow(d)}finally{l.resolve()}}async startSplitFeatureWorkflow(e,t={}){await _(()=>!this.updating),ae(this,"split-feature");const i=b(e);if(!i)throw new ce;const r=Y(this.editorItems,i);he(r);const s=this._createUpdatingResolver(),a=new AbortController;this.addHandles(n(a));try{await this._cancelWorkflow(),this.cancelSelectionTool();const r=await te([e],i,this.view?.spatialReference,a.signal);if(1!==r.length)throw new pe;const s=this._createUpdateWorkflow("editing-existing-feature",{rootFeatures:new o(r),rootWorkflowOptions:{type:"split",props:t}});this._set("activeWorkflow",s),this.addHandles(this._destroyWorkflowOnCommit(s)),await s.start()}catch(l){this._logErrorAndCancelWorkflow(l)}finally{s.resolve()}}async startUpdateFeaturesWorkflow(e){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update features workflow is unsupported or disabled.");const t=Array.isArray(e)?ee(e):[e];if(t.length>1)throw new ne;const i=this._createUpdatingResolver();try{await this._cancelWorkflow(),this.cancelSelectionTool();const e=this._createUpdateWorkflow("editing-existing-feature",{rootFeatureInfos:t,rootWorkflowOptions:{type:"update-multiple"}});e.addHandles(this._destroyWorkflowOnCommit(e)),this._set("activeWorkflow",e),await e.start()}catch(o){this._logErrorAndCancelWorkflow(o)}finally{i.resolve()}}async startUpdateWorkflowAtFeatureSelection(){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const e=this._createUpdatingResolver();try{await this._cancelWorkflow();const e=this._createUpdateWorkflow();this._set("activeWorkflow",e),await e.start()}catch(t){this._logErrorAndCancelWorkflow(t)}finally{e.resolve()}}async startUpdateWorkflowAtMultipleFeatureSelection(e){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const t=this._createUpdatingResolver();try{await this._cancelWorkflow();const t=this._createUpdateWorkflow("awaiting-update-feature-candidate");t.data.candidates=e,this._set("activeWorkflow",t),await t.start()}catch(i){this._logErrorAndCancelWorkflow(i)}finally{t.resolve()}}async startUpdateWorkflowAtFeatureEdit(e){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const t=this._createUpdatingResolver();try{await this._cancelWorkflow(),this.cancelSelectionTool();const t=this._createUpdateWorkflow("editing-existing-feature",{rootFeatures:new o([e])});t.addHandles(this._destroyWorkflowOnCommit(t)),this._set("activeWorkflow",t),await t.start()}catch(i){this._logErrorAndCancelWorkflow(i)}finally{t.resolve()}}async startUpdateWorkflowWithActiveSelection(){const{selectionListViewModel:e}=this;if(!e.visibleFeatureCount||!e.visibleLayerCount)throw new s("editing:missing-selection","Unable to determine visible selection.");if(e.visibleLayerCount>1)throw new s("editing:features-different-layers","Cannot start workflow with features from different layers.");const t=e.layerItems.find(e=>e.visible);t&&await this._startUpdateWorkflowWithLayerItem(t,"update")}async deleteFeatureFromWorkflow(){r(c.getLogger(this),"EditorViewModel.deleteFeatureFromWorkflow is deprecated. Use EditorViewModel.deleteFeatures instead.",{version:"4.33",replacement:"EditorViewModel.deleteFeatures",warnOnce:!0}),await this.deleteFeatures()}async deleteFeatures(){const e=this.activeWorkflow;if(K(e))return e.deleteActiveFeatures();this._logError("editing:unsupported-workflow","Deleting features requires an active update workflow.")}async deleteAssociationFromWorkflow(){const{activeWorkflow:e}=this;e&&"update"===e.type?await e.deleteActiveAssociation():this._logError("editing:unsupported-workflow","Deleting an association requires an active update workflow.")}async cancelWorkflow(e){return this._cancelWorkflow({warnIfNoWorkflow:!0,...e})}itemHasInvalidFormTemplate(e){return null!=e&&!0===ie(this.editorItems,e.layer)?.hasInvalidFormTemplate}syncFeatureTemplates(){this._featureTemplatesViewModelIsRestricted||this._updateTemplates()}zoomTo(e){const{view:i,sketchViewModel:o}=this;if(!i)return;const r=void 0,s=e??o?.createGraphic;if(s)"mesh"===s.geometry?.type?ye(i,s.geometry,r):ye(i,s,r);else{const e=this._getWorkingFeatures();"3d"===i.type&&e?.some(e=>"mesh"===e.geometry?.type)?ye(i,e.map(e=>e.geometry).filter(t),r):e&&ye(i,e,r)}}async toggleUpdateWorkflow(){this.canUpdate&&(this.hasPendingEdits&&!await this.showDiscardEditsPrompt()||(this.activeWorkflow&&"awaiting-feature-to-update"===this.state?await this.cancelWorkflow({force:!0}):await this.startUpdateWorkflowAtFeatureSelection()))}async onSelectionListItemSelect(e){ge(e)&&await this.startUpdateWorkflowAtFeatureEdit(e.graphic)}async onSelectionListMenuItemSelect(e,t){ge(e)?await this.startUpdateWorkflowAtFeatureEdit(e.graphic):ke(e)&&await this._startUpdateWorkflowWithLayerItem(e,t)}restrictFeatureTemplatesViewModelToLayer(e){return this._featureTemplatesViewModelIsRestricted=!0,this._setFeatureTemplatesViewModelLayers([e]),l(()=>{this._featureTemplatesViewModelIsRestricted=!1,this._setFeatureTemplatesViewModelLayers(this.featureTemplatesLayers)})}async _getEditorItemCandidates(e){const{view:t}=this;if(!t?.map)return[];const{map:i}=t,o=i.editableLayers.toArray(),r=i.allTables.toArray().filter(e=>I(e)||L(e));return await Promise.allSettled([...o.flatMap(e=>this._getLayerLoadPromise(e)),...r.flatMap(e=>this._getLayerLoadPromise(e))]),u(e),[...o.reverse(),...r.reverse()].filter(e=>V(e)&&("mesh"!==e.geometryType||"3d"===t.type)).flatMap(e=>"subtype-group"===e.type?e.sublayers.toArray():e)}_getLayerLoadPromise(e){return L(e)?e.loadAll():e.load()}_drainEditorItems(){this.editorItems.drain(e=>e.destroy())}_updateEditorItems(){p(this._updateItemsTask);const{view:e}=this,t=i(async t=>{if(!e?.map||!e?.allLayerViews)return;const i=await this._getEditorItemCandidates(t);if(!i.length)return this._drainEditorItems(),void this.editorItemsLayerMap.clear();const o=[],r=[],s=[],{editorItemsLayerMap:a,layerInfos:n}=this;for(const c of i){const t=We(n,c),i=await oe(e,c).catch(()=>null),l=t?o:i?r:s,d=new se({layer:c,layerInfo:t,layerView:i});l.push(d),a.set(c,d)}n?.length&&o.sort((e,t)=>n.findIndex(({layer:t})=>t===e.layer)-n.findIndex(({layer:e})=>e===t.layer));const l=[...o,...r,...s];t.aborted||(this._drainEditorItems(),this.editorItems.addMany(l))});this._updatingHandles.consumePromise(t.promise),this._updateItemsTask=t}_updateTemplates(){p(this._updateTemplatesTask);const e=i(async e=>{const t=this._templatesByLayer,i=this._featureTemplatesLayersAndTables.filter(e=>!t.has(e));if(i.length>0){const o=await F({layers:i.toArray(),view:this.view,signal:e,queryOptions:{returnVisibleTemplatesOnly:!0}});for(const{layer:e,templates:i}of o)t.set(e,i)}this._setFeatureTemplatesViewModelLayers(this.featureTemplatesLayers)});this._updatingHandles.consumePromise(e.promise),this._updateTemplatesTask=e}_setFeatureTemplatesViewModelLayers(e){const t=this._templatesByLayer,i=[];for(const o of e){const e=t.get(o);e&&e.length>0&&i.push(ue(o,e))}this.featureTemplatesViewModel.templateInfos=i}_afterEditorItemsChange(){const{activeWorkflow:e}=this;if(this.syncFeatureTemplates(),!e)return;const{stepId:t}=e;"create-features"!==e.type?"update"===e.type&&("awaiting-feature-to-update"===t&&!this.canUpdateVisible||"awaiting-update-feature-candidate"===t&&!e.hasUpdatableCandidates)&&this._cancelWorkflow():"awaiting-feature-creation-info"!==t||this.canCreate||this._cancelWorkflow()}async _cancelWorkflow(e){const t=this.activeWorkflow;if(!t)return void(e?.warnIfNoWorkflow&&this._logError("editing:no-active-workflow","There is no active workflow to cancel."));if(!e||!1!==e.force){this.emit("workflow-cancel"),this._set("activeWorkflow",null);try{await t.cancel(e)}finally{t.destroy()}}else try{await t.cancel(e),this._set("activeWorkflow",null),t.destroy()}catch(i){}}_createCreateFeaturesWorkflow(e,t){return D.create({viewModel:this,creationInfo:e,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:t,applyEdits:(e,t,i)=>this._applyEdits(e,t,i),applyEditsFeatureService:(e,t,i)=>this._applyEditsFeatureService(e,t,i),addAttachmentsCallback:(e,t)=>this._addAttachments(e,t)})}_createUpdateWorkflow(e,t){const i=B.create({viewModel:this,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:e,...t,applyEdits:(e,t,i)=>this._applyEdits(e,t,i),applyEditsFeatureService:(e,t,i)=>this._applyEditsFeatureService(e,t,i),addAttachmentsCallback:(e,t)=>this._addAttachments(e,t)});return i}_addAttachments(e,t){const i=t.map(t=>this._addAttachment(e,t.feature,t.attachment))??[];return Promise.all(i)}async _addAttachment(e,t,i){let o=null;if(!("addAttachment"in e)||null==e.capabilities?.attachment)throw new s("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation(async()=>(o=await(e.addAttachment?.(t,i).catch(e=>{throw e?.error||e}))??null,o)),o}async _applyEdits(e,t,i){let o=null;const r=e.url?await E(e.url):null,s={returnServiceEditsOption:(!r||!C(r))&&!/\/hosted\//i.test(e.url)?"original-and-current-features":void 0,editsRespectTrueCurves:!0,...i};return await this._queueOperation(async()=>{const{view:i}=this;if(!i)return null;const r=await oe(i,e).catch(()=>null);return o=await e.applyEdits(t,s),r&&await _(()=>!r.updating),o}),o}async _applyEditsFeatureService(e,t,i){let o=null;return await this._queueOperation(async()=>o=await e.applyEdits(t,i)),o}_destroyWorkflowOnCommit(e){return g(()=>e,"commit",()=>{e.destroy(),this.activeWorkflow===e&&this._set("activeWorkflow",null)})}_queueOperation(e){this._activityQueue.push(e);const t=(e,t)=>{const i=t.indexOf(e);i>-1&&t.splice(i,1)};return e().then(e=>(Array.isArray(e)?e.forEach(e=>this._handleEditsResultError(e)):this._handleEditsResultError(e),e)).catch(i=>{this._logError("editing:operation-error","An error occurred.",{error:i});const o={error:i,retry:()=>(t(o,this.failures),this._queueOperation(e)),cancel:()=>{t(o,this.failures)}};this._set("failures",[...this.failures,o])}).then(()=>{t(e,this._activityQueue)})}_handleEditsResultError(e){if(null!=e&&"error"in e&&null!=e.error)throw e.error;if(null!=e&&"addFeatureResults"in e){const{addFeatureResults:t,deleteFeatureResults:i,updateFeatureResults:o}=e,r=t.find(e=>!!e.error)||o.find(e=>!!e.error)||i.find(e=>!!e.error);if(r)throw r.error}}_createUpdatingResolver(){const e=Promise.withResolvers();return this._updatingHandles.consumePromise(e.promise),e}_logErrorAndCancelWorkflow(e){const{name:t,message:i,details:o}=e;this._logError(t??"editing:workflow-start-failed",i??void 0,o??e),this._cancelWorkflow({force:!0})}_itemIsSuspended(e){const t=Y(this.editorItems,e);return null!=t&&(!t.visible||t.disabled)}_logError(e,t,i){c.getLogger(this).error(new s(e,t,i))}_syncSelectionSources(){this._defaultSelectionManager.sources.items=this._selectionSources.toArray()}async _onSelectionComplete(e){if(e.aborted)return;const{operationType:t,selection:i}=e,{effectiveSelectionManager:o}=this;this._queuedSelectionTool=void 0;const r=[],s=[];i.forEach(e=>{const t=b(e),i=this.editorItemsLayerMap.get(t);i?.editable&&s.push(e),!1!==i?.visible&&r.push(e)});const a=1===r.length&&s.includes(r[0]);if("ready"===this.state&&a&&"replace"===t)return this._queuedSelectionTool=e.toolName,this.startUpdateWorkflowAtFeatureEdit(r[0]);switch(t){case"remove":o.updateSelection({current:[],added:[],removed:r});break;case"replace":o.clear(),o.updateSelection({current:r,added:[],removed:[]});break;case"add":o.updateSelection({current:r,added:[],removed:[]})}}async _startUpdateWorkflowWithLayerItem(e,t){if(!e.objectIds?.length)return;const i=e.featureItems.filter(e=>e.visible).map(e=>e.graphic),o=this.selectionListViewModel.filterText;if(1===i.length)return await this.startUpdateWorkflowAtFeatureEdit(i[0]);let r;if(null!=o&&""!==o){const e=ee(i);if(e.length>1)throw new ne;if(r=e[0],!r)throw new le("merge"===t?2:1)}else r={layer:e.layer,objectIds:e.objectIds};"update"===t?await this.startUpdateFeaturesWorkflow(r):"merge"===t&&await this.startMergeFeaturesWorkflow(r)}_getWorkingFeatures(){const{sketchViewModel:e}=this;if(e?.createGraphic)return[e.createGraphic];if(e?.updateGraphics?.length)return e.updateGraphics.toArray();const{formViewModel:t}=this;if(X(t)&&t.feature)return[t.feature];if(re(t)){if(t.activeFeature)return[t.activeFeature];if(t.features.length)return t.features.toArray()}return[]}};e([W()],Me.prototype,"_defaultSelectionManager",void 0),e([W()],Me.prototype,"_featureTemplatesLayersAndTables",null),e([W()],Me.prototype,"_queuedSelectionTool",void 0),e([W()],Me.prototype,"_snappingManager",void 0),e([W()],Me.prototype,"_selectionSources",null),e([W()],Me.prototype,"activeFeatureCount",null),e([W({readOnly:!0})],Me.prototype,"activeWorkflow",void 0),e([W()],Me.prototype,"activeLeafWorkflow",null),e([W({readOnly:!0})],Me.prototype,"_activityQueue",void 0),e([W({readOnly:!0})],Me.prototype,"canCreate",null),e([W()],Me.prototype,"canCreateVisible",null),e([W({readOnly:!0})],Me.prototype,"canUpdate",null),e([W()],Me.prototype,"canUpdateVisible",null),e([W()],Me.prototype,"featureTemplatesLayers",null),e([W()],Me.prototype,"editorItems",void 0),e([W()],Me.prototype,"editorItemsLayerMap",void 0),e([W()],Me.prototype,"effectiveSelectionManager",null),e([W({readOnly:!0})],Me.prototype,"failures",void 0),e([W()],Me.prototype,"hideTemplatesForInactiveLayers",void 0),e([W({type:G})],Me.prototype,"attachmentsViewModel",void 0),e([W()],Me.prototype,"featureFormViewModel",null),e([W()],Me.prototype,"formViewModel",null),e([W()],Me.prototype,"utilityNetworkAssociationAddAssociationViewModel",null),e([W({type:we})],Me.prototype,"featureTemplatesViewModel",void 0),e([W({type:O})],Me.prototype,"labelOptions",null),e([W()],Me.prototype,"layerInfos",void 0),e([W()],Me.prototype,"useLegacyCreateTools",null),e([W()],Me.prototype,"isUsingLegacyCreateTools",null),e([W()],Me.prototype,"ownSketchViewModel",void 0),e([W()],Me.prototype,"selectionListViewModel",void 0),e([W()],Me.prototype,"selectionManager",void 0),e([W()],Me.prototype,"selectionToolbarViewModel",void 0),e([W()],Me.prototype,"sketchOptions",void 0),e([W()],Me.prototype,"sketchViewModel",null),e([W({type:q,nonNullable:!0})],Me.prototype,"snappingOptions",void 0),e([W()],Me.prototype,"spinnerViewModel",void 0),e([W()],Me.prototype,"state",null),e([W({readOnly:!0})],Me.prototype,"syncing",null),e([W()],Me.prototype,"syncViewSelection",void 0),e([W()],Me.prototype,"updating",null),e([W({type:P})],Me.prototype,"tooltipOptions",null),e([W({type:R})],Me.prototype,"valueOptions",null),e([W()],Me.prototype,"view",null),e([W()],Me.prototype,"canZoomTo",null),e([W()],Me.prototype,"pageStack",void 0),e([W()],Me.prototype,"showDiscardEditsPrompt",void 0),e([W()],Me.prototype,"showConfirmationPrompt",void 0),e([W()],Me.prototype,"_candidateCommitted",void 0),e([W()],Me.prototype,"page",null),e([W()],Me.prototype,"featureFormDisabled",null),e([W()],Me.prototype,"featureFormHasAssociation",null),e([W()],Me.prototype,"canGoBack",null),e([W()],Me.prototype,"shouldShowDeleteButton",null),e([W()],Me.prototype,"hasPendingEdits",null),e([W()],Me.prototype,"snappingManager",null),Me=e([M("esri.widgets.Editor.EditorViewModel")],Me);const Te=Me;export{Te as default};
2
+ import{__decorate as e}from"tslib";import{isSome as t}from"../../core/arrayUtils.js";import{createTask as i}from"../../core/asyncUtils.js";import o from"../../core/Collection.js";import{deprecatedFunction as r}from"../../core/deprecate.js";import s from"../../core/Error.js";import{EventedAccessor as a}from"../../core/Evented.js";import{abortHandle as n,makeHandle as l}from"../../core/handleUtils.js";import"../../core/has.js";import c from"../../core/Logger.js";import{destroyMaybe as d,abortMaybe as p,removeMaybe as h}from"../../core/maybe.js";import{throwIfAborted as u}from"../../core/promiseUtils.js";import w from"../../core/ReactiveMap.js";import{watch as f,syncAndInitial as m,initial as y,on as g,when as k,sync as v,whenOnce as _}from"../../core/reactiveUtils.js";import{property as W,subclass as M}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as T}from"../../core/support/UpdatingHandles.js";import{getTemplatesForLayers as b}from"../../editing/templateUtils.js";import{getGraphicLayer as S}from"../../graphic/graphicOriginUtils.js";import V from"../../layers/GraphicsLayer.js";import{isEditableLayer as F}from"../../layers/support/editableLayers.js";import{isFeatureLayer as I,isSubtypeGroupLayer as L,getOwningPortalUrl as E}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as C}from"../../portal/support/urlUtils.js";import A from"../../views/SelectionManager.js";import{fetchFullFeaturesByObjectId as U}from"../../views/draw/support/editingSessionUtils.js";import O from"../../views/interactive/sketch/SketchLabelOptions.js";import j from"../../views/interactive/sketch/SketchOptions.js";import P from"../../views/interactive/sketch/SketchTooltipOptions.js";import R from"../../views/interactive/sketch/SketchValueOptions.js";import{SnappingManager as H}from"../../views/interactive/snapping/SnappingManager.js";import q from"../../views/interactive/snapping/SnappingOptions.js";import{isSelectableLayer as x}from"../../views/support/selectionUtils.js";import G from"../Attachments/AttachmentsViewModel.js";import D from"./CreateFeaturesWorkflow.js";import B from"./UpdateWorkflow.js";import{getLayersFromWorkflow as N,isCreateFeaturesWorkflow as Q,isUpdateRecordWorkflow as z,isUpdateFeaturesWorkflow as Z,isMergeFeaturesWorkflow as $,isSplitFeatureWorkflow as J,isUpdateWorkflow as K,findEditorItemForLayerOrThrow as X,toFeatureInfos as Y,fetchFullFeatures as ee,findEditorItemForLayer as te,whenEditorLayerView as ie}from"./workflowUtils.js";import oe from"./support/EditorItem.js";import{assertViewNot3D as re,MultipleSourceLayersError as se,InsufficientFeatureCountError as ae,MissingOriginLayerError as ne,assertMergeWorkflowCapabilities as le,FetchFullFeatureError as ce,assertSplitWorkflowCapabilities as de}from"./support/errors.js";import{makeTemplateGroupInfoForLayer as pe}from"../FeatureTemplates/featureTemplatesUtils.js";import he from"../FeatureTemplates/FeatureTemplatesViewModel.js";import ue from"../Sketch/SketchViewModel.js";import we from"../Spinner/SpinnerViewModel.js";import{goTo as fe}from"../support/goToUtils.js";import{isFeatureItem as me,isLayerItem as ye}from"../support/SelectionList/selectionListUtils.js";import ge from"../support/SelectionList/SelectionListViewModel.js";import ke from"../support/SelectionToolbar/SelectionToolbarViewModel.js";function ve(e,t){return e?.find(e=>e.layer===t)}let _e=class extends a{constructor(e){super(e),this._defaultSelectionManager=new A,this._queuedSelectionTool=null,this._sketchEventListenerHandle=null,this._sketchGraphicsLayer=new V({listMode:"hide",internal:!0,title:"Editor sketch layer"}),this._snappingManager=null,this._templatesByLayer=new Map,this._updateItemsTask=null,this._updateTemplatesTask=null,this._updatingHandles=new T,this._featureTemplatesViewModelIsRestricted=!1,this.activeWorkflow=null,this._activityQueue=new o,this.editorItems=new o,this.editorItemsLayerMap=new w,this.failures=[],this.hideTemplatesForInactiveLayers=!1,this.attachmentsViewModel=new G({capabilities:{editing:!0}}),this.featureTemplatesViewModel=new he({disabledItemFunction:({layer:e})=>this._itemIsSuspended(e)}),this.layerInfos=null,this.ownSketchViewModel=new ue({layer:this._sketchGraphicsLayer,useLegacyCreateTools:this._get("useLegacyCreateTools")??!0}),this.selectionListViewModel=new ge,this.selectionManager=null,this.selectionToolbarViewModel=new ke({continuousSelectionEnabled:!0,defaultOperationType:"replace",persistSelection:!1,returnGeometry:!1}),this.sketchOptions=new j,this.snappingOptions=new q({attributeRulesEnabled:!0}),this.spinnerViewModel=new we,this.syncViewSelection=!1,this.pageStack=[],this.showDiscardEditsPrompt=()=>Promise.resolve(!0),this.showConfirmationPrompt=()=>Promise.resolve(!0),this._candidateCommitted=!1,this.back=async()=>{if("viewing-selection-list"===this.state)return this.selectionListViewModel.filterText=void 0,void this.effectiveSelectionManager.clear();this.canGoBack&&(this.activeWorkflow?.hasPreviousStep?await this.activeWorkflow.back(this.showDiscardEditsPrompt):await this._cancelWorkflow({force:!this.hasPendingEdits}))},this.saveWorkflow=async()=>await(this.activeWorkflow?.save(this.showConfirmationPrompt)),this.selectFeature=(e,t=!1)=>{const i=this.activeWorkflow;if(this._candidateCommitted||"update"!==i?.type)return;const{rootFeatures:o}=i.data;o.removeAll(),e&&o.add(e),t&&(i.next(),this._candidateCommitted=!0)}}initialize(){this.addHandles([f(()=>{const e=this.view,t=e?.map?.editableLayers.toArray(),i=e?.allLayerViews,o=i?.filter(e=>!!t?.includes(e.layer));return[t,o,this.layerInfos]},()=>this._updateEditorItems(),m),f(()=>this.hideTemplatesForInactiveLayers,()=>this.syncFeatureTemplates()),f(()=>this._selectionSources,()=>this._syncSelectionSources(),y),g(()=>this.activeWorkflow,"cancel",()=>this.emit("workflow-cancel")),g(()=>this.activeWorkflow,"commit",()=>this.emit("workflow-commit")),g(()=>this.activeWorkflow,"complete",()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)}),k(()=>!this.activeWorkflow&&this._queuedSelectionTool,()=>this._queuedSelectionTool&&this.selectionToolbarViewModel.activateTool(this._queuedSelectionTool)),f(()=>this.activeWorkflow,e=>this._defaultSelectionManager.highlightEnabled=!e),k(()=>this.view?.map,e=>e.add(this._sketchGraphicsLayer),y),g(()=>this.editorItems,"change",()=>this._afterEditorItemsChange()),f(()=>[this.canCreate,this.canUpdateVisible],()=>this._afterEditorItemsChange()),f(()=>this.page,(e,t)=>{const i=[...this.pageStack];if(-1===i.indexOf(e))i.push(e);else for(;i.length&&i.at(-1)!==e;)i.pop();this.pageStack=i},m),k(()=>"awaiting-update-feature-candidate"===this.state,()=>this._candidateCommitted=!1),g(()=>this.featureTemplatesViewModel,"select",async({item:e,oldItem:t})=>{const{activeWorkflow:i}=this;if(i){if("update"===i.type&&"awaiting-feature-creation-info"===i.activeWorkflow?.stepId)return;try{await this.cancelWorkflow({force:!this.hasPendingEdits})}catch{return void this.featureTemplatesViewModel.select(t,{emit:!1})}}if(!e)return;const o={layer:e.layer,template:e.template};if(e.supportsUpload)return this.featureTemplatesViewModel.select(t,{emit:!1}),this.startCreateFeaturesWorkflow(o);await this.startCreateFeaturesWorkflowAtFeatureCreation(o)}),f(()=>[this.view,this.featureTemplatesViewModel],([e,t])=>{t.view=e},m),g(()=>this.view,"key-down",e=>{"Escape"===e.key&&this.activeWorkflow?.keyboardCancellationEnabled&&(e.stopPropagation(),this.back())}),g(()=>this.sketchViewModel,["create","delete","update"],e=>{const{activeWorkflow:t}=this,i=N(t),o=`sketch-${e.type}`;this.emit(o,{type:o,detail:e,layer:i[0],layers:i})},v),f(()=>this.view,e=>{if(this._snappingManager=d(this._snappingManager),!e)return;const t=this.snappingOptions;this._snappingManager=new H({view:e,options:t}),this.ownSketchViewModel.snappingManager=this._snappingManager},m),f(()=>this.snappingOptions,e=>{this._snappingManager&&(this._snappingManager.options=e)},m),g(()=>this.selectionToolbarViewModel,"complete",e=>this._onSelectionComplete(e)),f(()=>({view:this.view,selectionManager:this.effectiveSelectionManager,selectionListViewModel:this.selectionListViewModel,selectionToolbarViewModel:this.selectionToolbarViewModel}),({view:e,selectionManager:t,selectionListViewModel:i,selectionToolbarViewModel:o})=>{t.view=e,i.view=e,o.view=e},m),f(()=>this.effectiveSelectionManager,e=>{this.selectionListViewModel.selectionManager=e,this.selectionToolbarViewModel.selectionManager=e},m)])}destroy(){this._cancelWorkflow({warnIfNoWorkflow:!1}).then(()=>{this.view?.map?.remove(this._sketchGraphicsLayer),this.view=null}),this._updateItemsTask=p(this._updateItemsTask),this._updatingHandles.destroy(),this._sketchEventListenerHandle=h(this._sketchEventListenerHandle),this.selectionListViewModel?.destroy(),this.selectionToolbarViewModel?.destroy(),this._defaultSelectionManager.destroy()}get _featureTemplatesLayersAndTables(){const e=new o;for(const t of this.editorItems){const i=this.hideTemplatesForInactiveLayers&&!t.visible;t.supportsCreateFeaturesWorkflow&&!i&&e.push(t.layer)}return e}get _selectionSources(){const e=new o;if(this.syncViewSelection||this.selectionManager)return e;for(const t of this.editorItems)x(t.layer)&&t.supportsUpdateWorkflow&&e.push(t.layer);return e}get activeFeatureCount(){const e=this.activeLeafWorkflow;return Q(e)?e.pendingFeatures.length:z(e)&&e.data.edits.feature?1:Z(e)?e.data.fullFeatures.length:$(e)?e.data.features.length:J(e)?2:0}get activeLeafWorkflow(){const e=this.activeWorkflow;return e&&K(e)?e.activeWorkflow??e:e}get canCreate(){return this.editorItems.some(e=>e.supportsCreateFeaturesWorkflow)}get canCreateVisible(){return!!this.featureTemplatesLayers.length}get canUpdate(){return this.editorItems.some(e=>e.supportsUpdateWorkflow)}get canUpdateVisible(){return this.editorItems.some(e=>e.supportsUpdateWorkflow&&e.visible)}get featureTemplatesLayers(){return this._featureTemplatesLayersAndTables.filter(e=>"scene"===e.type||!e.isTable)}get effectiveSelectionManager(){const e=this.view;return e&&this.syncViewSelection?e.selectionManager:this.selectionManager??this._defaultSelectionManager}get featureFormViewModel(){return null}get formViewModel(){return this.activeWorkflow?.formViewModel}get utilityNetworkAssociationAddAssociationViewModel(){const{activeWorkflow:e}=this;return"update"===e?.type?e.activeUtilityNetworkAssociationAddAssociationViewModel:null}get labelOptions(){return this.sketchOptions.labels}set labelOptions(e){this.sketchOptions.labels=e}get useLegacyCreateTools(){return this.ownSketchViewModel.useLegacyCreateTools}set useLegacyCreateTools(e){this.ownSketchViewModel.useLegacyCreateTools=e}get isUsingLegacyCreateTools(){return this.useLegacyCreateTools||"2d"!==this.view?.type}get sketchViewModel(){const{activeWorkflow:e}=this;return"update"===e?.type?e.activeSketchViewModel:"create-features"===e?.type?e.sketchViewModel:this.ownSketchViewModel}get state(){if(!this.view?.ready)return"disabled";const e=this.attachmentsViewModel.mode;if("add"===e)return"adding-attachment";if("edit"===e)return"editing-attachment";const{activeWorkflow:t}=this,i=!t?.stepId;return this.effectiveSelectionManager.count&&i?"viewing-selection-list":i?"ready":"update"===t.type&&t.activeWorkflow?.stepId?t.activeWorkflow.stepId:t.stepId}get syncing(){return this._activityQueue.length>0}get updating(){return this._updatingHandles.updating||!0===this.activeWorkflow?.updating}get tooltipOptions(){return this.sketchOptions.tooltips}set tooltipOptions(e){this.sketchOptions.tooltips=e}get valueOptions(){return this.sketchOptions.values}set valueOptions(e){this.sketchOptions.values=e}set view(e){this.ownSketchViewModel.view=e,this.spinnerViewModel.view=e,this._set("view",e)}get canZoomTo(){return this._getWorkingFeatures().some(e=>e.geometry)}get page(){const{activeWorkflow:e,state:t}=this;if("update"===e?.type&&e.formViewModel?.activeAssociationsInput)return e.formViewModel.activeAssociationsInput.associatedLayer?"viewing-associated-features":"viewing-associated-layers";if("update"===e?.type&&"awaiting-feature-to-update"===e.stepId)return"ready";if("create-features"===e?.type&&0===e.numPendingFeatures){const t=e.data.upload;if(t)return"default"===t.state?"ready":"creating-features-upload-details"}return t??"disabled"}get formDisabled(){const{activeLeafWorkflow:e}=this;if(z(e))return!1===e.data.editorItem?.capabilities.update.attributes||!0===e.formViewModel.disabled||!0===e.formViewModel.readOnly;if(Z(e)){const{formViewModel:t}=e;return t.disabled||t.readOnly}return!1}get formHasAssociation(){return!!this.formViewModel?.activeAssociation}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeLeafWorkflow:e}=this;if(z(e)){const{data:t}=e;return t.editorItem?.capabilities.delete.enabled&&!t.readOnly}return!!Z(e)&&e.data.editorItems.every(e=>e.capabilities.delete.enabled)}get hasPendingEdits(){return this.activeWorkflow?.hasPendingEdits??!1}get snappingManager(){return this._snappingManager}activateSelectionTool(e){return this.selectionToolbarViewModel.activateTool(e)}cancelSelectionTool(){this.selectionToolbarViewModel.cancel()}getTemplatesForLayer(e){return this._templatesByLayer.get(e)??[]}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateFeaturesWorkflowAtFeatureCreation(e){return this.startCreateFeaturesWorkflow(e,"creating-features")}async startCreateFeaturesWorkflow(e,t="awaiting-feature-creation-info"){if(await _(()=>!this.updating),!this.canCreate)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled.");const i=this._createUpdatingResolver();try{await this._cancelWorkflow();const i=this._createCreateFeaturesWorkflow(e,t);this._set("activeWorkflow",i),await i.start()}catch(o){this._logErrorAndCancelWorkflow(o)}finally{i.resolve()}}async startCreateFeaturesWorkflowAtFeatureEdit(e){await _(()=>!this.updating);const t=this._createUpdatingResolver();try{const{initialFeature:t}=e,i=t.sourceLayer=t.layer,o=i?X(this.editorItems,i):void 0;if(!o?.supportsCreateFeaturesWorkflow)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled for this layer.");await this._cancelWorkflow();const r=this._createCreateFeaturesWorkflow({initialFeature:t,layer:o.layer,maxFeatures:1},"creating-features");this._set("activeWorkflow",r),await r.start()}catch(i){this._logErrorAndCancelWorkflow(i)}finally{t.resolve()}}async startMergeFeaturesWorkflow(e,t={}){await _(()=>!this.updating),re(this,"merge-features");const i=Array.isArray(e)?Y(e):[e];if(i.length>1)throw new se;if(0===i.length||i[0].objectIds.length<2)throw new ae(2);const r=i[0],s=r.layer;if(!s)throw new ne;const a=X(this.editorItems,s);le(a);const l=this._createUpdatingResolver(),c=new AbortController;this.addHandles(n(c));try{await this._cancelWorkflow(),this.cancelSelectionTool();const e=await U(r.objectIds,s,this.view?.spatialReference,c.signal);if(e.length!==r.objectIds.length)throw new ce;let i;if(t.keyFeature){const o=t.keyFeature.getObjectId();i=e.find(e=>e.getObjectId()===o)??t.keyFeature}const a=this._createUpdateWorkflow("editing-existing-feature",{rootFeatures:new o(e),rootWorkflowOptions:{type:"merge",props:{...t,keyFeature:i}}});this._set("activeWorkflow",a),this.addHandles(this._destroyWorkflowOnCommit(a)),await a.start()}catch(d){this._logErrorAndCancelWorkflow(d)}finally{l.resolve()}}async startSplitFeatureWorkflow(e,t={}){await _(()=>!this.updating),re(this,"split-feature");const i=S(e);if(!i)throw new ne;const r=X(this.editorItems,i);de(r);const s=this._createUpdatingResolver(),a=new AbortController;this.addHandles(n(a));try{await this._cancelWorkflow(),this.cancelSelectionTool();const r=await ee([e],i,this.view?.spatialReference,a.signal);if(1!==r.length)throw new ce;const s=this._createUpdateWorkflow("editing-existing-feature",{rootFeatures:new o(r),rootWorkflowOptions:{type:"split",props:t}});this._set("activeWorkflow",s),this.addHandles(this._destroyWorkflowOnCommit(s)),await s.start()}catch(l){this._logErrorAndCancelWorkflow(l)}finally{s.resolve()}}async startUpdateFeaturesWorkflow(e){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update features workflow is unsupported or disabled.");const t=Array.isArray(e)?Y(e):[e];if(t.length>1)throw new se;const i=this._createUpdatingResolver();try{await this._cancelWorkflow(),this.cancelSelectionTool();const e=this._createUpdateWorkflow("editing-existing-feature",{rootFeatureInfos:t,rootWorkflowOptions:{type:"update-multiple"}});e.addHandles(this._destroyWorkflowOnCommit(e)),this._set("activeWorkflow",e),await e.start()}catch(o){this._logErrorAndCancelWorkflow(o)}finally{i.resolve()}}async startUpdateWorkflowAtFeatureSelection(){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const e=this._createUpdatingResolver();try{await this._cancelWorkflow();const e=this._createUpdateWorkflow();this._set("activeWorkflow",e),await e.start()}catch(t){this._logErrorAndCancelWorkflow(t)}finally{e.resolve()}}async startUpdateWorkflowAtMultipleFeatureSelection(e){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const t=this._createUpdatingResolver();try{await this._cancelWorkflow();const t=this._createUpdateWorkflow("awaiting-update-feature-candidate");t.data.candidates=e,this._set("activeWorkflow",t),await t.start()}catch(i){this._logErrorAndCancelWorkflow(i)}finally{t.resolve()}}async startUpdateWorkflowAtFeatureEdit(e){if(await _(()=>!this.updating),!this.canUpdate)return void this._logError("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const t=this._createUpdatingResolver();try{await this._cancelWorkflow(),this.cancelSelectionTool();const t=this._createUpdateWorkflow("editing-existing-feature",{rootFeatures:new o([e])});t.addHandles(this._destroyWorkflowOnCommit(t)),this._set("activeWorkflow",t),await t.start()}catch(i){this._logErrorAndCancelWorkflow(i)}finally{t.resolve()}}async startUpdateWorkflowWithActiveSelection(){const{selectionListViewModel:e}=this;if(!e.visibleFeatureCount||!e.visibleLayerCount)throw new s("editing:missing-selection","Unable to determine visible selection.");if(e.visibleLayerCount>1)throw new s("editing:features-different-layers","Cannot start workflow with features from different layers.");const t=e.layerItems.find(e=>e.visible);t&&await this._startUpdateWorkflowWithLayerItem(t,"update")}async deleteFeatureFromWorkflow(){r(c.getLogger(this),"EditorViewModel.deleteFeatureFromWorkflow is deprecated. Use EditorViewModel.deleteFeatures instead.",{version:"4.33",replacement:"EditorViewModel.deleteFeatures",warnOnce:!0}),await this.deleteFeatures()}async deleteFeatures(){const e=this.activeWorkflow;if(K(e))return e.deleteActiveFeatures();this._logError("editing:unsupported-workflow","Deleting features requires an active update workflow.")}async deleteAssociationFromWorkflow(){const{activeWorkflow:e}=this;e&&"update"===e.type?await e.deleteActiveAssociation():this._logError("editing:unsupported-workflow","Deleting an association requires an active update workflow.")}async cancelWorkflow(e){return this._cancelWorkflow({warnIfNoWorkflow:!0,...e})}itemHasInvalidFormTemplate(e){return null!=e&&!0===te(this.editorItems,e.layer)?.hasInvalidFormTemplate}syncFeatureTemplates(){this._featureTemplatesViewModelIsRestricted||this._updateTemplates()}zoomTo(e){const{view:i,sketchViewModel:o}=this;if(!i)return;const r=void 0,s=e??o?.createGraphic;if(s)"mesh"===s.geometry?.type?fe(i,s.geometry,r):fe(i,s,r);else{const e=this._getWorkingFeatures();"3d"===i.type&&e?.some(e=>"mesh"===e.geometry?.type)?fe(i,e.map(e=>e.geometry).filter(t),r):e&&fe(i,e,r)}}async toggleUpdateWorkflow(){this.canUpdate&&(this.hasPendingEdits&&!await this.showDiscardEditsPrompt()||(this.activeWorkflow&&"awaiting-feature-to-update"===this.state?await this.cancelWorkflow({force:!0}):await this.startUpdateWorkflowAtFeatureSelection()))}async onSelectionListItemSelect(e){me(e)&&await this.startUpdateWorkflowAtFeatureEdit(e.graphic)}async onSelectionListMenuItemSelect(e,t){me(e)?await this.startUpdateWorkflowAtFeatureEdit(e.graphic):ye(e)&&await this._startUpdateWorkflowWithLayerItem(e,t)}restrictFeatureTemplatesViewModelToLayer(e){return this._featureTemplatesViewModelIsRestricted=!0,this._setFeatureTemplatesViewModelLayers([e]),l(()=>{this._featureTemplatesViewModelIsRestricted=!1,this._setFeatureTemplatesViewModelLayers(this.featureTemplatesLayers)})}async _getEditorItemCandidates(e){const{view:t}=this;if(!t?.map)return[];const{map:i}=t,o=i.editableLayers.toArray(),r=i.allTables.toArray().filter(e=>I(e)||L(e));return await Promise.allSettled([...o.flatMap(e=>this._getLayerLoadPromise(e)),...r.flatMap(e=>this._getLayerLoadPromise(e))]),u(e),[...o.reverse(),...r.reverse()].filter(e=>F(e)&&("mesh"!==e.geometryType||"3d"===t.type)).flatMap(e=>"subtype-group"===e.type?e.sublayers.toArray():e)}_getLayerLoadPromise(e){return L(e)?e.loadAll():e.load()}_drainEditorItems(){this.editorItems.drain(e=>e.destroy())}_updateEditorItems(){p(this._updateItemsTask);const{view:e}=this,t=i(async t=>{if(!e?.map||!e?.allLayerViews)return;const i=await this._getEditorItemCandidates(t);if(!i.length)return this._drainEditorItems(),void this.editorItemsLayerMap.clear();const o=[],r=[],s=[],{editorItemsLayerMap:a,layerInfos:n}=this;for(const c of i){const t=ve(n,c),i=await ie(e,c).catch(()=>null),l=t?o:i?r:s,d=new oe({layer:c,layerInfo:t,layerView:i});l.push(d),a.set(c,d)}n?.length&&o.sort((e,t)=>n.findIndex(({layer:t})=>t===e.layer)-n.findIndex(({layer:e})=>e===t.layer));const l=[...o,...r,...s];t.aborted||(this._drainEditorItems(),this.editorItems.addMany(l))});this._updatingHandles.consumePromise(t.promise),this._updateItemsTask=t}_updateTemplates(){p(this._updateTemplatesTask);const e=i(async e=>{const t=this._templatesByLayer,i=this._featureTemplatesLayersAndTables.filter(e=>!t.has(e));if(i.length>0){const o=await b({layers:i.toArray(),view:this.view,signal:e,queryOptions:{returnVisibleTemplatesOnly:!0}});for(const{layer:e,templates:i}of o)t.set(e,i)}this._setFeatureTemplatesViewModelLayers(this.featureTemplatesLayers)});this._updatingHandles.consumePromise(e.promise),this._updateTemplatesTask=e}_setFeatureTemplatesViewModelLayers(e){const t=this._templatesByLayer,i=[];for(const o of e){const e=t.get(o);e&&e.length>0&&i.push(pe(o,e))}this.featureTemplatesViewModel.templateInfos=i}_afterEditorItemsChange(){const{activeWorkflow:e}=this;if(this.syncFeatureTemplates(),!e)return;const{stepId:t}=e;"create-features"!==e.type?"update"===e.type&&("awaiting-feature-to-update"===t&&!this.canUpdateVisible||"awaiting-update-feature-candidate"===t&&!e.hasUpdatableCandidates)&&this._cancelWorkflow():"awaiting-feature-creation-info"!==t||this.canCreate||this._cancelWorkflow()}async _cancelWorkflow(e){const t=this.activeWorkflow;if(!t)return void(e?.warnIfNoWorkflow&&this._logError("editing:no-active-workflow","There is no active workflow to cancel."));if(!e||!1!==e.force){this.emit("workflow-cancel"),this._set("activeWorkflow",null);try{await t.cancel(e)}finally{t.destroy()}}else try{await t.cancel(e),this._set("activeWorkflow",null),t.destroy()}catch(i){}}_createCreateFeaturesWorkflow(e,t){return D.create({viewModel:this,creationInfo:e,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:t,applyEdits:(e,t,i)=>this._applyEdits(e,t,i),applyEditsFeatureService:(e,t,i)=>this._applyEditsFeatureService(e,t,i),addAttachmentsCallback:(e,t)=>this._addAttachments(e,t)})}_createUpdateWorkflow(e,t){const i=B.create({viewModel:this,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:e,...t,applyEdits:(e,t,i)=>this._applyEdits(e,t,i),applyEditsFeatureService:(e,t,i)=>this._applyEditsFeatureService(e,t,i),addAttachmentsCallback:(e,t)=>this._addAttachments(e,t)});return i}_addAttachments(e,t){const i=t.map(t=>this._addAttachment(e,t.feature,t.attachment))??[];return Promise.all(i)}async _addAttachment(e,t,i){let o=null;if(!("addAttachment"in e)||null==e.capabilities?.attachment)throw new s("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation(async()=>(o=await(e.addAttachment?.(t,i).catch(e=>{throw e?.error||e}))??null,o)),o}async _applyEdits(e,t,i){let o=null;const r=e.url?await E(e.url):null,s={returnServiceEditsOption:(!r||!C(r))&&!/\/hosted\//i.test(e.url)?"original-and-current-features":void 0,editsRespectTrueCurves:!0,...i};return await this._queueOperation(async()=>{const{view:i}=this;if(!i)return null;const r=await ie(i,e).catch(()=>null);return o=await e.applyEdits(t,s),r&&await _(()=>!r.updating),o}),o}async _applyEditsFeatureService(e,t,i){let o=null;return await this._queueOperation(async()=>o=await e.applyEdits(t,i)),o}_destroyWorkflowOnCommit(e){return g(()=>e,"commit",()=>{e.destroy(),this.activeWorkflow===e&&this._set("activeWorkflow",null)})}_queueOperation(e){this._activityQueue.push(e);const t=(e,t)=>{const i=t.indexOf(e);i>-1&&t.splice(i,1)};return e().then(e=>(Array.isArray(e)?e.forEach(e=>this._handleEditsResultError(e)):this._handleEditsResultError(e),e)).catch(i=>{this._logError("editing:operation-error","An error occurred.",{error:i});const o={error:i,retry:()=>(t(o,this.failures),this._queueOperation(e)),cancel:()=>{t(o,this.failures)}};this._set("failures",[...this.failures,o])}).then(()=>{t(e,this._activityQueue)})}_handleEditsResultError(e){if(null!=e&&"error"in e&&null!=e.error)throw e.error;if(null!=e&&"addFeatureResults"in e){const{addFeatureResults:t,deleteFeatureResults:i,updateFeatureResults:o}=e,r=t.find(e=>!!e.error)||o.find(e=>!!e.error)||i.find(e=>!!e.error);if(r)throw r.error}}_createUpdatingResolver(){const e=Promise.withResolvers();return this._updatingHandles.consumePromise(e.promise),e}_logErrorAndCancelWorkflow(e){const{name:t,message:i,details:o}=e;this._logError(t??"editing:workflow-start-failed",i??void 0,o??e),this._cancelWorkflow({force:!0})}_itemIsSuspended(e){const t=X(this.editorItems,e);return null!=t&&(!t.visible||t.disabled)}_logError(e,t,i){c.getLogger(this).error(new s(e,t,i))}_syncSelectionSources(){this._defaultSelectionManager.sources.items=this._selectionSources.toArray()}async _onSelectionComplete(e){if(e.aborted)return;const{operationType:t,selection:i}=e,{effectiveSelectionManager:o}=this;this._queuedSelectionTool=void 0;const r=[],s=[];i.forEach(e=>{const t=S(e),i=this.editorItemsLayerMap.get(t);i?.editable&&s.push(e),!1!==i?.visible&&r.push(e)});const a=1===r.length&&s.includes(r[0]);if("ready"===this.state&&a&&"replace"===t)return this._queuedSelectionTool=e.toolName,this.startUpdateWorkflowAtFeatureEdit(r[0]);switch(t){case"remove":o.updateSelection({current:[],added:[],removed:r});break;case"replace":o.clear(),o.updateSelection({current:r,added:[],removed:[]});break;case"add":o.updateSelection({current:r,added:[],removed:[]})}}async _startUpdateWorkflowWithLayerItem(e,t){if(!e.objectIds?.length)return;const i=e.featureItems.filter(e=>e.visible).map(e=>e.graphic),o=this.selectionListViewModel.filterText;if(1===i.length)return await this.startUpdateWorkflowAtFeatureEdit(i[0]);let r;if(null!=o&&""!==o){const e=Y(i);if(e.length>1)throw new se;if(r=e[0],!r)throw new ae("merge"===t?2:1)}else r={layer:e.layer,objectIds:e.objectIds};"update"===t?await this.startUpdateFeaturesWorkflow(r):"merge"===t&&await this.startMergeFeaturesWorkflow(r)}_getWorkingFeatures(){const{sketchViewModel:e}=this;if(e?.createGraphic)return[e.createGraphic];if(e?.updateGraphics?.length)return e.updateGraphics.toArray();const{formViewModel:t}=this;return t?t.activeFeature?[t.activeFeature]:t.features.toArray():[]}};e([W()],_e.prototype,"_defaultSelectionManager",void 0),e([W()],_e.prototype,"_featureTemplatesLayersAndTables",null),e([W()],_e.prototype,"_queuedSelectionTool",void 0),e([W()],_e.prototype,"_snappingManager",void 0),e([W()],_e.prototype,"_selectionSources",null),e([W()],_e.prototype,"activeFeatureCount",null),e([W({readOnly:!0})],_e.prototype,"activeWorkflow",void 0),e([W()],_e.prototype,"activeLeafWorkflow",null),e([W({readOnly:!0})],_e.prototype,"_activityQueue",void 0),e([W({readOnly:!0})],_e.prototype,"canCreate",null),e([W()],_e.prototype,"canCreateVisible",null),e([W({readOnly:!0})],_e.prototype,"canUpdate",null),e([W()],_e.prototype,"canUpdateVisible",null),e([W()],_e.prototype,"featureTemplatesLayers",null),e([W()],_e.prototype,"editorItems",void 0),e([W()],_e.prototype,"editorItemsLayerMap",void 0),e([W()],_e.prototype,"effectiveSelectionManager",null),e([W({readOnly:!0})],_e.prototype,"failures",void 0),e([W()],_e.prototype,"hideTemplatesForInactiveLayers",void 0),e([W({type:G})],_e.prototype,"attachmentsViewModel",void 0),e([W()],_e.prototype,"featureFormViewModel",null),e([W()],_e.prototype,"formViewModel",null),e([W()],_e.prototype,"utilityNetworkAssociationAddAssociationViewModel",null),e([W({type:he})],_e.prototype,"featureTemplatesViewModel",void 0),e([W({type:O})],_e.prototype,"labelOptions",null),e([W()],_e.prototype,"layerInfos",void 0),e([W()],_e.prototype,"useLegacyCreateTools",null),e([W()],_e.prototype,"isUsingLegacyCreateTools",null),e([W()],_e.prototype,"ownSketchViewModel",void 0),e([W()],_e.prototype,"selectionListViewModel",void 0),e([W()],_e.prototype,"selectionManager",void 0),e([W()],_e.prototype,"selectionToolbarViewModel",void 0),e([W()],_e.prototype,"sketchOptions",void 0),e([W()],_e.prototype,"sketchViewModel",null),e([W({type:q,nonNullable:!0})],_e.prototype,"snappingOptions",void 0),e([W()],_e.prototype,"spinnerViewModel",void 0),e([W()],_e.prototype,"state",null),e([W({readOnly:!0})],_e.prototype,"syncing",null),e([W()],_e.prototype,"syncViewSelection",void 0),e([W()],_e.prototype,"updating",null),e([W({type:P})],_e.prototype,"tooltipOptions",null),e([W({type:R})],_e.prototype,"valueOptions",null),e([W()],_e.prototype,"view",null),e([W()],_e.prototype,"canZoomTo",null),e([W()],_e.prototype,"pageStack",void 0),e([W()],_e.prototype,"showDiscardEditsPrompt",void 0),e([W()],_e.prototype,"showConfirmationPrompt",void 0),e([W()],_e.prototype,"_candidateCommitted",void 0),e([W()],_e.prototype,"page",null),e([W()],_e.prototype,"formDisabled",null),e([W()],_e.prototype,"formHasAssociation",null),e([W()],_e.prototype,"canGoBack",null),e([W()],_e.prototype,"shouldShowDeleteButton",null),e([W()],_e.prototype,"hasPendingEdits",null),e([W()],_e.prototype,"snappingManager",null),_e=e([M("esri.widgets.Editor.EditorViewModel")],_e);const We=_e;export{We as default};
@@ -1,6 +1,6 @@
1
+ import type BatchAttributeFormViewModel from "../BatchAttributeForm/BatchAttributeFormViewModel.js";
1
2
  import type MergeFeaturesWorkflowData from "./MergeFeaturesWorkflowData.js";
2
3
  import type Workflow from "./Workflow.js";
3
- import type FeatureFormViewModel from "../FeatureForm/FeatureFormViewModel.js";
4
4
  import type { EditorLayerUnion, MergeFeaturesWorkflowStep } from "./types.js";
5
5
  import type { WorkflowProperties } from "./Workflow.js";
6
6
 
@@ -25,10 +25,10 @@ export default class MergeFeaturesWorkflow extends Workflow<MergeFeaturesWorkflo
25
25
  constructor(properties?: MergeFeaturesWorkflowProperties);
26
26
  /**
27
27
  * The instance of
28
- * [FeatureFormViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/FeatureFormViewModel/) used by the
28
+ * [BatchAttributeFormViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/BatchAttributeFormViewModel/) used by the
29
29
  * workflow to manage the attributes of the resulting features.
30
30
  */
31
- get formViewModel(): FeatureFormViewModel;
31
+ get formViewModel(): BatchAttributeFormViewModel;
32
32
  /** The layer to which the features being merged belong. */
33
33
  get layer(): EditorLayerUnion;
34
34
  /** The type of the workflow. */
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Error.js";import{makeHandle as i,handlesGroup as r,destroyHandle as a}from"../../core/handleUtils.js";import{destroyMaybe as o}from"../../core/maybe.js";import{on as s,whenOnce as n,watch as l,initial as d}from"../../core/reactiveUtils.js";import{property as h,subclass as m}from"../../core/accessorSupport/decorators.js";import u from"../../layers/GraphicsLayer.js";import{updateGraphicSymbolWhenRequired as p}from"../../views/draw/support/editingSessionUtils.js";import c from"../../views/draw/support/HighlightHelper.js";import{temporaryHighlightName as w}from"../../views/support/HighlightDefaults.js";import f from"./Edits.js";import y from"./MergeFeaturesWorkflowData.js";import g from"./Workflow.js";import{makeMinimalAttributes as F}from"./workflowUtils.js";import{assertViewNot3D as v,assertMergeWorkflowCapabilities as _,assertMinimumFeatureCount as M,assertFeaturesAreFromSameLayer as k,InvalidKeyFeatureError as V}from"./support/errors.js";import{mergeFeatures as j}from"./support/mergeFeaturesUtils.js";import b from"../FeatureForm/FeatureFormViewModel.js";var H;const I=Symbol();let A=H=class extends g{constructor(e){super(e),this.type="merge-features",this._formViewModel=null,this._graphicsLayer=null,this._highlightHelper=null,this._webStyleCache=new Map}initialize(){const e=this.data.viewModel.view;this._highlightHelper=e?new c({view:e}):null,this._initializeFeatureFormViewModel(),this._initializeGraphicsLayer(),this._createAndInitializeEdits(this.data.keyFeature)}destroy(){const e=this._graphicsLayer,{view:t}=this.data.viewModel;t?.destroyed||t?.map.remove(e),this._graphicsLayer=o(this._graphicsLayer),this._formViewModel?.destroy(),this._highlightHelper?.destroy()}get formViewModel(){return this._formViewModel}get hasPendingEdits(){return!1}get layer(){return this.data.editorItem.layer}get parent(){return this.data.parent}get shouldShowAttachments(){return this.data.editorItem.capabilities.attachments.enabled}static async create(e){const{applyEdits:t,applyEditsFeatureService:i,...r}=e,{editorItem:a,features:o}=r;if(v(r.viewModel,"merge-features"),_(a),M(o,2),k(o),r.keyFeature&&!o.includes(r.keyFeature))throw new V;const s=await j(o),n=new H({data:new y({...r,mergedGeometry:s}),onCommit:L(t)});return n._set("steps",S()),n}async enter(){this._configureAttachmentsViewModel()}exit(){}isKeyFeature(e){return this.data.keyFeature===e}isTemporaryHighlightFeature(e){return this.data.temporaryHighlightFeature===e}async setKeyFeature(e){const{data:t}=this;if(e!==t.keyFeature){if(!t.features.includes(e))throw new V;t.keyFeature=e,await this._createAndInitializeEdits(e)}}async start(){return await super.start(),this._makeSketchController()}getFeatureTitle(e){return this.data.getFeatureTitle(e)}async _createAndInitializeEdits(e){const{data:t}=this,i=e.clone();i.geometry=t.mergedGeometry;const r=new f({feature:i});t.edits=r;const a=t.getInitialFeature(e)||e;r.trackChanges(a),await this._setFeatureOnFormViewModel(i,a),this._setFeatureOnAttachmentsViewModel(e)}_initializeFeatureFormViewModel(){const{data:e,_webStyleCache:t}=this,i=e.viewModel.view,r=new b({disabled:!0,editType:"UPDATE",formTemplate:e.editorItem.formTemplate,highlightHelper:this._highlightHelper,map:i?.map,spatialReference:i?.spatialReference,timeZone:e.timeZone});this._formViewModel=r,this.addHandles(s(()=>r,"value-change",({feature:r,fieldName:a,value:o})=>{const s=e.edits;r&&s&&(s.setAttribute(a,o),p(r,t,i?.scale))}))}_initializeGraphicsLayer(){const{data:e}=this,{view:t}=e.viewModel,i=new u({elevationInfo:e.editorItem.layer.elevationInfo,internal:!0,listMode:"hide",title:"mergeFeaturesWorkflow-internal"});this._graphicsLayer=i,t?.map.add(i)}_makeSketchController(){return{enter:async()=>{this.addHandles(z(this.data),I)},exit:()=>{this.removeHandles(I)}}}async _setFeatureOnFormViewModel(e,t){const i=this._formViewModel;i.feature=e,i.overrideInitialFeature(t),await n(()=>!i.updating)}_configureAttachmentsViewModel(){const{data:e}=this,{keyFeature:t,viewModel:i}=e,{attachmentsViewModel:r}=i;r.set({capabilities:{editing:!1},graphic:t,filesEnabled:!1,mode:"view"})}_setFeatureOnAttachmentsViewModel(e){this.data.viewModel.attachmentsViewModel.graphic=e}};e([h()],A.prototype,"formViewModel",null),e([h()],A.prototype,"hasPendingEdits",null),e([h()],A.prototype,"layer",null),e([h()],A.prototype,"parent",null),e([h()],A.prototype,"shouldShowAttachments",null),e([h()],A.prototype,"type",void 0),e([h()],A.prototype,"_formViewModel",void 0),e([h()],A.prototype,"_graphicsLayer",void 0),e([h()],A.prototype,"_highlightHelper",void 0),A=H=e([m("esri.widgets.Editor.MergeFeaturesWorkflow")],A);const E=A;function S(){return[{id:"choosing-key-feature",async setUp(){},async tearDown(){}}]}function L(e){return async i=>{const{edits:r,keyFeature:a}=i,o=r?.feature?.cloneShallow(),s=i.editorItem.layer;if(!r||!o)throw new t("editing:missing-feature","Workflow data has no edits to submit.");r.attributesModified||(o.attributes=F(o,i.editorItem.layer));const n=[];for(const e of i.features){if(e===a)continue;const t=e.cloneShallow();t.attributes=F(t,s),t.geometry=null,n.push(t)}await e(s,{updateFeatures:[o],deleteFeatures:n})}}function z(e){const t=e.viewModel.view;if(!t)return i();const o=new c({view:t});for(const i of e.features)o.add(i);const s=new c({view:t,highlightName:w}),n=l(()=>e.keyFeature,e=>{s.removeAll(),s.add(e)},d),h=new c({view:t,highlightName:w}),m=l(()=>e.temporaryHighlightFeature,e=>{h.removeAll(),e&&h.add(e)});return r([a(o),n,a(s),m,a(h)])}export{E as default};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Collection.js";import i from"../../core/Error.js";import{makeHandle as r,handlesGroup as a,destroyHandle as o}from"../../core/handleUtils.js";import{destroyMaybe as s}from"../../core/maybe.js";import{whenOnce as n,watch as l,initial as d}from"../../core/reactiveUtils.js";import{property as h,subclass as u}from"../../core/accessorSupport/decorators.js";import m from"../../layers/GraphicsLayer.js";import{updateGraphicSymbolWhenRequired as c}from"../../views/draw/support/editingSessionUtils.js";import p from"../../views/draw/support/HighlightHelper.js";import{temporaryHighlightName as w}from"../../views/support/HighlightDefaults.js";import f from"../BatchAttributeForm/BatchAttributeFormViewModel.js";import y from"./Edits.js";import g from"./MergeFeaturesWorkflowData.js";import v from"./Workflow.js";import{handleFormValuesChangeEvent as F,makeMinimalAttributes as _}from"./workflowUtils.js";import{assertViewNot3D as M,assertMergeWorkflowCapabilities as k,assertMinimumFeatureCount as V,assertFeaturesAreFromSameLayer as I,InvalidKeyFeatureError as j}from"./support/errors.js";import{mergeFeatures as b}from"./support/mergeFeaturesUtils.js";var A;const H=Symbol();let E=A=class extends v{constructor(e){super(e),this.type="merge-features",this._formViewModel=null,this._graphicsLayer=null,this._highlightHelper=null,this._webStyleCache=new Map}initialize(){const e=this.data.viewModel.view;this._highlightHelper=e?new p({view:e}):null,this._initializeFormViewModel(),this._initializeGraphicsLayer(),this._createAndInitializeEdits(this.data.keyFeature)}destroy(){const e=this._graphicsLayer,{view:t}=this.data.viewModel;t?.destroyed||t?.map.remove(e),this._graphicsLayer=s(this._graphicsLayer),this._formViewModel?.destroy(),this._highlightHelper?.destroy()}get formViewModel(){return this._formViewModel}get hasPendingEdits(){return!1}get layer(){return this.data.editorItem.layer}get parent(){return this.data.parent}get shouldShowAttachments(){return this.data.editorItem.capabilities.attachments.enabled}static async create(e){const{applyEdits:t,applyEditsFeatureService:i,...r}=e,{editorItem:a,features:o}=r;if(M(r.viewModel,"merge-features"),k(a),V(o,2),I(o),r.keyFeature&&!o.includes(r.keyFeature))throw new j;const s=await b(o),n=new A({data:new g({...r,mergedGeometry:s}),onCommit:z(t)});return n._set("steps",L()),n}async enter(){this._configureAttachmentsViewModel()}exit(){}isKeyFeature(e){return this.data.keyFeature===e}isTemporaryHighlightFeature(e){return this.data.temporaryHighlightFeature===e}async setKeyFeature(e){const{data:t}=this;if(e!==t.keyFeature){if(!t.features.includes(e))throw new j;t.keyFeature=e,await this._createAndInitializeEdits(e)}}async start(){return await n(()=>!this.updating),await super.start(),this._makeSketchController()}getFeatureTitle(e){return this.data.getFeatureTitle(e)}async _createAndInitializeEdits(e){const{data:t}=this,i=e.clone();i.geometry=t.mergedGeometry;const r=new y({feature:i});t.edits=r;const a=t.getInitialFeature(e)||e;r.trackChanges(a),await this._setFeatureOnFormViewModel(i,a),this._setFeatureOnAttachmentsViewModel(e)}_initializeFormViewModel(){const{data:e,_webStyleCache:t}=this,i=e.viewModel.view,r=e.editorItem.layerInfo?[e.editorItem.layerInfo]:null,a=new f({editType:"UPDATE",highlightHelper:this._highlightHelper,layerInfos:r,map:i?.map,readOnly:!0,spatialReference:i?.spatialReference,timeZone:e.timeZone});this._formViewModel=a,this.addHandles(a.on("values-change",F({filter:t=>t===e.edits?.feature,forEachFeature:e=>{c(e,t,i?.scale)},forEachValueChange:(t,i)=>e.edits?.setAttribute(t,i)})))}_initializeGraphicsLayer(){const{data:e}=this,{view:t}=e.viewModel,i=new m({elevationInfo:e.editorItem.layer.elevationInfo,internal:!0,listMode:"hide",title:"mergeFeaturesWorkflow-internal"});this._graphicsLayer=i,t?.map.add(i)}_makeSketchController(){return{enter:async()=>{this.addHandles(C(this.data),H)},exit:()=>{this.removeHandles(H)}}}async _setFeatureOnFormViewModel(e,i){const r=this._formViewModel;r.features=new t([e]),r.activeFeatureIndex=0,await r.overrideOriginalFeature(e,i),await n(()=>!r.updating)}_configureAttachmentsViewModel(){const{data:e}=this,{keyFeature:t,viewModel:i}=e,{attachmentsViewModel:r}=i;r.set({capabilities:{editing:!1},graphic:t,filesEnabled:!1,mode:"view"})}_setFeatureOnAttachmentsViewModel(e){this.data.viewModel.attachmentsViewModel.graphic=e}};e([h()],E.prototype,"formViewModel",null),e([h()],E.prototype,"hasPendingEdits",null),e([h()],E.prototype,"layer",null),e([h()],E.prototype,"parent",null),e([h()],E.prototype,"shouldShowAttachments",null),e([h()],E.prototype,"type",void 0),e([h()],E.prototype,"_formViewModel",void 0),e([h()],E.prototype,"_graphicsLayer",void 0),e([h()],E.prototype,"_highlightHelper",void 0),E=A=e([u("esri.widgets.Editor.MergeFeaturesWorkflow")],E);const S=E;function L(){return[{id:"choosing-key-feature",async setUp(){},async tearDown(){}}]}function z(e){return async t=>{const{edits:r,keyFeature:a}=t,o=r?.feature?.cloneShallow(),s=t.editorItem.layer;if(!r||!o)throw new i("editing:missing-feature","Workflow data has no edits to submit.");r.attributesModified||(o.attributes=_(o,t.editorItem.layer));const n=[];for(const e of t.features){if(e===a)continue;const t=e.cloneShallow();t.attributes=_(t,s),t.geometry=null,n.push(t)}await e(s,{updateFeatures:[o],deleteFeatures:n})}}function C(e){const t=e.viewModel.view;if(!t)return r();const i=new p({view:t});for(const r of e.features)i.add(r);const s=new p({view:t,highlightName:w}),n=l(()=>e.keyFeature,e=>{s.removeAll(),s.add(e)},d),h=new p({view:t,highlightName:w}),u=l(()=>e.temporaryHighlightFeature,e=>{h.removeAll(),e&&h.add(e)});return a([o(i),n,o(s),u,o(h)])}export{S as default};
@@ -1,7 +1,7 @@
1
1
  import type Graphic from "../../Graphic.js";
2
+ import type BatchAttributeFormViewModel from "../BatchAttributeForm/BatchAttributeFormViewModel.js";
2
3
  import type SplitFeatureWorkflowData from "./SplitFeatureWorkflowData.js";
3
4
  import type Workflow from "./Workflow.js";
4
- import type FeatureFormViewModel from "../FeatureForm/FeatureFormViewModel.js";
5
5
  import type { EditorLayerUnion, SplitFeatureWorkflowStep, SplitterGeometryType } from "./types.js";
6
6
  import type { WorkflowProperties } from "./Workflow.js";
7
7
 
@@ -41,10 +41,10 @@ export default class SplitFeatureWorkflow extends Workflow<SplitFeatureWorkflowD
41
41
  accessor defaultSplitterGeometryType: SplitterGeometryType | null | undefined;
42
42
  /**
43
43
  * The instance of
44
- * [FeatureFormViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/FeatureFormViewModel/) used by the
44
+ * [BatchAttributeFormViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/BatchAttributeFormViewModel/) used by the
45
45
  * workflow to manage the attributes of the resulting features.
46
46
  */
47
- get formViewModel(): FeatureFormViewModel;
47
+ get formViewModel(): BatchAttributeFormViewModel;
48
48
  /**
49
49
  * The layer to which the feature being split belongs. This is also the layer
50
50
  * to which the
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Error.js";import{makeHandle as i,handlesGroup as r,destroyHandle as a}from"../../core/handleUtils.js";import"../../core/has.js";import{destroyMaybe as o}from"../../core/maybe.js";import{debounce as s}from"../../core/promiseUtils.js";import{watch as n,on as l,whenOnce as p,initial as d}from"../../core/reactiveUtils.js";import{property as u,subclass as c}from"../../core/accessorSupport/decorators.js";import h from"../../layers/GraphicsLayer.js";import{swapForEditingSession as m,updateGraphicSymbolWhenRequired as y}from"../../views/draw/support/editingSessionUtils.js";import{getDrawHelpMessage as w}from"../../views/draw/support/helpMessageUtils.js";import g from"../../views/draw/support/HighlightHelper.js";import f from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{temporaryHighlightName as v}from"../../views/support/HighlightDefaults.js";import _ from"./Edits.js";import F from"./SplitFeatureWorkflowData.js";import M from"./Workflow.js";import{activeSketchToolDrawsUnsupportedCurve as S,containsUnsupportedCurve as b,createWorkflowSteps as k,makeMinimalAttributes as T}from"./workflowUtils.js";import{assertViewNot3D as I,assertSplitWorkflowCapabilities as V}from"./support/errors.js";import{getCompatibleSpitterGeometryType as E,ensureSplittableGeometry as G,makeNewFeatureAttributes as H,splitGeometry as j,canSplitByPoint as C,isSplitterGeometry as x}from"./support/splitFeatureUtils.js";import U from"../FeatureForm/FeatureFormViewModel.js";import L from"../Sketch/SketchViewModel.js";import{getDrawToolGeometryTypeFromCreateTool as W}from"../Sketch/support/sketchUtils.js";var O;const P=Symbol(),z=Symbol();let A=O=class extends M{constructor(e){super(e),this.defaultSplitterGeometryType=null,this.type="split-feature",this._activeFeature=null,this._formViewModel=null,this._graphicsLayer=null,this._highlightHelper=null,this._lastSplitterGeometryWasInvalid=!1,this._sketchViewModel=null,this._webStyleCache=new Map}initialize(){const e=this.data.viewModel.view;this._highlightHelper=e?new g({view:e,highlightName:v}):null,this._initializeFormViewModel();const t=this._initializeGraphicsLayer();this._initializeSketchViewModel(t)}destroy(){const e=this._graphicsLayer,{view:t}=this.data.viewModel;t?.destroyed||t?.map.remove(e),this._graphicsLayer=o(this._graphicsLayer),this._formViewModel.destroy(),this._sketchViewModel.destroy(),this._highlightHelper?.destroy()}get activeFeature(){return this._activeFeature}get allowSave(){const{data:e}=this;return null!=e.existingFeatureEdits&&null!=e.newFeatureEdits&&!this.updating}get availableCreateTools(){const e=["polyline","polygon","rectangle","circle","freehandPolyline","freehandPolygon"];switch(this.data.editorItem.layer.geometryType){case"polygon":case"multipoint":return e;case"polyline":return["point",...e];default:return[]}}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return!!this.data.editorItem?.hasInvalidFormTemplate}get hasPreviousStep(){return null!==this._activeFeature||this._stepIndex>0}get helpMessage(){const{activeCreateToolDrawMode:e,activeTool:t,createGraphic:i,drawTool:r,isUsingLegacyCreateTools:a}=this._sketchViewModel;if(!a)return r?.helpMessageKey??"noTool";const o=W(t);return"mesh"!==o?w(o,i?.geometry,e):void 0}get layer(){return this.data.editorItem.layer}get parent(){return this.data.parent}get sketchUpdateOptions(){return{enableScaling:!this.curveResizeDisabled,multipleSelectionEnabled:!1}}get updating(){return this._updatingHandles.updating||this._formViewModel.updating||this._sketchViewModel.updating}get noticeMessage(){return this._splittingMayIntroduceCurves&&S(this._sketchViewModel,this.data.editorItem)?"curveToolDensifyWarning":this._lastSplitterGeometryWasInvalid?"invalidSplitterGeometry":void 0}get _splittingMayIntroduceCurves(){return"polygon"===this.data.editorItem.layer.geometryType}async back(e){if(this.activeFeature)return await this.setActiveFeature(null);await super.back(e)}static create(e){const{applyEdits:i,applyEditsFeatureService:r,defaultSplitterGeometryType:a,startAt:o,...s}=e;if(I(e.viewModel,"split-feature"),V(s.editorItem),"reviewing-features"===o){if(!s.splitterGeometry)throw new t("editing:split-geometry-required","Must provide the split geometry to start at the 'reviewing-features' step.");const e=E(G(s.feature.geometry),s.splitterGeometry.type);if(s.splitterGeometry.type!==e)throw new t("editing:incompatible-split-geometries",`Geometry of type '${s.splitterGeometry.type}' cannot be used to split geometry of type '${s.feature.geometry?.type}'.`)}const n=new O({data:new F(s),defaultSplitterGeometryType:a,onCommit:R(e.applyEdits)});return n._set("steps",O._createWorkflowSteps(n,o)),n}async enter(){}exit(){if("reviewing-features"!==this.stepId)throw new t("editing:invalid-exit-state","The SplitFeatureWorkflow can only be exited when in the 'reviewing-features' step.")}async setActiveFeature(e){const i=this._activeFeature;if(e===i)return;const r=this.data,a=i?r.getEditsForFeature(i):null;if(a&&(a.submittable=this._formViewModel.submittable),this._activeFeature=e,null==e)return;const o=this.data.getRoleForFeature(e);if(!o)throw new t("editing:unknown-feature","The provided feature is not part of this workflow.");await this._setFeatureOnFormViewModel(e,o)}async commit(e){const{newFeatureEdits:t,existingFeatureEdits:i,editorItem:r}=this.data,a=[i?.feature,t?.feature].filter(e=>!!e);if(e&&b(a,r)){if(!await e("curveEditingDensifyPrompt"))return this.reset()}return super.commit()}async start(){return await super.start(),this._makeSketchController()}async _createAndInitializeEdits({newPart:e,remainingPart:t}){const{data:i}=this,r=i.feature,a=this._formViewModel,o=r.clone();o.geometry=t;const s=new _({feature:o});i.existingFeatureEdits=s,s.trackChanges(i.initialFeature),await this._setFeatureOnFormViewModel(o,"existing"),s.submittable=a.submittable;const n=r.clone();n.geometry=e,n.attributes=H(r.attributes,i.editorItem.layer);const l=new _({feature:n});return i.newFeatureEdits=l,l.trackChanges(),await this._setFeatureOnFormViewModel(n,"new"),l.submittable=a.submittable,{featureToCreate:n,featureToUpdate:o}}static _createWorkflowSteps(e,i="drawing-splitter-geometry"){const{data:r}=e;return k(["drawing-splitter-geometry","reviewing-features"],i,{"drawing-splitter-geometry":()=>({id:"drawing-splitter-geometry",async setUp(){const i=G(r.feature.geometry),a=E(i,e.defaultSplitterGeometryType),{snappingManager:o}=r;C(i)&&o&&e.addHandles(N(o,e.layer));const s=e._sketchViewModel;e.addHandles([l(()=>s,"create",async i=>{if("start"===i.state&&e._lastSplitterGeometryWasInvalid&&(e._lastSplitterGeometryWasInvalid=!1),"complete"===i.state){e._graphicsLayer.removeAll();const o=i.graphic?.geometry;try{if(!x(o))throw new t("editing:invalid-split-geometry","The geometry produced by the Sketch operation cannot be used for splitting.");r.splitterGeometry=o,r.splitResult=await e._updatingHandles.addPromise(e._executeSplit(o)),await e.next()}catch(a){e._lastSplitterGeometryWasInvalid=!0,await s.create(i.tool)}}}),n(()=>s.activeTool,(t,i)=>{"point"===t&&!e.hasHandles(P)&&o?e.addHandles(Z(o,e.layer),P):"point"===i&&e.removeHandles(P)})],this.id),await s.create(a)},async tearDown(){e.removeHandles(this.id)}}),"reviewing-features":()=>({id:"reviewing-features",async setUp(){const i=r.splitterGeometry;if(!i)throw new t("editing:missing-splitter-geometry","The `splitterGeometry` property of the workflow's data must be set in order to start the 'reviewing-features' step.");const a=r.splitResult??await e._executeSplit(i),{featureToCreate:o,featureToUpdate:s}=await e._createAndInitializeEdits(a),n=await e._displayFeatureGraphics(s,o);e.addHandles(n,this.id)},async tearDown(){e.removeHandles(this.id)}})})}async _displayFeatureGraphics(e,t){const{data:a,_graphicsLayer:o}=this,l=a.viewModel.view,p=[];if(!e||!t||!l)return i();const d=s(i=>Promise.all([y(e,this._webStyleCache,i),y(t,this._webStyleCache,i)]));return await d("2d"===l.type?l.scale:null),"2d"===l.type&&p.push(n(()=>l.scale,e=>d(e))),o.add(t),p.push(i(()=>o.remove(t))),p.push(await m(o,l,a.feature,e)),r(p)}async _executeSplit(e){const{data:i}=this,{feature:r}=i,a=r.geometry;if(!a)throw new t("editing:feature-has-no-geometry","Cannot split the provided feature as it has no geometry.");const o=await j(a,e);if(!o||!o.newPart)throw new t("editing:split-failed","The split operation did not produce a valid result.");return o}_initializeFormViewModel(){const{data:e,_webStyleCache:t}=this,i=e.viewModel.view,r=new U({formTemplate:e.editorItem.formTemplate,highlightHelper:this._highlightHelper,map:i?.map,spatialReference:i?.spatialReference,timeZone:e.timeZone});this._formViewModel=r,this.addHandles(l(()=>r,"value-change",({feature:r,fieldName:a,value:o})=>{r&&(e.getEditsForFeature(r)?.setAttribute(a,o),y(r,t,i?.scale))}))}_initializeGraphicsLayer(){const{data:e}=this,{view:t}=e.viewModel,i=new h({elevationInfo:e.editorItem.layer.elevationInfo,internal:!0,listMode:"hide",title:"splitFeatureWorkflow-internal"});return this._graphicsLayer=i,t?.map.add(i),i}_initializeSketchViewModel(e){const{data:t}=this,{view:i}=t.viewModel;this._sketchViewModel=new L({layer:e,creationMode:"single",sketchOptions:t.sketchOptions,snappingManager:t.snappingManager,useLegacyCreateTools:t.viewModel.useLegacyCreateTools,updateOnGraphicClick:!1,defaultUpdateOptions:this.sketchUpdateOptions,view:i})}_makeSketchController(){return{enter:async()=>this.addHandles($(this)),exit:()=>this.removeHandles(z),viewModel:this._sketchViewModel}}async _setFeatureOnFormViewModel(e,t){const{data:i}=this,r=this._formViewModel;r.feature=e,"existing"===t?(r.editType="UPDATE",r.overrideInitialFeature(i.initialFeature)):r.editType="INSERT",await p(()=>!r.updating)}get test(){}};e([u()],A.prototype,"activeFeature",null),e([u()],A.prototype,"allowSave",null),e([u()],A.prototype,"availableCreateTools",null),e([u()],A.prototype,"defaultSplitterGeometryType",void 0),e([u()],A.prototype,"formViewModel",null),e([u()],A.prototype,"hasInvalidFormTemplate",null),e([u()],A.prototype,"hasPreviousStep",null),e([u()],A.prototype,"helpMessage",null),e([u()],A.prototype,"layer",null),e([u()],A.prototype,"parent",null),e([u()],A.prototype,"sketchUpdateOptions",null),e([u()],A.prototype,"type",void 0),e([u()],A.prototype,"updating",null),e([u()],A.prototype,"noticeMessage",null),e([u()],A.prototype,"_activeFeature",void 0),e([u()],A.prototype,"_formViewModel",void 0),e([u()],A.prototype,"_graphicsLayer",void 0),e([u()],A.prototype,"_highlightHelper",void 0),e([u()],A.prototype,"_lastSplitterGeometryWasInvalid",void 0),e([u()],A.prototype,"_sketchViewModel",void 0),e([u()],A.prototype,"_splittingMayIntroduceCurves",null),A=O=e([c("esri.widgets.Editor.SplitFeatureWorkflow")],A);const D=A;function R(e){return async i=>{const{existingFeatureEdits:r,newFeatureEdits:a}=i,o=r?.feature?.cloneShallow(),s=a?.feature?.cloneShallow(),n=i.editorItem.layer;if(null==o||null==s)throw new t("editing:missing-features","Expected both a feature to update and a feature to add for the split operation.");r?.attributesModified||(o.attributes=T(o,i.editorItem.layer)),await e(n,{addFeatures:[s],updateFeatures:[o]})}}function N(e,t){if(e.options.featureSources.some(e=>e.layer===t))return i();const r=new f({enabled:!1,layer:t});return e.options.featureSources.add(r),i(()=>{e.options.featureSources.remove(r),r.destroy()})}function Z(e,t){const{options:r}=e,a=r.enabled;r.enabled=!0;const o=r.featureEnabled;r.featureEnabled=!0;const s=r.distance;r.distance=15;const n=new Map;for(const i of r.featureSources)n.set(i,i.enabled),i.layer===t?i.enabled=!0:i.enabled=!1;return i(()=>{r.enabled=a,r.featureEnabled=o,r.distance=s;for(const[e,t]of n)e.enabled=t})}function $(e){const t=e.data,{feature:o,viewModel:s}=t,{view:l}=s;if(!l)return i();const p=new g({view:l}),u=n(()=>e.stepId,e=>{switch(p.removeAll(),e){case"drawing-splitter-geometry":p.add(o);break;case"reviewing-features":p.add(t.existingFeatureEdits?.feature),p.add(t.newFeatureEdits?.feature)}},d),c=new g({view:l,highlightName:v}),h=n(()=>t.temporaryHighlightFeature,(t,i)=>{i&&i!==e.activeFeature&&c.remove(i),t&&c.add(t)}),m=n(()=>e.activeFeature,(e,i)=>{i&&i!==t.temporaryHighlightFeature&&c.remove(i),e&&c.add(e)});return r([u,h,m,a(p),a(c)])}export{D as default};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Collection.js";import i from"../../core/Error.js";import{makeHandle as r,handlesGroup as a,destroyHandle as o}from"../../core/handleUtils.js";import"../../core/has.js";import{destroyMaybe as s}from"../../core/maybe.js";import{debounce as n}from"../../core/promiseUtils.js";import{watch as l,whenOnce as d,on as p,initial as u}from"../../core/reactiveUtils.js";import{property as c,subclass as h}from"../../core/accessorSupport/decorators.js";import m from"../../layers/GraphicsLayer.js";import{swapForEditingSession as y,updateGraphicSymbolWhenRequired as w}from"../../views/draw/support/editingSessionUtils.js";import{getDrawHelpMessage as g}from"../../views/draw/support/helpMessageUtils.js";import f from"../../views/draw/support/HighlightHelper.js";import v from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{temporaryHighlightName as _}from"../../views/support/HighlightDefaults.js";import F from"../BatchAttributeForm/BatchAttributeFormViewModel.js";import M from"./Edits.js";import S from"./SplitFeatureWorkflowData.js";import b from"./Workflow.js";import{activeSketchToolDrawsUnsupportedCurve as k,containsUnsupportedCurve as I,createWorkflowSteps as T,handleFormValuesChangeEvent as V,makeMinimalAttributes as E}from"./workflowUtils.js";import{assertViewNot3D as G,assertSplitWorkflowCapabilities as C}from"./support/errors.js";import{getCompatibleSpitterGeometryType as H,ensureSplittableGeometry as j,makeNewFeatureAttributes as x,splitGeometry as U,canSplitByPoint as L,isSplitterGeometry as W}from"./support/splitFeatureUtils.js";import O from"../Sketch/SketchViewModel.js";import{getDrawToolGeometryTypeFromCreateTool as A}from"../Sketch/support/sketchUtils.js";var P;const z=Symbol(),D=Symbol();let R=P=class extends b{constructor(e){super(e),this.defaultSplitterGeometryType=null,this.type="split-feature",this._activeFeature=null,this._formViewModel=null,this._graphicsLayer=null,this._highlightHelper=null,this._lastSplitterGeometryWasInvalid=!1,this._sketchViewModel=null,this._webStyleCache=new Map}initialize(){const e=this.data.viewModel.view;this._highlightHelper=e?new f({view:e,highlightName:_}):null,this._initializeFormViewModel();const t=this._initializeGraphicsLayer();this._initializeSketchViewModel(t)}destroy(){const e=this._graphicsLayer,{view:t}=this.data.viewModel;t?.destroyed||t?.map.remove(e),this._graphicsLayer=s(this._graphicsLayer),this._formViewModel.destroy(),this._sketchViewModel.destroy(),this._highlightHelper?.destroy()}get activeFeature(){return this._activeFeature}get allowSave(){const{data:e}=this;return null!=e.existingFeatureEdits&&null!=e.newFeatureEdits&&!this.updating}get availableCreateTools(){const e=["polyline","polygon","rectangle","circle","freehandPolyline","freehandPolygon"];switch(this.data.editorItem.layer.geometryType){case"polygon":case"multipoint":return e;case"polyline":return["point",...e];default:return[]}}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return!!this.data.editorItem?.hasInvalidFormTemplate}get hasPreviousStep(){return null!==this._activeFeature||this._stepIndex>0}get helpMessage(){const{activeCreateToolDrawMode:e,activeTool:t,createGraphic:i,drawTool:r,isUsingLegacyCreateTools:a}=this._sketchViewModel;if(!a)return r?.helpMessageKey??"noTool";const o=A(t);return"mesh"!==o?g(o,i?.geometry,e):void 0}get layer(){return this.data.editorItem.layer}get parent(){return this.data.parent}get sketchUpdateOptions(){return{enableScaling:!this.curveResizeDisabled,multipleSelectionEnabled:!1}}get updating(){return this._updatingHandles.updating||this._formViewModel.updating||this._sketchViewModel.updating}get noticeMessage(){return this._splittingMayIntroduceCurves&&k(this._sketchViewModel,this.data.editorItem)?"curveToolDensifyWarning":this._lastSplitterGeometryWasInvalid?"invalidSplitterGeometry":void 0}get _splittingMayIntroduceCurves(){return"polygon"===this.data.editorItem.layer.geometryType}async back(e){if(this.activeFeature)return await this.setActiveFeature(null);await super.back(e)}static create(e){const{applyEdits:t,applyEditsFeatureService:r,defaultSplitterGeometryType:a,startAt:o,...s}=e;if(G(e.viewModel,"split-feature"),C(s.editorItem),"reviewing-features"===o){if(!s.splitterGeometry)throw new i("editing:split-geometry-required","Must provide the split geometry to start at the 'reviewing-features' step.");const e=H(j(s.feature.geometry),s.splitterGeometry.type);if(s.splitterGeometry.type!==e)throw new i("editing:incompatible-split-geometries",`Geometry of type '${s.splitterGeometry.type}' cannot be used to split geometry of type '${s.feature.geometry?.type}'.`)}const n=new P({data:new S(s),defaultSplitterGeometryType:a,onCommit:B(e.applyEdits)});return n._set("steps",P._createWorkflowSteps(n,o)),n}async enter(){}exit(){if("reviewing-features"!==this.stepId)throw new i("editing:invalid-exit-state","The SplitFeatureWorkflow can only be exited when in the 'reviewing-features' step.")}async setActiveFeature(e){const t=this._activeFeature;if(e===t)return;const r=this.data,a=t?r.getEditsForFeature(t):null;if(a&&(a.submittable=this._formViewModel.valid),this._activeFeature=e,null==e)return;const o=this.data.getRoleForFeature(e);if(!o)throw new i("editing:unknown-feature","The provided feature is not part of this workflow.");await this._setFeatureOnFormViewModel(e,o)}async commit(e){const{newFeatureEdits:t,existingFeatureEdits:i,editorItem:r}=this.data,a=[i?.feature,t?.feature].filter(e=>!!e);if(e&&I(a,r)){if(!await e("curveEditingDensifyPrompt"))return this.reset()}return super.commit()}async start(){return await super.start(),this._makeSketchController()}async _createAndInitializeEdits({newPart:e,remainingPart:t}){const{data:i}=this,r=i.feature,a=this._formViewModel,o=r.clone();o.geometry=t;const s=new M({feature:o});i.existingFeatureEdits=s,s.trackChanges(i.initialFeature),await this._setFeatureOnFormViewModel(o,"existing"),s.submittable=a.valid;const n=r.clone();n.geometry=e,n.attributes=x(r.attributes,i.editorItem.layer);const l=new M({feature:n});return i.newFeatureEdits=l,l.trackChanges(),await this._setFeatureOnFormViewModel(n,"new"),l.submittable=a.valid,{featureToCreate:n,featureToUpdate:o}}static _createWorkflowSteps(e,t="drawing-splitter-geometry"){const{data:r}=e;return T(["drawing-splitter-geometry","reviewing-features"],t,{"drawing-splitter-geometry":()=>({id:"drawing-splitter-geometry",async setUp(){const t=j(r.feature.geometry),a=H(t,e.defaultSplitterGeometryType),{snappingManager:o}=r;L(t)&&o&&e.addHandles(Z(o,e.layer));const s=e._sketchViewModel;e.addHandles([p(()=>s,"create",async t=>{if("start"===t.state&&e._lastSplitterGeometryWasInvalid&&(e._lastSplitterGeometryWasInvalid=!1),"complete"===t.state){e._graphicsLayer.removeAll();const o=t.graphic?.geometry;try{if(!W(o))throw new i("editing:invalid-split-geometry","The geometry produced by the Sketch operation cannot be used for splitting.");r.splitterGeometry=o,r.splitResult=await e._updatingHandles.addPromise(e._executeSplit(o)),await e.next()}catch(a){e._lastSplitterGeometryWasInvalid=!0,await s.create(t.tool)}}}),l(()=>s.activeTool,(t,i)=>{"point"===t&&!e.hasHandles(z)&&o?e.addHandles($(o,e.layer),z):"point"===i&&e.removeHandles(z)})],this.id),await s.create(a)},async tearDown(){e.removeHandles(this.id)}}),"reviewing-features":()=>({id:"reviewing-features",async setUp(){const t=r.splitterGeometry;if(!t)throw new i("editing:missing-splitter-geometry","The `splitterGeometry` property of the workflow's data must be set in order to start the 'reviewing-features' step.");const a=r.splitResult??await e._executeSplit(t),{featureToCreate:o,featureToUpdate:s}=await e._createAndInitializeEdits(a),n=await e._displayFeatureGraphics(s,o);e.addHandles(n,this.id)},async tearDown(){e.removeHandles(this.id)}})})}async _displayFeatureGraphics(e,t){const{data:i,_graphicsLayer:o}=this,s=i.viewModel.view,d=[];if(!e||!t||!s)return r();const p=n(i=>Promise.all([w(e,this._webStyleCache,i),w(t,this._webStyleCache,i)]));return await p("2d"===s.type?s.scale:null),"2d"===s.type&&d.push(l(()=>s.scale,e=>p(e))),o.add(t),d.push(r(()=>o.remove(t))),d.push(await y(o,s,i.feature,e)),a(d)}async _executeSplit(e){const{data:t}=this,{feature:r}=t,a=r.geometry;if(!a)throw new i("editing:feature-has-no-geometry","Cannot split the provided feature as it has no geometry.");const o=await U(a,e);if(!o||!o.newPart)throw new i("editing:split-failed","The split operation did not produce a valid result.");return o}_initializeFormViewModel(){const{data:e,_webStyleCache:t}=this,i=e.viewModel.view,r=e.editorItem.layerInfo?[e.editorItem.layerInfo]:null,a=new F({activeFeatureIndex:0,highlightHelper:this._highlightHelper,layerInfos:r,map:i?.map,spatialReference:i?.spatialReference,timeZone:e.timeZone});this._formViewModel=a,this.addHandles(a.on("values-change",V({forEachFeature:e=>{w(e,t,i?.scale)},forEachValueChange:(t,i,r)=>e.getEditsForFeature(r)?.setAttribute(t,i)})))}_initializeGraphicsLayer(){const{data:e}=this,{view:t}=e.viewModel,i=new m({elevationInfo:e.editorItem.layer.elevationInfo,internal:!0,listMode:"hide",title:"splitFeatureWorkflow-internal"});return this._graphicsLayer=i,t?.map.add(i),i}_initializeSketchViewModel(e){const{data:t}=this,{view:i}=t.viewModel;this._sketchViewModel=new O({layer:e,creationMode:"single",sketchOptions:t.sketchOptions,snappingManager:t.snappingManager,useLegacyCreateTools:t.viewModel.useLegacyCreateTools,updateOnGraphicClick:!1,defaultUpdateOptions:this.sketchUpdateOptions,view:i})}_makeSketchController(){return{enter:async()=>this.addHandles(q(this)),exit:()=>this.removeHandles(D),viewModel:this._sketchViewModel}}async _setFeatureOnFormViewModel(e,i){const r=this._formViewModel;r.features=new t([e]),r.activeFeatureIndex=0,"existing"===i?(r.editType="UPDATE",r.overrideOriginalFeature(e,this.data.initialFeature)):r.editType="INSERT",await d(()=>!r.updating)}get test(){}};e([c()],R.prototype,"activeFeature",null),e([c()],R.prototype,"allowSave",null),e([c()],R.prototype,"availableCreateTools",null),e([c()],R.prototype,"defaultSplitterGeometryType",void 0),e([c()],R.prototype,"formViewModel",null),e([c()],R.prototype,"hasInvalidFormTemplate",null),e([c()],R.prototype,"hasPreviousStep",null),e([c()],R.prototype,"helpMessage",null),e([c()],R.prototype,"layer",null),e([c()],R.prototype,"parent",null),e([c()],R.prototype,"sketchUpdateOptions",null),e([c()],R.prototype,"type",void 0),e([c()],R.prototype,"updating",null),e([c()],R.prototype,"noticeMessage",null),e([c()],R.prototype,"_activeFeature",void 0),e([c()],R.prototype,"_formViewModel",void 0),e([c()],R.prototype,"_graphicsLayer",void 0),e([c()],R.prototype,"_highlightHelper",void 0),e([c()],R.prototype,"_lastSplitterGeometryWasInvalid",void 0),e([c()],R.prototype,"_sketchViewModel",void 0),e([c()],R.prototype,"_splittingMayIntroduceCurves",null),R=P=e([h("esri.widgets.Editor.SplitFeatureWorkflow")],R);const N=R;function B(e){return async t=>{const{existingFeatureEdits:r,newFeatureEdits:a}=t,o=r?.feature?.cloneShallow(),s=a?.feature?.cloneShallow(),n=t.editorItem.layer;if(null==o||null==s)throw new i("editing:missing-features","Expected both a feature to update and a feature to add for the split operation.");r?.attributesModified||(o.attributes=E(o,t.editorItem.layer)),await e(n,{addFeatures:[s],updateFeatures:[o]})}}function Z(e,t){if(e.options.featureSources.some(e=>e.layer===t))return r();const i=new v({enabled:!1,layer:t});return e.options.featureSources.add(i),r(()=>{e.options.featureSources.remove(i),i.destroy()})}function $(e,t){const{options:i}=e,a=i.enabled;i.enabled=!0;const o=i.featureEnabled;i.featureEnabled=!0;const s=i.distance;i.distance=15;const n=new Map;for(const r of i.featureSources)n.set(r,r.enabled),r.layer===t?r.enabled=!0:r.enabled=!1;return r(()=>{i.enabled=a,i.featureEnabled=o,i.distance=s;for(const[e,t]of n)e.enabled=t})}function q(e){const t=e.data,{feature:i,viewModel:s}=t,{view:n}=s;if(!n)return r();const d=new f({view:n}),p=l(()=>e.stepId,e=>{switch(d.removeAll(),e){case"drawing-splitter-geometry":d.add(i);break;case"reviewing-features":d.add(t.existingFeatureEdits?.feature),d.add(t.newFeatureEdits?.feature)}},u),c=new f({view:n,highlightName:_}),h=l(()=>t.temporaryHighlightFeature,(t,i)=>{i&&i!==e.activeFeature&&c.remove(i),t&&c.add(t)}),m=l(()=>e.activeFeature,(e,i)=>{i&&i!==t.temporaryHighlightFeature&&c.remove(i),e&&c.add(e)});return a([p,h,m,o(d),o(c)])}export{N as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Error.js";import{makeHandle as i}from"../../core/handleUtils.js";import"../../core/has.js";import{destroyMaybe as s}from"../../core/maybe.js";import{watch as a,sync as o}from"../../core/reactiveUtils.js";import{property as r,subclass as l}from"../../core/accessorSupport/decorators.js";import d from"../../layers/GraphicsLayer.js";import{isSceneLayer as h}from"../../layers/support/layerUtils.js";import{updateGraphicSymbolWhenRequired as n,swapForEditingSession as c}from"../../views/draw/support/editingSessionUtils.js";import{highlightsSupported as p}from"../../views/support/layerViewUtils.js";import u from"./UpdateFeatureWorkflowData.js";import{UpdateRecordWorkflow as w,handleKeys as m}from"./UpdateRecordWorkflow.js";import{getVisualVariableAttributes as y,setUpGeometryUpdate as f,syncUpdateOptions as g,cloneGraphicExceptMesh as k,canCreateInteractiveEditSession as _,isTerminalUpdateEventType as v}from"./workflowUtils.js";import V from"../Sketch/SketchViewModel.js";var S;const b={...m,highlights:Symbol(),sketchGraphics:Symbol(),sketchViewModel:Symbol(),waitingForTool:Symbol()};let M=S=class extends w{constructor(e){super(e),this.type="update-feature",this._layerViewEditSession=null,this._sketchGraphicClone=null,this._sketchLayer=null,this._sketchViewModel=null,this._webStyleCache=new Map}destroy(){this._layerViewEditSession?.rollback()}get curveResizeDisabled(){return this.data.curveResizeDisabled}get curveUpdatesDisabled(){return this.data.curveUpdatesDisabled}get sketchUpdateOptions(){const{capabilities:e,layer:t}=this.data.editorItem;return{enableScaling:!this.curveResizeDisabled,multipleSelectionEnabled:!1,reshapeOptions:{enableCreateCurveFromStraightEdge:!h(t)&&e.supportsTrueCurve}}}get supportsSplitFeatureWorkflow(){return this.data.supportsSplitFeatureWorkflow}get viewGraphic(){return this._sketchViewModel?this._sketchGraphicClone:this.data.edits.feature??this.fullFeature}getUpdating(){return!!this._sketchViewModel?.updating}async commit(){this.removeHandles(b.sketchGraphics);try{const e=this.data.edits.stagedForDelete;await super.commit();const t=this._layerViewEditSession;e?t?.rollback():t?.commit()}catch(e){throw await this._configureSketchViewModel(),new t("editor-workflow:failed-to-commit","An error occurred when sending the updates to the service",{error:e})}}async start(){return await super.start(),await this._initializeSketchViewModel()}_initializeFormViewModel(){super._initializeFormViewModel(),this.addHandles([this._formViewModel.on("value-change",e=>{this._layerViewEditSession?.setAttribute(e.fieldName,e.value)}),a(()=>this._formViewModel.feature?.sourceLayer,e=>this._sketchGraphicClone.sourceLayer=e)])}_configureHighlight(){const{edits:e,layerView:t}=this.data;p(t)&&this.addHandles(t.highlight(e.feature),b.highlights)}async _configureSketchViewModel(){const{_sketchLayer:e,_sketchViewModel:t}=this;if(!t||!e)return;const{data:i,_formViewModel:s,_sketchGraphicClone:a}=this,{edits:o,viewModel:r}=i,l=o.feature,{view:d}=r,h=y(l),n=await f({feature:l,featureClone:a,visualVariableAttributes:h,sketchLayer:e,sketchViewModel:t,getUpdateOptions:()=>this.sketchUpdateOptions,view:d,webStyleCache:this._webStyleCache,onUpdate:({geometry:e,attributes:t},i)=>{if(o.updateAttributes(t),o.updateGeometry(e),s.feature&&(s.feature.geometry=e),null!=h.rotation){const{field:e}=h.rotation;s.setValue(e,t[e])}if(null!=h.size){const{field:e}=h.size;s.setValue(e,t[e])}("undo"===i.type||"redo"===i.type||"update"===i.type&&null!=i.toolEventInfo&&v(i.toolEventInfo.type))&&s.notifyFeatureGeometryChanged()},addUpdatingPromise:e=>{this._updatingHandles.consumePromise(e)},addHandle:e=>{this.addHandles(e,b.waitingForTool)}});this.addHandles(n,b.sketchGraphics),t.addHandles(n)}async _initializeSketchViewModel(){const{data:e,_sketchGraphicClone:t}=this,{readOnly:r}=e,l=e.edits.feature,{capabilities:h,layer:p}=e.editorItem,u=e.viewModel.view;if(this.removeHandles([b.highlights,b.sketchGraphics,b.sketchViewModel,b.waitingForTool]),!h.update.geometry||r||this.curveUpdatesDisabled)return{enter:async()=>{this.hasHandles(b.highlights)||this._configureHighlight()},exit:()=>this.removeHandles([b.highlights])};const w=new d({elevationInfo:p.elevationInfo,internal:!0,listMode:"hide",title:"updateFeaturesWorkflow-internal"}),m=new V({allowDeleteKey:!1,layer:w,sketchOptions:e.sketchOptions,snappingManager:e.snappingManager,useLegacyCreateTools:e.viewModel.useLegacyCreateTools,updateOnGraphicClick:!1,defaultUpdateOptions:this.sketchUpdateOptions,view:u});return this._sketchLayer=w,this._sketchViewModel=m,u?.map.add(w),await(u?.whenLayerView(w)),this.addHandles([i(()=>{u?.destroyed||u?.map.remove(w),w.destroyed||w.destroy(),this._sketchViewModel=s(m)}),a(()=>this.sketchUpdateOptions,e=>{m.defaultUpdateOptions=e,g(m,e)},o)],b.sketchViewModel),await n(t,this._webStyleCache,"2d"===u?.type?u.scale:null),this.addHandles([await c(w,u,l,t)]),{enter:async()=>{this.hasHandles(b.sketchGraphics)||await this._updatingHandles.addPromise(this._configureSketchViewModel())},exit:()=>this.removeHandles([b.sketchGraphics]),viewModel:m}}_onFullFeatureLoaded(e){super._onFullFeatureLoaded(e);const t=this._sketchGraphicClone=k(e),{edits:i,layerView:s}=this.data;i.updateGeometry(e.geometry),i.trackChanges(),_(s)&&(this._layerViewEditSession=s.createInteractiveEditSession(t))}static async create(e){const t=new S({data:await u.create(e),onCommit:this._onCommitFactory(e.applyEdits)});return t._set("steps",this._createWorkflowSteps(t)),t}get test(){}};e([r()],M.prototype,"curveResizeDisabled",null),e([r()],M.prototype,"curveUpdatesDisabled",null),e([r()],M.prototype,"sketchUpdateOptions",null),e([r()],M.prototype,"supportsSplitFeatureWorkflow",null),e([r()],M.prototype,"_layerViewEditSession",void 0),e([r()],M.prototype,"_sketchGraphicClone",void 0),e([r()],M.prototype,"_sketchLayer",void 0),e([r()],M.prototype,"_sketchViewModel",void 0),M=S=e([l("esri.widgets.Editor.UpdateFeatureWorkflow")],M);export{M as UpdateFeatureWorkflow,b as handleKeys};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Error.js";import{makeHandle as i}from"../../core/handleUtils.js";import"../../core/has.js";import{destroyMaybe as s}from"../../core/maybe.js";import{watch as a,sync as o}from"../../core/reactiveUtils.js";import{property as r,subclass as l}from"../../core/accessorSupport/decorators.js";import d from"../../layers/GraphicsLayer.js";import{isSceneLayer as n}from"../../layers/support/layerUtils.js";import{updateGraphicSymbolWhenRequired as h,swapForEditingSession as c}from"../../views/draw/support/editingSessionUtils.js";import{highlightsSupported as p}from"../../views/support/layerViewUtils.js";import u from"./UpdateFeatureWorkflowData.js";import{UpdateRecordWorkflow as w,handleKeys as m}from"./UpdateRecordWorkflow.js";import{handleFormValuesChangeEvent as y,getVisualVariableAttributes as g,setUpGeometryUpdate as f,syncUpdateOptions as k,cloneGraphicExceptMesh as _,canCreateInteractiveEditSession as v,isTerminalUpdateEventType as V}from"./workflowUtils.js";import S from"../Sketch/SketchViewModel.js";var b;const M={...m,highlights:Symbol(),sketchGraphics:Symbol(),sketchViewModel:Symbol(),waitingForTool:Symbol()};let F=b=class extends w{constructor(e){super(e),this.type="update-feature",this._layerViewEditSession=null,this._sketchGraphicClone=null,this._sketchLayer=null,this._sketchViewModel=null,this._webStyleCache=new Map}destroy(){this._layerViewEditSession?.rollback()}get curveResizeDisabled(){return this.data.curveResizeDisabled}get curveUpdatesDisabled(){return this.data.curveUpdatesDisabled}get sketchUpdateOptions(){const{capabilities:e,layer:t}=this.data.editorItem;return{enableScaling:!this.curveResizeDisabled,multipleSelectionEnabled:!1,reshapeOptions:{enableCreateCurveFromStraightEdge:!n(t)&&e.supportsTrueCurve}}}get supportsSplitFeatureWorkflow(){return this.data.supportsSplitFeatureWorkflow}get viewGraphic(){return this._sketchViewModel?this._sketchGraphicClone:this.data.edits.feature??this.fullFeature}getUpdating(){return!!this._sketchViewModel?.updating}async commit(){this.removeHandles(M.sketchGraphics);try{const e=this.data.edits.stagedForDelete;await super.commit();const t=this._layerViewEditSession;e?t?.rollback():t?.commit()}catch(e){throw await this._configureSketchViewModel(),new t("editor-workflow:failed-to-commit","An error occurred when sending the updates to the service",{error:e})}}async start(){return await super.start(),await this._initializeSketchViewModel()}_initializeFormViewModel(){super._initializeFormViewModel(),this.addHandles([this._formViewModel.on("values-change",y({filter:e=>e===this.fullFeature,forEachValueChange:(e,t)=>this._layerViewEditSession?.setAttribute(e,t)})),a(()=>this._formViewModel.activeFeature?.sourceLayer,e=>this._sketchGraphicClone.sourceLayer=e)])}_configureHighlight(){const{edits:e,layerView:t}=this.data;p(t)&&this.addHandles(t.highlight(e.feature),M.highlights)}async _configureSketchViewModel(){const{_sketchLayer:e,_sketchViewModel:t}=this;if(!t||!e)return;const{data:i,_formViewModel:s,_sketchGraphicClone:a}=this,{edits:o,viewModel:r}=i,l=o.feature,{view:d}=r,n=g(l),h=await f({feature:l,featureClone:a,visualVariableAttributes:n,sketchLayer:e,sketchViewModel:t,getUpdateOptions:()=>this.sketchUpdateOptions,view:d,webStyleCache:this._webStyleCache,onUpdate:({geometry:e,attributes:t},i)=>{o.updateAttributes(t),o.updateGeometry(e);const a=s.activeFeature;if(a&&(a.geometry=e),null!=n.rotation){const{field:e}=n.rotation;this._updatingHandles.consumePromise(s.setFieldValue(e,t[e]))}if(null!=n.size){const{field:e}=n.size;this._updatingHandles.consumePromise(s.setFieldValue(e,t[e]))}("undo"===i.type||"redo"===i.type||"update"===i.type&&null!=i.toolEventInfo&&V(i.toolEventInfo.type))&&a&&s.notifyGeometriesChanged([a])},addUpdatingPromise:e=>{this._updatingHandles.consumePromise(e)},addHandle:e=>{this.addHandles(e,M.waitingForTool)}});this.addHandles(h,M.sketchGraphics),t.addHandles(h)}async _initializeSketchViewModel(){const{data:e,_sketchGraphicClone:t}=this,{readOnly:r}=e,l=e.edits.feature,{capabilities:n,layer:p}=e.editorItem,u=e.viewModel.view;if(this.removeHandles([M.highlights,M.sketchGraphics,M.sketchViewModel,M.waitingForTool]),!n.update.geometry||r||this.curveUpdatesDisabled)return{enter:async()=>{this.hasHandles(M.highlights)||this._configureHighlight()},exit:()=>this.removeHandles([M.highlights])};const w=new d({elevationInfo:p.elevationInfo,internal:!0,listMode:"hide",title:"updateFeaturesWorkflow-internal"}),m=new S({allowDeleteKey:!1,layer:w,sketchOptions:e.sketchOptions,snappingManager:e.snappingManager,useLegacyCreateTools:e.viewModel.useLegacyCreateTools,updateOnGraphicClick:!1,defaultUpdateOptions:this.sketchUpdateOptions,view:u});return this._sketchLayer=w,this._sketchViewModel=m,u?.map.add(w),await(u?.whenLayerView(w)),this.addHandles([i(()=>{u?.destroyed||u?.map.remove(w),w.destroyed||w.destroy(),this._sketchViewModel=s(m)}),a(()=>this.sketchUpdateOptions,e=>{m.defaultUpdateOptions=e,k(m,e)},o)],M.sketchViewModel),await h(t,this._webStyleCache,"2d"===u?.type?u.scale:null),this.addHandles([await c(w,u,l,t)]),{enter:async()=>{this.hasHandles(M.sketchGraphics)||await this._updatingHandles.addPromise(this._configureSketchViewModel())},exit:()=>this.removeHandles([M.sketchGraphics]),viewModel:m}}_onFullFeatureLoaded(e){super._onFullFeatureLoaded(e);const t=this._sketchGraphicClone=_(e),{edits:i,layerView:s}=this.data;i.updateGeometry(e.geometry),i.trackChanges(),v(s)&&(this._layerViewEditSession=s.createInteractiveEditSession(t))}static async create(e){const t=new b({data:await u.create(e),onCommit:this._onCommitFactory(e.applyEdits)});return t._set("steps",this._createWorkflowSteps(t)),t}get test(){}};e([r()],F.prototype,"curveResizeDisabled",null),e([r()],F.prototype,"curveUpdatesDisabled",null),e([r()],F.prototype,"sketchUpdateOptions",null),e([r()],F.prototype,"supportsSplitFeatureWorkflow",null),e([r()],F.prototype,"_layerViewEditSession",void 0),e([r()],F.prototype,"_sketchGraphicClone",void 0),e([r()],F.prototype,"_sketchLayer",void 0),e([r()],F.prototype,"_sketchViewModel",void 0),F=b=e([l("esri.widgets.Editor.UpdateFeatureWorkflow")],F);export{F as UpdateFeatureWorkflow,M as handleKeys};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{addMany as t}from"../../core/arrayUtils.js";import r from"../../core/Collection.js";import o from"../../core/Error.js";import i from"../../core/Logger.js";import{destroyMaybe as a}from"../../core/maybe.js";import{whenOnce as s}from"../../core/reactiveUtils.js";import{property as n,subclass as l}from"../../core/accessorSupport/decorators.js";import{isSceneLayer as d,isTable as u}from"../../layers/support/layerUtils.js";import c from"../BatchAttributeForm/BatchAttributeFormViewModel.js";import p from"./UpdateFeaturesWorkflowData.js";import h from"./Workflow.js";import{whenEditorLayerView as f,findEditorItemForLayer as m}from"./workflowUtils.js";import{MultipleSourceLayersError as g}from"./support/errors.js";import{SketchController as y}from"./support/SketchController.js";var w;const F=()=>i.getLogger("esri.widgets.Editor.UpdateFeaturesWorkflow"),v=Symbol();let b=w=class extends h{constructor(e){super(e),this.type="update-features",this._formViewModel=null,this._sketchController=null}async initialize(){this._initializeFormViewModel();try{await this._updatingHandles.addPromise((async()=>{const{fullFeatures:e}=await this.data.when();this._formViewModel.features=new r(e),this._initializeVisuals(e)})())}catch(e){this.cancel({force:!0,error:new o("update-features-workflow:initialize","Failed to initialize the workflow data.",e)})}}destroy(){this._sketchController=a(this._sketchController),this._formViewModel.destroy()}get curveUpdatesDisabled(){return this.data.curveUpdatesDisabled}get features(){return this.data.features}get featureInfos(){return this.data.featureInfos}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return this.data.editorItems.some(e=>e.hasInvalidFormTemplate)}get hasPendingEdits(){const{data:e}=this;return e.fullFeatures.some(t=>!!e.getPendingEditsForFeature(t)?.modified)}get parent(){return this.data.parent}get saveActionLabel(){return"update"}get selectedFeature(){return this.data.selectedFeature}get sketchUpdateOptions(){const{data:e}=this,t=e.fullFeatures,r=_(e),o=e.getEditorItemForLayer(r),i=!this.selectedFeature||t.length>1;return{multipleSelectionEnabled:!1,reshapeOptions:{enableCreateCurveFromStraightEdge:!d(r)&&!!o?.capabilities.supportsTrueCurve},tool:i?"move":void 0}}get sketchViewModel(){return this._sketchController?.viewModel}get supportsMergeFeaturesWorkflow(){const e=this.data,{fullFeatures:t,layers:r}=e;return!(1!==r.length||t.length<2)&&(!this.curveUpdatesDisabled&&!!e.getEditorItemForLayer(r[0])?.supportsMergeFeaturesWorkflow)}getUpdating(){return!!this._sketchController?.updating}get viewGraphics(){return this._sketchController?.sketchGraphics??this.data.fullFeatures}async commit(){const{data:e,_formViewModel:t}=this;for(const r of e.fullFeatures)U(e.getPendingEditsForFeature(r),t.getValues(r));await super.commit()}static create(e){const{applyEdits:t,applyEditsFeatureService:r,...o}=e,{features:i,featureInfos:a,viewModel:s}=o,n=new Set;function l(e){const t=m(s.editorItems,e);t&&n.add(t)}a?.length?a.forEach(({layer:e})=>l(e)):i?.length&&(F().warn("editor:update-features-workflow-data-features","UpdateFeaturesWorkflow: 'features' is deprecrated, use 'featureInfos'"),i.forEach(e=>l(e.sourceLayer??e.layer)));const d=Array.from(n),u=new w({data:new p({...o,editorItems:d}),onCommit:M(e.applyEdits)});return u._set("steps",E()),u}async deleteAndCommit(){return this.data.stageDelete(),this.commit()}async enter(){}exit(e){}async reset(){}async save(){const{formViewModel:e}=this;await e.submit(),e.valid&&await super.save()}async start(){await super.start(),await s(()=>!this.updating);const e=this._sketchController;if(e)return e;const{data:t}=this,{view:r}=t.viewModel,o=_(t);return!r||u(o)?{enter:async()=>{},exit:()=>{}}:{enter:()=>this._initializeHighlights(t.fullFeatures,o,r),exit:()=>this.removeHandles(v)}}_initializeFormViewModel(){const{data:e}=this,t=e.viewModel.view,r=e.getEditorItemForLayer(_(e)),o=r?.layerInfo?[r.layerInfo]:null,i=new c({editType:"UPDATE",map:t?.map,readOnly:!1===r?.capabilities.update.attributes,spatialReference:t?.spatialReference,timeZone:e.timeZone,layerInfos:o});this._formViewModel=i,this.addHandles(i.on("value-change",t=>{for(const r of t.features)e.getPendingEditsForFeature(r)?.setAttribute(t.fieldName,t.value);this._sketchController?.notifyAttributesChanged(t)}));const a=t=>{e.getPendingEditsForFeature(t.feature)?.setAttachmentEdits(t.attachmentEdits)};this.addHandles(i.on("attachments-change",a))}async _initializeHighlights(e,t,r){const o=await f(r,t);this.addHandles(o.highlight(e),v)}_initializeSketchController(e,t,r){const{data:o}=this,i=new y({defaultUpdateOptions:this.sketchUpdateOptions,sourceLayer:t,view:r,features:e,useLegacyCreateTools:o.viewModel.useLegacyCreateTools,onGeometriesUpdated:e=>{const t=[];for(const{feature:r,geometry:i}of e)o.getPendingEditsForFeature(r)?.updateGeometry(i),t.push(r);this._formViewModel.notifyGeometriesChanged(t)},onVisualVariableAttributesUpdated:()=>{F().warnOnce("editor:batch-update-visual-variables","UpdateFeaturesWorkflow does not currently support modifying visual variables through the scale and rotate tools.")}});this._sketchController=i}_initializeVisuals(e){const{data:t}=this,{view:r}=t.viewModel;if(!r)return;const o=_(t);if(u(o))return;const i=t.getEditorItemForLayer(o);i?.capabilities.update.geometry&&!this.curveUpdatesDisabled&&this._initializeSketchController(e,o,r)}};e([n()],b.prototype,"curveUpdatesDisabled",null),e([n()],b.prototype,"features",null),e([n()],b.prototype,"featureInfos",null),e([n()],b.prototype,"formViewModel",null),e([n()],b.prototype,"hasInvalidFormTemplate",null),e([n()],b.prototype,"hasPendingEdits",null),e([n()],b.prototype,"parent",null),e([n()],b.prototype,"saveActionLabel",null),e([n()],b.prototype,"selectedFeature",null),e([n()],b.prototype,"sketchUpdateOptions",null),e([n()],b.prototype,"sketchViewModel",null),e([n()],b.prototype,"supportsMergeFeaturesWorkflow",null),e([n()],b.prototype,"type",void 0),e([n()],b.prototype,"viewGraphics",null),e([n()],b.prototype,"_formViewModel",void 0),e([n()],b.prototype,"_sketchController",void 0),b=w=e([l("esri.widgets.Editor.UpdateFeaturesWorkflow")],b);const k=b;function E(){return[{id:"editing-features",async setUp(){},async tearDown(){}}]}function M(e){return async r=>{const o=_(r),i=[],a=[],s=[],n=[],l=[];for(const e of r.fullFeatures){const o=r.getPendingEditsForFeature(e),d=o?.stagedForDelete;if(!o?.modified&&!d)continue;const u=e.clone();if(!o?.attributesModified||d){const t=e.sourceLayer;if(!t){F().warn("Feature has no sourceLayer. It will not be included in any applyEdits payload.");continue}const r=t.objectIdField;if(u.attributes={[r]:e.getAttribute(r)},"scene"===t.type&&null!=t.infoFor3D){const r=t.associatedLayer?.globalIdField;null!=r&&u.setAttribute(r,e.getAttribute(r))}}if(o?.geometryModified&&!d||(u.geometry=null),d?a.push(u):(o?.attributesModified||o?.geometryModified)&&i.push(u),o?.attachmentEdits)for(const e of o.attachmentEdits)t(s,e.add),t(n,e.update),t(l,e.delete)}if(i.length+a.length+s.length+n.length+l.length===0)return void F().warn("No edits to apply. Workflow will finish without sending an applyEdits request.");const d={updateFeatures:i.length>0?i:void 0,deleteFeatures:a.length>0?a:void 0,addAttachments:s.length>0?s:void 0,updateAttachments:n.length>0?n:void 0,deleteAttachments:l.length>0?l:void 0},u=o.capabilities?.editing.supportsGlobalId&&(s.length>0||n.length>0||l.length>0)?{globalIdUsed:!0}:void 0;await e(o,d,u)}}function _(e){if(e.layers.length>1)throw new g;return e.layers[0]}function U(e,t){if(!e||!e.feature)return;const{attributes:r}=e.feature;Object.keys(t).some(e=>t[e]!==r[e])&&e.updateAttributes(t)}export{k as default};
2
+ import{__decorate as e}from"tslib";import{addMany as t}from"../../core/arrayUtils.js";import r from"../../core/Collection.js";import o from"../../core/Error.js";import i from"../../core/Logger.js";import{destroyMaybe as a}from"../../core/maybe.js";import{whenOnce as s}from"../../core/reactiveUtils.js";import{property as n,subclass as l}from"../../core/accessorSupport/decorators.js";import{isSceneLayer as d,isTable as u}from"../../layers/support/layerUtils.js";import p from"../BatchAttributeForm/BatchAttributeFormViewModel.js";import c from"./UpdateFeaturesWorkflowData.js";import h from"./Workflow.js";import{handleFormValuesChangeEvent as f,whenEditorLayerView as m,findEditorItemForLayer as g}from"./workflowUtils.js";import{MultipleSourceLayersError as y}from"./support/errors.js";import{SketchController as w}from"./support/SketchController.js";var F;const v=()=>i.getLogger("esri.widgets.Editor.UpdateFeaturesWorkflow"),b=Symbol();let k=F=class extends h{constructor(e){super(e),this.type="update-features",this._formViewModel=null,this._sketchController=null}async initialize(){this._initializeFormViewModel();try{await this._updatingHandles.addPromise((async()=>{const{fullFeatures:e}=await this.data.when();this._formViewModel.features=new r(e),this._initializeVisuals(e)})())}catch(e){this.cancel({force:!0,error:new o("update-features-workflow:initialize","Failed to initialize the workflow data.",e)})}}destroy(){this._sketchController=a(this._sketchController),this._formViewModel.destroy()}get curveUpdatesDisabled(){return this.data.curveUpdatesDisabled}get features(){return this.data.features}get featureInfos(){return this.data.featureInfos}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return this.data.editorItems.some(e=>e.hasInvalidFormTemplate)}get hasPendingEdits(){const{data:e}=this;return e.fullFeatures.some(t=>!!e.getPendingEditsForFeature(t)?.modified)}get parent(){return this.data.parent}get saveActionLabel(){return"update"}get selectedFeature(){return this.data.selectedFeature}get sketchUpdateOptions(){const{data:e}=this,t=e.fullFeatures,r=U(e),o=e.getEditorItemForLayer(r),i=!this.selectedFeature||t.length>1;return{multipleSelectionEnabled:!1,reshapeOptions:{enableCreateCurveFromStraightEdge:!d(r)&&!!o?.capabilities.supportsTrueCurve},tool:i?"move":void 0}}get sketchViewModel(){return this._sketchController?.viewModel}get supportsMergeFeaturesWorkflow(){const e=this.data,{fullFeatures:t,layers:r}=e;return!(1!==r.length||t.length<2)&&(!this.curveUpdatesDisabled&&!!e.getEditorItemForLayer(r[0])?.supportsMergeFeaturesWorkflow)}getUpdating(){return!!this._sketchController?.updating}get viewGraphics(){return this._sketchController?.sketchGraphics??this.data.fullFeatures}static create(e){const{applyEdits:t,applyEditsFeatureService:r,...o}=e,{features:i,featureInfos:a,viewModel:s}=o,n=new Set;function l(e){const t=g(s.editorItems,e);t&&n.add(t)}a?.length?a.forEach(({layer:e})=>l(e)):i?.length&&(v().warn("editor:update-features-workflow-data-features","UpdateFeaturesWorkflow: 'features' is deprecrated, use 'featureInfos'"),i.forEach(e=>l(e.sourceLayer??e.layer)));const d=Array.from(n),u=new F({data:new c({...o,editorItems:d}),onCommit:_(e.applyEdits)});return u._set("steps",M()),u}async deleteAndCommit(){return this.data.stageDelete(),this.commit()}async enter(){}exit(e){}async reset(){}async save(){const{formViewModel:e}=this;await e.submit(),e.valid&&await super.save()}async start(){await super.start(),await s(()=>!this.updating);const e=this._sketchController;if(e)return e;const{data:t}=this,{view:r}=t.viewModel,o=U(t);return!r||u(o)?{enter:async()=>{},exit:()=>{}}:{enter:()=>this._initializeHighlights(t.fullFeatures,o,r),exit:()=>this.removeHandles(b)}}_initializeFormViewModel(){const{data:e}=this,t=e.viewModel.view,r=e.getEditorItemForLayer(U(e)),o=r?.layerInfo?[r.layerInfo]:null,i=new p({editType:"UPDATE",map:t?.map,readOnly:!1===r?.capabilities.update.attributes,spatialReference:t?.spatialReference,timeZone:e.timeZone,layerInfos:o});this._formViewModel=i,this.addHandles(i.on("values-change",f({forEachFeature:(t,r)=>{const o=e.getPendingEditsForFeature(t);if(o){for(const{fieldName:e,value:t}of r)o.setAttribute(e,t);this._sketchController?.notifyAttributesChanged(t,r)}}})));const a=t=>{e.getPendingEditsForFeature(t.feature)?.setAttachmentEdits(t.attachmentEdits)};this.addHandles(i.on("attachments-change",a))}async _initializeHighlights(e,t,r){const o=await m(r,t);this.addHandles(o.highlight(e),b)}_initializeSketchController(e,t,r){const{data:o}=this,i=new w({defaultUpdateOptions:this.sketchUpdateOptions,sourceLayer:t,view:r,features:e,useLegacyCreateTools:o.viewModel.useLegacyCreateTools,onGeometriesUpdated:e=>{const t=[];for(const{feature:r,geometry:i}of e)o.getPendingEditsForFeature(r)?.updateGeometry(i),t.push(r);this._formViewModel.notifyGeometriesChanged(t)},onVisualVariableAttributesUpdated:()=>{v().warnOnce("editor:batch-update-visual-variables","UpdateFeaturesWorkflow does not currently support modifying visual variables through the scale and rotate tools.")}});this._sketchController=i}_initializeVisuals(e){const{data:t}=this,{view:r}=t.viewModel;if(!r)return;const o=U(t);if(u(o))return;const i=t.getEditorItemForLayer(o);i?.capabilities.update.geometry&&!this.curveUpdatesDisabled&&this._initializeSketchController(e,o,r)}};e([n()],k.prototype,"curveUpdatesDisabled",null),e([n()],k.prototype,"features",null),e([n()],k.prototype,"featureInfos",null),e([n()],k.prototype,"formViewModel",null),e([n()],k.prototype,"hasInvalidFormTemplate",null),e([n()],k.prototype,"hasPendingEdits",null),e([n()],k.prototype,"parent",null),e([n()],k.prototype,"saveActionLabel",null),e([n()],k.prototype,"selectedFeature",null),e([n()],k.prototype,"sketchUpdateOptions",null),e([n()],k.prototype,"sketchViewModel",null),e([n()],k.prototype,"supportsMergeFeaturesWorkflow",null),e([n()],k.prototype,"type",void 0),e([n()],k.prototype,"viewGraphics",null),e([n()],k.prototype,"_formViewModel",void 0),e([n()],k.prototype,"_sketchController",void 0),k=F=e([l("esri.widgets.Editor.UpdateFeaturesWorkflow")],k);const E=k;function M(){return[{id:"editing-features",async setUp(){},async tearDown(){}}]}function _(e){return async r=>{const o=U(r),i=[],a=[],s=[],n=[],l=[];for(const e of r.fullFeatures){const o=r.getPendingEditsForFeature(e),d=o?.stagedForDelete;if(!o?.modified&&!d)continue;const u=e.clone();if(!o?.attributesModified||d){const t=e.sourceLayer;if(!t){v().warn("Feature has no sourceLayer. It will not be included in any applyEdits payload.");continue}const r=t.objectIdField;if(u.attributes={[r]:e.getAttribute(r)},"scene"===t.type&&null!=t.infoFor3D){const r=t.associatedLayer?.globalIdField;null!=r&&u.setAttribute(r,e.getAttribute(r))}}if(o?.geometryModified&&!d||(u.geometry=null),d?a.push(u):(o?.attributesModified||o?.geometryModified)&&i.push(u),o?.attachmentEdits)for(const e of o.attachmentEdits)t(s,e.add),t(n,e.update),t(l,e.delete)}if(i.length+a.length+s.length+n.length+l.length===0)return void v().warn("No edits to apply. Workflow will finish without sending an applyEdits request.");const d={updateFeatures:i.length>0?i:void 0,deleteFeatures:a.length>0?a:void 0,addAttachments:s.length>0?s:void 0,updateAttachments:n.length>0?n:void 0,deleteAttachments:l.length>0?l:void 0},u=o.capabilities?.editing.supportsGlobalId&&(s.length>0||n.length>0||l.length>0)?{globalIdUsed:!0}:void 0;await e(o,d,u)}}function U(e){if(e.layers.length>1)throw new y;return e.layers[0]}export{E as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Error.js";import{makeHandle as i,abortHandle as a}from"../../core/handleUtils.js";import r from"../../core/Logger.js";import{isAborted as o}from"../../core/promiseUtils.js";import{watch as s}from"../../core/reactiveUtils.js";import{property as l,subclass as n}from"../../core/accessorSupport/decorators.js";import d from"../../views/draw/support/HighlightHelper.js";import{temporaryHighlightName as c}from"../../views/support/HighlightDefaults.js";import h from"./UpdateRecordWorkflowData.js";import u from"./Workflow.js";import{fetchFullFeatures as m}from"./workflowUtils.js";import p from"../FeatureForm/FeatureFormViewModel.js";var g;const f={exit:Symbol()};let w=class extends u{static{g=this}constructor(e){super(e),this._highlightHelper=null,this.fullFeature=null,this.type="update-table-record"}initialize(){const{data:e}=this,{edits:s}=e,{view:l}=e.viewModel,n=s.feature;l&&(this._highlightHelper=new d({view:l,highlightName:c}),this.addHandles(i(()=>this._highlightHelper?.removeAll())));const h=new AbortController;this.addHandles(a(h)),this._updatingHandles.consumePromise(m([n],n.sourceLayer,e.viewModel.view.spatialReference,h.signal).then(([e])=>{o(h)||(this._onFullFeatureLoaded(e),this._initializeFormViewModel())},e=>(r.getLogger(this).error("initialize()","Failed to fetch full feature for update workflow.",e),this.cancel({force:!0,error:new t("editor:failed-to-fetch-full-feature","Failed to retrieve all information for this feature. The update cannot proceed.",{detail:{error:e}})}))))}get allowSave(){return!this.data.readOnly&&this.hasPendingEdits&&!this.updating}get editorItem(){return this.data.editorItem}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return this.data.editorItem.hasInvalidFormTemplate}get hasPendingEdits(){return this.data.edits.modified&&!this.data.readOnly}get layer(){return this.data.editorItem.layer}get parent(){return this.data.parent}get saveActionLabel(){return"update"}get shouldShowAttachments(){return this.editorItem.capabilities.attachments.enabled}get shouldAllowAttachmentEditing(){return this.editorItem.capabilities.update.attachments.enabled}get reliesOnOwnerAdminPrivileges(){const e=this.editorItem.capabilities;return e.update.reliesOnOwnerAdminPrivileges||e.delete.reliesOnOwnerAdminPrivileges}async enter(){this._configureAttachmentsViewModel()}exit(e){this.removeHandles(f.exit)}async start(){return await super.start(),null}_configureAttachmentsViewModel(){const{data:e,fullFeature:t}=this,{attachmentsCapabilities:a,viewModel:r}=e,{attachmentsViewModel:o}=r,l=e.readOnly?{editing:!1}:a;o.set({capabilities:l,graphic:t,filesEnabled:!1,mode:"view"}),this.addHandles([i(()=>o.fileInfos.removeAll()),s(()=>o.mode,e=>{switch(e){case"add":this.go("adding-attachment");break;case"edit":this.go("editing-attachment")}})],f.exit)}_initializeFormViewModel(){const{association:e,edits:t,formTemplate:i,viewModel:{view:a},readOnly:r}=this.data,o=this._formViewModel=new p({activeAssociation:e,editType:"UPDATE",feature:this.fullFeature,formTemplate:i,highlightHelper:this._highlightHelper,map:a?.map,spatialReference:a.spatialReference,timeZone:a?.timeZone,disabled:r});o.callbacks={...this.data.featureFormCallbacks,showAllRelatedRecords:e=>o.relationshipId=e.relationshipId,viewAssociatedLayers:e=>o.associationId=e.associationId,viewAssociatedFeatures:e=>o.associatedLayer=e.associatedLayer};const{initialFeature:l}=t;l&&o.overrideInitialFeature(l),this.addHandles([o.on("value-change",()=>{t.updateAttributes(o.getValues()),this.fullFeature.attributes=t.feature.attributes}),s(()=>a?.timeZone,e=>o.timeZone=e)])}_onFullFeatureLoaded(e){this.fullFeature=e;const{edits:t}=this.data;t.updateAttributes(e.attributes),t.trackChanges()}static async create(e){const t=new g({data:await h.create(e),onCommit:this._onCommitFactory(e.applyEdits)});return t._set("steps",this._createWorkflowSteps(t)),t}static _createWorkflowSteps(e){const{attachmentsViewModel:t}=e.data.viewModel;return[{id:"editing-attributes",async setUp(){},async tearDown(){}},{id:"adding-attachment",async setUp(){},async tearDown(){t.mode="view"}},{id:"editing-attachment",async setUp(){},async tearDown(){t.mode="view"}}]}static{this._onCommitFactory=e=>async t=>{const{edits:i}=t,{feature:a}=i;if(!a)return;const r=a.sourceLayer,o=a.clone();if(!i.attributesModified||i.stagedForDelete){const e=r.objectIdField;if(o.attributes={[e]:a.getAttribute(e)},"scene"===r.type&&null!=r.infoFor3D){const e=r.associatedLayer?.globalIdField;null!=e&&o.setAttribute(e,a.getAttribute(e))}}i.geometryModified&&!i.stagedForDelete||(o.geometry=null);const s=i.stagedForDelete?"deleteFeatures":"updateFeatures";await e(r,{[s]:[o]})}}};e([l()],w.prototype,"_formViewModel",void 0),e([l()],w.prototype,"allowSave",null),e([l()],w.prototype,"editorItem",null),e([l()],w.prototype,"formViewModel",null),e([l()],w.prototype,"fullFeature",void 0),e([l()],w.prototype,"hasInvalidFormTemplate",null),e([l()],w.prototype,"hasPendingEdits",null),e([l()],w.prototype,"layer",null),e([l()],w.prototype,"parent",null),e([l()],w.prototype,"saveActionLabel",null),e([l()],w.prototype,"shouldShowAttachments",null),e([l()],w.prototype,"shouldAllowAttachmentEditing",null),e([l()],w.prototype,"reliesOnOwnerAdminPrivileges",null),w=g=e([n("esri.widgets.Editor.UpdateRecordWorkflow")],w);export{w as UpdateRecordWorkflow,f as handleKeys};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Collection.js";import i from"../../core/Error.js";import{makeHandle as r,abortHandle as a}from"../../core/handleUtils.js";import o from"../../core/Logger.js";import{isAborted as s}from"../../core/promiseUtils.js";import{watch as l}from"../../core/reactiveUtils.js";import{property as n,subclass as d}from"../../core/accessorSupport/decorators.js";import c from"../../views/draw/support/HighlightHelper.js";import{temporaryHighlightName as h}from"../../views/support/HighlightDefaults.js";import u from"../BatchAttributeForm/BatchAttributeFormViewModel.js";import m from"./UpdateRecordWorkflowData.js";import p from"./Workflow.js";import{fetchFullFeatures as f,handleFormValuesChangeEvent as g}from"./workflowUtils.js";var w;const y={exit:Symbol()};let v=class extends p{static{w=this}constructor(e){super(e),this._highlightHelper=null,this.fullFeature=null,this.type="update-table-record"}initialize(){const{data:e}=this,{edits:t}=e,{view:l}=e.viewModel,n=t.feature;l&&(this._highlightHelper=new c({view:l,highlightName:h}),this.addHandles(r(()=>this._highlightHelper?.removeAll())));const d=new AbortController;this.addHandles(a(d)),this._updatingHandles.consumePromise(f([n],n.sourceLayer,e.viewModel.view.spatialReference,d.signal).then(([e])=>{s(d)||(this._onFullFeatureLoaded(e),this._initializeFormViewModel())},e=>(o.getLogger(this).error("initialize()","Failed to fetch full feature for update workflow.",e),this.cancel({force:!0,error:new i("editor:failed-to-fetch-full-feature","Failed to retrieve all information for this feature. The update cannot proceed.",{detail:{error:e}})}))))}get allowSave(){return!this.data.readOnly&&this.hasPendingEdits&&!this.updating}get editorItem(){return this.data.editorItem}get formViewModel(){return this._formViewModel}get hasInvalidFormTemplate(){return this.data.editorItem.hasInvalidFormTemplate}get hasPendingEdits(){return this.data.edits.modified&&!this.data.readOnly}get layer(){return this.data.editorItem.layer}get parent(){return this.data.parent}get saveActionLabel(){return"update"}get shouldShowAttachments(){return this.editorItem.capabilities.attachments.enabled}get shouldAllowAttachmentEditing(){return this.editorItem.capabilities.update.attachments.enabled}get reliesOnOwnerAdminPrivileges(){const e=this.editorItem.capabilities;return e.update.reliesOnOwnerAdminPrivileges||e.delete.reliesOnOwnerAdminPrivileges}async enter(){this._configureAttachmentsViewModel()}exit(e){this.removeHandles(y.exit)}async start(){return await super.start(),null}_configureAttachmentsViewModel(){const{data:e,fullFeature:t}=this,{attachmentsCapabilities:i,viewModel:a}=e,{attachmentsViewModel:o}=a,s=e.readOnly?{editing:!1}:i;o.set({capabilities:s,graphic:t,filesEnabled:!1,mode:"view"}),this.addHandles([r(()=>o.fileInfos.removeAll()),l(()=>o.mode,e=>{switch(e){case"add":this.go("adding-attachment");break;case"edit":this.go("editing-attachment")}})],y.exit)}_initializeFormViewModel(){const{association:e,edits:i,viewModel:{view:r},readOnly:a,editorItem:o}=this.data,{fullFeature:s}=this,n=o.layerInfo?[o.layerInfo]:null,d=this._formViewModel=new u({activeFeatureIndex:0,editType:"UPDATE",features:new t([s]),highlightHelper:this._highlightHelper,layerInfos:n,map:r?.map,readOnly:a,spatialReference:r.spatialReference,timeZone:r?.timeZone,callbacks:this.data.formCallbacks});e&&d.setActiveAssociation(e);const{initialFeature:c}=i;c&&d.overrideOriginalFeature(s,c),this.addHandles([d.on("values-change",g({filter:e=>e===s,forEachFeature:()=>{i.updateAttributes(d.getValues(s)),s.attributes=i.feature.attributes}})),l(()=>r?.timeZone,e=>d.timeZone=e)])}_onFullFeatureLoaded(e){this.fullFeature=e;const{edits:t}=this.data;t.updateAttributes(e.attributes),t.trackChanges()}static async create(e){const t=new w({data:await m.create(e),onCommit:this._onCommitFactory(e.applyEdits)});return t._set("steps",this._createWorkflowSteps(t)),t}static _createWorkflowSteps(e){const{attachmentsViewModel:t}=e.data.viewModel;return[{id:"editing-attributes",async setUp(){},async tearDown(){}},{id:"adding-attachment",async setUp(){},async tearDown(){t.mode="view"}},{id:"editing-attachment",async setUp(){},async tearDown(){t.mode="view"}}]}static{this._onCommitFactory=e=>async t=>{const{edits:i}=t,{feature:r}=i;if(!r)return;const a=r.sourceLayer,o=r.clone();if(!i.attributesModified||i.stagedForDelete){const e=a.objectIdField;if(o.attributes={[e]:r.getAttribute(e)},"scene"===a.type&&null!=a.infoFor3D){const e=a.associatedLayer?.globalIdField;null!=e&&o.setAttribute(e,r.getAttribute(e))}}i.geometryModified&&!i.stagedForDelete||(o.geometry=null);const s=i.stagedForDelete?"deleteFeatures":"updateFeatures";await e(a,{[s]:[o]})}}};e([n()],v.prototype,"_formViewModel",void 0),e([n()],v.prototype,"allowSave",null),e([n()],v.prototype,"editorItem",null),e([n()],v.prototype,"formViewModel",null),e([n()],v.prototype,"fullFeature",void 0),e([n()],v.prototype,"hasInvalidFormTemplate",null),e([n()],v.prototype,"hasPendingEdits",null),e([n()],v.prototype,"layer",null),e([n()],v.prototype,"parent",null),e([n()],v.prototype,"saveActionLabel",null),e([n()],v.prototype,"shouldShowAttachments",null),e([n()],v.prototype,"shouldAllowAttachmentEditing",null),e([n()],v.prototype,"reliesOnOwnerAdminPrivileges",null),v=w=e([d("esri.widgets.Editor.UpdateRecordWorkflow")],v);export{v as UpdateRecordWorkflow,y as handleKeys};