@arcgis/core 4.27.0-next.20230317 → 4.27.0-next.20230321

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 (300) hide show
  1. package/TimeExtent.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/05e47e78e258dd5ab6ea.js +1 -0
  4. package/assets/esri/core/workers/chunks/{b661d2c785333429aad3.js → 0b005e3502dd97562701.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{8812629e07e5bf46caa7.js → 1d2271a36641f6834401.js} +1 -1
  6. package/assets/esri/core/workers/chunks/1d65a2bc91774fdbd690.js +1 -0
  7. package/assets/esri/core/workers/chunks/273a894ab44b76ee4488.js +1 -0
  8. package/assets/esri/core/workers/chunks/29ee4f14602caf6967e4.js +1 -0
  9. package/assets/esri/core/workers/chunks/{56ddde83f40cda0a8a5c.js → 2c0775541cfec9d43acb.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{48a1b8be3c2a59c4c925.js → 32f9b488915a4a8864e5.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{790d62ea3c90ca076095.js → 403c18eaa30673b096fe.js} +1 -1
  12. package/assets/esri/core/workers/chunks/41bbf58417f4085657f4.js +1 -0
  13. package/assets/esri/core/workers/chunks/{c36efbdd0a84fe851bbb.js → 433686dfda9e2ff1f98b.js} +1 -1
  14. package/assets/esri/core/workers/chunks/4be7647605300e07e843.js +1 -0
  15. package/assets/esri/core/workers/chunks/5cc99e9e974fec32b597.js +1 -0
  16. package/assets/esri/core/workers/chunks/6062bc79ebd5047a473a.js +1 -0
  17. package/assets/esri/core/workers/chunks/{57aa75a10fb8bb3fa517.js → 622139ef8f7181e48cd0.js} +1 -1
  18. package/assets/esri/core/workers/chunks/6b14673a4afd6ef81487.js +1 -0
  19. package/assets/esri/core/workers/chunks/70ea44365021b665c213.js +1 -0
  20. package/assets/esri/core/workers/chunks/{7727e6a4338c831f272f.js → 7570ec6a64a88ddc0fdd.js} +1 -1
  21. package/assets/esri/core/workers/chunks/81a6f4b43e047c3395c0.js +1 -0
  22. package/assets/esri/core/workers/chunks/87edeb09a948122fa030.js +1 -0
  23. package/assets/esri/core/workers/chunks/8daa0523d49653cc5861.js +1 -0
  24. package/assets/esri/core/workers/chunks/{3ff3d67f1bc6e2b2f48e.js → 90e12cff7672f3d92ced.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{f150bd21c3b9e098da57.js → 92951b85676df776961f.js} +56 -56
  26. package/assets/esri/core/workers/chunks/983b26414cc46d9c3105.js +1 -0
  27. package/assets/esri/core/workers/chunks/{19355af765993931a7c0.js → 9b196a726c6d175ca60f.js} +1 -1
  28. package/assets/esri/core/workers/chunks/a27951dbe83c63f9d01a.js +1 -0
  29. package/assets/esri/core/workers/chunks/bc002e4dff8859571a7a.js +1 -0
  30. package/assets/esri/core/workers/chunks/bfc2b40f1892970281c6.js +1 -0
  31. package/assets/esri/core/workers/chunks/c162d1e27e779732d494.js +1 -0
  32. package/assets/esri/core/workers/chunks/c5d872adce711ec61ede.js +1 -0
  33. package/assets/esri/core/workers/chunks/c5dd23d11fa91b0f318e.js +1 -0
  34. package/assets/esri/core/workers/chunks/{e97c4beb3a6cf1d91310.js → c6c2f771bca0e303b5c0.js} +1 -1
  35. package/assets/esri/core/workers/chunks/c8f019d13f6b22481f2e.js +1 -0
  36. package/assets/esri/core/workers/chunks/d34dbb49508a95588423.js +1 -0
  37. package/assets/esri/core/workers/chunks/e637e47000f4dc48054d.js +1 -0
  38. package/assets/esri/core/workers/chunks/e7093d27a31345953dca.js +1 -0
  39. package/assets/esri/core/workers/chunks/f1ab86dbbd5b04e2a96c.js +1 -0
  40. package/assets/esri/core/workers/chunks/f85a01429959e60a8713.js +1 -0
  41. package/assets/esri/core/workers/chunks/ff9efa829497557ec26a.js +1 -0
  42. package/assets/esri/themes/base/widgets/_Bookmarks.scss +3 -0
  43. package/assets/esri/themes/base/widgets/_Editor.scss +18 -0
  44. package/assets/esri/themes/base/widgets/_ItemList.scss +13 -33
  45. package/assets/esri/themes/dark/main.css +1 -1
  46. package/assets/esri/themes/light/main.css +1 -1
  47. package/assets/esri/themes/light/view.css +1 -1
  48. package/assets/esri/widgets/Editor/t9n/Editor.json +1 -1
  49. package/assets/esri/widgets/Editor/t9n/Editor_en.json +1 -1
  50. package/assets/esri/widgets/Slice/t9n/Slice_ar.json +1 -1
  51. package/assets/esri/widgets/Slice/t9n/Slice_bg.json +1 -1
  52. package/assets/esri/widgets/Slice/t9n/Slice_bs.json +1 -1
  53. package/assets/esri/widgets/Slice/t9n/Slice_ca.json +1 -1
  54. package/assets/esri/widgets/Slice/t9n/Slice_cs.json +1 -1
  55. package/assets/esri/widgets/Slice/t9n/Slice_da.json +1 -1
  56. package/assets/esri/widgets/Slice/t9n/Slice_de.json +1 -1
  57. package/assets/esri/widgets/Slice/t9n/Slice_el.json +1 -1
  58. package/assets/esri/widgets/Slice/t9n/Slice_es.json +1 -1
  59. package/assets/esri/widgets/Slice/t9n/Slice_et.json +1 -1
  60. package/assets/esri/widgets/Slice/t9n/Slice_fi.json +1 -1
  61. package/assets/esri/widgets/Slice/t9n/Slice_fr.json +1 -1
  62. package/assets/esri/widgets/Slice/t9n/Slice_he.json +1 -1
  63. package/assets/esri/widgets/Slice/t9n/Slice_hr.json +1 -1
  64. package/assets/esri/widgets/Slice/t9n/Slice_hu.json +1 -1
  65. package/assets/esri/widgets/Slice/t9n/Slice_id.json +1 -1
  66. package/assets/esri/widgets/Slice/t9n/Slice_it.json +1 -1
  67. package/assets/esri/widgets/Slice/t9n/Slice_ja.json +1 -1
  68. package/assets/esri/widgets/Slice/t9n/Slice_ko.json +1 -1
  69. package/assets/esri/widgets/Slice/t9n/Slice_lt.json +1 -1
  70. package/assets/esri/widgets/Slice/t9n/Slice_lv.json +1 -1
  71. package/assets/esri/widgets/Slice/t9n/Slice_nb.json +1 -1
  72. package/assets/esri/widgets/Slice/t9n/Slice_nl.json +1 -1
  73. package/assets/esri/widgets/Slice/t9n/Slice_pl.json +1 -1
  74. package/assets/esri/widgets/Slice/t9n/Slice_pt-BR.json +1 -1
  75. package/assets/esri/widgets/Slice/t9n/Slice_pt-PT.json +1 -1
  76. package/assets/esri/widgets/Slice/t9n/Slice_ro.json +1 -1
  77. package/assets/esri/widgets/Slice/t9n/Slice_ru.json +1 -1
  78. package/assets/esri/widgets/Slice/t9n/Slice_sk.json +1 -1
  79. package/assets/esri/widgets/Slice/t9n/Slice_sl.json +1 -1
  80. package/assets/esri/widgets/Slice/t9n/Slice_sr.json +1 -1
  81. package/assets/esri/widgets/Slice/t9n/Slice_sv.json +1 -1
  82. package/assets/esri/widgets/Slice/t9n/Slice_th.json +1 -1
  83. package/assets/esri/widgets/Slice/t9n/Slice_tr.json +1 -1
  84. package/assets/esri/widgets/Slice/t9n/Slice_uk.json +1 -1
  85. package/assets/esri/widgets/Slice/t9n/Slice_vi.json +1 -1
  86. package/assets/esri/widgets/Slice/t9n/Slice_zh-CN.json +1 -1
  87. package/assets/esri/widgets/Slice/t9n/Slice_zh-HK.json +1 -1
  88. package/assets/esri/widgets/Slice/t9n/Slice_zh-TW.json +1 -1
  89. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ar.json +1 -1
  90. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bg.json +1 -1
  91. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bs.json +1 -1
  92. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ca.json +1 -1
  93. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_cs.json +1 -1
  94. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_da.json +1 -1
  95. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_de.json +1 -1
  96. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_el.json +1 -1
  97. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_es.json +1 -1
  98. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_et.json +1 -1
  99. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fi.json +1 -1
  100. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fr.json +1 -1
  101. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_he.json +1 -1
  102. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hr.json +1 -1
  103. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hu.json +1 -1
  104. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_id.json +1 -1
  105. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_it.json +1 -1
  106. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ja.json +1 -1
  107. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ko.json +1 -1
  108. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lt.json +1 -1
  109. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lv.json +1 -1
  110. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nb.json +1 -1
  111. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nl.json +1 -1
  112. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pl.json +1 -1
  113. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-BR.json +1 -1
  114. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-PT.json +1 -1
  115. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ro.json +1 -1
  116. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ru.json +1 -1
  117. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sk.json +1 -1
  118. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sl.json +1 -1
  119. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sr.json +1 -1
  120. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sv.json +1 -1
  121. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_th.json +1 -1
  122. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_tr.json +1 -1
  123. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_uk.json +1 -1
  124. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_vi.json +1 -1
  125. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-CN.json +1 -1
  126. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-HK.json +1 -1
  127. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-TW.json +1 -1
  128. package/chunks/ColorMaterial.glsl.js +16 -14
  129. package/core/domUtils.js +1 -1
  130. package/core/maybe.js +1 -1
  131. package/core/urlUtils.js +1 -1
  132. package/geohash/GeohashTree.js +1 -1
  133. package/interfaces.d.ts +12 -214
  134. package/layers/SceneLayer.js +1 -1
  135. package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
  136. package/layers/support/FieldsIndex.js +1 -1
  137. package/layers/support/fieldType.js +1 -1
  138. package/layers/support/fieldUtils.js +1 -1
  139. package/layers/support/rasterFunctionConstants.js +1 -1
  140. package/layers/support/rasterFunctions/BaseRasterFunction.js +1 -1
  141. package/layers/support/rasterFunctions/CurvatureFunction.js +5 -0
  142. package/layers/support/rasterFunctions/CurvatureFunctionArguments.js +5 -0
  143. package/layers/support/rasterFunctions/SlopeFunction.js +1 -1
  144. package/layers/support/rasterFunctions/rasterFunctionHelper.js +1 -1
  145. package/layers/support/rasterFunctions/surfaceUtils.js +1 -1
  146. package/package.json +1 -1
  147. package/portal/schemas/definitions.js +1 -1
  148. package/rest/query/operations/pbfFeatureServiceParser.js +1 -1
  149. package/support/revision.js +1 -1
  150. package/views/2d/engine/imagery/processor/curvatureProcessor.js +5 -0
  151. package/views/2d/engine/imagery/processor/rasterProcessor.js +1 -1
  152. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  153. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  154. package/views/2d/layers/features/support/BinStore.js +1 -1
  155. package/views/2d/layers/features/support/ClusterStore.js +1 -1
  156. package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
  157. package/views/2d/layers/features/support/FeatureSetReaderJSON.js +1 -1
  158. package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
  159. package/views/2d/layers/features/support/FeatureSetReaderPBFHeader.js +1 -1
  160. package/views/2d/layers/features/support/FeatureSetReaderPBFIndirect.js +1 -1
  161. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  162. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  163. package/views/3d/environment/CloudsData.js +1 -1
  164. package/views/3d/environment/CloudsGenerator.js +1 -1
  165. package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
  166. package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
  167. package/views/3d/interactive/editingTools/transformGraphic/GraphicTransformTool.js +1 -1
  168. package/views/3d/interactive/editingTools/transformGraphic/ScaleRotateMeshAdapter.js +1 -1
  169. package/views/3d/interactive/editingTools/transformGraphic/ScaleRotateObjectSymbol3DAdapter.js +1 -1
  170. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  171. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  172. package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
  173. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  174. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  175. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  176. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  177. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  178. package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
  179. package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
  180. package/views/3d/layers/graphics/Graphics3DWebStyleSymbol.js +1 -1
  181. package/views/3d/layers/graphics/interfaces.js +1 -1
  182. package/views/3d/layers/graphics/polygonUtils.js +1 -1
  183. package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
  184. package/views/3d/support/buffer/InterleavedLayout.js +1 -1
  185. package/views/3d/support/buffer/glUtil.js +1 -1
  186. package/views/3d/support/buffer/workerHelper.js +1 -1
  187. package/views/3d/support/engineContent/line.js +1 -1
  188. package/views/3d/terrain/PatchRenderData.js +1 -1
  189. package/views/3d/terrain/TerrainSurface.js +1 -1
  190. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +2 -2
  191. package/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js +1 -1
  192. package/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js +1 -1
  193. package/views/3d/webgl-engine/lib/TextRenderParameters.js +1 -1
  194. package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
  195. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  196. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  197. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  198. package/views/3d/webgl-engine/shaders/ColorMaterial.glsl.js +1 -1
  199. package/views/3d/webgl-engine/shaders/ColorMaterialTechnique.js +1 -1
  200. package/views/3d/webgl-engine/shaders/ColorMaterialTechniqueConfiguration.js +1 -1
  201. package/views/interactive/snapping/featureSources/FeatureServiceSnappingSource.js +1 -1
  202. package/views/interactive/tooltip/TransformTooltipInfos.js +1 -1
  203. package/views/interactive/tooltip/content/TooltipContentTransformRotate.js +1 -1
  204. package/views/interactive/tooltip/content/TooltipContentTransformScale.js +1 -1
  205. package/widgets/Bookmarks/css.js +1 -1
  206. package/widgets/Bookmarks.js +1 -1
  207. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  208. package/widgets/Editor/CreateFeaturesWorkflowData.js +1 -1
  209. package/widgets/Editor/EditorViewModel.js +1 -1
  210. package/widgets/Editor/Upload.js +5 -0
  211. package/widgets/Editor/UploadState.js +4 -0
  212. package/widgets/Editor/workflowUtils.js +1 -1
  213. package/widgets/Editor.js +1 -1
  214. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  215. package/widgets/FeatureForm/{InputField.js → FieldInput.js} +1 -1
  216. package/widgets/FeatureForm/FormExpressionsManager.js +1 -1
  217. package/widgets/FeatureForm/GroupInput.js +5 -0
  218. package/widgets/FeatureForm/css.js +1 -1
  219. package/widgets/FeatureForm/featureFormUtils.js +1 -1
  220. package/widgets/FeatureForm.js +1 -1
  221. package/widgets/FeatureTable/FieldColumn.js +1 -1
  222. package/widgets/FeatureTemplates/ItemList.js +1 -1
  223. package/widgets/FeatureTemplates/TemplateItem.js +1 -1
  224. package/widgets/FeatureTemplates.js +1 -1
  225. package/widgets/Fullscreen/FullscreenViewModel.js +1 -1
  226. package/widgets/LayerList/LayerListViewModel.js +1 -1
  227. package/widgets/LayerList.js +1 -1
  228. package/widgets/ScaleBar/ScaleBarViewModel.js +1 -1
  229. package/widgets/ShadowCast/ShadowCastViewModel.js +1 -1
  230. package/assets/esri/core/workers/chunks/009348f65fab440f7752.js +0 -1
  231. package/assets/esri/core/workers/chunks/075ecd53fb229dfee53c.js +0 -1
  232. package/assets/esri/core/workers/chunks/1c77b92063ee36421914.js +0 -1
  233. package/assets/esri/core/workers/chunks/1ee774c3f29d8074da12.js +0 -1
  234. package/assets/esri/core/workers/chunks/262b6de5a29c713b4010.js +0 -1
  235. package/assets/esri/core/workers/chunks/281c0f936b5645a673ab.js +0 -1
  236. package/assets/esri/core/workers/chunks/2883a59fc1fc9e4d71af.js +0 -1
  237. package/assets/esri/core/workers/chunks/2e032a58ac6717313227.js +0 -1
  238. package/assets/esri/core/workers/chunks/4d4cbfe72835c0460b09.js +0 -1
  239. package/assets/esri/core/workers/chunks/5504dff4113dd74d2fa7.js +0 -1
  240. package/assets/esri/core/workers/chunks/5bded2588008117d0c35.js +0 -1
  241. package/assets/esri/core/workers/chunks/6caf8a0b49bd01906f32.js +0 -1
  242. package/assets/esri/core/workers/chunks/9cab04c71d8bccf0156d.js +0 -1
  243. package/assets/esri/core/workers/chunks/9f02a0670ad73718d8f9.js +0 -1
  244. package/assets/esri/core/workers/chunks/a265e454461edb306e2d.js +0 -1
  245. package/assets/esri/core/workers/chunks/a50ca44a62434bf18664.js +0 -1
  246. package/assets/esri/core/workers/chunks/bd090f9ec6cfe08e19a3.js +0 -1
  247. package/assets/esri/core/workers/chunks/c3338bdce8368731c4e9.js +0 -1
  248. package/assets/esri/core/workers/chunks/c54df59b2b3f73828a44.js +0 -1
  249. package/assets/esri/core/workers/chunks/ddebf3b5a131a6da5419.js +0 -1
  250. package/assets/esri/core/workers/chunks/de461c30aa24ec8bb212.js +0 -1
  251. package/assets/esri/core/workers/chunks/e23f56bee694a38da5b9.js +0 -1
  252. package/assets/esri/core/workers/chunks/ec73d16ef169adfc34fb.js +0 -1
  253. package/assets/esri/core/workers/chunks/ef884e2833868234c13c.js +0 -1
  254. package/assets/esri/core/workers/chunks/f3c99525fb1b0f719fe0.js +0 -1
  255. package/assets/esri/core/workers/chunks/fe314feede84dd688010.js +0 -1
  256. package/assets/esri/core/workers/chunks/ff15557dc7b74162ed75.js +0 -1
  257. package/assets/esri/widgets/Directions/t9n/Printout.json +0 -1
  258. package/assets/esri/widgets/Directions/t9n/Printout_ar.json +0 -1
  259. package/assets/esri/widgets/Directions/t9n/Printout_bg.json +0 -1
  260. package/assets/esri/widgets/Directions/t9n/Printout_bs.json +0 -1
  261. package/assets/esri/widgets/Directions/t9n/Printout_ca.json +0 -1
  262. package/assets/esri/widgets/Directions/t9n/Printout_cs.json +0 -1
  263. package/assets/esri/widgets/Directions/t9n/Printout_da.json +0 -1
  264. package/assets/esri/widgets/Directions/t9n/Printout_de.json +0 -1
  265. package/assets/esri/widgets/Directions/t9n/Printout_el.json +0 -1
  266. package/assets/esri/widgets/Directions/t9n/Printout_en.json +0 -1
  267. package/assets/esri/widgets/Directions/t9n/Printout_es.json +0 -1
  268. package/assets/esri/widgets/Directions/t9n/Printout_et.json +0 -1
  269. package/assets/esri/widgets/Directions/t9n/Printout_fi.json +0 -1
  270. package/assets/esri/widgets/Directions/t9n/Printout_fr.json +0 -1
  271. package/assets/esri/widgets/Directions/t9n/Printout_he.json +0 -1
  272. package/assets/esri/widgets/Directions/t9n/Printout_hr.json +0 -1
  273. package/assets/esri/widgets/Directions/t9n/Printout_hu.json +0 -1
  274. package/assets/esri/widgets/Directions/t9n/Printout_id.json +0 -1
  275. package/assets/esri/widgets/Directions/t9n/Printout_it.json +0 -1
  276. package/assets/esri/widgets/Directions/t9n/Printout_ja.json +0 -1
  277. package/assets/esri/widgets/Directions/t9n/Printout_ko.json +0 -1
  278. package/assets/esri/widgets/Directions/t9n/Printout_lt.json +0 -1
  279. package/assets/esri/widgets/Directions/t9n/Printout_lv.json +0 -1
  280. package/assets/esri/widgets/Directions/t9n/Printout_nb.json +0 -1
  281. package/assets/esri/widgets/Directions/t9n/Printout_nl.json +0 -1
  282. package/assets/esri/widgets/Directions/t9n/Printout_pl.json +0 -1
  283. package/assets/esri/widgets/Directions/t9n/Printout_pt-BR.json +0 -1
  284. package/assets/esri/widgets/Directions/t9n/Printout_pt-PT.json +0 -1
  285. package/assets/esri/widgets/Directions/t9n/Printout_ro.json +0 -1
  286. package/assets/esri/widgets/Directions/t9n/Printout_ru.json +0 -1
  287. package/assets/esri/widgets/Directions/t9n/Printout_sk.json +0 -1
  288. package/assets/esri/widgets/Directions/t9n/Printout_sl.json +0 -1
  289. package/assets/esri/widgets/Directions/t9n/Printout_sr.json +0 -1
  290. package/assets/esri/widgets/Directions/t9n/Printout_sv.json +0 -1
  291. package/assets/esri/widgets/Directions/t9n/Printout_th.json +0 -1
  292. package/assets/esri/widgets/Directions/t9n/Printout_tr.json +0 -1
  293. package/assets/esri/widgets/Directions/t9n/Printout_uk.json +0 -1
  294. package/assets/esri/widgets/Directions/t9n/Printout_vi.json +0 -1
  295. package/assets/esri/widgets/Directions/t9n/Printout_zh-CN.json +0 -1
  296. package/assets/esri/widgets/Directions/t9n/Printout_zh-HK.json +0 -1
  297. package/assets/esri/widgets/Directions/t9n/Printout_zh-TW.json +0 -1
  298. package/widgets/FeatureForm/InputField.d.ts +0 -4
  299. package/widgets/FeatureForm/InputFieldGroup.d.ts +0 -4
  300. package/widgets/FeatureForm/InputFieldGroup.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../chunks/tslib.es6.js";import{createTask as e}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecated as r}from"../../core/deprecate.js";import i from"../../core/Error.js";import s from"../../core/Evented.js";import{HandleOwnerMixin as o}from"../../core/HandleOwner.js";import n from"../../core/Logger.js";import{abortMaybe as l}from"../../core/maybe.js";import{watch as d,on as p,when as c,whenOnce as u,initial as h}from"../../core/reactiveUtils.js";import{property as w}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as f}from"../../core/accessorSupport/decorators/subclass.js";import m from"../../layers/GraphicsLayer.js";import{getOwningPortalUrl as y,getEffectiveLayerCapabilities as k}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as g}from"../../portal/support/urlUtils.js";import v from"../Attachments/AttachmentsViewModel.js";import b from"./CreateFeaturesWorkflow.js";import _ from"./CreateWorkflow.js";import{workflowDeprecation as W}from"./deprecationUtils.js";import C from"./UpdateWorkflow.js";import{whenEditorLayerView as F}from"./workflowUtils.js";import E from"../FeatureForm/FeatureFormViewModel.js";import I from"../FeatureTemplates/FeatureTemplatesViewModel.js";import O from"../Sketch/SketchViewModel.js";import U from"../Spinner/SpinnerViewModel.js";const A="esri.widgets.Editor.EditorViewModel",V=n.getLogger(A),M=["create","create-features","update"];function j(t,e,a){V.error(new i(t,e,a))}function S(t,e){return t?t.find((t=>t.layer===e)):void 0}let T=class extends(o(s.EventedAccessor)){constructor(t){super(t),this._sketchGraphicsLayer=new m({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this.activeWorkflow=null,this._activityQueue=[],this.editableItems=new a,this.failures=[],this.attachmentsViewModel=new v({abilities:{editing:!0}}),this.featureFormViewModel=new E,this.featureTemplatesViewModel=new I,this.sketchViewModel=new O({layer:this._sketchGraphicsLayer}),this.spinnerViewModel=new U,this.pageStack=[],this.showDiscardPrompt=()=>Promise.resolve(),this._candidateCommitted=!1,this.back=async()=>{const t=this.activeWorkflow;if(t&&this.canGoBack){if(this.hasPendingEdits)try{await this.showDiscardPrompt()}catch(e){return}t.hasPreviousStep?await t.previous({cancelCurrentStep:!0}):await this.cancelWorkflow({force:!0})}},this.save=()=>{const{featureFormViewModel:t}=this;t.submit(),!t.submittable||t.validateContingencyConstraints(t.getValues(),{includeIncompleteViolations:!0}).length>0||this.activeWorkflow?.commit()},this.selectFeature=(t,e=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.edits.feature=t,e&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.handles.add([d((()=>{const t=this.view?.map?.editableLayers.filter((({parent:t,visible:e})=>t&&"visible"in t?e&&t.visible:e)),e=this.view?.allLayerViews,a=e?.filter((e=>!!t?.includes(e.layer)&&!e.suspended));return[t,a,this.layerInfos,this.allowedWorkflows]}),(()=>this._updateEditableItems()),h),p((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),p((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),c((()=>this.view?.map),(t=>{t.add(this._sketchGraphicsLayer)}),h),d((()=>this.editableItems.toArray()),(()=>{const{activeWorkflow:t}=this;if(this.refreshCreationTemplates(),!t)return;const{stepId:e}=t;"create"!==t.type?"update"===t.type&&("awaiting-feature-to-update"===e&&!this.canUpdate||"awaiting-update-feature-candidate"===e&&!t.data.candidates.some((t=>{const e=this.editableItems.find((e=>e.layer===t.layer));return e&&e.supports.includes("update")})))&&this._cancelWorkflow():"awaiting-feature-creation-info"!==e||this.canCreate||this._cancelWorkflow()})),d((()=>this.page),((t,e)=>{const a=this.pageStack.slice(),r=a.indexOf(t);-1===r&&e?a.push(e):a.splice(r),this.pageStack=a})),c((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1))])}destroy(){this._cancelWorkflow().then((()=>{this.view?.map&&this.view.map.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=l(this._updateEditableItemsTask)}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(t){t&&0!==t.length||(t=[...M]),this._set("allowedWorkflows",t)}get canCreate(){return this.editableItems.some((t=>t.supports.includes("create")))}get canUpdate(){return this.editableItems.some((t=>t.supports.includes("update")||t.supports.includes("delete")||t.attachmentsOnUpdateEnabled))}get labelOptions(){return this.sketchViewModel.labelOptions}set labelOptions(t){this.sketchViewModel.labelOptions=t}set layerInfos(t){t?.some((t=>("allowAttachments"in t&&r(V,"Property: layerInfo.allowAttachments",{replacement:"layerInfo.attachmentsOnCreateEnabled or layerInfo.attachmentsOnUpdateEnabled",version:"4.26"}),!0))),this._set("layerInfos",t)}get snappingOptions(){return this.sketchViewModel.snappingOptions}set snappingOptions(t){this.sketchViewModel.snappingOptions=t}get state(){if(!this.get("view.ready")||0===this.editableItems.length)return"disabled";const t=this.attachmentsViewModel.mode;if("add"===t)return"adding-attachment";if("edit"===t)return"editing-attachment";const{activeWorkflow:e}=this;return e?e.stepId:"ready"}get syncing(){return this._activityQueue.length>0}get updating(){return this.updatingHandles.updating}get tooltipOptions(){return this.sketchViewModel.tooltipOptions}set tooltipOptions(t){this.sketchViewModel.tooltipOptions=t}set view(t){this.sketchViewModel.view=t,this.spinnerViewModel.view=t,this._set("view",t)}get page(){const{activeWorkflow:t,state:e}=this;return"awaiting-feature-to-update"===e||"awaiting-feature-to-create"===e||"create-features"===t?.type&&0===t.pendingFeatures.length?"ready":e??"disabled"}get selectedTemplateItem(){const{activeWorkflow:t}=this;if("create-features"===t?.type&&0===t.pendingFeatures.length){const{template:e}=t.data.creationInfo;for(const t of this.featureTemplatesViewModel.items)if("findByTemplate"in t){const a=t.findByTemplate(e);if(a)return a}else if(t.template===e)return t}}get featureFormDisabled(){const{activeWorkflow:t}=this;return"update"===t?.type&&!1===t?.data.editableItem?.attributeUpdatesEnabled}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:t}=this;return!!t&&"update"===t.type&&t.data.editableItem.supports.includes("delete")}get hasPendingEdits(){const{activeWorkflow:t}=this;return!!t&&("create"===t.type||"create-features"===t.type&&t.numPendingFeatures>0||"editing-existing-feature"===t.stepId&&t.data.edits.modified)}async startCreateWorkflowAtFeatureTypeSelection(){if(W(V,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await u((()=>!this.updating)),!this.canCreate)return void j("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createCreateWorkflow();await t.start(),this._set("activeWorkflow",t)}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateWorkflowAtFeatureCreation(t){if(W(V,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await u((()=>!this.updating)),!this.canCreate)return void j("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow("awaiting-feature-to-create");e.data.creationInfo=t,await e.start(),this._set("activeWorkflow",e)}async startCreateFeaturesWorkflowAtFeatureCreation(t){return this.startCreateFeaturesWorkflow(t,"creating-features")}async startCreateFeaturesWorkflow(t,e="awaiting-feature-creation-info"){if(await u((()=>!this.updating)),!this.canCreate)throw new i("editing:unsupported-workflow","Creating features is unsupported or disabled.");await this._cancelWorkflow();const a=this._createCreateFeaturesWorkflow(t,e);await a.start(),this._set("activeWorkflow",a)}async startCreateWorkflowAtFeatureEdit(t){if(W(V,"startCreateWorkflowAtFeatureEdit"),await u((()=>!this.updating)),!this.canCreate)return void j("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow("editing-new-feature");e.data.edits.feature=t,await e.start(),this._set("activeWorkflow",e)}async startUpdateWorkflowAtFeatureSelection(){if(await u((()=>!this.updating)),!this.canUpdate)return void j("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createUpdateWorkflow();await t.start(),this._set("activeWorkflow",t)}async startUpdateWorkflowAtMultipleFeatureSelection(t){if(await u((()=>!this.updating)),!this.canUpdate)return void j("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("awaiting-update-feature-candidate");e.data.candidates=t,await e.start(),this._set("activeWorkflow",e)}async startUpdateWorkflowAtFeatureEdit(t){if(await u((()=>!this.updating)),!this.canUpdate)return void j("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("editing-existing-feature");e.data.edits.feature=t,await e.start(),this._set("activeWorkflow",e)}async deleteFeatureFromWorkflow(){const{activeWorkflow:t}=this;t&&"update"===t.type?(await this._delete(t.data.edits.feature),await t.reset()):j("editing:unsupported-workflow","Deleting requires an active update workflow.")}async cancelWorkflow(t){return this._cancelWorkflow({warn:!0,...t})}findEditableItemForLayer(t){const e="subtype-sublayer"===t.type?t.parent:t;return this.editableItems.find((t=>t.layer===e))}refreshCreationTemplates(){const t=[];for(const{layer:e,supports:a}of this.editableItems)e.loaded&&a.includes("create")&&t.push(e);this.featureTemplatesViewModel.layers=t}async _updateEditableItems(){l(this._updateEditableItemsTask);const t=e((async t=>{const e=this.view?.allLayerViews,r=this.view?.map?.editableLayers;if(!e||!r)return;const i=new Set(r),s=r?.filter((t=>{const e=k(t)?.operations;return!(!t.visible||!e?.supportsAdd||e?.supportsQuery)})),o=e.filter((t=>i.has(t.layer))),n=[];for(const a of o.reverse()){const{layer:t,suspended:e}=a;"subtype-group"===t.type?(await t.loadAll(),n.push(...t.sublayers.slice().reverse().map((t=>this._makeEditableItemForLayer(t,e))))):n.push(this._makeEditableItemForLayer(t,e))}for(const a of s.reverse())"subtype-group"===a.type?(await a.loadAll(),n.push(...a.sublayers.map((t=>this._makeEditableItemForLayer(t,!1))))):n.push(this._makeEditableItemForLayer(a,!1));if(t.aborted)return;const l=this.editableItems;this.editableItems=new a(n),l.destroy()}));this.updatingHandles.addPromise(t.promise),this._updateEditableItemsTask=t}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t&&t.warn&&j("editing:no-active-workflow","There is no active workflow to cancel."));if(!t||!1!==t.force)return this.emit("workflow-cancel"),this._set("activeWorkflow",null),void await e.cancel(t);await e.cancel(t),this._set("activeWorkflow",null)}_createCreateFeaturesWorkflow(t,e){return b.create(this,t,e,((t,e,a)=>this._applyEdits(t,e,a)),((t,e)=>this._addAttachments(t,e)))}_createCreateWorkflow(t){return _.create(this,t,((t,e,a)=>this._applyEdits(t,e,a)))}_createUpdateWorkflow(t){return C.create(this,t,((t,e)=>this._applyEdits(t,e)))}async _delete(t){const e=t?.sourceLayer;e&&"applyEdits"in e&&await this._applyEdits(e,{deleteFeatures:[t]})}_addAttachments(t,e){const a=[];return e?.forEach((e=>a.push(this._addAttachment(t,e.feature,e.attachment)))),Promise.all(a)}async _addAttachment(t,e,a){let r=null;if("geojson"===t.type||"scene"===t.type||"oriented-imagery"===t.type)throw new i("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation((async()=>(r=await(t.addAttachment?.(e,a).catch((t=>{throw t?.error||t})))??null,r))),r}async _applyEdits(t,e,a){let r=null;const i=t.url?await y(t.url):null,s={returnServiceEditsOption:(!i||!g(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{if(k(t)?.operations.supportsQuery){const a=await F(this.view,t);return r=await t.applyEdits(e,s),await u((()=>!a.updating)),r}return r=await t.applyEdits(e,s),r})),r}_queueOperation(t){this._activityQueue.push(t),this.notifyChange("syncing");const e=(t,e)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)};return t().then((t=>{if("error"in t&&t.error)throw t.error;if("addFeatureResults"in t){const{addFeatureResults:e,deleteFeatureResults:a,updateFeatureResults:r}=t,i=e.find((t=>!!t.error))||r.find((t=>!!t.error))||a.find((t=>!!t.error));if(i)throw i.error}return t})).catch((a=>{j("editing:operation-error","An error occurred.",{error:a});const r={error:a,retry:()=>(e(r,this.failures),this._queueOperation(t)),cancel:()=>{e(r,this.failures)}};this._set("failures",[...this.failures,r])})).then((()=>{e(t,this._activityQueue),this.notifyChange("syncing")}))}_makeEditableItemForLayer(t,e=!0){const a=k(t),r=a?.operations,i=S(this.layerInfos,t),s=this.allowedWorkflows,o=s.includes("create")||s.includes("create-features"),n=s.includes("update"),l=t=>!i||!1!==i.enabled&&!1!==i[t],d=o&&!!r?.supportsAdd&&l("addEnabled"),p=n&&!!r?.supportsUpdate&&l("updateEnabled"),c=n&&!!r?.supportsDelete&&l("deleteEnabled"),u=[];e||(d&&u.push("create"),p&&u.push("update"),c&&u.push("delete"));const h=p&&(!i||!1!==i.attributeUpdatesEnabled),w=p&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),f=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:t,supports:u,attributeUpdatesEnabled:h,geometryUpdatesEnabled:w,hasAttachments:f,attachmentsOnCreateEnabled:f&&o&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:f&&(!i||!1!==i.attachmentsOnUpdateEnabled)}}};t([w({readOnly:!0})],T.prototype,"activeWorkflow",void 0),t([w({readOnly:!0})],T.prototype,"_activityQueue",void 0),t([w({value:[...M]})],T.prototype,"allowedWorkflows",null),t([w({readOnly:!0})],T.prototype,"canCreate",null),t([w({readOnly:!0})],T.prototype,"canUpdate",null),t([w()],T.prototype,"editableItems",void 0),t([w({readOnly:!0})],T.prototype,"failures",void 0),t([w()],T.prototype,"attachmentsViewModel",void 0),t([w()],T.prototype,"featureFormViewModel",void 0),t([w()],T.prototype,"featureTemplatesViewModel",void 0),t([w()],T.prototype,"labelOptions",null),t([w()],T.prototype,"layerInfos",null),t([w()],T.prototype,"sketchViewModel",void 0),t([w()],T.prototype,"snappingOptions",null),t([w()],T.prototype,"spinnerViewModel",void 0),t([w()],T.prototype,"state",null),t([w({readOnly:!0})],T.prototype,"syncing",null),t([w()],T.prototype,"updating",null),t([w()],T.prototype,"tooltipOptions",null),t([w()],T.prototype,"view",null),t([w()],T.prototype,"pageStack",void 0),t([w()],T.prototype,"showDiscardPrompt",void 0),t([w()],T.prototype,"_candidateCommitted",void 0),t([w()],T.prototype,"page",null),t([w()],T.prototype,"selectedTemplateItem",null),t([w()],T.prototype,"featureFormDisabled",null),t([w()],T.prototype,"canGoBack",null),t([w()],T.prototype,"shouldShowDeleteButton",null),t([w()],T.prototype,"hasPendingEdits",null),T=t([f(A)],T);const L=T;export{L as default};
5
+ import{_ as t}from"../../chunks/tslib.es6.js";import{createTask as e}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecated as r}from"../../core/deprecate.js";import i from"../../core/Error.js";import s from"../../core/Evented.js";import{HandleOwnerMixin as o}from"../../core/HandleOwner.js";import n from"../../core/Logger.js";import{abortMaybe as l}from"../../core/maybe.js";import{throwIfAborted as d}from"../../core/promiseUtils.js";import{watch as p,on as c,when as u,whenOnce as h,initial as w}from"../../core/reactiveUtils.js";import{property as f}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as m}from"../../core/accessorSupport/decorators/subclass.js";import y from"../../layers/GraphicsLayer.js";import{getOwningPortalUrl as k,getEffectiveLayerCapabilities as g}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as v}from"../../portal/support/urlUtils.js";import b from"../Attachments/AttachmentsViewModel.js";import _ from"./CreateFeaturesWorkflow.js";import W from"./CreateWorkflow.js";import{workflowDeprecation as C}from"./deprecationUtils.js";import F from"./UpdateWorkflow.js";import{whenEditorLayerView as E}from"./workflowUtils.js";import I from"../FeatureForm/FeatureFormViewModel.js";import O from"../FeatureTemplates/FeatureTemplatesViewModel.js";import U from"../Sketch/SketchViewModel.js";import A from"../Spinner/SpinnerViewModel.js";const V="esri.widgets.Editor.EditorViewModel",j=n.getLogger(V),M=["create","create-features","update"];function T(t,e,a){j.error(new i(t,e,a))}function S(t,e){return t?t.find((t=>t.layer===e)):void 0}let L=class extends(o(s.EventedAccessor)){constructor(t){super(t),this._sketchGraphicsLayer=new y({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this.activeWorkflow=null,this._activityQueue=[],this.editableItems=new a,this.failures=[],this.attachmentsViewModel=new b({abilities:{editing:!0}}),this.featureFormViewModel=new I,this.featureTemplatesViewModel=new O,this.sketchViewModel=new U({layer:this._sketchGraphicsLayer}),this.spinnerViewModel=new A,this.pageStack=[],this.showDiscardPrompt=()=>Promise.resolve(),this._candidateCommitted=!1,this.back=async()=>{const t=this.activeWorkflow;if(t&&this.canGoBack){if(this.hasPendingEdits)try{await this.showDiscardPrompt()}catch(e){return}t.hasPreviousStep?await t.previous({cancelCurrentStep:!0}):await this.cancelWorkflow({force:!0})}},this.save=()=>{const{featureFormViewModel:t}=this;t.submit(),!t.submittable||t.validateContingencyConstraints(t.getValues(),{includeIncompleteViolations:!0}).length>0||this.activeWorkflow?.commit()},this.selectFeature=(t,e=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.edits.feature=t,e&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.handles.add([p((()=>{const t=this.view?.map?.editableLayers.filter((({parent:t,visible:e})=>t&&"visible"in t?e&&t.visible:e)),e=this.view?.allLayerViews,a=e?.filter((e=>!!t?.includes(e.layer)&&!e.suspended));return[t,a,this.layerInfos,this.allowedWorkflows]}),(()=>this._updateEditableItems()),w),c((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),c((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),u((()=>this.view?.map),(t=>{t.add(this._sketchGraphicsLayer)}),w),p((()=>this.editableItems.toArray()),(()=>{const{activeWorkflow:t}=this;if(this.refreshCreationTemplates(),!t)return;const{stepId:e}=t;"create"!==t.type?"update"===t.type&&("awaiting-feature-to-update"===e&&!this.canUpdate||"awaiting-update-feature-candidate"===e&&!t.data.candidates.some((t=>{const e=this.editableItems.find((e=>e.layer===t.layer));return e&&e.supports.includes("update")})))&&this._cancelWorkflow():"awaiting-feature-creation-info"!==e||this.canCreate||this._cancelWorkflow()})),p((()=>this.page),((t,e)=>{const a=this.pageStack.slice(),r=a.indexOf(t);-1===r&&e?a.push(e):a.splice(r),this.pageStack=a})),u((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1))])}destroy(){this._cancelWorkflow().then((()=>{this.view?.map&&this.view.map.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=l(this._updateEditableItemsTask)}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(t){t&&0!==t.length||(t=[...M]),this._set("allowedWorkflows",t)}get canCreate(){return this.editableItems.some((t=>t.supports.includes("create")))}get canUpdate(){return this.editableItems.some((t=>t.supports.includes("update")||t.supports.includes("delete")||t.attachmentsOnUpdateEnabled))}get labelOptions(){return this.sketchViewModel.labelOptions}set labelOptions(t){this.sketchViewModel.labelOptions=t}set layerInfos(t){t?.some((t=>("allowAttachments"in t&&r(j,"Property: layerInfo.allowAttachments",{replacement:"layerInfo.attachmentsOnCreateEnabled or layerInfo.attachmentsOnUpdateEnabled",version:"4.26"}),!0))),this._set("layerInfos",t)}get snappingOptions(){return this.sketchViewModel.snappingOptions}set snappingOptions(t){this.sketchViewModel.snappingOptions=t}get state(){if(!this.get("view.ready")||0===this.editableItems.length)return"disabled";const t=this.attachmentsViewModel.mode;if("add"===t)return"adding-attachment";if("edit"===t)return"editing-attachment";const{activeWorkflow:e}=this;return e?e.stepId:"ready"}get syncing(){return this._activityQueue.length>0}get updating(){return this.updatingHandles.updating}get tooltipOptions(){return this.sketchViewModel.tooltipOptions}set tooltipOptions(t){this.sketchViewModel.tooltipOptions=t}set view(t){this.sketchViewModel.view=t,this.spinnerViewModel.view=t,this._set("view",t)}get page(){const{activeWorkflow:t,state:e}=this;return"awaiting-feature-to-update"===e||"awaiting-feature-to-create"===e||"create-features"===t?.type&&0===t.pendingFeatures.length?"ready":e??"disabled"}get selectedTemplateItem(){const{activeWorkflow:t}=this;if("create-features"===t?.type&&0===t.pendingFeatures.length){const e=t.data.creationInfo?.template;if(!e)return;for(const t of this.featureTemplatesViewModel.items)if("findByTemplate"in t){const a=t.findByTemplate(e);if(a)return a}else if(t.template===e)return t}}get featureFormDisabled(){const{activeWorkflow:t}=this;return"update"===t?.type&&!1===t?.data.editableItem?.attributeUpdatesEnabled}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:t}=this;return!!t&&"update"===t.type&&t.data.editableItem.supports.includes("delete")}get hasPendingEdits(){const{activeWorkflow:t}=this;return!!t&&("create"===t.type||"create-features"===t.type&&(t.numPendingFeatures>0||!!t.data.upload||!!t.data.creationInfo?.geometryToPlace)||"editing-existing-feature"===t.stepId&&t.data.edits.modified)}async startCreateWorkflowAtFeatureTypeSelection(){if(C(j,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await h((()=>!this.updating)),!this.canCreate)return void T("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createCreateWorkflow();await t.start(),this._set("activeWorkflow",t)}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateWorkflowAtFeatureCreation(t){if(C(j,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await h((()=>!this.updating)),!this.canCreate)return void T("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow("awaiting-feature-to-create");e.data.creationInfo=t,await e.start(),this._set("activeWorkflow",e)}async startCreateFeaturesWorkflowAtFeatureCreation(t){return this.startCreateFeaturesWorkflow(t,"creating-features")}async startCreateFeaturesWorkflow(t,e="awaiting-feature-creation-info"){if(await h((()=>!this.updating)),!this.canCreate)throw new i("editing:unsupported-workflow","Creating features is unsupported or disabled.");await this._cancelWorkflow();const a=this._createCreateFeaturesWorkflow(t,e);await a.start(),this._set("activeWorkflow",a)}async startCreateWorkflowAtFeatureEdit(t){if(C(j,"startCreateWorkflowAtFeatureEdit"),await h((()=>!this.updating)),!this.canCreate)return void T("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow("editing-new-feature");e.data.edits.feature=t,await e.start(),this._set("activeWorkflow",e)}async startUpdateWorkflowAtFeatureSelection(){if(await h((()=>!this.updating)),!this.canUpdate)return void T("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createUpdateWorkflow();await t.start(),this._set("activeWorkflow",t)}async startUpdateWorkflowAtMultipleFeatureSelection(t){if(await h((()=>!this.updating)),!this.canUpdate)return void T("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("awaiting-update-feature-candidate");e.data.candidates=t,await e.start(),this._set("activeWorkflow",e)}async startUpdateWorkflowAtFeatureEdit(t){if(await h((()=>!this.updating)),!this.canUpdate)return void T("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("editing-existing-feature");e.data.edits.feature=t,await e.start(),this._set("activeWorkflow",e)}async deleteFeatureFromWorkflow(){const{activeWorkflow:t}=this;t&&"update"===t.type?(await this._delete(t.data.edits.feature),await t.reset()):T("editing:unsupported-workflow","Deleting requires an active update workflow.")}async cancelWorkflow(t){return this._cancelWorkflow({warn:!0,...t})}findEditableItemForLayer(t){const e="subtype-sublayer"===t.type?t.parent:t;return this.editableItems.find((t=>t.layer===e))}refreshCreationTemplates(){const t=[];for(const{layer:e,supports:a}of this.editableItems)e.loaded&&a.includes("create")&&t.push(e);this.featureTemplatesViewModel.layers=t}async _updateEditableItems(){l(this._updateEditableItemsTask);const t=e((async t=>{const e=this.view?.allLayerViews,r=this.view?.map?.editableLayers;if(!e||!r)return;const i=new Set(r),s=r?.filter((t=>{const e=g(t)?.operations;return!(!t.visible||!e?.supportsAdd||e?.supportsQuery)})),o=e.filter((t=>i.has(t.layer))),n=[];for(const{layer:a,suspended:p}of o.reverse())if("subtype-group"===a.type){await a.loadAll(),d(t);for(let t=a.sublayers.length-1;t>=0;--t)n.push(this._makeEditableItemForLayer(a.sublayers.at(t),p))}else n.push(this._makeEditableItemForLayer(a,p));for(const a of s.reverse())if("subtype-group"===a.type){await a.loadAll(),d(t);for(const t of a.sublayers)n.push(this._makeEditableItemForLayer(t,!1))}else n.push(this._makeEditableItemForLayer(a,!1));if(t.aborted)return;const l=this.editableItems;this.editableItems=new a(n),l.destroy()}));this.updatingHandles.addPromise(t.promise),this._updateEditableItemsTask=t}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t&&t.warn&&T("editing:no-active-workflow","There is no active workflow to cancel."));if(!t||!1!==t.force)return this.emit("workflow-cancel"),this._set("activeWorkflow",null),void await e.cancel(t);await e.cancel(t),this._set("activeWorkflow",null)}_createCreateFeaturesWorkflow(t,e){return _.create(this,t,e,((t,e,a)=>this._applyEdits(t,e,a)),((t,e)=>this._addAttachments(t,e)))}_createCreateWorkflow(t){return W.create(this,t,((t,e,a)=>this._applyEdits(t,e,a)))}_createUpdateWorkflow(t){return F.create(this,t,((t,e)=>this._applyEdits(t,e)))}async _delete(t){const e=t?.sourceLayer;e&&"applyEdits"in e&&await this._applyEdits(e,{deleteFeatures:[t]})}_addAttachments(t,e){const a=[];return e?.forEach((e=>a.push(this._addAttachment(t,e.feature,e.attachment)))),Promise.all(a)}async _addAttachment(t,e,a){let r=null;if("geojson"===t.type||"scene"===t.type||"oriented-imagery"===t.type)throw new i("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation((async()=>(r=await(t.addAttachment?.(e,a).catch((t=>{throw t?.error||t})))??null,r))),r}async _applyEdits(t,e,a){let r=null;const i=t.url?await k(t.url):null,s={returnServiceEditsOption:(!i||!v(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{if(g(t)?.operations.supportsQuery){const a=await E(this.view,t);return r=await t.applyEdits(e,s),await h((()=>!a.updating)),r}return r=await t.applyEdits(e,s),r})),r}_queueOperation(t){this._activityQueue.push(t),this.notifyChange("syncing");const e=(t,e)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)};return t().then((t=>{if("error"in t&&t.error)throw t.error;if("addFeatureResults"in t){const{addFeatureResults:e,deleteFeatureResults:a,updateFeatureResults:r}=t,i=e.find((t=>!!t.error))||r.find((t=>!!t.error))||a.find((t=>!!t.error));if(i)throw i.error}return t})).catch((a=>{T("editing:operation-error","An error occurred.",{error:a});const r={error:a,retry:()=>(e(r,this.failures),this._queueOperation(t)),cancel:()=>{e(r,this.failures)}};this._set("failures",[...this.failures,r])})).then((()=>{e(t,this._activityQueue),this.notifyChange("syncing")}))}_makeEditableItemForLayer(t,e=!0){const a=g(t),r=a?.operations,i=S(this.layerInfos,t),s=this.allowedWorkflows,o=s.includes("create")||s.includes("create-features"),n=s.includes("update"),l=t=>!i||!1!==i.enabled&&!1!==i[t],d=o&&!!r?.supportsAdd&&l("addEnabled"),p=n&&!!r?.supportsUpdate&&l("updateEnabled"),c=n&&!!r?.supportsDelete&&l("deleteEnabled"),u=[];e||(d&&u.push("create"),p&&u.push("update"),c&&u.push("delete"));const h=p&&(!i||!1!==i.attributeUpdatesEnabled),w=p&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),f=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:t,supports:u,attributeUpdatesEnabled:h,geometryUpdatesEnabled:w,hasAttachments:f,attachmentsOnCreateEnabled:f&&o&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:f&&(!i||!1!==i.attachmentsOnUpdateEnabled)}}};t([f({readOnly:!0})],L.prototype,"activeWorkflow",void 0),t([f({readOnly:!0})],L.prototype,"_activityQueue",void 0),t([f({value:[...M]})],L.prototype,"allowedWorkflows",null),t([f({readOnly:!0})],L.prototype,"canCreate",null),t([f({readOnly:!0})],L.prototype,"canUpdate",null),t([f()],L.prototype,"editableItems",void 0),t([f({readOnly:!0})],L.prototype,"failures",void 0),t([f()],L.prototype,"attachmentsViewModel",void 0),t([f()],L.prototype,"featureFormViewModel",void 0),t([f()],L.prototype,"featureTemplatesViewModel",void 0),t([f()],L.prototype,"labelOptions",null),t([f()],L.prototype,"layerInfos",null),t([f()],L.prototype,"sketchViewModel",void 0),t([f()],L.prototype,"snappingOptions",null),t([f()],L.prototype,"spinnerViewModel",void 0),t([f()],L.prototype,"state",null),t([f({readOnly:!0})],L.prototype,"syncing",null),t([f()],L.prototype,"updating",null),t([f()],L.prototype,"tooltipOptions",null),t([f()],L.prototype,"view",null),t([f()],L.prototype,"pageStack",void 0),t([f()],L.prototype,"showDiscardPrompt",void 0),t([f()],L.prototype,"_candidateCommitted",void 0),t([f()],L.prototype,"page",null),t([f()],L.prototype,"selectedTemplateItem",null),t([f()],L.prototype,"featureFormDisabled",null),t([f()],L.prototype,"canGoBack",null),t([f()],L.prototype,"shouldShowDeleteButton",null),t([f()],L.prototype,"hasPendingEdits",null),L=t([m(V)],L);const P=L;export{P as default};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
+ */
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Accessor.js";import{createTask as r}from"../../core/asyncUtils.js";import{isAbortError as o,throwIfAborted as s,createAbortError as a,createDeferred as n}from"../../core/promiseUtils.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import c from"../../geometry/Mesh.js";import u from"../../geometry/Point.js";import p from"../../geometry/SpatialReference.js";let m=class extends t{constructor(){super({}),this.data=null,this._uploadTask=null}destroy(){this.cancel()}get state(){const e=this._uploadTask;return e?e.finished?e.error?o(e.error)?"cancelled":"error":"success":"pending":"default"}get result(){return this._uploadTask?.value??null}get error(){return this._uploadTask?.error??null}start(){this.cancel(),this._uploadTask=r((async e=>{const t=await d();if(s(e),!t)throw a();this.data=t,await f(t),s(e);const r=URL.createObjectURL(t),o=await c.createFromGLTF(new u({x:0,y:0,z:0,spatialReference:p.WebMercator}),r,{geographic:!1,useTransform:!0});return URL.revokeObjectURL(r),s(e),o}))}cancel(){this._uploadTask?.abort(),this._uploadTask=null,this.data=null}};async function d(){const e=n(),t=document.createElement("input");function r(){window.removeEventListener("focus",r),setTimeout((()=>{const{files:r}=t;if(!r||0===r.length)return e.resolve(null)}),1e3)}return t.type="file",t.accept=".glb, .gltf",t.addEventListener("change",(()=>{const{files:r}=t;return r&&0!==r.length?e.resolve(r[0]):e.resolve(null)})),window.addEventListener("focus",r),t.click(),e.promise}function f(e,t=1e7){const r=1e3*(8*e.size)/t;return console.log(`Simulating upload time of ${r/1e3}s`),new Promise((e=>setTimeout(e,r)))}e([i()],m.prototype,"state",null),e([i()],m.prototype,"result",null),e([i()],m.prototype,"error",null),e([i()],m.prototype,"data",void 0),e([i()],m.prototype,"_uploadTask",void 0),m=e([l("esri.widgets.Editor.Upload")],m);const h=m;export{h as default};
@@ -0,0 +1,4 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
+ */
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Graphic.js";import"../../core/has.js";import{handlesGroup as t}from"../../core/handleUtils.js";import{removeMaybe as i}from"../../core/maybe.js";import{whenOrAbort as n,eachAlways as r}from"../../core/promiseUtils.js";import{watch as a,initial as s,whenOnce as l}from"../../core/reactiveUtils.js";import{px2pt as o}from"../../core/screenUtils.js";import{diff as c}from"../../core/accessorSupport/diffUtils.js";import{calculateTolerance as u}from"../../renderers/support/clickToleranceUtils.js";import{meterIn as p}from"../../renderers/support/lengthUtils.js";import{getTransformationType as y,TransformationType as d}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getRotationAngle as f,getSize as m}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{to3D as h}from"../../symbols/support/symbolConversion.js";import{getDisplayedSymbol as g}from"../../symbols/support/symbolUtils.js";import{GraphicState as b}from"../../views/3d/layers/graphics/GraphicState.js";import{createQueryGeometry as w}from"../../views/support/drapedUtils.js";import{hitTestSelectSimilarDistance as v,filterGraphicHits as S}from"../../views/support/hitTestSelectUtils.js";function I(e){const t=e.sourceLayer;if(!t||"feature"!==t.type||!x(t.renderer))return{rotation:null,size:null};let i=null,n=null;const r=t.renderer.getVisualVariablesForType("rotation").filter((t=>(!t.axis||"heading"===t.axis)&&t.field&&!t.valueExpression&&null!=f(t,e)));1===r.length&&(i=j(r[0],t));const a=t.renderer.getVisualVariablesForType("size").filter((t=>t.field&&!t.useSymbolValue&&!t.valueExpression&&y(t)===d.RealWorldSize&&null!=m(t,e)));return 1===a.length&&(n=z(a[0],t)),{rotation:i,size:n}}function j(e,t){const i="heading"===(e.axis||"heading")&&"arithmetic"===e.rotationType?-1:1,n=e.field,r=t.fields&&t.fields.filter((e=>e.name===n)),a=r&&1===r.length?r[0].type:"double",s={initial:0,current:0};return{field:n,fieldType:a,getDefault:()=>Promise.resolve(0),getValue:e=>(s.current=s.initial-i*e,F((s.current+360)%360,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,rotationType:e.rotationType??"geographic"}}function U(e,t){switch(t){case"width":return e[0];case"depth":return e[1];case"height":return e[2];default:return e[2]||e[1]||e[0]}}async function V(e,t,i){if(null==t)return 0;const{symbol:n}=h(t);if(null==n||"web-style"===n.type||"cim"===n.type)return 0;const r=n.symbolLayers.getItemAt(0);if(!r)return 0;switch(r.type){case"icon":{const{computeIconLayerResourceSize:e}=await import("../../symbols/support/symbolLayerUtils.js");return r.size||Math.min(W.icon,(await e(r,W.icon))[0])||W.icon}case"text":return r.size||W.text;case"line":return r.size||W.line;case"object":{const{computeObjectLayerResourceSize:t}=await import("../../symbols/support/symbolLayerUtils.js");return U(await t(r,e.scale/W.viewScaleSizeFactor),i)}case"path":return(null!=r.width?r.width:r.height)||e.scale/W.viewScaleSizeFactor;case"extrude":return r.size||e.scale/W.viewScaleSizeFactor;default:return 0}}function z(e,t){const i=e.field,n=e.axis,r=t.fields&&t.fields.filter((e=>e.name===i)),a=r&&1===r.length?r[0].type:"double",s={updating:!1,initial:0,current:0},l=p[e.valueUnit]??1;let o;return o="area"===e.valueRepresentation?e=>(e*l/2)**2*Math.PI:"radius"===e.valueRepresentation||"distance"===e.valueRepresentation?e=>e*l/2:e=>e*l,{field:i,fieldType:a,getDefault:async(e,t)=>F(o(await V(t,e,n)),a),getValue:(e,t)=>(s.initial||(s.initial=t.pixelSizeAt(t.center)),s.current=s.initial*e,F(s.current,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,displayUnit:N(e.valueUnit),axis:e.axis}}function F(e,t){switch(t){case"small-integer":case"integer":case"long":return Math.round(e);case"double":case"single":return e;default:return 0}}function x(e){switch(e?.type){case"class-breaks":case"simple":case"unique-value":case"dot-density":case"dictionary":case"pie-chart":return!0;default:return!1}}async function T(e,t){const i=await g(e,{useSourceLayer:!0,ignoreGraphicSymbol:!0,webStyleCache:t});null!=c(e.symbol,i)&&(e.symbol=i)}function L(e){if(!e)throw new Error("no geometry type");if("mesh"===e||"multipatch"===e)throw new Error("Mesh and Multipatch not supported");return e}async function E(e,t,i,n){await M(e,t,n);const r=e.on("create",(async r=>{if("cancel"===r.state)return M(e,t,n);if("complete"===r.state){const e=r.graphic;e.sourceLayer||(e.sourceLayer=t.layer),e.attributes||(e.attributes={...t.template.prototype.attributes}),await T(e,n),i(e)}}));return{remove:()=>{r.remove(),e.cancel()}}}async function M(e,t,i){const n=t.layer,r={...t.template.prototype.attributes};await R(e,n,r,i);const a={graphicProperties:{attributes:r,sourceLayer:n},hasZ:n.capabilities.data.supportsZ};return e.layer.elevationInfo=n.elevationInfo,e.create(L(n.geometryType),a)}async function R(t,i,n,r){const a=new e({sourceLayer:i,attributes:n}),{rotation:s,size:l}=I(a);let o=await g(a,{useSourceLayer:!0,webStyleCache:r}),c=!1;for(const e of[l,s]){if(null==e)continue;null==n[e.field]&&(n[e.field]=await e.getDefault(o,t.view),c=!0)}switch(c&&(o=await g(a,{useSourceLayer:!0,webStyleCache:r})),o?.type){case"simple-fill":case"polygon-3d":t.polygonSymbol=o;break;case"simple-line":case"line-3d":t.polylineSymbol=o;break;case"simple-marker":case"picture-marker":case"point-3d":case"cim":t.pointSymbol=o}A(t.tooltipOptions,l,s)}function A(e,t,i){e.visualVariables=null!=t||null!=i?{size:null!=t?{unit:t.displayUnit,axis:t.axis,valueType:t.fieldType}:null,rotation:null!=i?{valueType:i.fieldType,rotationType:i.rotationType??"geographic"}:null}:null}function O(e,t){return e?e.find((e=>e.layer===t)):void 0}async function k(e,t,i,a){if(0===e.length)return[];const{updatable:s,graphicsByLayer:l}=await i.async((async()=>{const{results:r}=await n(v(t,i),a),s=new Map,l=e=>{const t=e.layer,i=s.get(t);if(!i){const e=new Array;return s.set(t,e),e}return i};S(r).forEach((({graphic:e})=>l(e).push(e)));const o=e.filter((({supports:e,layer:t})=>e.includes("update")&&s.has(t)));return 0!==o.length&&i.stopPropagation(),{updatable:o,graphicsByLayer:s}}));return n(r(s.map((async({layer:e})=>{const{objectIdField:t}=e,i="displayField"in e?e.displayField:null,n=[t];null!=i&&e.fieldsIndex.has(i)&&n.push(i);const r=l.get(e);if(!!r.some((e=>n.some((t=>!(t in e.attributes)))))){const t=e.createQuery();return t.outFields=n,t.returnGeometry=!1,t.objectIds=r.map((e=>e.getObjectId())),e.queryFeatures(t,{signal:a}).then((({features:e})=>e))}return r}))),a)}async function C(e,t,i,a){if(0===e.length)return[];let s=null;const l=await i.async((async()=>{const{results:r}=await n(t.hitTest(i),a);if(0===r.length)return[];const l=new Set;s=S(r),s.forEach((({graphic:e})=>e&&l.add(e.layer)));const o=e.items.filter((({layer:e,supports:t,attachmentsOnUpdateEnabled:i})=>l.has(e)&&(t.includes("update")||t.includes("delete")||i)));return o.length>0&&i.stopPropagation(),o}));return n(r(l.map((({layer:e})=>{const n=e.objectIdField,r="displayField"in e?e.displayField:null,l=[n];null!=r&&e.fieldsIndex.has(r)&&l.push(r);const o=e.createQuery();o.outFields=l,o.returnGeometry=!1;const c="renderer"in e?u({renderer:e.renderer,event:i}):0;return o.geometry=w(i.mapPoint,c,t),o.outSpatialReference=t.spatialReference,e.queryFeatures(o,{signal:a}).then((({features:t})=>(s?.forEach((({graphic:i})=>{i.layer!==e||t.some((e=>e.getObjectId()===i.getObjectId()))||t.push(i)})),t)))}))),a)}async function G(e,t,i,n){switch(t.type){case"3d":return k(e,t,i,n);case"2d":return C(e,t,i,n)}}async function P(e,t,i){const{sourceLayer:n}=e,r=n.createQuery();return r.objectIds=[e.getAttribute(n.objectIdField)],r.outFields=["*"],r.outSpatialReference=t.spatialReference,r.returnM=n.capabilities.data.supportsM,r.returnZ=n.capabilities.data.supportsZ,(await n.queryFeatures(r,{signal:i})).features[0]}async function q(e,t,i,n,r){let a=!1;const{rotation:s,size:l}=n;[s,l].forEach((async i=>{if(null==i)return;const n=t.attributes[i.field];if(null!=n)i.initValue(n);else{const n=await i.getDefault(t.symbol,e.view);i.initValue(n),t.setAttribute(i.field,n),a=!0}})),a&&await T(t,r);const o={multipleSelectionEnabled:!1};return"point"===i.geometryType&&(o.enableRotation=null!=s,o.enableScaling=null!=l),A(e.tooltipOptions,l,s),e.layer.elevationInfo=i.elevationInfo,e.update(t,o)}function D(e){return null==e||"rotate-start"!==e.type&&"rotate"!==e.type&&"rotate-stop"!==e.type?null:e}function Z(e){return null==e||"scale-start"!==e.type&&"scale"!==e.type&&"scale-stop"!==e.type?null:e}async function Q(e,t,i,n,r){if(null==t.geometry||"point"!==t.geometry?.type)return;const a=n.rotation,s=D(i.toolEventInfo);if(null!=a&&null!=s)if("rotate-stop"===s.type)a.isUpdatingInteractively=!1,a.initValue();else{a.isUpdatingInteractively=!0;const{field:i,getValue:n}=a;t.attributes[i]=n(s.angle,e)}const l=n.size,o=Z(i.toolEventInfo);if(null!=l&&null!=o)if("scale-stop"===o.type)l.isUpdatingInteractively=!1,l.initValue();else{l.isUpdatingInteractively=!0;const{field:i,getValue:n}=l;t.attributes[i]=n(o.xScale,e)}await T(t,r)}async function B(e,n,r,o,c,u){const p=e.clone();await T(p,u),o.map.add(r.layer),r.layer.add(p);const y=e.sourceLayer,d=_(o,y),f=()=>{const t=e.layer,i=e.attributes[t.objectIdField];return d.then((e=>e.setVisibility?.(i,!1)),(()=>{})),{remove(){d.then((e=>e.setVisibility?.(i,!0)),(()=>{}))}}};let m=null,h=null;if("3d"===o.type){const e=new b({graphic:p});m=t([o.trackGraphicState(e),a((()=>e.displaying),(e=>{h=e?f():i(h)}),s)])}else h=f();await q(r,p,y,n,u);let g=null;d.then((e=>g=e),(()=>{}));const w=n.size,v=n.rotation,S=a((()=>e.attributes),(async e=>{let t=!1;for(const i in e){const n=e[i];n!==p.attributes[i]&&(p.setAttribute(i,n),null==w||w.isUpdatingInteractively||w.field!==i||w.initValue(n),null==v||v.isUpdatingInteractively||v.field!==i||v.initValue(n),(null==g||g.requiredFields.includes(i))&&(t=!0))}t&&await T(p,u)})),I=r.on("update",(async e=>{const t=e.graphics[0];if("complete"===e.state)return q(r,t,y,n,u);await Q(o,t,e,n,u),c(t.clone(),e)})),j=r.on(["undo","redo"],(async e=>{c(e.graphics[0].clone(),e)})),U=()=>{};return{interactive:{remove(){j.remove(),I.remove(),r.cancel(),S&&S.remove(),this.remove=U}},visual:{remove(){i(h),_(o,y).then((e=>l((()=>!e.updating)))).then((()=>{i(m),r.layer.remove(p),this.remove=U}))}}}}const W={icon:o(24),text:o(12),line:o(1),viewScaleSizeFactor:100};function H(e,t,i){let n=!1;return e.filter((e=>!!n||(n=e===t,n))).map((e=>i[e]()))}function J(e){if(1!==e.length)return null;const t=e[0];if("items"in t){const e=t;return 1===e.items.length?e.items[0]:null}return t}function K(e,t){if(e.viewModel.refreshCreationTemplates(),"awaiting-feature-creation-info"===t[0].id){const i=J(e.viewModel.featureTemplatesViewModel.items);null!=i&&(e.creationInfo=i,t.shift())}return t}function N(e){switch(e){case"unknown":case"decimal-degrees":return null;default:return e}}function X(e){e.set({abilities:{editing:!0,operations:{add:!0,update:!0,delete:!0}},filesEnabled:!0,mode:"view"})}function Y(e){const{creationInfo:{layer:t},viewModel:i}=e,n=i.editableItems.find((e=>e.layer===t));if(n)return n.attachmentsOnCreateEnabled;const r=t.capabilities?.data,a=i.layerInfos?.find((e=>e.layer===t));return!(!(r&&"supportsAttachment"in r&&r.supportsAttachment)||a&&(!1===a.allowAttachments||!1===a.attachmentsOnUpdateEnabled))}const $=e=>/-stop/.test(e)||/vertex-/.test(e),_=(e,t)=>{const i="subtype-sublayer"===t.type?t.parent:t;return e.whenLayerView(i)};export{K as avoidFeatureTemplateSelectionWithOnlyOneItem,H as createWorkflowSteps,G as fetchCandidates,P as fetchFullFeature,O as findLayerInfo,I as getVisualVariableAttributes,$ as isTerminalUpdateEventType,X as prepareAttachmentsForCreateWorkflow,E as setUpFeatureAdd,B as setUpGeometryUpdate,Y as shouldShowAttachmentsForCreateWorkflow,W as sizeDefaults,N as sizeVariableUnitToLengthUnit,M as startCreatingNewFeature,q as startUpdatingFeature,T as updateGraphicSymbolWhenRequired,Q as visualVariableInteractiveUpdate,_ as whenEditorLayerView};
5
+ import e from"../../Graphic.js";import"../../core/has.js";import{handlesGroup as t}from"../../core/handleUtils.js";import{removeMaybe as i}from"../../core/maybe.js";import{whenOrAbort as n,eachAlways as r}from"../../core/promiseUtils.js";import{watch as a,initial as s,whenOnce as l}from"../../core/reactiveUtils.js";import{px2pt as o}from"../../core/screenUtils.js";import{diff as c}from"../../core/accessorSupport/diffUtils.js";import{calculateTolerance as u}from"../../renderers/support/clickToleranceUtils.js";import{meterIn as p}from"../../renderers/support/lengthUtils.js";import{getTransformationType as y,TransformationType as d}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getRotationAngle as f,getSize as m}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{to3D as h}from"../../symbols/support/symbolConversion.js";import{getDisplayedSymbol as g}from"../../symbols/support/symbolUtils.js";import{GraphicState as b}from"../../views/3d/layers/graphics/GraphicState.js";import{createQueryGeometry as w}from"../../views/support/drapedUtils.js";import{hitTestSelectSimilarDistance as v,filterGraphicHits as S}from"../../views/support/hitTestSelectUtils.js";function I(e){const t=e.sourceLayer;if(!t||"feature"!==t.type||!F(t.renderer))return{rotation:null,size:null};let i=null,n=null;const r=t.renderer.getVisualVariablesForType("rotation").filter((t=>(!t.axis||"heading"===t.axis)&&t.field&&!t.valueExpression&&null!=f(t,e)));1===r.length&&(i=j(r[0],t));const a=t.renderer.getVisualVariablesForType("size").filter((t=>t.field&&!t.useSymbolValue&&!t.valueExpression&&y(t)===d.RealWorldSize&&null!=m(t,e)));return 1===a.length&&(n=T(a[0],t)),{rotation:i,size:n}}function j(e,t){const i="heading"===(e.axis||"heading")&&"arithmetic"===e.rotationType?-1:1,n=e.field,r=t.fields&&t.fields.filter((e=>e.name===n)),a=r&&1===r.length?r[0].type:"double",s={initial:0,current:0};return{field:n,fieldType:a,getDefault:()=>Promise.resolve(0),getValue:e=>(s.current=s.initial-i*e,z((s.current+360)%360,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,rotationType:e.rotationType??"geographic"}}function U(e,t){switch(t){case"width":return e[0];case"depth":return e[1];case"height":return e[2];default:return e[2]||e[1]||e[0]}}async function V(e,t,i){if(null==t)return 0;const{symbol:n}=h(t);if(null==n||"web-style"===n.type||"cim"===n.type)return 0;const r=n.symbolLayers.getItemAt(0);if(!r)return 0;switch(r.type){case"icon":{const{computeIconLayerResourceSize:e}=await import("../../symbols/support/symbolLayerUtils.js");return r.size||Math.min(W.icon,(await e(r,W.icon))[0])||W.icon}case"text":return r.size||W.text;case"line":return r.size||W.line;case"object":{const{computeObjectLayerResourceSize:t}=await import("../../symbols/support/symbolLayerUtils.js");return U(await t(r,e.scale/W.viewScaleSizeFactor),i)}case"path":return(null!=r.width?r.width:r.height)||e.scale/W.viewScaleSizeFactor;case"extrude":return r.size||e.scale/W.viewScaleSizeFactor;default:return 0}}function T(e,t){const i=e.field,n=e.axis,r=t.fields&&t.fields.filter((e=>e.name===i)),a=r&&1===r.length?r[0].type:"double",s={updating:!1,initial:0,current:0},l=p[e.valueUnit]??1;let o;return o="area"===e.valueRepresentation?e=>(e*l/2)**2*Math.PI:"radius"===e.valueRepresentation||"distance"===e.valueRepresentation?e=>e*l/2:e=>e*l,{field:i,fieldType:a,getDefault:async(e,t)=>z(o(await V(t,e,n)),a),getValue:(e,t)=>(s.initial||(s.initial=t.pixelSizeAt(t.center)),s.current=s.initial*e,z(s.current,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,displayUnit:N(e.valueUnit),axis:e.axis}}function z(e,t){switch(t){case"small-integer":case"integer":case"long":return Math.round(e);case"double":case"single":return e;default:return 0}}function F(e){switch(e?.type){case"class-breaks":case"simple":case"unique-value":case"dot-density":case"dictionary":case"pie-chart":return!0;default:return!1}}async function x(e,t){const i=await g(e,{useSourceLayer:!0,ignoreGraphicSymbol:!0,webStyleCache:t});null!=c(e.symbol,i)&&(e.symbol=i)}function L(e){if(!e)throw new Error("no geometry type");return"multipatch"===e?"mesh":e}async function E(e,t,i,n){await R(e,t,n);const r=e.on("create",(async r=>{if("cancel"===r.state)return R(e,t,n);if("complete"===r.state){const e=r.graphic;e.sourceLayer||(e.sourceLayer=t.layer),e.attributes||(e.attributes={...t.template.prototype.attributes}),await x(e,n),i(e)}}));return{remove:()=>{r.remove(),e.cancel()}}}async function R(e,t,i){const n=t.layer,r={...t.template.prototype.attributes};await M(e,n,r,i);const a={graphicProperties:{attributes:r,sourceLayer:n},hasZ:n.capabilities.data.supportsZ,geometryToPlace:t.geometryToPlace??void 0};return e.layer.elevationInfo=n.elevationInfo,e.create(L(n.geometryType),a)}async function M(t,i,n,r){const a=new e({sourceLayer:i,attributes:n}),{rotation:s,size:l}=I(a);let o=await g(a,{useSourceLayer:!0,webStyleCache:r}),c=!1;for(const e of[l,s]){if(null==e)continue;null==n[e.field]&&(n[e.field]=await e.getDefault(o,t.view),c=!0)}switch(c&&(o=await g(a,{useSourceLayer:!0,webStyleCache:r})),o?.type){case"simple-fill":case"polygon-3d":t.polygonSymbol=o;break;case"simple-line":case"line-3d":t.polylineSymbol=o;break;case"simple-marker":case"picture-marker":case"point-3d":case"cim":t.pointSymbol=o}A(t.tooltipOptions,l,s)}function A(e,t,i){e.visualVariables=null!=t||null!=i?{size:null!=t?{unit:t.displayUnit,axis:t.axis,valueType:t.fieldType}:null,rotation:null!=i?{valueType:i.fieldType,rotationType:i.rotationType??"geographic"}:null}:null}function O(e,t){return e?e.find((e=>e.layer===t)):void 0}async function k(e,t,i,a){if(0===e.length)return[];const{updatable:s,graphicsByLayer:l}=await i.async((async()=>{const{results:r}=await n(v(t,i),a),s=new Map,l=e=>{const t=e.layer,i=s.get(t);if(!i){const e=new Array;return s.set(t,e),e}return i};S(r).forEach((({graphic:e})=>l(e).push(e)));const o=e.filter((({supports:e,layer:t})=>e.includes("update")&&s.has(t)));return 0!==o.length&&i.stopPropagation(),{updatable:o,graphicsByLayer:s}}));return n(r(s.map((async({layer:e})=>{const{objectIdField:t}=e,i="displayField"in e?e.displayField:null,n=[t];null!=i&&e.fieldsIndex.has(i)&&n.push(i);const r=l.get(e);if(!!r.some((e=>n.some((t=>!(t in e.attributes)))))){const t=e.createQuery();return t.outFields=n,t.returnGeometry=!1,t.objectIds=r.map((e=>e.getObjectId())),e.queryFeatures(t,{signal:a}).then((({features:e})=>e))}return r}))),a)}async function P(e,t,i,a){if(0===e.length)return[];let s=null;const l=await i.async((async()=>{const{results:r}=await n(t.hitTest(i),a);if(0===r.length)return[];const l=new Set;s=S(r),s.forEach((({graphic:e})=>e&&l.add(e.layer)));const o=e.items.filter((({layer:e,supports:t,attachmentsOnUpdateEnabled:i})=>l.has(e)&&(t.includes("update")||t.includes("delete")||i)));return o.length>0&&i.stopPropagation(),o}));return n(r(l.map((({layer:e})=>{const n=e.objectIdField,r="displayField"in e?e.displayField:null,l=[n];null!=r&&e.fieldsIndex.has(r)&&l.push(r);const o=e.createQuery();o.outFields=l,o.returnGeometry=!1;const c="renderer"in e?u({renderer:e.renderer,event:i}):0;return o.geometry=w(i.mapPoint,c,t),o.outSpatialReference=t.spatialReference,e.queryFeatures(o,{signal:a}).then((({features:t})=>(s?.forEach((({graphic:i})=>{i.layer!==e||t.some((e=>e.getObjectId()===i.getObjectId()))||t.push(i)})),t)))}))),a)}async function C(e,t,i,n){switch(t.type){case"3d":return k(e,t,i,n);case"2d":return P(e,t,i,n)}}async function G(e,t,i){const{sourceLayer:n}=e,r=n.createQuery();return r.objectIds=[e.getAttribute(n.objectIdField)],r.outFields=["*"],r.outSpatialReference=t.spatialReference,r.returnM=n.capabilities.data.supportsM,r.returnZ=n.capabilities.data.supportsZ,(await n.queryFeatures(r,{signal:i})).features[0]}async function q(e,t,i,n,r){let a=!1;const{rotation:s,size:l}=n;[s,l].forEach((async i=>{if(null==i)return;const n=t.attributes[i.field];if(null!=n)i.initValue(n);else{const n=await i.getDefault(t.symbol,e.view);i.initValue(n),t.setAttribute(i.field,n),a=!0}})),a&&await x(t,r);const o={multipleSelectionEnabled:!1};return"point"===i.geometryType&&(o.enableRotation=null!=s,o.enableScaling=null!=l),A(e.tooltipOptions,l,s),e.layer.elevationInfo=i.elevationInfo,e.update(t,o)}function D(e){return null==e||"rotate-start"!==e.type&&"rotate"!==e.type&&"rotate-stop"!==e.type?null:e}function Z(e){return null==e||"scale-start"!==e.type&&"scale"!==e.type&&"scale-stop"!==e.type?null:e}async function Q(e,t,i,n,r){if(null==t.geometry||"point"!==t.geometry?.type)return;const a=n.rotation,s=D(i.toolEventInfo);if(null!=a&&null!=s)if("rotate-stop"===s.type)a.isUpdatingInteractively=!1,a.initValue();else{a.isUpdatingInteractively=!0;const{field:i,getValue:n}=a;t.attributes[i]=n(s.angle,e)}const l=n.size,o=Z(i.toolEventInfo);if(null!=l&&null!=o)if("scale-stop"===o.type)l.isUpdatingInteractively=!1,l.initValue();else{l.isUpdatingInteractively=!0;const{field:i,getValue:n}=l;t.attributes[i]=n(o.xScale,e)}await x(t,r)}async function B(e,n,r,o,c,u){const p=e.clone();await x(p,u),o.map.add(r.layer),r.layer.add(p);const y=e.sourceLayer,d=_(o,y),f=()=>{const t=e.layer,i=e.attributes[t.objectIdField];return d.then((e=>e.setVisibility?.(i,!1)),(()=>{})),{remove(){d.then((e=>e.setVisibility?.(i,!0)),(()=>{}))}}};let m=null,h=null;if("3d"===o.type){const e=new b({graphic:p});m=t([o.trackGraphicState(e),a((()=>e.displaying),(e=>{h=e?f():i(h)}),s)])}else h=f();await q(r,p,y,n,u);let g=null;d.then((e=>g=e),(()=>{}));const w=n.size,v=n.rotation,S=a((()=>e.attributes),(async e=>{let t=!1;for(const i in e){const n=e[i];n!==p.attributes[i]&&(p.setAttribute(i,n),null==w||w.isUpdatingInteractively||w.field!==i||w.initValue(n),null==v||v.isUpdatingInteractively||v.field!==i||v.initValue(n),(null==g||g.requiredFields.includes(i))&&(t=!0))}t&&await x(p,u)})),I=r.on("update",(async e=>{const t=e.graphics[0];if("complete"===e.state)return q(r,t,y,n,u);await Q(o,t,e,n,u),c(t.clone(),e)})),j=r.on(["undo","redo"],(async e=>{c(e.graphics[0].clone(),e)})),U=()=>{};return{interactive:{remove(){j.remove(),I.remove(),r.cancel(),S&&S.remove(),this.remove=U}},visual:{remove(){i(h),_(o,y).then((e=>l((()=>!e.updating)))).then((()=>{i(m),r.layer.remove(p),this.remove=U}))}}}}const W={icon:o(24),text:o(12),line:o(1),viewScaleSizeFactor:100};function H(e,t,i){let n=!1;return e.filter((e=>!!n||(n=e===t,n))).map((e=>i[e]()))}function J(e){if(1!==e.length)return null;const t=e[0];if("items"in t){const e=t;return 1===e.items.length?e.items[0]:null}return t}function K(e,t){if(e.viewModel.refreshCreationTemplates(),"awaiting-feature-creation-info"===t[0].id){const i=J(e.viewModel.featureTemplatesViewModel.items);null!=i&&(e.creationInfo=i,t.shift())}return t}function N(e){switch(e){case"unknown":case"decimal-degrees":return null;default:return e}}function X(e){e.set({abilities:{editing:!0,operations:{add:!0,update:!0,delete:!0}},filesEnabled:!0,mode:"view"})}function Y(e){const{creationInfo:t,viewModel:i}=e;if(!t)return!1;const{layer:n}=t,r=i.editableItems.find((e=>e.layer===n));if(r)return r.attachmentsOnCreateEnabled;const a=n.capabilities?.data,s=i.layerInfos?.find((e=>e.layer===n));return!(!(a&&"supportsAttachment"in a&&a.supportsAttachment)||s&&(!1===s.allowAttachments||!1===s.attachmentsOnUpdateEnabled))}const $=e=>/-stop/.test(e)||/vertex-/.test(e),_=(e,t)=>{const i="subtype-sublayer"===t.type?t.parent:t;return e.whenLayerView(i)};export{K as avoidFeatureTemplateSelectionWithOnlyOneItem,H as createWorkflowSteps,C as fetchCandidates,G as fetchFullFeature,O as findLayerInfo,I as getVisualVariableAttributes,$ as isTerminalUpdateEventType,X as prepareAttachmentsForCreateWorkflow,E as setUpFeatureAdd,B as setUpGeometryUpdate,Y as shouldShowAttachmentsForCreateWorkflow,W as sizeDefaults,N as sizeVariableUnitToLengthUnit,R as startCreatingNewFeature,q as startUpdatingFeature,x as updateGraphicSymbolWhenRequired,Q as visualVariableInteractiveUpdate,_ as whenEditorLayerView};
package/widgets/Editor.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{HandleOwnerMixin as t}from"../core/HandleOwner.js";import s from"../core/Logger.js";import{isSome as i}from"../core/maybe.js";import{createDeferred as o}from"../core/promiseUtils.js";import{watch as a,on as n,when as r,initial as l}from"../core/reactiveUtils.js";import{property as c}from"../core/accessorSupport/decorators/property.js";import{cast as d}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import{getDisplayFieldName as m}from"../layers/support/fieldUtils.js";import h from"./Attachments.js";import u from"./FeatureForm.js";import g from"./FeatureTemplates.js";import f from"./Spinner.js";import w from"./Widget.js";import{workflowDeprecation as _}from"./Editor/deprecationUtils.js";import v from"./Editor/EditorViewModel.js";import{ItemList as k}from"./FeatureTemplates/ItemList.js";import{loadCalciteComponents as y}from"./support/componentsUtils.js";import{Heading as b,incrementHeadingLevel as A}from"./support/Heading.js";import M from"./support/SnappingControls.js";import{accessibleHandler as C}from"./support/decorators/accessibleHandler.js";import{messageBundle as F}from"./support/decorators/messageBundle.js";import{vmEvent as W}from"./support/decorators/vmEvent.js";import{tsx as T}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import{SketchTooltipControls as E}from"./support/SketchTooltipControls/SketchTooltipControls.js";import{substitute as S}from"../intl/substitute.js";const j="esri-editor",L=`${j}__panel`,P=`${j}__prompt`,B={base:`${j} esri-widget esri-widget--panel`,message:`${j}__message`,actions:`${j}__actions`,helpMessage:`${j}__help-message`,progressBar:`${j}__progress-bar`,panelToolbar:`${L}-toolbar`,panelContent:`${L}-content`,panelContentMessage:`${L}-content__message`,panelContentSection:`${L}-content__section`,panelContentSectionGroup:`${L}-content__section__group`,panelContentScrimContainer:`${L}-content__scrim-container`,settingsContainer:`${j}__settings`,updateFeaturesActionButtons:`${j}__update-features-action-buttons`,updateFeaturesActionButtonsButton:`${j}__update-features-action-buttons--button`,featureTemplatesContainer:`${j}__feature-templates-container`,ownerAdminNotice:`${j}__owner-admin-notice`,promptContainer:P,promptHeader:`${P}__header`,promptHeading:`${P}__header__heading`,promptMessage:`${P}__message`,promptDivider:`${P}__divider`,promptActions:`${P}__actions`,warningIcon:"esri-icon-notice-triangle",widgetIcon:"esri-icon-edit"},U={undoRedoButtons:!1,snappingControls:!0,snappingControlsElements:{header:!1,enabledToggle:!0,selfEnabledToggle:!0,featureEnabledToggle:!0,layerList:!0},sketchTooltipControls:!0};function I(e){e.focus()}const $="esri.widgets.Editor",O=s.getLogger($);let D=class extends(t(w)){constructor(e,t){super(e,t),this._featureForm=new u,this._attachments=new h({visibleElements:{addSubmitButton:!1,cancelAddButton:!1,cancelUpdateButton:!1,deleteButton:!1,errorMessage:!1,progressBar:!1,updateButton:!1}}),this._featureTemplates=new g({enableListScroll:!1}),this._filterText="",this._prompt=null,this._spinner=new f,this.useDeprecatedCreateWorkflow=!1,this.headingLevel=4,this.iconClass=B.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new v,this.visibleElements={...U},this.EditorPanel=({handleBack:e,heading:t,headingLevel:s,key:i},...o)=>{const{messagesCommon:a,viewModel:n,visibleElements:r}=this,l=n.sketchViewModel,c=n.syncing||this._attachments.submitting;return T("calcite-flow-item",{closable:!1,heading:t,headingLevel:s,key:i,loading:c,onCalciteFlowItemBack:e??void 0},T("div",{key:"panel-toolbar",class:B.panelToolbar},this._renderSettings(),r.undoRedoButtons&&[T("calcite-button",{key:"undo-button",label:a.undo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"undo",scale:"l",disabled:!l.canUndo(),onclick:l.undo.bind(l)},a.undo),T("calcite-button",{key:"redo-button",label:a.redo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"redo",scale:"l",disabled:!l.canRedo(),onclick:l.redo.bind(l)},a.redo)]),...o)},this._showDiscardWarning=()=>{const{messages:e}=this,t="create"===this.activeWorkflow?.type,s=o();return this._prompt={title:e[t?"cancelAddTitle":"cancelEditTitle"],message:e[t?"cancelAddWarningMessage":"cancelEditWarningMessage"],context:"danger",actions:{primary:{label:e[t?"discardFeature":"discardEdits"],action:()=>{s.resolve(),this._clearPrompt()}},secondary:{label:e[t?"continueAdding":"continueEditing"],action:()=>{s.reject(),this._clearPrompt()}}}},s.promise},this._onAttachmentDeleteConfirm=async()=>{const e=this._attachments,{activeWorkflow:t}=this.viewModel;t&&("create-features"===t.type?e.deleteFile():(await e.deleteAttachment(e.viewModel.activeAttachmentInfo),this._clearPrompt()),await t.previous(),this._clearPrompt())},this._onAttachmentsError=e=>{this._prompt={title:this.messages.errorWarningTitle,message:e.message,context:"warning",actions:{primary:{label:this.messagesCommon.form.ok,action:this._clearPrompt}}}},this._clearPrompt=()=>{this._prompt=null},this._onBack=this._onBack.bind(this),this._onSave=this._onSave.bind(this),this._onDelete=this._onDelete.bind(this),this._onToggleUpdateWorkflow=this._onToggleUpdateWorkflow.bind(this),this._onAttachmentAdd=this._onAttachmentAdd.bind(this),this._onAttachmentUpdate=this._onAttachmentUpdate.bind(this),this._onAttachmentDelete=this._onAttachmentDelete.bind(this)}initialize(){const e=()=>this.scheduleRender();this.addHandles([a((()=>A(this.headingLevel)),(e=>{this._featureForm.headingLevel=e,this._featureTemplates.headingLevel=e}),l),n((()=>this.viewModel.featureTemplatesViewModel),"select",(async({item:e,oldItem:t})=>{this.viewModel.activeWorkflow&&await this.viewModel.cancelWorkflow(),e&&e.id!==t?.id&&(this.useDeprecatedCreateWorkflow?this.startCreateWorkflowAtFeatureCreation(e):this.startCreateFeaturesWorkflowAtFeatureCreation(e))})),a((()=>this.viewModel.selectedTemplateItem),(e=>this._featureTemplates.select(e,!1))),n((()=>this.viewModel.activeWorkflow),"cancel-request",(({controller:e})=>{const{messages:t,messagesCommon:s}=this;this._prompt={title:t.cancelRequestTitle,message:t.cancelRequestWarningMessage,context:"danger",actions:{primary:{label:s.form.yes,action:()=>{e.allow(),this._clearPrompt()}},secondary:{label:s.form.no,action:()=>{e.deny(),this._clearPrompt()}}}}})),a((()=>this.viewModel),(e=>{this._featureForm.viewModel=e?.featureFormViewModel??null,this._attachments.viewModel=e?.attachmentsViewModel??null,this._featureTemplates.viewModel=e?.featureTemplatesViewModel??null,this._spinner.viewModel=e?.spinnerViewModel??null,e.showDiscardPrompt=this._showDiscardWarning}),l),a((()=>this.view),((e,t)=>{const s=`editor-${this.id}-spinner`;t?.ui.remove(this._spinner,s),e?.ui.add(this._spinner,{key:s,position:"manual"})}),l),n((()=>this.viewModel?.sketchViewModel),"create",e),r((()=>this.supportingWidgetDefaults),(e=>{this._featureForm.set(e.featureForm),this._attachments.set(e.attachments),this._featureTemplates.set(e.featureTemplates),this.viewModel.sketchViewModel.set(e.sketch)}),l),r((()=>this._attachments?.error),(e=>this._onAttachmentsError(e))),r((()=>this.viewModel?.failures),(e=>{const{messages:t}=this,[{error:s,retry:i,cancel:o}]=e;this._prompt={title:t.errorWarningTitle,message:S(t.errorWarningMessageTemplate,{errorMessage:s.message}),context:"warning",actions:{primary:{label:t.retry,action:()=>{i(),this._clearPrompt()}},secondary:{label:t.ignore,action:()=>{o(),this._clearPrompt()}}}}})),a((()=>this.viewModel?.state),(e=>{switch(e){case"awaiting-feature-to-update":case"ready":case"disabled":this._filterText="",this._featureTemplates.filterText=""}})),a((()=>[this._attachments?.selectedFile,this._attachments?.submitting]),e),a((()=>this.viewModel.featureFormDisabled),(e=>this._featureForm.disabled=e)),n((()=>this.view),"key-down",(e=>{"Escape"===e.key&&this.viewModel.back()}))])}destroy(){this._attachments.destroy(),this._featureForm.destroy(),this._featureTemplates.destroy()}loadDependencies(){return y({accordion:()=>import("@esri/calcite-components/dist/components/calcite-accordion.js"),"accordion-item":()=>import("@esri/calcite-components/dist/components/calcite-accordion-item.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow.js"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js"),notice:()=>import("@esri/calcite-components/dist/components/calcite-notice.js"),scrim:()=>import("@esri/calcite-components/dist/components/calcite-scrim.js")})}get _deleteButtonCommonInfo(){return{appearance:"outline",kind:"danger",type:"primary"}}get activeWorkflow(){return this.viewModel.activeWorkflow}get allowedWorkflows(){return this.viewModel.allowedWorkflows}set allowedWorkflows(e){this.viewModel.allowedWorkflows=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get labelOptions(){return this.viewModel.labelOptions}set labelOptions(e){this.viewModel.labelOptions=e}get layerInfos(){return this.viewModel.layerInfos}set layerInfos(e){this.viewModel.layerInfos=e}get snappingOptions(){return this.viewModel.snappingOptions}set snappingOptions(e){this.viewModel.snappingOptions=e}get tooltipOptions(){return this.viewModel.tooltipOptions}set tooltipOptions(e){this.viewModel.tooltipOptions=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...U,...e,snappingControlsElements:{...U.snappingControlsElements,...e?.snappingControlsElements}}}startCreateWorkflowAtFeatureTypeSelection(){return _(O,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return _(O,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return _(O,"startCreateWorkflowAtFeatureEdit"),this.viewModel.startCreateWorkflowAtFeatureEdit(e)}startUpdateWorkflowAtFeatureSelection(){return this.viewModel.startUpdateWorkflowAtFeatureSelection()}startUpdateWorkflowAtMultipleFeatureSelection(e){return this.viewModel.startUpdateWorkflowAtMultipleFeatureSelection(e)}startUpdateWorkflowAtFeatureEdit(e){return this.viewModel.startUpdateWorkflowAtFeatureEdit(e)}deleteFeatureFromWorkflow(){return this.viewModel.deleteFeatureFromWorkflow()}cancelWorkflow(e){return this.viewModel.cancelWorkflow(e)}render(){const{viewModel:e}=this;if(!e)return T("div",{class:B.base});const{state:t}=e;return T("div",{class:B.base},T("calcite-flow",null,e.pageStack.map((e=>this._renderPage(e,t))),this._renderPage(e.page,t)),this._renderPrompt())}_renderPage(e,t){switch(e){case"disabled":break;case"ready":return this._renderLanding(t);case"awaiting-feature-creation-info":return this._renderTemplates(t);case"creating-features":case"editing-new-feature":case"editing-existing-feature":return this._renderAttributeEditing(t);case"awaiting-update-feature-candidate":return this._renderFeatureList(t);case"adding-attachment":return this._renderAttachmentAdding(t);case"editing-attachment":return this._renderAttachmentEditing(t)}return T("div",null)}_renderTemplates(e){const{EditorPanel:t,headingLevel:s,messages:i,_onBack:o}=this;return T(t,{active:this._isPanelActive(e),key:"templates-panel",handleBack:o,heading:i.selectTemplate,headingLevel:s},T("div",{class:B.panelContent},this._featureTemplates.render()))}_renderAttributeEditing(e){const{activeWorkflow:t,EditorPanel:s,messages:i,messagesCommon:o,headingLevel:a,_onBack:n,viewModel:r}=this;if(!t)return null;const l=t.type,c=r.featureFormViewModel,d="update"===l&&!t.data.edits.modified||r.syncing||c.updating,p="update"===l?i.editFeature:i.createFeatures,m="update"===l?o.update:o.create,h="create-features"===l&&"create-new"===t.createFeatureState,u="create-features"===l?t.numPendingFeatures:0,g=u>1?S(i.createFeaturesTemplate,{numFeatures:u}):m,f=t.shouldShowAttachments,w=c.inputFields.every((e=>!e.visible))&&!f?this._renderMessage(S(i.clickToFinishTemplate,{button:m})):T("div",{key:"panel-content-section",class:B.panelContentSection},this._renderOwnerAdminNoticeIfApplicable(t),T("div",{class:B.panelContentSectionGroup},this._featureForm.render(),f&&T("div",{key:"attachments"},T(b,{level:A(a)},i.attachments),this._attachments.render())));return T(s,{active:this._isPanelActive(e),key:"attribute-editing-panel",heading:p,headingLevel:a,handleBack:n},T("div",{key:"panel-content",class:this.classes(B.panelContent,{[B.panelContentScrimContainer]:h})},w,h&&T("calcite-scrim",null)),this._renderFooterActions([{clickHandler:this._onSave,disabled:d,label:g,type:"primary"},r.shouldShowDeleteButton?{...this._deleteButtonCommonInfo,clickHandler:this._onDelete,disabled:r.syncing,label:o.delete}:null]))}_renderOwnerAdminNoticeIfApplicable(e){if(e?.reliesOnOwnerAdminPrivileges)return T("calcite-notice",{open:!0,kind:"info",scale:"s",class:B.ownerAdminNotice},T("div",{slot:"message"},this.messages.ownerAdminNotice))}_renderAttachmentAdding(e){const{_attachments:t,EditorPanel:s,_onBack:i,headingLevel:o,messages:a,messagesCommon:n}=this;return T(s,{active:this._isPanelActive(e),key:"attachment-adding-panel",heading:a.addAttachment,headingLevel:o,handleBack:i},T("div",{class:B.panelContent},t.render()),this._renderFooterActions([{label:t.submitting?n.cancel:n.add,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentAdd}]))}_renderAttachmentEditing(e){const{_attachments:t,EditorPanel:s,_onBack:i,activeWorkflow:o,headingLevel:a,messages:n,messagesCommon:r}=this;return o?T(s,{active:this._isPanelActive(e),key:"attachment-editing-panel",heading:n.editAttachment,headingLevel:a,handleBack:i},T("div",{class:B.panelContent},t.render()),o.shouldAllowAttachmentEditing?this._renderFooterActions([{label:r.update,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentUpdate},{...this._deleteButtonCommonInfo,clickHandler:this._onAttachmentDelete,disabled:t.submitting,label:r.delete}]):void 0):null}_renderMessage(e){return T("div",{key:"panel-content-message",class:B.panelContentMessage},e)}_renderFooterActions(e){return T("div",{key:"footer-actions",slot:"footer",class:B.actions},e.filter(i).map((({type:e,disabled:t,class:s,clickHandler:i,label:o,...a},n)=>T("calcite-button",{key:`action-${n}`,slot:"footer-actions",class:s,disabled:t??!1,onclick:i,width:"full",...a},o))))}_renderPrompt(){const e=this._prompt;if(!e)return null;const{title:t,message:s,context:i,actions:o}=e,a=o.secondary;let n;switch(i){case"danger":n="danger";break;case"info":n="brand";break;default:n="neutral"}const r=T("calcite-button",{afterCreate:I,appearance:"solid",key:"prompt-primary-button",kind:n,onclick:o.primary.action,scale:"m",width:a?"half":"full"},o.primary.label),l=a&&T("calcite-button",{appearance:"outline",key:"prompt-secondary-button",kind:n,onclick:a.action,scale:"m",width:"half"},a.label);return T("calcite-scrim",null,T("div",{class:`${B.promptContainer}--${i}`},T("div",{class:B.promptHeader},T("calcite-icon",{icon:"exclamation-mark-triangle"}),T(b,{class:B.promptHeading,level:this.headingLevel},t)),T("div",{class:B.promptMessage},s),T("div",{class:B.promptDivider}),T("div",{class:B.promptActions},l,r)))}_renderLanding(e){const{EditorPanel:t,headingLevel:s,messages:i,viewModel:o}=this,{canUpdate:a}=o,n=this._featureTemplates.viewModel.numberOfFeatureTemplates,r=!a&&0===n;return T(t,{active:this._isPanelActive(e),key:"landing-panel",heading:i.widgetLabel,headingLevel:s},T("div",{class:B.panelContent},a&&T("div",{key:"edit-actions",class:B.panelContentSection},this._renderUpdateActions(e)),n>0&&T("div",{key:"create-actions",class:B.panelContentSection},this._renderCreateActions()),r&&T("div",{key:"no-content",class:B.panelContentMessage},i.noEditableLayers)),this._renderFooterHelpMessages())}_renderFooterHelpMessages(){const{activeWorkflow:e,messages:t,view:s}=this,i=e?.helpMessage,o=i?t["3d"===s?.type?"helpMessages3d":"helpMessages2d"]?.[i]:null;return o?T("div",{key:"footer-actions",slot:"footer",class:B.helpMessage},o):null}_renderUpdateActions(e){const{messages:t,messagesCommon:s}=this;return T("div",{key:"update-actions"},T(b,{level:A(this.headingLevel)},t.editFeatures),T("calcite-list",{selectionMode:"single",selectionAppearance:"border"},T("calcite-list-item",{selected:"awaiting-feature-to-update"===e,label:s.select,onCalciteListItemSelect:this._onToggleUpdateWorkflow},T("calcite-icon",{icon:"cursor",slot:"content-start"}))))}_renderCreateActions(){const{_featureTemplates:e,headingLevel:t,messages:s}=this;return T("div",{key:"create-actions"},T(b,{level:A(t)},s.createFeatures),T("div",{key:"templates",class:B.featureTemplatesContainer},e.render()))}_renderFeatureList(e){const{EditorPanel:t,_onBack:s,headingLevel:o,messages:a,messagesTemplates:n,viewModel:{activeWorkflow:r,editableItems:l}}=this;if("update"!==r?.type)return null;const c=r.data.candidates,d=S(a.multipleFeaturesTemplate,{total:c.length}),p=new Map;let m=0;c.map((e=>({label:this._getLabel(e),id:e.attributes[e.layer.objectIdField],data:e}))).filter((e=>{const{label:t,data:s}=e,i=this._filterText.toLowerCase(),{title:o}=s.layer,a=l.find((e=>e.layer===s.layer));if(!a)return null;const{attachmentsOnUpdateEnabled:n,supports:r}=a;return(r.includes("update")||r.includes("delete")||n)&&(!i||t?.toLowerCase().includes(i)||o?.toLowerCase().includes(i))})).filter(i).forEach((e=>{m++;const t=e.data.layer;p.has(t)?p.get(t)?.items.push(e):p.set(t,{id:`${t.id}`,label:t.title??"",items:[e]})}));const h=l.toArray().map((({layer:e})=>p.get(e))).filter(i),u=m>10||this._filterText.length>0;return T(t,{active:this._isPanelActive(e),key:"feature-list",heading:d,headingLevel:o,handleBack:s},T("div",{class:B.panelContent},T("div",{class:B.panelContentSection},k({id:this.id,enableListScroll:!1,filterEnabled:u,filterText:this._filterText,items:h,messages:{filterPlaceholder:n.filterPlaceholder,noItems:n.noItems,noMatches:n.noMatches},onItemMouseEnter:e=>this.viewModel.selectFeature(e.data),onItemMouseLeave:()=>this.viewModel.selectFeature(null),onItemSelect:e=>this.viewModel.selectFeature(e.data,!0),onFilterChange:e=>this._filterText=e}))))}_isPanelActive(e){return this.viewModel.state===e}_renderSettings(){const e=this.visibleElements,t=e.snappingControls,s=e.sketchTooltipControls;return t||s?T("calcite-accordion",{class:B.settingsContainer,appearance:"transparent"},T("calcite-accordion-item",{heading:this.messagesCommon?.settings,iconStart:"gear"},s&&T(E,{tooltipOptions:this.tooltipOptions}),t&&T(M,{snappingOptions:this.snappingOptions,view:this.view,visibleElements:e.snappingControlsElements,afterCreate:e=>e.layerListOpen=!1}))):null}_getLabel(e){const t=e.layer;if(!t)return null;const{objectIdField:s}=t,{attributes:i}=e,o=m(t);return o&&i[o]&&`${i[o]}`||S(this.messages.untitledFeatureTemplate,{id:i[s]})}_onSave(){this.viewModel.save()}_onDelete(){const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteWarningTitle,message:e.deleteWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:()=>{this.deleteFeatureFromWorkflow(),this._clearPrompt()}},secondary:{label:e.keepFeature,action:this._clearPrompt}}}}async _onToggleUpdateWorkflow(){const{viewModel:e}=this;e.canUpdate&&(e.activeWorkflow&&"awaiting-feature-to-update"===e.state?await e.cancelWorkflow():await e.startUpdateWorkflowAtFeatureSelection())}async _onBack(e){return e?.stopPropagation(),this.viewModel.back()}_onAttachmentAdd(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.addFile(),e.previous()):this._attachments.addAttachment().then((()=>e.previous())))}_onAttachmentUpdate(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.updateFile(),e.previous()):this._attachments.updateAttachment().then((()=>e.previous())))}_onAttachmentDelete(){const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteAttachmentWarningTitle,message:e.deleteAttachmentWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:this._onAttachmentDeleteConfirm},secondary:{label:e.keepAttachment,action:this._clearPrompt}}}}};e([c()],D.prototype,"_featureForm",void 0),e([c()],D.prototype,"_attachments",void 0),e([c()],D.prototype,"_featureTemplates",void 0),e([c()],D.prototype,"_filterText",void 0),e([c()],D.prototype,"_prompt",void 0),e([c()],D.prototype,"_spinner",void 0),e([c()],D.prototype,"_deleteButtonCommonInfo",null),e([c({readOnly:!0})],D.prototype,"activeWorkflow",null),e([c()],D.prototype,"allowedWorkflows",null),e([c()],D.prototype,"useDeprecatedCreateWorkflow",void 0),e([c()],D.prototype,"headingLevel",void 0),e([c()],D.prototype,"iconClass",void 0),e([c()],D.prototype,"label",null),e([c()],D.prototype,"labelOptions",null),e([c()],D.prototype,"layerInfos",null),e([c(),F("esri/widgets/Editor/t9n/Editor")],D.prototype,"messages",void 0),e([c(),F("esri/t9n/common")],D.prototype,"messagesCommon",void 0),e([c(),F("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],D.prototype,"messagesTemplates",void 0),e([c()],D.prototype,"snappingOptions",null),e([c()],D.prototype,"tooltipOptions",null),e([c()],D.prototype,"supportingWidgetDefaults",void 0),e([c()],D.prototype,"view",null),e([c(),W(["workflow-cancel","workflow-commit"])],D.prototype,"viewModel",void 0),e([c()],D.prototype,"visibleElements",void 0),e([d("visibleElements")],D.prototype,"castVisibleElements",null),e([C()],D.prototype,"_onSave",null),e([C()],D.prototype,"_onDelete",null),e([C()],D.prototype,"_onToggleUpdateWorkflow",null),e([C()],D.prototype,"_onBack",null),e([C()],D.prototype,"_onAttachmentAdd",null),e([C()],D.prototype,"_onAttachmentUpdate",null),e([C()],D.prototype,"_onAttachmentDelete",null),D=e([p($)],D);const x=D;export{x as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{HandleOwnerMixin as t}from"../core/HandleOwner.js";import s from"../core/Logger.js";import{isSome as a}from"../core/maybe.js";import{createDeferred as o}from"../core/promiseUtils.js";import{watch as i,on as n,when as r,initial as l}from"../core/reactiveUtils.js";import{property as c}from"../core/accessorSupport/decorators/property.js";import{cast as d}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import{getDisplayFieldName as m}from"../layers/support/fieldUtils.js";import u from"./Attachments.js";import h from"./FeatureForm.js";import g from"./FeatureTemplates.js";import f from"./Spinner.js";import _ from"./Widget.js";import{workflowDeprecation as w}from"./Editor/deprecationUtils.js";import v from"./Editor/EditorViewModel.js";import{ItemList as y}from"./FeatureTemplates/ItemList.js";import{loadCalciteComponents as k}from"./support/componentsUtils.js";import{Heading as b,incrementHeadingLevel as C}from"./support/Heading.js";import A from"./support/SnappingControls.js";import{accessibleHandler as M}from"./support/decorators/accessibleHandler.js";import{messageBundle as F}from"./support/decorators/messageBundle.js";import{vmEvent as T}from"./support/decorators/vmEvent.js";import{tsx as W}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import{SketchTooltipControls as E}from"./support/SketchTooltipControls/SketchTooltipControls.js";import{substitute as S}from"../intl/substitute.js";const L="esri-editor",j=`${L}__panel`,I=`${L}__prompt`,P={base:`${L} esri-widget esri-widget--panel`,message:`${L}__message`,actions:`${L}__actions`,helpMessage:`${L}__help-message`,progressBar:`${L}__progress-bar`,panelToolbar:`${j}-toolbar`,panelContent:`${j}-content`,panelContentMessage:`${j}-content__message`,panelContentSection:`${j}-content__section`,panelContentSectionGroup:`${j}-content__section__group`,panelContentScrimContainer:`${j}-content__scrim-container`,settingsContainer:`${L}__settings`,updateFeaturesActionButtons:`${L}__update-features-action-buttons`,updateFeaturesActionButtonsButton:`${L}__update-features-action-buttons--button`,featureTemplatesContainer:`${L}__feature-templates-container`,ownerAdminNotice:`${L}__owner-admin-notice`,templateItemContentEnd:`${L}__template-item-content-end`,templateItemContentEndSuccess:`${L}__template-item-content-end--success`,templateItemContentEndError:`${L}__template-item-content-end--error`,templateItemLoader:`${L}__template-item-loader`,promptContainer:I,promptHeader:`${I}__header`,promptHeading:`${I}__header__heading`,promptMessage:`${I}__message`,promptDivider:`${I}__divider`,promptActions:`${I}__actions`,warningIcon:"esri-icon-notice-triangle",widgetIcon:"esri-icon-edit"},U={undoRedoButtons:!1,snappingControls:!0,snappingControlsElements:{header:!1,enabledToggle:!0,selfEnabledToggle:!0,featureEnabledToggle:!0,layerList:!0},sketchTooltipControls:!0};function B(e){e.focus()}const $="esri.widgets.Editor",D=s.getLogger($);let O=class extends(t(_)){constructor(e,t){super(e,t),this._featureForm=new h,this._attachments=new u({visibleElements:{addSubmitButton:!1,cancelAddButton:!1,cancelUpdateButton:!1,deleteButton:!1,errorMessage:!1,progressBar:!1,updateButton:!1}}),this._featureTemplates=new g({enableListScroll:!1,renderItemContentEnd:e=>this._renderTemplateContentEnd(e),renderItemDescription:e=>this._renderTemplateDescription(e),renderItemLabel:e=>this._renderTemplateLabel(e)}),this._filterText="",this._prompt=null,this._spinner=new f,this.useDeprecatedCreateWorkflow=!1,this.headingLevel=4,this.iconClass=P.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new v,this.visibleElements={...U},this.EditorPanel=({handleBack:e,heading:t,headingLevel:s,key:a},...o)=>{const{messagesCommon:i,viewModel:n,visibleElements:r}=this,l=n.sketchViewModel,c=n.syncing||this._attachments.submitting;return W("calcite-flow-item",{closable:!1,heading:t,headingLevel:s,key:a,loading:c,onCalciteFlowItemBack:e??void 0},W("div",{key:"panel-toolbar",class:P.panelToolbar},this._renderSettings(),r.undoRedoButtons&&[W("calcite-button",{key:"undo-button",label:i.undo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"undo",scale:"l",disabled:!l.canUndo(),onclick:l.undo.bind(l)},i.undo),W("calcite-button",{key:"redo-button",label:i.redo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"redo",scale:"l",disabled:!l.canRedo(),onclick:l.redo.bind(l)},i.redo)]),...o)},this._showDiscardWarning=()=>{const{messages:e}=this,t="create"===this.activeWorkflow?.type,s=o();return this._prompt={title:e[t?"cancelAddTitle":"cancelEditTitle"],message:e[t?"cancelAddWarningMessage":"cancelEditWarningMessage"],context:"danger",actions:{primary:{label:e[t?"discardFeature":"discardEdits"],action:()=>{s.resolve(),this._clearPrompt()}},secondary:{label:e[t?"continueAdding":"continueEditing"],action:()=>{s.reject(),this._clearPrompt()}}}},s.promise},this._onAttachmentDeleteConfirm=async()=>{const e=this._attachments,{activeWorkflow:t}=this.viewModel;t&&("create-features"===t.type?e.deleteFile():(await e.deleteAttachment(e.viewModel.activeAttachmentInfo),this._clearPrompt()),await t.previous(),this._clearPrompt())},this._onAttachmentsError=e=>{this._prompt={title:this.messages.errorWarningTitle,message:e.message,context:"warning",actions:{primary:{label:this.messagesCommon.form.ok,action:this._clearPrompt}}}},this._clearPrompt=()=>{this._prompt=null},this._onBack=this._onBack.bind(this),this._onSave=this._onSave.bind(this),this._onDelete=this._onDelete.bind(this),this._onToggleUpdateWorkflow=this._onToggleUpdateWorkflow.bind(this),this._onAttachmentAdd=this._onAttachmentAdd.bind(this),this._onAttachmentUpdate=this._onAttachmentUpdate.bind(this),this._onAttachmentDelete=this._onAttachmentDelete.bind(this)}initialize(){this.addHandles([i((()=>C(this.headingLevel)),(e=>{this._featureForm.headingLevel=e,this._featureTemplates.headingLevel=e}),l),n((()=>this.viewModel.featureTemplatesViewModel),"select",(async({item:e,oldItem:t})=>{const s=this.viewModel;if(s.activeWorkflow)try{await s.cancelWorkflow({force:!s.hasPendingEdits})}catch{return}if(!e||e.id===t?.id)return;const a={layer:e.layer,template:e.template};if(e.supportsUpload)return this.viewModel.startCreateFeaturesWorkflow(a);this.useDeprecatedCreateWorkflow?this.startCreateWorkflowAtFeatureCreation(a):this.startCreateFeaturesWorkflowAtFeatureCreation(a)})),i((()=>this.viewModel.selectedTemplateItem),(e=>this._featureTemplates.select(e,!1))),n((()=>this.viewModel.activeWorkflow),"cancel-request",(({controller:e})=>{const{messages:t,messagesCommon:s}=this;this._prompt={title:t.cancelRequestTitle,message:t.cancelRequestWarningMessage,context:"danger",actions:{primary:{label:s.form.yes,action:()=>{e.allow(),this._clearPrompt()}},secondary:{label:s.form.no,action:()=>{e.deny(),this._clearPrompt()}}}}})),i((()=>this.viewModel),(e=>{this._featureForm.viewModel=e?.featureFormViewModel??null,this._attachments.viewModel=e?.attachmentsViewModel??null,this._featureTemplates.viewModel=e?.featureTemplatesViewModel??null,this._spinner.viewModel=e?.spinnerViewModel??null,e.showDiscardPrompt=this._showDiscardWarning}),l),i((()=>this.view),((e,t)=>{const s=`editor-${this.id}-spinner`;t?.ui.remove(this._spinner,s),e?.ui.add(this._spinner,{key:s,position:"manual"})}),l),r((()=>this.supportingWidgetDefaults),(e=>{this._featureForm.set(e.featureForm),this._attachments.set(e.attachments),this._featureTemplates.set(e.featureTemplates),this.viewModel.sketchViewModel.set(e.sketch)}),l),r((()=>this._attachments?.error),(e=>this._onAttachmentsError(e))),r((()=>this.viewModel?.failures),(e=>{const{messages:t}=this,[{error:s,retry:a,cancel:o}]=e;this._prompt={title:t.errorWarningTitle,message:S(t.errorWarningMessageTemplate,{errorMessage:s.message}),context:"warning",actions:{primary:{label:t.retry,action:()=>{a(),this._clearPrompt()}},secondary:{label:t.ignore,action:()=>{o(),this._clearPrompt()}}}}})),i((()=>this.viewModel?.state),(e=>{switch(e){case"awaiting-feature-to-update":case"ready":case"disabled":this._filterText="",this._featureTemplates.filterText=""}})),i((()=>this.viewModel.featureFormDisabled),(e=>this._featureForm.disabled=e)),n((()=>this.view),"key-down",(e=>{"Escape"===e.key&&this.viewModel.back()}))])}destroy(){this._attachments.destroy(),this._featureForm.destroy(),this._featureTemplates.destroy()}loadDependencies(){return k({accordion:()=>import("@esri/calcite-components/dist/components/calcite-accordion.js"),"accordion-item":()=>import("@esri/calcite-components/dist/components/calcite-accordion-item.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item.js"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js"),notice:()=>import("@esri/calcite-components/dist/components/calcite-notice.js"),scrim:()=>import("@esri/calcite-components/dist/components/calcite-scrim.js")})}get _deleteButtonCommonInfo(){return{appearance:"outline",kind:"danger",type:"primary"}}get activeWorkflow(){return this.viewModel.activeWorkflow}get allowedWorkflows(){return this.viewModel.allowedWorkflows}set allowedWorkflows(e){this.viewModel.allowedWorkflows=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get labelOptions(){return this.viewModel.labelOptions}set labelOptions(e){this.viewModel.labelOptions=e}get layerInfos(){return this.viewModel.layerInfos}set layerInfos(e){this.viewModel.layerInfos=e}get snappingOptions(){return this.viewModel.snappingOptions}set snappingOptions(e){this.viewModel.snappingOptions=e}get tooltipOptions(){return this.viewModel.tooltipOptions}set tooltipOptions(e){this.viewModel.tooltipOptions=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...U,...e,snappingControlsElements:{...U.snappingControlsElements,...e?.snappingControlsElements}}}startCreateWorkflowAtFeatureTypeSelection(){return w(D,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return w(D,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return w(D,"startCreateWorkflowAtFeatureEdit"),this.viewModel.startCreateWorkflowAtFeatureEdit(e)}startUpdateWorkflowAtFeatureSelection(){return this.viewModel.startUpdateWorkflowAtFeatureSelection()}startUpdateWorkflowAtMultipleFeatureSelection(e){return this.viewModel.startUpdateWorkflowAtMultipleFeatureSelection(e)}startUpdateWorkflowAtFeatureEdit(e){return this.viewModel.startUpdateWorkflowAtFeatureEdit(e)}deleteFeatureFromWorkflow(){return this.viewModel.deleteFeatureFromWorkflow()}cancelWorkflow(e){return this.viewModel.cancelWorkflow(e)}render(){const{viewModel:e}=this;if(!e)return W("div",{key:"empty",class:P.base});const{state:t}=e;return W("div",{key:"base",class:P.base},W("calcite-flow",{key:"flow"},e.pageStack.map((e=>this._renderPage(e,t))),this._renderPage(e.page,t)),this._renderPrompt())}_renderPage(e,t){switch(e){case"disabled":break;case"ready":return this._renderLanding(t);case"awaiting-feature-creation-info":return this._renderTemplates(t);case"creating-features":case"editing-new-feature":case"editing-existing-feature":return this._renderAttributeEditing(t);case"awaiting-update-feature-candidate":return this._renderFeatureList(t);case"adding-attachment":return this._renderAttachmentAdding(t);case"editing-attachment":return this._renderAttachmentEditing(t)}return W("div",null)}_renderTemplates(e){const{EditorPanel:t,headingLevel:s,messages:a,_onBack:o}=this;return W(t,{active:this._isPanelActive(e),key:"templates-panel",handleBack:o,heading:a.selectTemplate,headingLevel:s},W("div",{key:"feature-templates",class:P.panelContent},this._featureTemplates.render()))}_renderAttributeEditing(e){const{activeWorkflow:t,EditorPanel:s,messages:a,messagesCommon:o,headingLevel:i,_onBack:n,viewModel:r}=this;if(!t)return null;const l=t.type,c=r.featureFormViewModel,d="update"===l&&!t.data.edits.modified||r.syncing||c.updating,p="update"===l?a.editFeature:a.createFeatures,m="update"===l?o.update:o.create,u="create-features"===l&&"create-new"===t.createFeatureState,h="create-features"===l?t.numPendingFeatures:0,g=h>1?S(a.createFeaturesTemplate,{numFeatures:h}):m,f=t.shouldShowAttachments,_=c.inputs.every((e=>!e.visible))&&!f?this._renderMessage(S(a.clickToFinishTemplate,{button:m})):W("div",{key:"panel-content-section",class:P.panelContentSection},this._renderOwnerAdminNoticeIfApplicable(t),W("div",{class:P.panelContentSectionGroup},this._featureForm.render(),f&&W("div",{key:"attachments"},W(b,{level:C(i)},a.attachments),this._attachments.render())));return W(s,{active:this._isPanelActive(e),key:"attribute-editing-panel",heading:p,headingLevel:i,handleBack:n},W("div",{key:"panel-content",class:this.classes(P.panelContent,{[P.panelContentScrimContainer]:u})},_,u&&W("calcite-scrim",null)),this._renderFooterActions([{clickHandler:this._onSave,disabled:d,label:g,type:"primary"},r.shouldShowDeleteButton?{...this._deleteButtonCommonInfo,clickHandler:this._onDelete,disabled:r.syncing,label:o.delete}:null]))}_renderOwnerAdminNoticeIfApplicable(e){if(e?.reliesOnOwnerAdminPrivileges)return W("calcite-notice",{open:!0,kind:"info",scale:"s",class:P.ownerAdminNotice},W("div",{slot:"message"},this.messages.ownerAdminNotice))}_renderAttachmentAdding(e){const{_attachments:t,EditorPanel:s,_onBack:a,headingLevel:o,messages:i,messagesCommon:n}=this;return W(s,{active:this._isPanelActive(e),key:"attachment-adding-panel",heading:i.addAttachment,headingLevel:o,handleBack:a},W("div",{key:"attachments",class:P.panelContent},t.render()),this._renderFooterActions([{label:t.submitting?n.cancel:n.add,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentAdd}]))}_renderAttachmentEditing(e){const{_attachments:t,EditorPanel:s,_onBack:a,activeWorkflow:o,headingLevel:i,messages:n,messagesCommon:r}=this;return o?W(s,{active:this._isPanelActive(e),key:"attachment-editing-panel",heading:n.editAttachment,headingLevel:i,handleBack:a},W("div",{key:"attachments",class:P.panelContent},t.render()),o.shouldAllowAttachmentEditing?this._renderFooterActions([{label:r.update,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentUpdate},{...this._deleteButtonCommonInfo,clickHandler:this._onAttachmentDelete,disabled:t.submitting,label:r.delete}]):void 0):null}_renderMessage(e){return W("div",{key:"panel-content-message",class:P.panelContentMessage},e)}_renderFooterActions(e){return W("div",{key:"footer-actions",slot:"footer",class:P.actions},e.filter(a).map((({type:e,disabled:t,class:s,clickHandler:a,label:o,...i},n)=>W("calcite-button",{key:`action-${n}`,slot:"footer-actions",class:s,disabled:t??!1,onclick:a,width:"full",...i},o))))}_renderPrompt(){const e=this._prompt;if(!e)return null;const{title:t,message:s,context:a,actions:o}=e,i=o.secondary;let n;switch(a){case"danger":n="danger";break;case"info":n="brand";break;default:n="neutral"}const r=W("calcite-button",{afterCreate:B,appearance:"solid",key:"prompt-primary-button",kind:n,onclick:o.primary.action,scale:"m",width:i?"half":"full"},o.primary.label),l=i&&W("calcite-button",{appearance:"outline",key:"prompt-secondary-button",kind:n,onclick:i.action,scale:"m",width:"half"},i.label);return W("calcite-scrim",{key:"prompt"},W("div",{class:`${P.promptContainer}--${a}`},W("div",{class:P.promptHeader},W("calcite-icon",{icon:"exclamation-mark-triangle"}),W(b,{class:P.promptHeading,level:this.headingLevel},t)),W("div",{class:P.promptMessage},s),W("div",{class:P.promptDivider}),W("div",{class:P.promptActions},l,r)))}_renderLanding(e){const{EditorPanel:t,headingLevel:s,messages:a,viewModel:o}=this,{canUpdate:i}=o,n=this._featureTemplates.viewModel.numberOfFeatureTemplates,r=!i&&0===n;return W(t,{active:this._isPanelActive(e),key:"landing-panel",heading:a.widgetLabel,headingLevel:s},W("div",{key:"landing-content",class:P.panelContent},i&&W("div",{key:"edit-actions",class:P.panelContentSection},this._renderUpdateActions(e)),n>0&&W("div",{key:"create-actions",class:P.panelContentSection},this._renderCreateActions()),r&&W("div",{key:"no-content",class:P.panelContentMessage},a.noEditableLayers)),this._renderFooterHelpMessages())}_renderFooterHelpMessages(){const{activeWorkflow:e,messages:t,view:s}=this,a=e?.helpMessage,o=a?t["3d"===s?.type?"helpMessages3d":"helpMessages2d"]?.[a]:null;return o?W("div",{key:"footer-actions",slot:"footer",class:P.helpMessage},o):null}_renderUpdateActions(e){const{messages:t,messagesCommon:s}=this;return W("div",{key:"update-actions"},W(b,{level:C(this.headingLevel)},t.editFeatures),W("calcite-list",{selectionMode:"single",selectionAppearance:"border"},W("calcite-list-item",{selected:"awaiting-feature-to-update"===e,label:s.select,onCalciteListItemSelect:this._onToggleUpdateWorkflow},W("calcite-icon",{icon:"cursor",slot:"content-start"}))))}_renderCreateActions(){const{_featureTemplates:e,headingLevel:t,messages:s}=this;return W("div",{key:"create-actions"},W(b,{level:C(t)},s.createFeatures),W("div",{key:"templates",class:P.featureTemplatesContainer},e.render()))}_renderTemplateLabel(e){return e.label}_renderTemplateDescription(e){return"pending"===this._getUploadForTemplateItem(e)?.state?this.messages?.uploadingModel:null}_renderTemplateContentEnd(e){const t=this._getUploadForTemplateItem(e),s=W("calcite-icon",{key:"upload-icon",class:P.templateItemContentEnd,icon:"upload-to"});if(!t)return e.supportsUpload?s:null;switch(t.state){case"success":return W("calcite-icon",{key:"success-icon",class:this.classes(P.templateItemContentEnd,P.templateItemContentEndSuccess),icon:"check"});case"error":return W("calcite-icon",{key:"error-icon",class:this.classes(P.templateItemContentEnd,P.templateItemContentEndError),icon:"exclamation-mark-circle-f"});case"pending":return W("calcite-loader",{class:P.templateItemLoader,inline:!0,key:"loader",label:"",scale:"s",type:"indeterminate"});case"cancelled":case"default":return s}}_getUploadForTemplateItem(e){const t=this.activeWorkflow;if("create-features"!==t?.type)return null;const{data:s}=t,{creationInfo:a,upload:o}=s;return a?.template===e.template&&a?.layer===e.layer?o:null}_renderFeatureList(e){const{EditorPanel:t,_onBack:s,headingLevel:o,messages:i,messagesTemplates:n,viewModel:{activeWorkflow:r,editableItems:l}}=this;if("update"!==r?.type)return null;const c=r.data.candidates,d=S(i.multipleFeaturesTemplate,{total:c.length}),p=new Map;let m=0;c.map((e=>({label:this._getLabel(e),id:e.attributes[e.layer.objectIdField],data:e}))).filter((e=>{const{label:t,data:s}=e,a=this._filterText.toLowerCase(),{title:o}=s.layer,i=l.find((e=>e.layer===s.layer));if(!i)return null;const{attachmentsOnUpdateEnabled:n,supports:r}=i;return(r.includes("update")||r.includes("delete")||n)&&(!a||t?.toLowerCase().includes(a)||o?.toLowerCase().includes(a))})).filter(a).forEach((e=>{m++;const t=e.data.layer;p.has(t)?p.get(t)?.items.push(e):p.set(t,{id:`${t.id}`,label:t.title??"",items:[e]})}));const u=l.toArray().map((({layer:e})=>p.get(e))).filter(a),h=m>10||this._filterText.length>0;return W(t,{active:this._isPanelActive(e),key:"feature-list",heading:d,headingLevel:o,handleBack:s},W("div",{key:"feature-list",class:P.panelContent},W("div",{class:P.panelContentSection},y({enableListScroll:!1,filterEnabled:h,filterText:this._filterText,id:this.id,items:u,messages:{filterPlaceholder:n.filterPlaceholder,noItems:n.noItems,noMatches:n.noMatches},onFilterChange:e=>this._filterText=e,onItemMouseEnter:e=>this.viewModel.selectFeature(e.data),onItemMouseLeave:()=>this.viewModel.selectFeature(null),onItemSelect:e=>this.viewModel.selectFeature(e.data,!0)}))))}_isPanelActive(e){return this.viewModel.state===e}_renderSettings(){const e=this.visibleElements,t=e.snappingControls,s=e.sketchTooltipControls;return t||s?W("calcite-accordion",{key:"settings",class:P.settingsContainer,appearance:"transparent"},W("calcite-accordion-item",{heading:this.messagesCommon?.settings,iconStart:"gear"},s&&W(E,{tooltipOptions:this.tooltipOptions}),t&&W(A,{snappingOptions:this.snappingOptions,view:this.view,visibleElements:e.snappingControlsElements,afterCreate:e=>e.layerListOpen=!1}))):null}_getLabel(e){const t=e.layer;if(!t)return null;const{objectIdField:s}=t,{attributes:a}=e,o=m(t);return o&&a[o]&&`${a[o]}`||S(this.messages.untitledFeatureTemplate,{id:a[s]})}_onSave(){this.viewModel.save()}_onDelete(){const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteWarningTitle,message:e.deleteWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:()=>{this.deleteFeatureFromWorkflow(),this._clearPrompt()}},secondary:{label:e.keepFeature,action:this._clearPrompt}}}}async _onToggleUpdateWorkflow(){const{viewModel:e}=this;e.canUpdate&&(e.activeWorkflow&&"awaiting-feature-to-update"===e.state?await e.cancelWorkflow():await e.startUpdateWorkflowAtFeatureSelection())}async _onBack(e){return e?.stopPropagation(),this.viewModel.back()}_onAttachmentAdd(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.addFile(),e.previous()):this._attachments.addAttachment().then((()=>e.previous())))}_onAttachmentUpdate(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.updateFile(),e.previous()):this._attachments.updateAttachment().then((()=>e.previous())))}_onAttachmentDelete(){const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteAttachmentWarningTitle,message:e.deleteAttachmentWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:this._onAttachmentDeleteConfirm},secondary:{label:e.keepAttachment,action:this._clearPrompt}}}}};e([c()],O.prototype,"_featureForm",void 0),e([c()],O.prototype,"_attachments",void 0),e([c()],O.prototype,"_featureTemplates",void 0),e([c()],O.prototype,"_filterText",void 0),e([c()],O.prototype,"_prompt",void 0),e([c()],O.prototype,"_spinner",void 0),e([c()],O.prototype,"_deleteButtonCommonInfo",null),e([c({readOnly:!0})],O.prototype,"activeWorkflow",null),e([c()],O.prototype,"allowedWorkflows",null),e([c()],O.prototype,"useDeprecatedCreateWorkflow",void 0),e([c()],O.prototype,"headingLevel",void 0),e([c()],O.prototype,"iconClass",void 0),e([c()],O.prototype,"label",null),e([c()],O.prototype,"labelOptions",null),e([c()],O.prototype,"layerInfos",null),e([c(),F("esri/widgets/Editor/t9n/Editor")],O.prototype,"messages",void 0),e([c(),F("esri/t9n/common")],O.prototype,"messagesCommon",void 0),e([c(),F("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],O.prototype,"messagesTemplates",void 0),e([c()],O.prototype,"snappingOptions",null),e([c()],O.prototype,"tooltipOptions",null),e([c()],O.prototype,"supportingWidgetDefaults",void 0),e([c()],O.prototype,"view",null),e([c(),T(["workflow-cancel","workflow-commit"])],O.prototype,"viewModel",void 0),e([c()],O.prototype,"visibleElements",void 0),e([d("visibleElements")],O.prototype,"castVisibleElements",null),e([M()],O.prototype,"_onSave",null),e([M()],O.prototype,"_onDelete",null),e([M()],O.prototype,"_onToggleUpdateWorkflow",null),e([M()],O.prototype,"_onBack",null),e([M()],O.prototype,"_onAttachmentAdd",null),e([M()],O.prototype,"_onAttachmentUpdate",null),e([M()],O.prototype,"_onAttachmentDelete",null),O=e([p($)],O);const x=O;export{x as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import"../../intl.js";import n from"../../core/Evented.js";import{HandleOwnerMixin as s}from"../../core/HandleOwner.js";import i from"../../core/Logger.js";import{destroyMaybe as o}from"../../core/maybe.js";import{EsriPromiseMixin as r}from"../../core/Promise.js";import{watch as a}from"../../core/reactiveUtils.js";import{templateHasKey as l}from"../../core/string.js";import{property as u}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as p}from"../../core/accessorSupport/decorators/subclass.js";import d from"../../form/FormTemplate.js";import c from"../../layers/support/ContingentValue.js";import{isEditableLayer as f}from"../../layers/support/editableLayers.js";import h from"../../layers/support/LayerContingentValuesCache.js";import{parseFormTemplateString as m,isGroupField as g,getNormalizedFeatureTypeInfo as y}from"./featureFormUtils.js";import{createFormExpressionArcadeExecutor as _}from"./FormExpressionArcadeExecutor.js";import{FormExpressionsManager as F}from"./FormExpressionsManager.js";import C from"./InputField.js";import v from"./InputFieldGroup.js";import{onLocaleChange as E}from"../../intl/locale.js";import{fetchMessageBundle as x}from"../../intl/messages.js";const I=new t({attributes:{}}),V=["editableExpression","requiredExpression","valueExpression","visibilityExpression"],b=["visibilityExpression"],j="#JSAPI_CONTINGENT_VALUE_EMPTY_HASH",w="#JSAPI_CONTINGENT_VALUE_ANY_HASH",T="#JSAPI_CONTINGENT_VALUE_NULL_HASH";let A=class extends(s(r(n.EventedAccessor))){constructor(e){super(e),this._expressionExecutorLookup=new Map,this._expressionLookup=new Map,this._expressionsManager=null,this._contingentValuesCache=null,this._featureClone=I.clone(),this._initialFeature=I.clone(),this.arcadeEditType="NA",this.contingencyConstraintViolations=new Map,this.inputFields=[],this.messages=null,this.strict=!1,this._isSupportedElement=this._isSupportedElement.bind(this)}initialize(){const e=async()=>{const e=await x("esri/widgets/FeatureForm/t9n/FeatureForm");this.messages=e;for(const t of this.allInputFields)t.messages=e};e();const t=a((()=>[this.layer,!!this.layer?.loaded,this.formTemplate]),(([e,t])=>{null!=e&&(t?this._updateInputFields():e.load().catch((()=>i.getLogger(this.declaredClass).error("Failed to load layer",e.loadError))))}),{equals:([e,t,n],[s,i,o])=>e===s&&t===i&&n===o,initial:!0}),n=a((()=>this._arcadeContextInfo),(e=>{null!=this._expressionsManager&&(this._expressionsManager.arcadeContextInfo=e)})),s=a((()=>this.layer),(e=>{const t="subtype-sublayer"===e?.type?e.parent:"feature"===e?.type?e:null;t&&this.addResolvingPromise(h.createLoadedLayerContingentValuesCache(t).then((e=>{this._contingentValuesCache=e,this.notifyChange("fieldsWithContingentValues")})))}),{initial:!0});this.handles.add([E(e),t,n,s])}destroy(){this.feature=null,this.layer=null,this._contingentValuesCache=o(this._contingentValuesCache)}get _arcadeContextInfo(){const{_initialFeature:e,arcadeEditType:t,layer:n,spatialReference:s,view:i}=this;return{layer:f(n)?n:null,originalFeature:e,editType:t,spatialReference:s,map:i?.map}}get updating(){return this.updatingHandles.updating}get allInputFields(){return S(this.inputFields)}get _layerFieldsByName(){return new Map(this.layer?.fields.map((e=>[e.name,e])))}get feature(){return this._get("feature")}set feature(e){this._featureClone=e?e.clone():I.clone(),this._initialFeature=this._featureClone.clone(),this._resetInputFieldValues(this._featureClone),this.contingencyConstraintViolations.clear(),null!=this._expressionsManager&&(this._expressionsManager.resetExecutors(),this._expressionsManager.feature=this._featureClone,this.updatingHandles.addPromise(this._expressionsManager.evaluateAll().finally((()=>this._afterExpressionsEvaluated())))),this._set("feature",e)}get fieldsWithContingentValues(){if(null==this._contingentValuesCache)return new Set;const e=this._contingentValuesCache.fieldGroups.flatMap((e=>e.fields));return new Set(e)}get formTemplate(){return this.layer&&"formTemplate"in this.layer?this.layer.formTemplate:null}set formTemplate(e){void 0===e?this._clearOverride("formTemplate"):this._override("formTemplate",e)}get formDescription(){const{formTemplate:e,layer:t}=this;return null!=e&&e.description&&t?m(e.description,this.getValues(),t.fieldsIndex):null}get formTitle(){const{formTemplate:e,layer:t}=this;return null!=e&&e.title&&t?m(e.title,this.getValues(),t.fieldsIndex):null}get joinedContingentValues(){return this._joinContingentValues()}get layer(){return this.feature?.sourceLayer&&"applyEdits"in this.feature.sourceLayer?this.feature.sourceLayer:null}set layer(e){this._override("layer",e)}get spatialReference(){return this.layer?.spatialReference??null}set spatialReference(e){this._override("spatialReference",e)}get state(){return this.messages&&this.get("layer.loaded")?"ready":"disabled"}get submittable(){return!!this.valid||this.allInputFields.filter((e=>!e.valid)).every((({submittable:e})=>e))}get valid(){const e=this.allInputFields;return e.length>0&&e.every((({valid:e})=>e))}findField(e){return this.allInputFields.find((t=>t.name===e))}getValue(e){const{_featureClone:t,layer:n}=this,s=!!n?.getField(e);return t.getAttribute(e)??(s?null:void 0)}setValue(e,t){const{_featureClone:n,strict:s}=this,i=this.findField(e);t=""===t?null:t,i&&n.getAttribute(e)!==t&&(i.value=t,s&&!i.valid||(this._afterValueChange(i),null!=this._expressionsManager&&this.updatingHandles.addPromise(this._expressionsManager.evaluateInvalidated([i.name]).finally((()=>this._afterExpressionsEvaluated())))))}getValues(){return{...this._featureClone.attributes}}submit(){const e=this.allInputFields,t=new Set(e.filter((e=>e.valid)).map((({name:e})=>e))),n=e.filter((e=>!e.valid)).map((({name:e})=>e)),s=this.getValues();if(this.validateContingencyConstraints(s,{includeIncompleteViolations:!0}).length>0)for(const[i,o]of this.contingencyConstraintViolations.entries())"error"===o.type&&(t.delete(i),n.push(i));this.emit("submit",{valid:[...t],invalid:n,values:s})}validateContingencyConstraints(e,t){const{_contingentValuesCache:n}=this,s=new Map;if(this.contingencyConstraintViolations=s,null==n)return[];const{invalid:i,incomplete:o}=n.validateContingencyConstraints(e),r=[...i,...t?.includeIncompleteViolations?o:[]];for(const a of r)for(const e of a.fieldGroup.fields)s.set(e,a);return r}notifyFeatureGeometryChanged(){const{_expressionsManager:e,feature:t,_featureClone:n}=this;n.geometry=t.geometry,null!=e&&this.updatingHandles.addPromise(e.evaluateInvalidatedByGeometry().finally((()=>this._afterExpressionsEvaluated())))}_emitChangeEvent({name:e,valid:t,value:n}){this.emit("value-change",{layer:this.layer,feature:this.feature,fieldName:e,value:n,valid:t})}_updateInputFields(){const{_featureClone:e,_initialFeature:t,arcadeEditType:n,formTemplate:s,inputFields:i,messages:o,layer:r}=this,a={arcadeEditType:n,feature:e,initialFeature:t,layer:r,messages:o},l=i.slice(),u=null!=s&&s.elements&&s.elements.length>0?this._updateInputFieldsFromElements(l,s.elements,a):this._updateInputFieldsFromLayerFields(l,r?.fields,a);this.inputFields=u}_updateInputFieldsFromElements(e,t,n){const s=new Map;for(const r of e)if(g(r)){L(s,r.groupElement,r);for(const e of r.inputFields)L(s,e.fieldElement,e)}else L(s,r.fieldElement,r);const i=new Map,o=this._updateInputFieldsRecursive({existingInputFieldsByElement:s,updatedElements:t.filter(this._isSupportedElement),sharedInitializationProperties:n,group:null,newExpressionExecutorPromises:i});this.updatingHandles.addPromise(Promise.all(Array.from(i.values())).then((()=>{const e=Array.from(this._expressionExecutorLookup.values()),t=S(o);return this._createExpressionsManager(e,t),this._expressionsManager.evaluateAll().finally((()=>this._afterExpressionsEvaluated()))})));for(const[r,a]of s.entries())s.delete(r),a.destroy();return o}_updateInputFieldsRecursive(e){const{existingInputFieldsByElement:t,updatedElements:n,sharedInitializationProperties:s,group:i,newExpressionExecutorPromises:o}=e,r=[];for(const a of n){const e=t.has(a),n=e?t.get(a):M(a)?this._makeInputFieldGroupFromGroupElement(a,s):this._makeInputFieldFromFieldElement(a,s,i);if(r.push(n),e)if(t.delete(a),g(n)){const{feature:e}=s;n.set({feature:e})}else n.set(s);else this._assignExpressionExecutors(n,a,o);if(M(a)){const e=a.elements.filter((e=>this._isSupportedElement(e)));n.inputFields=this._updateInputFieldsRecursive({existingInputFieldsByElement:t,updatedElements:e,sharedInitializationProperties:s,group:n,newExpressionExecutorPromises:o})}}return r}_updateInputFieldsFromLayerFields(e,t,n){if(!Array.isArray(t))return i.getLogger(this.declaredClass).warn(this.declaredClass,"No attribute fields found."),[];const s=new Map;for(const i of e)if(g(i)){for(const e of i.inputFields)e.destroy();i.inputFields.length=0,i.destroy()}else null!=i.fieldElement?i.destroy():s.set(i.field,i);const o=[],{arcadeEditType:r,feature:a,initialFeature:l,layer:u,messages:p}=n;for(const i of t){const e=s.get(i)??new C({arcadeEditType:r,field:i,feature:a,initialFeature:l,layer:u,messages:p,value:a.getAttribute(i.name)??null});o.push(e),s.delete(i)}for(const[i,d]of s.entries())s.delete(i),d.destroy();return o}_resetInputFieldValues(e){for(const t of this.allInputFields)t.value=e.getAttribute(t.name)}_makeInputFieldFromFieldElement(e,t,n){const{arcadeEditType:s,feature:i,initialFeature:o,layer:r,messages:a}=t;return new C({arcadeEditType:s,fieldElement:e,field:this._layerFieldsByName.get(e.fieldName),value:i.getAttribute(e.fieldName)??null,feature:i,initialFeature:o,layer:r,group:n,messages:a})}_makeInputFieldGroupFromGroupElement(e,t){const{feature:n,initialFeature:s}=t;return new v({groupElement:e,inputFields:[],feature:n,initialFeature:s})}_assignExpressionExecutors(e,t,n){const s=M(t)?b:V,i=[];for(const o of s){const s=t[o],{_expressionExecutorLookup:i}=this;if(null!=s&&""!==s){const t=`${o}Executor`,r=this._expressionLookup.get(s)??this._addToExpressionLookup(s);if(i.has(r))e[t]=i.get(r);else if(n.has(r)){const s=n.get(r).then((n=>(e[t]=n,n)));n.set(r,s)}else{const s=_(r,this.layer).then((n=>(e[t]=n,i.set(r,n),n)));n.set(r,s)}}}return i}_createExpressionsManager(e,t){const{_arcadeContextInfo:n,_featureClone:s}=this;this._expressionsManager=new F({executors:e,feature:s,arcadeContextInfo:n,inputFields:t})}_afterValueChange(e){const{name:t,value:n}=e,{_featureClone:s,formTemplate:i,layer:o}=this;if(!o)return;const r=s.getAttribute(t);s.setAttribute(t,n);const{typeFieldName:a,types:u}=y(o);if(t===a&&n!==r){if("subtype-sublayer"===o.type){const e=o.parent?.findSublayerForFeature(s);s.sourceLayer=this.feature.sourceLayer=e}const e=new Set;for(const t of u)if(t.domains&&"object"==typeof t.domains)for(const n of Object.keys(t.domains))e.add(n);for(const t of e){const e=this.findField(t);e&&e.notifyChange("domain")}}if(null!=i){const{description:e,title:n}=i;n&&l(n,t)&&this.notifyChange("formTitle"),e&&l(e,t)&&this.notifyChange("formDescription")}this._emitChangeEvent(e)}_afterExpressionsEvaluated(){const{_featureClone:e}=this;for(const t of this.allInputFields)t.value!==e.getAttribute(t.name)&&this._afterValueChange(t)}_addToExpressionLookup(e){const{_expressionLookup:t,formTemplate:n}=this,s=null!=n&&null!=n.expressionInfos?Object.values(n.expressionInfos).find((t=>t.name===e)):null,i=s?.expression??e;return t.set(e,i),e!==i&&t.set(i,i),i}_isSupportedElement(e){return"field"===e.type||"group"===e.type||(i.getLogger(this.declaredClass).warn("form-info::unsupported-element-type","Only element types 'field' and 'group' are supported",`Element ${e.label} has unsupported type '${e.type}'`),!1)}_joinContingentValues(){const e=this._contingentValuesCache;if(null==e)return[];const{typeFieldName:t}=y(this.layer),n=t?this.getValue(t):null,s=[];for(const r of e.fieldGroups){const{contingencies:e,fields:t,name:i}=r,o=[];for(const s of e)s.isRetired||null!=s.subtype&&s.subtype.code!==n||o.push({values:s.values});o.length>0&&s.push({name:i,fields:t,contingencies:o})}const[i,o]=this._generateJoinPlan(s);return[...i.flatMap((e=>this._joinFieldGroupContingencies(e))),...o.flatMap((e=>e.contingencies))]}_generateJoinPlan(e){const t=new Map,n=[],s=new Set;for(const l of e)for(const e of l.fields)if(t.has(e)){const i=t.get(e),o=l,r=[i.name,o.name].sort().join("|");if(s.has(r))continue;n.push([i,o]),s.add(r),t.set(e,o)}else t.set(e,l);const i=new Set(n.flat()),o=new Set(e);for(const l of i)o.delete(l);const r=new Map,a=new Map;for(const l of new Set(n.flat())){const e=Symbol(l.name);r.set(e,new Set([l])),a.set(l,e)}for(const[l,u]of n){const e=a.get(l),t=a.get(u);if(e===t)continue;const n=r.get(e),s=r.get(t);for(const i of s)n.add(i),a.set(i,e);r.delete(t)}return[[...r.values()].map((e=>[...e])),[...o]]}_joinFieldGroupContingencies(e){const t=e.slice(),n=t.shift();let s=t.shift(),i=this._generateJoinKey(n.fields,s.fields),o=new Set([...n.fields,...s.fields]),r=new Map;for(const l of n.contingencies){const[e]=this._hashContingency(l,i.codedValueFields,!0);r.has(e)?r.get(e)?.push(l):r.set(e,[l])}for(;t.length>0;){const e=new Map,n=t.shift(),a=this._generateJoinKey(o,n.fields);for(const t of s.contingencies){const[n,s]=this._hashContingency(t,i.codedValueFields),o=s?this._findMatchingContingenciesWithAnyHashMask(r,n):r.get(n);if(r.has(w)&&o?.push(...this._findMatchingContingenciesContainingAny(t,r.get(w),i.codedValueFields)),null!=o)for(const r of o){const n=i.rangeFields.length>0?this._joinContingenciesWithRangeDomains(r,t,i.rangeFields):this._joinContingencies(r,t);if(null==n)break;const[s]=this._hashContingency(n,a.codedValueFields,!0);e.has(s)?e.get(s)?.push(n):e.set(s,[n])}}r=e,s=n,i=a,o=new Set([...o,...s.fields])}const a=[];for(const l of s.contingencies){const[e,t]=this._hashContingency(l,i.codedValueFields),n=t?this._findMatchingContingenciesWithAnyHashMask(r,e):r.get(e);if(r.has(w)&&n.push(...this._findMatchingContingenciesContainingAny(l,r.get(w),i.codedValueFields)),null!=n)for(const s of n){const e=i.rangeFields.length>0?this._joinContingenciesWithRangeDomains(s,l,i.rangeFields):this._joinContingencies(s,l);null!=e&&a.push(e)}}return a}_joinContingencies(e,t){const n={values:{...e.values,...t.values}};for(const[s,i]of Object.entries(n.values))"any"===i.objectType&&null!=e.values[s]&&(n.values[s]=e.values[s]);return n}_joinContingenciesWithRangeDomains(e,t,n){const s=this._joinContingencies(e,t);for(const i of n){const n=e.values[i],o=t.values[i],{leftIsNull:r,rightIsNull:a,bothAreNull:l,leftIsAny:u,rightIsAny:p,bothAreAny:d,leftIsRange:f,rightIsRange:h}=this._compareObjectTypes(n.objectType,o.objectType);if(l||d)continue;if(r&&p||a&&u){s.values[i]=new c({objectType:"null"});continue}if(r&&h||a&&f)return null;u?(n.minValue=-1/0,n.maxValue=1/0):p&&(o.minValue=-1/0,o.maxValue=1/0);const m=Math.max(n.minValue,o.minValue),g=Math.min(n.maxValue,o.maxValue);if(m>g)return null;s.values[i]=new c({objectType:"range",minValue:m,maxValue:g})}return s}_findMatchingContingenciesContainingAny(e,t,n){return t.filter((t=>n.every((n=>{const s=t.values[n],i=e.values[n];return"any"===s.objectType||"any"===i.objectType||s.codedValue?.code===i.codedValue?.code}))))}_findMatchingContingenciesWithAnyHashMask(e,t){const n=RegExp(`${t}$`),s=[];for(const[i,o]of e){if(i===w)break;n.test(i)&&s.push(...o)}return s}_generateJoinKey(e,t){const n=Array.isArray(e)?new Set(e):e,s=Array.isArray(t)?new Set(t):t,i=n.size<s.size?n:s,o=i===n?s:n,r=new Set,a=new Set;for(const l of i)if(o.has(l)){const e=this.layer?.getFieldDomain(l,{feature:this.feature});if(null==e)continue;switch(e.type){case"coded-value":r.add(l);break;case"range":a.add(l)}}return{codedValueFields:[...r],rangeFields:[...a]}}_hashContingency(e,t,n=!1){if(t.length<1)return[j,!1];const s=[];let i=!1;for(const o of t){const t=e.values[o];if("any"===t.objectType){if(n)return[w,!0];i=!0,s.push(`${o}:.*`)}else"null"===t.objectType?s.push(`${o}:${T}`):s.push(`${o}:${t.codedValue?.code}`)}return[s.sort().join("&"),i]}_compareObjectTypes(e,t){return{leftIsNull:"null"===e,rightIsNull:"null"===t,bothAreNull:"null"===e&&"null"===t,leftIsAny:"any"===e,rightIsAny:"any"===t,bothAreAny:"any"===e&&"any"===t,leftIsRange:"range"===e,rightIsRange:"range"===t}}};e([u()],A.prototype,"_featureClone",void 0),e([u()],A.prototype,"_arcadeContextInfo",null),e([u()],A.prototype,"updating",null),e([u({readOnly:!0})],A.prototype,"allInputFields",null),e([u()],A.prototype,"_layerFieldsByName",null),e([u()],A.prototype,"arcadeEditType",void 0),e([u()],A.prototype,"contingencyConstraintViolations",void 0),e([u()],A.prototype,"feature",null),e([u()],A.prototype,"fieldsWithContingentValues",null),e([u({type:d})],A.prototype,"formTemplate",null),e([u()],A.prototype,"formDescription",null),e([u()],A.prototype,"formTitle",null),e([u()],A.prototype,"inputFields",void 0),e([u()],A.prototype,"joinedContingentValues",null),e([u()],A.prototype,"layer",null),e([u()],A.prototype,"messages",void 0),e([u()],A.prototype,"spatialReference",null),e([u()],A.prototype,"state",null),e([u()],A.prototype,"strict",void 0),e([u()],A.prototype,"submittable",null),e([u()],A.prototype,"valid",null),e([u()],A.prototype,"view",void 0),e([u()],A.prototype,"getValues",null),e([u()],A.prototype,"submit",null),A=e([p("esri.widgets.FeatureForm.FeatureFormViewModel")],A);const M=e=>"group"===e.type,S=e=>e.reduce(((e,t)=>g(t)?[...e,...t.inputFields]:[...e,t]),[]),L=(e,t,n)=>{null!=t&&e.set(t,n)},N=A;export{N as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import"../../intl.js";import{deprecated as n}from"../../core/deprecate.js";import s from"../../core/Evented.js";import{HandleOwnerMixin as i}from"../../core/HandleOwner.js";import o from"../../core/Logger.js";import{destroyMaybe as r}from"../../core/maybe.js";import{EsriPromiseMixin as a}from"../../core/Promise.js";import{watch as l}from"../../core/reactiveUtils.js";import{templateHasKey as u}from"../../core/string.js";import{property as p}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as c}from"../../core/accessorSupport/decorators/subclass.js";import d from"../../form/FormTemplate.js";import f from"../../layers/support/ContingentValue.js";import{isEditableLayer as h}from"../../layers/support/editableLayers.js";import m from"../../layers/support/LayerContingentValuesCache.js";import{parseFormTemplateString as g,isGroupInput as y,getNormalizedFeatureTypeInfo as _,isFieldInput as F}from"./featureFormUtils.js";import C from"./FieldInput.js";import{createFormExpressionArcadeExecutor as v}from"./FormExpressionArcadeExecutor.js";import{FormExpressionsManager as E}from"./FormExpressionsManager.js";import x from"./GroupInput.js";import{onLocaleChange as V}from"../../intl/locale.js";import{fetchMessageBundle as I}from"../../intl/messages.js";const b=new t({attributes:{}}),j=["editableExpression","requiredExpression","valueExpression","visibilityExpression"],w=["visibilityExpression"],M="#JSAPI_CONTINGENT_VALUE_EMPTY_HASH",T="#JSAPI_CONTINGENT_VALUE_ANY_HASH",A="#JSAPI_CONTINGENT_VALUE_NULL_HASH",S="esri.widgets.FeatureForm.FeatureFormViewModel",L=o.getLogger(S);let N=class extends(i(a(s.EventedAccessor))){constructor(e){super(e),this._expressionExecutorLookup=new Map,this._expressionLookup=new Map,this._expressionsManager=null,this._contingentValuesCache=null,this._featureClone=b.clone(),this._initialFeature=b.clone(),this.arcadeEditType="NA",this.contingencyConstraintViolations=new Map,this.inputs=[],this.messages=null,this.strict=!1,this._isSupportedElement=this._isSupportedElement.bind(this)}initialize(){const e=async()=>{const e=await I("esri/widgets/FeatureForm/t9n/FeatureForm");this.messages=e;for(const t of this.allFieldInputs)t.messages=e};e();const t=l((()=>[this.layer,!!this.layer?.loaded,this.formTemplate]),(([e,t])=>{null!=e&&(t?this._updateInputs():e.load().catch((()=>o.getLogger(this.declaredClass).error("Failed to load layer",e.loadError))))}),{equals:([e,t,n],[s,i,o])=>e===s&&t===i&&n===o,initial:!0}),n=l((()=>this._arcadeContextInfo),(e=>{null!=this._expressionsManager&&(this._expressionsManager.arcadeContextInfo=e)})),s=l((()=>this.layer),(e=>{const t="subtype-sublayer"===e?.type?e.parent:"feature"===e?.type?e:null;t&&this.addResolvingPromise(m.createLoadedLayerContingentValuesCache(t).then((e=>{this._contingentValuesCache=e,this.notifyChange("fieldsWithContingentValues")})))}),{initial:!0});this.handles.add([V(e),t,n,s])}destroy(){this.feature=null,this.layer=null,this._contingentValuesCache=r(this._contingentValuesCache)}get _arcadeContextInfo(){const{_initialFeature:e,arcadeEditType:t,layer:n,spatialReference:s,view:i}=this;return{layer:h(n)?n:null,originalFeature:e,editType:t,spatialReference:s,map:i?.map}}get updating(){return this.updatingHandles.updating}get allFieldInputs(){return R(this.inputs)}get _layerFieldsByName(){return new Map(this.layer?.fields.map((e=>[e.name,e])))}get feature(){return this._get("feature")}set feature(e){this._featureClone=e?e.clone():b.clone(),this._initialFeature=this._featureClone.clone(),this._resetFieldInputValues(this._featureClone),this.contingencyConstraintViolations.clear(),null!=this._expressionsManager&&(this._expressionsManager.resetExecutors(),this._expressionsManager.feature=this._featureClone,this.updatingHandles.addPromise(this._expressionsManager.evaluateAll().finally((()=>this._afterExpressionsEvaluated())))),this._set("feature",e)}get fieldsWithContingentValues(){if(null==this._contingentValuesCache)return new Set;const e=this._contingentValuesCache.fieldGroups.flatMap((e=>e.fields));return new Set(e)}get formTemplate(){return this.layer&&"formTemplate"in this.layer?this.layer.formTemplate:null}set formTemplate(e){void 0===e?this._clearOverride("formTemplate"):this._override("formTemplate",e)}get formDescription(){const{formTemplate:e,layer:t}=this;return null!=e&&e.description&&t?g(e.description,this.getValues(),t.fieldsIndex):null}get formTitle(){const{formTemplate:e,layer:t}=this;return null!=e&&e.title&&t?g(e.title,this.getValues(),t.fieldsIndex):null}set inputFields(e){n(L,"Property: FeatureFormViewModel.inputFields",{replacement:"FeatureFormViewModel.inputs",version:"4.27"}),this.inputs=e}get inputFields(){return n(L,"Property: FeatureFormViewModel.inputFields",{replacement:"FeatureFormViewModel.inputs",version:"4.27"}),this.inputs}get joinedContingentValues(){return this._joinContingentValues()}get layer(){return this.feature?.sourceLayer&&"applyEdits"in this.feature.sourceLayer?this.feature.sourceLayer:null}set layer(e){this._override("layer",e)}get spatialReference(){return this.layer?.spatialReference??null}set spatialReference(e){this._override("spatialReference",e)}get state(){return this.messages&&this.get("layer.loaded")?"ready":"disabled"}get submittable(){return!!this.valid||this.allFieldInputs.filter((e=>!e.valid)).every((({submittable:e})=>e))}get valid(){const e=this.allFieldInputs;return e.length>0&&e.every((({valid:e})=>e))}findField(e){return this.allFieldInputs.find((t=>t.name===e))}getValue(e){const{_featureClone:t,layer:n}=this,s=!!n?.getField(e);return t.getAttribute(e)??(s?null:void 0)}setValue(e,t){const{_featureClone:n,strict:s}=this,i=this.findField(e);t=""===t?null:t,i&&n.getAttribute(e)!==t&&(i.value=t,s&&!i.valid||(this._afterValueChange(i),null!=this._expressionsManager&&this.updatingHandles.addPromise(this._expressionsManager.evaluateInvalidated([i.name]).finally((()=>this._afterExpressionsEvaluated())))))}getValues(){return{...this._featureClone.attributes}}submit(){const e=this.allFieldInputs,t=new Set(e.filter((e=>e.valid)).map((({name:e})=>e))),n=e.filter((e=>!e.valid)).map((({name:e})=>e)),s=this.getValues();if(this.validateContingencyConstraints(s,{includeIncompleteViolations:!0}).length>0)for(const[i,o]of this.contingencyConstraintViolations.entries())"error"===o.type&&(t.delete(i),n.push(i));this.emit("submit",{valid:[...t],invalid:n,values:s})}validateContingencyConstraints(e,t){const{_contingentValuesCache:n}=this,s=new Map;if(this.contingencyConstraintViolations=s,null==n)return[];const{invalid:i,incomplete:o}=n.validateContingencyConstraints(e),r=[...i,...t?.includeIncompleteViolations?o:[]];for(const a of r)for(const e of a.fieldGroup.fields)s.set(e,a);return r}notifyFeatureGeometryChanged(){const{_expressionsManager:e,feature:t,_featureClone:n}=this;n.geometry=t.geometry,null!=e&&this.updatingHandles.addPromise(e.evaluateInvalidatedByGeometry().finally((()=>this._afterExpressionsEvaluated())))}_emitChangeEvent({name:e,valid:t,value:n}){this.emit("value-change",{layer:this.layer,feature:this.feature,fieldName:e,value:n,valid:t})}_updateInputs(){const{_featureClone:e,_initialFeature:t,arcadeEditType:n,formTemplate:s,inputs:i,messages:o,layer:r}=this,a={arcadeEditType:n,feature:e,initialFeature:t,layer:r,messages:o},l=i.slice(),u=null!=s&&s.elements&&s.elements.length>0?this._updateInputsUsingFormElements(l,s.elements,a):this._updateInputsUsingLayerFields(l,r?.fields,a);this.inputs=u}_updateInputsUsingFormElements(e,t,n){const s=new Map;for(const r of e)if(y(r)){G(s,r.groupElement,r);for(const e of r.inputs)G(s,e.fieldElement,e)}else G(s,r.fieldElement,r);const i=new Map,o=this._updateInputsUsingFormElementsRecursive({existingInputsByElement:s,updatedElements:t.filter(this._isSupportedElement),sharedInitializationProperties:n,group:null,newExpressionExecutorPromises:i});this.updatingHandles.addPromise(Promise.all(Array.from(i.values())).then((()=>{const e=Array.from(this._expressionExecutorLookup.values()),t=R(o);return this._createExpressionsManager(e,t),this._expressionsManager.evaluateAll().finally((()=>this._afterExpressionsEvaluated()))})));for(const[r,a]of s.entries())s.delete(r),a.destroy();return o}_updateInputsUsingFormElementsRecursive(e){const{existingInputsByElement:t,updatedElements:n,sharedInitializationProperties:s,group:i,newExpressionExecutorPromises:o}=e,r=[];for(const a of n){const e=t.has(a),n=e?t.get(a):P(a)?this._makeGroupInputFromGroupElement(a,s):this._makeFieldInputFromFieldElement(a,s,i);if(r.push(n),e)if(t.delete(a),y(n)){const{feature:e}=s;n.set({feature:e})}else n.set(s);else this._assignExpressionExecutors(n,a,o);if(P(a)){const e=a.elements.filter((e=>this._isSupportedElement(e)));n.inputs=this._updateInputsUsingFormElementsRecursive({existingInputsByElement:t,updatedElements:e,sharedInitializationProperties:s,group:n,newExpressionExecutorPromises:o})}}return r}_updateInputsUsingLayerFields(e,t,n){if(!Array.isArray(t))return o.getLogger(this.declaredClass).warn(this.declaredClass,"No attribute fields found."),[];const s=new Map;for(const o of e)if(y(o)){for(const e of o.inputs)e.destroy();o.inputs.length=0,o.destroy()}else null!=o.fieldElement?o.destroy():s.set(o.field,o);const i=[],{arcadeEditType:r,feature:a,initialFeature:l,layer:u,messages:p}=n;for(const o of t){const e=s.get(o)??new C({arcadeEditType:r,field:o,feature:a,initialFeature:l,layer:u,messages:p,value:a.getAttribute(o.name)??null});i.push(e),s.delete(o)}for(const[o,c]of s.entries())s.delete(o),c.destroy();return i}_resetFieldInputValues(e){for(const t of this.allFieldInputs)t.value=e.getAttribute(t.name)}_makeFieldInputFromFieldElement(e,t,n){const{arcadeEditType:s,feature:i,initialFeature:o,layer:r,messages:a}=t;return new C({arcadeEditType:s,fieldElement:e,field:this._layerFieldsByName.get(e.fieldName),value:i.getAttribute(e.fieldName)??null,feature:i,initialFeature:o,layer:r,group:n,messages:a})}_makeGroupInputFromGroupElement(e,t){const{feature:n,initialFeature:s}=t;return new x({groupElement:e,inputs:[],feature:n,initialFeature:s})}_assignExpressionExecutors(e,t,n){const s=P(t)?w:j,i=[];for(const o of s){const s=t[o],{_expressionExecutorLookup:i}=this;if(null!=s&&""!==s){const t=`${o}Executor`,r=this._expressionLookup.get(s)??this._addToExpressionLookup(s);if(i.has(r))e[t]=i.get(r);else if(n.has(r)){const s=n.get(r).then((n=>(e[t]=n,n)));n.set(r,s)}else{const s=v(r,this.layer).then((n=>(e[t]=n,i.set(r,n),n)));n.set(r,s)}}}return i}_createExpressionsManager(e,t){const{_arcadeContextInfo:n,_featureClone:s}=this;this._expressionsManager=new E({executors:e,feature:s,arcadeContextInfo:n,fieldInputs:t})}_afterValueChange(e){const{name:t,value:n}=e,{_featureClone:s,formTemplate:i,layer:o}=this;if(!o)return;const r=s.getAttribute(t);s.setAttribute(t,n);const{typeFieldName:a,types:l}=_(o);if(t===a&&n!==r){if("subtype-sublayer"===o.type){const e=o.parent?.findSublayerForFeature(s);s.sourceLayer=this.feature.sourceLayer=e}const e=new Set;for(const t of l)if(t.domains&&"object"==typeof t.domains)for(const n of Object.keys(t.domains))e.add(n);for(const t of e){const e=this.findField(t);e&&e.notifyChange("domain")}}if(null!=i){const{description:e,title:n}=i;n&&u(n,t)&&this.notifyChange("formTitle"),e&&u(e,t)&&this.notifyChange("formDescription")}this._emitChangeEvent(e)}_afterExpressionsEvaluated(){const{_featureClone:e}=this;for(const t of this.allFieldInputs)t.value!==e.getAttribute(t.name)&&this._afterValueChange(t)}_addToExpressionLookup(e){const{_expressionLookup:t,formTemplate:n}=this,s=null!=n&&null!=n.expressionInfos?Object.values(n.expressionInfos).find((t=>t.name===e)):null,i=s?.expression??e;return t.set(e,i),e!==i&&t.set(i,i),i}_isSupportedElement(e){return"field"===e.type||"group"===e.type||(o.getLogger(this.declaredClass).warn("form-info::unsupported-element-type","Only element types 'field' and 'group' are supported",`Element ${e.label} has unsupported type '${e.type}'`),!1)}_joinContingentValues(){const e=this._contingentValuesCache;if(null==e)return[];const{typeFieldName:t}=_(this.layer),n=t?this.getValue(t):null,s=[];for(const r of e.fieldGroups){const{contingencies:e,fields:t,name:i}=r,o=[];for(const s of e)s.isRetired||null!=s.subtype&&s.subtype.code!==n||o.push({values:s.values});o.length>0&&s.push({name:i,fields:t,contingencies:o})}const[i,o]=this._generateJoinPlan(s);return[...i.flatMap((e=>this._joinFieldGroupContingencies(e))),...o.flatMap((e=>e.contingencies))]}_generateJoinPlan(e){const t=new Map,n=[],s=new Set;for(const l of e)for(const e of l.fields)if(t.has(e)){const i=t.get(e),o=l,r=[i.name,o.name].sort().join("|");if(s.has(r))continue;n.push([i,o]),s.add(r),t.set(e,o)}else t.set(e,l);const i=new Set(n.flat()),o=new Set(e);for(const l of i)o.delete(l);const r=new Map,a=new Map;for(const l of new Set(n.flat())){const e=Symbol(l.name);r.set(e,new Set([l])),a.set(l,e)}for(const[l,u]of n){const e=a.get(l),t=a.get(u);if(e===t)continue;const n=r.get(e),s=r.get(t);for(const i of s)n.add(i),a.set(i,e);r.delete(t)}return[[...r.values()].map((e=>[...e])),[...o]]}_joinFieldGroupContingencies(e){const t=e.slice(),n=t.shift();let s=t.shift(),i=this._generateJoinKey(n.fields,s.fields),o=new Set([...n.fields,...s.fields]),r=new Map;for(const l of n.contingencies){const[e]=this._hashContingency(l,i.codedValueFields,!0);r.has(e)?r.get(e)?.push(l):r.set(e,[l])}for(;t.length>0;){const e=new Map,n=t.shift(),a=this._generateJoinKey(o,n.fields);for(const t of s.contingencies){const[n,s]=this._hashContingency(t,i.codedValueFields),o=s?this._findMatchingContingenciesWithAnyHashMask(r,n):r.get(n);if(r.has(T)&&o?.push(...this._findMatchingContingenciesContainingAny(t,r.get(T),i.codedValueFields)),null!=o)for(const r of o){const n=i.rangeFields.length>0?this._joinContingenciesWithRangeDomains(r,t,i.rangeFields):this._joinContingencies(r,t);if(null==n)break;const[s]=this._hashContingency(n,a.codedValueFields,!0);e.has(s)?e.get(s)?.push(n):e.set(s,[n])}}r=e,s=n,i=a,o=new Set([...o,...s.fields])}const a=[];for(const l of s.contingencies){const[e,t]=this._hashContingency(l,i.codedValueFields),n=t?this._findMatchingContingenciesWithAnyHashMask(r,e):r.get(e);if(r.has(T)&&n.push(...this._findMatchingContingenciesContainingAny(l,r.get(T),i.codedValueFields)),null!=n)for(const s of n){const e=i.rangeFields.length>0?this._joinContingenciesWithRangeDomains(s,l,i.rangeFields):this._joinContingencies(s,l);null!=e&&a.push(e)}}return a}_joinContingencies(e,t){const n={values:{...e.values,...t.values}};for(const[s,i]of Object.entries(n.values))"any"===i.objectType&&null!=e.values[s]&&(n.values[s]=e.values[s]);return n}_joinContingenciesWithRangeDomains(e,t,n){const s=this._joinContingencies(e,t);for(const i of n){const n=e.values[i],o=t.values[i],{leftIsNull:r,rightIsNull:a,bothAreNull:l,leftIsAny:u,rightIsAny:p,bothAreAny:c,leftIsRange:d,rightIsRange:h}=this._compareObjectTypes(n.objectType,o.objectType);if(l||c)continue;if(r&&p||a&&u){s.values[i]=new f({objectType:"null"});continue}if(r&&h||a&&d)return null;u?(n.minValue=-1/0,n.maxValue=1/0):p&&(o.minValue=-1/0,o.maxValue=1/0);const m=Math.max(n.minValue,o.minValue),g=Math.min(n.maxValue,o.maxValue);if(m>g)return null;s.values[i]=new f({objectType:"range",minValue:m,maxValue:g})}return s}_findMatchingContingenciesContainingAny(e,t,n){return t.filter((t=>n.every((n=>{const s=t.values[n],i=e.values[n];return"any"===s.objectType||"any"===i.objectType||s.codedValue?.code===i.codedValue?.code}))))}_findMatchingContingenciesWithAnyHashMask(e,t){const n=RegExp(`${t}$`),s=[];for(const[i,o]of e){if(i===T)break;n.test(i)&&s.push(...o)}return s}_generateJoinKey(e,t){const n=Array.isArray(e)?new Set(e):e,s=Array.isArray(t)?new Set(t):t,i=n.size<s.size?n:s,o=i===n?s:n,r=new Set,a=new Set;for(const l of i)if(o.has(l)){const e=this.layer?.getFieldDomain(l,{feature:this.feature});if(null==e)continue;switch(e.type){case"coded-value":r.add(l);break;case"range":a.add(l)}}return{codedValueFields:[...r],rangeFields:[...a]}}_hashContingency(e,t,n=!1){if(t.length<1)return[M,!1];const s=[];let i=!1;for(const o of t){const t=e.values[o];if("any"===t.objectType){if(n)return[T,!0];i=!0,s.push(`${o}:.*`)}else"null"===t.objectType?s.push(`${o}:${A}`):s.push(`${o}:${t.codedValue?.code}`)}return[s.sort().join("&"),i]}_compareObjectTypes(e,t){return{leftIsNull:"null"===e,rightIsNull:"null"===t,bothAreNull:"null"===e&&"null"===t,leftIsAny:"any"===e,rightIsAny:"any"===t,bothAreAny:"any"===e&&"any"===t,leftIsRange:"range"===e,rightIsRange:"range"===t}}};e([p()],N.prototype,"_featureClone",void 0),e([p()],N.prototype,"_arcadeContextInfo",null),e([p()],N.prototype,"updating",null),e([p({readOnly:!0})],N.prototype,"allFieldInputs",null),e([p()],N.prototype,"_layerFieldsByName",null),e([p()],N.prototype,"arcadeEditType",void 0),e([p()],N.prototype,"contingencyConstraintViolations",void 0),e([p()],N.prototype,"feature",null),e([p()],N.prototype,"fieldsWithContingentValues",null),e([p({type:d})],N.prototype,"formTemplate",null),e([p()],N.prototype,"formDescription",null),e([p()],N.prototype,"formTitle",null),e([p()],N.prototype,"inputs",void 0),e([p()],N.prototype,"inputFields",null),e([p()],N.prototype,"joinedContingentValues",null),e([p()],N.prototype,"layer",null),e([p()],N.prototype,"messages",void 0),e([p()],N.prototype,"spatialReference",null),e([p()],N.prototype,"state",null),e([p()],N.prototype,"strict",void 0),e([p()],N.prototype,"submittable",null),e([p()],N.prototype,"valid",null),e([p()],N.prototype,"view",void 0),e([p()],N.prototype,"getValues",null),e([p()],N.prototype,"submit",null),N=e([c(S)],N);const P=e=>"group"===e.type,k=e=>e.reduce(((e,t)=>y(t)?[...e,...t.inputs]:[...e,t]),[]),R=e=>k(e).filter(F),G=(e,t,n)=>{null!=t&&e.set(t,n)},H=N;export{H as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import"../../intl.js";import t from"../../core/Accessor.js";import{HandleOwnerMixin as i}from"../../core/HandleOwner.js";import{get as r}from"../../core/maybe.js";import{generateUID as l}from"../../core/uid.js";import{property as s}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{CodedValue as n}from"../../layers/support/CodedValue.js";import u from"../../layers/support/CodedValueDomain.js";import"../../layers/support/Domain.js";import"../../layers/support/InheritedDomain.js";import"../../layers/support/RangeDomain.js";import{validateDomainValue as a,DomainValidationError as p,getDomainRange as d}from"../../layers/support/domainUtils.js";import{isNumericField as m,isStringField as y,isDateField as c,TypeValidationError as h,validateFieldValue as E,getFeatureEditFields as f,getFeatureGeometryFields as g,NumericRangeValidationError as v,getFieldRange as x}from"../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as b}from"../../layers/support/layerUtils.js";import{getNormalizedFeatureTypeInfo as _,isFieldElementWithInputType as V}from"./featureFormUtils.js";import{substitute as T}from"../../intl/substitute.js";var O,j;!function(e){e.Text="text",e.Number="number",e.Date="date",e.Unsupported="unsupported"}(O||(O={})),function(e){e.TOO_SHORT="length-validation-error::too-short"}(j||(j={}));const D={type:"number"},A={type:"number",intlOptions:{notation:"scientific"}},F={type:"date",intlOptions:{day:"2-digit",month:"2-digit",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}},N="__internal-type-based-coded-value-domain__";function U(e){return e>=1e7||e<=-1e7}let L=class extends(i(t)){constructor(e){super(e),this._storedValue=null,this.arcadeEditType="NA",this.editableExpressionExecutor=null,this.id=l().toString(),this.requiredExpressionExecutor=null,this.valueExpressionExecutor=null,this.visibilityExpressionExecutor=null,this.feature=null,this.field=null,this.fieldElement=null,this.layer=null,this.error=null,this.group=null,this.messages=null}get _configAllowsEdits(){const{fieldElement:e,layer:t,name:i}=this;if(null!=e)return e.editableExpression?!!this.evaluatedEditableExpression:!1!==e.editable;if(t?.userHasUpdateItemPrivileges)return!0;const r=t&&"popupTemplate"in t?t?.popupTemplate?.fieldInfos?.find((({fieldName:e})=>e===i)):null;return r?.isEditable??!0}get _layerFieldAllowsEdits(){const{field:e,layer:t}=this;if(!t||!e)return!1;const i=b(t),r=i?.operations.supportsEditing,l=e.editable,s=q(i,this.arcadeEditType);return!!(r&&l&&s)}get isUsingValueExpression(){return this._shouldUseValueExpression()}get evaluatedEditableExpression(){const{editableExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedRequiredExpression(){const{requiredExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedVisibilityExpression(){const{visibilityExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedValueExpression(){const{valueExpressionExecutor:e}=this;return null!=e?e.lastEvaluatedValue:null}set initialFeature(e){this._set("initialFeature",e),this.notifyChange("valid")}get description(){return this.fieldElement?.description}get domain(){const{layer:e}=this,{typeFieldName:t,types:i}=_(e);if(t===this.name&&null==this.field.domain)return new u({name:N,codedValues:i.map((({code:e,name:t})=>new n({code:e,name:t})))});const{feature:l}=this,s=e?.getFieldDomain(this.name,{feature:l}),o=r(this.fieldElement,"domain");return null!=o&&this._isDomainCompatible(o)?o:s}get editable(){return!!this._layerFieldAllowsEdits&&(this.evaluatedEditableExpression??this._configAllowsEdits)}get inputType(){return this.fieldElement?.input?.type}get errorMessage(){return this._toErrorMessage()}get hint(){return this.fieldElement?.hint}get includeTime(){const{fieldElement:e}=this,t=null!=e&&"datetime-picker"===e.input?.type?e.input.includeTime:void 0;return void 0===t||t}get label(){return null!=this.fieldElement&&this.fieldElement.label||this.field.alias||this.field.name}get maxLength(){const e=-1;if(this.type===O.Date)return e;const{field:t,fieldElement:i}=this,r=t?.length,l=w(i)?i.input.maxLength:NaN;return null!=l&&!isNaN(l)&&l>=e&&(r===e||l<=r)?l:r}get minLength(){const e=-1;if(this.type===O.Date)return e;const{field:t,fieldElement:i}=this,r=t?.length,l=w(i)?i.input.minLength:NaN;return null!=l&&!isNaN(l)&&l>=e&&(r===e||l<=r)?l:e}get name(){return this.field?.name}get required(){const{editable:e,evaluatedRequiredExpression:t,field:i,visible:r}=this;return!!e&&(!1===i?.nullable||!(!r||null==t)&&t)}set required(e){this._overrideIfSome("required",e)}get submittable(){const{field:e,required:t,valid:i,value:r}=this;return(!t||null!=r)&&(!!i||this.initialFeature.getAttribute(e.name)===r)}get type(){const{field:e}=this;return m(e)?O.Number:y(e)?O.Text:c(e)?O.Date:O.Unsupported}get updating(){const{editableExpressionExecutor:e,valueExpressionExecutor:t}=this;return null!=t&&t.updating||null!=e&&e.updating}get valid(){const e=this.editable?this._validate():null;return this._set("error",e),null===e}get value(){if(this._shouldUseValueExpression()){const e=this.evaluatedValueExpression;if(this.type===O.Date){if(e instanceof Date)return e.getTime();if("number"!=typeof e)return parseInt(e,10)}return null!=e&&"object"==typeof e?e.toString():e}return this.get("_storedValue")}set value(e){this.notifyChange("evaluatedVisibilityExpression"),this.set("_storedValue",e)}get visible(){return!this._isEditorField()&&(null!=this.evaluatedVisibilityExpression?this.evaluatedVisibilityExpression:null!=this.fieldElement||this._isVisibleByDefault())}_isDomainCompatible(e){const{field:t}=this;if("coded-value"===e?.type){const i=typeof e.codedValues[0].code;if("string"===i&&y(t)||"number"===i&&m(t))return!0}return!!("range"===e?.type&&m(t)||c(t))}_validate(){const{domain:e,field:t,initialFeature:i,minLength:r,required:l,type:s,valid:o,value:n}=this,u=l&&null===n,p=void 0!==o;return!u&&i.getAttribute(t.name)===n&&p?null:u?h.INVALID_TYPE:"text"===s&&r>-1&&"string"==typeof n&&n.length<r?j.TOO_SHORT:e?null!==n||l?a(e,n):null:E(t,n)}_isVisibleByDefault(){const e=this.field?.type;return this.field?.visible&&"oid"!==e&&"global-id"!==e&&!this._isGeometryField()}_isEditorField(){return f(this.layer).includes(this.name)}_isGeometryField(){return g(this.layer).includes(this.name)}_shouldUseValueExpression(){return this._layerFieldAllowsEdits&&!this._configAllowsEdits&&null!=this.valueExpressionExecutor}_toErrorMessage(){const{domain:e,field:t,messages:i,minLength:r,value:l,required:s,type:o}=this,n=this.error;if(!i)return null;if(s&&null===l)return i.validationErrors.cannotBeNull;if(n===p.VALUE_OUT_OF_RANGE||n===v.OUT_OF_RANGE){const r=d(e)||x(t);return T(i.validationErrors.outsideRange,r,{format:{max:"date"===o?F:U(r.max)?A:D,min:"date"===o?F:U(r.min)?A:D}})}return n===p.INVALID_CODED_VALUE?i.validationErrors.invalidCodedValue:n===h.INVALID_TYPE?i.validationErrors.invalidType:n===j.TOO_SHORT?T(i.validationErrors.tooShort,{min:r}):null}};e([s()],L.prototype,"_storedValue",void 0),e([s()],L.prototype,"_configAllowsEdits",null),e([s()],L.prototype,"_layerFieldAllowsEdits",null),e([s()],L.prototype,"arcadeEditType",void 0),e([s()],L.prototype,"editableExpressionExecutor",void 0),e([s()],L.prototype,"requiredExpressionExecutor",void 0),e([s()],L.prototype,"valueExpressionExecutor",void 0),e([s()],L.prototype,"isUsingValueExpression",null),e([s()],L.prototype,"visibilityExpressionExecutor",void 0),e([s()],L.prototype,"evaluatedEditableExpression",null),e([s()],L.prototype,"evaluatedRequiredExpression",null),e([s()],L.prototype,"evaluatedVisibilityExpression",null),e([s()],L.prototype,"evaluatedValueExpression",null),e([s()],L.prototype,"feature",void 0),e([s()],L.prototype,"field",void 0),e([s({constructOnly:!0})],L.prototype,"fieldElement",void 0),e([s()],L.prototype,"initialFeature",null),e([s()],L.prototype,"layer",void 0),e([s({readOnly:!0})],L.prototype,"description",null),e([s()],L.prototype,"domain",null),e([s()],L.prototype,"editable",null),e([s({readOnly:!0})],L.prototype,"inputType",null),e([s({readOnly:!0})],L.prototype,"error",void 0),e([s({dependsOn:["error","messages","value"]})],L.prototype,"errorMessage",null),e([s()],L.prototype,"group",void 0),e([s({readOnly:!0})],L.prototype,"hint",null),e([s()],L.prototype,"includeTime",null),e([s()],L.prototype,"label",null),e([s()],L.prototype,"maxLength",null),e([s()],L.prototype,"minLength",null),e([s()],L.prototype,"messages",void 0),e([s({readOnly:!0})],L.prototype,"name",null),e([s()],L.prototype,"required",null),e([s()],L.prototype,"submittable",null),e([s()],L.prototype,"type",null),e([s()],L.prototype,"updating",null),e([s()],L.prototype,"valid",null),e([s({value:null})],L.prototype,"value",null),e([s()],L.prototype,"visible",null),L=e([o("esri.widgets.FeatureForm.InputField")],L);const q=(e,t)=>{if(!e)return!0;const{operations:i}=e;switch(t){case"INSERT":return i.supportsAdd;case"UPDATE":case"DELETE":return i.supportsUpdate;default:return!0}},w=e=>null!=e&&(V(e,"text-box")||V(e,"text-area")),I=L;export{I as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import"../../intl.js";import t from"../../core/Accessor.js";import{HandleOwnerMixin as i}from"../../core/HandleOwner.js";import{get as r}from"../../core/maybe.js";import{generateUID as l}from"../../core/uid.js";import{property as s}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{CodedValue as n}from"../../layers/support/CodedValue.js";import u from"../../layers/support/CodedValueDomain.js";import"../../layers/support/Domain.js";import"../../layers/support/InheritedDomain.js";import"../../layers/support/RangeDomain.js";import{validateDomainValue as a,DomainValidationError as p,getDomainRange as d}from"../../layers/support/domainUtils.js";import{isNumericField as m,isStringField as y,isDateField as c,TypeValidationError as h,validateFieldValue as E,getFeatureEditFields as f,getFeatureGeometryFields as g,NumericRangeValidationError as v,getFieldRange as x}from"../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as b}from"../../layers/support/layerUtils.js";import{getNormalizedFeatureTypeInfo as _,isFieldElementWithInputType as V}from"./featureFormUtils.js";import{substitute as T}from"../../intl/substitute.js";var O,j;!function(e){e.Text="text",e.Number="number",e.Date="date",e.Unsupported="unsupported"}(O||(O={})),function(e){e.TOO_SHORT="length-validation-error::too-short"}(j||(j={}));const D={type:"number"},A={type:"number",intlOptions:{notation:"scientific"}},F={type:"date",intlOptions:{day:"2-digit",month:"2-digit",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}},N="__internal-type-based-coded-value-domain__";function U(e){return e>=1e7||e<=-1e7}let L=class extends(i(t)){constructor(e){super(e),this._storedValue=null,this.arcadeEditType="NA",this.editableExpressionExecutor=null,this.id=l().toString(),this.requiredExpressionExecutor=null,this.valueExpressionExecutor=null,this.visibilityExpressionExecutor=null,this.feature=null,this.field=null,this.fieldElement=null,this.layer=null,this.error=null,this.group=null,this.messages=null}get _configAllowsEdits(){const{fieldElement:e,layer:t,name:i}=this;if(null!=e)return e.editableExpression?!!this.evaluatedEditableExpression:!1!==e.editable;if(t?.userHasUpdateItemPrivileges)return!0;const r=t&&"popupTemplate"in t?t?.popupTemplate?.fieldInfos?.find((({fieldName:e})=>e===i)):null;return r?.isEditable??!0}get _layerFieldAllowsEdits(){const{field:e,layer:t}=this;if(!t||!e)return!1;const i=b(t),r=i?.operations.supportsEditing,l=e.editable,s=q(i,this.arcadeEditType);return!!(r&&l&&s)}get isUsingValueExpression(){return this._shouldUseValueExpression()}get evaluatedEditableExpression(){const{editableExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedRequiredExpression(){const{requiredExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedVisibilityExpression(){const{visibilityExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedValueExpression(){const{valueExpressionExecutor:e}=this;return null!=e?e.lastEvaluatedValue:null}set initialFeature(e){this._set("initialFeature",e),this.notifyChange("valid")}get description(){return this.fieldElement?.description}get domain(){const{layer:e}=this,{typeFieldName:t,types:i}=_(e);if(t===this.name&&null==this.field.domain)return new u({name:N,codedValues:i.map((({code:e,name:t})=>new n({code:e,name:t})))});const{feature:l}=this,s=e?.getFieldDomain(this.name,{feature:l}),o=r(this.fieldElement,"domain");return null!=o&&this._isDomainCompatible(o)?o:s}get editable(){return!!this._layerFieldAllowsEdits&&(this.evaluatedEditableExpression??this._configAllowsEdits)}get inputType(){return this.fieldElement?.input?.type}get errorMessage(){return this._toErrorMessage()}get hint(){return this.fieldElement?.hint}get includeTime(){const{fieldElement:e}=this,t=null!=e&&"datetime-picker"===e.input?.type?e.input.includeTime:void 0;return void 0===t||t}get label(){return null!=this.fieldElement&&this.fieldElement.label||this.field.alias||this.field.name}get maxLength(){const e=-1;if(this.type===O.Date)return e;const{field:t,fieldElement:i}=this,r=t?.length,l=w(i)?i.input.maxLength:NaN;return null!=l&&!isNaN(l)&&l>=e&&(r===e||l<=r)?l:r}get minLength(){const e=-1;if(this.type===O.Date)return e;const{field:t,fieldElement:i}=this,r=t?.length,l=w(i)?i.input.minLength:NaN;return null!=l&&!isNaN(l)&&l>=e&&(r===e||l<=r)?l:e}get name(){return this.field?.name}get required(){const{editable:e,evaluatedRequiredExpression:t,field:i,visible:r}=this;return!!e&&(!1===i?.nullable||!(!r||null==t)&&t)}set required(e){this._overrideIfSome("required",e)}get submittable(){const{field:e,required:t,valid:i,value:r}=this;return(!t||null!=r)&&(!!i||this.initialFeature.getAttribute(e.name)===r)}get type(){const{field:e}=this;return m(e)?O.Number:y(e)?O.Text:c(e)?O.Date:O.Unsupported}get updating(){const{editableExpressionExecutor:e,valueExpressionExecutor:t}=this;return null!=t&&t.updating||null!=e&&e.updating}get valid(){const e=this.editable?this._validate():null;return this._set("error",e),null===e}get value(){if(this._shouldUseValueExpression()){const e=this.evaluatedValueExpression;if(this.type===O.Date){if(e instanceof Date)return e.getTime();if("number"!=typeof e)return parseInt(e,10)}return null!=e&&"object"==typeof e?e.toString():e}return this.get("_storedValue")}set value(e){this.notifyChange("evaluatedVisibilityExpression"),this.set("_storedValue",e)}get visible(){return!this._isEditorField()&&(null!=this.evaluatedVisibilityExpression?this.evaluatedVisibilityExpression:null!=this.fieldElement||this._isVisibleByDefault())}_isDomainCompatible(e){const{field:t}=this;if("coded-value"===e?.type){const i=typeof e.codedValues[0].code;if("string"===i&&y(t)||"number"===i&&m(t))return!0}return!!("range"===e?.type&&m(t)||c(t))}_validate(){const{domain:e,field:t,initialFeature:i,minLength:r,required:l,type:s,valid:o,value:n}=this,u=l&&null===n,p=void 0!==o;return!u&&i.getAttribute(t.name)===n&&p?null:u?h.INVALID_TYPE:"text"===s&&r>-1&&"string"==typeof n&&n.length<r?j.TOO_SHORT:e?null!==n||l?a(e,n):null:E(t,n)}_isVisibleByDefault(){const e=this.field?.type;return this.field?.visible&&"oid"!==e&&"global-id"!==e&&!this._isGeometryField()}_isEditorField(){return f(this.layer).includes(this.name)}_isGeometryField(){return g(this.layer).includes(this.name)}_shouldUseValueExpression(){return this._layerFieldAllowsEdits&&!this._configAllowsEdits&&null!=this.valueExpressionExecutor}_toErrorMessage(){const{domain:e,field:t,messages:i,minLength:r,value:l,required:s,type:o}=this,n=this.error;if(!i)return null;if(s&&null===l)return i.validationErrors.cannotBeNull;if(n===p.VALUE_OUT_OF_RANGE||n===v.OUT_OF_RANGE){const r=d(e)||x(t);return T(i.validationErrors.outsideRange,r,{format:{max:"date"===o?F:U(r.max)?A:D,min:"date"===o?F:U(r.min)?A:D}})}return n===p.INVALID_CODED_VALUE?i.validationErrors.invalidCodedValue:n===h.INVALID_TYPE?i.validationErrors.invalidType:n===j.TOO_SHORT?T(i.validationErrors.tooShort,{min:r}):null}};e([s()],L.prototype,"_storedValue",void 0),e([s()],L.prototype,"_configAllowsEdits",null),e([s()],L.prototype,"_layerFieldAllowsEdits",null),e([s()],L.prototype,"arcadeEditType",void 0),e([s()],L.prototype,"editableExpressionExecutor",void 0),e([s()],L.prototype,"requiredExpressionExecutor",void 0),e([s()],L.prototype,"valueExpressionExecutor",void 0),e([s()],L.prototype,"isUsingValueExpression",null),e([s()],L.prototype,"visibilityExpressionExecutor",void 0),e([s()],L.prototype,"evaluatedEditableExpression",null),e([s()],L.prototype,"evaluatedRequiredExpression",null),e([s()],L.prototype,"evaluatedVisibilityExpression",null),e([s()],L.prototype,"evaluatedValueExpression",null),e([s()],L.prototype,"feature",void 0),e([s()],L.prototype,"field",void 0),e([s({constructOnly:!0})],L.prototype,"fieldElement",void 0),e([s()],L.prototype,"initialFeature",null),e([s()],L.prototype,"layer",void 0),e([s({readOnly:!0})],L.prototype,"description",null),e([s()],L.prototype,"domain",null),e([s()],L.prototype,"editable",null),e([s({readOnly:!0})],L.prototype,"inputType",null),e([s({readOnly:!0})],L.prototype,"error",void 0),e([s({dependsOn:["error","messages","value"]})],L.prototype,"errorMessage",null),e([s()],L.prototype,"group",void 0),e([s({readOnly:!0})],L.prototype,"hint",null),e([s()],L.prototype,"includeTime",null),e([s()],L.prototype,"label",null),e([s()],L.prototype,"maxLength",null),e([s()],L.prototype,"minLength",null),e([s()],L.prototype,"messages",void 0),e([s({readOnly:!0})],L.prototype,"name",null),e([s()],L.prototype,"required",null),e([s()],L.prototype,"submittable",null),e([s()],L.prototype,"type",null),e([s()],L.prototype,"updating",null),e([s()],L.prototype,"valid",null),e([s({value:null})],L.prototype,"value",null),e([s()],L.prototype,"visible",null),L=e([o("esri.widgets.FeatureForm.FieldInput")],L);const q=(e,t)=>{if(!e)return!0;const{operations:i}=e;switch(t){case"INSERT":return i.supportsAdd;case"UPDATE":case"DELETE":return i.supportsUpdate;default:return!0}},w=e=>null!=e&&(V(e,"text-box")||V(e,"text-area")),I=L;export{I as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Accessor.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import{isAbortError as r,createResolver as o}from"../../core/promiseUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";const n="#JSAPI_FORM_EXPRESSIONS_MANAGER_GEOMETRY",l="esri.widgets.FeatureForm.FormExpressionsManager";let c=class extends t{constructor(e){super(e),this._fieldReferencesLookup=new Map,this._fieldsAffectedLookup=new Map,this._latestFieldValues={...e.feature.attributes}}initialize(){this._dependencyGraph=this._buildDependencyGraph()}get _baseContext(){const{editType:e,layer:t,map:s,originalFeature:r,spatialReference:o}=this.arcadeContextInfo,a="feature"===t?.type?t:"scene"===t?.type&&null!=t.associatedLayer?t.associatedLayer:void 0;return[{$originalfeature:r,$editcontext:{editType:e},$layer:a,$featureset:a,$datastore:t?.url,$map:s},{spatialReference:o??void 0}]}set feature(e){this._latestFieldValues={...e?.attributes},this._set("feature",e)}evaluateAll(){return this._evaluate(this.executors)}evaluateExpressions(e){return this._evaluate(e)}evaluateInvalidated(e){const{_fieldReferencesLookup:t,_latestFieldValues:s,feature:r}=this,o=new Set;for(const a of e)if(s[a]=r.getAttribute(a),t.has(a))for(const e of t.get(a))o.add(e);return this._evaluate([...o])}async evaluateInvalidatedByGeometry(){if(this._fieldReferencesLookup.has(n))return this._evaluate([...this._fieldReferencesLookup.get(n)])}resetExecutors(){for(const e of this.executors)e.reset()}_buildDependencyGraph(){const{_fieldReferencesLookup:e,_fieldsAffectedLookup:t,executors:r}=this,o=new Map(this.inputFields.map((e=>[e.name,e]))),a=new Map(r.map((e=>[e,new Array])));for(const i of r){for(const r of i.fieldsUsed){s(e,r,(()=>new Set)).add(i);const n=o.get(r),{valueExpressionExecutor:l,editableExpressionExecutor:c}=n;if(null!=l&&l!==i){a.get(l).push(i);s(t,l,(()=>new Set)).add(n)}if(null!=c&&c!==i){a.get(c).push(i);s(t,c,(()=>new Set)).add(n)}}if(i.geometryUsed){s(e,n,(()=>new Set)).add(i)}}return a}async _evaluate(e){const t=new Map,{_dependencyGraph:s,_fieldsAffectedLookup:o,_latestFieldValues:a}=this;for(const r of e)u(r,t,s);for(const[n,{resolver:l,dependencyPromises:c}]of t){Promise.all(c).then((async()=>{const[e,t]=this._makeContext(a);return n.executeAsync(e,t)})).then((()=>{if(o.has(n))for(const e of o.get(n))this._latestFieldValues[e.name]=e.value;l.resolve()}),(e=>{!e||r(e)||p(e)||n.markStale(),l.reject(e)}))}const i=(await Promise.allSettled(Array.from(t.values(),(({resolver:e})=>e.promise)))).filter((e=>"rejected"===e.status&&!(r(e.reason)||p(e.reason))));if(i.length>0)throw new AggregateError(i,"One or more expression executions failed")}_makeContext(e){const[t,s]=this._baseContext,r=this.feature.clone();return r.attributes=e,[{...t,$feature:r},s]}};e([a()],c.prototype,"_baseContext",null),e([a()],c.prototype,"feature",null),e([a()],c.prototype,"executors",void 0),e([a()],c.prototype,"inputFields",void 0),e([a()],c.prototype,"arcadeContextInfo",void 0),c=e([i(l)],c);const u=(e,t,s)=>{if(t.has(e))return;const r=o();t.set(e,{resolver:r,dependencyPromises:[]}),e.abort();const a=s.get(e);for(const o of a)u(o,t,s),t.get(o).dependencyPromises.push(r.promise)},p=e=>e&&"object"==typeof e&&"message"in e&&"Cancelled"===e.message;export{c as FormExpressionsManager};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Accessor.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import{isAbortError as r,createResolver as o}from"../../core/promiseUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as n}from"../../core/accessorSupport/decorators/subclass.js";const i="#JSAPI_FORM_EXPRESSIONS_MANAGER_GEOMETRY",l="esri.widgets.FeatureForm.FormExpressionsManager";let c=class extends t{constructor(e){super(e),this._fieldReferencesLookup=new Map,this._fieldsAffectedLookup=new Map,this._latestFieldValues={...e.feature.attributes}}initialize(){this._dependencyGraph=this._buildDependencyGraph()}get _baseContext(){const{editType:e,layer:t,map:s,originalFeature:r,spatialReference:o}=this.arcadeContextInfo,a="feature"===t?.type?t:"scene"===t?.type&&null!=t.associatedLayer?t.associatedLayer:void 0;return[{$originalfeature:r,$editcontext:{editType:e},$layer:a,$featureset:a,$datastore:t?.url,$map:s},{spatialReference:o??void 0}]}set feature(e){this._latestFieldValues={...e?.attributes},this._set("feature",e)}evaluateAll(){return this._evaluate(this.executors)}evaluateExpressions(e){return this._evaluate(e)}evaluateInvalidated(e){const{_fieldReferencesLookup:t,_latestFieldValues:s,feature:r}=this,o=new Set;for(const a of e)if(s[a]=r.getAttribute(a),t.has(a))for(const e of t.get(a))o.add(e);return this._evaluate([...o])}async evaluateInvalidatedByGeometry(){if(this._fieldReferencesLookup.has(i))return this._evaluate([...this._fieldReferencesLookup.get(i)])}resetExecutors(){for(const e of this.executors)e.reset()}_buildDependencyGraph(){const{_fieldReferencesLookup:e,_fieldsAffectedLookup:t,executors:r}=this,o=new Map(this.fieldInputs.map((e=>[e.name,e]))),a=new Map(r.map((e=>[e,new Array])));for(const n of r){for(const r of n.fieldsUsed){s(e,r,(()=>new Set)).add(n);const i=o.get(r),{valueExpressionExecutor:l,editableExpressionExecutor:c}=i;if(null!=l&&l!==n){a.get(l).push(n);s(t,l,(()=>new Set)).add(i)}if(null!=c&&c!==n){a.get(c).push(n);s(t,c,(()=>new Set)).add(i)}}if(n.geometryUsed){s(e,i,(()=>new Set)).add(n)}}return a}async _evaluate(e){const t=new Map,{_dependencyGraph:s,_fieldsAffectedLookup:o,_latestFieldValues:a}=this;for(const r of e)u(r,t,s);for(const[i,{resolver:l,dependencyPromises:c}]of t){Promise.all(c).then((async()=>{const[e,t]=this._makeContext(a);return i.executeAsync(e,t)})).then((()=>{if(o.has(i))for(const e of o.get(i))this._latestFieldValues[e.name]=e.value;l.resolve()}),(e=>{!e||r(e)||p(e)||i.markStale(),l.reject(e)}))}const n=(await Promise.allSettled(Array.from(t.values(),(({resolver:e})=>e.promise)))).filter((e=>"rejected"===e.status&&!(r(e.reason)||p(e.reason))));if(n.length>0)throw new AggregateError(n,"One or more expression executions failed")}_makeContext(e){const[t,s]=this._baseContext,r=this.feature.clone();return r.attributes=e,[{...t,$feature:r},s]}};e([a()],c.prototype,"_baseContext",null),e([a()],c.prototype,"feature",null),e([a()],c.prototype,"executors",void 0),e([a()],c.prototype,"fieldInputs",void 0),e([a()],c.prototype,"arcadeContextInfo",void 0),c=e([n(l)],c);const u=(e,t,s)=>{if(t.has(e))return;const r=o();t.set(e,{resolver:r,dependencyPromises:[]}),e.abort();const a=s.get(e);for(const o of a)u(o,t,s),t.get(o).dependencyPromises.push(r.promise)},p=e=>e&&"object"==typeof e&&"message"in e&&"Cancelled"===e.message;export{c as FormExpressionsManager};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
+ */
5
+ import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../core/Accessor.js";import{deprecated as i}from"../../core/deprecate.js";import{HandleOwnerMixin as s}from"../../core/HandleOwner.js";import r from"../../core/Logger.js";import{applySome as o}from"../../core/maybe.js";import{watch as p}from"../../core/reactiveUtils.js";import{property as n}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";const u="esri.widgets.FeatureForm.GroupInput",a=r.getLogger(u);let c=class extends(s(e)){constructor(t){super(t),this._expressionTrackingHandles=new Map,this.visibilityExpressionExecutor=null,this.feature=null,this.groupElement=null}initialize(){this.addHandles([p((()=>[this.visible,this.inputs]),(([t])=>{const{inputs:e}=this,i=!!t&&void 0;for(const s of e)s.required=i}),{initial:!0,equals:(t,e)=>e[0]===t[0]&&e[1]===t[1]})])}destroy(){for(const t of this._expressionTrackingHandles.values())t.remove()}get visibilityExpression(){return this.groupElement?.visibilityExpression}set visibilityExpression(t){o(this.groupElement,(e=>{e.visibilityExpression=t}))}get evaluatedVisibilityExpression(){const{visibilityExpressionExecutor:t}=this;return null!=t?!!t.lastEvaluatedValue:null}get description(){return this.groupElement?.description}set description(t){o(this.groupElement,(e=>{e.description=t}))}set inputFields(t){i(a,"Property: GroupInput.inputFields",{replacement:"GroupInput.inputs",version:"4.27"}),this.inputs=t}get inputFields(){return i(a,"Property: GroupInput.inputFields",{replacement:"GroupInput.inputs",version:"4.27"}),this.inputs}get inputs(){return this._get("inputs")}set inputs(t){this.handles.removeAll(),t&&this.handles.add(t.map((t=>p((()=>t.visible),(()=>this._dirtyEvaluatedVisibilityExpression()))))),this._set("inputs",t)}get label(){return this.groupElement?.label}set label(t){o(this.groupElement,(e=>{e.label=t}))}get state(){return null!=this.groupElement&&this.groupElement.initialState||"expanded"}set state(t){this._overrideIfSome("state",t)}get visible(){return!1!==this.evaluatedVisibilityExpression&&this.inputs&&this.inputs.some((t=>t.visible))}_dirtyEvaluatedVisibilityExpression(){const{groupElement:t}=this;null!=t&&t.visibilityExpression&&this.notifyChange("evaluatedVisibilityExpression")}};t([n()],c.prototype,"visibilityExpression",null),t([n()],c.prototype,"visibilityExpressionExecutor",void 0),t([n()],c.prototype,"evaluatedVisibilityExpression",null),t([n()],c.prototype,"description",null),t([n()],c.prototype,"feature",void 0),t([n()],c.prototype,"groupElement",void 0),t([n()],c.prototype,"initialFeature",void 0),t([n()],c.prototype,"inputs",null),t([n()],c.prototype,"label",null),t([n()],c.prototype,"state",null),t([n()],c.prototype,"visible",null),c=t([l(u)],c);const d=c;export{d as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- const e="esri-feature-form",i=`${e}__date`,t=`${e}__group`,r=`${e}__input`,o={base:e,form:`${e}__form`,formHeader:`${e}__form-header`,label:`${e}__label`,inputFieldWrapper:`${r}-wrapper`,inputFieldLoader:`${r}-loader`,inputField:`${r}`,inputDate:`${r}--date`,inputTime:`${r}--time`,inputRadioGroup:`${r}--radio-group`,inputRadio:`${r}--radio`,inputRadioLabel:`${r}--radio-label`,inputDisabled:`${r}--disabled`,inputSwitch:`${r}--switch`,inputInvalid:`${r}--invalid`,inputIconInvalid:`${r}-icon--invalid`,errorMessage:`${e}__field-error-message`,description:`${e}__description-text`,dateInputPart:`${i}-input-part`,loneDateInputPart:`${i}-input-part--lone`,dateInputContainer:`${i}-input-container`,dateFormatHint:`${i}-format-hint`,group:t,groupLabel:`${t}-label`,groupHeader:`${t}-header`,groupHeading:`${t}-header`,groupTitle:`${t}-title`,groupDescription:`${t}-description`,groupToggleIcon:`${t}-toggle-icon`,groupCollapsed:`${t}--collapsed`,groupSequential:`${t}--sequential`,groupActive:`${t}--active`,collapseIcon:"esri-icon-up",errorIcon:"esri-icon-notice-triangle",expandIcon:"esri-icon-down",widget:"esri-widget",panel:"esri-widget--panel",input:"esri-input",select:"esri-select"};export{o as CSS};
5
+ const e="esri-feature-form",i=`${e}__date`,t=`${e}__group`,r=`${e}__input`,o={base:e,form:`${e}__form`,formHeader:`${e}__form-header`,label:`${e}__label`,fieldInputWrapper:`${r}-wrapper`,fieldInputLoader:`${r}-loader`,fieldInput:`${r}`,inputDate:`${r}--date`,inputTime:`${r}--time`,inputRadioGroup:`${r}--radio-group`,inputRadio:`${r}--radio`,inputRadioLabel:`${r}--radio-label`,inputDisabled:`${r}--disabled`,inputSwitch:`${r}--switch`,inputInvalid:`${r}--invalid`,inputIconInvalid:`${r}-icon--invalid`,errorMessage:`${e}__field-error-message`,description:`${e}__description-text`,dateInputPart:`${i}-input-part`,loneDateInputPart:`${i}-input-part--lone`,dateInputContainer:`${i}-input-container`,dateFormatHint:`${i}-format-hint`,group:t,groupLabel:`${t}-label`,groupHeader:`${t}-header`,groupHeading:`${t}-header`,groupTitle:`${t}-title`,groupDescription:`${t}-description`,groupToggleIcon:`${t}-toggle-icon`,groupCollapsed:`${t}--collapsed`,groupSequential:`${t}--sequential`,groupActive:`${t}--active`,collapseIcon:"esri-icon-up",errorIcon:"esri-icon-notice-triangle",expandIcon:"esri-icon-down",widget:"esri-widget",panel:"esri-widget--panel",input:"esri-input",select:"esri-select"};export{o as CSS};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{isSome as e}from"../../core/maybe.js";import{templateHasKey as t,replace as n}from"../../core/string.js";const o=e=>!!e.inputFields,s=(e,t)=>null!=e&&e.input?.type===t,i={typeFieldName:null,types:[]};function p(n,o,s){const i=Object.keys(o).filter((e=>t(n,e))),p=i.map((e=>o[e])),m=i.map((e=>s.get(e))).filter(e);return a(n,r(p,m))}function r(e,t){const n=t.map(((t,n)=>{let o=e[n];if(t.domain&&"coded-value"===t.domain.type){const e=t.domain.codedValues.find((e=>e.code===o));e?.name&&(o=e.name)}return[t.name,o]}));return Object.fromEntries(n)}function a(e,t){return n(n(e,(e=>`{${e.toLowerCase()}}`)),Object.fromEntries(Object.entries(t).map((([e,t])=>[e.toLowerCase(),t]))))}const m=e=>e?"subtype-sublayer"===e.type?{typeFieldName:e.parent?.subtypeField,types:e.parent?.subtypes??[]}:"types"in e&&e.types?{typeFieldName:e.typeIdField,types:e.types.map((({id:e,name:t,domains:n})=>({code:e,name:t,domains:n})))}:i:i;export{r as getComputedAttributes,m as getNormalizedFeatureTypeInfo,s as isFieldElementWithInputType,o as isGroupField,p as parseFormTemplateString,a as substituteFieldTemplatesInString};
5
+ import{isSome as e}from"../../core/maybe.js";import{templateHasKey as t,replace as n}from"../../core/string.js";const i=e=>"fieldElement"in e,o=e=>"inputs"in e,s=(e,t)=>null!=e&&e.input?.type===t,p={typeFieldName:null,types:[]};function r(n,i,o){const s=Object.keys(i).filter((e=>t(n,e))),p=s.map((e=>i[e])),r=s.map((e=>o.get(e))).filter(e);return m(n,a(p,r))}function a(e,t){const n=t.map(((t,n)=>{let i=e[n];if(t.domain&&"coded-value"===t.domain.type){const e=t.domain.codedValues.find((e=>e.code===i));e?.name&&(i=e.name)}return[t.name,i]}));return Object.fromEntries(n)}function m(e,t){return n(n(e,(e=>`{${e.toLowerCase()}}`)),Object.fromEntries(Object.entries(t).map((([e,t])=>[e.toLowerCase(),t]))))}const d=e=>e?"subtype-sublayer"===e.type?{typeFieldName:e.parent?.subtypeField,types:e.parent?.subtypes??[]}:"types"in e&&e.types?{typeFieldName:e.typeIdField,types:e.types.map((({id:e,name:t,domains:n})=>({code:e,name:t,domains:n})))}:p:p;export{a as getComputedAttributes,d as getNormalizedFeatureTypeInfo,s as isFieldElementWithInputType,i as isFieldInput,o as isGroupInput,r as parseFormTemplateString,m as substituteFieldTemplatesInString};