@arcgis/core 5.2.0-next.68 → 5.2.0-next.69

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 (96) hide show
  1. package/arcgisGlobal.d.ts +2 -0
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/7dd672c25beb8813cc75.js +2 -0
  4. package/assets/esri/core/workers/chunks/{d7267f429a051943187b.js → 873d8332e2149eb1b36a.js} +1 -1
  5. package/assets/esri/core/workers/chunks/b526055794e64b0227ca.js +256 -0
  6. package/assets/esri/core/workers/chunks/be291d920ebc68fde02b.js +2 -0
  7. package/assets/esri/core/workers/chunks/c10a0eebd935472d8fae.js +1 -0
  8. package/assets/esri/core/workers/chunks/d198ecb1fe3690d6092f.js +2 -0
  9. package/assets/esri/core/workers/chunks/d303621c902330be5035.js +1 -0
  10. package/assets/esri/core/workers/chunks/f4e813ead56d963b16b8.js +1 -0
  11. package/assets/esri/core/workers/chunks/{8a12bb50b3ac9e651625.js → f6f1122bed931f1d960b.js} +1 -1
  12. package/assets/esri/core/workers/chunks/f82cd34a79c8aa58d40c.js +2 -0
  13. package/chunks/GaussianSplat.glsl.js +10 -9
  14. package/chunks/GaussianSplatDepth.glsl.js +11 -0
  15. package/chunks/GaussianSplatShadow.glsl.js +7 -16
  16. package/config.js +1 -1
  17. package/kernel.js +1 -1
  18. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  19. package/networks/RulesTable.js +1 -1
  20. package/networks/UtilityNetwork.js +1 -1
  21. package/networks/support/utils.js +1 -1
  22. package/package.json +2 -2
  23. package/support/revision.js +1 -1
  24. package/views/2d/engine/imagery/RasterVFDisplayObject.js +1 -1
  25. package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
  26. package/views/2d/layers/support/MediaLayerInteraction.js +1 -1
  27. package/views/2d/layers/support/MediaLayerInteractionOptions.d.ts +46 -0
  28. package/views/2d/layers/support/MediaLayerInteractionOptions.js +1 -1
  29. package/views/2d/layers/support/MediaLayerInteractionReshapeOptions.d.ts +22 -0
  30. package/views/2d/layers/support/MediaLayerInteractionReshapeOptions.js +2 -0
  31. package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
  32. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  33. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  34. package/views/3d/analysis/Viewshed/ViewshedSnappingController.js +1 -1
  35. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  36. package/views/3d/analysis/Viewshed/placementUtils.js +1 -1
  37. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  38. package/views/3d/layers/I3SMeshView3D.js +1 -1
  39. package/views/3d/layers/i3s/I3SIntersectionHandler.js +1 -1
  40. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  41. package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
  42. package/views/3d/layers/i3s/SweptSphereVolume.js +2 -0
  43. package/views/3d/layers/support/MediaLayerInteractionReshapeOptions.d.ts +0 -1
  44. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  45. package/views/3d/support/hitTest.js +1 -1
  46. package/views/3d/webgl/RenderCamera.js +1 -1
  47. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  48. package/views/3d/webgl-engine/collections/Component/ComponentObjectElevationAgnosticBVH.js +1 -1
  49. package/views/3d/webgl-engine/collections/Component/ComponentObjectFixedBVH.js +1 -1
  50. package/views/3d/webgl-engine/collections/Component/ElevationAgnosticBVH.js +1 -1
  51. package/views/3d/webgl-engine/collections/Component/IntersectionGeometry.js +1 -1
  52. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  53. package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +2 -0
  54. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  55. package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
  56. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  57. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  58. package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
  59. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  60. package/views/3d/webgl-engine/shaders/GaussianSplatDepth.glsl.js +2 -0
  61. package/views/3d/webgl-engine/shaders/GaussianSplatDepthPolicy.js +2 -0
  62. package/views/3d/webgl-engine/shaders/GaussianSplatDepthTechnique.js +2 -0
  63. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +97 -0
  64. package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
  65. package/views/3d/webgl-engine/shaders/GaussianSplatShadowTechnique.js +1 -1
  66. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  67. package/views/3d/webgl.js +1 -1
  68. package/widgets/Editor/AddAssociationWorkflow.js +1 -1
  69. package/widgets/Editor/AddAssociationWorkflowData.js +1 -1
  70. package/widgets/Editor/legacy/AddAssociationWorkflow.js +1 -1
  71. package/widgets/Editor/legacy/AddAssociationWorkflowData.js +1 -1
  72. package/widgets/FeatureForm/FeatureFormUtilityNetworkAssociations/AssociationDetails.js +1 -1
  73. package/widgets/FeatureForm/FeatureFormUtilityNetworkAssociations/UtilityNetworkAssociationItemList.js +1 -1
  74. package/widgets/FeatureForm/UtilityNetworkAssociationAddAssociationViewModel.js +1 -1
  75. package/widgets/OrientedImageryViewer/components/ImageViewerViewModel.js +1 -1
  76. package/widgets/OrientedImageryViewer/support/panConstraint.js +1 -1
  77. package/widgets/Search/support/locatorUtils.js +1 -1
  78. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeature.js +1 -1
  79. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeaturesDrillIn.js +1 -1
  80. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  81. package/widgets/support/UtilityNetworkAssociations/FeatureUtilityNetworkAssociationsViewModel.js +1 -1
  82. package/widgets/support/UtilityNetworkAssociations/utils/createAssociation.js +1 -1
  83. package/widgets/support/UtilityNetworkAssociations/utils/isFromElement.js +1 -1
  84. package/assets/esri/core/workers/chunks/2426601b8cae7f06af4d.js +0 -256
  85. package/assets/esri/core/workers/chunks/45de90b78485d9326791.js +0 -1
  86. package/assets/esri/core/workers/chunks/581318d4d3b3152fd93f.js +0 -2
  87. package/assets/esri/core/workers/chunks/7bd3a11d3ade0b948db7.js +0 -1
  88. package/assets/esri/core/workers/chunks/8a9d782aee5ab47ba07f.js +0 -2
  89. package/assets/esri/core/workers/chunks/c270b29307e04c4dafae.js +0 -2
  90. package/assets/esri/core/workers/chunks/f276c6f5cbc1aaec0403.js +0 -1
  91. package/assets/esri/core/workers/chunks/fac8add42aa317f8f514.js +0 -2
  92. package/views/3d/layers/i3s/SphereCone.js +0 -2
  93. /package/assets/esri/core/workers/chunks/{8a9d782aee5ab47ba07f.js.LICENSE.txt → 7dd672c25beb8813cc75.js.LICENSE.txt} +0 -0
  94. /package/assets/esri/core/workers/chunks/{fac8add42aa317f8f514.js.LICENSE.txt → be291d920ebc68fde02b.js.LICENSE.txt} +0 -0
  95. /package/assets/esri/core/workers/chunks/{c270b29307e04c4dafae.js.LICENSE.txt → d198ecb1fe3690d6092f.js.LICENSE.txt} +0 -0
  96. /package/assets/esri/core/workers/chunks/{581318d4d3b3152fd93f.js.LICENSE.txt → f82cd34a79c8aa58d40c.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{substitute as t}from"../../../intl.js";import{watch as i,initial as r,on as s}from"../../../core/reactiveUtils.js";import{stripHTML as l}from"../../../core/string.js";import{property as o,subclass as a}from"../../../core/accessorSupport/decorators.js";import{isSubtypeGroupLayer as n,isGroupLayer as d}from"../../../layers/support/layerUtils.js";import{defaultHighlightName as c,temporaryHighlightName as u}from"../../../views/support/HighlightDefaults.js";import p from"../../Widget.js";import h from"../UtilityNetworkAssociationAddAssociationViewModel.js";import{loadCalciteComponents as m}from"../../support/componentsUtils.js";import _ from"../../support/FilterBuilder.js";import{globalCss as v}from"../../support/globalCss.js";import{Heading as f}from"../../support/Heading.js";import g from"../../support/SelectionToolbar.js";import{tsx as y,messageBundle as b}from"../../support/widget.js";import F from"../../support/SelectionToolbar/VisibleElements.js";const w="esri-feature-form-utility-network-association-layers",C={base:w,header:`${w}__header`,headingContent:`${w}__heading-content`,featureObserver:`${w}__feature-observer`,filterContainer:`${w}__filter-container`,filterOptionsContainer:`${w}__filter-options-container`,filterOptionsHeader:`${w}__filter-options-header`,listContainer:`${w}__list-container`,spatialSelectContainer:`${w}__spatial-select-container`,spatialSelectToolbar:`${w}__spatial-select-toolbar`,stickySpinnerContainer:`${w}__sticky-loading-container`,loadingContainer:`${w}__loading-container`};let L=class extends p{constructor(e,t){super(e,t),this.headingLevel=5,this.messagesCommon=null,this.messagesEditor=null,this.messagesFeature=null,this.messagesFeatureForm=null,this.messagesFilterBuilder=null,this.viewModel=new h,this.view=null,this._filterBuilder=new _,this._featureFilterText="",this._layerFilterText="",this._observer=new IntersectionObserver(([e])=>{e?.isIntersecting&&this._increaseFeaturePage()},{root:window.document}),this._observerNode=null,this._selectionToolbar=new g({returnFeatureTitleFields:!0,layerViewPreferenceEnabled:!1,persistSelection:!1,visibleElements:new F({chip:!1,operationTypeControls:!1,pan:!1})}),this._onSelectionComplete=async e=>{const{highlightHelper:t}=this.viewModel;await this.viewModel.onSelectionComplete(e),t?.removeAll(),this._featureSpatialGraphics.length>0&&t?.add(this._featureSpatialGraphics)}}initialize(){this._setupSelectionToolbar(),this.addHandles([i(()=>this.viewModel,()=>this.reset()),i(()=>[this.viewModel.state,this._observerNode],()=>this._onObserverChange()),i(()=>this.selectedLayer,e=>{this._filterBuilder.layer=e,e||(this.filterOptionsVisible=!1,this._featureFilterText="")})])}loadDependencies(){return m({action:()=>import("@esri/calcite-components/dist/components/calcite-action"),button:()=>import("@esri/calcite-components/dist/components/calcite-button"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon"),input:()=>import("@esri/calcite-components/dist/components/calcite-input"),list:()=>import("@esri/calcite-components/dist/components/calcite-list"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader")})}destroy(){this._filterBuilder.destroy(),this._selectionToolbar.destroy()}get filterOptionsVisible(){return this.viewModel.filterOptionsVisible}set filterOptionsVisible(e){this.viewModel.filterOptionsVisible=e}get isSelecting(){return"active"===this._selectionToolbar.state}get selectedLayer(){return this.viewModel.selectedLayer}set selectedLayer(e){this.viewModel.selectedLayer=e}get selectedFeature(){return this.viewModel.selectedFeature}set selectedFeature(e){this.viewModel.selectedFeature=e}get filterWhereClause(){return this.viewModel.filterWhereClause}set filterWhereClause(e){this.viewModel.filterWhereClause=e,e||this._filterBuilder.reset()}get _featureSpatialGraphics(){return this.viewModel.featureSpatialItems.toArray().map(e=>e.feature)}get _filteredFeatureItems(){const{_featureFilterText:e}=this,{featureItems:t,featureSpatialItems:i}=this.viewModel;return(i.length?i:t).map(e=>({label:e.label,graphic:e.feature,layer:e.feature.sourceLayer})).filter(t=>t.label?.toLowerCase().includes(e)??!1)}get _filteredFeatureItemsPage(){const{featurePage:e,featuresPerPage:t}=this.viewModel,i=e*t;return this._filteredFeatureItems.toArray().slice(0,i)}render(){return y("div",{class:this.classes(C.base,v.widget)},this._renderContent())}applyFilterOptions(){const{selectedLayer:e}=this;this.filterOptionsVisible=!1,e&&(this.filterWhereClause=this._filterBuilder.whereClause)}cancelSelection(){this._selectionToolbar.cancel()}reset(){this.filterWhereClause=null,this._featureFilterText="",this._layerFilterText="",this.filterOptionsVisible=!1,this._filterBuilder.reset()}startSelection(e){this._selectionToolbar.activateTool(e)}_setupSelectionToolbar(){this.addHandles([i(()=>this.view,e=>{this.viewModel.reset(),this._selectionToolbar.view="2d"===e?.type?e:null},r),i(()=>[this.viewModel,this.viewModel.layerItems.length,this.viewModel.map?.allLayers.map(e=>e.visible),this.viewModel.map?.allLayers?.filter(e=>n(e)).toArray().flatMap(e=>e.sublayers.toArray()).map(e=>e.visible)],()=>this._updateToolbarSources()),s(()=>this._selectionToolbar,"before-activate",e=>this.emit("before-selection",e)),s(()=>this._selectionToolbar,"complete",this._onSelectionComplete)])}_updateToolbarSources(){const e=this.viewModel.layerItems.toArray().filter(e=>{const{parent:t}=e;return!(t&&(d(t)||n(t))&&!t.visible)&&e.visible});this._selectionToolbar.sources=e}_onObserverChange(){this._observerNode&&this._observer.unobserve(this._observerNode);const{state:e}=this.viewModel;this._observerNode&&"ready"===e&&this._observer.observe(this._observerNode)}_increaseFeaturePage(){const{featureCount:e,featurePage:t,featureSpatialItems:i,state:r}=this.viewModel;e||i.length||1===t?"ready"===r&&this.viewModel.featurePage++:this.viewModel.featurePage=1}_renderContent(){const{state:e,filterOptionsVisible:t}=this.viewModel;return"loading"===e?this._renderLoading():t?this._renderFilterOptions():[this._renderSelectionToolbar(),this._renderListContent()]}_renderListContent(){return this._selectionToolbar.activeOperation?.processingFinalSelection?this._renderLoading():this.selectedLayer||this.viewModel.featureSpatialItems.length?this._renderFeatures():this._renderLayers()}_renderSelectionToolbar(){const{messagesCommon:e,_selectionToolbar:t}=this,{featureSpatialItems:i,selectedLayer:r}=this.viewModel;if(r||!t.sources?.length)return null;const s=y("div",{class:C.spatialSelectToolbar},t.render()),l=y("calcite-button",{appearance:"transparent",disabled:!i.length,label:e.clear,onclick:()=>this.viewModel.reset()},e.clear);return y("div",{class:C.spatialSelectContainer,key:"spatial-select-toolbar"},s,l)}_renderStickyLoading(){return"querying"===this.viewModel.state?y("div",{class:C.stickySpinnerContainer,key:"sticky-loader"},this._renderLoadingIcon()):null}_renderLoading(){return y("div",{class:C.loadingContainer,key:"loading-container"},this._renderLoadingIcon())}_renderLoadingIcon(){return y("calcite-loader",{inline:!0,label:this.messagesCommon.loading})}_renderFilterOptions(){return y("div",{class:C.filterOptionsContainer},y("div",{class:C.filterOptionsHeader},y("span",null,this.messagesFilterBuilder.widgetLabel),y("calcite-button",{appearance:"transparent",onclick:()=>this._filterBuilder.reset()},this.messagesCommon.clear)),this._filterBuilder.render())}_renderLayers(){const e=this.messagesFeatureForm.associations,t=e.availableLayers,i=e.filterLayers;return y("div",null,this._renderHeader({heading:t,placeholder:i,renderFilterOptions:!1,renderTotal:!1}),y("div",{class:C.listContainer},y("calcite-list",{label:e.associatedFeatures},this._renderLayerItems(),this._renderStickyLoading())))}_renderLayerItems(){const{_layerFilterText:e,viewModel:t,messagesCommon:i}=this,{layerItems:r,tableItems:s}=t;return r.concat(s).map(e=>({label:e.title??i.untitled,layer:e})).filter(t=>t.label?.toLowerCase().includes(e)??!1).toArray().map(e=>this._renderLayerItem(e))}_renderLayerItem(e){const{label:t,layer:i}=e;return y("calcite-list-item",{key:`layer-item-${i.id}`,label:l(t),onCalciteListItemSelect:()=>{this.selectedLayer=i,this._filterBuilder.reset()}},y("calcite-icon",{flipRtl:!0,icon:"chevron-right",scale:"s",slot:"content-end"}))}_renderFeatures(){const{selectedLayer:e,viewModel:t}=this,i=t.featureSpatialItems.length>0,r=this.messagesFeatureForm.associations,s=i?void 0:e?.title||this.messagesCommon.untitled,l=r.filterFeatures;return y("div",null,this._renderHeader({heading:s,placeholder:l,renderFilterOptions:!i,renderTotal:!0}),y("div",{class:C.listContainer},y("calcite-list",{label:r.associatedFeatures},this._renderFeatureItems(),this._renderStickyLoading(),this._renderFeatureObserver())))}_renderFeatureItems(){return this._filteredFeatureItemsPage.map(e=>this._renderFeatureItem(e))}_renderFeatureItem(e){const{viewModel:t}=this,{highlightHelper:i}=t,{label:r,graphic:s}=e,o=t.featureSpatialItems.length>0?()=>i?.update(s,c):void 0,a=t.featureSpatialItems.length>0?()=>i?.update(s,u):void 0;return y("calcite-list-item",{key:`feature-item-${s.uid}`,label:l(r),onCalciteListItemSelect:()=>{this.selectedFeature={feature:s,label:r}},onmouseenter:o,onmouseleave:a},y("calcite-icon",{flipRtl:!0,icon:"chevron-right",scale:"s",slot:"content-end"}))}_onObserverCreate(e){this._observerNode=e}_renderFeatureObserver(){return y("div",{afterCreate:this._onObserverCreate,bind:this,class:C.featureObserver,key:"feature-observer"})}_renderHeader(e){return y("div",{class:C.header,key:"filter"},this._renderHeading(e.heading),this._renderFilter(e.placeholder,e.renderFilterOptions),e.renderTotal?this._renderTotal():null)}_renderHeading(e){return e?y(f,{key:"title",level:this.headingLevel},y("div",{class:C.headingContent},y("calcite-icon",{icon:"layer"}),e)):null}_renderFilter(e,t){const i=!this.selectedLayer&&!this.viewModel.featureSpatialItems.length,r=i?this._layerFilterText:this._featureFilterText;return y("div",{class:C.filterContainer,key:"filter"},y("calcite-input",{icon:"search",placeholder:e,type:"search",value:r,onCalciteInputInput:e=>{i?this._layerFilterText=e.currentTarget.value.trim().toLowerCase():this._featureFilterText=e.currentTarget.value.trim().toLowerCase()}},t?this._renderFilterOptionsAction():null))}_renderFilterOptionsAction(){const e=this.messagesFeatureForm.associations.filterOptions;return y("calcite-action",{icon:"sliders",indicator:!!this._filterBuilder.whereClause,slot:"action",text:e,title:e,onclick:()=>{this.viewModel.filterOptionsVisible=!this.viewModel.filterOptionsVisible}})}_renderTotal(){const{messagesFeature:e,viewModel:i}=this,{featureCount:r,featureSpatialItems:s}=i,l=t(e.numberRecords,{number:s.length?s.length:r});return y("div",{key:"total"},l)}};e([o()],L.prototype,"filterOptionsVisible",null),e([o()],L.prototype,"headingLevel",void 0),e([o()],L.prototype,"isSelecting",null),e([o(),b("esri/t9n/common")],L.prototype,"messagesCommon",void 0),e([o(),b("esri/widgets/Editor/t9n/Editor")],L.prototype,"messagesEditor",void 0),e([o(),b("esri/widgets/Feature/t9n/Feature")],L.prototype,"messagesFeature",void 0),e([o(),b("esri/widgets/FeatureForm/t9n/FeatureForm")],L.prototype,"messagesFeatureForm",void 0),e([o(),b("esri/widgets/support/FilterBuilder/t9n/FilterBuilder")],L.prototype,"messagesFilterBuilder",void 0),e([o()],L.prototype,"selectedLayer",null),e([o({type:h})],L.prototype,"viewModel",void 0),e([o()],L.prototype,"selectedFeature",null),e([o()],L.prototype,"filterWhereClause",null),e([o()],L.prototype,"view",void 0),e([o()],L.prototype,"_filterBuilder",void 0),e([o()],L.prototype,"_featureFilterText",void 0),e([o()],L.prototype,"_layerFilterText",void 0),e([o()],L.prototype,"_observer",void 0),e([o()],L.prototype,"_featureSpatialGraphics",null),e([o()],L.prototype,"_filteredFeatureItems",null),e([o()],L.prototype,"_filteredFeatureItemsPage",null),e([o()],L.prototype,"_observerNode",void 0),L=e([a("esri.widgets.FeatureForm.FeatureFormUtilityNetworkAssociations.UtilityNetworkAssociationItemList")],L);const T=L;export{T as default};
2
+ import{__decorate as e}from"tslib";import{substitute as t}from"../../../intl.js";import{watch as i,initial as r,on as s}from"../../../core/reactiveUtils.js";import{stripHTML as l}from"../../../core/string.js";import{property as o,subclass as a}from"../../../core/accessorSupport/decorators.js";import{getGraphicLayer as n}from"../../../graphic/graphicOriginUtils.js";import{isSubtypeGroupLayer as d,isGroupLayer as c}from"../../../layers/support/layerUtils.js";import{defaultHighlightName as u,temporaryHighlightName as p}from"../../../views/support/HighlightDefaults.js";import h from"../../Widget.js";import m from"../UtilityNetworkAssociationAddAssociationViewModel.js";import{loadCalciteComponents as _}from"../../support/componentsUtils.js";import v from"../../support/FilterBuilder.js";import{globalCss as f}from"../../support/globalCss.js";import{Heading as g}from"../../support/Heading.js";import y from"../../support/SelectionToolbar.js";import{tsx as b,messageBundle as F}from"../../support/widget.js";import w from"../../support/SelectionToolbar/VisibleElements.js";const C="esri-feature-form-utility-network-association-layers",L={base:C,header:`${C}__header`,headingContent:`${C}__heading-content`,featureObserver:`${C}__feature-observer`,filterContainer:`${C}__filter-container`,filterOptionsContainer:`${C}__filter-options-container`,filterOptionsHeader:`${C}__filter-options-header`,listContainer:`${C}__list-container`,spatialSelectContainer:`${C}__spatial-select-container`,spatialSelectToolbar:`${C}__spatial-select-toolbar`,stickySpinnerContainer:`${C}__sticky-loading-container`,loadingContainer:`${C}__loading-container`};let T=class extends h{constructor(e,t){super(e,t),this.headingLevel=5,this.messagesCommon=null,this.messagesEditor=null,this.messagesFeature=null,this.messagesFeatureForm=null,this.messagesFilterBuilder=null,this.viewModel=new m,this.view=null,this._filterBuilder=new v,this._featureFilterText="",this._layerFilterText="",this._observer=new IntersectionObserver(([e])=>{e?.isIntersecting&&this._increaseFeaturePage()},{root:window.document}),this._observerNode=null,this._selectionToolbar=new y({returnFeatureTitleFields:!0,layerViewPreferenceEnabled:!1,persistSelection:!1,visibleElements:new w({chip:!1,operationTypeControls:!1,pan:!1})}),this._onSelectionComplete=async e=>{const{highlightHelper:t}=this.viewModel;await this.viewModel.onSelectionComplete(e),t?.removeAll(),this._featureSpatialGraphics.length>0&&t?.add(this._featureSpatialGraphics)}}initialize(){this._setupSelectionToolbar(),this.addHandles([i(()=>this.viewModel,()=>this.reset()),i(()=>[this.viewModel.state,this._observerNode],()=>this._onObserverChange()),i(()=>this.selectedLayer,e=>{this._filterBuilder.layer=e,e||(this.filterOptionsVisible=!1,this._featureFilterText="")})])}loadDependencies(){return _({action:()=>import("@esri/calcite-components/dist/components/calcite-action"),button:()=>import("@esri/calcite-components/dist/components/calcite-button"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon"),input:()=>import("@esri/calcite-components/dist/components/calcite-input"),list:()=>import("@esri/calcite-components/dist/components/calcite-list"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader")})}destroy(){this._filterBuilder.destroy(),this._selectionToolbar.destroy()}get filterOptionsVisible(){return this.viewModel.filterOptionsVisible}set filterOptionsVisible(e){this.viewModel.filterOptionsVisible=e}get isSelecting(){return"active"===this._selectionToolbar.state}get selectedLayer(){return this.viewModel.selectedLayer}set selectedLayer(e){this.viewModel.selectedLayer=e}get selectedFeature(){return this.viewModel.selectedFeature}set selectedFeature(e){this.viewModel.selectedFeature=e}get filterWhereClause(){return this.viewModel.filterWhereClause}set filterWhereClause(e){this.viewModel.filterWhereClause=e,e||this._filterBuilder.reset()}get _featureSpatialGraphics(){return this.viewModel.featureSpatialItems.toArray().map(e=>e.feature)}get _filteredFeatureItems(){const{_featureFilterText:e}=this,{featureItems:t,featureSpatialItems:i}=this.viewModel;return(i.length?i:t).map(e=>({label:e.label,graphic:e.feature,layer:n(e.feature)})).filter(t=>t.label?.toLowerCase().includes(e)??!1)}get _filteredFeatureItemsPage(){const{featurePage:e,featuresPerPage:t}=this.viewModel,i=e*t;return this._filteredFeatureItems.toArray().slice(0,i)}render(){return b("div",{class:this.classes(L.base,f.widget)},this._renderContent())}applyFilterOptions(){const{selectedLayer:e}=this;this.filterOptionsVisible=!1,e&&(this.filterWhereClause=this._filterBuilder.whereClause)}cancelSelection(){this._selectionToolbar.cancel()}reset(){this.filterWhereClause=null,this._featureFilterText="",this._layerFilterText="",this.filterOptionsVisible=!1,this._filterBuilder.reset()}startSelection(e){this._selectionToolbar.activateTool(e)}_setupSelectionToolbar(){this.addHandles([i(()=>this.view,e=>{this.viewModel.reset(),this._selectionToolbar.view="2d"===e?.type?e:null},r),i(()=>[this.viewModel,this.viewModel.layerItems.length,this.viewModel.map?.allLayers.map(e=>e.visible),this.viewModel.map?.allLayers?.filter(e=>d(e)).toArray().flatMap(e=>e.sublayers.toArray()).map(e=>e.visible)],()=>this._updateToolbarSources()),s(()=>this._selectionToolbar,"before-activate",e=>this.emit("before-selection",e)),s(()=>this._selectionToolbar,"complete",this._onSelectionComplete)])}_updateToolbarSources(){const e=this.viewModel.layerItems.toArray().filter(e=>{const{parent:t}=e;return!(t&&(c(t)||d(t))&&!t.visible)&&e.visible});this._selectionToolbar.sources=e}_onObserverChange(){this._observerNode&&this._observer.unobserve(this._observerNode);const{state:e}=this.viewModel;this._observerNode&&"ready"===e&&this._observer.observe(this._observerNode)}_increaseFeaturePage(){const{featureCount:e,featurePage:t,featureSpatialItems:i,state:r}=this.viewModel;e||i.length||1===t?"ready"===r&&this.viewModel.featurePage++:this.viewModel.featurePage=1}_renderContent(){const{state:e,filterOptionsVisible:t}=this.viewModel;return"loading"===e?this._renderLoading():t?this._renderFilterOptions():[this._renderSelectionToolbar(),this._renderListContent()]}_renderListContent(){return this._selectionToolbar.activeOperation?.processingFinalSelection?this._renderLoading():this.selectedLayer||this.viewModel.featureSpatialItems.length?this._renderFeatures():this._renderLayers()}_renderSelectionToolbar(){const{messagesCommon:e,_selectionToolbar:t}=this,{featureSpatialItems:i,selectedLayer:r}=this.viewModel;if(r||!t.sources?.length)return null;const s=b("div",{class:L.spatialSelectToolbar},t.render()),l=b("calcite-button",{appearance:"transparent",disabled:!i.length,label:e.clear,onclick:()=>this.viewModel.reset()},e.clear);return b("div",{class:L.spatialSelectContainer,key:"spatial-select-toolbar"},s,l)}_renderStickyLoading(){return"querying"===this.viewModel.state?b("div",{class:L.stickySpinnerContainer,key:"sticky-loader"},this._renderLoadingIcon()):null}_renderLoading(){return b("div",{class:L.loadingContainer,key:"loading-container"},this._renderLoadingIcon())}_renderLoadingIcon(){return b("calcite-loader",{inline:!0,label:this.messagesCommon.loading})}_renderFilterOptions(){return b("div",{class:L.filterOptionsContainer},b("div",{class:L.filterOptionsHeader},b("span",null,this.messagesFilterBuilder.widgetLabel),b("calcite-button",{appearance:"transparent",onclick:()=>this._filterBuilder.reset()},this.messagesCommon.clear)),this._filterBuilder.render())}_renderLayers(){const e=this.messagesFeatureForm.associations,t=e.availableLayers,i=e.filterLayers;return b("div",null,this._renderHeader({heading:t,placeholder:i,renderFilterOptions:!1,renderTotal:!1}),b("div",{class:L.listContainer},b("calcite-list",{label:e.associatedFeatures},this._renderLayerItems(),this._renderStickyLoading())))}_renderLayerItems(){const{_layerFilterText:e,viewModel:t,messagesCommon:i}=this,{layerItems:r,tableItems:s}=t;return r.concat(s).map(e=>({label:e.title??i.untitled,layer:e})).filter(t=>t.label?.toLowerCase().includes(e)??!1).toArray().map(e=>this._renderLayerItem(e))}_renderLayerItem(e){const{label:t,layer:i}=e;return b("calcite-list-item",{key:`layer-item-${i.id}`,label:l(t),onCalciteListItemSelect:()=>{this.selectedLayer=i,this._filterBuilder.reset()}},b("calcite-icon",{flipRtl:!0,icon:"chevron-right",scale:"s",slot:"content-end"}))}_renderFeatures(){const{selectedLayer:e,viewModel:t}=this,i=t.featureSpatialItems.length>0,r=this.messagesFeatureForm.associations,s=i?void 0:e?.title||this.messagesCommon.untitled,l=r.filterFeatures;return b("div",null,this._renderHeader({heading:s,placeholder:l,renderFilterOptions:!i,renderTotal:!0}),b("div",{class:L.listContainer},b("calcite-list",{label:r.associatedFeatures},this._renderFeatureItems(),this._renderStickyLoading(),this._renderFeatureObserver())))}_renderFeatureItems(){return this._filteredFeatureItemsPage.map(e=>this._renderFeatureItem(e))}_renderFeatureItem(e){const{viewModel:t}=this,{highlightHelper:i}=t,{label:r,graphic:s}=e,o=t.featureSpatialItems.length>0?()=>i?.update(s,u):void 0,a=t.featureSpatialItems.length>0?()=>i?.update(s,p):void 0;return b("calcite-list-item",{key:`feature-item-${s.uid}`,label:l(r),onCalciteListItemSelect:()=>{this.selectedFeature={feature:s,label:r}},onmouseenter:o,onmouseleave:a},b("calcite-icon",{flipRtl:!0,icon:"chevron-right",scale:"s",slot:"content-end"}))}_onObserverCreate(e){this._observerNode=e}_renderFeatureObserver(){return b("div",{afterCreate:this._onObserverCreate,bind:this,class:L.featureObserver,key:"feature-observer"})}_renderHeader(e){return b("div",{class:L.header,key:"filter"},this._renderHeading(e.heading),this._renderFilter(e.placeholder,e.renderFilterOptions),e.renderTotal?this._renderTotal():null)}_renderHeading(e){return e?b(g,{key:"title",level:this.headingLevel},b("div",{class:L.headingContent},b("calcite-icon",{icon:"layer"}),e)):null}_renderFilter(e,t){const i=!this.selectedLayer&&!this.viewModel.featureSpatialItems.length,r=i?this._layerFilterText:this._featureFilterText;return b("div",{class:L.filterContainer,key:"filter"},b("calcite-input",{icon:"search",placeholder:e,type:"search",value:r,onCalciteInputInput:e=>{i?this._layerFilterText=e.currentTarget.value.trim().toLowerCase():this._featureFilterText=e.currentTarget.value.trim().toLowerCase()}},t?this._renderFilterOptionsAction():null))}_renderFilterOptionsAction(){const e=this.messagesFeatureForm.associations.filterOptions;return b("calcite-action",{icon:"sliders",indicator:!!this._filterBuilder.whereClause,slot:"action",text:e,title:e,onclick:()=>{this.viewModel.filterOptionsVisible=!this.viewModel.filterOptionsVisible}})}_renderTotal(){const{messagesFeature:e,viewModel:i}=this,{featureCount:r,featureSpatialItems:s}=i,l=t(e.numberRecords,{number:s.length?s.length:r});return b("div",{key:"total"},l)}};e([o()],T.prototype,"filterOptionsVisible",null),e([o()],T.prototype,"headingLevel",void 0),e([o()],T.prototype,"isSelecting",null),e([o(),F("esri/t9n/common")],T.prototype,"messagesCommon",void 0),e([o(),F("esri/widgets/Editor/t9n/Editor")],T.prototype,"messagesEditor",void 0),e([o(),F("esri/widgets/Feature/t9n/Feature")],T.prototype,"messagesFeature",void 0),e([o(),F("esri/widgets/FeatureForm/t9n/FeatureForm")],T.prototype,"messagesFeatureForm",void 0),e([o(),F("esri/widgets/support/FilterBuilder/t9n/FilterBuilder")],T.prototype,"messagesFilterBuilder",void 0),e([o()],T.prototype,"selectedLayer",null),e([o({type:m})],T.prototype,"viewModel",void 0),e([o()],T.prototype,"selectedFeature",null),e([o()],T.prototype,"filterWhereClause",null),e([o()],T.prototype,"view",void 0),e([o()],T.prototype,"_filterBuilder",void 0),e([o()],T.prototype,"_featureFilterText",void 0),e([o()],T.prototype,"_layerFilterText",void 0),e([o()],T.prototype,"_observer",void 0),e([o()],T.prototype,"_featureSpatialGraphics",null),e([o()],T.prototype,"_filteredFeatureItems",null),e([o()],T.prototype,"_filteredFeatureItemsPage",null),e([o()],T.prototype,"_observerNode",void 0),T=e([a("esri.widgets.FeatureForm.FeatureFormUtilityNetworkAssociations.UtilityNetworkAssociationItemList")],T);const S=T;export{S as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Graphic.js";import r from"../../core/Accessor.js";import{createTask as s}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{abortMaybe as o}from"../../core/maybe.js";import{ignoreAbortErrors as i,debounce as n}from"../../core/promiseUtils.js";import{watch as l,initial as u}from"../../core/reactiveUtils.js";import{sqlAnd as c}from"../../core/sql.js";import{property as y,subclass as h}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as p}from"../../core/support/UpdatingHandles.js";import{isLayerFromCatalog as d}from"../../layers/catalog/catalogUtils.js";import{isSubtypeGroupLayer as g,isKnowledgeGraphLayer as _,isMapImageLayer as m,isSubtypeSublayer as f}from"../../layers/support/layerUtils.js";import{isAssociatedFeatureSupportedLayer as b}from"../../popup/support/featureUtils.js";import{createAssociation as C}from"../support/UtilityNetworkAssociations/utils/createAssociation.js";import{getFeatureTitle as F}from"../support/UtilityNetworkAssociations/utils/getFeatureTitle.js";const A=100,q="association-key";let w=class extends r{constructor(e){super(e),this.graphic=null,this.layer=null,this.map=null,this.utilityNetwork=null,this.associationType=null,this.featureCount=0,this.featureSpatialItems=new a,this.highlightHelper=null,this._queryAbortController=null,this._queryPageAbortController=null,this._queryFeatureCountAbortController=null,this.featuresPerPage=30,this.selectedFeature=null,this.association=null,this.filterOptionsVisible=!1,this.filterWhereClause=null,this._rulesTable=null,this._canAssociate=!1,this._whereClause=null,this._setUpItemsTask=null,this._updatingHandlesSetUp=new p,this._queryFeaturesTask=null,this._updatingHandlesQueryFeatures=new p,this._validateAssociationTask=null,this._updatingHandlesAssociation=new p,this._featureIsNotSelected=e=>(this.globalIdField?e.attributes?.[this.globalIdField]??null:null)!==this.globalId,this._cancelQuery=()=>{const{_queryAbortController:e}=this;e&&e.abort(),this._queryAbortController=null},this._cancelQueryFeatureCount=()=>{const{_queryFeatureCountAbortController:e}=this;e&&e.abort(),this._queryFeatureCountAbortController=null},this._cancelQueryPage=()=>{const{_queryPageAbortController:e}=this;e&&e.abort(),this._queryPageAbortController=null},this._queryController=async()=>{this._cancelQuery();const e=new AbortController;this._queryAbortController=e,await i(this._query()).catch(()=>this._cancelQuery()),this._queryAbortController===e&&(this._queryAbortController=null)},this._queryFeatureCountController=async e=>{this._cancelQueryFeatureCount();const t=new AbortController;this._queryFeatureCountAbortController=t,await i(this._queryFeatureCount(e)).catch(()=>this._cancelQueryFeatureCount()),this._queryFeatureCountAbortController===t&&(this._queryFeatureCountAbortController=null)},this._queryPageController=async()=>{const e=new AbortController;this._queryPageAbortController=e,await i(this._queryPage()).catch(()=>this._cancelQueryPage()),this._queryPageAbortController===e&&(this._queryPageAbortController=null)},this._queryDebounced=n(this._queryController,A),this._queryFeatureCountDebounced=n(this._queryFeatureCountController,A),this._queryPageDebounced=n(this._queryPageController,A)}initialize(){this.addHandles([l(()=>[this.graphic,this.layer,this.map,this.utilityNetwork,this.globalId,this.associationType],()=>this._syncLayerItems(),u),l(()=>[this.selectedLayer,this.filterWhereClause,this.featuresPerPage],()=>{this.selectedLayer&&this._setUpFeatures()}),l(()=>this.selectedFeature,()=>{this._setUpAssociation()}),l(()=>this.featurePage,()=>this._queryPageDebounced())])}destroy(){this._setUpItemsTask=o(this._setUpItemsTask),this._updatingHandlesSetUp.destroy(),this._queryFeaturesTask=o(this._queryFeaturesTask),this._updatingHandlesQueryFeatures.destroy(),this._validateAssociationTask=o(this._validateAssociationTask),this._updatingHandlesAssociation.destroy(),this._cancelQuery(),this._cancelQueryFeatureCount(),this._cancelQueryPage()}get mapTables(){const{map:e}=this;if(!e)return null;const t=new Set;return e.allTables.forEach(e=>this._collectIfValidParent(e,t)),new a([...t])}get mapLayers(){const{map:e}=this;if(!e)return null;const t=new Set;return e.allLayers.forEach(e=>this._collectIfValidParent(e,t)),new a([...t])}get state(){const{canLoadLayers:e,_queryAbortController:t,_queryPageAbortController:r}=this;return e?t||r||this._updatingHandlesQueryFeatures.updating?"querying":this._updatingHandlesSetUp.updating?"loading":"ready":"disabled"}get canAddAssociation(){return!(this.updating||!this.association)&&this._canAssociate}get globalId(){return(this.globalIdField&&this.graphic?.attributes?.[this.globalIdField])??null}get globalIdField(){const{layer:e}=this;return e?.globalIdField??null}get layerItems(){return this._get("layerItems")||new a}get tableItems(){return this._get("tableItems")||new a}get featureItems(){return this._get("featureItems")||new a}set featurePage(e){const{featuresPerPage:t,featureCount:r,featureSpatialItems:s}=this,a=s.length||r,o=1,i=Math.ceil(a/t)||1;this._set("featurePage",Math.min(Math.max(e,o),i))}get featurePage(){return this._get("featurePage")}get canLoadLayers(){const{map:e,utilityNetwork:t,graphic:r,associationType:s}=this;return!!(e&&t&&r&&s)}get canQuery(){const{utilityNetwork:e,graphic:t,associationType:r,selectedLayer:s}=this;return!!(e&&t&&r&&s)}get updating(){return this._updatingHandlesSetUp.updating||this._updatingHandlesAssociation.updating}get selectedLayer(){return this._get("selectedLayer")}set selectedLayer(e){e!==this.selectedLayer&&(this.filterWhereClause=null),this._set("selectedLayer",e)}get queryWhereClause(){const{_whereClause:e,filterWhereClause:t}=this;return c(e,t)}async onSelectionComplete(e){const{associationType:t,featureSpatialItems:r,graphic:s,_rulesTable:a}=this,{selection:o}=e;if(r.removeAll(),!(t&&s&&a&&o?.length))return;const i=this._convertTypeToDirection(t.type),n=o.filter(this._featureIsNotSelected),l=a.getFeaturesCanAssociateWith(s,n,i),u=await this._processFeatures(l);r.addMany(u)}reset(){this.highlightHelper?.removeAll(),this.featureSpatialItems.removeAll(),this.featurePage=1}_collectIfValidLayer(e,t){b(e)&&!g(e)&&t.add(e)}_collectIfValidParent(e,t){const r=e=>this._collectIfValidLayer(e,t);d(e)||"catalog-footprint"===e.type||(_(e)?(e.layers?.forEach(r),e.tables?.forEach(r)):m(e)?(e.sublayers?.forEach(r),e.subtables?.forEach(r)):g(e)?e.sublayers?.forEach(r):this._collectIfValidLayer(e,t))}async _queryFeatureCount(e){const{selectedLayer:t,_queryFeatureCountAbortController:r}=this;if(this._set("featureCount",0),!t)return;await t.load();const s=t.createQuery();s.returnGeometry=!1,s.where=c(s.where,e);const a=await t.queryFeatureCount(s,{signal:r?.signal});a>0&&this._set("featureCount",a)}async _query(){const{canQuery:e,queryWhereClause:t,_queryAbortController:r,featureItems:s}=this;e&&(this.featurePage=1,s.destroyAll(),this.featureCount&&!this.destroyed&&s.addMany(await this._queryAssociatedFeatures(t,{signal:r?.signal})))}async _queryPage(){const{canQuery:e,queryWhereClause:t,featurePage:r,_queryPageAbortController:s,featureCount:a,featureItems:o}=this;e&&(r<2||!a||o.addMany(await this._queryAssociatedFeatures(t,{signal:s?.signal})))}_convertTypeToDirection(e){switch(e){case"attachment":return[{type:"attachment",direction:"from"}];case"connectivity":return[{type:"junction-junction-connectivity"},{type:"junction-edge-from-connectivity"},{type:"junction-edge-midspan-connectivity"},{type:"junction-edge-to-connectivity"}];case"container":return[{type:"containment",direction:"to"}];case"content":return[{type:"containment",direction:"from"}];case"structure":return[{type:"attachment",direction:"to"}]}}async getRulesTable(){const{utilityNetwork:e}=this;if(!e)return null;if(this._rulesTable)return this._rulesTable;const t=await e.getRulesTable();return await(t?.load()),this._rulesTable=t,t}async _syncLayerItems(){o(this._setUpItemsTask);const{graphic:e,associationType:t,layerItems:r,tableItems:a,canLoadLayers:i}=this,n=s(async s=>{if(this.selectedLayer=null,r.removeAll(),a.removeAll(),!i)return;const o=this.mapLayers?.toArray(),n=this.mapTables?.toArray();if(!o&&!n)return;if(s.aborted)return;const l=await this.getRulesTable(),u=this._convertTypeToDirection(t.type);if(o?.length){const t=l?.getLayersCanAssociateWith(e,o,u);if(s.aborted)return;r.addMany(t||[])}if(n?.length){const t=l?.getLayersCanAssociateWith(e,n,u);if(s.aborted)return;a.addMany(t||[])}});this._updatingHandlesSetUp.consumePromise(n.promise),this._setUpItemsTask=n}async _setUpFeatures(){o(this._queryFeaturesTask);const{graphic:e,associationType:t,selectedLayer:r,canQuery:a}=this;if(!a)return;const i=s(async s=>{const a=await this.getRulesTable(),o=this._convertTypeToDirection(t.type),i=a?.getFeaturesCanAssociateWithClause(e,r,o);this._whereClause=i,s.aborted||(await this._queryFeatureCountDebounced(this.queryWhereClause),await this._queryDebounced())});this._updatingHandlesQueryFeatures.consumePromise(i.promise),this._queryFeaturesTask=i}_determineFromAndTo(e,t,r){return"from"===r?{fromFeature:e,toFeature:t}:{fromFeature:t,toFeature:e}}_determineJunctionEdgeConnectivity(e,t){const{utilityNetwork:r}=this,s=f(e.sourceLayer)?e.sourceLayer.parent:e.sourceLayer,a=f(t.sourceLayer)?t.sourceLayer.parent:t.sourceLayer;if(!(r&&s&&"layerId"in s&&a&&"layerId"in a))return{fromFeature:e,toFeature:t,type:"junction-junction-connectivity"};const o=r.getSourceIdByLayerId(s.layerId),i=r.getSourceIdByLayerId(a.layerId);if(!o||!i)return{fromFeature:e,toFeature:t,type:"junction-junction-connectivity"};const n="junction"===r.getSourceTypeById(o),l="junction"===r.getSourceTypeById(i);return n&&l?{fromFeature:e,toFeature:t,type:"junction-junction-connectivity"}:l?{fromFeature:t,toFeature:e,type:"junction-edge-midspan-connectivity"}:{fromFeature:e,toFeature:t,type:"junction-edge-midspan-connectivity"}}_setUpAssociationHandles(){this.removeHandles(q),this.association&&this.addHandles(l(()=>[this.association?.associationType,this.association?.fromNetworkElement,this.association?.fromNetworkElement?.terminalId,this.association?.toNetworkElement,this.association?.toNetworkElement?.terminalId],()=>this.validateAssociation(),u),q)}_setUpAssociation(){const{utilityNetwork:e,graphic:t,selectedFeature:r,associationType:s}=this;if(!(e&&t&&r&&s))return void(this.association=null);const a=this._convertTypeToDirection(s.type);if(a.length>1){const{fromFeature:s,toFeature:a,type:o}=this._determineJunctionEdgeConnectivity(t,r.feature);return this.association=C({fromFeature:s,toFeature:a,utilityNetwork:e,associationType:o}),void this._setUpAssociationHandles()}const{fromFeature:o,toFeature:i}=this._determineFromAndTo(t,r.feature,a[0].direction);this.association=C({fromFeature:o,toFeature:i,utilityNetwork:e,associationType:a[0].type}),this._setUpAssociationHandles()}async _processFeatures(e){return Promise.all(e.map(async e=>{const{sourceLayer:t}=e;if(t&&"getFeatureTitle"in t){return{label:await t.getFeatureTitle(e)||F(e),feature:e}}return{label:F(e),feature:e}}))}async _queryAssociatedFeatures(e,t){const{featuresPerPage:r,layer:s,featurePage:a,featureCount:o,selectedLayer:i}=this,{canQuery:n,globalId:l}=this;if(!n||!s||!i||null==l)return[];const u=((a-1)*r+o)%o,y=r,h=i.createQuery();h.where=c(h.where,e),h.start=u,h.num=y,h.returnGeometry=!1,h.outFields=["*"];const p=await i.queryFeatures(h,{signal:t?.signal});return await this._processFeatures(p.features)}validateAssociation(){o(this._validateAssociationTask);const{utilityNetwork:e,association:t}=this,r=s(async()=>{e&&t&&(this._canAssociate=await e.canAddAssociation(t))});this._updatingHandlesAssociation.consumePromise(r.promise),this._validateAssociationTask=r}};e([y({type:t})],w.prototype,"graphic",void 0),e([y()],w.prototype,"layer",void 0),e([y()],w.prototype,"map",void 0),e([y({readOnly:!0})],w.prototype,"mapTables",null),e([y({readOnly:!0})],w.prototype,"mapLayers",null),e([y()],w.prototype,"utilityNetwork",void 0),e([y()],w.prototype,"associationType",void 0),e([y()],w.prototype,"state",null),e([y({readOnly:!0})],w.prototype,"canAddAssociation",null),e([y({readOnly:!0})],w.prototype,"globalId",null),e([y({readOnly:!0})],w.prototype,"globalIdField",null),e([y()],w.prototype,"featureCount",void 0),e([y({readOnly:!0})],w.prototype,"layerItems",null),e([y({readOnly:!0})],w.prototype,"tableItems",null),e([y({readOnly:!0})],w.prototype,"featureItems",null),e([y()],w.prototype,"featureSpatialItems",void 0),e([y()],w.prototype,"highlightHelper",void 0),e([y()],w.prototype,"_queryAbortController",void 0),e([y()],w.prototype,"_queryPageAbortController",void 0),e([y()],w.prototype,"_queryFeatureCountAbortController",void 0),e([y({value:1})],w.prototype,"featurePage",null),e([y()],w.prototype,"featuresPerPage",void 0),e([y({readOnly:!0})],w.prototype,"canLoadLayers",null),e([y({readOnly:!0})],w.prototype,"canQuery",null),e([y({readOnly:!0})],w.prototype,"updating",null),e([y()],w.prototype,"selectedLayer",null),e([y()],w.prototype,"selectedFeature",void 0),e([y()],w.prototype,"association",void 0),e([y()],w.prototype,"filterOptionsVisible",void 0),e([y()],w.prototype,"filterWhereClause",void 0),e([y()],w.prototype,"queryWhereClause",null),e([y()],w.prototype,"_rulesTable",void 0),e([y()],w.prototype,"_canAssociate",void 0),e([y()],w.prototype,"_whereClause",void 0),w=e([h("esri.widgets.FeatureForm.UtilityNetworkAssociationAddAssociationViewModel")],w);export{w as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Graphic.js";import r from"../../core/Accessor.js";import{createTask as s}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{abortMaybe as o}from"../../core/maybe.js";import{ignoreAbortErrors as i,debounce as n}from"../../core/promiseUtils.js";import{watch as l,initial as u}from"../../core/reactiveUtils.js";import{sqlAnd as c}from"../../core/sql.js";import{property as y,subclass as h}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as p}from"../../core/support/UpdatingHandles.js";import{getGraphicLayer as d}from"../../graphic/graphicOriginUtils.js";import{isLayerFromCatalog as g}from"../../layers/catalog/catalogUtils.js";import{isSubtypeGroupLayer as _,isKnowledgeGraphLayer as m,isMapImageLayer as f,isSubtypeSublayer as b}from"../../layers/support/layerUtils.js";import{isAssociatedFeatureSupportedLayer as C}from"../../popup/support/featureUtils.js";import{createAssociation as F}from"../support/UtilityNetworkAssociations/utils/createAssociation.js";import{getFeatureTitle as A}from"../support/UtilityNetworkAssociations/utils/getFeatureTitle.js";const q=100,w="association-key";let T=class extends r{constructor(e){super(e),this.graphic=null,this.layer=null,this.map=null,this.utilityNetwork=null,this.associationType=null,this.featureCount=0,this.featureSpatialItems=new a,this.highlightHelper=null,this._queryAbortController=null,this._queryPageAbortController=null,this._queryFeatureCountAbortController=null,this.featuresPerPage=30,this.selectedFeature=null,this.association=null,this.filterOptionsVisible=!1,this.filterWhereClause=null,this._rulesTable=null,this._canAssociate=!1,this._whereClause=null,this._setUpItemsTask=null,this._updatingHandlesSetUp=new p,this._queryFeaturesTask=null,this._updatingHandlesQueryFeatures=new p,this._validateAssociationTask=null,this._updatingHandlesAssociation=new p,this._featureIsNotSelected=e=>(this.globalIdField?e.attributes?.[this.globalIdField]??null:null)!==this.globalId,this._cancelQuery=()=>{const{_queryAbortController:e}=this;e&&e.abort(),this._queryAbortController=null},this._cancelQueryFeatureCount=()=>{const{_queryFeatureCountAbortController:e}=this;e&&e.abort(),this._queryFeatureCountAbortController=null},this._cancelQueryPage=()=>{const{_queryPageAbortController:e}=this;e&&e.abort(),this._queryPageAbortController=null},this._queryController=async()=>{this._cancelQuery();const e=new AbortController;this._queryAbortController=e,await i(this._query()).catch(()=>this._cancelQuery()),this._queryAbortController===e&&(this._queryAbortController=null)},this._queryFeatureCountController=async e=>{this._cancelQueryFeatureCount();const t=new AbortController;this._queryFeatureCountAbortController=t,await i(this._queryFeatureCount(e)).catch(()=>this._cancelQueryFeatureCount()),this._queryFeatureCountAbortController===t&&(this._queryFeatureCountAbortController=null)},this._queryPageController=async()=>{const e=new AbortController;this._queryPageAbortController=e,await i(this._queryPage()).catch(()=>this._cancelQueryPage()),this._queryPageAbortController===e&&(this._queryPageAbortController=null)},this._queryDebounced=n(this._queryController,q),this._queryFeatureCountDebounced=n(this._queryFeatureCountController,q),this._queryPageDebounced=n(this._queryPageController,q)}initialize(){this.addHandles([l(()=>[this.graphic,this.layer,this.map,this.utilityNetwork,this.globalId,this.associationType],()=>this._syncLayerItems(),u),l(()=>[this.selectedLayer,this.filterWhereClause,this.featuresPerPage],()=>{this.selectedLayer&&this._setUpFeatures()}),l(()=>this.selectedFeature,()=>{this._setUpAssociation()}),l(()=>this.featurePage,()=>this._queryPageDebounced())])}destroy(){this._setUpItemsTask=o(this._setUpItemsTask),this._updatingHandlesSetUp.destroy(),this._queryFeaturesTask=o(this._queryFeaturesTask),this._updatingHandlesQueryFeatures.destroy(),this._validateAssociationTask=o(this._validateAssociationTask),this._updatingHandlesAssociation.destroy(),this._cancelQuery(),this._cancelQueryFeatureCount(),this._cancelQueryPage()}get mapTables(){const{map:e}=this;if(!e)return null;const t=new Set;return e.allTables.forEach(e=>this._collectIfValidParent(e,t)),new a([...t])}get mapLayers(){const{map:e}=this;if(!e)return null;const t=new Set;return e.allLayers.forEach(e=>this._collectIfValidParent(e,t)),new a([...t])}get state(){const{canLoadLayers:e,_queryAbortController:t,_queryPageAbortController:r}=this;return e?t||r||this._updatingHandlesQueryFeatures.updating?"querying":this._updatingHandlesSetUp.updating?"loading":"ready":"disabled"}get canAddAssociation(){return!(this.updating||!this.association)&&this._canAssociate}get globalId(){return(this.globalIdField&&this.graphic?.attributes?.[this.globalIdField])??null}get globalIdField(){const{layer:e}=this;return e?.globalIdField??null}get layerItems(){return this._get("layerItems")||new a}get tableItems(){return this._get("tableItems")||new a}get featureItems(){return this._get("featureItems")||new a}set featurePage(e){const{featuresPerPage:t,featureCount:r,featureSpatialItems:s}=this,a=s.length||r,o=1,i=Math.ceil(a/t)||1;this._set("featurePage",Math.min(Math.max(e,o),i))}get featurePage(){return this._get("featurePage")}get canLoadLayers(){const{map:e,utilityNetwork:t,graphic:r,associationType:s}=this;return!!(e&&t&&r&&s)}get canQuery(){const{utilityNetwork:e,graphic:t,associationType:r,selectedLayer:s}=this;return!!(e&&t&&r&&s)}get updating(){return this._updatingHandlesSetUp.updating||this._updatingHandlesAssociation.updating}get selectedLayer(){return this._get("selectedLayer")}set selectedLayer(e){e!==this.selectedLayer&&(this.filterWhereClause=null),this._set("selectedLayer",e)}get queryWhereClause(){const{_whereClause:e,filterWhereClause:t}=this;return c(e,t)}async onSelectionComplete(e){const{associationType:t,featureSpatialItems:r,graphic:s,_rulesTable:a}=this,{selection:o}=e;if(r.removeAll(),!(t&&s&&a&&o?.length))return;const i=this._convertTypeToDirection(t.type),n=o.filter(this._featureIsNotSelected),l=a.getFeaturesCanAssociateWith(s,n,i),u=await this._processFeatures(l);r.addMany(u)}reset(){this.highlightHelper?.removeAll(),this.featureSpatialItems.removeAll(),this.featurePage=1}_collectIfValidLayer(e,t){C(e)&&!_(e)&&t.add(e)}_collectIfValidParent(e,t){const r=e=>this._collectIfValidLayer(e,t);g(e)||"catalog-footprint"===e.type||(m(e)?(e.layers?.forEach(r),e.tables?.forEach(r)):f(e)?(e.sublayers?.forEach(r),e.subtables?.forEach(r)):_(e)?e.sublayers?.forEach(r):this._collectIfValidLayer(e,t))}async _queryFeatureCount(e){const{selectedLayer:t,_queryFeatureCountAbortController:r}=this;if(this._set("featureCount",0),!t)return;await t.load();const s=t.createQuery();s.returnGeometry=!1,s.where=c(s.where,e);const a=await t.queryFeatureCount(s,{signal:r?.signal});a>0&&this._set("featureCount",a)}async _query(){const{canQuery:e,queryWhereClause:t,_queryAbortController:r,featureItems:s}=this;e&&(this.featurePage=1,s.destroyAll(),this.featureCount&&!this.destroyed&&s.addMany(await this._queryAssociatedFeatures(t,{signal:r?.signal})))}async _queryPage(){const{canQuery:e,queryWhereClause:t,featurePage:r,_queryPageAbortController:s,featureCount:a,featureItems:o}=this;e&&(r<2||!a||o.addMany(await this._queryAssociatedFeatures(t,{signal:s?.signal})))}_convertTypeToDirection(e){switch(e){case"attachment":return[{type:"attachment",direction:"from"}];case"connectivity":return[{type:"junction-junction-connectivity"},{type:"junction-edge-from-connectivity"},{type:"junction-edge-midspan-connectivity"},{type:"junction-edge-to-connectivity"}];case"container":return[{type:"containment",direction:"to"}];case"content":return[{type:"containment",direction:"from"}];case"structure":return[{type:"attachment",direction:"to"}]}}async getRulesTable(){const{utilityNetwork:e}=this;if(!e)return null;if(this._rulesTable)return this._rulesTable;const t=await e.getRulesTable();return await(t?.load()),this._rulesTable=t,t}async _syncLayerItems(){o(this._setUpItemsTask);const{graphic:e,associationType:t,layerItems:r,tableItems:a,canLoadLayers:i}=this,n=s(async s=>{if(this.selectedLayer=null,r.removeAll(),a.removeAll(),!i)return;const o=this.mapLayers?.toArray(),n=this.mapTables?.toArray();if(!o&&!n)return;if(s.aborted)return;const l=await this.getRulesTable(),u=this._convertTypeToDirection(t.type);if(o?.length){const t=l?.getLayersCanAssociateWith(e,o,u);if(s.aborted)return;r.addMany(t||[])}if(n?.length){const t=l?.getLayersCanAssociateWith(e,n,u);if(s.aborted)return;a.addMany(t||[])}});this._updatingHandlesSetUp.consumePromise(n.promise),this._setUpItemsTask=n}async _setUpFeatures(){o(this._queryFeaturesTask);const{graphic:e,associationType:t,selectedLayer:r,canQuery:a}=this;if(!a)return;const i=s(async s=>{const a=await this.getRulesTable(),o=this._convertTypeToDirection(t.type),i=a?.getFeaturesCanAssociateWithClause(e,r,o);this._whereClause=i,s.aborted||(await this._queryFeatureCountDebounced(this.queryWhereClause),await this._queryDebounced())});this._updatingHandlesQueryFeatures.consumePromise(i.promise),this._queryFeaturesTask=i}_determineFromAndTo(e,t,r){return"from"===r?{fromFeature:e,toFeature:t}:{fromFeature:t,toFeature:e}}_determineJunctionEdgeConnectivity(e,t){const{utilityNetwork:r}=this,s=d(e),a=b(s)?s.parent:s,o=d(t),i=b(o)?o.parent:o;if(!(r&&a&&"layerId"in a&&i&&"layerId"in i))return{fromFeature:e,toFeature:t,type:"junction-junction-connectivity"};const n=r.getSourceIdByLayerId(a.layerId),l=r.getSourceIdByLayerId(i.layerId);if(!n||!l)return{fromFeature:e,toFeature:t,type:"junction-junction-connectivity"};const u="junction"===r.getSourceTypeById(n),c="junction"===r.getSourceTypeById(l);return u&&c?{fromFeature:e,toFeature:t,type:"junction-junction-connectivity"}:c?{fromFeature:t,toFeature:e,type:"junction-edge-midspan-connectivity"}:{fromFeature:e,toFeature:t,type:"junction-edge-midspan-connectivity"}}_setUpAssociationHandles(){this.removeHandles(w),this.association&&this.addHandles(l(()=>[this.association?.associationType,this.association?.fromNetworkElement,this.association?.fromNetworkElement?.terminalId,this.association?.toNetworkElement,this.association?.toNetworkElement?.terminalId],()=>this.validateAssociation(),u),w)}_setUpAssociation(){const{utilityNetwork:e,graphic:t,selectedFeature:r,associationType:s}=this;if(!(e&&t&&r&&s))return void(this.association=null);const a=this._convertTypeToDirection(s.type);if(a.length>1){const{fromFeature:s,toFeature:a,type:o}=this._determineJunctionEdgeConnectivity(t,r.feature);return this.association=F({fromFeature:s,toFeature:a,utilityNetwork:e,associationType:o}),void this._setUpAssociationHandles()}const{fromFeature:o,toFeature:i}=this._determineFromAndTo(t,r.feature,a[0].direction);this.association=F({fromFeature:o,toFeature:i,utilityNetwork:e,associationType:a[0].type}),this._setUpAssociationHandles()}async _processFeatures(e){return Promise.all(e.map(async e=>{const{sourceLayer:t}=e;if(t&&"getFeatureTitle"in t){return{label:await t.getFeatureTitle(e)||A(e),feature:e}}return{label:A(e),feature:e}}))}async _queryAssociatedFeatures(e,t){const{featuresPerPage:r,layer:s,featurePage:a,featureCount:o,selectedLayer:i}=this,{canQuery:n,globalId:l}=this;if(!n||!s||!i||null==l)return[];const u=((a-1)*r+o)%o,y=r,h=i.createQuery();h.where=c(h.where,e),h.start=u,h.num=y,h.returnGeometry=!1,h.outFields=["*"];const p=await i.queryFeatures(h,{signal:t?.signal});return await this._processFeatures(p.features)}validateAssociation(){o(this._validateAssociationTask);const{utilityNetwork:e,association:t}=this,r=s(async()=>{e&&t&&(this._canAssociate=await e.canAddAssociation(t))});this._updatingHandlesAssociation.consumePromise(r.promise),this._validateAssociationTask=r}};e([y({type:t})],T.prototype,"graphic",void 0),e([y()],T.prototype,"layer",void 0),e([y()],T.prototype,"map",void 0),e([y({readOnly:!0})],T.prototype,"mapTables",null),e([y({readOnly:!0})],T.prototype,"mapLayers",null),e([y()],T.prototype,"utilityNetwork",void 0),e([y()],T.prototype,"associationType",void 0),e([y()],T.prototype,"state",null),e([y({readOnly:!0})],T.prototype,"canAddAssociation",null),e([y({readOnly:!0})],T.prototype,"globalId",null),e([y({readOnly:!0})],T.prototype,"globalIdField",null),e([y()],T.prototype,"featureCount",void 0),e([y({readOnly:!0})],T.prototype,"layerItems",null),e([y({readOnly:!0})],T.prototype,"tableItems",null),e([y({readOnly:!0})],T.prototype,"featureItems",null),e([y()],T.prototype,"featureSpatialItems",void 0),e([y()],T.prototype,"highlightHelper",void 0),e([y()],T.prototype,"_queryAbortController",void 0),e([y()],T.prototype,"_queryPageAbortController",void 0),e([y()],T.prototype,"_queryFeatureCountAbortController",void 0),e([y({value:1})],T.prototype,"featurePage",null),e([y()],T.prototype,"featuresPerPage",void 0),e([y({readOnly:!0})],T.prototype,"canLoadLayers",null),e([y({readOnly:!0})],T.prototype,"canQuery",null),e([y({readOnly:!0})],T.prototype,"updating",null),e([y()],T.prototype,"selectedLayer",null),e([y()],T.prototype,"selectedFeature",void 0),e([y()],T.prototype,"association",void 0),e([y()],T.prototype,"filterOptionsVisible",void 0),e([y()],T.prototype,"filterWhereClause",void 0),e([y()],T.prototype,"queryWhereClause",null),e([y()],T.prototype,"_rulesTable",void 0),e([y()],T.prototype,"_canAssociate",void 0),e([y()],T.prototype,"_whereClause",void 0),T=e([h("esri.widgets.FeatureForm.UtilityNetworkAssociationAddAssociationViewModel")],T);export{T as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../Map.js";import{rotate as i}from"../../../arcade/geometry/operators.js";import r from"../../../core/Error.js";import{EventedAccessor as a}from"../../../core/Evented.js";import s from"../../../core/Logger.js";import{clamp as o}from"../../../core/mathUtils.js";import{abortMaybe as n}from"../../../core/maybe.js";import{throwIfAborted as l,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as m,syncAndInitial as d,when as p,initial as c}from"../../../core/reactiveUtils.js";import{property as g,subclass as u}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as y}from"../../../core/support/UpdatingHandles.js";import _ from"../../../geometry/Point.js";import f from"../../../geometry/Polygon.js";import v from"../../../geometry/SpatialReference.js";import{e as R}from"../../../chunks/intersectionOperator.js";import w from"../../../layers/GraphicsLayer.js";import x from"../../../layers/support/RasterFunction.js";import{convolutionKernel as C}from"../../../layers/support/rasterFunctionConstants.js";import b from"../../../layers/support/TileInfo.js";import j from"../../../views/MapView.js";import{getResolutionToScaleFactor as I}from"../../../views/2d/viewpointUtils.js";import P from"../support/NonPanoramicMedia.js";import{constrainViewpoint as H}from"../support/panConstraint.js";const M={click:"click-handle",enhancements:"enhancements-handle"};let L=class extends a{constructor(e){super(e),this._imageChanged=!1,this._panConstraint=null,this._image=null,this._loadController=null,this._overlays=new w({blendMode:"source-atop"}),this._map=new t,this.autoLoad=!1,this.clickAction="none",this.error=null,this.imageRotation=0,this.state="ready",this.updatingHandles=new y,this._cancelLoadWithController=()=>{this._loadController=n(this._loadController)},this._createImageHandles=()=>{this.removeHandles(M.enhancements),this.addHandles(m(()=>[this.brightness,this.contrast,this.sharpness],([e,t,i])=>{this.image?.loaded&&(this.image.effect=`contrast(${10*(t+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(this.image,i))},d))},this._createPanConstraint=()=>{const{image:e,imageRenderer:t}=this,i=i=>{const{constraints:r,height:a,width:s,rotation:o}=t,{targetGeometry:n}=i;return"point"===n?.type&&e?.serviceRasterInfo?(H({constraints:r,containerHeight:a,containerWidth:s,imageExtent:e.serviceRasterInfo.extent,rotation:o,viewpoint:i,viewportExtent:t.extent}),i):i};return{constrain:i,applyPanConstraint:i}},this._createResizeHandles=e=>{e.removeHandles("resize"),e.addHandles(m(()=>{if(!this.imageRenderer.ready)return;const{extent:t}=e.serviceRasterInfo,{width:r,height:a,rotation:s}=this.imageRenderer,{extent:o}=i(f.fromExtent(t),s,t.center.x,t.center.y),{width:n,height:l}=o;return Math.max(n/r,l/a)},e=>{if(!this.imageRenderer||null==e)return;const{constraints:t,scale:i,spatialReference:r}=this.imageRenderer,a=t.minScale,s=I(r),o=.25*s,n=s*e;let l=n;const h=[];for(;l>o;)h.push(l),l/=2;h.push(l);const{lods:m}=b.create({scales:h});if(t.set({minScale:n,lods:m}),this._imageChanged)return this.imageRenderer.scale=n,void(this._imageChanged=!1);this.imageRenderer.scale=Math.abs(i-a)<=1e-6?n:i},d),"resize")},this._loadMediaInternal=async(e,t)=>{if(this.state="image-loading",this.clearImage(),this.error=null,this._imageChanged=!0,!e)throw new Error("No media to load");try{const{layer:i}=await e.load(t);l(t),this._image=i,this._updatePanConstraint(),this._createResizeHandles(this._image),this._map.add(this._image),this.imageRotation=e.rotation??0,this.media=e,this.state="image-loaded"}catch(i){if(!h(i))throw this.state="image-load-error",this.error=i,s.getLogger(this).error(`error occurred while loading image ${this._image?.url}`,i),this._image=null,i;this.state="image-load-aborted"}return this._image},this._loadWithController=()=>{this._cancelLoadWithController(),this.media&&(this._loadController=new AbortController,this._loadMediaInternal(this.media,this._loadController))},this._updatePanConstraint=()=>{this._panConstraint&&this.imageRenderer.constraints.customConstraints.remove(this._panConstraint),this._panConstraint=this._createPanConstraint(),this.imageRenderer.constraints.customConstraints.add(this._panConstraint)},this.addGraphic=(e,t)=>{this._overlays.graphics.add(e,t)},this.addManyGraphics=e=>{this._overlays.addMany(e)},this.clearGraphics=()=>{this._overlays.graphics.removeAll()},this.clearImage=()=>{this.image&&this._map.layers.remove(this.image),this._image=null},this.removeGraphic=e=>{this._overlays.remove(e)},this.removeManyGraphics=e=>{this._overlays.removeMany(e)},this._imageRenderer=new j({constraints:{snapToZoom:!0,rotationEnabled:!1},map:this._map,popupEnabled:!1,spatialReference:v.WebMercator,attributionVisible:!1})}destroy(){this.clearImage(),this.media=null,this._imageRenderer.destroy()}initialize(){this.state="initialized",this.addHandles([p(()=>null!=this.media&&this.autoLoad,this._loadWithController,d),m(()=>this.image?.loaded,()=>{this._createImageHandles()}),m(()=>this.imageRotation,()=>{this._rotateImage()}),m(()=>this.imageRenderer.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},c),m(()=>this.imageRenderer.map.allLayers.length,e=>{e&&this.imageRenderer.map.layers.reorder(this._overlays,e-1)},d),m(()=>this.clickAction,e=>{this.removeHandles(M.click),"none"!==e&&this.addHandles(this.imageRenderer.on("click",t=>{if(this.image?.loaded&&this.imageRenderer.ready)switch(e){case"emit":t.stopPropagation(),this.emit("click",t);break;case"hittest":t.stopPropagation(),t.defer(async()=>{const e=await this.imageRenderer.hitTest(t.screenPoint,{include:this._overlays});e.results=e.results.filter(e=>"graphic"===e.type),this.emit("hittest-response",e)});break;case"pixel-location":{if(t.stopPropagation(),!this.image?.serviceRasterInfo||!t.mapPoint)return void this.emit("pixel-location",null);const{extent:e,pixelSize:i}=this.image.serviceRasterInfo,r=(t.mapPoint.x-e.xmin)*i.x,a=(e.ymax-t.mapPoint.y)*i.y,s=new _({x:r,y:a,spatialReference:e.spatialReference});this.emit("pixel-location",s);break}}}))},d)])}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",o(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",o(e,-10,10))}get image(){return this._image}get imagePointsInView(){const{extent:e,ready:t}=this.imageRenderer,r=this.imageRotation,a=this.image?.fullExtent,s=this.image?.serviceRasterInfo,o=!0===this._imageRenderer.allLayerViews.find(({layer:e})=>e===this.image)?.attached;if(!(t&&e&&a&&s&&o))return null;const n=i(f.fromExtent(e),r,e.center.x,e.center.y),l=f.fromExtent(a),h=R(n,l);if(!h)return null;const{rings:m}=h;return m.flat().map(([e,t])=>({x:(e-s.extent.xmin)*s.pixelSize.x,y:(s.extent.ymax-t)*s.pixelSize.y}))}get imageSize(){const{image:e}=this;if(!e?.raster)return null;const{width:t,height:i}=e.raster.rasterInfo;return[t,i]}get imageRenderer(){return this._imageRenderer}get imageView(){return this.imageRenderer.allLayerViews.find(e=>e.layer===this.image)}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",o(e,0,1))}get updating(){return this.updatingHandles.updating}_rotateImage(){this.imageRenderer.constraints.rotationEnabled=!0,this.imageRenderer.rotation=this.imageRotation,this.imageRenderer.constraints.rotationEnabled=!1}sharpenImage(e,t){if(!t)return void(e.rasterFunction=null);const i=[0,-1*t,0,-1*t,4*t+1,-1*t,0,-1*t,0],r=new x({functionName:"Convolution",functionArguments:{type:C.userDefined,cols:3,rows:3,kernel:i,convolutionType:C.userDefined}});e.rasterFunction=r}async loadMedia(e,t){this.state="image-loading";const i=this.autoLoad;this.autoLoad=!1;return await this._loadMediaInternal(e,t).finally(()=>{this.autoLoad=i})}};e([g()],L.prototype,"_image",void 0),e([g()],L.prototype,"_imageRenderer",void 0),e([g()],L.prototype,"_loadController",void 0),e([g()],L.prototype,"_overlays",void 0),e([g()],L.prototype,"_map",void 0),e([g({type:Boolean})],L.prototype,"autoLoad",void 0),e([g({type:Number})],L.prototype,"brightness",null),e([g()],L.prototype,"clickAction",void 0),e([g({type:Number})],L.prototype,"contrast",null),e([g({type:Object})],L.prototype,"customParameters",void 0),e([g({type:r})],L.prototype,"error",void 0),e([g({readOnly:!0})],L.prototype,"image",null),e([g({readOnly:!0})],L.prototype,"imagePointsInView",null),e([g({readOnly:!0})],L.prototype,"imageSize",null),e([g({readOnly:!0})],L.prototype,"imageRenderer",null),e([g({type:Number})],L.prototype,"imageRotation",void 0),e([g()],L.prototype,"imageView",null),e([g({type:P})],L.prototype,"media",void 0),e([g({type:Number})],L.prototype,"sharpness",null),e([g()],L.prototype,"state",void 0),e([g()],L.prototype,"updatingHandles",void 0),e([g()],L.prototype,"updating",null),L=e([u("esri.widgets.OrientedImageryViewer.components.ImageViewerViewModel")],L);const k=L;export{k as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../Map.js";import i from"../../../core/Error.js";import{EventedAccessor as r}from"../../../core/Evented.js";import a from"../../../core/Logger.js";import{clamp as s}from"../../../core/mathUtils.js";import{abortMaybe as o}from"../../../core/maybe.js";import{throwIfAborted as n,isAbortError as l}from"../../../core/promiseUtils.js";import{watch as h,syncAndInitial as m,when as d,initial as p}from"../../../core/reactiveUtils.js";import{property as c,subclass as g}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../core/support/UpdatingHandles.js";import y from"../../../geometry/Point.js";import _ from"../../../geometry/Polygon.js";import f from"../../../geometry/SpatialReference.js";import{e as v}from"../../../chunks/intersectionOperator.js";import R from"../../../layers/GraphicsLayer.js";import w from"../../../layers/support/RasterFunction.js";import{convolutionKernel as x}from"../../../layers/support/rasterFunctionConstants.js";import C from"../../../layers/support/TileInfo.js";import b from"../../../views/MapView.js";import{getResolutionToScaleFactor as I}from"../../../views/2d/viewpointUtils.js";import j from"../support/NonPanoramicMedia.js";import{rotate as P,constrainViewpoint as H}from"../support/panConstraint.js";const M={click:"click-handle",enhancements:"enhancements-handle"};let L=class extends r{constructor(e){super(e),this._imageChanged=!1,this._panConstraint=null,this._image=null,this._loadController=null,this._overlays=new R({blendMode:"source-atop"}),this._map=new t,this.autoLoad=!1,this.clickAction="none",this.error=null,this.imageRotation=0,this.state="ready",this.updatingHandles=new u,this._cancelLoadWithController=()=>{this._loadController=o(this._loadController)},this._createImageHandles=()=>{this.removeHandles(M.enhancements),this.addHandles(h(()=>[this.brightness,this.contrast,this.sharpness],([e,t,i])=>{this.image?.loaded&&(this.image.effect=`contrast(${10*(t+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(this.image,i))},m))},this._createPanConstraint=()=>{const{image:e,imageRenderer:t}=this,i=i=>{const{constraints:r,height:a,width:s,rotation:o}=t,{targetGeometry:n}=i;return"point"===n?.type&&e?.serviceRasterInfo?(H({constraints:r,containerHeight:a,containerWidth:s,imageExtent:e.serviceRasterInfo.extent,rotation:o,viewpoint:i,viewportExtent:t.extent}),i):i};return{constrain:i,applyPanConstraint:i}},this._createResizeHandles=e=>{e.removeHandles("resize"),e.addHandles(h(()=>{if(!this.imageRenderer.ready)return;const{extent:t}=e.serviceRasterInfo,{width:i,height:r,rotation:a}=this.imageRenderer,{extent:s}=P(_.fromExtent(t),a,t.center.x,t.center.y),{width:o,height:n}=s;return Math.max(o/i,n/r)},e=>{if(!this.imageRenderer||null==e)return;const{constraints:t,scale:i,spatialReference:r}=this.imageRenderer,a=t.minScale,s=I(r),o=.25*s,n=s*e;let l=n;const h=[];for(;l>o;)h.push(l),l/=2;h.push(l);const{lods:m}=C.create({scales:h});if(t.set({minScale:n,lods:m}),this._imageChanged)return this.imageRenderer.scale=n,void(this._imageChanged=!1);this.imageRenderer.scale=Math.abs(i-a)<=1e-6?n:i},m),"resize")},this._loadMediaInternal=async(e,t)=>{if(this.state="image-loading",this.clearImage(),this.error=null,this._imageChanged=!0,!e)throw new Error("No media to load");try{const{layer:i}=await e.load(t);n(t),this._image=i,this._updatePanConstraint(),this._createResizeHandles(this._image),this._map.add(this._image),this.imageRotation=e.rotation??0,this.media=e,this.state="image-loaded"}catch(i){if(!l(i))throw this.state="image-load-error",this.error=i,a.getLogger(this).error(`error occurred while loading image ${this._image?.url}`,i),this._image=null,i;this.state="image-load-aborted"}return this._image},this._loadWithController=()=>{this._cancelLoadWithController(),this.media&&(this._loadController=new AbortController,this._loadMediaInternal(this.media,this._loadController))},this._updatePanConstraint=()=>{this._panConstraint&&this.imageRenderer.constraints.customConstraints.remove(this._panConstraint),this._panConstraint=this._createPanConstraint(),this.imageRenderer.constraints.customConstraints.add(this._panConstraint)},this.addGraphic=(e,t)=>{this._overlays.graphics.add(e,t)},this.addManyGraphics=e=>{this._overlays.addMany(e)},this.clearGraphics=()=>{this._overlays.graphics.removeAll()},this.clearImage=()=>{this.image&&this._map.layers.remove(this.image),this._image=null},this.removeGraphic=e=>{this._overlays.remove(e)},this.removeManyGraphics=e=>{this._overlays.removeMany(e)},this._imageRenderer=new b({constraints:{snapToZoom:!0,rotationEnabled:!1},map:this._map,popupEnabled:!1,spatialReference:f.WebMercator,attributionVisible:!1})}destroy(){this.clearImage(),this.media=null,this._imageRenderer.destroy()}initialize(){this.state="initialized",this.addHandles([d(()=>null!=this.media&&this.autoLoad,this._loadWithController,m),h(()=>this.image?.loaded,()=>{this._createImageHandles()}),h(()=>this.imageRotation,()=>{this._rotateImage()}),h(()=>this.imageRenderer.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},p),h(()=>this.imageRenderer.map.allLayers.length,e=>{e&&this.imageRenderer.map.layers.reorder(this._overlays,e-1)},m),h(()=>this.clickAction,e=>{this.removeHandles(M.click),"none"!==e&&this.addHandles(this.imageRenderer.on("click",t=>{if(this.image?.loaded&&this.imageRenderer.ready)switch(e){case"emit":t.stopPropagation(),this.emit("click",t);break;case"hittest":t.stopPropagation(),t.defer(async()=>{const e=await this.imageRenderer.hitTest(t.screenPoint,{include:this._overlays});e.results=e.results.filter(e=>"graphic"===e.type),this.emit("hittest-response",e)});break;case"pixel-location":{if(t.stopPropagation(),!this.image?.serviceRasterInfo||!t.mapPoint)return void this.emit("pixel-location",null);const{extent:e,pixelSize:i}=this.image.serviceRasterInfo,r=(t.mapPoint.x-e.xmin)*i.x,a=(e.ymax-t.mapPoint.y)*i.y,s=new y({x:r,y:a,spatialReference:e.spatialReference});this.emit("pixel-location",s);break}}}))},m)])}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",s(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",s(e,-10,10))}get image(){return this._image}get imagePointsInView(){const{extent:e,ready:t}=this.imageRenderer,i=this.imageRotation,r=this.image?.fullExtent,a=this.image?.serviceRasterInfo,s=!0===this._imageRenderer.allLayerViews.find(({layer:e})=>e===this.image)?.attached;if(!(t&&e&&r&&a&&s))return null;const o=P(_.fromExtent(e),i,e.center.x,e.center.y),n=_.fromExtent(r),l=v(o,n);if(!l)return null;const{rings:h}=l;return h.flat().map(([e,t])=>({x:(e-a.extent.xmin)*a.pixelSize.x,y:(a.extent.ymax-t)*a.pixelSize.y}))}get imageSize(){const{image:e}=this;if(!e?.raster)return null;const{width:t,height:i}=e.raster.rasterInfo;return[t,i]}get imageRenderer(){return this._imageRenderer}get imageView(){return this.imageRenderer.allLayerViews.find(e=>e.layer===this.image)}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",s(e,0,1))}get updating(){return this.updatingHandles.updating}_rotateImage(){this.imageRenderer.constraints.rotationEnabled=!0,this.imageRenderer.rotation=this.imageRotation,this.imageRenderer.constraints.rotationEnabled=!1}sharpenImage(e,t){if(!t)return void(e.rasterFunction=null);const i=[0,-1*t,0,-1*t,4*t+1,-1*t,0,-1*t,0],r=new w({functionName:"Convolution",functionArguments:{type:x.userDefined,cols:3,rows:3,kernel:i,convolutionType:x.userDefined}});e.rasterFunction=r}async loadMedia(e,t){this.state="image-loading";const i=this.autoLoad;this.autoLoad=!1;return await this._loadMediaInternal(e,t).finally(()=>{this.autoLoad=i})}};e([c()],L.prototype,"_image",void 0),e([c()],L.prototype,"_imageRenderer",void 0),e([c()],L.prototype,"_loadController",void 0),e([c()],L.prototype,"_overlays",void 0),e([c()],L.prototype,"_map",void 0),e([c({type:Boolean})],L.prototype,"autoLoad",void 0),e([c({type:Number})],L.prototype,"brightness",null),e([c()],L.prototype,"clickAction",void 0),e([c({type:Number})],L.prototype,"contrast",null),e([c({type:Object})],L.prototype,"customParameters",void 0),e([c({type:i})],L.prototype,"error",void 0),e([c({readOnly:!0})],L.prototype,"image",null),e([c({readOnly:!0})],L.prototype,"imagePointsInView",null),e([c({readOnly:!0})],L.prototype,"imageSize",null),e([c({readOnly:!0})],L.prototype,"imageRenderer",null),e([c({type:Number})],L.prototype,"imageRotation",void 0),e([c()],L.prototype,"imageView",null),e([c({type:j})],L.prototype,"media",void 0),e([c({type:Number})],L.prototype,"sharpness",null),e([c()],L.prototype,"state",void 0),e([c()],L.prototype,"updatingHandles",void 0),e([c()],L.prototype,"updating",null),L=e([g("esri.widgets.OrientedImageryViewer.components.ImageViewerViewModel")],L);const k=L;export{k as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{rotate as t}from"../../../arcade/geometry/operators.js";import e from"../../../geometry/Polygon.js";import{e as o}from"../../../chunks/intersectionOperator.js";import{g as r}from"../../../chunks/proximityOperator.js";function n(n){const{viewpoint:i,containerWidth:m,containerHeight:a,rotation:s,constraints:c,imageExtent:x,viewportExtent:p}=n,{targetGeometry:f,scale:y}=i;if("point"!==f?.type)return;const g=x.center,{extent:h}=t(e.fromExtent(x),s,...g.toArray()),{width:l,height:E}=h,d=c.scaleToZoom(y);if(d<=0)return void(i.targetGeometry=g.clone());const u=1/2**d,j=m/a;let v=u*l,w=u*E;l/m>E/a?w=v/j:v=w*j;const G=h.clone();G.xmin+=v/2,G.xmax-=v/2,G.ymin+=w/2,G.ymax-=w/2;let k=o(e.fromExtent(h),e.fromExtent(G));k=k&&p.intersects(x)?o(t(k,s,...g.toArray()),e.fromExtent(x)):e.fromExtent(h),i.targetGeometry=r(k,f).coordinate}export{n as constrainViewpoint};
2
+ import t from"../../../geometry/Polygon.js";import{execute as o}from"../../../geometry/operators/affineTransformOperator.js";import{e}from"../../../chunks/intersectionOperator.js";import{g as r}from"../../../chunks/proximityOperator.js";import n from"../../../geometry/operators/support/Transformation.js";function i(o){const{viewpoint:n,containerWidth:i,containerHeight:s,rotation:a,constraints:c,imageExtent:f,viewportExtent:p}=o,{targetGeometry:x,scale:y}=n;if("point"!==x?.type)return;const g=f.center,{extent:u}=m(t.fromExtent(f),a,g.x,g.y),{width:h,height:l}=u,E=c.scaleToZoom(y);if(E<=0)return void(n.targetGeometry=g.clone());const j=1/2**E,d=i/s;let w=j*h,v=j*l;h/i>l/s?v=w/d:w=v*d;const G=u.clone();G.xmin+=w/2,G.xmax-=w/2,G.ymin+=v/2,G.ymax-=v/2;let O=e(t.fromExtent(u),t.fromExtent(G));O=O&&p.intersects(f)?e(m(O,a,g.x,g.y),t.fromExtent(f)):t.fromExtent(u),n.targetGeometry=r(O,x).coordinate}function m(t,e,r,i){const m=(new n).rotate(e,r,i);return o(t,m)}export{i as constrainViewpoint,m as rotate};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../Graphic.js";import t from"../../../geometry/Polygon.js";import{getExtentFromGeometry as o,scaleExtent as r}from"../../../geometry/support/geometryUtils.js";import{addressToLocations as s}from"../../../rest/locator/addressToLocations.js";import{locationToAddress as n}from"../../../rest/locator/locationToAddress.js";import{suggestLocations as a}from"../../../rest/locator/suggestLocations.js";import i from"../../../rest/support/AddressToLocationsParameters.js";import c from"../../../rest/support/LocationToAddressParameters.js";import l from"../../../rest/support/SuggestLocationsParameters.js";const u="Single Line Input",m=3e5;function p(e,t){return e.location?S(e,t):j(e,t)}function f(e,t){if(t.localSearchDisabled)return null;const o=e?.scale;return"number"==typeof o&&o<=m?e?.extent?.center:null}async function g(e,t){const{source:o,spatialReference:r,view:s,suggestTerm:n,maxSuggestions:i,sourceIndex:c}=e,u=new l,{apiKey:m,url:p}=o,g=v(o,s,await import("../../../geometry/operators/labelPointOperator.js")),d=t?.signal;if(!p)return null;m&&(u.apiKey=m),o.categories&&(u.categories=o.categories),r&&(u.outSpatialReference=r);const y=f(s,o);y&&(u.location=y);if(!n.trim())return null;const{prefix:x="",suffix:w=""}=o,S=`${x}${n}${w}`;return u.text=S,g&&(u.searchExtent=g),u.maxSuggestions=i,o.countryCode&&(u.countryCode=o.countryCode),a(p,u,{signal:d}).then(e=>h(e,c))}function d(e){return!!e&&/(?:geocode-api\.arcgis\.com\/arcgis\/rest\/services\/world\/geocodeserver).*/i.test(e)}function y(e){return!!e&&/(?:\/servers\/[\da-z.-]+\/rest\/services\/world\/geocodeserver).*/i.test(e)}function x(e){return!!e&&/(?:arcgis\.com\/arcgis\/rest\/services\/world\/geocodeserver).*/i.test(e)}const w="https://geocode-api.arcgis.com/arcgis/rest/services/World/GeocodeServer";async function S(e,t){const{location:o,source:r,sourceIndex:s,spatialReference:a,view:i}=e,{apiKey:l,defaultZoomScale:u,language:m,url:p,zoomScale:f}=r;if(null==p)return[];const g=i?.scale,d=t?.signal,y=new c({language:m,location:o,apiKey:l,outSpatialReference:a});try{const e=await n(p,y,{signal:d});return $([e],{defaultZoomScale:u,scale:g,sourceIndex:s,view:i,zoomScale:f},await import("../../../geometry/operators/labelPointOperator.js"))}catch{return[]}}function v(e,t,r){const{filter:s,withinViewEnabled:n}=e,a=t?.scale,i=t?.extent,c=s?.geometry;return o(c,t,a,r)||(n&&i?i:void 0)}async function j(e,t){const{source:o,suggestResult:r,spatialReference:n,view:a,maxResults:c,sourceIndex:l}=e,m=o?.zoomScale,p=o?.defaultZoomScale,g=r.text?.trim();if(!g)return null;const d=!r.key&&o.prefix?o.prefix:"",y=!r.key&&o.suffix?o.suffix:"",x=`${d}${r.text}${y}`,w=new i,{apiKey:S,url:j}=o,b=a?.scale,h=await import("../../../geometry/operators/labelPointOperator.js"),I=v(o,a,h),K=t?.signal;if(S&&(w.apiKey=S),!j)return null;o.categories&&(w.categories=o.categories),o.locationType&&(w.locationType=o.locationType),n&&(w.outSpatialReference=n);const L=f(a,o);L&&(w.location=L),w.maxLocations=c,I&&(w.searchExtent=I),o.countryCode&&(w.countryCode=o.countryCode);const{key:R}=r,T=`${R}`;return R&&(w.magicKey=T),w.address={},w.address[o.singleLineFieldName||u]=x,o.outFields&&(w.outFields=o.outFields),s(j,w,{signal:K}).then(e=>$(e,{key:T,scale:b,sourceIndex:l,view:a,zoomScale:m,defaultZoomScale:p},h))}function b(e,t){return{text:e.text,key:e.magicKey,sourceIndex:t}}function h(e,t){return e.map(e=>b(e,t))}function I(s,n,a){const{key:i,scale:c,sourceIndex:l,view:u,zoomScale:m,defaultZoomScale:p}=n,{attributes:f,extent:g,location:d,address:y}=s,x=new e({geometry:d,attributes:f}),w=g||d,S=o(w,u,c,a),v=S?"number"==typeof m?r(S,u??void 0,m):"number"==typeof p&&"point"===w?.type?r(S,u??void 0,p):S:null,j=d?`${d.x},${d.y}`:"",b=y||j,h=x.clone();return null!=v&&(h.geometry=t.fromExtent(v)),{extent:v,feature:x,target:h,key:i,name:b,sourceIndex:l}}function $(e,t,o){return e.filter(Boolean).map(e=>I(e,t,o))}export{f as getLocation,p as getResults,g as getSuggestions,x as isArcGISWorldGeocoder,d as isMeteredArcGISWorldGeocoder,y as isProxiedArcGISWorldGeocoder,w as meteredArcGISLocatorUrl};
2
+ import e from"../../../Graphic.js";import o from"../../../core/Error.js";import t from"../../../core/Logger.js";import{isAbortError as r}from"../../../core/promiseUtils.js";import n from"../../../geometry/Polygon.js";import{getExtentFromGeometry as s,scaleExtent as i}from"../../../geometry/support/geometryUtils.js";import{addressToLocations as a}from"../../../rest/locator/addressToLocations.js";import{locationToAddress as c}from"../../../rest/locator/locationToAddress.js";import{suggestLocations as l}from"../../../rest/locator/suggestLocations.js";import u from"../../../rest/support/AddressToLocationsParameters.js";import m from"../../../rest/support/LocationToAddressParameters.js";import g from"../../../rest/support/SuggestLocationsParameters.js";const p="Single Line Input",f=3e5,d=()=>t.getLogger("esri.widgets.Search.support.locatorUtils");function y(e,o){return e.location?b(e,o):z(e,o)}function x(e,o){if(o.localSearchDisabled)return null;const t=e?.scale;return"number"==typeof t&&t<=f?e?.extent?.center:null}async function w(e,o){const{source:t,spatialReference:r,view:n,suggestTerm:s,maxSuggestions:i,sourceIndex:a}=e,c=new g,{apiKey:u,url:m}=t,p=L(t,n,await import("../../../geometry/operators/labelPointOperator.js")),f=o?.signal??void 0;if(!m)return null;u&&(c.apiKey=u),t.categories&&(c.categories=t.categories),r&&(c.outSpatialReference=r);const d=x(n,t);d&&(c.location=d);if(!s.trim())return null;const{prefix:y="",suffix:w=""}=t,v=`${y}${s}${w}`;return c.text=v,p&&(c.searchExtent=p),c.maxSuggestions=i,t.countryCode&&(c.countryCode=t.countryCode),l(m,c,{signal:f}).then(e=>$(e,a))}function v(e){return!!e&&/(?:geocode-api\.arcgis\.com\/arcgis\/rest\/services\/world\/geocodeserver).*/i.test(e)}function S(e){return!!e&&/(?:\/servers\/[\da-z.-]+\/rest\/services\/world\/geocodeserver).*/i.test(e)}function j(e){return!!e&&/(?:arcgis\.com\/arcgis\/rest\/services\/world\/geocodeserver).*/i.test(e)}const h="https://geocode-api.arcgis.com/arcgis/rest/services/World/GeocodeServer";async function b(e,o){const{location:t,source:n,sourceIndex:s,spatialReference:i,view:a}=e,{apiKey:l,defaultZoomScale:u,language:g,url:p,zoomScale:f}=n,d=o?.signal??void 0;if(null==p)return[];const y=a?.scale,x=new m({language:g,location:t,apiKey:l,outSpatialReference:i});try{const e=await c(p,x,{signal:d}),o=await import("../../../geometry/operators/labelPointOperator.js");return await T([e],{defaultZoomScale:u,scale:y,signal:d,sourceIndex:s,view:a,zoomScale:f},o)}catch(w){if(r(w))throw w;return[]}}function L(e,o,t){const{filter:r,withinViewEnabled:n}=e,i=o?.scale,a=o?.extent,c=r?.geometry;return s(c,o,i,t)||(n&&a?a:void 0)}async function z(e,o){const{source:t,suggestResult:r,spatialReference:n,view:s,maxResults:i,sourceIndex:c}=e,l=t?.zoomScale,m=t?.defaultZoomScale,g=r.text?.trim();if(!g)return null;const f=!r.key&&t.prefix?t.prefix:"",d=!r.key&&t.suffix?t.suffix:"",y=`${f}${r.text}${d}`,w=new u,{apiKey:v,url:S}=t,j=s?.scale,h=await import("../../../geometry/operators/labelPointOperator.js"),b=L(t,s,h),z=o?.signal??void 0;if(v&&(w.apiKey=v),!S)return null;t.categories&&(w.categories=t.categories),t.locationType&&(w.locationType=t.locationType),n&&(w.outSpatialReference=n);const I=x(s,t);I&&(w.location=I),w.maxLocations=i,b&&(w.searchExtent=b),t.countryCode&&(w.countryCode=t.countryCode);const{key:$}=r,K=`${$}`;return $&&(w.magicKey=K),w.address={},w.address[t.singleLineFieldName||p]=y,t.outFields&&(w.outFields=t.outFields),a(S,w,{signal:z}).then(e=>T(e,{key:K,scale:j,signal:z,sourceIndex:c,view:s,zoomScale:l,defaultZoomScale:m},h))}function I(e,o){return{text:e.text,key:e.magicKey,sourceIndex:o}}function $(e,o){return e.map(e=>I(e,o))}function K(e){return!!e&&"ground"in e}async function P(e,t,n){const{signal:s,view:i}=t,{location:a}=e,c="3d"===i?.type&&K(i.map)?i.map.ground:null;if(!a||!c)return R(e,t,n);try{const e=await c.queryElevation(a,{signal:s});a.z=e?.geometry.z??a.z}catch(l){if(r(l))throw l;d().warn(new o("search:elevation-query-error","Could not get elevation for point.",{error:l}))}return R(e,t,n)}function R(o,t,r){const{key:a,scale:c,sourceIndex:l,view:u,zoomScale:m,defaultZoomScale:g}=t,{attributes:p,extent:f,location:d,address:y}=o,x=new e({geometry:d,attributes:p}),w=f||d,v=s(w,u,c,r),S=v?"number"==typeof m?i(v,u??void 0,m):"number"==typeof g&&"point"===w?.type?i(v,u??void 0,g):v:null,j=d?`${d.x},${d.y}`:"",h=y||j,b=x.clone();return null!=S&&(b.geometry=n.fromExtent(S)),{extent:S,feature:x,target:b,key:a,name:h,sourceIndex:l}}function T(e,o,t){return Promise.all(e.filter(Boolean).map(e=>P(e,o,t)))}export{x as getLocation,y as getResults,w as getSuggestions,j as isArcGISWorldGeocoder,v as isMeteredArcGISWorldGeocoder,S as isProxiedArcGISWorldGeocoder,h as meteredArcGISLocatorUrl};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{substitute as t}from"../../intl.js";import i from"../../core/Collection.js";import{watch as o}from"../../core/reactiveUtils.js";import{throttle as s}from"../../core/throttle.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import{fetchMessageBundle as l}from"../../intl/messages.js";import{isFeatureLayer as a,isSubtypeSublayer as d}from"../../layers/support/layerUtils.js";import{UtilityNetworkAssociationsContent as c}from"../../popup/content.js";import{substituteActionImage as u,getActionStyles as p}from"../../support/actions/actionUtils.js";import h from"../Feature.js";import m from"../Spinner.js";import g from"../Widget.js";import{css as w}from"../Feature/resources.js";import{FeatureContentMixin as v}from"../Feature/support/FeatureContentMixin.js";import{css as _}from"../Features/css.js";import f from"../Features/FeaturesViewModel.js";import{ActionsCollection as y}from"../Popup/actions.js";import{zoomToLocation as M}from"../Popup/actionUtils.js";import{loadCalciteComponents as F}from"../support/componentsUtils.js";import{globalCss as A}from"../support/globalCss.js";import{Heading as I}from"../support/Heading.js";import{tsx as b,messageBundle as k,vmEvent as T}from"../support/widget.js";import C from"./UtilityNetworkTraceFeaturesDrillIn.js";const W="selected-index",N=0,x="features-spinner",j="esri-utility-network-trace",S={blockContainer:`${j}__block-container`,blockContent:`${j}__block-content`,featureContent:`${j}__feature-content`,paddingBottom:`${j}__pad-bottom`,paddingTop:`${j}__pad-top`};let L=class extends(v(g)){constructor(e,t){super(e,t),this._actionBarMenuNode=null,this._drillInFlowItems=new i,this._drillInWidget=new C({flowItems:this._drillInFlowItems}),this._feature=null,this._featureMenuViewportNode=null,this._spinner=null,this._utilityNetworkTraceMessages=null,this.featureNavigationTop=!1,this.headerActions=new y,this.headingLevel=2,this.messages=null,this.messagesCommon=null,this.responsiveActionsEnabled=!1,this.viewModel=new f,this._renderAction=(e,t)=>{const i=this._getActionTitle(e),{type:o,active:s,uid:n,disabled:r,indicator:l}=e;return e.visible?b("calcite-action",{active:"toggle"===o&&e.value,bind:this,"data-action-uid":n,disabled:"zoom-to-feature"===e.id?!this.feature.geometry:r,icon:this._getActionIcon(e),indicator:l,key:`action-${t}`,loading:s,scale:"s",text:i,title:this._hideActionText?i:void 0,onclick:this._triggerAction},this._renderFallbackIcon(e)):null},this._renderAddNsoBlock=()=>{const{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return b("calcite-block",{class:S.blockContent,expanded:!this.feature,heading:e?.inputsStrings.addNonspatialOption},b("calcite-action",{icon:"x",slot:"actions-end",text:t.close,onclick:()=>this.emit("close-un-trace-feature-block")}),b("calcite-notice",{icon:"information",kind:"info",open:!this.feature},b("div",{slot:"message"},e?.inputsStrings.addNonspatialHint)))},this._renderNoPopupErrorBlock=()=>{const{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return b("calcite-block",{description:void 0,expanded:!0,heading:"show-feature-info"===this.mode?t.warning:void 0},b("calcite-notice",{class:this.classes(S.paddingBottom,S.paddingTop),icon:"exclamation-mark-triangle",kind:"danger",open:!0},b("div",{slot:"message"},e.alertsStrings.noPopupConfigured)),"show-feature-info"===this.mode?b("calcite-action",{icon:"x",slot:"actions-end",text:t.close,onclick:()=>this.emit("close-un-trace-feature-block")}):void 0)},this._displaySpinnerThrottled=s(()=>this._displaySpinner(),N),this.addHandles([this._displaySpinnerThrottled,o(()=>this.viewModel?.active,e=>this._drillInWidget.closed=!e),o(()=>this.viewModel?.view,(e,t)=>this._viewChange(e,t)),o(()=>this.viewModel?.view?.ready,(e,t)=>this._viewReadyChange(e??!1,t??!1)),o(()=>[this.viewModel?.waitingForResult,this.viewModel?.location],()=>{this._hideSpinner(),this._displaySpinnerThrottled()}),o(()=>this.viewModel?.screenLocation,()=>this._closeOpenActionMenu()),o(()=>this.selectedFeatureWidget,()=>this._destroyDrillInFlowItemWidgets()),o(()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.title,e?.state]},()=>this._setTitleFromFeatureWidget()),o(()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.content,e?.state]},()=>this._setContentFromFeatureWidget()),o(()=>this.viewModel?.featureViewModels,()=>this._featureMenuViewportScrollTop()),this._drillInWidget.on("close",()=>{this.emit("close")}),this._drillInWidget.on("exit",()=>this._destroyDrillInFlowItemWidgets()),this._drillInWidget.on("open-feature",({feature:e})=>this._openRelatedFeature(e)),this._drillInWidget.on("zoom-to-feature",({featureWidget:e})=>M(this.viewModel,e)),this._drillInWidget.on("add-nso-trace-location",({featureWidget:e})=>this.emit("add-nso-trace-location",{featureWidget:e}))])}initialize(){(async()=>{this._utilityNetworkTraceMessages=await l("esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace")})(),this._drillInWidget.mode=this.mode,this._drillInWidget.closable=!1}loadDependencies(){return F({action:()=>import("@esri/calcite-components/dist/components/calcite-action"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group"),block:()=>import("@esri/calcite-components/dist/components/calcite-block"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item"),notice:()=>import("@esri/calcite-components/dist/components/calcite-notice")})}destroy(){this._destroyDrillInFlowItemWidgets(),this._destroySelectedFeatureWidget(),this._destroySpinner(),this._drillInWidget?.destroy()}get _hideActionText(){if(!this.responsiveActionsEnabled)return!1;const e=this.view?.widthBreakpoint;return"xsmall"===e||"small"===e||"medium"===e}get active(){return this.viewModel.active}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get feature(){return this.viewModel.features.length?this.viewModel.features[0]:null}set feature(e){this.viewModel.features=e?[e]:[]}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get hasAssociationsPopupElement(){const e=a(this.feature?.sourceLayer)?this.feature?.sourceLayer:void 0,t=d(this.feature?.sourceLayer)?this.feature?.sourceLayer:void 0,i=e?.popupTemplate||t?.popupTemplate||null,o=i?.content;return!(Array.isArray(o)&&!o.some(e=>e instanceof c))}get hasPopupInfo(){const e=a(this.feature?.sourceLayer)?this.feature?.sourceLayer:void 0,t=d(this.feature?.sourceLayer)?this.feature?.sourceLayer:void 0;return!(!e?.popupTemplate&&!t?.popupTemplate)}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get mode(){return this._get("mode")||"add-nso"}set mode(e){this._set("mode",e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedDrillInFeature(){const e=Array.from(this._drillInFlowItems).at(-1);if(!e)return null;const{flowType:t}=e;return"feature-association"===t||"feature-relationship"===t?e.graphic??null:null}get selectedFeatureWidget(){const{_feature:e,headingLevel:t,_drillInFlowItems:i,timeZone:o}=this,{selectedFeatureViewModel:s}=this.viewModel,n={title:!1};return s?(e?(e.viewModel=s,e.visibleElements=n):this._feature=new h({flowItems:i,headingLevel:t+1,timeZone:o,viewModel:s,visibleElements:n}),this._feature):null}get timeZone(){return this.viewModel.timeZone}set timeZone(e){this.viewModel.timeZone=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}open(e){this.removeHandles(W),this.viewModel.open({features:[e]})}triggerAction(e){return this.viewModel.triggerAction(e)}render(){return b("div",{bind:this,class:this.classes(_.base,A.widget,A.panel,S.blockContainer)},"add-nso"===this.mode?this._renderAddNsoBlock():void 0,this.feature?this.hasPopupInfo?this._renderContentContainer():this._renderNoPopupErrorBlock():void 0)}_renderActionBar(){return this.viewModel.allActions?.length?b("calcite-action-bar",{expandDisabled:!0,expanded:!this._hideActionText,key:"header-action-bar",scale:"s",slot:"action-bar"},b("calcite-action-group",{afterCreate:e=>this._actionBarMenuNode=e,overlayPositioning:"fixed",scale:"s"},this._renderActions())):null}_renderActions(){return this.viewModel.allActions.toArray().map(this._renderAction)}_renderContent(){const e=this.viewModel?.content;return e?"string"==typeof e?b("div",{class:w.contentNode,innerHTML:e,key:e}):this.renderNodeContent(e):null}_renderContentContainer(){const e=[this._renderContentFeature(),this._drillInWidget.render()];return b("calcite-flow",{key:"content-container"},e)}_renderContentFeature(){const{_drillInFlowItems:e,headingLevel:t,featureNavigationTop:i}=this,{title:o,active:s}=this.viewModel,n=o||"";return b("calcite-flow-item",{bind:this,class:this.classes({[_.contentFeature]:!0}),closed:!s,collapseDirection:i?"down":"up",headingLevel:t,key:"root-flow-item",loading:this.viewModel.waitingForContents,selected:0===e.length},"show-feature-info"===this.mode?b("calcite-action",{icon:"x",slot:"header-actions-end",text:this.messagesCommon.close,onclick:()=>{this.emit("close")}}):void 0,n?b(I,{class:this.classes(_.featuresHeading,A.heading),innerHTML:n,key:"header-content",level:this.headingLevel,slot:"header-content"}):null,this._renderHeaderActions(),this._renderActionBar(),b("div",{class:"add-nso"===this.mode?this.classes(_.container,_.contentContainer):this.classes(_.container,_.contentContainer,S.featureContent)},this._renderContent()))}_renderFallbackIcon(e){const{className:t,icon:i}=e;if(i)return null;const o=u({action:e,feature:this.selectedFeature}),s={[_.icon]:!!t,[_.actionImage]:!!o};return t&&(s[t]=!0),o||t?b("span",{"aria-hidden":"true",class:this.classes(_.icon,s),key:"icon",styles:p(o)}):null}_renderHeaderAction(e,t){const i=e.title||"";return e.visible?b("calcite-action",{active:"toggle"===e.type&&e.value,bind:this,"data-action-uid":e.uid,disabled:e.disabled||!this.feature.geometry,icon:e.icon??void 0,indicator:e.indicator,key:`header-action-${t}`,loading:e.active,slot:"header-actions-end",text:i,title:i,onclick:this._triggerHeaderAction}):null}_renderHeaderActions(){return this.headerActions.map((e,t)=>this._renderHeaderAction(e,t)).toArray()}_closeOpenActionMenu(){const{_actionBarMenuNode:e}=this;e&&(e.menuOpen=!1)}_createSpinner(e){e&&(this._spinner=new m({view:e}),e.ui.add(this._spinner,{key:x,position:"manual",internal:!0}))}_destroyDrillInFlowItemWidgets(){this._drillInFlowItems.drain(e=>{"showAllEnabled"in e.viewModel&&(e.viewModel.showAllEnabled=!1),e.viewModel=null,e.destroy()})}_destroySelectedFeatureWidget(){const{_feature:e}=this;e&&(e.viewModel=null,!e.destroyed&&e.destroy()),this._feature=null}_destroySpinner(){const{_spinner:e,view:t}=this;e&&(t?.ui?.remove(e,x),e.destroy(),this._spinner=null)}_displaySpinner(){const{_spinner:e}=this;if(!e)return;const{location:t,waitingForResult:i}=this.viewModel;i&&t?e.show({location:t}):e.hide()}_featureMenuViewportScrollTop(){this._featureMenuViewportNode?.scrollContentTo({top:0})}_getActionIcon(e){return e.icon?e.icon:e.image||e.className?void 0:"question"}_getActionTitle(e){const{messages:i,selectedFeature:o,messagesCommon:s}=this,{id:n}=e,r=o?.attributes,l=e.title??"",a="zoom-to-feature"===n?t(l,{messages:i}):"remove-selected-feature"===n?t(l,{messages:s}):"zoom-to-clustered-features"===n||"browse-clustered-features"===n?t(l,{messages:i}):e.title;return a&&r?t(a,r):a??""}_hideSpinner(){const{_spinner:e}=this;e&&(e.location=null,e.hide())}async _openRelatedFeature(e){await e.viewModel.updateGeometry();const t=e.graphic,i=t?.geometry;null!=i&&null!=t&&(this._destroyDrillInFlowItemWidgets(),await this.viewModel.zoomTo({target:i}),this.open(t))}_setContentFromFeatureWidget(){const{selectedFeatureWidget:e}=this;e&&(this.viewModel.content=e)}_setTitleFromFeatureWidget(){const{selectedFeatureWidget:e,messagesCommon:t}=this,i=e?.viewModel;e&&(this.viewModel.title="error"===i?.state?t?.errorMessage:i?.title||"")}_triggerAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,{allActions:o}=this.viewModel,s=o.findIndex(e=>e.uid===i),n=o.at(s);"toggle"===n?.type&&(n.value=!n.value),this.viewModel.triggerAction(s)}_triggerHeaderAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,o=this.headerActions.find(({uid:e})=>e===i);o&&!o.disabled&&("toggle"===o?.type&&(o.value=!o.value),this.emit("trigger-header-action",{action:o}))}_viewReadyChange(e,t){e?this._wireUpView(this.viewModel?.view):t&&this.viewModel.clear()}_viewChange(e,t){e&&t&&this.viewModel.clear()}_wireUpView(e){this._destroySpinner(),e&&this._createSpinner(e)}};e([n()],L.prototype,"_drillInFlowItems",void 0),e([n()],L.prototype,"_hideActionText",null),e([n({readOnly:!0})],L.prototype,"active",null),e([n()],L.prototype,"content",null),e([n()],L.prototype,"feature",null),e([n()],L.prototype,"featureNavigationTop",void 0),e([n()],L.prototype,"goToOverride",null),e([n()],L.prototype,"hasAssociationsPopupElement",null),e([n()],L.prototype,"hasPopupInfo",null),e([n({type:y})],L.prototype,"headerActions",void 0),e([n()],L.prototype,"headingLevel",void 0),e([n()],L.prototype,"location",null),e([n(),k("esri/widgets/Features/t9n/Features")],L.prototype,"messages",void 0),e([n(),k("esri/t9n/common")],L.prototype,"messagesCommon",void 0),e([n()],L.prototype,"mode",null),e([n()],L.prototype,"promises",null),e([n()],L.prototype,"responsiveActionsEnabled",void 0),e([n({readOnly:!0})],L.prototype,"selectedFeature",null),e([n({readOnly:!0})],L.prototype,"selectedDrillInFeature",null),e([n({readOnly:!0})],L.prototype,"selectedFeatureWidget",null),e([n()],L.prototype,"timeZone",null),e([n()],L.prototype,"view",null),e([n({type:f}),T(["triggerAction","trigger-action"])],L.prototype,"viewModel",void 0),L=e([r("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceFeature")],L);const U=L;export{U as default};
2
+ import{__decorate as e}from"tslib";import{substitute as t}from"../../intl.js";import i from"../../core/Collection.js";import{watch as o}from"../../core/reactiveUtils.js";import{throttle as s}from"../../core/throttle.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import{getGraphicLayer as l}from"../../graphic/graphicOriginUtils.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import{isFeatureLayer as d,isSubtypeSublayer as c}from"../../layers/support/layerUtils.js";import{UtilityNetworkAssociationsContent as p}from"../../popup/content.js";import{substituteActionImage as u,getActionStyles as h}from"../../support/actions/actionUtils.js";import m from"../Feature.js";import g from"../Spinner.js";import w from"../Widget.js";import{css as v}from"../Feature/resources.js";import{FeatureContentMixin as _}from"../Feature/support/FeatureContentMixin.js";import{css as f}from"../Features/css.js";import y from"../Features/FeaturesViewModel.js";import{ActionsCollection as M}from"../Popup/actions.js";import{zoomToLocation as F}from"../Popup/actionUtils.js";import{loadCalciteComponents as A}from"../support/componentsUtils.js";import{globalCss as I}from"../support/globalCss.js";import{Heading as b}from"../support/Heading.js";import{tsx as k,messageBundle as T,vmEvent as C}from"../support/widget.js";import W from"./UtilityNetworkTraceFeaturesDrillIn.js";const N="selected-index",x=0,j="features-spinner",S="esri-utility-network-trace",U={blockContainer:`${S}__block-container`,blockContent:`${S}__block-content`,featureContent:`${S}__feature-content`,paddingBottom:`${S}__pad-bottom`,paddingTop:`${S}__pad-top`};let O=class extends(_(w)){constructor(e,t){super(e,t),this._actionBarMenuNode=null,this._drillInFlowItems=new i,this._drillInWidget=new W({flowItems:this._drillInFlowItems}),this._feature=null,this._featureMenuViewportNode=null,this._spinner=null,this._utilityNetworkTraceMessages=null,this.featureNavigationTop=!1,this.headerActions=new M,this.headingLevel=2,this.messages=null,this.messagesCommon=null,this.responsiveActionsEnabled=!1,this.viewModel=new y,this._renderAction=(e,t)=>{const i=this._getActionTitle(e),{type:o,active:s,uid:n,disabled:r,indicator:l}=e;return e.visible?k("calcite-action",{active:"toggle"===o&&e.value,bind:this,"data-action-uid":n,disabled:"zoom-to-feature"===e.id?!this.feature.geometry:r,icon:this._getActionIcon(e),indicator:l,key:`action-${t}`,loading:s,scale:"s",text:i,title:this._hideActionText?i:void 0,onclick:this._triggerAction},this._renderFallbackIcon(e)):null},this._renderAddNsoBlock=()=>{const{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return k("calcite-block",{class:U.blockContent,expanded:!this.feature,heading:e?.inputsStrings.addNonspatialOption},k("calcite-action",{icon:"x",slot:"actions-end",text:t.close,onclick:()=>this.emit("close-un-trace-feature-block")}),k("calcite-notice",{icon:"information",kind:"info",open:!this.feature},k("div",{slot:"message"},e?.inputsStrings.addNonspatialHint)))},this._renderNoPopupErrorBlock=()=>{const{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return k("calcite-block",{description:void 0,expanded:!0,heading:"show-feature-info"===this.mode?t.warning:void 0},k("calcite-notice",{class:this.classes(U.paddingBottom,U.paddingTop),icon:"exclamation-mark-triangle",kind:"danger",open:!0},k("div",{slot:"message"},e.alertsStrings.noPopupConfigured)),"show-feature-info"===this.mode?k("calcite-action",{icon:"x",slot:"actions-end",text:t.close,onclick:()=>this.emit("close-un-trace-feature-block")}):void 0)},this._displaySpinnerThrottled=s(()=>this._displaySpinner(),x),this.addHandles([this._displaySpinnerThrottled,o(()=>this.viewModel?.active,e=>this._drillInWidget.closed=!e),o(()=>this.viewModel?.view,(e,t)=>this._viewChange(e,t)),o(()=>this.viewModel?.view?.ready,(e,t)=>this._viewReadyChange(e??!1,t??!1)),o(()=>[this.viewModel?.waitingForResult,this.viewModel?.location],()=>{this._hideSpinner(),this._displaySpinnerThrottled()}),o(()=>this.viewModel?.screenLocation,()=>this._closeOpenActionMenu()),o(()=>this.selectedFeatureWidget,()=>this._destroyDrillInFlowItemWidgets()),o(()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.title,e?.state]},()=>this._setTitleFromFeatureWidget()),o(()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.content,e?.state]},()=>this._setContentFromFeatureWidget()),o(()=>this.viewModel?.featureViewModels,()=>this._featureMenuViewportScrollTop()),this._drillInWidget.on("close",()=>{this.emit("close")}),this._drillInWidget.on("exit",()=>this._destroyDrillInFlowItemWidgets()),this._drillInWidget.on("open-feature",({feature:e})=>this._openRelatedFeature(e)),this._drillInWidget.on("zoom-to-feature",({featureWidget:e})=>F(this.viewModel,e)),this._drillInWidget.on("add-nso-trace-location",({featureWidget:e})=>this.emit("add-nso-trace-location",{featureWidget:e}))])}initialize(){(async()=>{this._utilityNetworkTraceMessages=await a("esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace")})(),this._drillInWidget.mode=this.mode,this._drillInWidget.closable=!1}loadDependencies(){return A({action:()=>import("@esri/calcite-components/dist/components/calcite-action"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group"),block:()=>import("@esri/calcite-components/dist/components/calcite-block"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item"),notice:()=>import("@esri/calcite-components/dist/components/calcite-notice")})}destroy(){this._destroyDrillInFlowItemWidgets(),this._destroySelectedFeatureWidget(),this._destroySpinner(),this._drillInWidget?.destroy()}get _hideActionText(){if(!this.responsiveActionsEnabled)return!1;const e=this.view?.widthBreakpoint;return"xsmall"===e||"small"===e||"medium"===e}get active(){return this.viewModel.active}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get feature(){return this.viewModel.features.length?this.viewModel.features[0]:null}set feature(e){this.viewModel.features=e?[e]:[]}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get hasAssociationsPopupElement(){if(!this.feature)return!1;const e=l(this.feature),t=e&&d(e)?e:void 0,i=c(e)?e:void 0,o=t?.popupTemplate||i?.popupTemplate||null,s=o?.content;return!(Array.isArray(s)&&!s.some(e=>e instanceof p))}get hasPopupInfo(){const e=this.feature?l(this.feature):null,t=e&&d(e)?e:void 0,i=c(e)?e:void 0;return!(!t?.popupTemplate&&!i?.popupTemplate)}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get mode(){return this._get("mode")||"add-nso"}set mode(e){this._set("mode",e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedDrillInFeature(){const e=Array.from(this._drillInFlowItems).at(-1);if(!e)return null;const{flowType:t}=e;return"feature-association"===t||"feature-relationship"===t?e.graphic??null:null}get selectedFeatureWidget(){const{_feature:e,headingLevel:t,_drillInFlowItems:i,timeZone:o}=this,{selectedFeatureViewModel:s}=this.viewModel,n={title:!1};return s?(e?(e.viewModel=s,e.visibleElements=n):this._feature=new m({flowItems:i,headingLevel:t+1,timeZone:o,viewModel:s,visibleElements:n}),this._feature):null}get timeZone(){return this.viewModel.timeZone}set timeZone(e){this.viewModel.timeZone=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}open(e){this.removeHandles(N),this.viewModel.open({features:[e]})}triggerAction(e){return this.viewModel.triggerAction(e)}render(){return k("div",{bind:this,class:this.classes(f.base,I.widget,I.panel,U.blockContainer)},"add-nso"===this.mode?this._renderAddNsoBlock():void 0,this.feature?this.hasPopupInfo?this._renderContentContainer():this._renderNoPopupErrorBlock():void 0)}_renderActionBar(){return this.viewModel.allActions?.length?k("calcite-action-bar",{expandDisabled:!0,expanded:!this._hideActionText,key:"header-action-bar",scale:"s",slot:"action-bar"},k("calcite-action-group",{afterCreate:e=>this._actionBarMenuNode=e,overlayPositioning:"fixed",scale:"s"},this._renderActions())):null}_renderActions(){return this.viewModel.allActions.toArray().map(this._renderAction)}_renderContent(){const e=this.viewModel?.content;return e?"string"==typeof e?k("div",{class:v.contentNode,innerHTML:e,key:e}):this.renderNodeContent(e):null}_renderContentContainer(){const e=[this._renderContentFeature(),this._drillInWidget.render()];return k("calcite-flow",{key:"content-container"},e)}_renderContentFeature(){const{_drillInFlowItems:e,headingLevel:t,featureNavigationTop:i}=this,{title:o,active:s}=this.viewModel,n=o||"";return k("calcite-flow-item",{bind:this,class:this.classes({[f.contentFeature]:!0}),closed:!s,collapseDirection:i?"down":"up",headingLevel:t,key:"root-flow-item",loading:this.viewModel.waitingForContents,selected:0===e.length},"show-feature-info"===this.mode?k("calcite-action",{icon:"x",slot:"header-actions-end",text:this.messagesCommon.close,onclick:()=>{this.emit("close")}}):void 0,n?k(b,{class:this.classes(f.featuresHeading,I.heading),innerHTML:n,key:"header-content",level:this.headingLevel,slot:"header-content"}):null,this._renderHeaderActions(),this._renderActionBar(),k("div",{class:"add-nso"===this.mode?this.classes(f.container,f.contentContainer):this.classes(f.container,f.contentContainer,U.featureContent)},this._renderContent()))}_renderFallbackIcon(e){const{className:t,icon:i}=e;if(i)return null;const o=u({action:e,feature:this.selectedFeature}),s={[f.icon]:!!t,[f.actionImage]:!!o};return t&&(s[t]=!0),o||t?k("span",{"aria-hidden":"true",class:this.classes(f.icon,s),key:"icon",styles:h(o)}):null}_renderHeaderAction(e,t){const i=e.title||"";return e.visible?k("calcite-action",{active:"toggle"===e.type&&e.value,bind:this,"data-action-uid":e.uid,disabled:e.disabled||!this.feature.geometry,icon:e.icon??void 0,indicator:e.indicator,key:`header-action-${t}`,loading:e.active,slot:"header-actions-end",text:i,title:i,onclick:this._triggerHeaderAction}):null}_renderHeaderActions(){return this.headerActions.map((e,t)=>this._renderHeaderAction(e,t)).toArray()}_closeOpenActionMenu(){const{_actionBarMenuNode:e}=this;e&&(e.menuOpen=!1)}_createSpinner(e){e&&(this._spinner=new g({view:e}),e.ui.add(this._spinner,{key:j,position:"manual",internal:!0}))}_destroyDrillInFlowItemWidgets(){this._drillInFlowItems.drain(e=>{"showAllEnabled"in e.viewModel&&(e.viewModel.showAllEnabled=!1),e.viewModel=null,e.destroy()})}_destroySelectedFeatureWidget(){const{_feature:e}=this;e&&(e.viewModel=null,!e.destroyed&&e.destroy()),this._feature=null}_destroySpinner(){const{_spinner:e,view:t}=this;e&&(t?.ui?.remove(e,j),e.destroy(),this._spinner=null)}_displaySpinner(){const{_spinner:e}=this;if(!e)return;const{location:t,waitingForResult:i}=this.viewModel;i&&t?e.show({location:t}):e.hide()}_featureMenuViewportScrollTop(){this._featureMenuViewportNode?.scrollContentTo({top:0})}_getActionIcon(e){return e.icon?e.icon:e.image||e.className?void 0:"question"}_getActionTitle(e){const{messages:i,selectedFeature:o,messagesCommon:s}=this,{id:n}=e,r=o?.attributes,l=e.title??"",a="zoom-to-feature"===n?t(l,{messages:i}):"remove-selected-feature"===n?t(l,{messages:s}):"zoom-to-clustered-features"===n||"browse-clustered-features"===n?t(l,{messages:i}):e.title;return a&&r?t(a,r):a??""}_hideSpinner(){const{_spinner:e}=this;e&&(e.location=null,e.hide())}async _openRelatedFeature(e){await e.viewModel.updateGeometry();const t=e.graphic,i=t?.geometry;null!=i&&null!=t&&(this._destroyDrillInFlowItemWidgets(),await this.viewModel.zoomTo({target:i}),this.open(t))}_setContentFromFeatureWidget(){const{selectedFeatureWidget:e}=this;e&&(this.viewModel.content=e)}_setTitleFromFeatureWidget(){const{selectedFeatureWidget:e,messagesCommon:t}=this,i=e?.viewModel;e&&(this.viewModel.title="error"===i?.state?t?.errorMessage:i?.title||"")}_triggerAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,{allActions:o}=this.viewModel,s=o.findIndex(e=>e.uid===i),n=o.at(s);"toggle"===n?.type&&(n.value=!n.value),this.viewModel.triggerAction(s)}_triggerHeaderAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,o=this.headerActions.find(({uid:e})=>e===i);o&&!o.disabled&&("toggle"===o?.type&&(o.value=!o.value),this.emit("trigger-header-action",{action:o}))}_viewReadyChange(e,t){e?this._wireUpView(this.viewModel?.view):t&&this.viewModel.clear()}_viewChange(e,t){e&&t&&this.viewModel.clear()}_wireUpView(e){this._destroySpinner(),e&&this._createSpinner(e)}};e([n()],O.prototype,"_drillInFlowItems",void 0),e([n()],O.prototype,"_hideActionText",null),e([n({readOnly:!0})],O.prototype,"active",null),e([n()],O.prototype,"content",null),e([n()],O.prototype,"feature",null),e([n()],O.prototype,"featureNavigationTop",void 0),e([n()],O.prototype,"goToOverride",null),e([n()],O.prototype,"hasAssociationsPopupElement",null),e([n()],O.prototype,"hasPopupInfo",null),e([n({type:M})],O.prototype,"headerActions",void 0),e([n()],O.prototype,"headingLevel",void 0),e([n()],O.prototype,"location",null),e([n(),T("esri/widgets/Features/t9n/Features")],O.prototype,"messages",void 0),e([n(),T("esri/t9n/common")],O.prototype,"messagesCommon",void 0),e([n()],O.prototype,"mode",null),e([n()],O.prototype,"promises",null),e([n()],O.prototype,"responsiveActionsEnabled",void 0),e([n({readOnly:!0})],O.prototype,"selectedFeature",null),e([n({readOnly:!0})],O.prototype,"selectedDrillInFeature",null),e([n({readOnly:!0})],O.prototype,"selectedFeatureWidget",null),e([n()],O.prototype,"timeZone",null),e([n()],O.prototype,"view",null),e([n({type:y}),C(["triggerAction","trigger-action"])],O.prototype,"viewModel",void 0),O=e([r("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceFeature")],O);const H=O;export{H as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{substitute as t}from"../../intl.js";import{property as i,subclass as o}from"../../core/accessorSupport/decorators.js";import{fetchMessageBundle as s}from"../../intl/messages.js";import a from"../Widget.js";import{css as n}from"../Features/css.js";import{zoomToFeature as r}from"../Popup/actions.js";import{loadCalciteComponents as c}from"../support/componentsUtils.js";import{messageBundle as l,tsx as d,tsxFragment as u}from"../support/widget.js";const m=r.clone(),p={featureContent:`${"esri-utility-network-trace"}__feature-content`};let h=class extends a{constructor(e,t){super(e,t),this._utilityNetworkTraceMessages=null,this.closed=!1,this.closable=!0,this.messages=null,this.messagesCommon=null,this._handleAddNonspatialTraceLocation=e=>{this.emit("add-nso-trace-location",{featureWidget:e})},this._handleOpenFeature=e=>{this.emit("open-feature",{feature:e})},this._handleZoomToFeature=e=>{this.emit("zoom-to-feature",{featureWidget:e})}}initialize(){(async()=>{this._utilityNetworkTraceMessages=await s("esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace")})()}loadDependencies(){return c({action:()=>import("@esri/calcite-components/dist/components/calcite-action"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item")})}get mode(){return this._get("mode")||"show-feature-info"}set mode(e){this._set("mode",e)}render(){const{flowItems:e}=this,t=e?.toArray();return d(u,null,t?.map((t,i)=>this._renderFlowItem(t,i===e.length-1)))}_renderAddNonspatialTraceLocationAction(e){const{_utilityNetworkTraceMessages:t}=this;return d("calcite-action",{bind:this,icon:"utility-network-trace",scale:"s",text:t.inputsStrings.addNonspatialOption,textEnabled:!0,title:t.inputsStrings.addNonspatialOption,onclick:()=>this._handleAddNonspatialTraceLocation(e)})}_renderFlowItem(e,t){const{messages:i,closable:o,closed:s}=this,a="graphic"in e&&!e.isTable,r="feature-association"===e.flowType,c=this._getExitMessage(e),l=i.selectFeature,u=e,m=u?u.graphic?.sourceLayer:null,h=!(m?m.geometryType:null);return d("calcite-flow-item",{bind:this,closable:o,closed:s,description:this._getDrillInFlowItemDescription(e),heading:e.title??"",key:`flow-item-${e.viewModel.uid}`,selected:t,onCalciteFlowItemBack:e=>{e.preventDefault(),this._handleDrillInBackClick()}},d("calcite-action",{bind:this,class:n.actionExit,icon:"move-up",key:"exit-action",slot:"header-actions-start",text:c,title:c,onclick:this._handleExitClick}),a?d("calcite-action",{bind:this,icon:"zoom-to-object",key:"open-feature-action",slot:"header-actions-end",text:l,title:l,onclick:()=>this._handleOpenFeature(e)}):null,"show-feature-info"===this.mode?d("calcite-action",{icon:"x",slot:"header-actions-end",text:this.messagesCommon.close,onclick:()=>{this.emit("close")}}):void 0,r&&"add-nso"===this.mode?d("calcite-action-bar",{expandDisabled:!0,expanded:!0,key:"header-action-bar",scale:"s",slot:"action-bar"},d("calcite-action-group",{overlayPositioning:"fixed",scale:"s"},h?this._renderAddNonspatialTraceLocationAction(e):this._renderZoomToFeatureAction(e))):null,d("div",{class:this.classes(n.container,p.featureContent)},e.render()))}_renderZoomToFeatureAction(e){const t=this._getActionTitle(m);return d("calcite-action",{active:m.active,bind:this,"data-action-uid":m.uid,disabled:m.disabled,icon:m.icon??"question",indicator:m.indicator,key:`action-${m.uid}`,loading:m.active,scale:"s",text:t,textEnabled:!0,title:t,onclick:()=>this._handleZoomToFeature(e)})}_getActionTitle(e){const{messages:i}=this,{id:o}=e,s=e.title??"";return"zoom-to-feature"===o?t(s,{messages:i}):s}_getDrillInFlowItemDescription(e){switch(e.flowType){case"feature":case"feature-association":case"feature-utility-network-associations":return e.viewModel.description??"";case"feature-relationship":return e.allItemsDescription;case"feature-utility-network-association-type":return e.description??""}}_getExitMessage(e){switch(e.flowType){case"feature":case"feature-association":return"";case"feature-relationship":return this.messages.exitRelatedRecords;case"feature-utility-network-associations":case"feature-utility-network-association-type":return this.messages.exitAssociations}}_handleDrillInBackClick(){const e=this.flowItems?.pop();e&&("showAllEnabled"in e.viewModel&&(e.viewModel.showAllEnabled=!1),e&&(e.viewModel=null,e.destroy()))}_handleExitClick(){this.emit("exit")}};e([i()],h.prototype,"closed",void 0),e([i()],h.prototype,"closable",void 0),e([i()],h.prototype,"flowItems",void 0),e([i(),l("esri/widgets/Features/t9n/Features")],h.prototype,"messages",void 0),e([i(),l("esri/t9n/common")],h.prototype,"messagesCommon",void 0),e([i()],h.prototype,"mode",null),h=e([o("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceFeaturesDrillIn")],h);const f=h;export{f as default};
2
+ import{__decorate as e}from"tslib";import{substitute as t}from"../../intl.js";import{property as i,subclass as o}from"../../core/accessorSupport/decorators.js";import{getGraphicLayer as s}from"../../graphic/graphicOriginUtils.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import n from"../Widget.js";import{css as r}from"../Features/css.js";import{zoomToFeature as c}from"../Popup/actions.js";import{loadCalciteComponents as l}from"../support/componentsUtils.js";import{messageBundle as d,tsx as p,tsxFragment as m}from"../support/widget.js";const u=c.clone(),h={featureContent:`${"esri-utility-network-trace"}__feature-content`};let f=class extends n{constructor(e,t){super(e,t),this._utilityNetworkTraceMessages=null,this.closed=!1,this.closable=!0,this.messages=null,this.messagesCommon=null,this._handleAddNonspatialTraceLocation=e=>{this.emit("add-nso-trace-location",{featureWidget:e})},this._handleOpenFeature=e=>{this.emit("open-feature",{feature:e})},this._handleZoomToFeature=e=>{this.emit("zoom-to-feature",{featureWidget:e})}}initialize(){(async()=>{this._utilityNetworkTraceMessages=await a("esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace")})()}loadDependencies(){return l({action:()=>import("@esri/calcite-components/dist/components/calcite-action"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item")})}get mode(){return this._get("mode")||"show-feature-info"}set mode(e){this._set("mode",e)}render(){const{flowItems:e}=this,t=e?.toArray();return p(m,null,t?.map((t,i)=>this._renderFlowItem(t,i===e.length-1)))}_renderAddNonspatialTraceLocationAction(e){const{_utilityNetworkTraceMessages:t}=this;return p("calcite-action",{bind:this,icon:"utility-network-trace",scale:"s",text:t.inputsStrings.addNonspatialOption,textEnabled:!0,title:t.inputsStrings.addNonspatialOption,onclick:()=>this._handleAddNonspatialTraceLocation(e)})}_renderFlowItem(e,t){const{messages:i,closable:o,closed:a}=this,n="graphic"in e&&!e.isTable,c="feature-association"===e.flowType,l=this._getExitMessage(e),d=i.selectFeature,m=e,u=m&&m.graphic?s(m.graphic):null,f=!(u?u.geometryType:null);return p("calcite-flow-item",{bind:this,closable:o,closed:a,description:this._getDrillInFlowItemDescription(e),heading:e.title??"",key:`flow-item-${e.viewModel.uid}`,selected:t,onCalciteFlowItemBack:e=>{e.preventDefault(),this._handleDrillInBackClick()}},p("calcite-action",{bind:this,class:r.actionExit,icon:"move-up",key:"exit-action",slot:"header-actions-start",text:l,title:l,onclick:this._handleExitClick}),n?p("calcite-action",{bind:this,icon:"zoom-to-object",key:"open-feature-action",slot:"header-actions-end",text:d,title:d,onclick:()=>this._handleOpenFeature(e)}):null,"show-feature-info"===this.mode?p("calcite-action",{icon:"x",slot:"header-actions-end",text:this.messagesCommon.close,onclick:()=>{this.emit("close")}}):void 0,c&&"add-nso"===this.mode?p("calcite-action-bar",{expandDisabled:!0,expanded:!0,key:"header-action-bar",scale:"s",slot:"action-bar"},p("calcite-action-group",{overlayPositioning:"fixed",scale:"s"},f?this._renderAddNonspatialTraceLocationAction(e):this._renderZoomToFeatureAction(e))):null,p("div",{class:this.classes(r.container,h.featureContent)},e.render()))}_renderZoomToFeatureAction(e){const t=this._getActionTitle(u);return p("calcite-action",{active:u.active,bind:this,"data-action-uid":u.uid,disabled:u.disabled,icon:u.icon??"question",indicator:u.indicator,key:`action-${u.uid}`,loading:u.active,scale:"s",text:t,textEnabled:!0,title:t,onclick:()=>this._handleZoomToFeature(e)})}_getActionTitle(e){const{messages:i}=this,{id:o}=e,s=e.title??"";return"zoom-to-feature"===o?t(s,{messages:i}):s}_getDrillInFlowItemDescription(e){switch(e.flowType){case"feature":case"feature-association":case"feature-utility-network-associations":return e.viewModel.description??"";case"feature-relationship":return e.allItemsDescription;case"feature-utility-network-association-type":return e.description??""}}_getExitMessage(e){switch(e.flowType){case"feature":case"feature-association":return"";case"feature-relationship":return this.messages.exitRelatedRecords;case"feature-utility-network-associations":case"feature-utility-network-association-type":return this.messages.exitAssociations}}_handleDrillInBackClick(){const e=this.flowItems?.pop();e&&("showAllEnabled"in e.viewModel&&(e.viewModel.showAllEnabled=!1),e&&(e.viewModel=null,e.destroy()))}_handleExitClick(){this.emit("exit")}};e([i()],f.prototype,"closed",void 0),e([i()],f.prototype,"closable",void 0),e([i()],f.prototype,"flowItems",void 0),e([i(),d("esri/widgets/Features/t9n/Features")],f.prototype,"messages",void 0),e([i(),d("esri/t9n/common")],f.prototype,"messagesCommon",void 0),e([i()],f.prototype,"mode",null),f=e([o("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceFeaturesDrillIn")],f);const g=f;export{g as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{id as t}from"../../kernel.js";import r from"../../core/Collection.js";import{deprecatedModule as s}from"../../core/deprecate.js";import i from"../../core/Error.js";import{EventedAccessor as a}from"../../core/Evented.js";import l from"../../core/Logger.js";import{whenOnce as o,once as n}from"../../core/reactiveUtils.js";import{property as c,subclass as u}from"../../core/accessorSupport/decorators.js";import{ensureArray as h}from"../../core/accessorSupport/ensureType.js";import{isPoint as p,isMultipoint as d}from"../../geometry/support/jsonTypeUtils.js";import{fetchMessageBundle as g}from"../../intl/messages.js";import y from"../../layers/FeatureLayer.js";import m from"../../layers/GraphicsLayer.js";import f from"../../layers/support/CodedValueDomain.js";import{isFeatureLayer as w,isSubtypeSublayer as b,getOwningPortalUrl as _}from"../../layers/support/layerUtils.js";import A from"../../networks/UtilityNetwork.js";import{getFeaturesFromLayers as v}from"../../networks/support/utils.js";import k from"../../portal/Portal.js";import{hasUserTypeExtension as I}from"../../portal/support/utils.js";import{trace as F}from"../../rest/networks/trace.js";import G from"../../rest/networks/support/TraceLocation.js";import R from"../../rest/networks/support/TraceParameters.js";import{addUniqueLayer as T}from"../../views/draw/support/layerUtils.js";import{GeometryHandler as L}from"./support/GeometryHandler.js";import{GraphicHandler as H,barrierColor as N,startingPointColor as S}from"./support/GraphicHandler.js";import{ResultAreaHandler as P}from"./support/ResultAreaHandler.js";import{UtilityHelper as U}from"./support/UtilityHelper.js";const B=()=>g("esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace"),j=()=>g("esri/core/t9n/Units"),V=`utility-network-trace-flags-${Date.now()}`,C=`utility-network-trace-results-${Date.now()}`,E=`utility-network-trace-sketch-${Date.now()}`;function O(e){return e instanceof f}function D(e){return"feature"===e.layer.type||"subtype-group"===e.layer.type}function M(e){return"layer"in e}function x(e){return void 0!==e.layerViews}function q(e){return"graphics"===e.type}function $(e){return"feature"===e.type||"subtype-group"===e.type||"group"===e.type}async function z(e){const t=new y({url:e.networkSystemLayers.dirtyAreasLayerUrl});await t.load();const r=t.version;if(Number(r)<=11.1){const t=await _(e.layerUrl),r=new k({url:t});await r.load();const s=r?.user?.username;return!!s&&I(r,s,"utilityNetwork")}return!0}s(l.getLogger("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceViewModel"),"UtilityNetworkTraceViewModel",{replacement:"Use esri/networks/UtilityNetworkTraceAnalysis instead",version:"5.0",warnOnce:!0});let Q=class extends a{constructor(e){super(e),this._activeProgress=!1,this._clickHandler=null,this._flags=[],this._flagId=0,this._geometryHandler=null,this._highlightHandler=[],this._resultAreaHandler=null,this._sketchViewModel=null,this._traceTimeout=6e5,this._utilityHelper=new U,this._validUNLayers=[],this._watchHandler=null,this.traces=[],this.graphicHandler=null,this.defaultGraphicColor={color:[255,255,0,.6],haloOpacity:.9,fillOpacity:.2,hex:"#FFFF00"},this.enableResultArea=!1,this.flags=[],this.messages=null,this.messagesUnits=null,this.defaultResultAreaProperties={type:"convexhull",distance:10,unit:"meters",areaUnit:"square-meters",color:{color:[255,165,0,.5],haloOpacity:.9,fillOpacity:.2,hex:"#ffa500"},show:!1},this.selectedTraces=[],this.selectOnComplete=!0,this.showGraphicsOnComplete=!0,this.showSelectionAttributes=!0,this.traceResults=[],this.utilityNetwork=null}initialize(){this._geometryHandler=new L,this.graphicHandler=new H,this._resultAreaHandler=new P;(async()=>{const[e,t]=await Promise.all([B(),j()]);this.set({messages:e,messagesUnits:t})})()}destroy(){this.view=null}get resultAreaProperties(){return this.defaultResultAreaProperties}set resultAreaProperties(e){this._set("resultAreaProperties",{...this.defaultResultAreaProperties,...e}),this.graphicHandler.addCustomColor(this.resultAreaProperties.color),this.traceResults.forEach(t=>{const r=t.resultArea?.show;t.resultArea={...this.defaultResultAreaProperties,...e},this.removeResultAreaFromMap(t),this.enableResultArea&&this.createResultAreaGraphic(t).then(s=>{if(s){t.resultAreaGraphic=s;const i=e?.show??r;t.resultArea&&(t.resultArea.show=i),i&&this.addResultAreaToMap(t,s)}})})}get state(){return this.view?.ready?"ready":"loading"}get view(){return this._get("view")}set view(e){e&&"2d"!==e.type&&l.getLogger(this).error(new i("view:invalid-view","SceneView is not supported",{view:e})),this._set("view",e),this.utilityNetwork&&this.reset(),this.utilityNetwork=null,this.loadUtilityNetwork().then(e=>{e&&this.selectTracesOnLoad()},()=>{})}addFlagByHit(e,t){const r=!!this.view&&this.view.popupEnabled,s=e=>{this.view?.popup&&(this.view.popupEnabled=e)};return new Promise((i,a)=>{r&&s(!1),this._clickHandler?.remove(),this._clickHandler=this._sketchViewModel.on("create",l=>{if("complete"===l.state){const o=this._getGraphicLayer(E);o&&l.graphic&&o.remove(l.graphic),this.queryFlagByHitTest(l,e,t).then(r=>{this.emit("add-flag-complete",{type:e,symbol:t}),i(r)}).catch(r=>{this.emit("add-flag-error",{type:e,symbol:t}),a(r)}).finally(()=>{r&&s(!0),this._clickHandler?.remove()})}}),this._sketchViewModel.create("point"),this.emit("add-flag",{type:e})})}addNonspatialTraceLocation(e,t){const r=this._getDisplayField(e),s=this.utilityNetwork?.getTerminalConfiguration(e),i={terminalId:null,isFilterBarrier:!1,allTerminals:s,selectedTerminals:[s?s.terminals[0].id||null:1],displayValue:r};e.attributes={...e.attributes,...i};const a=e.attributes.hasOwnProperty("GLOBALID")?e.attributes.GLOBALID:e.attributes.globalid;if(!this._flags.some(e=>e.globalId===a&&e.type===t)){const r=this._createFlagProperty(e,t,null);this._flags.push(r),this.emit("add-flag-complete",{type:t})}this.emit("add-flag",{type:t})}async addFlagsOnLoad(){if(this._flags.length>0)return[];await o(()=>null!=this.view&&!this.view.updating);return(await Promise.all(this.flags.map(async e=>{if(!e.mapPoint)return null;const{type:t}=e,r=e.mapPoint.clone(),s="barrier"===t?N:S,i={graphic:this.graphicHandler.makeGraphic(r,s),state:"complete",tool:"point",toolEventInfo:null,type:"create"};try{return await this.queryFlagByHitTest(i,e.type,null),this.emit("add-flag-complete",{type:t}),null}catch(a){return this.emit("add-flag-error",{type:t}),"barrier"===t?"barrier":"starting-point"}}))).filter(e=>!e)}async addResultAreaToMap(e,t){if(this.view)if(e.resultArea.show=!0,t)this._resultAreaHandler?.addResultAreaToMap(t,this.view.map),this.emit("add-result-area",{graphic:t});else if(e.results){const t=await this.createResultAreaGraphic(e);t&&(e.resultAreaGraphic=t,this._resultAreaHandler?.addResultAreaToMap(t,this.view.map),this.emit("add-result-area",{graphic:t}))}}async addResultGraphicToView(e,t){const{view:r}=this,{results:s}=e;if(r&&s&&this.utilityNetwork)for(const i in s.aggregatedGeometry)if("line,multipoint,polygon".includes(i)){const a=i,l=s.aggregatedGeometry[a];if(null!=l){l.spatialReference=this.utilityNetwork.spatialReference,e.graphicEnabled=!0;const s=await this._geometryHandler.projectGeometry(l,r.spatialReference),i={globalid:e.trace.globalId};if(null!==s){const e=this.graphicHandler.makeGraphic(s,t.color,i,r.spatialReference);this._getGraphicLayer(C)?.add(e)}}}}addTerminal(e,t){const r=[...this._flags];r.forEach(r=>{r.globalId===t.globalId&&(t.selectedTerminals?.includes(parseInt(e,10))||r.selectedTerminals?.push(parseInt(e,10)))}),this._flags=r}async callTrace(){const e=this.traces.filter(e=>e.selected);return!!e.length&&(this.traceResults.length>0&&this.traceResults.forEach(e=>{this.removeResultGraphicFromView(e)}),this.traceResults=[],this.removeSelection(),await Promise.all(e.map(async(e,t)=>{const r=e,s=new R({gdbVersion:this.utilityNetwork?.gdbVersion,moment:this.utilityNetwork?.historicMoment,namedTraceConfigurationGlobalId:r.globalId,outSpatialReference:null,resultTypes:null,traceType:r.traceType,traceLocations:h(G,this._flags),traceConfiguration:null});await this.executeTrace(r,this.utilityNetwork?.networkServiceUrl,s).then(async e=>{if(e.hasOwnProperty("results")){const r={...e};if(null!==r.results){r.resultArea={...this.resultAreaProperties};const e=[...r.results.elements];r.results.elements.length=0;const s=new Map;for(const t of e)s.has(t.globalId)||(s.set(t.globalId,!0),r.results.elements.push(t));const i=[...this.traceResults];if(i.splice(t,0,r),this.traceResults=i,null!==r.results&&(this.selectOnComplete&&this.mergeSelection(!0,r.trace),this.showGraphicsOnComplete&&await this.addResultGraphicToView(r,r.graphicColor),this.enableResultArea)){const e=await this.createResultAreaGraphic(r);e&&(r.resultAreaGraphic=e,r.resultArea?.show&&await this.addResultAreaToMap(r,r.resultAreaGraphic))}}else{const r=[...this.traceResults];r.splice(t,0,e),this.traceResults=r}this._activeProgress=!1}else{this._activeProgress=!1;const r=[...this.traceResults];r.splice(t,0,e),this.traceResults=r}}).catch(e=>{throw this._activeProgress=!1,e})})),!0)}cancelAddFlagByHit(){this._sketchViewModel.cancel()}changeResultAreaColor(e,t){if(!e.resultArea)return;e.resultArea.color=t;const r=this._resultAreaHandler?.changeResultAreaColor(e.trace.globalId,t,this.view.map);e.resultAreaGraphic&&(e.resultAreaGraphic.symbol=r)}changeResultGraphicColor(e,t){const r=[...this.traceResults];r.length>0&&r.forEach(r=>{r.trace.globalId===t.trace.globalId&&(r.graphicColor=e,r.graphicEnabled=!0)}),this.traceResults=r,this.removeResultGraphicFromView(t),this.addResultGraphicToView(t,e)}changeFlagSymbol(e,t){this._flags.length>0&&this._flags.forEach(r=>{r.type===e&&t&&r.mapGraphic&&(r.mapGraphic.symbol=t)})}checkCanTrace(){const e={status:!0,issues:[]},t=this.traces.filter(e=>e.selected);t.length||(e.status=!1,e.issues.push("noTracesSelected"));this._flags.some(e=>"starting-point"===e.type)||(e.status=!1,e.issues.push("noStartingPoints"));return this._flags.filter(e=>null!==e.allTerminals).some(e=>!e.selectedTerminals.length)&&(e.status=!1,e.issues.push("noTerminalSelected")),e}checkSelectionExist(){return this._highlightHandler.some(e=>e)}clearResult(e){if(!this.view)return;let t=this.traceResults;if(t.length>0){const r=t.filter(t=>t.trace.globalId===e.globalId);r.length>0&&(this.removeResultGraphicFromView(r[0]),this.removeResultAreaFromMap(r[0])),t=t.filter(t=>t.trace.globalId!==e.globalId)}this.traceResults=t,0===t.length?(this.removeAllResultAreaGraphics(),this.removeSelection(),this.emit("clear-selection",{resultSet:[]})):this.mergeSelection(!1,e)}createResultAreaGeometries(e,t,r){if(!this.view||!this.resultAreaProperties)return;let s;if(s="convexhull"===this.resultAreaProperties?.type?1===t.length&&(p(t[0])||d(t[0])&&1===t[0].points.length)?this._resultAreaHandler?.createBuffer(t,r,e.resultArea?.unit,!0):this._resultAreaHandler?.createConvexHull(t,e.resultArea?.distance,e.resultArea?.unit):this._resultAreaHandler?.createBuffer(t,r,e.resultArea?.unit,!0),!s)return;if(Array.isArray(s)){for(const t of s){const r=this.getResultAreaAttributes(e,t),s=this._resultAreaHandler?.createResultAreaGraphic(t,r,e.resultArea?.areaUnit,this.messages,this.messagesUnits,e.resultArea?.color);if(s)return s}return}const i=this.getResultAreaAttributes(e,s);return this._resultAreaHandler?.createResultAreaGraphic(s,i,e.resultArea?.areaUnit,this.messages,this.messagesUnits,e.resultArea?.color)}async createResultAreaGraphic(e){if(e.results){const t=await this._createResultAreaInputGeometry(e.results);if(t.length>0){const r=Array(t.length).fill(e.resultArea?.distance),s=this.createResultAreaGeometries(e,t,r);return this.emit("create-result-area",{graphic:s}),s}}}executeTrace(e,t,r){const s=this._processFlags(r.traceLocations);return r.traceLocations=s,F(t,r,{timeout:this._traceTimeout}).then(t=>({trace:e,results:t,selectionEnabled:!1,graphicEnabled:!1,graphicColor:this.defaultGraphicColor,status:"success",date:new Date})).catch(t=>({trace:e,results:null,selectionEnabled:!1,graphicEnabled:!1,graphicColor:this.defaultGraphicColor,status:t.message,date:new Date}))}async getNonspatialTraceLocationInitialFeature(){return new Promise((e,t)=>{this._clickHandler?.remove(),this._clickHandler=this._sketchViewModel.on("create",async r=>{if("complete"!==r.state)return;const s=this._getGraphicLayer(E);s&&r.graphic&&s.remove(r.graphic);const i=this.view?.toScreen(r.graphic?.geometry);if(!i)return;const a=await(this.view?.hitTest(i));if(a?.results.length){const r=a.results.find(e=>"graphic"===e.type&&this.utilityNetwork?.isUtilityLayer(e.layer));r?e(r):t(null)}}),this._sketchViewModel.create("point")})}getResultAreaAttributes(e,r){const{messages:s}=this,i=[],a=[];this._flags.forEach(e=>{const t=e.displayValue?.field+":"+e.displayValue?.value+";"+s.attributeStrings.globalid+":"+e.globalId+";"+s.attributeStrings.terminalid+":"+e.terminalId+";"+s.attributeStrings.x+":"+e.mapPoint?.x+";"+s.attributeStrings.y+":"+e.mapPoint?.y;"starting-point"===e.type?i.push(t):a.push(t)});const l=this.utilityNetwork?.gdbVersion;return{traceId:e.trace.globalId,traceName:e.trace.title,traceDescription:e.trace.description??"",startingPoints:i.toString(),barriers:a.toString(),version:l??void 0,username:t?.credentials[0]?.userId,date:e.date,elementCount:e.results?.elements.length,functionResult:JSON.stringify(e.results?.globalFunctionResults),areaStatistic:r?this._geometryHandler.calculateArea(r,e.resultArea?.areaUnit):0}}getValidSources(){let e=[];const t=this.utilityNetwork?.dataElement?.domainNetworks??[];for(const r of t)e=e.concat(r.junctionSources),e=e.concat(r.edgeSources);return e}groupResultsByNetworkSource(e){return 0===e.length?[]:this._groupBy(e,"networkSourceId")}async loadUtilityNetwork(){const{view:e}=this;if(!e)return null;if(await e.when(),this.utilityNetwork){if(this.utilityNetwork.loaded||await this.utilityNetwork.load(),this.utilityNetwork instanceof A){try{const t=e.map;await t.loadAll()}catch(s){if("layer:unsupported-layer-type"!==s.name&&"subtype-grouplayer:missing-subtypes"!==s.name)throw s;console.error(s)}finally{this._loadUNSupportItems()}return this.utilityNetwork}return null}const t=e.map,r=t.utilityNetworks?.at(0);if(r){if(await r.load(),this.utilityNetwork=r,!await z(r))throw new i("utility-network:no-user-type-extension","User type extension not found");try{await t.loadAll()}catch(s){if("layer:unsupported-layer-type"!==s.name&&"subtype-grouplayer:missing-subtypes"!==s.name)throw s;console.error(s)}finally{this._loadUNSupportItems()}return r}return null}manageFilterBarrier(e,t){const r=[...this._flags];r.forEach(r=>{r.globalId===t.globalId&&"barrier"===t.type&&r.id===t.id&&(r.isFilterBarrier=e)}),this._flags=r}mergeSelection(e,t){let r=[];const s=[...this.traceResults],i=t.globalId;s.forEach(t=>{i===t.trace.globalId&&(t.selectionEnabled=e),t.selectionEnabled&&null!==t.results?.elements&&(r=[...r,...t.results?.elements??[]])}),this.selectResults([...new Set(r)])}async queryFeaturesById(e){const{view:t}=this;if(!t||!this.utilityNetwork)return null;const s=this.utilityNetwork.getObjectIdsFromElements(e),i={layerUrl:s[0].layerUrl,objectIds:s[0].objectIds,outFields:["*"]},a=t.map?.allTables.toArray().filter(e=>e?.parsedUrl?.path===s[0].layerUrl).filter(w)??[];this._getUniqueMapLayerViews(t).filter(({layer:e})=>e?.parsedUrl?.path===s[0].layerUrl).forEach(({layer:e})=>{"feature"!==e.type&&"subtype-group"!==e.type||a.push(e)});const l=(await Promise.all(a.map(async e=>{const s={layers:new r([e]),layerInfos:[i],returnGeometry:!0,outSpatialReference:t.spatialReference},[a]=await v(s,!1);return a}))).filter(({featureSet:e})=>e.features.length>0);return l.length>0?l:null}queryFlagByHitTest(e,t,r){return this._lookupFlagByHit(e).then(e=>{const{view:s}=this;if(!s)return!1;if(e.length>0){const s=[...this._flags],i=r;return e.forEach(e=>{const r=e.graphic,a=r.attributes.hasOwnProperty("GLOBALID")?r.attributes.GLOBALID:r.attributes.globalid;if(s.filter(e=>e.globalId===a).length<=0){const e=this.graphicHandler.getFlagGraphic(r.attributes.mapPoint,t,r,i);this._getGraphicLayer(V)?.add(e);const a=this._createFlagProperty(r,t,e);s.push(a)}else if(null!==r.attributes.percentAlong){const e=this.graphicHandler.getFlagGraphic(r.attributes.mapPoint,t,r,i);this._getGraphicLayer(V)?.add(e);const a=this._createFlagProperty(r,t,e);s.push(a)}}),this._flags=s,!0}return!1})}removeResultGraphicFromView(e){const{view:t}=this;if(!t)return;const r=this._getGraphicLayer(C)?.graphics;e.graphicEnabled=!1;const s=r?.filter(t=>t.attributes[t.attributes.hasOwnProperty("GLOBALID")?"GLOBALID":"globalid"]===e.trace.globalId);s?.forEach(e=>{this._getGraphicLayer(C)?.remove(e)})}removeFlag(e){const t=this._flags.filter(t=>{if(t.id!==e.id)return t});this._removeGraphic(e),this._flags=t}removeAllResultAreaGraphics(){this._resultAreaHandler?.removeAllResultAreaGraphics(this.view.map)}removeResultAreaFromMap(e){if(e.resultArea){e.resultArea.show=!1;const t=this._resultAreaHandler?.removeResultArea(e.trace.globalId,this.view?.map);t&&this.emit("remove-result-area",{graphic:t})}}removeSelection(){this._highlightHandler.forEach(e=>{e&&e.remove()}),this._highlightHandler=[]}removeTerminal(e,t){const r=[...this._flags];r.forEach(r=>{if(r.globalId===t.globalId&&t.selectedTerminals?.includes(parseInt(e,10))){const s=t.selectedTerminals.indexOf(parseInt(e,10));r.selectedTerminals?.splice(s,1)}}),this._flags=r}removeFlagsOnLoadWatcher(){this._watchHandler&&null!==this._watchHandler&&this._watchHandler.remove()}removeClickHandler(){this._clickHandler&&(this._sketchViewModel.cancel(),this._clickHandler.remove())}reset(){this._flags=[],this.traceResults=[];const e=[...this.traces];e.forEach(e=>{e.selected=!1}),this.traces=e,this.view&&(this._getGraphicLayer(E)?.removeAll(),this._getGraphicLayer(V)?.removeAll(),this._getGraphicLayer(C)?.removeAll(),this.removeAllResultAreaGraphics(),this.removeSelection(),this.emit("clear-selection",{resultSet:[]}),this.emit("reset"))}selectFeaturesById(e){const{view:t}=this;if(!t||!this.utilityNetwork)return;const r=this.utilityNetwork.getObjectIdsFromElements(e);this._getUniqueMapLayerViews(t).forEach(e=>{M(e)&&e.layer?.parsedUrl?.path===r[0].layerUrl&&D(e)&&this._highlightHandler.push(e.highlight(r[0].objectIds))})}selectResults(e){if(e.length>0){this.removeSelection();const t=this.groupResultsByNetworkSource(e),r=[];for(const e in t)this.selectFeaturesById(t[e]),r.push(this.queryFeaturesById(t[e]));Promise.all(r).then(e=>{this.emit("select-features",{resultSet:e})})}else this.removeSelection(),this.emit("clear-selection",{resultSet:[]})}selectTraces(e,t){const r=[...this.traces];r.forEach(r=>{t===r.globalId&&(r.selected=e)}),this.traces=r}selectTracesOnLoad(){this.utilityNetwork?.hasOwnProperty("sharedNamedTraceConfigurations")&&(this.traces=[...this.utilityNetwork.sharedNamedTraceConfigurations],this.traces.forEach(e=>{e.selected=!1,this.selectedTraces.includes(e.globalId)&&(e.selected=!0)}))}zoomToAsset(e){this.view?.goTo(e).catch(e=>console.error(e))}async _createResultAreaInputGeometry(e){if(null!=e.aggregatedGeometry)return this._geometryHandler.mergeAggregatedToGeometries(e.aggregatedGeometry);const t=this.groupResultsByNetworkSource(e.elements),r=[];for(const s in t)r.push(this.queryFeaturesById(t[s]));try{const e=await Promise.all(r),t=[];for(const r of e)if(r)for(const e of r)for(const r of e.featureSet.features)r.geometry&&t.push(r.geometry);return t}catch{return[]}}_loadUNSupportItems(){if(!this.utilityNetwork)return;const{map:e}=this.view,{messages:t}=this;this._populateOutfields(),this._createGraphicLayer(E),this._createGraphicLayer(V),this._createGraphicLayer(C),this._resultAreaHandler?.createGraphicLayer(e,t?.alertsStrings.genericResultHeader),this._validUNLayers=this._utilityHelper.getValidUtilityNetworkLayers(e,this.utilityNetwork),this._sketchViewModel=this.graphicHandler.initializeSketch(this.view,this._getGraphicLayer(E),this._validUNLayers)}_getUniqueMapLayerViews(e){const t=[],r=e.layerViews.filter(({layer:{type:e}})=>"feature"===e||"group"===e||"subtype-group"===e).toArray(),s=e=>{for(const r of e.layerViews)x(r)?s(r):t.push(r)};return r.forEach(e=>{switch(e.layer.type){case"group":x(e)&&s(e);break;case"subtype-group":t.push(e);break;default:t.some(t=>t.layer.id===e.layer.id)||t.push(e)}}),t}_processFlags(e){const t=[];return e.forEach(e=>{if(null!==e.selectedTerminals&&e.selectedTerminals.length>0)e.selectedTerminals.forEach(r=>{const s=new G({globalId:e.globalId,percentAlong:e.percentAlong,terminalId:r,type:e.type,isFilterBarrier:e.isFilterBarrier});t.push(s)});else{const r=new G({globalId:e.globalId,percentAlong:e.percentAlong,type:e.type,isFilterBarrier:e.isFilterBarrier});t.push(r)}}),t}_getDisplayField(e){return b(e?.sourceLayer)?this._getDisplayFieldBySublayer(e):this._getDisplayFieldByFeatureLayer(e)}_getDisplayFieldBySublayer(e){let t="",r="";const s=e.sourceLayer;t=this._checkParentForData(s,"displayField");for(const i in e.attributes){const a=i.toLowerCase();a===t?.toLowerCase()?(r=e.attributes[i],"assetgroup"===a||"assettype"===a?r=this._checkSubtype(s,s.subtypeCode):(r=this._checkDomain(s.fields,i,r),"string"==typeof r&&(r=this._defaultDisplayField(r,s)))):(r=this._checkDomain(s.fields,i,r),"string"==typeof r&&(r=this._defaultDisplayField(r,s)))}return{field:t,value:r?.toString()??s.title}}_getDisplayFieldByFeatureLayer(e){const t=e.sourceLayer;let r=t.displayField,s="";for(const i in e.attributes){const a=i.toLowerCase();if(a===r?.toLowerCase())if(s=e.attributes[i],"assetgroup"===a||"assettype"===a){let a=e.attributes[t.typeIdField.toUpperCase()];a||(a=e.attributes[t.typeIdField.toLowerCase()]),r=t.typeIdField,s=this._checkSubtype(t,a),""===r&&(t.templates&&t.templates.length>0?(r=t.templates[0]?.name,s=t.templates[0]?.name):(r=t.displayField,s=e.attributes[i]))}else s=this._checkDomain(t.fields,i,s),"string"==typeof s&&(s=this._defaultDisplayField(s,t));else s=this._checkDomain(t.fields,i,s),"string"==typeof s&&(s=this._defaultDisplayField(s,t))}return{field:r,value:s?s.toString():""}}_checkSubtype(e,t){let r=t;if("subtype-sublayer"===e.type){const s=this._checkParentForData(e,"subtypes");s?.length>0&&s.forEach(e=>{e.code===t&&(r=e.name)})}else if(null!=e.types&&e.types.length>0){const s=e.types.filter(e=>e.id===t);s.length>0&&(r=s[0].name)}return r}_checkDomain(e,t,r){let s=r;const i=e.filter(e=>e.name.toLowerCase()===t.toLowerCase());if(i.length>0&&O(i[0].domain)&&i[0].domain?.codedValues){const e=i[0].domain.codedValues.filter(({code:e})=>e===r);e.length>0&&(s=e[0].name)}return s}_checkParentForData(e,t){return e.parent?.[t]??null}_defaultDisplayField(e,t){return e.trim()?e:t.templates&&t.templates?.length>0?t.templates[0].name:t.title}get _uniqueFlagId(){return this._flagId++}_groupBy(e,t){return e.reduce((e,r)=>((e[r[t]]=e[r[t]]||[]).push(r),e),{})}async _lookupFlagByHit(e){const t=[];let r={};const s=e.graphic?.geometry,i=this.view?.toScreen(s),a=await(this.view?.hitTest(i,{include:this._validUNLayers}));if(!a?.results.length)return[];const l=a?.results.find(e=>null!==e.layer),o=l,c=o.graphic.geometry?.type,u=l?.layer,h=u.globalIdField??"globalid",p=u.objectIdField??"objectid";if(h&&!!o.graphic.attributes[h])r=o.graphic.attributes;else{const e=await(this.view?.whenLayerView(u)),t=e.createQuery();t.outFields=["assetgroup","assettype","globalid","objectid"],t.where=`${p} = ${o.graphic.attributes[p]}`,await n(()=>!e?.updating&&!e?.dataUpdating);const s=await(e?.queryFeatures(t)),i=s?.features[0],a=i?.attributes;r=a}const d=this._getDisplayField(o.graphic),g=o.mapPoint;let y={};if("point"===c||"polygon"===c){if(this.utilityNetwork){const e=this.utilityNetwork.getTerminalConfiguration(o.graphic);y={terminalId:e?e.terminals[0].id||null:1,isFilterBarrier:!1,allTerminals:e??null,selectedTerminals:[e?e.terminals[0].id||null:1],percentAlong:null,displayValue:d,mapPoint:g}}}else if("polyline"===c){const t=o.graphic,r=t.layer,s=t.getObjectId(),i=r.createQuery();i.objectIds=[s];const a=await r.queryFeatures(i),l=a?.features[0],n=l?.geometry;await this._geometryHandler.loadProjector();const c=this._geometryHandler.getPercentageAlong(n,e.graphic?.geometry,n.spatialReference);if(c[0]<0)return[];y={terminalId:null,isFilterBarrier:!1,allTerminals:null,selectedTerminals:null,percentAlong:c,displayValue:d,mapPoint:g}}return o.graphic.attributes={...r,...y},t.push(o),t}_createFlagProperty(e,t,r){const s=new G;s.terminalId=e.attributes.terminalId,s.isFilterBarrier=e.attributes.isFilterBarrier,s.percentAlong=e.attributes.percentAlong,s.globalId=e.attributes.globalid||e.attributes.GLOBALID,s.type=t;const i=s;return i.details=e,i.mapGraphic=r,i.id=this._uniqueFlagId,i.allTerminals=e.attributes.allTerminals,i.selectedTerminals=e.attributes.selectedTerminals,i.displayValue=e.attributes.displayValue,i.mapPoint=e.attributes.mapPoint,i}_populateOutfields(){if(!this.view)return;const{map:e}=this.view,t=this.getValidSources(),r=e=>{"group"===e.type?e.layers.forEach(e=>{$(e)&&r(e)}):t.some(t=>t.layerId===e.layerId)&&e.fields.some(e=>"assetgroup"===e.name.toLowerCase())&&(e.outFields=["assetgroup","assettype","globalid","objectid"])};for(const s of e.layers)$(s)&&r(s)}_removeGraphic(e){this._getGraphicLayer(V)?.remove(e.mapGraphic)}_createGraphicLayer(e){const{map:t}=this.view;if(!t.findLayerById(e)){const t=new m({id:e,internal:!0,listMode:"hide",title:e});T(this.view,t)}}_getGraphicLayer(e){const{map:t}=this.view;if(t){const r=t.findLayerById(e);if(r&&q(r))return r}return null}};e([c()],Q.prototype,"_activeProgress",void 0),e([c()],Q.prototype,"_flags",void 0),e([c()],Q.prototype,"traces",void 0),e([c()],Q.prototype,"defaultGraphicColor",void 0),e([c()],Q.prototype,"enableResultArea",void 0),e([c()],Q.prototype,"flags",void 0),e([c()],Q.prototype,"messages",void 0),e([c()],Q.prototype,"messagesUnits",void 0),e([c()],Q.prototype,"resultAreaProperties",null),e([c()],Q.prototype,"selectedTraces",void 0),e([c()],Q.prototype,"selectOnComplete",void 0),e([c()],Q.prototype,"showGraphicsOnComplete",void 0),e([c()],Q.prototype,"showSelectionAttributes",void 0),e([c({readOnly:!0})],Q.prototype,"state",null),e([c()],Q.prototype,"traceResults",void 0),e([c()],Q.prototype,"utilityNetwork",void 0),e([c({value:null})],Q.prototype,"view",null),Q=e([u("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceViewModel")],Q);const J=Q;export{J as default};
2
+ import{__decorate as e}from"tslib";import{id as t}from"../../kernel.js";import r from"../../core/Collection.js";import{deprecatedModule as s}from"../../core/deprecate.js";import i from"../../core/Error.js";import{EventedAccessor as a}from"../../core/Evented.js";import l from"../../core/Logger.js";import{whenOnce as o,once as n}from"../../core/reactiveUtils.js";import{property as c,subclass as u}from"../../core/accessorSupport/decorators.js";import{ensureArray as h}from"../../core/accessorSupport/ensureType.js";import{isPoint as p,isMultipoint as d}from"../../geometry/support/jsonTypeUtils.js";import{getGraphicLayer as g}from"../../graphic/graphicOriginUtils.js";import{fetchMessageBundle as y}from"../../intl/messages.js";import m from"../../layers/FeatureLayer.js";import f from"../../layers/GraphicsLayer.js";import w from"../../layers/support/CodedValueDomain.js";import{isFeatureLayer as b,isSubtypeSublayer as _,getOwningPortalUrl as A}from"../../layers/support/layerUtils.js";import v from"../../networks/UtilityNetwork.js";import{getFeaturesFromLayers as k}from"../../networks/support/utils.js";import I from"../../portal/Portal.js";import{hasUserTypeExtension as F}from"../../portal/support/utils.js";import{trace as G}from"../../rest/networks/trace.js";import R from"../../rest/networks/support/TraceLocation.js";import T from"../../rest/networks/support/TraceParameters.js";import{addUniqueLayer as L}from"../../views/draw/support/layerUtils.js";import{GeometryHandler as H}from"./support/GeometryHandler.js";import{GraphicHandler as N,barrierColor as S,startingPointColor as P}from"./support/GraphicHandler.js";import{ResultAreaHandler as U}from"./support/ResultAreaHandler.js";import{UtilityHelper as j}from"./support/UtilityHelper.js";const B=()=>y("esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace"),V=()=>y("esri/core/t9n/Units"),C=`utility-network-trace-flags-${Date.now()}`,E=`utility-network-trace-results-${Date.now()}`,O=`utility-network-trace-sketch-${Date.now()}`;function D(e){return e instanceof w}function M(e){return"feature"===e.layer.type||"subtype-group"===e.layer.type}function x(e){return"layer"in e}function q(e){return void 0!==e.layerViews}function $(e){return"graphics"===e.type}function z(e){return"feature"===e.type||"subtype-group"===e.type||"group"===e.type}async function Q(e){const t=new m({url:e.networkSystemLayers.dirtyAreasLayerUrl});await t.load();const r=t.version;if(Number(r)<=11.1){const t=await A(e.layerUrl),r=new I({url:t});await r.load();const s=r?.user?.username;return!!s&&F(r,s,"utilityNetwork")}return!0}s(l.getLogger("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceViewModel"),"UtilityNetworkTraceViewModel",{replacement:"Use esri/networks/UtilityNetworkTraceAnalysis instead",version:"5.0",warnOnce:!0});let J=class extends a{constructor(e){super(e),this._activeProgress=!1,this._clickHandler=null,this._flags=[],this._flagId=0,this._geometryHandler=null,this._highlightHandler=[],this._resultAreaHandler=null,this._sketchViewModel=null,this._traceTimeout=6e5,this._utilityHelper=new j,this._validUNLayers=[],this._watchHandler=null,this.traces=[],this.graphicHandler=null,this.defaultGraphicColor={color:[255,255,0,.6],haloOpacity:.9,fillOpacity:.2,hex:"#FFFF00"},this.enableResultArea=!1,this.flags=[],this.messages=null,this.messagesUnits=null,this.defaultResultAreaProperties={type:"convexhull",distance:10,unit:"meters",areaUnit:"square-meters",color:{color:[255,165,0,.5],haloOpacity:.9,fillOpacity:.2,hex:"#ffa500"},show:!1},this.selectedTraces=[],this.selectOnComplete=!0,this.showGraphicsOnComplete=!0,this.showSelectionAttributes=!0,this.traceResults=[],this.utilityNetwork=null}initialize(){this._geometryHandler=new H,this.graphicHandler=new N,this._resultAreaHandler=new U;(async()=>{const[e,t]=await Promise.all([B(),V()]);this.set({messages:e,messagesUnits:t})})()}destroy(){this.view=null}get resultAreaProperties(){return this.defaultResultAreaProperties}set resultAreaProperties(e){this._set("resultAreaProperties",{...this.defaultResultAreaProperties,...e}),this.graphicHandler.addCustomColor(this.resultAreaProperties.color),this.traceResults.forEach(t=>{const r=t.resultArea?.show;t.resultArea={...this.defaultResultAreaProperties,...e},this.removeResultAreaFromMap(t),this.enableResultArea&&this.createResultAreaGraphic(t).then(s=>{if(s){t.resultAreaGraphic=s;const i=e?.show??r;t.resultArea&&(t.resultArea.show=i),i&&this.addResultAreaToMap(t,s)}})})}get state(){return this.view?.ready?"ready":"loading"}get view(){return this._get("view")}set view(e){e&&"2d"!==e.type&&l.getLogger(this).error(new i("view:invalid-view","SceneView is not supported",{view:e})),this._set("view",e),this.utilityNetwork&&this.reset(),this.utilityNetwork=null,this.loadUtilityNetwork().then(e=>{e&&this.selectTracesOnLoad()},()=>{})}addFlagByHit(e,t){const r=!!this.view&&this.view.popupEnabled,s=e=>{this.view?.popup&&(this.view.popupEnabled=e)};return new Promise((i,a)=>{r&&s(!1),this._clickHandler?.remove(),this._clickHandler=this._sketchViewModel.on("create",l=>{if("complete"===l.state){const o=this._getGraphicLayer(O);o&&l.graphic&&o.remove(l.graphic),this.queryFlagByHitTest(l,e,t).then(r=>{this.emit("add-flag-complete",{type:e,symbol:t}),i(r)}).catch(r=>{this.emit("add-flag-error",{type:e,symbol:t}),a(r)}).finally(()=>{r&&s(!0),this._clickHandler?.remove()})}}),this._sketchViewModel.create("point"),this.emit("add-flag",{type:e})})}addNonspatialTraceLocation(e,t){const r=this._getDisplayField(e),s=this.utilityNetwork?.getTerminalConfiguration(e),i={terminalId:null,isFilterBarrier:!1,allTerminals:s,selectedTerminals:[s?s.terminals[0].id||null:1],displayValue:r};e.attributes={...e.attributes,...i};const a=e.attributes.hasOwnProperty("GLOBALID")?e.attributes.GLOBALID:e.attributes.globalid;if(!this._flags.some(e=>e.globalId===a&&e.type===t)){const r=this._createFlagProperty(e,t,null);this._flags.push(r),this.emit("add-flag-complete",{type:t})}this.emit("add-flag",{type:t})}async addFlagsOnLoad(){if(this._flags.length>0)return[];await o(()=>null!=this.view&&!this.view.updating);return(await Promise.all(this.flags.map(async e=>{if(!e.mapPoint)return null;const{type:t}=e,r=e.mapPoint.clone(),s="barrier"===t?S:P,i={graphic:this.graphicHandler.makeGraphic(r,s),state:"complete",tool:"point",toolEventInfo:null,type:"create"};try{return await this.queryFlagByHitTest(i,e.type,null),this.emit("add-flag-complete",{type:t}),null}catch(a){return this.emit("add-flag-error",{type:t}),"barrier"===t?"barrier":"starting-point"}}))).filter(e=>!e)}async addResultAreaToMap(e,t){if(this.view)if(e.resultArea.show=!0,t)this._resultAreaHandler?.addResultAreaToMap(t,this.view.map),this.emit("add-result-area",{graphic:t});else if(e.results){const t=await this.createResultAreaGraphic(e);t&&(e.resultAreaGraphic=t,this._resultAreaHandler?.addResultAreaToMap(t,this.view.map),this.emit("add-result-area",{graphic:t}))}}async addResultGraphicToView(e,t){const{view:r}=this,{results:s}=e;if(r&&s&&this.utilityNetwork)for(const i in s.aggregatedGeometry)if("line,multipoint,polygon".includes(i)){const a=i,l=s.aggregatedGeometry[a];if(null!=l){l.spatialReference=this.utilityNetwork.spatialReference,e.graphicEnabled=!0;const s=await this._geometryHandler.projectGeometry(l,r.spatialReference),i={globalid:e.trace.globalId};if(null!==s){const e=this.graphicHandler.makeGraphic(s,t.color,i,r.spatialReference);this._getGraphicLayer(E)?.add(e)}}}}addTerminal(e,t){const r=[...this._flags];r.forEach(r=>{r.globalId===t.globalId&&(t.selectedTerminals?.includes(parseInt(e,10))||r.selectedTerminals?.push(parseInt(e,10)))}),this._flags=r}async callTrace(){const e=this.traces.filter(e=>e.selected);return!!e.length&&(this.traceResults.length>0&&this.traceResults.forEach(e=>{this.removeResultGraphicFromView(e)}),this.traceResults=[],this.removeSelection(),await Promise.all(e.map(async(e,t)=>{const r=e,s=new T({gdbVersion:this.utilityNetwork?.gdbVersion,moment:this.utilityNetwork?.historicMoment,namedTraceConfigurationGlobalId:r.globalId,outSpatialReference:null,resultTypes:null,traceType:r.traceType,traceLocations:h(R,this._flags),traceConfiguration:null});await this.executeTrace(r,this.utilityNetwork?.networkServiceUrl,s).then(async e=>{if(e.hasOwnProperty("results")){const r={...e};if(null!==r.results){r.resultArea={...this.resultAreaProperties};const e=[...r.results.elements];r.results.elements.length=0;const s=new Map;for(const t of e)s.has(t.globalId)||(s.set(t.globalId,!0),r.results.elements.push(t));const i=[...this.traceResults];if(i.splice(t,0,r),this.traceResults=i,null!==r.results&&(this.selectOnComplete&&this.mergeSelection(!0,r.trace),this.showGraphicsOnComplete&&await this.addResultGraphicToView(r,r.graphicColor),this.enableResultArea)){const e=await this.createResultAreaGraphic(r);e&&(r.resultAreaGraphic=e,r.resultArea?.show&&await this.addResultAreaToMap(r,r.resultAreaGraphic))}}else{const r=[...this.traceResults];r.splice(t,0,e),this.traceResults=r}this._activeProgress=!1}else{this._activeProgress=!1;const r=[...this.traceResults];r.splice(t,0,e),this.traceResults=r}}).catch(e=>{throw this._activeProgress=!1,e})})),!0)}cancelAddFlagByHit(){this._sketchViewModel.cancel()}changeResultAreaColor(e,t){if(!e.resultArea)return;e.resultArea.color=t;const r=this._resultAreaHandler?.changeResultAreaColor(e.trace.globalId,t,this.view.map);e.resultAreaGraphic&&(e.resultAreaGraphic.symbol=r)}changeResultGraphicColor(e,t){const r=[...this.traceResults];r.length>0&&r.forEach(r=>{r.trace.globalId===t.trace.globalId&&(r.graphicColor=e,r.graphicEnabled=!0)}),this.traceResults=r,this.removeResultGraphicFromView(t),this.addResultGraphicToView(t,e)}changeFlagSymbol(e,t){this._flags.length>0&&this._flags.forEach(r=>{r.type===e&&t&&r.mapGraphic&&(r.mapGraphic.symbol=t)})}checkCanTrace(){const e={status:!0,issues:[]},t=this.traces.filter(e=>e.selected);t.length||(e.status=!1,e.issues.push("noTracesSelected"));this._flags.some(e=>"starting-point"===e.type)||(e.status=!1,e.issues.push("noStartingPoints"));return this._flags.filter(e=>null!==e.allTerminals).some(e=>!e.selectedTerminals.length)&&(e.status=!1,e.issues.push("noTerminalSelected")),e}checkSelectionExist(){return this._highlightHandler.some(e=>e)}clearResult(e){if(!this.view)return;let t=this.traceResults;if(t.length>0){const r=t.filter(t=>t.trace.globalId===e.globalId);r.length>0&&(this.removeResultGraphicFromView(r[0]),this.removeResultAreaFromMap(r[0])),t=t.filter(t=>t.trace.globalId!==e.globalId)}this.traceResults=t,0===t.length?(this.removeAllResultAreaGraphics(),this.removeSelection(),this.emit("clear-selection",{resultSet:[]})):this.mergeSelection(!1,e)}createResultAreaGeometries(e,t,r){if(!this.view||!this.resultAreaProperties)return;let s;if(s="convexhull"===this.resultAreaProperties?.type?1===t.length&&(p(t[0])||d(t[0])&&1===t[0].points.length)?this._resultAreaHandler?.createBuffer(t,r,e.resultArea?.unit,!0):this._resultAreaHandler?.createConvexHull(t,e.resultArea?.distance,e.resultArea?.unit):this._resultAreaHandler?.createBuffer(t,r,e.resultArea?.unit,!0),!s)return;if(Array.isArray(s)){for(const t of s){const r=this.getResultAreaAttributes(e,t),s=this._resultAreaHandler?.createResultAreaGraphic(t,r,e.resultArea?.areaUnit,this.messages,this.messagesUnits,e.resultArea?.color);if(s)return s}return}const i=this.getResultAreaAttributes(e,s);return this._resultAreaHandler?.createResultAreaGraphic(s,i,e.resultArea?.areaUnit,this.messages,this.messagesUnits,e.resultArea?.color)}async createResultAreaGraphic(e){if(e.results){const t=await this._createResultAreaInputGeometry(e.results);if(t.length>0){const r=Array(t.length).fill(e.resultArea?.distance),s=this.createResultAreaGeometries(e,t,r);return this.emit("create-result-area",{graphic:s}),s}}}executeTrace(e,t,r){const s=this._processFlags(r.traceLocations);return r.traceLocations=s,G(t,r,{timeout:this._traceTimeout}).then(t=>({trace:e,results:t,selectionEnabled:!1,graphicEnabled:!1,graphicColor:this.defaultGraphicColor,status:"success",date:new Date})).catch(t=>({trace:e,results:null,selectionEnabled:!1,graphicEnabled:!1,graphicColor:this.defaultGraphicColor,status:t.message,date:new Date}))}async getNonspatialTraceLocationInitialFeature(){return new Promise((e,t)=>{this._clickHandler?.remove(),this._clickHandler=this._sketchViewModel.on("create",async r=>{if("complete"!==r.state)return;const s=this._getGraphicLayer(O);s&&r.graphic&&s.remove(r.graphic);const i=this.view?.toScreen(r.graphic?.geometry);if(!i)return;const a=await(this.view?.hitTest(i));if(a?.results.length){const r=a.results.find(e=>"graphic"===e.type&&this.utilityNetwork?.isUtilityLayer(e.layer));r?e(r):t(null)}}),this._sketchViewModel.create("point")})}getResultAreaAttributes(e,r){const{messages:s}=this,i=[],a=[];this._flags.forEach(e=>{const t=e.displayValue?.field+":"+e.displayValue?.value+";"+s.attributeStrings.globalid+":"+e.globalId+";"+s.attributeStrings.terminalid+":"+e.terminalId+";"+s.attributeStrings.x+":"+e.mapPoint?.x+";"+s.attributeStrings.y+":"+e.mapPoint?.y;"starting-point"===e.type?i.push(t):a.push(t)});const l=this.utilityNetwork?.gdbVersion;return{traceId:e.trace.globalId,traceName:e.trace.title,traceDescription:e.trace.description??"",startingPoints:i.toString(),barriers:a.toString(),version:l??void 0,username:t?.credentials[0]?.userId,date:e.date,elementCount:e.results?.elements.length,functionResult:JSON.stringify(e.results?.globalFunctionResults),areaStatistic:r?this._geometryHandler.calculateArea(r,e.resultArea?.areaUnit):0}}getValidSources(){let e=[];const t=this.utilityNetwork?.dataElement?.domainNetworks??[];for(const r of t)e=e.concat(r.junctionSources),e=e.concat(r.edgeSources);return e}groupResultsByNetworkSource(e){return 0===e.length?[]:this._groupBy(e,"networkSourceId")}async loadUtilityNetwork(){const{view:e}=this;if(!e)return null;if(await e.when(),this.utilityNetwork){if(this.utilityNetwork.loaded||await this.utilityNetwork.load(),this.utilityNetwork instanceof v){try{const t=e.map;await t.loadAll()}catch(s){if("layer:unsupported-layer-type"!==s.name&&"subtype-grouplayer:missing-subtypes"!==s.name)throw s;console.error(s)}finally{this._loadUNSupportItems()}return this.utilityNetwork}return null}const t=e.map,r=t.utilityNetworks?.at(0);if(r){if(await r.load(),this.utilityNetwork=r,!await Q(r))throw new i("utility-network:no-user-type-extension","User type extension not found");try{await t.loadAll()}catch(s){if("layer:unsupported-layer-type"!==s.name&&"subtype-grouplayer:missing-subtypes"!==s.name)throw s;console.error(s)}finally{this._loadUNSupportItems()}return r}return null}manageFilterBarrier(e,t){const r=[...this._flags];r.forEach(r=>{r.globalId===t.globalId&&"barrier"===t.type&&r.id===t.id&&(r.isFilterBarrier=e)}),this._flags=r}mergeSelection(e,t){let r=[];const s=[...this.traceResults],i=t.globalId;s.forEach(t=>{i===t.trace.globalId&&(t.selectionEnabled=e),t.selectionEnabled&&null!==t.results?.elements&&(r=[...r,...t.results?.elements??[]])}),this.selectResults([...new Set(r)])}async queryFeaturesById(e){const{view:t}=this;if(!t||!this.utilityNetwork)return null;const s=this.utilityNetwork.getObjectIdsFromElements(e),i={layerUrl:s[0].layerUrl,objectIds:s[0].objectIds,outFields:["*"]},a=t.map?.allTables.toArray().filter(e=>e?.parsedUrl?.path===s[0].layerUrl).filter(b)??[];this._getUniqueMapLayerViews(t).filter(({layer:e})=>e?.parsedUrl?.path===s[0].layerUrl).forEach(({layer:e})=>{"feature"!==e.type&&"subtype-group"!==e.type||a.push(e)});const l=(await Promise.all(a.map(async e=>{const s={layers:new r([e]),layerInfos:[i],returnGeometry:!0,outSpatialReference:t.spatialReference},[a]=await k(s,!1);return a}))).filter(({featureSet:e})=>e.features.length>0);return l.length>0?l:null}queryFlagByHitTest(e,t,r){return this._lookupFlagByHit(e).then(e=>{const{view:s}=this;if(!s)return!1;if(e.length>0){const s=[...this._flags],i=r;return e.forEach(e=>{const r=e.graphic,a=r.attributes.hasOwnProperty("GLOBALID")?r.attributes.GLOBALID:r.attributes.globalid;if(s.filter(e=>e.globalId===a).length<=0){const e=this.graphicHandler.getFlagGraphic(r.attributes.mapPoint,t,r,i);this._getGraphicLayer(C)?.add(e);const a=this._createFlagProperty(r,t,e);s.push(a)}else if(null!==r.attributes.percentAlong){const e=this.graphicHandler.getFlagGraphic(r.attributes.mapPoint,t,r,i);this._getGraphicLayer(C)?.add(e);const a=this._createFlagProperty(r,t,e);s.push(a)}}),this._flags=s,!0}return!1})}removeResultGraphicFromView(e){const{view:t}=this;if(!t)return;const r=this._getGraphicLayer(E)?.graphics;e.graphicEnabled=!1;const s=r?.filter(t=>t.attributes[t.attributes.hasOwnProperty("GLOBALID")?"GLOBALID":"globalid"]===e.trace.globalId);s?.forEach(e=>{this._getGraphicLayer(E)?.remove(e)})}removeFlag(e){const t=this._flags.filter(t=>{if(t.id!==e.id)return t});this._removeGraphic(e),this._flags=t}removeAllResultAreaGraphics(){this._resultAreaHandler?.removeAllResultAreaGraphics(this.view.map)}removeResultAreaFromMap(e){if(e.resultArea){e.resultArea.show=!1;const t=this._resultAreaHandler?.removeResultArea(e.trace.globalId,this.view?.map);t&&this.emit("remove-result-area",{graphic:t})}}removeSelection(){this._highlightHandler.forEach(e=>{e&&e.remove()}),this._highlightHandler=[]}removeTerminal(e,t){const r=[...this._flags];r.forEach(r=>{if(r.globalId===t.globalId&&t.selectedTerminals?.includes(parseInt(e,10))){const s=t.selectedTerminals.indexOf(parseInt(e,10));r.selectedTerminals?.splice(s,1)}}),this._flags=r}removeFlagsOnLoadWatcher(){this._watchHandler&&null!==this._watchHandler&&this._watchHandler.remove()}removeClickHandler(){this._clickHandler&&(this._sketchViewModel.cancel(),this._clickHandler.remove())}reset(){this._flags=[],this.traceResults=[];const e=[...this.traces];e.forEach(e=>{e.selected=!1}),this.traces=e,this.view&&(this._getGraphicLayer(O)?.removeAll(),this._getGraphicLayer(C)?.removeAll(),this._getGraphicLayer(E)?.removeAll(),this.removeAllResultAreaGraphics(),this.removeSelection(),this.emit("clear-selection",{resultSet:[]}),this.emit("reset"))}selectFeaturesById(e){const{view:t}=this;if(!t||!this.utilityNetwork)return;const r=this.utilityNetwork.getObjectIdsFromElements(e);this._getUniqueMapLayerViews(t).forEach(e=>{x(e)&&e.layer?.parsedUrl?.path===r[0].layerUrl&&M(e)&&this._highlightHandler.push(e.highlight(r[0].objectIds))})}selectResults(e){if(e.length>0){this.removeSelection();const t=this.groupResultsByNetworkSource(e),r=[];for(const e in t)this.selectFeaturesById(t[e]),r.push(this.queryFeaturesById(t[e]));Promise.all(r).then(e=>{this.emit("select-features",{resultSet:e})})}else this.removeSelection(),this.emit("clear-selection",{resultSet:[]})}selectTraces(e,t){const r=[...this.traces];r.forEach(r=>{t===r.globalId&&(r.selected=e)}),this.traces=r}selectTracesOnLoad(){this.utilityNetwork?.hasOwnProperty("sharedNamedTraceConfigurations")&&(this.traces=[...this.utilityNetwork.sharedNamedTraceConfigurations],this.traces.forEach(e=>{e.selected=!1,this.selectedTraces.includes(e.globalId)&&(e.selected=!0)}))}zoomToAsset(e){this.view?.goTo(e).catch(e=>console.error(e))}async _createResultAreaInputGeometry(e){if(null!=e.aggregatedGeometry)return this._geometryHandler.mergeAggregatedToGeometries(e.aggregatedGeometry);const t=this.groupResultsByNetworkSource(e.elements),r=[];for(const s in t)r.push(this.queryFeaturesById(t[s]));try{const e=await Promise.all(r),t=[];for(const r of e)if(r)for(const e of r)for(const r of e.featureSet.features)r.geometry&&t.push(r.geometry);return t}catch{return[]}}_loadUNSupportItems(){if(!this.utilityNetwork)return;const{map:e}=this.view,{messages:t}=this;this._populateOutfields(),this._createGraphicLayer(O),this._createGraphicLayer(C),this._createGraphicLayer(E),this._resultAreaHandler?.createGraphicLayer(e,t?.alertsStrings.genericResultHeader),this._validUNLayers=this._utilityHelper.getValidUtilityNetworkLayers(e,this.utilityNetwork),this._sketchViewModel=this.graphicHandler.initializeSketch(this.view,this._getGraphicLayer(O),this._validUNLayers)}_getUniqueMapLayerViews(e){const t=[],r=e.layerViews.filter(({layer:{type:e}})=>"feature"===e||"group"===e||"subtype-group"===e).toArray(),s=e=>{for(const r of e.layerViews)q(r)?s(r):t.push(r)};return r.forEach(e=>{switch(e.layer.type){case"group":q(e)&&s(e);break;case"subtype-group":t.push(e);break;default:t.some(t=>t.layer.id===e.layer.id)||t.push(e)}}),t}_processFlags(e){const t=[];return e.forEach(e=>{if(null!==e.selectedTerminals&&e.selectedTerminals.length>0)e.selectedTerminals.forEach(r=>{const s=new R({globalId:e.globalId,percentAlong:e.percentAlong,terminalId:r,type:e.type,isFilterBarrier:e.isFilterBarrier});t.push(s)});else{const r=new R({globalId:e.globalId,percentAlong:e.percentAlong,type:e.type,isFilterBarrier:e.isFilterBarrier});t.push(r)}}),t}_getDisplayField(e){return _(g(e))?this._getDisplayFieldBySublayer(e):this._getDisplayFieldByFeatureLayer(e)}_getDisplayFieldBySublayer(e){let t="",r="";const s=g(e);t=this._checkParentForData(s,"displayField");for(const i in e.attributes){const a=i.toLowerCase();a===t?.toLowerCase()?(r=e.attributes[i],"assetgroup"===a||"assettype"===a?r=this._checkSubtype(s,s.subtypeCode):(r=this._checkDomain(s.fields,i,r),"string"==typeof r&&(r=this._defaultDisplayField(r,s)))):(r=this._checkDomain(s.fields,i,r),"string"==typeof r&&(r=this._defaultDisplayField(r,s)))}return{field:t,value:r?.toString()??s.title}}_getDisplayFieldByFeatureLayer(e){const t=g(e);let r=t.displayField,s="";for(const i in e.attributes){const a=i.toLowerCase();if(a===r?.toLowerCase())if(s=e.attributes[i],"assetgroup"===a||"assettype"===a){let a=e.attributes[t.typeIdField.toUpperCase()];a||(a=e.attributes[t.typeIdField.toLowerCase()]),r=t.typeIdField,s=this._checkSubtype(t,a),""===r&&(t.templates&&t.templates.length>0?(r=t.templates[0]?.name,s=t.templates[0]?.name):(r=t.displayField,s=e.attributes[i]))}else s=this._checkDomain(t.fields,i,s),"string"==typeof s&&(s=this._defaultDisplayField(s,t));else s=this._checkDomain(t.fields,i,s),"string"==typeof s&&(s=this._defaultDisplayField(s,t))}return{field:r,value:s?s.toString():""}}_checkSubtype(e,t){let r=t;if("subtype-sublayer"===e.type){const s=this._checkParentForData(e,"subtypes");s?.length>0&&s.forEach(e=>{e.code===t&&(r=e.name)})}else if(null!=e.types&&e.types.length>0){const s=e.types.filter(e=>e.id===t);s.length>0&&(r=s[0].name)}return r}_checkDomain(e,t,r){let s=r;const i=e.filter(e=>e.name.toLowerCase()===t.toLowerCase());if(i.length>0&&D(i[0].domain)&&i[0].domain?.codedValues){const e=i[0].domain.codedValues.filter(({code:e})=>e===r);e.length>0&&(s=e[0].name)}return s}_checkParentForData(e,t){return e.parent?.[t]??null}_defaultDisplayField(e,t){return e.trim()?e:t.templates&&t.templates?.length>0?t.templates[0].name:t.title}get _uniqueFlagId(){return this._flagId++}_groupBy(e,t){return e.reduce((e,r)=>((e[r[t]]=e[r[t]]||[]).push(r),e),{})}async _lookupFlagByHit(e){const t=[];let r={};const s=e.graphic?.geometry,i=this.view?.toScreen(s),a=await(this.view?.hitTest(i,{include:this._validUNLayers}));if(!a?.results.length)return[];const l=a?.results.find(e=>null!==e.layer),o=l,c=o.graphic.geometry?.type,u=l?.layer,h=u.globalIdField??"globalid",p=u.objectIdField??"objectid";if(h&&!!o.graphic.attributes[h])r=o.graphic.attributes;else{const e=await(this.view?.whenLayerView(u)),t=e.createQuery();t.outFields=["assetgroup","assettype","globalid","objectid"],t.where=`${p} = ${o.graphic.attributes[p]}`,await n(()=>!e?.updating&&!e?.dataUpdating);const s=await(e?.queryFeatures(t)),i=s?.features[0],a=i?.attributes;r=a}const d=this._getDisplayField(o.graphic),g=o.mapPoint;let y={};if("point"===c||"polygon"===c){if(this.utilityNetwork){const e=this.utilityNetwork.getTerminalConfiguration(o.graphic);y={terminalId:e?e.terminals[0].id||null:1,isFilterBarrier:!1,allTerminals:e??null,selectedTerminals:[e?e.terminals[0].id||null:1],percentAlong:null,displayValue:d,mapPoint:g}}}else if("polyline"===c){const t=o.graphic,r=t.layer,s=t.getObjectId(),i=r.createQuery();i.objectIds=[s];const a=await r.queryFeatures(i),l=a?.features[0],n=l?.geometry;await this._geometryHandler.loadProjector();const c=this._geometryHandler.getPercentageAlong(n,e.graphic?.geometry,n.spatialReference);if(c[0]<0)return[];y={terminalId:null,isFilterBarrier:!1,allTerminals:null,selectedTerminals:null,percentAlong:c,displayValue:d,mapPoint:g}}return o.graphic.attributes={...r,...y},t.push(o),t}_createFlagProperty(e,t,r){const s=new R;s.terminalId=e.attributes.terminalId,s.isFilterBarrier=e.attributes.isFilterBarrier,s.percentAlong=e.attributes.percentAlong,s.globalId=e.attributes.globalid||e.attributes.GLOBALID,s.type=t;const i=s;return i.details=e,i.mapGraphic=r,i.id=this._uniqueFlagId,i.allTerminals=e.attributes.allTerminals,i.selectedTerminals=e.attributes.selectedTerminals,i.displayValue=e.attributes.displayValue,i.mapPoint=e.attributes.mapPoint,i}_populateOutfields(){if(!this.view)return;const{map:e}=this.view,t=this.getValidSources(),r=e=>{"group"===e.type?e.layers.forEach(e=>{z(e)&&r(e)}):t.some(t=>t.layerId===e.layerId)&&e.fields.some(e=>"assetgroup"===e.name.toLowerCase())&&(e.outFields=["assetgroup","assettype","globalid","objectid"])};for(const s of e.layers)z(s)&&r(s)}_removeGraphic(e){this._getGraphicLayer(C)?.remove(e.mapGraphic)}_createGraphicLayer(e){const{map:t}=this.view;if(!t.findLayerById(e)){const t=new f({id:e,internal:!0,listMode:"hide",title:e});L(this.view,t)}}_getGraphicLayer(e){const{map:t}=this.view;if(t){const r=t.findLayerById(e);if(r&&$(r))return r}return null}};e([c()],J.prototype,"_activeProgress",void 0),e([c()],J.prototype,"_flags",void 0),e([c()],J.prototype,"traces",void 0),e([c()],J.prototype,"defaultGraphicColor",void 0),e([c()],J.prototype,"enableResultArea",void 0),e([c()],J.prototype,"flags",void 0),e([c()],J.prototype,"messages",void 0),e([c()],J.prototype,"messagesUnits",void 0),e([c()],J.prototype,"resultAreaProperties",null),e([c()],J.prototype,"selectedTraces",void 0),e([c()],J.prototype,"selectOnComplete",void 0),e([c()],J.prototype,"showGraphicsOnComplete",void 0),e([c()],J.prototype,"showSelectionAttributes",void 0),e([c({readOnly:!0})],J.prototype,"state",null),e([c()],J.prototype,"traceResults",void 0),e([c()],J.prototype,"utilityNetwork",void 0),e([c({value:null})],J.prototype,"view",null),J=e([u("esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceViewModel")],J);const W=J;export{W as default};