@arcgis/core 5.2.2 → 5.2.4

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 (73) hide show
  1. package/Basemap.d.ts +2 -2
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/{f88cbf9b1d1d7400c060.js → 20ee2f36f0fd0ae01e15.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{f7ec3b7f2eccd9c4c2e5.js → 26261b21d1edf476ea49.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{7d2be06dfbd92c8b9484.js → 596891426621c403bdef.js} +1 -1
  6. package/assets/esri/core/workers/chunks/{aa4f12fcb9f4ed3dba18.js → e3f8f1dba7b3a473ed00.js} +1 -1
  7. package/assets/esri/core/workers/chunks/{150e7a7bd5df25693da7.js → f0676c2963718bee2486.js} +1 -1
  8. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
  9. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
  10. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
  11. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
  12. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
  13. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
  14. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
  15. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
  16. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
  17. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
  18. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
  19. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
  20. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
  21. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
  22. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
  23. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
  24. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
  25. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
  26. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
  27. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
  28. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
  29. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
  30. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
  31. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
  32. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
  33. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
  34. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
  35. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
  36. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
  37. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
  38. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
  39. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
  40. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
  41. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
  42. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
  43. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
  44. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
  45. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
  46. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
  47. package/config.d.ts +3 -3
  48. package/config.js +1 -1
  49. package/identity/Credential.d.ts +1 -1
  50. package/identity/IdentityManager.d.ts +1 -1
  51. package/identity/OAuthInfo.d.ts +1 -1
  52. package/identity/ServerInfo.d.ts +1 -1
  53. package/kernel.js +1 -1
  54. package/layers/VectorTileLayer.d.ts +2 -2
  55. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  56. package/layers/mixins/APIKeyMixin.d.ts +1 -1
  57. package/layers/ogc/types.d.ts +1 -1
  58. package/layers/raster/functions/rasterProjectionHelper.js +1 -1
  59. package/legend/ActiveLayerInfo.d.ts +5 -1
  60. package/legend/ActiveLayerInfo.js +1 -1
  61. package/package.json +2 -2
  62. package/support/timeUtils.js +1 -1
  63. package/views/2d/engine/webgl/FeatureDisplayList.js +1 -1
  64. package/views/2d/engine/webgl/GlyphWorker.js +1 -1
  65. package/views/2d/layers/LayerView2D.js +1 -1
  66. package/views/3d/analysis/LineOfSight/placementUtils.js +1 -1
  67. package/views/3d/analysis/Viewshed/placementUtils.js +1 -1
  68. package/views/draw/DrawTool.js +1 -1
  69. package/widgets/Directions.d.ts +1 -1
  70. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  71. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  72. package/widgets/OrientedImageryViewer.js +1 -1
  73. package/widgets/ScaleRangeSlider/types.d.ts +3 -3
@@ -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"../Color.js";import{addTokenParameter as n}from"../kernel.js";import r from"../request.js";import i from"../core/Accessor.js";import{isSome as a}from"../core/arrayUtils.js";import o from"../core/Collection.js";import{getColorWithEmissiveStrength as s}from"../core/colorUtils.js";import{JSONMap as c}from"../core/jsonMap.js";import l from"../core/Logger.js";import{clamp as u}from"../core/mathUtils.js";import{debounce as d}from"../core/promiseUtils.js";import{on as f,watch as p,initial as m,whenOnce as h}from"../core/reactiveUtils.js";import{px2pt as g}from"../core/screenUtils.js";import{parseWhereClause as _,sqlName as v,sqlLiteral as y}from"../core/sql.js";import{addQueryParameters as ee}from"../core/urlUtils.js";import{property as b,subclass as te}from"../core/accessorSupport/decorators.js";import{runUntracked as x}from"../core/accessorSupport/tracking.js";import{EffectView as ne}from"../layers/effects/EffectView.js";import{getPixelValueRange as re}from"../layers/raster/formats/pixelRangeUtils.js";import{getEffectiveDisplayFilter as ie}from"../layers/support/displayFilterUtils.js";import{ExportImageParameters as ae}from"../layers/support/ExportImageParameters.js";import{collectFields as oe,collectArcadeFieldNames as se}from"../layers/support/fieldUtils.js";import{isFeatureLayer as ce,getFieldConfigurationsContainer as le}from"../layers/support/layerUtils.js";import{getEffectiveClusterSizeVariable as ue}from"./support/clusterUtils.js";import{getColorFromPointCloudStops as de,getRampStopsForPointCloud as fe,getStretchRampStops as pe,getRampStops as S}from"./support/colorRampUtils.js";import{getHeatmapRampStops as me}from"./support/heatmapRampUtils.js";import{getRelationshipRampElement as he,getRotationAngleForFocus as ge}from"./support/relationshipRampUtils.js";import{getRampStops as _e,realWorldMaxSize as ve,realWorldMinSize as ye}from"./support/sizeRampUtils.js";import{specialCharsLessThan as be,specialCharsGreaterThan as xe,getAuthoringInfoVisualVariableByTheme as C,getSymbolForFlowRenderer as Se,formatValue as w,getFormatOptions as T,mergeWhereClauses as Ce,getMedianColor as E,rgbImgSource as we,getFormatOptionsForVisualVariable as Te}from"./support/utils.js";import{fromJSON as Ee}from"../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as De}from"../renderers/support/rendererConversion.js";import{getScaleDependentSymbol as D}from"../renderers/support/scaleDependentSymbolUtils.js";import Oe from"../renderers/visualVariables/SizeVariable.js";import ke from"../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{updateReferenceSizeSymbol as Ae}from"../smartMapping/renderers/support/referenceSizeUtils.js";import O from"../symbols/SimpleFillSymbol.js";import k from"../symbols/SimpleMarkerSymbol.js";import{applyCIMSymbolColor as je}from"../symbols/support/cimSymbolUtils.js";import{renderSymbol as Me}from"../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as A,renderDotDensityPreviewHTML as Ne,renderPieChartPreviewHTML as Pe,renderPreviewHTML as Fe,getEmissiveFromSymbol as j}from"../symbols/support/symbolUtils.js";import{getCSSFilterFromEffectList as Ie,isVolumetricSymbol as Le}from"../symbols/support/utils.js";import{formatNumberLabel as Re}from"../widgets/smartMapping/support/utils.js";const M=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,ze=new c({esriGeometryPoint:`point`,esriGeometryMultipoint:`multipoint`,esriGeometryPolyline:`polyline`,esriGeometryPolygon:`polygon`,esriGeometryMultiPatch:`multipatch`}),N=new k({size:6,outline:{color:[128,128,128,.5],width:.5}}),Be=new O({style:`solid`});function P(e){return e.type===`flow`}function F(e){return e.type===`vector-field`}function I(e){return e.type===`raster-colormap`}function L(e){return e.type===`raster-stretch`}function R(e){return e.type===`raster-shaded-relief`}function z(e){return e.declaredClass===`esri.renderers.SimpleRenderer`}function B(e){return e.declaredClass===`esri.renderers.ClassBreaksRenderer`}function V(e){return e.declaredClass===`esri.renderers.UniqueValueRenderer`}function H(e){return e.declaredClass===`esri.renderers.HeatmapRenderer`}function Ve(e){return U(e)||W(e)||G(e)||He(e)}function He(e){return e.declaredClass===`esri.renderers.PointCloudRGBRenderer`}function U(e){return e.declaredClass===`esri.renderers.PointCloudClassBreaksRenderer`}function W(e){return e.declaredClass===`esri.renderers.PointCloudStretchRenderer`}function G(e){return e.declaredClass===`esri.renderers.PointCloudUniqueValueRenderer`}function Ue(e){return e.declaredClass===`esri.renderers.DotDensityRenderer`}function We(e){return e.declaredClass===`esri.renderers.PieChartRenderer`}function Ge(e,t){return z(e)||B(e)||V(e)||H(e)||Ue(e)||We(e)?t.type===`2d`||De(e):L(e)||I(e)||R(e)||U(e)||W(e)||G(e)||F(e)||P(e)}function Ke(e){return e.declaredClass===`esri.layers.BuildingSceneLayer`}function K(e){return e.declaredClass===`esri.layers.SubtypeGroupLayer`}function qe(e){return e.declaredClass===`esri.layers.VoxelLayer`}function Je(e){return e.declaredClass===`esri.layers.WMSLayer`}function Ye(e){return e.declaredClass===`esri.layers.WMTSLayer`}function q(e){return e.declaredClass===`esri.layers.MapImageLayer`}function Xe(e){return e.declaredClass===`esri.layers.TileLayer`}function J(e){return e.declaredClass===`esri.layers.ImageryLayer`}function Y(e){return e.declaredClass===`esri.layers.ImageryTileLayer`}function Ze(e){return e.declaredClass===`esri.layers.WCSLayer`}function Qe(e){return e.type===`stretch-ramp`}function $e(e){return(`authoringInfo`in e?e?.authoringInfo:null)?.type===`univariate-color-size`}function et(e){let t=`authoringInfo`in e?e?.authoringInfo:null;return t?.type===`univariate-color-size`&&t?.univariateTheme===`above-and-below`}function tt(e){return`sublayers`in e}function nt(e){return e&&`symbol`in e}function rt(e,t){let{field:n,field2:r,field3:i,fieldDelimiter:a,valueExpression:o}=e,s=!(!n&&!o||!r&&!i);if(!n)return null;let c=s?t?.toString().split(a||``):[t],l=n?{[n]:c?.[0]}:null;return l&&(r&&(l[r]=c?.[1]),i&&(l[i]=c?.[2])),l}const it=new k({style:`path`,path:`M10,5 L5,0 0,5 M5,0 L5,15`,size:15,outline:{width:1,color:[85,85,85,1]}});let X={},Z={};const Q=new WeakMap;let $=class extends i{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._loading=!1,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._clusterSizeVariable=null,this._layerDefinitionExpression=null,this._layerDefinitionExpressionClause=null,this._layerDisplayFilter=null,this._layerDisplayFilterClause=null,this.children=new o,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.layer=null,this.layerView=null,this.legendElements=[],this.parent=null,this.respectLayerDefinitionExpression=!1,this.respectLayerVisibility=!0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){let e=()=>this.notifyChange(`ready`);this.addHandles([f(()=>this.children,`change`,t=>{let{added:n,removed:r}=t;n.forEach(t=>{let n=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(p(()=>t.ready,e,m),n)}),r.forEach(e=>this.removeHandles(e.layer.uid)),e()})]),this.keepCacheOnDestroy||(X={},Z={})}destroy(){this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||(X=null,Z=null),this._layerDefinitionExpressionClause=null}get cssEffectFilter(){let{layer:e,scale:t}=this,n=`effect`in e?e.effect:null;if(!n)return null;let r=new ne({effect:n});return r.endTransition(),r.scale=t,Ie(r,!0)}get isScaleDriven(){let e=this.layer;if(e===null)return!1;if(`effect`in e&&e.effect&&Array.isArray(e.effect))return!0;if(`featureReduction`in e&&e.featureReduction){if(e.featureReduction.type===`cluster`)return!0;if(e.featureReduction.type===`binning`&&`renderer`in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return`renderer`in e&&e.renderer?`displayFilterInfo`in e&&e.displayFilterInfo&&V(e.renderer)?!0:this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get loading(){return this.children.length>0?this.children.some(e=>e.loading):this._loading}get opacity(){let e=this.layer.opacity,t=this.parent?.opacity,n=this.layer.parent,r=n&&`uid`in n?this._getParentLayerOpacity(n):null;return t==null?r==null?e:r*e:t*e}get ready(){return x(()=>this.layer===null?!0:this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get scale(){return this.view?.scale??0}get version(){return this.commitProperty(`ready`),x(()=>this._get(`version`)+1)}async buildLegendElementsForFeatureCollections(e){if(this._loading=!0,this.hideLayersNotInCurrentView&&!await this._isLayerInCurrentView()){this.legendElements=[],this._loading=!1,this.notifyChange(`ready`);return}let t=Array.from(e,e=>{if(ce(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet?.features.length){let t=e.layerDefinition,n=t?.drawingInfo,r=n&&Ee(n.renderer),i=ze.read(t.geometryType);return r?this._getRendererLegendElements(r,{title:e.name,geometryType:i}):(l.getLogger(this).warn(`drawingInfo not available!`),null)}return null});try{let e=[],n=await Promise.allSettled(t);for(let t of n)if(t.status===`fulfilled`)for(let n of t.value??[])e.push(n);this.legendElements=e}catch(e){l.getLogger(this).warn(`error while building legend for layer!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async buildLegendElementsForRenderer(e){try{this._loading=!0;let t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[]}catch(e){l.getLogger(this).warn(`error while building legend for layer!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async buildLegendElementsForFeatureReduction(e){try{this._loading=!0,await this._waitForLayerViewUpdate(this.layerView);let t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[]}catch(e){l.getLogger(this).warn(`error while building legend for layer!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async buildLegendElementsForTools(){this._loading=!0;let e=this.layer;if(qe(e))await this._constructLegendElementsForVoxelLayer();else if(Ye(e))this._constructLegendElementsForWMTSlayer();else if(Je(e))await this._constructLegendElementsForWMSSublayers();else if(Ke(e))await this._constructLegendElementsForBuildingSceneLayer();else if(q(e)||Xe(e)||K(e))await this._constructLegendElementsForSublayers();else{this.removeHandles(`imageryLayers-watcher`);let t=`default`;if(J(e)){let n=e?.rasterFunction?.functionName||`default`,r=e.bandIds?.length?e.bandIds.join(``):`###`;t=n+`_`+r}if(Y(e)||e.type===`link-chart`)return;await this._getLegendLayers(`${e.uid}-${t}`).then(async t=>{this.legendElements=[];let n=t.map(async t=>{if(J(e)){let t=p(()=>[e.rasterFunction,e.bandIds],()=>d(async()=>{X.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()})());this.addHandles(t,`imageryLayers-watcher`)}let n=this._generateSymbolTableElementForLegendLayer(t);n?.infos.length&&(J(e)&&(n.title=e.title),this.legendElements.push(n))});await Promise.allSettled(n)}).catch(e=>{l.getLogger(this).warn(`Request to server for legend has failed!`,e)})}this._loading=!1,this.notifyChange(`ready`)}async _isLayerInCurrentView(e){return this._checkFeatureCountForExpression(e,this.view.extent)}_getParentLayerOpacity(e){let t=1,n=e.parent;return n&&`uid`in n&&(t=this._getParentLayerOpacity(n)),e.opacity*t}_isGroupActive(){return this.children.some(e=>e.ready)}_isRendererScaleDriven(e){if(e.type===`dot-density`)return!0;let t=`valueExpression`in e?e.valueExpression:null;return M.test(t)||(`visualVariables`in e?e.visualVariables:null)?.some(e=>this._isScaleDrivenSizeVariable(e))?!0:this._hasScaleDrivenSymbols(e)}_hasScaleDrivenSymbols(e){switch(e.type){case`simple`:return this._isScaleDrivenSymbol(e.symbol);case`class-breaks`:return this._isScaleDrivenSymbol(e.defaultSymbol)||e.classBreakInfos.some(e=>this._isScaleDrivenSymbol(e.symbol));case`unique-value`:return this._isScaleDrivenSymbol(e.defaultSymbol)||!!e.uniqueValueInfos?.some(e=>this._isScaleDrivenSymbol(e.symbol))}return!1}_isScaleDrivenSymbol(e){if(e?.type===`cim`){let{primitiveOverrides:t,minScale:n,maxScale:r}=e.data,i=t?.some(e=>(e.valueExpressionInfo?.expression||``).includes(`$view.scale`))??!1;return n!=null||r!=null||i}return!1}_isScaleDrivenSizeVariable(e){if(e&&e.type!==`size`)return!1;let t=e,n=t.minSize,r=t.maxSize;return typeof n==`object`&&n&&this._isScaleDrivenSizeVariable(n)||typeof r==`object`&&r&&this._isScaleDrivenSizeVariable(r)?!0:M.test(t.valueExpression)}_isLayerScaleDriven(e){if(`minScale`in e&&e.minScale>0||`maxScale`in e&&e.maxScale>0)return!0;if(`sublayers`in e&&e.sublayers)return e.sublayers.some(e=>this._isLayerScaleDriven(e));let t=e.parent;if(e.loaded===!1&&t&&q(t)&&`source`in e&&e.source&&e.source.type===`map-layer`){for(let n of t.sourceJSON.layers??[])if(n.id===e.source.mapLayerId&&(n.minScale>0||n.maxScale>0))return!0}return!1}async _constructLegendElementsForVoxelLayer(){this._loading=!0,this.legendElements=[],this.removeHandles(`voxel-style-watcher`),this.removeHandles(`voxel-current-variable`);let e=this.layer;this.addHandles(p(()=>e.currentVariableId,()=>this._constructLegendElementsForVoxelLayer()),`voxel-current-variable`),this.addHandles(p(()=>e.getVariableStyles(),()=>this._constructLegendElementsForVoxelLayer()),`voxel-style-watcher`);let t=e.getVariableStyle(null),n=[];if(t){if(t.uniqueValues?.length){let e=[];t.uniqueValues.forEach(t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new O({color:t.color,outline:null})})}),e.length&&n.push({type:`symbol-table`,title:t.label,infos:e})}else if(t.transferFunction){let{colorStops:e,stretchRange:r}=t.transferFunction,i=e.toArray().reverse(),a=r.map((e,t)=>`${t===0?be:xe} ${Re(e)}`).reverse(),o=i.map(e=>({color:e.color,value:null,label:null}));o[0].label=a[0],o[o.length-1].label=a[1],n.push({type:`color-ramp`,title:t.label,infos:o,preview:A(i.map(e=>e.color))})}}await this._generatePreviewsForLegendElements(n,{opacity:e.opacity}),this.legendElements=n,this._loading=!1,this.notifyChange(`ready`)}_constructLegendElementsForWMTSlayer(){this._loading=!0,this.legendElements=[],this.removeHandles(`wmts-activeLayer-watcher`);let e=this.layer.activeLayer;this.addHandles(p(()=>{let{layer:e}=this;return e&&`activeLayer`in e&&e.activeLayer},()=>this._constructLegendElementsForWMTSlayer()),`wmts-activeLayer-watcher`);let t=e.styleId?e.styles?.find(({id:t})=>t===e.styleId)?.legendUrl:void 0;t&&(this.legendElements=[{type:`symbol-table`,title:e.title,infos:[{src:t,opacity:this.opacity}]}]),this._loading=!1,this.notifyChange(`ready`)}async _constructLegendElementsForWMSSublayers(){this._loading=!0,this.legendElements=[],this.removeHandles(`wms-sublayers-watcher`);let e=this.layer,t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(p(()=>{let{layer:e}=this;return e&&`sublayers`in e&&e.sublayers},()=>this._constructLegendElementsForWMSSublayers()),`wms-sublayers-watcher`),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this._loading=!1,this.notifyChange(`ready`)}async _generateLegendElementsForWMSSublayers(e,t){let n=this.layer,r=[];this.addHandles(e.on(`change`,()=>this._constructLegendElementsForWMSSublayers()),`wms-sublayers-watcher`);let i=this.sublayerIds?.map(e=>n.findSublayerById(e))?.filter(a)??[],o=i.length?i:e.toArray();for(let e of o){let n=p(()=>[e.title,e.visible,e.legendEnabled],()=>this._constructLegendElementsForWMSSublayers());if(this.addHandles(n,`wms-sublayers-watcher`),!this.respectLayerVisibility||e.visible&&e.legendEnabled){let n=await this._generateSymbolTableElementForWMSSublayer(e,t);n?.infos.length&&r.unshift(n)}}return r}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){let n=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter(e=>e);return{type:`symbol-table`,title:e.title,infos:n}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let n=e.legendUrl;if(!n)return;let i={type:`symbol-table`,title:e.title||e.name||String(e.id??``),infos:[]};t&&(n=ee(n,t));let a=null,o=e.layer?.opacity;try{a=(await r(n,{responseType:`image`})).data,a&&(a.style.opacity=o)}catch{}return i.infos.push({src:n,preview:a,opacity:o}),i}_getLegendLayers(e,t){let n=X&&X[e];if(n)return Promise.resolve(n);let r=Z?.[e];if(r!=null)return r;let i=this._legendRequest(t).then(t=>{let n=t.layers;return X&&(X[e]=n),n}).finally(()=>{Z&&delete Z[e]});return Z[e]=i,i}_legendRequest(e){let t=this.layer,n={f:`json`,dynamicLayers:e};if(J(t)){let e=t.exportImageServiceParameters.rasterFunction;if(e&&(n.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(n.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){let{raster:e,viewId:r,customParameters:i}=t;n={raster:e,viewId:r,...n,...i}}}let i=t.url.replace(/(\/)+$/,``);if(`version`in t&&+t.version>=10.01){let e=i.indexOf(`?`);e>-1?i=i.slice(0,e)+`/legend`+i.slice(e):i+=`/legend`}else{let e=i.toLowerCase().indexOf(`/rest/`),t=e===-1?i:i.slice(0,e)+i.slice(e+5);i=`https://utility.arcgis.com/sharing/tools/legend?soapUrl=`+encodeURI(t)+`&returnbytes=true`}return r(i,{query:n}).then(e=>e.data)}async _constructLegendElementsForBuildingSceneLayer(){this._loading=!0,this.legendElements=[],this.removeHandles(`sublayers-watcher`);let e=this.layer;this.addHandles(p(()=>e.sublayers,()=>this._constructLegendElementsForBuildingSceneLayer()),`sublayers-watcher`);try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity)}catch(e){l.getLogger(this).warn(`Request to server for legend has failed!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async _generateLegendElementsForBuildingSublayers(e,t){let n=[];this.addHandles(e.on(`change`,()=>this._constructLegendElementsForBuildingSceneLayer()),`sublayers-watcher`);let r=e.toArray();for(let e of r){let r=p(()=>[`renderer`in e&&e.renderer,e.opacity,e.title,e.visible],()=>this._constructLegendElementsForBuildingSceneLayer());if(this.addHandles(r,`sublayers-watcher`),!this.respectLayerVisibility||e.visible){let r=e?.opacity==null?null:e.opacity,i=r==null?t:r*t;if(e.type===`building-group`){let t={type:`symbol-table`,title:e.title,infos:[]},r=await this._generateLegendElementsForBuildingSublayers(e.sublayers,i);t.infos.push(...r),n=[t,...n]}else e.renderer&&(n=[...await this._getRendererLegendElements(e.renderer,{title:e.title,opacity:i,sublayer:e}),...n])}}return n.filter(e=>!!e&&(`infos`in e&&e.infos?e.infos.length>0:!0))}async _constructLegendElementsForSublayers(){this._loading=!0,this.removeHandles(`sublayers-watcher`);let e=this.layer;if(!(q(e)||Xe(e)||K(e))||this.hideLayersNotInCurrentView&&!await this._isLayerInCurrentView()){this.legendElements=[],this._loading=!1,this.notifyChange(`ready`);return}this.addHandles(p(()=>e.sublayers,()=>this._constructLegendElementsForSublayers),`sublayers-watcher`);try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity)}catch(e){l.getLogger(this).warn(`Request to server for legend has failed!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async _generateLegendElementsForSublayers(e,t,n){let r=this.layer,i=[];this.addHandles(e.on(`change`,()=>this._constructLegendElementsForSublayers()),`sublayers-watcher`);let o=e.toArray();!n&&this.sublayerIds&&this.sublayerIds.length&&(o=K(r)?this.sublayerIds.map(e=>r.findSublayerForSubtypeCode(e)).filter(a):this.sublayerIds.map(e=>r.findSublayerById(e)).filter(a));for(let e of o){let r=p(()=>[e.renderer,e.opacity,e.title,e.visible,e.legendEnabled],()=>this._constructLegendElementsForSublayers());this.addHandles(r,`sublayers-watcher`);let a=e.createQuery().where,o=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView(a),s=!this.respectLayerVisibility||e.visible&&e.legendEnabled&&this._isSublayerInScale(e);if(o&&s){let r=e?.opacity==null?null:e.opacity,a=r==null?t:r*t,o=!tt(e)||e.originIdOf(`renderer`)>2&&!e.sublayers;if(e.renderer&&o)await e.load(),i=[...await this._getRendererLegendElements(e.renderer,{title:e.title,opacity:a,sublayer:e}),...i];else if(tt(e)){let t=await this._generateSymbolTableElementForSublayer(e,a,n);t&&i.unshift(t)}}}return i.filter(e=>!!e&&(`infos`in e&&e.infos?e.infos.length>0:!0))}async _generateSymbolTableElementForSublayer(e,t,n){if(!n){n=new Map;let t=this.layer,r=e.source,i=!(!r||r.type===`map-layer`&&r.mapLayerId===e.id&&(!r.gdbVersion||r.gdbVersion===(`gdbVersion`in t&&t.gdbVersion)))||e.originIdOf(`renderer`)>2||e.originIdOf(`labelingInfo`)>2||e.originIdOf(`labelsVisible`)>2,a=null;if(i){let e=new ae({layer:this.layer});a=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}let o=a||`${t.uid}-default`;(await this._getLegendLayers(o,a)).forEach(e=>n.set(e.layerId,e))}let r=n.get(e.id);if((!r||r?.subLayerIds&&r.defaultVisibility)&&e.sublayers){let r=await this._generateLegendElementsForSublayers(e.sublayers,t,n);return{type:`symbol-table`,title:e.title,infos:r}}return this._generateSymbolTableElementForLegendLayer(r,e,t)}_generateSymbolTableElementForLegendLayer(e,t,n){if(!e?.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;let r=t?.renderer,i=t?.title||e.layerName;if(r&&(!t||t?.originIdOf(`renderer`)>2)){let e=t?.title||this._getRendererTitle(r,t);e&&(i&&typeof e!=`string`&&`title`in e&&(e.title=i),i=e)}let a={type:`symbol-table`,title:i,legendType:e.legendType||null,infos:[]},o=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach(r=>{let i={type:`symbol-table`,title:r.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(o.filter(e=>e.groupId===r.id),e.layerId,r.heading||a.title||t?.title,n)};i.infos?.length>0&&a.infos.push(i)}):a.infos=this._generateSymbolTableElementInfosForLegendLayer(o,e.layerId,a.title||t?.title,n),a.infos.length>0?a:null}_generateSymbolTableElementInfosForLegendLayer(e,t,r,i){return e.map(e=>{let a=e.url;if(e.imageData&&e.imageData.length>0)a=`data:image/png;base64,${e.imageData}`;else if(!a.startsWith(`http`))a=n(`${this.layer.url}/${t}/images/${a}`);else return null;let o=e.label;return{previewAriaLabel:o||r,label:o,src:a,opacity:i??this.opacity,width:e.width,height:e.height}}).filter(a)}_isSublayerInScale(e){let t=e.minScale||0,n=e.maxScale||0;return!(t>0&&t<this.scale||n>this.scale)}_isLegendLayerInScale(e,t){let n=t||this.layer,r=null,i=null,a=!0;return!n.minScale&&n.minScale!==0||!n.maxScale&&n.maxScale!==0?(e.minScale===0&&n.tileInfo&&(r=n.tileInfo.lods[0].scale),e.maxScale===0&&n.tileInfo&&(i=n.tileInfo.lods[n.tileInfo.lods.length-1].scale)):(r=Math.min(n.minScale,e.minScale)||n.minScale||e.minScale,i=Math.max(n.maxScale,e.maxScale)),(r>0&&r<this.scale||i>this.scale)&&(a=!1),a}_sanitizeLegendForSublayer(e,t){if(`version`in this.layer&&+this.layer.version<10.1||e.length===0)return e;let n=t.renderer,r=e.some(e=>e.values),i=0,a=null;return r&&e.some((e,t)=>(e.values||(i=t,a=e,a.label||(a.label=`others`)),a!=null)),n?n.type===`unique-value`?a&&(e.splice(i,1),e.push(a)):n.type===`class-breaks`&&(a&&e.splice(i,1),n.legendOptions?.order||e.reverse(),a&&e.push(a)):a&&(e.splice(i,1),e.push(a)),e}async _getRendererLegendElements(e,t={}){if(!Ge(e,this.view))return l.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(Ve(e))return this._constructPointCloudRendererLegendElements(e,t);if(Ue(e))return this._constructDotDensityRendererLegendElements(e);let n=await this._loadRenderer(e);return We(n)?this._constructPieChartRendererLegendElements(n):this._constructRendererLegendElements(n,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return e.type===`binning`?t=e.renderer:e.type===`cluster`&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t,{isFeatureReductionRenderer:!0}):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??``}async _constructPointCloudRendererLegendElements(e,t={}){let n=t.title,r=[],i=null,a=null;if(U(e))i={type:`symbol-table`,title:n||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach(e=>{i.infos.unshift({label:e.label||e.minValue+` - `+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(N,e.color)})});else if(W(e)){let t=e.stops,r=null;if(t?.length&&(t.length===1&&(r=t[0].color),!r)){let e=t[0].value,n=t[t.length-1].value;if(e!=null&&n!=null){let i=e+(n-e)/2;r=de(i,t)}}i={type:`symbol-table`,title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(N,r||N.color)}]};let o=fe(e.stops??[])??[];a={type:`color-ramp`,title:n||this._getPointCloudRendererTitle(e),infos:o,preview:A(o.map(e=>e.color))}}else G(e)&&(i={type:`symbol-table`,title:n||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach(e=>{i.infos.push({label:e.label||e.values.join(`, `),value:e.values.join(`, `),symbol:this._getAppliedCloneSymbol(N,e.color)})}));return i?.infos.length&&r.push(i),a?.infos.length&&r.push(a),await this._generatePreviewsForLegendElements(r,{opacity:this.opacity,symbolConfig:{applyColorModulation:!!e.colorModulation}}),r}async _getElementInfoForDotDensity(e,t){let{color:n,label:r,valueExpressionTitle:i}=t,{backgroundColor:a,outline:o,dotSize:s}=e,c=this.cssEffectFilter,l=s+`-`+n+`-`+a+`-`+(o&&JSON.stringify(o.toJSON()))+`-`+c,u=this._dotDensityUrlCache,d=u.has(l)?u.get(l):Ne(e,n);u.set(l,d);let f={shape:{type:`image`,x:0,y:0,width:d.width,height:d.height,src:d.src},fill:null,stroke:null,offset:[0,0]},p=Me([[f]],[d.width,d.height],{cssEffectFilter:this.cssEffectFilter});return{opacity:1,src:d.src,preview:p,width:d.width,height:d.height,previewAriaLabel:r||i}}async _constructDotDensityRendererLegendElements(e){let t=e.calculateDotValue(this.view.scale),n=e.legendOptions?.unit,r={type:`symbol-table`,title:{value:t&&Math.round(t),unit:n||``},infos:[]};for(let t of e.attributes){let n=await this._getElementInfoForDotDensity(e,t);n.label=t.label||t.valueExpressionTitle||t.field,r.infos.push(n)}return[r]}async _constructPieChartRendererLegendElements(e){let t=[],n=null,r=e.outline;e.attributes.forEach(e=>{let n=new k({color:e.color,outline:r}),i=e.label||e.valueExpressionTitle||e.field;t.push({label:i,symbol:n})});let i=t.length?[...t]:[];if(e.othersCategory?.color&&e.othersCategory?.threshold!==0){let i=new k({color:e.othersCategory.color,outline:r});n=e.othersCategory.label||`Other`,t.push({label:n,symbol:i})}if(e.defaultColor?.a){let n=new k({color:e.defaultColor,outline:r});t.push({label:e.defaultLabel,symbol:n})}let a=await this._getVisualVariableLegendElements(e,this.layer)||[];if(t.length){a.unshift({type:`symbol-table`,title:null,infos:t});let o=i.filter(e=>e.label!==n).map(e=>e.symbol.color).filter(Boolean),s=Pe(o,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,cssEffectFilter:this.cssEffectFilter,outline:r});a.unshift({type:`pie-chart-ramp`,title:this._getRendererTitle(e,this.layer),infos:t,preview:s})}return await this._generatePreviewsForLegendElements(a,{opacity:this.layer.opacity,cssEffectFilter:this.cssEffectFilter}),a}async _getWhereClause(e,t,n){let r=await _(e,n),i=new Set,{field:a,field2:o,field3:s}=t;oe(i,n,[a,o,s]),await se(i,n,null,t.valueExpression);let c=new Set(Array.from(i,e=>e.toLowerCase()));return(r?.fieldNames.map(e=>e.toLowerCase()))?.some(e=>!c.has(e))?null:r}async _processDefinitionExpression(e,t){if(!(`definitionExpression`in e))return;let n=e.definitionExpression;n&&this.respectLayerDefinitionExpression?this._layerDefinitionExpression!==n&&(this._layerDefinitionExpressionClause=await this._getWhereClause(n,t,e.fieldsIndex)):this._layerDefinitionExpressionClause=null,this._layerDefinitionExpression=n}async _processDisplayFilter(e,t){if(!(`displayFilterInfo`in e))return;let n=e.displayFilterInfo?ie(e.displayFilterInfo,this.view):null;return n?.where?this._layerDisplayFilter?.id!==n?.id&&(this._layerDisplayFilterClause=await this._getWhereClause(n.where,t,e.fieldsIndex)):this._layerDisplayFilterClause=null,this._layerDisplayFilter=n,n}async _constructRendererLegendElements(e,t={}){let{title:n,sublayer:r,isFeatureReductionRenderer:i}=t,a=r||this.layer,o=C(e,`reference-size`),s=C(e,`spike`),c=i&&`renderer`in a&&a.renderer?a.renderer:e,l=null;V(c)&&(await this._processDefinitionExpression(a,c),l=await this._processDisplayFilter(a,c)),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;let u=await this._getVisualVariableLegendElements(e,a)||[],d={type:`symbol-table`,title:n||this._getRendererTitle(e,a),infos:[]},f=null,p=!1,m=new Set;if(P(e)&&!this._hasSizeRamp){let t=await Se(e);d.infos.push({label:null,symbol:t})}else if($e(e)){let t=n,r=et(e)?`univariate-above-and-below-ramp`:`univariate-color-size-ramp`,i=u.findIndex(e=>e.type===`color-ramp`),a=i===-1?null:u.splice(i,1)[0],o=u.findIndex(e=>e.type===`size-ramp`),s=o===-1?null:u.splice(o,1)[0],c=[];a&&(t=a.title,c.push(a)),s&&(t=s.title,c.push(s)),c.length>0&&u.push({type:r,title:t,infos:c})}else if(H(e)){let t=me(e);u.push({type:`heatmap-ramp`,title:n||this._getRendererTitle(e,a),infos:t,preview:A(t.map(e=>e.color),{cssEffectFilter:this.cssEffectFilter})})}else if(V(e)){let t=e.authoringInfo;if(t?.type===`relationship`){let{numClasses:n,field1:r,field2:i}=t,o=t.focus;if(n&&r&&i){let t=[r,i],s=ge(o)||0;for(let e of t){let{field:t,normalizationField:n,label:r}=e,i=r||{field:this._getFieldAlias(t,a),normField:n&&this._getFieldAlias(n,a)},o=it.clone();o.angle=s,d.infos.push({label:i,symbol:o}),m.add(o),s+=90}let c=he({focus:o,numClasses:n,infos:e.uniqueValueInfos??[]});u.unshift(c)}}else if(J(this.layer)||Y(this.layer)){let{uniqueValueInfos:t}=e;if(t)for(let e of t)e.symbol&&await this._checkClausesForUVR(c,e.value,a)&&d.infos.push({label:e.label||e.value,value:e.value,symbol:e.symbol})}else{let{field:t,field2:r,field3:i,fieldDelimiter:s,valueExpression:u,defaultSymbol:f}=e,m=!(!t&&!u||!r&&!i),h=l?.title?.trim(),g=[],{uniqueValueGroups:_}=e;if(_)for(let e of _){let n={type:`symbol-table`,title:e.heading,infos:[]},{classes:l}=e;if(l)for(let e of l){let{symbol:l,values:d}=e;if(l){let f=[],p=[];for(let e of d??[]){let{value:n,value2:o,value3:c}=e,l=[],d=[];(t||u)&&(l.push(n),d.push(this._getDomainName(t,n,a)??w(n,T(a,t,this.view.timeZone)))),r&&(l.push(o),d.push(this._getDomainName(r,o,a)??w(o,T(a,r,this.view.timeZone)))),i&&(l.push(c),d.push(this._getDomainName(i,c,a)??w(c,T(a,i,this.view.timeZone)))),f.push(m?l.join(s||``):l[0]),p.push(d.join(` - `))}let h=f.join(`, `),g=e.label;if(!g){let e=p.filter(Boolean);g=e.length?e.join(`, `):h}let _=D(e,this.view.scale)??l;_.type===`cim`&&o&&(_=_.clone(),Ae(_,{innerDotSize:8,outerRingSize:16}));let v=!1;for(let e of f)if(v=await this._checkClausesForUVR(c,e,a),v)break;v&&n.infos.push({label:g,value:h,symbol:_})}}n.infos.length&&g.push(n)}if(g.length){let t=g[0];if(g.length===1&&`title`in t&&!t.title){let e=t.infos?.filter(nt)??[];d.infos.push(...e)}else f&&(g.push({type:`symbol-table`,infos:[{label:e.defaultLabel||`others`,symbol:f}]}),p=!0),d.infos.push(...g);!n&&!e.legendOptions?.title&&!e.valueExpressionTitle?d.title=h:h&&(d.title=`${d.title} (${h})`)}}e.defaultSymbol&&!p&&(d.infos.push({label:e.defaultLabel||`others`,symbol:e.defaultSymbol}),p=!0)}else if(B(e)){if(!o&&!s){if(f=this._isUnclassedRenderer(e),!f||!this._hasSizeRamp){let t=e.classBreakInfos.filter(({symbol:e})=>e),n=e.legendOptions?.order===`ascending-values`;for(let e of t){let{label:t,minValue:r,maxValue:i}=e,o=D(e,this.view.scale)??e.symbol,s=t||(f?null:`${r} - ${i}`),c={previewAriaLabel:s||d.title||a.title,label:s,value:[r,i],symbol:o};n?d.infos.push(c):d.infos.unshift(c)}f&&(d.title=null),this._updateInfosForClassedSizeRenderer(e,d.infos)}e.defaultSymbol&&!f&&(d.infos.push({label:e.defaultLabel||`others`,symbol:e.defaultSymbol}),p=!0)}}else if(L(e)){if(Y(this.layer)||Ze(this.layer)){let t=await this._constructTileImageryStretchRendererElements(e);Qe(t)?u.push(t):d.infos=t}else{let t=this.layer,n,r;e.customStatistics?.length&&({min:n,max:r}=e.customStatistics[0]);let i=[],a=t.serviceRasterInfo;if(t.rasterFunction)try{a=await t.generateRasterInfo(t.rasterFunction)}catch{}let o=re(a.pixelType);if(a.bandCount===1){let i=t.bandIds?.[0]||0;n??=a.statistics?a.statistics[i].min:o[0],r??=a.statistics?a.statistics[i].max:o[1],n||r?u.push(await this._getStretchLegendElements(e,{min:n,max:r})):this._getServerSideLegend()}else if(t.bandIds?.length===1)n??=a.statistics?a.statistics[t.bandIds[0]].min:o[0],r??=a.statistics?a.statistics[t.bandIds[0]].max:o[1],n||r?u.push(await this._getStretchLegendElements(e,{min:n,max:r})):this._getServerSideLegend();else if(a.bandCount>=3){let{bandInfos:e}=a,{bandIds:n}=t;e.length>=a.bandCount?n?.length===3?(i=n.map(t=>e[t].name),d.infos=this._createSymbolTableElementMultiBand(i)):t.format===`lerc`?(i=[0,1,2].map(t=>e[t].name),d.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend():t.format===`lerc`?(i=[`band1`,`band2`,`band3`],d.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend()}else this._getServerSideLegend()}}else if(I(e))e.colormapInfos.forEach(e=>{d.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(Be,e.color)})});else if(z(e)){let n=e.symbol;switch(t.geometryType){case`point`:n=`pointSymbol`in a?a.pointSymbol:null;break;case`polyline`:n=`lineSymbol`in a?a.lineSymbol:null;break;case`polygon`:n=`polygonSymbol`in a?a.polygonSymbol:null}let r=this._clusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&r&&d.infos.push({previewAriaLabel:e.label||d.title||a.title,label:e.label,symbol:n})}else if(F(e)){e.outputUnit&&(this.title=`(`+e.toJSON().outputUnit+`)`),d.title=e.attributeField;let t=e.getClassBreakInfos();t?.length?t.forEach(e=>{d.infos.push({label:e.minValue+` - `+e.maxValue,symbol:e.symbol})}):d.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else R(e)&&u.push(await this._getStretchLegendElements(e,{min:0,max:255}));let h=e.defaultSymbol;h&&!p&&!z(e)&&(!f||this._hasColorRamp||this._hasSizeRamp||this._hasOpacityRamp)&&u.push({type:`symbol-table`,infos:[{label:e.defaultLabel||`others`,symbol:h}]}),d.infos.length&&u.unshift(d);let g=t.opacity==null?this.opacity:t.opacity,_=this._isTallSymbol(`visualVariables`in e?e.visualVariables:null),v=J(this.layer)||Y(this.layer);return await this._generatePreviewsForLegendElements(u,{opacity:g,symbolConfig:{isTall:_,isSquareFill:v},cssEffectFilter:this.cssEffectFilter},{arrowMarkerSymbols:m}),e=null,u}async _waitForLayerViewUpdate(e){await h(()=>!e.updating)}async _checkFeatureCountForExpression(e,t){let n=this.layerView;if(!(n&&`createQuery`in n&&`queryFeatureCount`in n))return!0;try{await this._waitForLayerViewUpdate(n);let r=n.createQuery();return e&&(r.where=Ce(r.where,e)),t&&(r.geometry=t),await n.queryFeatureCount(r)>0}catch{return!0}}_getUVRFeatureCountExpression(e,t){return Object.entries(e).map(([e,n])=>{let r=`getField`in t&&t.getField?t.getField(e):null,i=v(e);if(n==null)return`${i} IS NULL`;try{return`${i} = ${y(n,null,r?{type:r.type}:null)}`}catch{return`${i} = ${y(n)}`}}).join(` AND `)}async _checkClausesForUVR(e,t,n){let r=rt(e,t);if(!r)return!0;let i=!!(!this._layerDefinitionExpressionClause&&this._layerDefinitionExpression&&this.respectLayerDefinitionExpression||!this._layerDisplayFilterClause&&this._layerDisplayFilter?.where),a=this._getUVRFeatureCountExpression(r,n);return(i&&a?await this._checkFeatureCountForExpression(a):!0)&&(this._layerDefinitionExpressionClause?.testFeature(r)??!0)&&(this._layerDisplayFilterClause?.testFeature(r)??!0)}_getServerSideLegend(){setTimeout(()=>this.buildLegendElementsForTools(),0)}_getAllInfos(e){let t=e?.infos;return t?t.reduce((e,t)=>e.concat(this._getAllInfos(t)),[]):[e]}async _constructTileImageryStretchRendererElements(e){let t=this.layer,n=t.symbolizer.rasterInfo??t.raster.rasterInfo,r,i,a=e?.customStatistics?.length?e.customStatistics:n?.statistics;if(a)({min:r,max:i}=a[0]);else{let e=re(n.pixelType);r=e[0],i=e[1]}if(t.hasStandardTime()&&(r=t.getStandardTimeValue(r),i=t.getStandardTimeValue(i)),n.bandCount===1||t.bandIds?.length===1)return this._getStretchLegendElements(e,{min:r,max:i});let o=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(n.bandCount,3)).keys())).map(e=>n.bandInfos[e].name);return o.length<3?o.push(o[1]):o.length>3&&o.splice(3),this._createSymbolTableElementMultiBand(o)}async _getStretchLegendElements(e,t){let n=e.colorRamp?.toJSON(),r=pe(n,t);return{type:`stretch-ramp`,title:``,infos:r,preview:A(r.map(e=>e.color))}}_getClusterSymbol(){let e=this.layer,t=`featureReduction`in e&&e.featureReduction,n=t&&`symbol`in t&&t.renderer;return(!n||n?.authoringInfo?.isAutoGenerated===!0)&&t&&`symbol`in t?t.symbol:null}async _getSizeLegendElement(e,t,n,r){return{type:`size-ramp`,title:this._clusterSizeVariable?this._getClusterTitle(t):e,infos:await _e(n,t,await E(n),this.scale,this.view,r,this._clusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){let t=[],n=[`red`,`green`,`blue`];return e.forEach((e,r)=>{t.push({label:{colorName:n[r],bandName:e},src:we[r],opacity:this.opacity??1})}),t}_updateInfosForClassedSizeRenderer(e,t){let n=e.authoringInfo?.type===`class-breaks-size`,r=e.classBreakInfos.some(e=>Le(e.symbol));if(n&&r){let n=ve,r=ye,i=e.classBreakInfos.length,a=(n-r)/(i>1?i-1:i);t.forEach((e,t)=>{e.size=n-a*t})}}_isTallSymbol(e){let t=!1,n=!1;if(e)for(let r=0;r<e.length&&!(t&&n);r++){let i=e[r];i.type===`size`&&(i.axis===`height`&&(t=!0),i.axis===`width-and-depth`&&(n=!0))}return t&&n}async _generatePreviewsForLegendElements(e,t,n){let r=[];for(let i of e)for(let e of i.infos??[])if(`infos`in e&&e.infos&&r.push(this._generatePreviewsForLegendElements([e],t,n)),nt(e)&&e.symbol&&!e.preview){let a=!0;if(e.symbol.type===`cim`){let{minScale:t,maxScale:n}=e.symbol.data;(t&&t<this.scale||n&&n>this.scale)&&(a=!1)}a&&r.push(this._generateSymbolPreviewForInfo(e,{...t,clipBloomEffect:`theme`in i&&i.theme===`spike`,cssEffectFilter:n?.arrowMarkerSymbols?.has(e.symbol)?null:t.cssEffectFilter},n?{applyScaleDrivenSize:!n.arrowMarkerSymbols?.has(e.symbol)}:void 0))}await Promise.all(r)}async _getSize(e,t){let n=e.size==null&&this._hasSizeRamp?g(22):e.size;if(this._scaleDrivenSizeVariable&&t?.applyScaleDrivenSize){let{getSize:t}=await import(`../renderers/visualVariables/support/visualVariableUtils.js`);n=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:e.symbol.type===`simple-marker`?e.symbol.style:null})}return n}_getPreviewCIMOptions(e){return{style:`legend`,cimOptions:{allowScalingUp:this._hasSizeRamp||!!(this._scaleDrivenSizeVariable&&e?.applyScaleDrivenSize),viewParams:this.isScaleDriven?{viewingMode:this.view?.type===`2d`?`map`:this.view?.viewingMode,scale:this.view?.scale}:null}}}async _generateSymbolPreviewForInfo(e,t={},n){let{symbol:r}=e;try{if(t.size=await this._getSize(e,n),t.scale=!1,r.type===`cim`){let e=this._getPreviewCIMOptions(n);t={...t,...e}}e.preview=await Fe(r,t)}catch{e.preview=null,l.getLogger(this).warn(`Generating symbol preview failed for symbol type: ${r?.type}`)}}_getClusterRenderer(e){this._clusterSizeVariable=null;let t=`renderer`in this.layer?this.layer.renderer:null,n=e.renderer?.clone()||t?.clone(),r=ue(e,this.layerView,this.view);if(r&&n!=null&&`visualVariables`in n&&!n.visualVariables?.some(e=>e.type===`size`&&e.target!==`outline`&&!M.test(e.valueExpression))){if(`clusterMinSize`in e&&`clusterMaxSize`in e){let{clusterMinSize:t,clusterMaxSize:n}=e;r.legendOptions=new ke({showLegend:t!==n})}n.visualVariables=(n.visualVariables||[]).concat([r]),this._clusterSizeVariable=r}return n}async _loadRenderer(e){if(Q.has(e))return Q.get(e);let t=[],n=e.clone(),r=await E(n);if(B(n)||V(n)){let e=(n.classBreakInfos||n.uniqueValueInfos).map(e=>this._fetchSymbol(e.symbol,r).then(t=>{e.symbol=t}).catch(()=>{e.symbol=null}));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(n.symbol||n.defaultSymbol,n.defaultSymbol?null:r).then(e=>{this._applySymbolToRenderer(n,e,z(n))}).catch(()=>{this._applySymbolToRenderer(n,null,z(n))})),await Promise.allSettled(t),Q.set(e,n),n}_applySymbolToRenderer(e,t,n){n?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw Error();if(e.type===`web-style`)try{let n=await e.fetchSymbol();return this._getAppliedCloneSymbol(n,t)}catch{throw l.getLogger(this).warn(`Fetching web-style failed!`),Error()}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,n){if(!e||!n)return e;let r=e.clone(),i=n&&n.toRgba();return r.type.includes(`3d`)?this._applyColorTo3dSymbol(r,i):r.type===`cim`?je(r,n):r.color&&=new t(i||r.color),r}_applyColorTo3dSymbol(e,n){n&&e.symbolLayers.forEach(e=>{e&&(e.material||={},e.material.color=new t(n))})}async _getVisualVariableLegendElements(e,t){if(!(`visualVariables`in e)||e.type===`vector-field`)return null;let n=e.visualVariables??[],r=[],i=[],o=[],s=C(e,`reference-size`)??C(e,`spike`),c,l=this._clusterSizeVariable;if(s?.sizeStops?.length===2&&(B(e)||V(e))){let[e,t]=s.sizeStops,n=l?l.minDataValue:e.value,r=l?l.maxDataValue:t.value;c=new Oe({field:s.field??void 0,normalizationField:s.normalizationField,minSize:u(e.size,10,100),maxSize:u(t.size,50,150),minDataValue:n,maxDataValue:r}),i.push(c)}for(let e of n)if(e.type===`color`)r.push(e);else if(e.type===`size`){if(e.field===`cluster_count`&&c)continue;i.push(e)}else e.type===`opacity`&&o.push(e);let d=[...r,...i,...o],f,p;if(r.length===0&&B(e)&&e.classBreakInfos&&e.classBreakInfos.length===1){let t=e.classBreakInfos[0];f=t&&t.symbol}r.length===0&&z(e)&&(f=e.symbol);let m=null;if(f){if(f.type.includes(`3d`)){let e=f.symbolLayers.at(0);e.type===`water`?e.color!=null&&(p=e.color):e.material?.color!=null&&(p=e.material.color)}else f.url||(p=f.color);m=j(f)}let h=this.cssEffectFilter;return(await Promise.all(d.map(async n=>{if(n.legendOptions?.showLegend!==!1){let r=P(e)?n.field:this._getRampTitle(n,t),i=null,a=Te(t,n,this.view.timeZone);if(n.type===`color`){let t=await S(n,null,a)??[],o=this._getColorRampInfosWithEmissiveColors(t,e,m);i={type:`color-ramp`,title:r,infos:o,preview:A(o.map(e=>e.color),{cssEffectFilter:h})},this._hasColorRamp||=t.length>0}else if(n.type===`size`&&n.target!==`outline`)M.test(n.valueExpression)?this._clusterSizeVariable||(this._scaleDrivenSizeVariable=n):(i=await this._getSizeLegendElement(r,n,e,a),c===n&&s?.theme===`spike`&&(i.theme=s.theme),this._hasSizeRamp||=!!(i.infos!=null&&i.infos.length));else if(n.type===`opacity`){let t=await S(n,p,a)??[],o=this._getColorRampPreviewColors(t,e,m);i={type:`opacity-ramp`,title:r,infos:t,preview:A(o,{cssEffectFilter:h})},this._hasOpacityRamp||=t.length>0}return i?.infos?i:null}}))).filter(a)}_getColorRampPreviewColors(e,t,n){return this._getColorRampInfosWithEmissiveColors(e,t,n).map(e=>e.color)}_getColorRampInfosWithEmissiveColors(e,t,n){return e.map(e=>{let r=B(t)?this._getStopEmissiveForColorRampInfo(e,t):n;return r===void 0?e:{...e,color:s(e.color,r)}})}_getStopEmissiveForColorRampInfo(e,t){if(!e.value)return;let n=t.getBreakIndexfromInfos(e.value),r=n===-1?null:t.classBreakInfos[n];return j(r?.symbol??t.defaultSymbol??null)}_getDomainName(e,t,n){if(e&&typeof e!=`function`){let r=`getField`in n&&n.getField?.(e),i=r&&`getFieldDomain`in n&&n.getFieldDomain?n.getFieldDomain(r.name):null;return i?.type===`coded-value`?i.getName(t):null}return null}_getClusterTitle(e){let t=this.layer,n=e.field;if(`featureReduction`in t&&t.featureReduction?.type===`cluster`){let e=t.featureReduction,r=`popupTemplate`in e&&e.popupTemplate,i=r&&r.fieldInfos;if(i){for(let e of i)if(e.fieldName===n)return n===`cluster_count`?e.label||{showCount:!0}:e.label}}return{showCount:!0}}_getRampTitle(e,t){let n=e.field,r=e.normalizationField,i=!1,a=!1,o=!1,s=null;n=typeof n==`function`?null:n,r=typeof r==`function`?null:r;let c=e.legendOptions?.title;if(c!=null)s=c;else if(e.valueExpressionTitle)s=e.valueExpressionTitle;else{if(`renderer`in t&&t.renderer&&`authoringInfo`in t.renderer&&t.renderer.authoringInfo?.visualVariables){let e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){let n=e[t];if(n.type===`color`){if(n.style===`ratio`){i=!0;break}if(n.style===`percent`){a=!0;break}if(n.style===`percent-of-total`){o=!0;break}}}}s={field:n&&this._getFieldAlias(n,t),normField:r&&this._getFieldAlias(r,t),ratio:i,ratioPercent:a,ratioPercentTotal:o}}return s}_getRendererTitle(e,t){let n=e;if(n.legendOptions?.title)return n.legendOptions.title;if(n.valueExpressionTitle)return n.valueExpressionTitle;let r=n.field,i=null,a=null;if(B(n)&&(i=n.normalizationField,a=n.normalizationType===`percent-of-total`),r=typeof r==`function`?null:r,i=typeof i==`function`?null:i,V(n)){let{field2:e,field3:i,fieldDelimiter:a}=n,o=r&&this._getFieldAlias(r,t);return e&&(o=`<${o}>${a}<${this._getFieldAlias(e,t)}>`,i&&(o=`${o}${a}<${this._getFieldAlias(i,t)}>`)),o}let o=null;return(r||i)&&(o={field:r&&this._getFieldAlias(r,t),normField:i&&this._getFieldAlias(i,t),normByPct:a}),o}_getFieldAlias(e,t){let n=le(t,{checkFeatureReduction:!0});if(n)return n.getFieldAlias(e)||e;let r=((`popupTemplate`in t?t.popupTemplate:null)?.fieldInfos)?.find(t=>e===t.fieldName),i=null;`getField`in t&&t.getField?i=t.getField(e):`fieldsIndex`in t&&t.fieldsIndex&&(i=t.fieldsIndex.get(e));let a=null,o=`featureReduction`in t&&t.featureReduction;o&&(r??=`popupTemplate`in o?o.popupTemplate?.fieldInfos?.find(t=>e?.toLowerCase()===t.fieldName?.toLowerCase()):void 0,`fields`in o&&o.fields&&(a=o.fields.find(t=>t.name?.toLowerCase()===e?.toLowerCase())));let s=r||i||a,c=null;return s&&(c=r?.label||i?.alias||a?.alias||`name`in s&&s.name||`fieldName`in s&&s.fieldName||null),c}_isUnclassedRenderer(e){let t=e.visualVariables,n=B(e)&&e.classBreakInfos&&e.classBreakInfos.length===1,r=!1;return n&&t&&(r=e.field?t.some(t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField)):!!t.length),r}};e([b()],$.prototype,`_loading`,void 0),e([b()],$.prototype,`children`,void 0),e([b({readOnly:!0})],$.prototype,`cssEffectFilter`,null),e([b()],$.prototype,`hideLayersNotInCurrentView`,void 0),e([b({readOnly:!0})],$.prototype,`isScaleDriven`,null),e([b()],$.prototype,`keepCacheOnDestroy`,void 0),e([b()],$.prototype,`layer`,void 0),e([b()],$.prototype,`layerView`,void 0),e([b()],$.prototype,`legendElements`,void 0),e([b({readOnly:!0})],$.prototype,`loading`,null),e([b({readOnly:!0})],$.prototype,`opacity`,null),e([b()],$.prototype,`parent`,void 0),e([b({readOnly:!0})],$.prototype,`ready`,null),e([b()],$.prototype,`respectLayerDefinitionExpression`,void 0),e([b()],$.prototype,`respectLayerVisibility`,void 0),e([b({readOnly:!0})],$.prototype,`scale`,null),e([b()],$.prototype,`sublayerIds`,void 0),e([b()],$.prototype,`title`,void 0),e([b({readOnly:!0,value:0})],$.prototype,`version`,null),e([b()],$.prototype,`view`,void 0),$=e([te(`esri.legend.ActiveLayerInfo`)],$);const at=$;export{at as default};
2
+ import{__decorate as e}from"tslib";import t from"../Color.js";import{addTokenParameter as n}from"../kernel.js";import r from"../request.js";import i from"../core/Accessor.js";import{isSome as a}from"../core/arrayUtils.js";import o from"../core/Collection.js";import{getColorWithEmissiveStrength as s}from"../core/colorUtils.js";import{JSONMap as c}from"../core/jsonMap.js";import l from"../core/Logger.js";import{clamp as u}from"../core/mathUtils.js";import{debounce as d}from"../core/promiseUtils.js";import{on as f,watch as p,initial as m,whenOnce as h}from"../core/reactiveUtils.js";import{px2pt as g}from"../core/screenUtils.js";import{parseWhereClause as _,sqlName as v,sqlLiteral as y}from"../core/sql.js";import{addQueryParameters as ee}from"../core/urlUtils.js";import{property as b,subclass as te}from"../core/accessorSupport/decorators.js";import{runUntracked as x}from"../core/accessorSupport/tracking.js";import{EffectView as ne}from"../layers/effects/EffectView.js";import{getPixelValueRange as re}from"../layers/raster/formats/pixelRangeUtils.js";import{getEffectiveDisplayFilter as ie}from"../layers/support/displayFilterUtils.js";import{ExportImageParameters as ae}from"../layers/support/ExportImageParameters.js";import{collectFields as oe,collectArcadeFieldNames as se}from"../layers/support/fieldUtils.js";import{isFeatureLayer as ce,getFieldConfigurationsContainer as le}from"../layers/support/layerUtils.js";import{getEffectiveClusterSizeVariable as ue}from"./support/clusterUtils.js";import{getColorFromPointCloudStops as de,getRampStopsForPointCloud as fe,getStretchRampStops as pe,getRampStops as S}from"./support/colorRampUtils.js";import{getHeatmapRampStops as me}from"./support/heatmapRampUtils.js";import{getRelationshipRampElement as he,getRotationAngleForFocus as ge}from"./support/relationshipRampUtils.js";import{getRampStops as _e,realWorldMaxSize as ve,realWorldMinSize as ye}from"./support/sizeRampUtils.js";import{specialCharsLessThan as be,specialCharsGreaterThan as xe,getAuthoringInfoVisualVariableByTheme as C,getSymbolForFlowRenderer as Se,formatValue as w,getFormatOptions as T,mergeWhereClauses as Ce,getMedianColor as E,rgbImgSource as we,getFormatOptionsForVisualVariable as Te}from"./support/utils.js";import{fromJSON as Ee}from"../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as De}from"../renderers/support/rendererConversion.js";import{getScaleDependentSymbol as D}from"../renderers/support/scaleDependentSymbolUtils.js";import Oe from"../renderers/visualVariables/SizeVariable.js";import ke from"../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{updateReferenceSizeSymbol as Ae}from"../smartMapping/renderers/support/referenceSizeUtils.js";import O from"../symbols/SimpleFillSymbol.js";import k from"../symbols/SimpleMarkerSymbol.js";import{applyCIMSymbolColor as je}from"../symbols/support/cimSymbolUtils.js";import{renderSymbol as Me}from"../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as A,renderDotDensityPreviewHTML as Ne,renderPieChartPreviewHTML as Pe,renderPreviewHTML as Fe,getEmissiveFromSymbol as j}from"../symbols/support/symbolUtils.js";import{getCSSFilterFromEffectList as Ie,isVolumetricSymbol as Le}from"../symbols/support/utils.js";import{formatNumberLabel as Re}from"../widgets/smartMapping/support/utils.js";const M=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,ze=new c({esriGeometryPoint:`point`,esriGeometryMultipoint:`multipoint`,esriGeometryPolyline:`polyline`,esriGeometryPolygon:`polygon`,esriGeometryMultiPatch:`multipatch`}),N=new k({size:6,outline:{color:[128,128,128,.5],width:.5}}),Be=new O({style:`solid`});function P(e){return e.type===`flow`}function F(e){return e.type===`vector-field`}function I(e){return e.type===`raster-colormap`}function L(e){return e.type===`raster-stretch`}function R(e){return e.type===`raster-shaded-relief`}function z(e){return e.declaredClass===`esri.renderers.SimpleRenderer`}function B(e){return e.declaredClass===`esri.renderers.ClassBreaksRenderer`}function V(e){return e.declaredClass===`esri.renderers.UniqueValueRenderer`}function H(e){return e.declaredClass===`esri.renderers.HeatmapRenderer`}function Ve(e){return U(e)||W(e)||G(e)||He(e)}function He(e){return e.declaredClass===`esri.renderers.PointCloudRGBRenderer`}function U(e){return e.declaredClass===`esri.renderers.PointCloudClassBreaksRenderer`}function W(e){return e.declaredClass===`esri.renderers.PointCloudStretchRenderer`}function G(e){return e.declaredClass===`esri.renderers.PointCloudUniqueValueRenderer`}function Ue(e){return e.declaredClass===`esri.renderers.DotDensityRenderer`}function We(e){return e.declaredClass===`esri.renderers.PieChartRenderer`}function Ge(e,t){return z(e)||B(e)||V(e)||H(e)||Ue(e)||We(e)?t.type===`2d`||De(e):L(e)||I(e)||R(e)||U(e)||W(e)||G(e)||F(e)||P(e)}function Ke(e){return e.declaredClass===`esri.layers.BuildingSceneLayer`}function K(e){return e.declaredClass===`esri.layers.SubtypeGroupLayer`}function qe(e){return e.declaredClass===`esri.layers.VoxelLayer`}function Je(e){return e.declaredClass===`esri.layers.WMSLayer`}function Ye(e){return e.declaredClass===`esri.layers.WMTSLayer`}function q(e){return e.declaredClass===`esri.layers.MapImageLayer`}function Xe(e){return e.declaredClass===`esri.layers.TileLayer`}function J(e){return e.declaredClass===`esri.layers.ImageryLayer`}function Y(e){return e.declaredClass===`esri.layers.ImageryTileLayer`}function Ze(e){return e.declaredClass===`esri.layers.WCSLayer`}function Qe(e){return e.type===`stretch-ramp`}function $e(e){return(`authoringInfo`in e?e?.authoringInfo:null)?.type===`univariate-color-size`}function et(e){let t=`authoringInfo`in e?e?.authoringInfo:null;return t?.type===`univariate-color-size`&&t?.univariateTheme===`above-and-below`}function tt(e){return`sublayers`in e}function nt(e){return e&&`symbol`in e}function rt(e,t){let{field:n,field2:r,field3:i,fieldDelimiter:a,valueExpression:o}=e,s=!(!n&&!o||!r&&!i);if(!n)return null;let c=s?t?.toString().split(a||``):[t],l=n?{[n]:c?.[0]}:null;return l&&(r&&(l[r]=c?.[1]),i&&(l[i]=c?.[2])),l}const it=new k({style:`path`,path:`M10,5 L5,0 0,5 M5,0 L5,15`,size:15,outline:{width:1,color:[85,85,85,1]}});let X={},Z={};const Q=new WeakMap;let $=class extends i{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._loading=!1,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._clusterSizeVariable=null,this._layerDefinitionExpression=null,this._layerDefinitionExpressionClause=null,this._layerDisplayFilter=null,this._layerDisplayFilterClause=null,this.children=new o,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.layer=null,this.layerView=null,this.legendElements=[],this.parent=null,this.respectLayerDefinitionExpression=!1,this.respectLayerVisibility=!0,this.scale=0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){let e=()=>this.notifyChange(`ready`);this.addHandles([f(()=>this.children,`change`,t=>{let{added:n,removed:r}=t;n.forEach(t=>{let n=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(p(()=>t.ready,e,m),n)}),r.forEach(e=>this.removeHandles(e.layer.uid)),e()}),p(()=>({stationary:this.view?.stationary??!0,scale:this.view?.scale??0}),e=>{e.stationary&&this.scale!==e.scale&&this._set(`scale`,e.scale)},m)]),this.keepCacheOnDestroy||(X={},Z={})}destroy(){this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||(X=null,Z=null),this._layerDefinitionExpressionClause=null}get cssEffectFilter(){let e=this.cssEffectView;return e?(e.scale=this.scale,Ie(e,!0)):null}get cssEffectView(){let{layer:e}=this,t=`effect`in e?e.effect:null;if(!t)return null;let n=this._get(`cssEffectView`);if(n&&n.effect===t)return n;let r=new ne({effect:t});return r.endTransition(),r}get isScaleDriven(){let e=this.layer;if(e===null)return!1;if(`effect`in e&&e.effect&&Array.isArray(e.effect))return!0;if(`featureReduction`in e&&e.featureReduction){if(e.featureReduction.type===`cluster`)return!0;if(e.featureReduction.type===`binning`&&`renderer`in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return`renderer`in e&&e.renderer?`displayFilterInfo`in e&&e.displayFilterInfo&&V(e.renderer)?!0:this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get loading(){return this.children.length>0?this.children.some(e=>e.loading):this._loading}get opacity(){let e=this.layer.opacity,t=this.parent?.opacity,n=this.layer.parent,r=n&&`uid`in n?this._getParentLayerOpacity(n):null;return t==null?r==null?e:r*e:t*e}get ready(){return x(()=>this.layer===null?!0:this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get version(){return this.commitProperty(`ready`),x(()=>this._get(`version`)+1)}async buildLegendElementsForFeatureCollections(e){if(this._loading=!0,this.hideLayersNotInCurrentView&&!await this._isLayerInCurrentView()){this.legendElements=[],this._loading=!1,this.notifyChange(`ready`);return}let t=Array.from(e,e=>{if(ce(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet?.features.length){let t=e.layerDefinition,n=t?.drawingInfo,r=n&&Ee(n.renderer),i=ze.read(t.geometryType);return r?this._getRendererLegendElements(r,{title:e.name,geometryType:i}):(l.getLogger(this).warn(`drawingInfo not available!`),null)}return null});try{let e=[],n=await Promise.allSettled(t);for(let t of n)if(t.status===`fulfilled`)for(let n of t.value??[])e.push(n);this.legendElements=e}catch(e){l.getLogger(this).warn(`error while building legend for layer!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async buildLegendElementsForRenderer(e){try{this._loading=!0;let t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[]}catch(e){l.getLogger(this).warn(`error while building legend for layer!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async buildLegendElementsForFeatureReduction(e){try{this._loading=!0,await this._waitForLayerViewUpdate(this.layerView);let t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[]}catch(e){l.getLogger(this).warn(`error while building legend for layer!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async buildLegendElementsForTools(){this._loading=!0;let e=this.layer;if(qe(e))await this._constructLegendElementsForVoxelLayer();else if(Ye(e))this._constructLegendElementsForWMTSlayer();else if(Je(e))await this._constructLegendElementsForWMSSublayers();else if(Ke(e))await this._constructLegendElementsForBuildingSceneLayer();else if(q(e)||Xe(e)||K(e))await this._constructLegendElementsForSublayers();else{this.removeHandles(`imageryLayers-watcher`);let t=`default`;if(J(e)){let n=e?.rasterFunction?.functionName||`default`,r=e.bandIds?.length?e.bandIds.join(``):`###`;t=n+`_`+r}if(Y(e)||e.type===`link-chart`)return;await this._getLegendLayers(`${e.uid}-${t}`).then(async t=>{this.legendElements=[];let n=t.map(async t=>{if(J(e)){let t=p(()=>[e.rasterFunction,e.bandIds],()=>d(async()=>{X.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()})());this.addHandles(t,`imageryLayers-watcher`)}let n=this._generateSymbolTableElementForLegendLayer(t);n?.infos.length&&(J(e)&&(n.title=e.title),this.legendElements.push(n))});await Promise.allSettled(n)}).catch(e=>{l.getLogger(this).warn(`Request to server for legend has failed!`,e)})}this._loading=!1,this.notifyChange(`ready`)}async _isLayerInCurrentView(e){return this._checkFeatureCountForExpression(e,this.view.extent)}_getParentLayerOpacity(e){let t=1,n=e.parent;return n&&`uid`in n&&(t=this._getParentLayerOpacity(n)),e.opacity*t}_isGroupActive(){return this.children.some(e=>e.ready)}_isRendererScaleDriven(e){if(e.type===`dot-density`)return!0;let t=`valueExpression`in e?e.valueExpression:null;return M.test(t)||(`visualVariables`in e?e.visualVariables:null)?.some(e=>this._isScaleDrivenSizeVariable(e))?!0:this._hasScaleDrivenSymbols(e)}_hasScaleDrivenSymbols(e){switch(e.type){case`simple`:return this._isScaleDrivenSymbol(e.symbol);case`class-breaks`:return this._isScaleDrivenSymbol(e.defaultSymbol)||e.classBreakInfos.some(e=>this._isScaleDrivenSymbol(e.symbol));case`unique-value`:return this._isScaleDrivenSymbol(e.defaultSymbol)||!!e.uniqueValueInfos?.some(e=>this._isScaleDrivenSymbol(e.symbol))}return!1}_isScaleDrivenSymbol(e){if(e?.type===`cim`){let{primitiveOverrides:t,minScale:n,maxScale:r}=e.data,i=t?.some(e=>(e.valueExpressionInfo?.expression||``).includes(`$view.scale`))??!1;return n!=null||r!=null||i}return!1}_isScaleDrivenSizeVariable(e){if(e&&e.type!==`size`)return!1;let t=e,n=t.minSize,r=t.maxSize;return typeof n==`object`&&n&&this._isScaleDrivenSizeVariable(n)||typeof r==`object`&&r&&this._isScaleDrivenSizeVariable(r)?!0:M.test(t.valueExpression)}_isLayerScaleDriven(e){if(`minScale`in e&&e.minScale>0||`maxScale`in e&&e.maxScale>0)return!0;if(`sublayers`in e&&e.sublayers)return e.sublayers.some(e=>this._isLayerScaleDriven(e));let t=e.parent;if(e.loaded===!1&&t&&q(t)&&`source`in e&&e.source&&e.source.type===`map-layer`){for(let n of t.sourceJSON.layers??[])if(n.id===e.source.mapLayerId&&(n.minScale>0||n.maxScale>0))return!0}return!1}async _constructLegendElementsForVoxelLayer(){this._loading=!0,this.legendElements=[],this.removeHandles(`voxel-style-watcher`),this.removeHandles(`voxel-current-variable`);let e=this.layer;this.addHandles(p(()=>e.currentVariableId,()=>this._constructLegendElementsForVoxelLayer()),`voxel-current-variable`),this.addHandles(p(()=>e.getVariableStyles(),()=>this._constructLegendElementsForVoxelLayer()),`voxel-style-watcher`);let t=e.getVariableStyle(null),n=[];if(t){if(t.uniqueValues?.length){let e=[];t.uniqueValues.forEach(t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new O({color:t.color,outline:null})})}),e.length&&n.push({type:`symbol-table`,title:t.label,infos:e})}else if(t.transferFunction){let{colorStops:e,stretchRange:r}=t.transferFunction,i=e.toArray().reverse(),a=r.map((e,t)=>`${t===0?be:xe} ${Re(e)}`).reverse(),o=i.map(e=>({color:e.color,value:null,label:null}));o[0].label=a[0],o[o.length-1].label=a[1],n.push({type:`color-ramp`,title:t.label,infos:o,preview:A(i.map(e=>e.color))})}}await this._generatePreviewsForLegendElements(n,{opacity:e.opacity}),this.legendElements=n,this._loading=!1,this.notifyChange(`ready`)}_constructLegendElementsForWMTSlayer(){this._loading=!0,this.legendElements=[],this.removeHandles(`wmts-activeLayer-watcher`);let e=this.layer.activeLayer;this.addHandles(p(()=>{let{layer:e}=this;return e&&`activeLayer`in e&&e.activeLayer},()=>this._constructLegendElementsForWMTSlayer()),`wmts-activeLayer-watcher`);let t=e.styleId?e.styles?.find(({id:t})=>t===e.styleId)?.legendUrl:void 0;t&&(this.legendElements=[{type:`symbol-table`,title:e.title,infos:[{src:t,opacity:this.opacity}]}]),this._loading=!1,this.notifyChange(`ready`)}async _constructLegendElementsForWMSSublayers(){this._loading=!0,this.legendElements=[],this.removeHandles(`wms-sublayers-watcher`);let e=this.layer,t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(p(()=>{let{layer:e}=this;return e&&`sublayers`in e&&e.sublayers},()=>this._constructLegendElementsForWMSSublayers()),`wms-sublayers-watcher`),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this._loading=!1,this.notifyChange(`ready`)}async _generateLegendElementsForWMSSublayers(e,t){let n=this.layer,r=[];this.addHandles(e.on(`change`,()=>this._constructLegendElementsForWMSSublayers()),`wms-sublayers-watcher`);let i=this.sublayerIds?.map(e=>n.findSublayerById(e))?.filter(a)??[],o=i.length?i:e.toArray();for(let e of o){let n=p(()=>[e.title,e.visible,e.legendEnabled],()=>this._constructLegendElementsForWMSSublayers());if(this.addHandles(n,`wms-sublayers-watcher`),!this.respectLayerVisibility||e.visible&&e.legendEnabled){let n=await this._generateSymbolTableElementForWMSSublayer(e,t);n?.infos.length&&r.unshift(n)}}return r}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){let n=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter(e=>e);return{type:`symbol-table`,title:e.title,infos:n}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let n=e.legendUrl;if(!n)return;let i={type:`symbol-table`,title:e.title||e.name||String(e.id??``),infos:[]};t&&(n=ee(n,t));let a=null,o=e.layer?.opacity;try{a=(await r(n,{responseType:`image`})).data,a&&(a.style.opacity=o)}catch{}return i.infos.push({src:n,preview:a,opacity:o}),i}_getLegendLayers(e,t){let n=X&&X[e];if(n)return Promise.resolve(n);let r=Z?.[e];if(r!=null)return r;let i=this._legendRequest(t).then(t=>{let n=t.layers;return X&&(X[e]=n),n}).finally(()=>{Z&&delete Z[e]});return Z[e]=i,i}_legendRequest(e){let t=this.layer,n={f:`json`,dynamicLayers:e};if(J(t)){let e=t.exportImageServiceParameters.rasterFunction;if(e&&(n.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(n.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){let{raster:e,viewId:r,customParameters:i}=t;n={raster:e,viewId:r,...n,...i}}}let i=t.url.replace(/(\/)+$/,``);if(`version`in t&&+t.version>=10.01){let e=i.indexOf(`?`);e>-1?i=i.slice(0,e)+`/legend`+i.slice(e):i+=`/legend`}else{let e=i.toLowerCase().indexOf(`/rest/`),t=e===-1?i:i.slice(0,e)+i.slice(e+5);i=`https://utility.arcgis.com/sharing/tools/legend?soapUrl=`+encodeURI(t)+`&returnbytes=true`}return r(i,{query:n}).then(e=>e.data)}async _constructLegendElementsForBuildingSceneLayer(){this._loading=!0,this.legendElements=[],this.removeHandles(`sublayers-watcher`);let e=this.layer;this.addHandles(p(()=>e.sublayers,()=>this._constructLegendElementsForBuildingSceneLayer()),`sublayers-watcher`);try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity)}catch(e){l.getLogger(this).warn(`Request to server for legend has failed!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async _generateLegendElementsForBuildingSublayers(e,t){let n=[];this.addHandles(e.on(`change`,()=>this._constructLegendElementsForBuildingSceneLayer()),`sublayers-watcher`);let r=e.toArray();for(let e of r){let r=p(()=>[`renderer`in e&&e.renderer,e.opacity,e.title,e.visible],()=>this._constructLegendElementsForBuildingSceneLayer());if(this.addHandles(r,`sublayers-watcher`),!this.respectLayerVisibility||e.visible){let r=e?.opacity==null?null:e.opacity,i=r==null?t:r*t;if(e.type===`building-group`){let t={type:`symbol-table`,title:e.title,infos:[]},r=await this._generateLegendElementsForBuildingSublayers(e.sublayers,i);t.infos.push(...r),n=[t,...n]}else e.renderer&&(n=[...await this._getRendererLegendElements(e.renderer,{title:e.title,opacity:i,sublayer:e}),...n])}}return n.filter(e=>!!e&&(`infos`in e&&e.infos?e.infos.length>0:!0))}async _constructLegendElementsForSublayers(){this._loading=!0,this.removeHandles(`sublayers-watcher`);let e=this.layer;if(!(q(e)||Xe(e)||K(e))||this.hideLayersNotInCurrentView&&!await this._isLayerInCurrentView()){this.legendElements=[],this._loading=!1,this.notifyChange(`ready`);return}this.addHandles(p(()=>e.sublayers,()=>this._constructLegendElementsForSublayers),`sublayers-watcher`);try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity)}catch(e){l.getLogger(this).warn(`Request to server for legend has failed!`,e)}finally{this._loading=!1,this.notifyChange(`ready`)}}async _generateLegendElementsForSublayers(e,t,n){let r=this.layer,i=[];this.addHandles(e.on(`change`,()=>this._constructLegendElementsForSublayers()),`sublayers-watcher`);let o=e.toArray();!n&&this.sublayerIds&&this.sublayerIds.length&&(o=K(r)?this.sublayerIds.map(e=>r.findSublayerForSubtypeCode(e)).filter(a):this.sublayerIds.map(e=>r.findSublayerById(e)).filter(a));for(let e of o){let r=p(()=>[e.renderer,e.opacity,e.title,e.visible,e.legendEnabled],()=>this._constructLegendElementsForSublayers());this.addHandles(r,`sublayers-watcher`);let a=e.createQuery().where,o=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView(a),s=!this.respectLayerVisibility||e.visible&&e.legendEnabled&&this._isSublayerInScale(e);if(o&&s){let r=e?.opacity==null?null:e.opacity,a=r==null?t:r*t,o=!tt(e)||e.originIdOf(`renderer`)>2&&!e.sublayers;if(e.renderer&&o)await e.load(),i=[...await this._getRendererLegendElements(e.renderer,{title:e.title,opacity:a,sublayer:e}),...i];else if(tt(e)){let t=await this._generateSymbolTableElementForSublayer(e,a,n);t&&i.unshift(t)}}}return i.filter(e=>!!e&&(`infos`in e&&e.infos?e.infos.length>0:!0))}async _generateSymbolTableElementForSublayer(e,t,n){if(!n){n=new Map;let t=this.layer,r=e.source,i=!(!r||r.type===`map-layer`&&r.mapLayerId===e.id&&(!r.gdbVersion||r.gdbVersion===(`gdbVersion`in t&&t.gdbVersion)))||e.originIdOf(`renderer`)>2||e.originIdOf(`labelingInfo`)>2||e.originIdOf(`labelsVisible`)>2,a=null;if(i){let e=new ae({layer:this.layer});a=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}let o=a||`${t.uid}-default`;(await this._getLegendLayers(o,a)).forEach(e=>n.set(e.layerId,e))}let r=n.get(e.id);if((!r||r?.subLayerIds&&r.defaultVisibility)&&e.sublayers){let r=await this._generateLegendElementsForSublayers(e.sublayers,t,n);return{type:`symbol-table`,title:e.title,infos:r}}return this._generateSymbolTableElementForLegendLayer(r,e,t)}_generateSymbolTableElementForLegendLayer(e,t,n){if(!e?.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;let r=t?.renderer,i=t?.title||e.layerName;if(r&&(!t||t?.originIdOf(`renderer`)>2)){let e=t?.title||this._getRendererTitle(r,t);e&&(i&&typeof e!=`string`&&`title`in e&&(e.title=i),i=e)}let a={type:`symbol-table`,title:i,legendType:e.legendType||null,infos:[]},o=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach(r=>{let i={type:`symbol-table`,title:r.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(o.filter(e=>e.groupId===r.id),e.layerId,r.heading||a.title||t?.title,n)};i.infos?.length>0&&a.infos.push(i)}):a.infos=this._generateSymbolTableElementInfosForLegendLayer(o,e.layerId,a.title||t?.title,n),a.infos.length>0?a:null}_generateSymbolTableElementInfosForLegendLayer(e,t,r,i){return e.map(e=>{let a=e.url;if(e.imageData&&e.imageData.length>0)a=`data:image/png;base64,${e.imageData}`;else if(!a.startsWith(`http`))a=n(`${this.layer.url}/${t}/images/${a}`);else return null;let o=e.label;return{previewAriaLabel:o||r,label:o,src:a,opacity:i??this.opacity,width:e.width,height:e.height}}).filter(a)}_isSublayerInScale(e){let t=e.minScale||0,n=e.maxScale||0;return!(t>0&&t<this.scale||n>this.scale)}_isLegendLayerInScale(e,t){let n=t||this.layer,r=null,i=null,a=!0;return!n.minScale&&n.minScale!==0||!n.maxScale&&n.maxScale!==0?(e.minScale===0&&n.tileInfo&&(r=n.tileInfo.lods[0].scale),e.maxScale===0&&n.tileInfo&&(i=n.tileInfo.lods[n.tileInfo.lods.length-1].scale)):(r=Math.min(n.minScale,e.minScale)||n.minScale||e.minScale,i=Math.max(n.maxScale,e.maxScale)),(r>0&&r<this.scale||i>this.scale)&&(a=!1),a}_sanitizeLegendForSublayer(e,t){if(`version`in this.layer&&+this.layer.version<10.1||e.length===0)return e;let n=t.renderer,r=e.some(e=>e.values),i=0,a=null;return r&&e.some((e,t)=>(e.values||(i=t,a=e,a.label||(a.label=`others`)),a!=null)),n?n.type===`unique-value`?a&&(e.splice(i,1),e.push(a)):n.type===`class-breaks`&&(a&&e.splice(i,1),n.legendOptions?.order||e.reverse(),a&&e.push(a)):a&&(e.splice(i,1),e.push(a)),e}async _getRendererLegendElements(e,t={}){if(!Ge(e,this.view))return l.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(Ve(e))return this._constructPointCloudRendererLegendElements(e,t);if(Ue(e))return this._constructDotDensityRendererLegendElements(e);let n=await this._loadRenderer(e);return We(n)?this._constructPieChartRendererLegendElements(n):this._constructRendererLegendElements(n,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return e.type===`binning`?t=e.renderer:e.type===`cluster`&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t,{isFeatureReductionRenderer:!0}):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??``}async _constructPointCloudRendererLegendElements(e,t={}){let n=t.title,r=[],i=null,a=null;if(U(e))i={type:`symbol-table`,title:n||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach(e=>{i.infos.unshift({label:e.label||e.minValue+` - `+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(N,e.color)})});else if(W(e)){let t=e.stops,r=null;if(t?.length&&(t.length===1&&(r=t[0].color),!r)){let e=t[0].value,n=t[t.length-1].value;if(e!=null&&n!=null){let i=e+(n-e)/2;r=de(i,t)}}i={type:`symbol-table`,title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(N,r||N.color)}]};let o=fe(e.stops??[])??[];a={type:`color-ramp`,title:n||this._getPointCloudRendererTitle(e),infos:o,preview:A(o.map(e=>e.color))}}else G(e)&&(i={type:`symbol-table`,title:n||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach(e=>{i.infos.push({label:e.label||e.values.join(`, `),value:e.values.join(`, `),symbol:this._getAppliedCloneSymbol(N,e.color)})}));return i?.infos.length&&r.push(i),a?.infos.length&&r.push(a),await this._generatePreviewsForLegendElements(r,{opacity:this.opacity,symbolConfig:{applyColorModulation:!!e.colorModulation}}),r}async _getElementInfoForDotDensity(e,t){let{color:n,label:r,valueExpressionTitle:i}=t,{backgroundColor:a,outline:o,dotSize:s}=e,c=this.cssEffectFilter,l=s+`-`+n+`-`+a+`-`+(o&&JSON.stringify(o.toJSON()))+`-`+c,u=this._dotDensityUrlCache,d=u.has(l)?u.get(l):Ne(e,n);u.set(l,d);let f={shape:{type:`image`,x:0,y:0,width:d.width,height:d.height,src:d.src},fill:null,stroke:null,offset:[0,0]},p=Me([[f]],[d.width,d.height],{cssEffectFilter:this.cssEffectFilter});return{opacity:1,src:d.src,preview:p,width:d.width,height:d.height,previewAriaLabel:r||i}}async _constructDotDensityRendererLegendElements(e){let t=e.calculateDotValue(this.view.scale),n=e.legendOptions?.unit,r={type:`symbol-table`,title:{value:t&&Math.round(t),unit:n||``},infos:[]};for(let t of e.attributes){let n=await this._getElementInfoForDotDensity(e,t);n.label=t.label||t.valueExpressionTitle||t.field,r.infos.push(n)}return[r]}async _constructPieChartRendererLegendElements(e){let t=[],n=null,r=e.outline;e.attributes.forEach(e=>{let n=new k({color:e.color,outline:r}),i=e.label||e.valueExpressionTitle||e.field;t.push({label:i,symbol:n})});let i=t.length?[...t]:[];if(e.othersCategory?.color&&e.othersCategory?.threshold!==0){let i=new k({color:e.othersCategory.color,outline:r});n=e.othersCategory.label||`Other`,t.push({label:n,symbol:i})}if(e.defaultColor?.a){let n=new k({color:e.defaultColor,outline:r});t.push({label:e.defaultLabel,symbol:n})}let a=await this._getVisualVariableLegendElements(e,this.layer)||[];if(t.length){a.unshift({type:`symbol-table`,title:null,infos:t});let o=i.filter(e=>e.label!==n).map(e=>e.symbol.color).filter(Boolean),s=Pe(o,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,cssEffectFilter:this.cssEffectFilter,outline:r});a.unshift({type:`pie-chart-ramp`,title:this._getRendererTitle(e,this.layer),infos:t,preview:s})}return await this._generatePreviewsForLegendElements(a,{opacity:this.layer.opacity,cssEffectFilter:this.cssEffectFilter}),a}async _getWhereClause(e,t,n){let r=await _(e,n),i=new Set,{field:a,field2:o,field3:s}=t;oe(i,n,[a,o,s]),await se(i,n,null,t.valueExpression);let c=new Set(Array.from(i,e=>e.toLowerCase()));return(r?.fieldNames.map(e=>e.toLowerCase()))?.some(e=>!c.has(e))?null:r}async _processDefinitionExpression(e,t){if(!(`definitionExpression`in e))return;let n=e.definitionExpression;n&&this.respectLayerDefinitionExpression?this._layerDefinitionExpression!==n&&(this._layerDefinitionExpressionClause=await this._getWhereClause(n,t,e.fieldsIndex)):this._layerDefinitionExpressionClause=null,this._layerDefinitionExpression=n}async _processDisplayFilter(e,t){if(!(`displayFilterInfo`in e))return;let n=e.displayFilterInfo?ie(e.displayFilterInfo,this.view):null;return n?.where?this._layerDisplayFilter?.id!==n?.id&&(this._layerDisplayFilterClause=await this._getWhereClause(n.where,t,e.fieldsIndex)):this._layerDisplayFilterClause=null,this._layerDisplayFilter=n,n}async _constructRendererLegendElements(e,t={}){let{title:n,sublayer:r,isFeatureReductionRenderer:i}=t,a=r||this.layer,o=C(e,`reference-size`),s=C(e,`spike`),c=i&&`renderer`in a&&a.renderer?a.renderer:e,l=null;V(c)&&(await this._processDefinitionExpression(a,c),l=await this._processDisplayFilter(a,c)),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;let u=await this._getVisualVariableLegendElements(e,a)||[],d={type:`symbol-table`,title:n||this._getRendererTitle(e,a),infos:[]},f=null,p=!1,m=new Set;if(P(e)&&!this._hasSizeRamp){let t=await Se(e);d.infos.push({label:null,symbol:t})}else if($e(e)){let t=n,r=et(e)?`univariate-above-and-below-ramp`:`univariate-color-size-ramp`,i=u.findIndex(e=>e.type===`color-ramp`),a=i===-1?null:u.splice(i,1)[0],o=u.findIndex(e=>e.type===`size-ramp`),s=o===-1?null:u.splice(o,1)[0],c=[];a&&(t=a.title,c.push(a)),s&&(t=s.title,c.push(s)),c.length>0&&u.push({type:r,title:t,infos:c})}else if(H(e)){let t=me(e);u.push({type:`heatmap-ramp`,title:n||this._getRendererTitle(e,a),infos:t,preview:A(t.map(e=>e.color),{cssEffectFilter:this.cssEffectFilter})})}else if(V(e)){let t=e.authoringInfo;if(t?.type===`relationship`){let{numClasses:n,field1:r,field2:i}=t,o=t.focus;if(n&&r&&i){let t=[r,i],s=ge(o)||0;for(let e of t){let{field:t,normalizationField:n,label:r}=e,i=r||{field:this._getFieldAlias(t,a),normField:n&&this._getFieldAlias(n,a)},o=it.clone();o.angle=s,d.infos.push({label:i,symbol:o}),m.add(o),s+=90}let c=he({focus:o,numClasses:n,infos:e.uniqueValueInfos??[]});u.unshift(c)}}else if(J(this.layer)||Y(this.layer)){let{uniqueValueInfos:t}=e;if(t)for(let e of t)e.symbol&&await this._checkClausesForUVR(c,e.value,a)&&d.infos.push({label:e.label||e.value,value:e.value,symbol:e.symbol})}else{let{field:t,field2:r,field3:i,fieldDelimiter:s,valueExpression:u,defaultSymbol:f}=e,m=!(!t&&!u||!r&&!i),h=l?.title?.trim(),g=[],{uniqueValueGroups:_}=e;if(_)for(let e of _){let n={type:`symbol-table`,title:e.heading,infos:[]},{classes:l}=e;if(l)for(let e of l){let{symbol:l,values:d}=e;if(l){let f=[],p=[];for(let e of d??[]){let{value:n,value2:o,value3:c}=e,l=[],d=[];(t||u)&&(l.push(n),d.push(this._getDomainName(t,n,a)??w(n,T(a,t,this.view.timeZone)))),r&&(l.push(o),d.push(this._getDomainName(r,o,a)??w(o,T(a,r,this.view.timeZone)))),i&&(l.push(c),d.push(this._getDomainName(i,c,a)??w(c,T(a,i,this.view.timeZone)))),f.push(m?l.join(s||``):l[0]),p.push(d.join(` - `))}let h=f.join(`, `),g=e.label;if(!g){let e=p.filter(Boolean);g=e.length?e.join(`, `):h}let _=D(e,this.view.scale)??l;_.type===`cim`&&o&&(_=_.clone(),Ae(_,{innerDotSize:8,outerRingSize:16}));let v=!1;for(let e of f)if(v=await this._checkClausesForUVR(c,e,a),v)break;v&&n.infos.push({label:g,value:h,symbol:_})}}n.infos.length&&g.push(n)}if(g.length){let t=g[0];if(g.length===1&&`title`in t&&!t.title){let e=t.infos?.filter(nt)??[];d.infos.push(...e)}else f&&(g.push({type:`symbol-table`,infos:[{label:e.defaultLabel||`others`,symbol:f}]}),p=!0),d.infos.push(...g);!n&&!e.legendOptions?.title&&!e.valueExpressionTitle?d.title=h:h&&(d.title=`${d.title} (${h})`)}}e.defaultSymbol&&!p&&(d.infos.push({label:e.defaultLabel||`others`,symbol:e.defaultSymbol}),p=!0)}else if(B(e)){if(!o&&!s){if(f=this._isUnclassedRenderer(e),!f||!this._hasSizeRamp){let t=e.classBreakInfos.filter(({symbol:e})=>e),n=e.legendOptions?.order===`ascending-values`;for(let e of t){let{label:t,minValue:r,maxValue:i}=e,o=D(e,this.view.scale)??e.symbol,s=t||(f?null:`${r} - ${i}`),c={previewAriaLabel:s||d.title||a.title,label:s,value:[r,i],symbol:o};n?d.infos.push(c):d.infos.unshift(c)}f&&(d.title=null),this._updateInfosForClassedSizeRenderer(e,d.infos)}e.defaultSymbol&&!f&&(d.infos.push({label:e.defaultLabel||`others`,symbol:e.defaultSymbol}),p=!0)}}else if(L(e)){if(Y(this.layer)||Ze(this.layer)){let t=await this._constructTileImageryStretchRendererElements(e);Qe(t)?u.push(t):d.infos=t}else{let t=this.layer,n,r;e.customStatistics?.length&&({min:n,max:r}=e.customStatistics[0]);let i=[],a=t.serviceRasterInfo;if(t.rasterFunction)try{a=await t.generateRasterInfo(t.rasterFunction)}catch{}let o=re(a.pixelType);if(a.bandCount===1){let i=t.bandIds?.[0]||0;n??=a.statistics?a.statistics[i].min:o[0],r??=a.statistics?a.statistics[i].max:o[1],n||r?u.push(await this._getStretchLegendElements(e,{min:n,max:r})):this._getServerSideLegend()}else if(t.bandIds?.length===1)n??=a.statistics?a.statistics[t.bandIds[0]].min:o[0],r??=a.statistics?a.statistics[t.bandIds[0]].max:o[1],n||r?u.push(await this._getStretchLegendElements(e,{min:n,max:r})):this._getServerSideLegend();else if(a.bandCount>=3){let{bandInfos:e}=a,{bandIds:n}=t;e.length>=a.bandCount?n?.length===3?(i=n.map(t=>e[t].name),d.infos=this._createSymbolTableElementMultiBand(i)):t.format===`lerc`?(i=[0,1,2].map(t=>e[t].name),d.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend():t.format===`lerc`?(i=[`band1`,`band2`,`band3`],d.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend()}else this._getServerSideLegend()}}else if(I(e))e.colormapInfos.forEach(e=>{d.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(Be,e.color)})});else if(z(e)){let n=e.symbol;switch(t.geometryType){case`point`:n=`pointSymbol`in a?a.pointSymbol:null;break;case`polyline`:n=`lineSymbol`in a?a.lineSymbol:null;break;case`polygon`:n=`polygonSymbol`in a?a.polygonSymbol:null}let r=this._clusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&r&&d.infos.push({previewAriaLabel:e.label||d.title||a.title,label:e.label,symbol:n})}else if(F(e)){e.outputUnit&&(this.title=`(`+e.toJSON().outputUnit+`)`),d.title=e.attributeField;let t=e.getClassBreakInfos();t?.length?t.forEach(e=>{d.infos.push({label:e.minValue+` - `+e.maxValue,symbol:e.symbol})}):d.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else R(e)&&u.push(await this._getStretchLegendElements(e,{min:0,max:255}));let h=e.defaultSymbol;h&&!p&&!z(e)&&(!f||this._hasColorRamp||this._hasSizeRamp||this._hasOpacityRamp)&&u.push({type:`symbol-table`,infos:[{label:e.defaultLabel||`others`,symbol:h}]}),d.infos.length&&u.unshift(d);let g=t.opacity==null?this.opacity:t.opacity,_=this._isTallSymbol(`visualVariables`in e?e.visualVariables:null),v=J(this.layer)||Y(this.layer);return await this._generatePreviewsForLegendElements(u,{opacity:g,symbolConfig:{isTall:_,isSquareFill:v},cssEffectFilter:this.cssEffectFilter},{arrowMarkerSymbols:m}),e=null,u}async _waitForLayerViewUpdate(e){await h(()=>!e.updating)}async _checkFeatureCountForExpression(e,t){let n=this.layerView;if(!(n&&`createQuery`in n&&`queryFeatureCount`in n))return!0;try{await this._waitForLayerViewUpdate(n);let r=n.createQuery();return e&&(r.where=Ce(r.where,e)),t&&(r.geometry=t),await n.queryFeatureCount(r)>0}catch{return!0}}_getUVRFeatureCountExpression(e,t){return Object.entries(e).map(([e,n])=>{let r=`getField`in t&&t.getField?t.getField(e):null,i=v(e);if(n==null)return`${i} IS NULL`;try{return`${i} = ${y(n,null,r?{type:r.type}:null)}`}catch{return`${i} = ${y(n)}`}}).join(` AND `)}async _checkClausesForUVR(e,t,n){let r=rt(e,t);if(!r)return!0;let i=!!(!this._layerDefinitionExpressionClause&&this._layerDefinitionExpression&&this.respectLayerDefinitionExpression||!this._layerDisplayFilterClause&&this._layerDisplayFilter?.where),a=this._getUVRFeatureCountExpression(r,n);return(i&&a?await this._checkFeatureCountForExpression(a):!0)&&(this._layerDefinitionExpressionClause?.testFeature(r)??!0)&&(this._layerDisplayFilterClause?.testFeature(r)??!0)}_getServerSideLegend(){setTimeout(()=>this.buildLegendElementsForTools(),0)}_getAllInfos(e){let t=e?.infos;return t?t.reduce((e,t)=>e.concat(this._getAllInfos(t)),[]):[e]}async _constructTileImageryStretchRendererElements(e){let t=this.layer,n=t.symbolizer.rasterInfo??t.raster.rasterInfo,r,i,a=e?.customStatistics?.length?e.customStatistics:n?.statistics;if(a)({min:r,max:i}=a[0]);else{let e=re(n.pixelType);r=e[0],i=e[1]}if(t.hasStandardTime()&&(r=t.getStandardTimeValue(r),i=t.getStandardTimeValue(i)),n.bandCount===1||t.bandIds?.length===1)return this._getStretchLegendElements(e,{min:r,max:i});let o=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(n.bandCount,3)).keys())).map(e=>n.bandInfos[e].name);return o.length<3?o.push(o[1]):o.length>3&&o.splice(3),this._createSymbolTableElementMultiBand(o)}async _getStretchLegendElements(e,t){let n=e.colorRamp?.toJSON(),r=pe(n,t);return{type:`stretch-ramp`,title:``,infos:r,preview:A(r.map(e=>e.color))}}_getClusterSymbol(){let e=this.layer,t=`featureReduction`in e&&e.featureReduction,n=t&&`symbol`in t&&t.renderer;return(!n||n?.authoringInfo?.isAutoGenerated===!0)&&t&&`symbol`in t?t.symbol:null}async _getSizeLegendElement(e,t,n,r){return{type:`size-ramp`,title:this._clusterSizeVariable?this._getClusterTitle(t):e,infos:await _e(n,t,await E(n),this.scale,this.view,r,this._clusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){let t=[],n=[`red`,`green`,`blue`];return e.forEach((e,r)=>{t.push({label:{colorName:n[r],bandName:e},src:we[r],opacity:this.opacity??1})}),t}_updateInfosForClassedSizeRenderer(e,t){let n=e.authoringInfo?.type===`class-breaks-size`,r=e.classBreakInfos.some(e=>Le(e.symbol));if(n&&r){let n=ve,r=ye,i=e.classBreakInfos.length,a=(n-r)/(i>1?i-1:i);t.forEach((e,t)=>{e.size=n-a*t})}}_isTallSymbol(e){let t=!1,n=!1;if(e)for(let r=0;r<e.length&&!(t&&n);r++){let i=e[r];i.type===`size`&&(i.axis===`height`&&(t=!0),i.axis===`width-and-depth`&&(n=!0))}return t&&n}async _generatePreviewsForLegendElements(e,t,n){let r=[];for(let i of e)for(let e of i.infos??[])if(`infos`in e&&e.infos&&r.push(this._generatePreviewsForLegendElements([e],t,n)),nt(e)&&e.symbol&&!e.preview){let a=!0;if(e.symbol.type===`cim`){let{minScale:t,maxScale:n}=e.symbol.data;(t&&t<this.scale||n&&n>this.scale)&&(a=!1)}a&&r.push(this._generateSymbolPreviewForInfo(e,{...t,clipBloomEffect:`theme`in i&&i.theme===`spike`,cssEffectFilter:n?.arrowMarkerSymbols?.has(e.symbol)?null:t.cssEffectFilter},n?{applyScaleDrivenSize:!n.arrowMarkerSymbols?.has(e.symbol)}:void 0))}await Promise.all(r)}async _getSize(e,t){let n=e.size==null&&this._hasSizeRamp?g(22):e.size;if(this._scaleDrivenSizeVariable&&t?.applyScaleDrivenSize){let{getSize:t}=await import(`../renderers/visualVariables/support/visualVariableUtils.js`);n=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:e.symbol.type===`simple-marker`?e.symbol.style:null})}return n}_getPreviewCIMOptions(e){return{style:`legend`,cimOptions:{allowScalingUp:this._hasSizeRamp||!!(this._scaleDrivenSizeVariable&&e?.applyScaleDrivenSize),viewParams:this.isScaleDriven?{viewingMode:this.view?.type===`2d`?`map`:this.view?.viewingMode,scale:this.view?.scale}:null}}}async _generateSymbolPreviewForInfo(e,t={},n){let{symbol:r}=e;try{if(t.size=await this._getSize(e,n),t.scale=!1,r.type===`cim`){let e=this._getPreviewCIMOptions(n);t={...t,...e}}e.preview=await Fe(r,t)}catch{e.preview=null,l.getLogger(this).warn(`Generating symbol preview failed for symbol type: ${r?.type}`)}}_getClusterRenderer(e){this._clusterSizeVariable=null;let t=`renderer`in this.layer?this.layer.renderer:null,n=e.renderer?.clone()||t?.clone(),r=ue(e,this.layerView,this.view);if(r&&n!=null&&`visualVariables`in n&&!n.visualVariables?.some(e=>e.type===`size`&&e.target!==`outline`&&!M.test(e.valueExpression))){if(`clusterMinSize`in e&&`clusterMaxSize`in e){let{clusterMinSize:t,clusterMaxSize:n}=e;r.legendOptions=new ke({showLegend:t!==n})}n.visualVariables=(n.visualVariables||[]).concat([r]),this._clusterSizeVariable=r}return n}async _loadRenderer(e){if(Q.has(e))return Q.get(e);let t=[],n=e.clone(),r=await E(n);if(B(n)||V(n)){let e=(n.classBreakInfos||n.uniqueValueInfos).map(e=>this._fetchSymbol(e.symbol,r).then(t=>{e.symbol=t}).catch(()=>{e.symbol=null}));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(n.symbol||n.defaultSymbol,n.defaultSymbol?null:r).then(e=>{this._applySymbolToRenderer(n,e,z(n))}).catch(()=>{this._applySymbolToRenderer(n,null,z(n))})),await Promise.allSettled(t),Q.set(e,n),n}_applySymbolToRenderer(e,t,n){n?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw Error();if(e.type===`web-style`)try{let n=await e.fetchSymbol();return this._getAppliedCloneSymbol(n,t)}catch{throw l.getLogger(this).warn(`Fetching web-style failed!`),Error()}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,n){if(!e||!n)return e;let r=e.clone(),i=n&&n.toRgba();return r.type.includes(`3d`)?this._applyColorTo3dSymbol(r,i):r.type===`cim`?je(r,n):r.color&&=new t(i||r.color),r}_applyColorTo3dSymbol(e,n){n&&e.symbolLayers.forEach(e=>{e&&(e.material||={},e.material.color=new t(n))})}async _getVisualVariableLegendElements(e,t){if(!(`visualVariables`in e)||e.type===`vector-field`)return null;let n=e.visualVariables??[],r=[],i=[],o=[],s=C(e,`reference-size`)??C(e,`spike`),c,l=this._clusterSizeVariable;if(s?.sizeStops?.length===2&&(B(e)||V(e))){let[e,t]=s.sizeStops,n=l?l.minDataValue:e.value,r=l?l.maxDataValue:t.value;c=new Oe({field:s.field??void 0,normalizationField:s.normalizationField,minSize:u(e.size,10,100),maxSize:u(t.size,50,150),minDataValue:n,maxDataValue:r}),i.push(c)}for(let e of n)if(e.type===`color`)r.push(e);else if(e.type===`size`){if(e.field===`cluster_count`&&c)continue;i.push(e)}else e.type===`opacity`&&o.push(e);let d=[...r,...i,...o],f,p;if(r.length===0&&B(e)&&e.classBreakInfos&&e.classBreakInfos.length===1){let t=e.classBreakInfos[0];f=t&&t.symbol}r.length===0&&z(e)&&(f=e.symbol);let m=null;if(f){if(f.type.includes(`3d`)){let e=f.symbolLayers.at(0);e.type===`water`?e.color!=null&&(p=e.color):e.material?.color!=null&&(p=e.material.color)}else f.url||(p=f.color);m=j(f)}let h=this.cssEffectFilter;return(await Promise.all(d.map(async n=>{if(n.legendOptions?.showLegend!==!1){let r=P(e)?n.field:this._getRampTitle(n,t),i=null,a=Te(t,n,this.view.timeZone);if(n.type===`color`){let t=await S(n,null,a)??[],o=this._getColorRampInfosWithEmissiveColors(t,e,m);i={type:`color-ramp`,title:r,infos:o,preview:A(o.map(e=>e.color),{cssEffectFilter:h})},this._hasColorRamp||=t.length>0}else if(n.type===`size`&&n.target!==`outline`)M.test(n.valueExpression)?this._clusterSizeVariable||(this._scaleDrivenSizeVariable=n):(i=await this._getSizeLegendElement(r,n,e,a),c===n&&s?.theme===`spike`&&(i.theme=s.theme),this._hasSizeRamp||=!!(i.infos!=null&&i.infos.length));else if(n.type===`opacity`){let t=await S(n,p,a)??[],o=this._getColorRampPreviewColors(t,e,m);i={type:`opacity-ramp`,title:r,infos:t,preview:A(o,{cssEffectFilter:h})},this._hasOpacityRamp||=t.length>0}return i?.infos?i:null}}))).filter(a)}_getColorRampPreviewColors(e,t,n){return this._getColorRampInfosWithEmissiveColors(e,t,n).map(e=>e.color)}_getColorRampInfosWithEmissiveColors(e,t,n){return e.map(e=>{let r=B(t)?this._getStopEmissiveForColorRampInfo(e,t):n;return r===void 0?e:{...e,color:s(e.color,r)}})}_getStopEmissiveForColorRampInfo(e,t){if(!e.value)return;let n=t.getBreakIndexfromInfos(e.value),r=n===-1?null:t.classBreakInfos[n];return j(r?.symbol??t.defaultSymbol??null)}_getDomainName(e,t,n){if(e&&typeof e!=`function`){let r=`getField`in n&&n.getField?.(e),i=r&&`getFieldDomain`in n&&n.getFieldDomain?n.getFieldDomain(r.name):null;return i?.type===`coded-value`?i.getName(t):null}return null}_getClusterTitle(e){let t=this.layer,n=e.field;if(`featureReduction`in t&&t.featureReduction?.type===`cluster`){let e=t.featureReduction,r=`popupTemplate`in e&&e.popupTemplate,i=r&&r.fieldInfos;if(i){for(let e of i)if(e.fieldName===n)return n===`cluster_count`?e.label||{showCount:!0}:e.label}}return{showCount:!0}}_getRampTitle(e,t){let n=e.field,r=e.normalizationField,i=!1,a=!1,o=!1,s=null;n=typeof n==`function`?null:n,r=typeof r==`function`?null:r;let c=e.legendOptions?.title;if(c!=null)s=c;else if(e.valueExpressionTitle)s=e.valueExpressionTitle;else{if(`renderer`in t&&t.renderer&&`authoringInfo`in t.renderer&&t.renderer.authoringInfo?.visualVariables){let e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){let n=e[t];if(n.type===`color`){if(n.style===`ratio`){i=!0;break}if(n.style===`percent`){a=!0;break}if(n.style===`percent-of-total`){o=!0;break}}}}s={field:n&&this._getFieldAlias(n,t),normField:r&&this._getFieldAlias(r,t),ratio:i,ratioPercent:a,ratioPercentTotal:o}}return s}_getRendererTitle(e,t){let n=e;if(n.legendOptions?.title)return n.legendOptions.title;if(n.valueExpressionTitle)return n.valueExpressionTitle;let r=n.field,i=null,a=null;if(B(n)&&(i=n.normalizationField,a=n.normalizationType===`percent-of-total`),r=typeof r==`function`?null:r,i=typeof i==`function`?null:i,V(n)){let{field2:e,field3:i,fieldDelimiter:a}=n,o=r&&this._getFieldAlias(r,t);return e&&(o=`<${o}>${a}<${this._getFieldAlias(e,t)}>`,i&&(o=`${o}${a}<${this._getFieldAlias(i,t)}>`)),o}let o=null;return(r||i)&&(o={field:r&&this._getFieldAlias(r,t),normField:i&&this._getFieldAlias(i,t),normByPct:a}),o}_getFieldAlias(e,t){let n=le(t,{checkFeatureReduction:!0});if(n)return n.getFieldAlias(e)||e;let r=((`popupTemplate`in t?t.popupTemplate:null)?.fieldInfos)?.find(t=>e===t.fieldName),i=null;`getField`in t&&t.getField?i=t.getField(e):`fieldsIndex`in t&&t.fieldsIndex&&(i=t.fieldsIndex.get(e));let a=null,o=`featureReduction`in t&&t.featureReduction;o&&(r??=`popupTemplate`in o?o.popupTemplate?.fieldInfos?.find(t=>e?.toLowerCase()===t.fieldName?.toLowerCase()):void 0,`fields`in o&&o.fields&&(a=o.fields.find(t=>t.name?.toLowerCase()===e?.toLowerCase())));let s=r||i||a,c=null;return s&&(c=r?.label||i?.alias||a?.alias||`name`in s&&s.name||`fieldName`in s&&s.fieldName||null),c}_isUnclassedRenderer(e){let t=e.visualVariables,n=B(e)&&e.classBreakInfos&&e.classBreakInfos.length===1,r=!1;return n&&t&&(r=e.field?t.some(t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField)):!!t.length),r}};e([b()],$.prototype,`_loading`,void 0),e([b()],$.prototype,`children`,void 0),e([b({readOnly:!0})],$.prototype,`cssEffectFilter`,null),e([b({readOnly:!0})],$.prototype,`cssEffectView`,null),e([b()],$.prototype,`hideLayersNotInCurrentView`,void 0),e([b({readOnly:!0})],$.prototype,`isScaleDriven`,null),e([b()],$.prototype,`keepCacheOnDestroy`,void 0),e([b()],$.prototype,`layer`,void 0),e([b()],$.prototype,`layerView`,void 0),e([b()],$.prototype,`legendElements`,void 0),e([b({readOnly:!0})],$.prototype,`loading`,null),e([b({readOnly:!0})],$.prototype,`opacity`,null),e([b()],$.prototype,`parent`,void 0),e([b({readOnly:!0})],$.prototype,`ready`,null),e([b()],$.prototype,`respectLayerDefinitionExpression`,void 0),e([b()],$.prototype,`respectLayerVisibility`,void 0),e([b({readOnly:!0})],$.prototype,`scale`,void 0),e([b()],$.prototype,`sublayerIds`,void 0),e([b()],$.prototype,`title`,void 0),e([b({readOnly:!0,value:0})],$.prototype,`version`,null),e([b()],$.prototype,`view`,void 0),$=e([te(`esri.legend.ActiveLayerInfo`)],$);const at=$;export{at as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "5.2.2",
3
+ "version": "5.2.4",
4
4
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
5
5
  "keywords": [
6
6
  "ArcGIS",
@@ -20,7 +20,7 @@
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
22
  "@amcharts/amcharts5": "~5.20.8",
23
- "@arcgis/toolkit": "5.2.2",
23
+ "@arcgis/toolkit": "5.2.4",
24
24
  "@esri/arcgis-html-sanitizer": "~4.2.0",
25
25
  "@esri/calcite-components": "^5.2.1",
26
26
  "@vaadin/grid": "~25.3.2",
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isSome as e}from"../core/arrayUtils.js";import{clone as t}from"../core/lang.js";import{offsetDate as n}from"../core/timeUtils.js";import r from"../rest/support/StatisticDefinition.js";import i from"../time/TimeExtent.js";import{isWebMap as a}from"../webmap/utils.js";import{isWebScene as o}from"../webscene/utils.js";function s(e){return e.timeInfo!==void 0}async function c(t,n){if(!t.timeInfo||!t.timeInfo.startField&&!t.timeInfo.endField)return null;let{startField:a,endField:o}=t.timeInfo,s=t.createQuery();s.outStatistics=[],a&&s.outStatistics.push(new r({onStatisticField:a,outStatisticFieldName:`minStart`,statisticType:`min`}),new r({onStatisticField:a,outStatisticFieldName:`maxStart`,statisticType:`max`})),o&&s.outStatistics.push(new r({onStatisticField:o,outStatisticFieldName:`minEnd`,statisticType:`min`}),new r({onStatisticField:o,outStatisticFieldName:`maxEnd`,statisticType:`max`}));let{features:c}=await t.queryFeatures(s,{signal:n}),l=c.at(0),u=[l?.getAttribute(`minStart`),l?.getAttribute(`maxStart`),l?.getAttribute(`minEnd`),l?.getAttribute(`maxEnd`)].filter(e).map(e=>typeof e==`string`?Date.parse(e):e);if(!u.length)return null;let d=new Date(Math.min(...u)),f=new Date(Math.max(...u)),p=new i({start:d,end:f}),{visibilityTimeExtent:m}=t;return p?.intersection(m)??m}async function l(e,t){return e.widgets?.timeSlider?.fullTimeExtent??f(e.allLayers,t)}function u(e){let t=e.numThumbs??2,n=e.currentTimeExtent;if(n){let{start:e,end:r}=n;return e!=null&&r!=null&&e.getTime()===r.getTime()?`instant`:t===2?`time-window`:e==null||e.getTime()===0?`cumulative-from-start`:`cumulative-from-end`}return t===2?`time-window`:`cumulative-from-start`}function d(e){let{numStops:n,stopInterval:r,stops:i}=e;return i?{dates:t(i)}:r?{interval:r.clone()}:{count:n??5}}async function f(t,n){if(t.length===0)return i.allTime;await Promise.all(t.map(e=>e.load({signal:n})));let r=t.filter(s),a=t.filter(e=>!s(e)&&e.visibilityTimeExtent!=null);if(r.length===0&&a.length===0)return i.allTime;let o=[],l=[],u=[];for(let e of r)e.type===`feature`&&h(e)?o.push(e):(e.type===`feature`||e.type===`map-image`)&&e.timeInfo?.hasLiveData?l.push(e):u.push(e);let d=e=>e==null||e.isAllTime,f=[...u.map(e=>{let t=e.timeInfo?.fullTimeExtent,{visibilityTimeExtent:n}=e;return t?.intersection(n)??n}),...a.map(e=>e.visibilityTimeExtent)];if(f.some(d))return i.allTime;let p=l.map(async e=>{let t=(await e.fetchRecomputedExtents({signal:n}))?.timeExtent??e.timeInfo?.fullTimeExtent,{visibilityTimeExtent:r}=e;return t?.intersection(r)??r}),m=(await Promise.allSettled(p)).map(e=>e.status===`fulfilled`?e.value:null);if(m.some(d))return i.allTime;let g=o.map(e=>c(e,n)),_=(await Promise.allSettled(g)).filter(e=>e.status===`fulfilled`).map(e=>e.value),v=[...m,...f,..._].filter(e);return v.length===0?i.allTime:v.reduce((e,t)=>e.union(t))}function p(e,t){let n=e.currentTimeExtent;if(!n)return null;let{start:r,end:a}=n,o=r??a??null;switch(t){case`time-window`:return new i({start:r,end:a});case`cumulative-from-start`:return new i({start:null,end:o});case`cumulative-from-end`:return new i({start:o,end:null});case`instant`:return new i({start:o,end:o})}}async function m(e,t){if(!(a(e)||o(e)))return null;await e.load({signal:t});let n=e?.widgets?.timeSlider;if(!n)return null;let r=await l(e,t),{loop:i}=n,s=u(n);return{fullTimeExtent:r,loop:i,mode:s,playRate:n.stopDelay??2e3,stops:d(n),timeExtent:p(n,s)}}function h(e){if(!e.url)return!1;let t=e.timeInfo,n=e.getAtOrigin(`timeInfo`,`service`);return n?!(!t||t===n||(t.startField===n.startField||!t.startField&&!n.startField)&&(t.endField===n.endField||!t.endField&&!n.endField)):!!t}function g(e){if(!e)return e;let{start:t,end:r}=e;return new i({start:t==null?t:n(t,-t.getTimezoneOffset(),`minutes`),end:r==null?r:n(r,-r.getTimezoneOffset(),`minutes`)})}function _(e){if(!e)return e;let{start:t,end:r}=e;return new i({start:t==null?t:n(t,t.getTimezoneOffset(),`minutes`),end:r==null?r:n(r,r.getTimezoneOffset(),`minutes`)})}export{c as fetchTimeExtent,f as getTimeExtentFromLayers,m as getTimeSliderSettingsFromWebDocument,h as requireFetchTimeExtent,_ as toLocalTimeExtent,g as toUTCTimeExtent};
2
+ import{isSome as e}from"../core/arrayUtils.js";import{clone as t}from"../core/lang.js";import{offsetDate as n}from"../core/timeUtils.js";import r from"../rest/support/StatisticDefinition.js";import i from"../time/TimeExtent.js";import{isWebMap as a}from"../webmap/utils.js";import{isWebScene as o}from"../webscene/utils.js";function s(e){return e.timeInfo!==void 0}async function c(t,n){if(!t.timeInfo||!t.timeInfo.startField&&!t.timeInfo.endField)return null;let{startField:a,endField:o}=t.timeInfo,s=t.createQuery();s.outStatistics=[],a&&s.outStatistics.push(new r({onStatisticField:a,outStatisticFieldName:`minStart`,statisticType:`min`}),new r({onStatisticField:a,outStatisticFieldName:`maxStart`,statisticType:`max`})),o&&s.outStatistics.push(new r({onStatisticField:o,outStatisticFieldName:`minEnd`,statisticType:`min`}),new r({onStatisticField:o,outStatisticFieldName:`maxEnd`,statisticType:`max`}));let{features:c}=await t.queryFeatures(s,{signal:n}),l=c.at(0),u=[l?.getAttribute(`minStart`),l?.getAttribute(`maxStart`),l?.getAttribute(`minEnd`),l?.getAttribute(`maxEnd`)].filter(e).map(e=>typeof e==`string`?Date.parse(e):e);if(!u.length)return null;let d=new Date(Math.min(...u)),f=new Date(Math.max(...u)),p=new i({start:d,end:f}),{visibilityTimeExtent:m}=t;return p?.intersection(m)??m}async function l(e,t){return e.widgets?.timeSlider?.fullTimeExtent??f(e.allLayers,t)}function u(e){let t=e.numThumbs??2,n=e.currentTimeExtent;if(n){let{start:e,end:r}=n;return e!=null&&r!=null&&e.getTime()===r.getTime()?`instant`:t===2?`time-window`:e==null||e.getTime()===0?`cumulative-from-start`:`cumulative-from-end`}return t===2?`time-window`:`cumulative-from-start`}function d(e){let{numStops:n,stopInterval:r,stops:i}=e;return i?{dates:t(i)}:r?{interval:r.clone()}:{count:n??5}}async function f(t,n){if(t.length===0)return i.allTime;await Promise.all(t.map(e=>e.load({signal:n})));let r=t.filter(s),a=t.filter(e=>!s(e)&&e.visibilityTimeExtent!=null);if(r.length===0&&a.length===0)return i.allTime;let o=[],l=[],u=[];for(let e of r)(e.type===`feature`||e.type===`scene`)&&h(e)?o.push(e):(e.type===`feature`||e.type===`map-image`)&&e.timeInfo?.hasLiveData?l.push(e):u.push(e);let d=e=>e==null||e.isAllTime,f=[...u.map(e=>{let t=e.timeInfo?.fullTimeExtent,{visibilityTimeExtent:n}=e;return t?.intersection(n)??n}),...a.map(e=>e.visibilityTimeExtent)];if(f.some(d))return i.allTime;let p=l.map(async e=>{let t=(await e.fetchRecomputedExtents({signal:n}))?.timeExtent??e.timeInfo?.fullTimeExtent,{visibilityTimeExtent:r}=e;return t?.intersection(r)??r}),m=(await Promise.allSettled(p)).map(e=>e.status===`fulfilled`?e.value:null);if(m.some(d))return i.allTime;let g=o.map(e=>c(e,n)),_=(await Promise.allSettled(g)).filter(e=>e.status===`fulfilled`).map(e=>e.value),v=[...m,...f,..._].filter(e);return v.length===0?i.allTime:v.reduce((e,t)=>e.union(t))}function p(e,t){let n=e.currentTimeExtent;if(!n)return null;let{start:r,end:a}=n,o=r??a??null;switch(t){case`time-window`:return new i({start:r,end:a});case`cumulative-from-start`:return new i({start:null,end:o});case`cumulative-from-end`:return new i({start:o,end:null});case`instant`:return new i({start:o,end:o})}}async function m(e,t){if(!(a(e)||o(e)))return null;await e.load({signal:t});let n=e?.widgets?.timeSlider;if(!n)return null;let r=await l(e,t),{loop:i}=n,s=u(n);return{fullTimeExtent:r,loop:i,mode:s,playRate:n.stopDelay??2e3,stops:d(n),timeExtent:p(n,s)}}function h(e){if(!e.url)return!1;let t=e.timeInfo,n=e.getAtOrigin(`timeInfo`,`service`);return n?!(!t||t===n||(t.startField===n.startField||!t.startField&&!n.startField)&&(t.endField===n.endField||!t.endField&&!n.endField)):!!t}function g(e){if(!e)return e;let{start:t,end:r}=e;return new i({start:t==null?t:n(t,-t.getTimezoneOffset(),`minutes`),end:r==null?r:n(r,-r.getTimezoneOffset(),`minutes`)})}function _(e){if(!e)return e;let{start:t,end:r}=e;return new i({start:t==null?t:n(t,t.getTimezoneOffset(),`minutes`),end:r==null?r:n(r,r.getTimezoneOffset(),`minutes`)})}export{c as fetchTimeExtent,f as getTimeExtentFromLayers,m as getTimeSliderSettingsFromWebDocument,h as requireFetchTimeExtent,_ as toLocalTimeExtent,g as toUTCTimeExtent};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../core/has.js";import{estimateNumberMemory as e}from"../../../../core/memoryEstimations.js";import{List as t}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as r,DataType as i}from"../../../webgl/enums.js";function a(e,t){return e<<16|t&255}function o(e){return e&255}function s(e,t){return t?t.get(e.instanceId)??e.techniqueRef.symbologyPlane:e.techniqueRef.symbologyPlane}class c{constructor(e,t,n,r,i){this.instance=e,this.materialKey=t,this.target=n,this.start=r,this.count=i}get textureKey(){return o(this.materialKey)}get indexEnd(){return this.start+this.count}extend(e){this.count+=e}render(e){let t=this.instance.techniqueRef;this.target.bind(e.context),t.render(e,this)}getStencilReference(){return this.instance.stencilReferenceOverride??this.target.stencilRef}getAttributePrecisionPackFactors(){let e=this.instance.instanceId;return this.target.getMesh(e).getAttributePrecisionPackFactors()}draw(e,t){if(n(e)){this.drawCompute(e.context,t);return}this.drawGeometry(e.context,t)}drawCompute(e,t){let n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(e,t),o=this.start*Uint32Array.BYTES_PER_ELEMENT/3;e.bindVAO(a,t.locations),e.drawElements(r.POINTS,this.count/3,i.UNSIGNED_INT,o),e.bindVAO(null)}drawGeometry(e,t){let n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(e,t),o=this.start*Uint32Array.BYTES_PER_ELEMENT;e.bindVAO(a,t.locations),e.drawElements(r.TRIANGLES,this.count,i.UNSIGNED_INT,o),e.bindVAO(null)}}class l{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(e,t,n,r){let i=new l,o=n.getInstanceOrder();for(let s of e.values())for(let e of s.records){let s=n.getInstance(e.instanceId),c=a(s.instanceId,e.textureKey);i.addRecord(s,c,e.indexStart,e.indexCount,e.vertexStart,e.vertexCount,t,r,o)}return i}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?this._length*5*e:0}render(e,t){let{drawPhase:n}=e,r=!1;for(let i of this.infos()){let a=i.instance.techniqueRef;i.instance.drawPhase&n&&(t==null||a.type===t)&&(i.render(e),r=!0)}return r}addRecord(e,n,r,i,a,o,l,u,d){let f=r,p=i;if(p||=(f=a,o),!p)return;if(this._head==null){let r=new c(e,n,l,f,p);this._head=new t(r),this._tail=this._head,this._length++,this._minOrderedLength++;return}if(u===1)return this._insert(e,n,l,f,p,this._tail,null);let m=null,h=this._head,g=e.instanceId,_=s(e,d);if(u===2&&(_===2||_===3))return this._insert(e,n,l,f,p,this._tail,null);for(;h;){let t=h.data.instance,r=t.instanceId,i=s(t,d),a=m?.data.instance.instanceId;if(_<i||g===a&&g!==r)return this._insert(e,n,l,f,p,m,h);m=h,h=h.next}this._insert(e,n,l,f,p,m,null)}*infos(){if(this._head!=null)for(let e of this._head.values())yield e}_insert(e,n,r,i,a,o,s){if(o==null&&s==null){let o=new c(e,n,r,i,a);this._head=new t(o),this._tail=this._head,this._length++,this._minOrderedLength++;return}if(n!==this._tail.data.materialKey&&this._minOrderedLength++,this._materialKeys.add(n),o==null&&s!=null)return this._insertAtHead(e,n,r,i,a,s);if(o!=null&&s==null)return this._insertAtEnd(e,n,r,i,a,o);if(o!=null&&s!=null)return this._insertAtMiddle(e,n,r,i,a,o,s)}_insertAtHead(e,n,r,i,a,o){let s=i+a;if(n===o.data.materialKey&&r===o.data.target&&s===o.data.start)o.data.start=i,o.data.count+=a;else{let s=new c(e,n,r,i,a);this._head=new t(s),this._head.next=o,this._length++}}_insertAtEnd(e,n,r,i,a,o){if(o.data.materialKey===n&&o.data.indexEnd===i)o.data.count+=a;else{let s=new c(e,n,r,i,a);this._tail=new t(s),o.next=this._tail,this._length++}}_insertAtMiddle(e,n,r,i,a,o,s){let l=i+a;if(o.data.materialKey===n&&o.data.target===r&&o.data.indexEnd===i)o.data.count+=a,o.data.materialKey===s.data.materialKey&&o.data.target===s.data.target&&o.data.indexEnd===s.data.start&&(o.data.count+=s.data.count,o.next=s.next,this._length--);else if(n===s.data.materialKey&&r===s.data.target&&l===s.data.start)s.data.start=i,s.data.count+=a;else{let l=new c(e,n,r,i,a),u=new t(l);o.next=u,u.next=s,this._length++}}}export{l as DisplayList,c as DisplayListInfo};
2
+ import"../../../../core/has.js";import{estimateNumberMemory as e}from"../../../../core/memoryEstimations.js";import{List as t}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as r,DataType as i}from"../../../webgl/enums.js";function a(e,t){return e<<16|t&65535}function o(e){return e&65535}function s(e,t){return t?t.get(e.instanceId)??e.techniqueRef.symbologyPlane:e.techniqueRef.symbologyPlane}class c{constructor(e,t,n,r,i){this.instance=e,this.materialKey=t,this.target=n,this.start=r,this.count=i}get textureKey(){return o(this.materialKey)}get indexEnd(){return this.start+this.count}extend(e){this.count+=e}render(e){let t=this.instance.techniqueRef;this.target.bind(e.context),t.render(e,this)}getStencilReference(){return this.instance.stencilReferenceOverride??this.target.stencilRef}getAttributePrecisionPackFactors(){let e=this.instance.instanceId;return this.target.getMesh(e).getAttributePrecisionPackFactors()}draw(e,t){if(n(e)){this.drawCompute(e.context,t);return}this.drawGeometry(e.context,t)}drawCompute(e,t){let n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(e,t),o=this.start*Uint32Array.BYTES_PER_ELEMENT/3;e.bindVAO(a,t.locations),e.drawElements(r.POINTS,this.count/3,i.UNSIGNED_INT,o),e.bindVAO(null)}drawGeometry(e,t){let n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(e,t),o=this.start*Uint32Array.BYTES_PER_ELEMENT;e.bindVAO(a,t.locations),e.drawElements(r.TRIANGLES,this.count,i.UNSIGNED_INT,o),e.bindVAO(null)}}class l{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(e,t,n,r){let i=new l,o=n.getInstanceOrder();for(let s of e.values())for(let e of s.records){let s=n.getInstance(e.instanceId),c=a(s.instanceId,e.textureKey);i.addRecord(s,c,e.indexStart,e.indexCount,e.vertexStart,e.vertexCount,t,r,o)}return i}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?this._length*5*e:0}render(e,t){let{drawPhase:n}=e,r=!1;for(let i of this.infos()){let a=i.instance.techniqueRef;i.instance.drawPhase&n&&(t==null||a.type===t)&&(i.render(e),r=!0)}return r}addRecord(e,n,r,i,a,o,l,u,d){let f=r,p=i;if(p||=(f=a,o),!p)return;if(this._head==null){let r=new c(e,n,l,f,p);this._head=new t(r),this._tail=this._head,this._length++,this._minOrderedLength++;return}if(u===1)return this._insert(e,n,l,f,p,this._tail,null);let m=null,h=this._head,g=e.instanceId,_=s(e,d);if(u===2&&(_===2||_===3))return this._insert(e,n,l,f,p,this._tail,null);for(;h;){let t=h.data.instance,r=t.instanceId,i=s(t,d),a=m?.data.instance.instanceId;if(_<i||g===a&&g!==r)return this._insert(e,n,l,f,p,m,h);m=h,h=h.next}this._insert(e,n,l,f,p,m,null)}*infos(){if(this._head!=null)for(let e of this._head.values())yield e}_insert(e,n,r,i,a,o,s){if(o==null&&s==null){let o=new c(e,n,r,i,a);this._head=new t(o),this._tail=this._head,this._length++,this._minOrderedLength++;return}if(n!==this._tail.data.materialKey&&this._minOrderedLength++,this._materialKeys.add(n),o==null&&s!=null)return this._insertAtHead(e,n,r,i,a,s);if(o!=null&&s==null)return this._insertAtEnd(e,n,r,i,a,o);if(o!=null&&s!=null)return this._insertAtMiddle(e,n,r,i,a,o,s)}_insertAtHead(e,n,r,i,a,o){let s=i+a;if(n===o.data.materialKey&&r===o.data.target&&s===o.data.start)o.data.start=i,o.data.count+=a;else{let s=new c(e,n,r,i,a);this._head=new t(s),this._head.next=o,this._length++}}_insertAtEnd(e,n,r,i,a,o){if(o.data.materialKey===n&&o.data.indexEnd===i)o.data.count+=a;else{let s=new c(e,n,r,i,a);this._tail=new t(s),o.next=this._tail,this._length++}}_insertAtMiddle(e,n,r,i,a,o,s){let l=i+a;if(o.data.materialKey===n&&o.data.target===r&&o.data.indexEnd===i)o.data.count+=a,o.data.materialKey===s.data.materialKey&&o.data.target===s.data.target&&o.data.indexEnd===s.data.start&&(o.data.count+=s.data.count,o.next=s.next,this._length--);else if(n===s.data.materialKey&&r===s.data.target&&l===s.data.start)s.data.start=i,s.data.count+=a;else{let l=new c(e,n,r,i,a),u=new t(l);o.next=u,u.next=s,this._length++}}}export{l as DisplayList,c as DisplayListInfo};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../request.js";import{bidiText as t}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as n}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import r from"../../../../core/Logger.js";import{ignoreAbortErrors as i,throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as o}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as s}from"../../../../symbols/cim/richTextUtils.js";import{decorGlyphRect as c}from"./decorGlyphRect.js";import{sdfRadiusComplex as l,sdfBufferGlyphSDFCreator as u,sdfSizeComplex as d,sdfBufferServer as f,sdfRadiusSimple as p,sdfSizeSimple as m}from"./definitions.js";import{GlyphSDFCreator as h}from"./GlyphSDFCreator.js";import g from"./GlyphSource.js";import{hashMosaic as _}from"./hashMosaic.js";import v from"./Rect.js";import y from"./RectangleBinPack.js";const b=`arial-unicode-ms-regular`,x=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,S=new Set([`Noto Sans Khmer`,`Noto Sans Lao`,`Noto Sans Myanmar`,`Noto Sans Thai`]),C=()=>r.getLogger(`esri.views.MapView`),w=(e,t=``)=>C().warnOnce(e,t);class T{constructor(){this._glyphSources=new Map,this._snapCoords=!0,this._currentPage=0,this._faces=new Map,this._facePromises=new Map,this._pbfRangePromises=new Map,this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._invalidFonts=new Set,this._preloadCache={},this._glyphSDFCreator=new h({sdfSizePx:d,sdfBufferPx:u,radius:l,cutoff:.25})}set remoteClient(e){this._client=e.createInvokeProxy();let t=i(this._client.getOptions());this._inited=this._init(t)}async rasterizeText(e,t,n){await this._inited;let r=t.symbol?s(t):null;return r?{type:`rich-glyphs`,runs:(await Promise.all(r.map(async t=>({fontSize:t.fontSize,characterSpacing:t.characterSpacing,decoration:t.font.decoration,color:t.color,glyphs:await this._rasterizeTextRun(e,t.font,t.text,n)})))).filter(e=>e.glyphs!=null)}:this._rasterizeTextRun(e,t.font,t.textString,n)}async _rasterizeTextRun(e,t,r,i){let a=n(t),o=this._invalidFonts.has(a),s=!!has(`esri-2d-force-complex-shaping`),c=!!has(`esri-2d-complex-shaping`)&&x.test(r),l=S.has(t.family),u=s||c||l,d=o?b:a,f=await this.getGlyphItems(r,u,e,d,!1,i);return f||=(w(`Font ${a} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(a),await this.getGlyphItems(r,u,e,b,!1,i)),f}async getGlyphItems(e,n,r,i,a,o){await this._inited;let s=this._getSource(r),c=n?d:m,h=n?l:p,g=n?u:f,_,v,y;if(has(`esri-2d-stabilize-glyphs`)&&await this.preloadASCIIGlyphCache(s,i).catch(()=>{}),n){let t=await this._getFace(s,i);if(!t)return null;let n=this._glyphCache.get(i);n||(n=new Map,this._glyphCache.set(i,n));let{shaping:r,isRTL:a}=this._shape(t,e);y=a,_=r.map(e=>this._getShapedGlyph(t,n,e)),v={baseline:t.baseline()/c,midline:t.midline()/c}}else{let n=this._pbfGlyphCache.get(i);n||(n=new Map,this._pbfGlyphCache.set(i,n));let[r,c,l]=t(e),u=k(r);try{await this._fetchRanges(s,i,u,o)}catch{return null}y=c,_=u.map(e=>this._getPBFGlyph(n,s,i,e,a)).filter(e=>!!e)}let b=_.filter(e=>e.needsRecord);return b.length>0&&await this._client.recordGlyphs(b),{type:`glyphs`,glyphs:_,faceInfo:v,isRightToLeft:y,sdfSize:c,sdfRadius:h,sdfPadding:g}}async _init(e){let t=await e;if(!t)return;let{width:n,height:r,snapCoords:i}=t;this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._binPack=new y(n,r),this._snapCoords=i,this._currentPage=0,this._initDecorationGlyphs()}_getShapedGlyph(e,t,n){let r,i,a=t.get(n.glyphId);if(!a){r=this._glyphSDFCreator.draw(e,n.glyphId);let o=this._glyphSDFCreator.sdfBufferPx;a={mosaicItem:{rect:this._recordGlyph(r?.rect,o),page:this._currentPage,sdf:!0,textureBinding:_(1,this._currentPage,!0)},glyphRect:r?.rect??{width:0,height:0,top:0,left:0}},t.set(n.glyphId,a),i=!0}return{mosaicItem:a.mosaicItem,rect:a.glyphRect,shaping:{xAdvance:n.xAdvance,yAdvance:n.yAdvance,xOffset:n.xOffset,yOffset:n.yOffset},code:n.isNewline?10:n.isWhitespace?32:NaN,sdf:r,needsRecord:i}}_getPBFGlyph(e,t,n,r,i=!1){let a,o,s=e.get(r);if(!s){let c=t.getRange(n,r),l=c?.getRect(r),d=c?.getShaping(r),f=c?.getBitmap(r);if(i&&(!l||!d))return;if(!l||!d)return O(r);let p={rect:f?this._recordGlyph(l,u):new v(0,0,0,0),sdf:!0,page:this._currentPage,textureBinding:_(1,this._currentPage,!0)};a=f&&{buffer:f,rect:l},s={mosaicItem:p,rect:l,shaping:d,code:r},o=!0,e.set(r,s)}let{mosaicItem:c,rect:l,shaping:d}=s;return{mosaicItem:c,rect:l,shaping:d,code:r,sdf:a,needsRecord:o}}_shape(e,n){let r=this._glyphSDFCreator.sdfSizePx,[i,a,o]=t(n,!1),s=new Uint32Array(Array.from(i).map((e,t)=>o.levels[o.targetToSource[t]]));return{shaping:e.shape(i,s,r),isRTL:a}}async _getFace(t,n,r){if(this._faces.has(n))return this._faces.get(n);let i=t.woffURL(n);return await D(this._facePromises,n,async()=>{let t=await e(i,{responseType:`array-buffer`,...r}),a=(await o()).Face.parseWoff2(new Uint8Array(t.data));this._faces.set(n,a)}),this._faces.get(n)}_getSource(e){return this._glyphSources.has(e)||this._glyphSources.set(e,new g(e)),this._glyphSources.get(e)}async _fetchRanges(e,t,n,r){let i=E(n),a=[];i.forEach(n=>{a.push(this._fetchRange(e,t,n,r))}),await Promise.all(a)}async _fetchRange(e,t,n,r){if(n>256)return;let i=t+n;return D(this._pbfRangePromises,i,()=>e.fetchRange(t,n,r))}_allocNewPage(){this._currentPage++,this._binPack=new y(this._binPack.width,this._binPack.height),this._initDecorationGlyphs()}_recordGlyph(e,t){let n=this._binPack;if(!e||e.width===0)return new v;let r=e.width+t*2,i=e.height+t*2,a=r,o=i;if(this._snapCoords){let e=r%4?4-r%4:4,t=i%4?4-i%4:4;a+=e,o+=t}let s=n.allocate(a,o);return s.isEmpty?(this._allocNewPage(),n.allocate(a,o)):s}_initDecorationGlyphs(){this._recordGlyph(c,f),this._recordGlyph(c,f)}preloadASCIIGlyphCache(e,t){let n=this._preloadCache[t];if(n!=null)return n;let r=e.preloadASCIIRange(t).then(async()=>{let n=this._pbfGlyphCache.get(t);n||(n=new Map,this._pbfGlyphCache.set(t,n));let r=[];for(let i=0;i<256;i++){let a=this._getPBFGlyph(n,e,t,i);a?.needsRecord&&r.push(a)}await this._client.recordGlyphs(r)},e=>{throw delete this._preloadCache[t],e});return this._preloadCache[t]=r,r}}function E(e){let t=new Set;for(let n of e)t.add(Math.floor(n/256));return t}function D(e,t,n){return e.has(t)||e.set(t,n().finally(()=>{e.delete(t)}).catch(e=>{a(e)})),e.get(t)}const O=e=>({mosaicItem:{rect:new v(0,0,0,0),sdf:!0,page:0,textureBinding:_(1,0,!0)},rect:{left:0,width:0,height:0,top:0},shaping:{xAdvance:0,yAdvance:0,xOffset:0,yOffset:0},code:e,needsRecord:!0});function k(e){let t=[];for(let n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t}export{T as default};
2
+ import e from"../../../../request.js";import{bidiText as t}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as n}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import r from"../../../../core/Logger.js";import{ignoreAbortErrors as i,throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as o}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as s}from"../../../../symbols/cim/richTextUtils.js";import{decorGlyphRect as c}from"./decorGlyphRect.js";import{sdfRadiusComplex as l,sdfBufferGlyphSDFCreator as u,sdfSizeComplex as d,sdfBufferServer as f,sdfRadiusSimple as p,sdfSizeSimple as m}from"./definitions.js";import{GlyphSDFCreator as h}from"./GlyphSDFCreator.js";import g from"./GlyphSource.js";import{hashMosaic as _}from"./hashMosaic.js";import v from"./Rect.js";import y from"./RectangleBinPack.js";const b=`arial-unicode-ms-regular`,x=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,S=new Set([`Noto Sans Khmer`,`Noto Sans Lao`,`Noto Sans Myanmar`,`Noto Sans Thai`]),C=()=>r.getLogger(`esri.views.MapView`),w=(e,t=``)=>C().warnOnce(e,t);class T{constructor(){this._glyphSources=new Map,this._snapCoords=!0,this._currentPage=0,this._faces=new Map,this._facePromises=new Map,this._pbfRangePromises=new Map,this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._invalidFonts=new Set,this._preloadCache={},this._glyphSDFCreator=new h({sdfSizePx:d,sdfBufferPx:u,radius:l,cutoff:.25})}set remoteClient(e){this._client=e.createInvokeProxy();let t=i(this._client.getOptions());this._inited=this._init(t)}async rasterizeText(e,t,n){await this._inited;let r=t.symbol?s(t):null;return r?{type:`rich-glyphs`,runs:(await Promise.all(r.map(async t=>({fontSize:t.fontSize,characterSpacing:t.characterSpacing,decoration:t.font.decoration,color:t.color,glyphs:await this._rasterizeTextRun(e,t.font,t.text,n)})))).filter(e=>e.glyphs!=null)}:this._rasterizeTextRun(e,t.font,t.textString,n)}async _rasterizeTextRun(e,t,r,i){let a=n(t),o=this._invalidFonts.has(a),s=!!has(`esri-2d-force-complex-shaping`),c=!!has(`esri-2d-complex-shaping`)&&x.test(r),l=S.has(t.family),u=s||c||l,d=o?b:a,f=await this.getGlyphItems(r,u,e,d,!1,i);return f||=(w(`Font ${a} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(a),await this.getGlyphItems(r,u,e,b,!1,i)),f}async getGlyphItems(e,n,r,i,a,o){await this._inited;let s=this._getSource(r),c=n?d:m,h=n?l:p,g=n?u:f,_,v,y;if(has(`esri-2d-stabilize-glyphs`)&&await this.preloadASCIIGlyphCache(s,i).catch(()=>{}),n){let t=await this._getFace(s,i);if(!t)return null;let n=this._glyphCache.get(i);n||(n=new Map,this._glyphCache.set(i,n));let{shaping:r,isRTL:a}=this._shape(t,e);y=a,_=r.map(e=>this._getShapedGlyph(t,n,e)),v={baseline:t.baseline()/c,midline:t.midline()/c}}else{let n=this._pbfGlyphCache.get(i);n||(n=new Map,this._pbfGlyphCache.set(i,n));let[r,c,l]=t(e),u=k(r);try{await this._fetchRanges(s,i,u,o)}catch{return null}y=c,_=u.map(e=>this._getPBFGlyph(n,s,i,e,a)).filter(e=>!!e)}let b=_.filter(e=>e.needsRecord);return b.length>0&&await this._client.recordGlyphs(b),{type:`glyphs`,glyphs:_,faceInfo:v,isRightToLeft:y,sdfSize:c,sdfRadius:h,sdfPadding:g}}async _init(e){let t=await e;if(!t)return;let{width:n,height:r,snapCoords:i}=t,a=i?4:0;this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._binPack=new y(n-a,r-a),this._snapCoords=i,this._currentPage=0,this._initDecorationGlyphs()}_getShapedGlyph(e,t,n){let r,i,a=t.get(n.glyphId);if(!a){r=this._glyphSDFCreator.draw(e,n.glyphId);let o=this._glyphSDFCreator.sdfBufferPx;a={mosaicItem:{rect:this._recordGlyph(r?.rect,o),page:this._currentPage,sdf:!0,textureBinding:_(1,this._currentPage,!0)},glyphRect:r?.rect??{width:0,height:0,top:0,left:0}},t.set(n.glyphId,a),i=!0}return{mosaicItem:a.mosaicItem,rect:a.glyphRect,shaping:{xAdvance:n.xAdvance,yAdvance:n.yAdvance,xOffset:n.xOffset,yOffset:n.yOffset},code:n.isNewline?10:n.isWhitespace?32:NaN,sdf:r,needsRecord:i}}_getPBFGlyph(e,t,n,r,i=!1){let a,o,s=e.get(r);if(!s){let c=t.getRange(n,r),l=c?.getRect(r),d=c?.getShaping(r),f=c?.getBitmap(r);if(i&&(!l||!d))return;if(!l||!d)return O(r);let p={rect:f?this._recordGlyph(l,u):new v(0,0,0,0),sdf:!0,page:this._currentPage,textureBinding:_(1,this._currentPage,!0)};a=f&&{buffer:f,rect:l},s={mosaicItem:p,rect:l,shaping:d,code:r},o=!0,e.set(r,s)}let{mosaicItem:c,rect:l,shaping:d}=s;return{mosaicItem:c,rect:l,shaping:d,code:r,sdf:a,needsRecord:o}}_shape(e,n){let r=this._glyphSDFCreator.sdfSizePx,[i,a,o]=t(n,!1),s=new Uint32Array(Array.from(i).map((e,t)=>o.levels[o.targetToSource[t]]));return{shaping:e.shape(i,s,r),isRTL:a}}async _getFace(t,n,r){if(this._faces.has(n))return this._faces.get(n);let i=t.woffURL(n);return await D(this._facePromises,n,async()=>{let t=await e(i,{responseType:`array-buffer`,...r}),a=(await o()).Face.parseWoff2(new Uint8Array(t.data));this._faces.set(n,a)}),this._faces.get(n)}_getSource(e){return this._glyphSources.has(e)||this._glyphSources.set(e,new g(e)),this._glyphSources.get(e)}async _fetchRanges(e,t,n,r){let i=E(n),a=[];i.forEach(n=>{a.push(this._fetchRange(e,t,n,r))}),await Promise.all(a)}async _fetchRange(e,t,n,r){if(n>256)return;let i=t+n;return D(this._pbfRangePromises,i,()=>e.fetchRange(t,n,r))}_allocNewPage(){this._currentPage++,this._binPack=new y(this._binPack.width,this._binPack.height),this._initDecorationGlyphs()}_recordGlyph(e,t){let n=this._binPack;if(!e||e.width===0)return new v;let r=e.width+t*2,i=e.height+t*2,a=r,o=i;if(this._snapCoords){let e=r%4?4-r%4:4,t=i%4?4-i%4:4;a+=e,o+=t}let s=n.allocate(a,o);return s.isEmpty?(this._allocNewPage(),n.allocate(a,o)):s}_initDecorationGlyphs(){this._recordGlyph(c,f),this._recordGlyph(c,f)}preloadASCIIGlyphCache(e,t){let n=this._preloadCache[t];if(n!=null)return n;let r=e.preloadASCIIRange(t).then(async()=>{let n=this._pbfGlyphCache.get(t);n||(n=new Map,this._pbfGlyphCache.set(t,n));let r=[];for(let i=0;i<256;i++){let a=this._getPBFGlyph(n,e,t,i);a?.needsRecord&&r.push(a)}await this._client.recordGlyphs(r)},e=>{throw delete this._preloadCache[t],e});return this._preloadCache[t]=r,r}}function E(e){let t=new Set;for(let n of e)t.add(Math.floor(n/256));return t}function D(e,t,n){return e.has(t)||e.set(t,n().finally(()=>{e.delete(t)}).catch(e=>{a(e)})),e.get(t)}const O=e=>({mosaicItem:{rect:new v(0,0,0,0),sdf:!0,page:0,textureBinding:_(1,0,!0)},rect:{left:0,width:0,height:0,top:0},shaping:{xAdvance:0,yAdvance:0,xOffset:0,yOffset:0},code:e,needsRecord:!0});function k(e){let t=[];for(let n=0;n<e.length;n++)t.push(e.charCodeAt(n));return 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"../../../core/Collection.js";import{referenceSetter as n}from"../../../core/collectionUtils.js";import{deprecatedFunction as r}from"../../../core/deprecate.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{watch as o,syncAndInitial as s,sync as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{isInEffectiveScaleRange as d}from"../../../geometry/support/scaleUtils.js";import{isLinkChartView as f}from"../../../linkChart/guards.js";import{Container as p}from"../engine/Container.js";import{ClipMesh as m}from"../engine/webgl/ClipMesh.js";import{maxHighlightGroups as h}from"../engine/webgl/definitions.js";import{HighlightRegistry as g}from"./support/HighlightRegistry.js";import{createOrReuseHighlightGradient as _}from"./support/util.js";import v from"../../layers/support/ClipRect.js";import y from"../../layers/support/GeometryClipArea.js";import b from"../../layers/support/Path.js";import{defaultHighlightName as x}from"../../support/HighlightDefaults.js";import S from"../../support/HighlightOptions.js";const C=t.ofType({key:`type`,base:null,typeMap:{rect:v,path:b,geometry:y}}),w=new(t.ofType(S)),T=v=>{let y=v,b=class extends y{constructor(){super(...arguments),this._highlightRegistry=new g,this.attached=!1,this.clips=new C,this.highlights=null,this.lastUpdateId=-1,this.moving=!1,this.updateRequested=!1,this._visibleAtCurrentScale=!0}initialize(){let e=this.view?.spatialReferenceLocked??!0;if(this.view?.spatialReference&&e&&!this.spatialReferenceSupported){this.addResolvingPromise(Promise.reject(new i(`layerview:spatial-reference-incompatible`,`The spatial reference of this layer does not meet the requirements of the view`,{layer:this.layer})));return}this.container||=new p,this.container.fadeTransitionEnabled=!0,this.container.visible=!1,this.container.endTransitions(),this.addHandles([o(()=>this.suspended,e=>{this.container&&(this.container.visible=!e)},s),o(()=>this.updateSuspended,e=>{this.view&&!e&&this.updateRequested&&this.view.requestUpdate()},s),o(()=>this.layer?.opacity??1,e=>{this.container&&(this.container.opacity=e)},s),o(()=>this.layer&&`blendMode`in this.layer?this.layer.blendMode:`normal`,e=>{this.container&&(this.container.blendMode=e)},s),o(()=>this.layer&&`effect`in this.layer?this.layer.effect:null,e=>{this.container&&(this.container.effect=e)},s),o(()=>this._effectiveHighlightOptions.items.map(e=>({name:e.name,options:{fillColor:e.color,haloColor:e.haloColor,fillOpacity:e.fillOpacity,haloOpacity:e.haloOpacity,haloWidth:e.haloWidth,haloBlur:e.haloBlur}})),()=>{this.container.highlightGradient=_(this.container.highlightGradient,this._effectiveHighlightOptions.items)},s),o(()=>this._getHighlightFilterGroups(),()=>this._onHighlightChange(),c),o(()=>this.clips.map(e=>e.version),async()=>{if(this.container&&this.view?.spatialReference){let e=this.view.featuresTilingScheme,t=await this._updatingHandles.addPromise(Promise.all(this.clips.items.map(t=>m.create(t,e))));for(let e of this.container.clips)e.destroy();this.container.clips=t.filter(e=>!!e)}},s),o(()=>({scale:this.view?.scale,scaleRange:this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null}),({scale:e,scaleRange:t})=>{let n=d(t,e);n!==this._visibleAtCurrentScale&&(this._visibleAtCurrentScale=n)},s),o(()=>this.layer?.effectiveVisible,async e=>{this.container.requestDeclutter()})],`constructor`),this.view?.whenLayerView?this.view.whenLayerView(this.layer).then(e=>{e===this&&this.processAttach()},()=>{}):this.when().then(()=>{this.processAttach()},()=>{})}destroy(){this.processDetach(),this.updateRequested=!1;for(let e of this.container?.clips??[])e.destroy()}get highlightOptions(){return this._logHighlightOptionsDeprecation(),this.highlights?.find(({name:e})=>e===x)}set highlightOptions(e){if(this._logHighlightOptionsDeprecation(),!this.highlights){if(!e)return;this.highlights=new t([new S])}let n=this.highlights.find(({name:e})=>e===x);e?n?.assignFrom(e):(this.highlights.remove(n),this.highlights.length===0&&(this.highlights=null))}_logHighlightOptionsDeprecation(){r(a.getLogger(this),"`LayerView.highlightOptions` is deprecated in favor of View.highlights",{replacement:`View.highlights`,version:`4.34`,see:`https://arcg.is/inbTa1#highlights`,warnOnce:!0})}get hasHighlight(){return this._highlightRegistry.size>0}get _effectiveHighlightOptions(){if(!this.view)return w;if(!this.highlights)return this.view.highlights;let e=this.view.highlights.clone();for(let t of this.highlights){let n=e.find(e=>e.name===t.name);n&&n.assignFrom(t)}return e}get highlightIds(){return this._highlightRegistry.highlightIds}get scheduler(){return this.view.scheduler}get spatialReferenceSupported(){let e=this.view?.spatialReference;return e==null||this.supportsSpatialReference(e)}get updating(){return this.spatialReferenceSupported?this.attached?this.suspended?!1:this.updateRequested||this.isUpdating()||this._updatingHandles?.updating||this.container.transitioning:!0:!1}get visibleAtCurrentScale(){return this._visibleAtCurrentScale}processAttach(){this.isResolved()&&!this.attached&&!this.destroyed&&this.spatialReferenceSupported&&(this.attach(),this.attached=!0,this.requestUpdate())}processDetach(){this.attached&&(this.attached=!1,this.removeHandles(`attach`),this.detach(),this.updateRequested=!1)}requestUpdate(){this.destroyed||this.updateRequested||(this.updateRequested=!0,this.updateSuspended||this.view.requestUpdate())}processUpdate(e){if(this.isFulfilled()&&!this.isResolved()){this.updateRequested=!1;return}this._set(`updateParameters`,e),this.updateRequested&&!this.updateSuspended&&(this.updateRequested=!1,this.update(e))}hitTest(e,t,n){return Promise.resolve(null)}supportsSpatialReference(e){return!0}canResume(){if(!this.spatialReferenceSupported)return!1;switch(this.layer?.type){case`link-chart`:case`knowledge-graph-sublayer`:case`graphics`:break;default:if(f(this.view)&&!this.view.inGeographicLayout)return!1}return super.canResume()?this.visibleAtCurrentScale:!1}getSuspendInfo(){let e=super.getSuspendInfo(),t=!this.spatialReferenceSupported;return t&&(e.spatialReferenceNotSupported=t),e}addAttachHandles(e){this.addHandles(e,`attach`)}_addHighlightFilter(e,t){return this._highlightRegistry.register(t,e)}_removeHighlight(e){this._highlightRegistry.unregister(e)}_onHighlightChange(){}_getHighlightFilterGroups(){let e=[];for(let{name:t,filters:n}of this._highlightRegistry.highlightGroups){let r=this._effectiveHighlightOptions.findIndex(e=>e.name===t);r<0||r>=h||e.push({order:r,filters:n})}return e}};return e([l()],b.prototype,`attached`,void 0),e([l({type:C,set(e){let t=n(e,this._get(`clips`),C);this._set(`clips`,t)}})],b.prototype,`clips`,void 0),e([l()],b.prototype,`container`,void 0),e([l({type:S})],b.prototype,`highlightOptions`,null),e([l({type:t.ofType(S)})],b.prototype,`highlights`,void 0),e([l()],b.prototype,`_effectiveHighlightOptions`,null),e([l()],b.prototype,`moving`,void 0),e([l({readOnly:!0})],b.prototype,`spatialReferenceSupported`,null),e([l({readOnly:!0})],b.prototype,`updateParameters`,void 0),e([l()],b.prototype,`updateRequested`,void 0),e([l()],b.prototype,`updating`,null),e([l()],b.prototype,`view`,void 0),e([l()],b.prototype,`_visibleAtCurrentScale`,void 0),e([l({readOnly:!0})],b.prototype,`visibleAtCurrentScale`,null),b=e([u(`esri.views.2d.layers.LayerView2D`)],b),b};export{T as LayerView2D};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import{referenceSetter as n}from"../../../core/collectionUtils.js";import{deprecatedFunction as r}from"../../../core/deprecate.js";import i from"../../../core/Error.js";import"../../../core/has.js";import a from"../../../core/Logger.js";import{watch as o,syncAndInitial as s,sync as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{isInEffectiveScaleRange as d}from"../../../geometry/support/scaleUtils.js";import{isLinkChartView as f}from"../../../linkChart/guards.js";import{Container as p}from"../engine/Container.js";import{ClipMesh as m}from"../engine/webgl/ClipMesh.js";import{maxHighlightGroups as h}from"../engine/webgl/definitions.js";import{HighlightRegistry as g}from"./support/HighlightRegistry.js";import{createOrReuseHighlightGradient as _}from"./support/util.js";import v from"../../layers/support/ClipRect.js";import y from"../../layers/support/GeometryClipArea.js";import b from"../../layers/support/Path.js";import{defaultHighlightName as x}from"../../support/HighlightDefaults.js";import S from"../../support/HighlightOptions.js";const C=t.ofType({key:`type`,base:null,typeMap:{rect:v,path:b,geometry:y}}),w=new(t.ofType(S)),T=v=>{let y=v,b=class extends y{constructor(){super(...arguments),this._clipUpdateId=0,this._highlightRegistry=new g,this.attached=!1,this.clips=new C,this.highlights=null,this.lastUpdateId=-1,this.moving=!1,this.updateRequested=!1,this._visibleAtCurrentScale=!0}initialize(){let e=this.view?.spatialReferenceLocked??!0;if(this.view?.spatialReference&&e&&!this.spatialReferenceSupported){this.addResolvingPromise(Promise.reject(new i(`layerview:spatial-reference-incompatible`,`The spatial reference of this layer does not meet the requirements of the view`,{layer:this.layer})));return}this.container||=new p,this.container.fadeTransitionEnabled=!0,this.container.visible=!1,this.container.endTransitions(),this.addHandles([o(()=>this.suspended,e=>{this.container&&(this.container.visible=!e)},s),o(()=>this.updateSuspended,e=>{this.view&&!e&&this.updateRequested&&this.view.requestUpdate()},s),o(()=>this.layer?.opacity??1,e=>{this.container&&(this.container.opacity=e)},s),o(()=>this.layer&&`blendMode`in this.layer?this.layer.blendMode:`normal`,e=>{this.container&&(this.container.blendMode=e)},s),o(()=>this.layer&&`effect`in this.layer?this.layer.effect:null,e=>{this.container&&(this.container.effect=e)},s),o(()=>this._effectiveHighlightOptions.items.map(e=>({name:e.name,options:{fillColor:e.color,haloColor:e.haloColor,fillOpacity:e.fillOpacity,haloOpacity:e.haloOpacity,haloWidth:e.haloWidth,haloBlur:e.haloBlur}})),()=>{this.container.highlightGradient=_(this.container.highlightGradient,this._effectiveHighlightOptions.items)},s),o(()=>this._getHighlightFilterGroups(),()=>this._onHighlightChange(),c),o(()=>this.clips.map(e=>e.version),async()=>{let e=++this._clipUpdateId;if(this.container&&this.view?.spatialReference){let t=this.view.featuresTilingScheme,n=await this._updatingHandles.addPromise(Promise.all(this.clips.items.map(e=>m.create(e,t))));if(this.destroyed||e!==this._clipUpdateId){for(let e of n)e?.destroy();return}for(let e of this.container.clips)e.destroy();this.container.clips=n.filter(e=>!!e)}},s),o(()=>({scale:this.view?.scale,scaleRange:this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null}),({scale:e,scaleRange:t})=>{let n=d(t,e);n!==this._visibleAtCurrentScale&&(this._visibleAtCurrentScale=n)},s),o(()=>this.layer?.effectiveVisible,async e=>{this.container.requestDeclutter()})],`constructor`),this.view?.whenLayerView?this.view.whenLayerView(this.layer).then(e=>{e===this&&this.processAttach()},()=>{}):this.when().then(()=>{this.processAttach()},()=>{})}destroy(){this.processDetach(),this.updateRequested=!1;for(let e of this.container?.clips??[])e.destroy()}get highlightOptions(){return this._logHighlightOptionsDeprecation(),this.highlights?.find(({name:e})=>e===x)}set highlightOptions(e){if(this._logHighlightOptionsDeprecation(),!this.highlights){if(!e)return;this.highlights=new t([new S])}let n=this.highlights.find(({name:e})=>e===x);e?n?.assignFrom(e):(this.highlights.remove(n),this.highlights.length===0&&(this.highlights=null))}_logHighlightOptionsDeprecation(){r(a.getLogger(this),"`LayerView.highlightOptions` is deprecated in favor of View.highlights",{replacement:`View.highlights`,version:`4.34`,see:`https://arcg.is/inbTa1#highlights`,warnOnce:!0})}get hasHighlight(){return this._highlightRegistry.size>0}get _effectiveHighlightOptions(){if(!this.view)return w;if(!this.highlights)return this.view.highlights;let e=this.view.highlights.clone();for(let t of this.highlights){let n=e.find(e=>e.name===t.name);n&&n.assignFrom(t)}return e}get highlightIds(){return this._highlightRegistry.highlightIds}get scheduler(){return this.view.scheduler}get spatialReferenceSupported(){let e=this.view?.spatialReference;return e==null||this.supportsSpatialReference(e)}get updating(){return this.spatialReferenceSupported?this.attached?this.suspended?!1:this.updateRequested||this.isUpdating()||this._updatingHandles?.updating||this.container.transitioning:!0:!1}get visibleAtCurrentScale(){return this._visibleAtCurrentScale}processAttach(){this.isResolved()&&!this.attached&&!this.destroyed&&this.spatialReferenceSupported&&(this.attach(),this.attached=!0,this.requestUpdate())}processDetach(){this.attached&&(this.attached=!1,this.removeHandles(`attach`),this.detach(),this.updateRequested=!1)}requestUpdate(){this.destroyed||this.updateRequested||(this.updateRequested=!0,this.updateSuspended||this.view.requestUpdate())}processUpdate(e){if(this.isFulfilled()&&!this.isResolved()){this.updateRequested=!1;return}this._set(`updateParameters`,e),this.updateRequested&&!this.updateSuspended&&(this.updateRequested=!1,this.update(e))}hitTest(e,t,n){return Promise.resolve(null)}supportsSpatialReference(e){return!0}canResume(){if(!this.spatialReferenceSupported)return!1;switch(this.layer?.type){case`link-chart`:case`knowledge-graph-sublayer`:case`graphics`:break;default:if(f(this.view)&&!this.view.inGeographicLayout)return!1}return super.canResume()?this.visibleAtCurrentScale:!1}getSuspendInfo(){let e=super.getSuspendInfo(),t=!this.spatialReferenceSupported;return t&&(e.spatialReferenceNotSupported=t),e}addAttachHandles(e){this.addHandles(e,`attach`)}_addHighlightFilter(e,t){return this._highlightRegistry.register(t,e)}_removeHighlight(e){this._highlightRegistry.unregister(e)}_onHighlightChange(){}_getHighlightFilterGroups(){let e=[];for(let{name:t,filters:n}of this._highlightRegistry.highlightGroups){let r=this._effectiveHighlightOptions.findIndex(e=>e.name===t);r<0||r>=h||e.push({order:r,filters:n})}return e}};return e([l()],b.prototype,`attached`,void 0),e([l({type:C,set(e){let t=n(e,this._get(`clips`),C);this._set(`clips`,t)}})],b.prototype,`clips`,void 0),e([l()],b.prototype,`container`,void 0),e([l({type:S})],b.prototype,`highlightOptions`,null),e([l({type:t.ofType(S)})],b.prototype,`highlights`,void 0),e([l()],b.prototype,`_effectiveHighlightOptions`,null),e([l()],b.prototype,`moving`,void 0),e([l({readOnly:!0})],b.prototype,`spatialReferenceSupported`,null),e([l({readOnly:!0})],b.prototype,`updateParameters`,void 0),e([l()],b.prototype,`updateRequested`,void 0),e([l()],b.prototype,`updating`,null),e([l()],b.prototype,`view`,void 0),e([l()],b.prototype,`_visibleAtCurrentScale`,void 0),e([l({readOnly:!0})],b.prototype,`visibleAtCurrentScale`,null),b=e([u(`esri.views.2d.layers.LayerView2D`)],b),b};export{T as LayerView2D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{destroyHandle as e}from"../../../../core/handleUtils.js";import{watch as t,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{LineOfSightDrawToolRenderer as r}from"./LineOfSightDrawToolRenderer.js";import{isLineOfSightPlacementLeafPlugin as i}from"./LineOfSightPlacementLeafPlugin.js";import{LineOfSightRayIntersector as a}from"./LineOfSightRayIntersector.js";import{DrawTool as o}from"../../../draw/DrawTool.js";import{bindViewToolOptions as s}from"../../../interactive/options/bindViewToolOptions.js";import c from"../../../interactive/options/InteractiveToolOptions.js";import{createScreenPointFromEvent as l}from"../../../support/screenUtils.js";function u(u){let{analysis:d,analysisViewData:f,snappingManager:p,view:m,getVisible:h,getSourceElevationInfo:g,onCancel:_,onComplete:v,onManipulatorCountChange:y,shouldPreventVertexAdd:b}=u,x=g(),S=new r({analysis:d,analysisViewData:f,view:m}),C=new a({view:m}),w=new c,T=new o({elevationInfo:x,enableVertexVisuals:!1,hasZ:!0,renderer:S,toolOptions:w,snappingManager:p,view:m});return S.elevationInfo=x,T.addHandles([e(S),e(C),s(w,()=>m.options),T.on(`cancel`,()=>_(T)),T.on(`complete`,()=>v(T)),t(()=>[h(),f.visible,g()],([e,t,n])=>{T.visible=e&&t,S.analysisVisible=T.visible,T.elevationInfo=n,S.elevationInfo=n,S.refresh()},n),t(()=>T.manipulators.length,()=>y(T),n),t(()=>T.mostDownstreamPlugin,()=>{T.defaultZ=0},n),T.on([`before-vertex-add`,`before-vertex-add-at-point`],e=>{let t=e.detail.originalEvent;if(t?.type!==`immediate-click`)return;let n=l(t);if(b(n,t.pointerType)){e.preventDefault();return}let r=C.getScreenPointIntersection(n);if(r?.mapPoint==null)e.preventDefault();else{let e=T.mostDownstreamPlugin;i(e)&&(e.preservedIntersection=r)}})]),{drawTool:T,renderer:S}}export{u as createDrawTool};
2
+ import{destroyHandle as e}from"../../../../core/handleUtils.js";import{watch as t,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{LineOfSightDrawToolRenderer as r}from"./LineOfSightDrawToolRenderer.js";import{isLineOfSightPlacementLeafPlugin as i}from"./LineOfSightPlacementLeafPlugin.js";import{LineOfSightRayIntersector as a}from"./LineOfSightRayIntersector.js";import{DrawTool as o}from"../../../draw/DrawTool.js";import{bindViewToolOptions as s}from"../../../interactive/options/bindViewToolOptions.js";import c from"../../../interactive/options/InteractiveToolOptions.js";import{createScreenPointFromEvent as l}from"../../../support/screenUtils.js";function u(u){let{analysis:d,analysisViewData:f,snappingManager:p,view:m,getVisible:h,getSourceElevationInfo:g,onCancel:_,onComplete:v,onManipulatorCountChange:y,shouldPreventVertexAdd:b}=u,x=g(),S=new r({analysis:d,analysisViewData:f,view:m}),C=new a({view:m}),w=new c,T=new o({disableTouchDrag:!0,elevationInfo:x,enableVertexVisuals:!1,hasZ:!0,renderer:S,toolOptions:w,snappingManager:p,view:m});return S.elevationInfo=x,T.addHandles([e(S),e(C),s(w,()=>m.options),T.on(`cancel`,()=>_(T)),T.on(`complete`,()=>v(T)),t(()=>[h(),f.visible,g()],([e,t,n])=>{T.visible=e&&t,S.analysisVisible=T.visible,T.elevationInfo=n,S.elevationInfo=n,S.refresh()},n),t(()=>T.manipulators.length,()=>y(T),n),t(()=>T.mostDownstreamPlugin,()=>{T.defaultZ=0},n),T.on([`before-vertex-add`,`before-vertex-add-at-point`],e=>{let t=e.detail.originalEvent;if(t?.type!==`immediate-click`)return;let n=l(t);if(b(n,t.pointerType)){e.preventDefault();return}let r=C.getScreenPointIntersection(n);if(r?.mapPoint==null)e.preventDefault();else{let e=T.mostDownstreamPlugin;i(e)&&(e.preservedIntersection=r)}})]),{drawTool:T,renderer:S}}export{u as createDrawTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{destroyHandle as e}from"../../../../core/handleUtils.js";import{watch as t,syncAndInitial as n,sync as r,initial as i}from"../../../../core/reactiveUtils.js";import{createScreenPointArray as a}from"../../../../core/screenUtils.js";import{ViewshedDrawToolRenderer as o}from"./ViewshedDrawToolRenderer.js";import{isValidIntersectorResult as s}from"../../webgl-engine/lib/IntersectorResult.js";import{toGraphic as c}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{DrawTool as l}from"../../../draw/DrawTool.js";function u(a){let{analysisViewData:s,snappingManager:c,view:u,toolOptions:d,elevationInfo:f,onCancel:p,onComplete:m,onManipulatorCountChange:h,isPlacingObserver:g}=a,_=new o({view:u,isPlacingObserver:g}),v=new l({elevationInfo:f,enableVertexVisuals:!1,hasZ:!0,renderer:_,toolOptions:d,snappingManager:c,view:u});return v.addHandles([e(_),v.on(`cancel`,()=>p(v)),v.on(`complete`,()=>m(v)),t(()=>v.mostDownstreamPlugin,()=>v.defaultZ=0,n),t(()=>v.manipulators.length,()=>h(v),r),t(()=>s.visible,e=>_.analysisVisible=e,i)]),{drawTool:v,renderer:_}}function d({intersector:e,snappingManager:t,screenPoint:n,view:r}){let i=t.getMainFeatureCandidate();return i?p(i):n?f(n,r,e):null}function f(e,t,n){t.sceneIntersectionHelper.intersectToolIntersectorScreen(a(e.x,e.y),n);let r=n.results.min;return s(r)?c(r,t):null}function p(e){let t={id:e.layer.id,objectIdField:`objectIdField`in e.layer?e.layer.objectIdField:void 0};return{attributes:{[t.objectIdField??`ObjectId`]:e.objectId},layer:t,objectId:e.objectId,uid:null}}export{u as createDrawTool,d as getFeatureReference};
2
+ import{destroyHandle as e}from"../../../../core/handleUtils.js";import{watch as t,syncAndInitial as n,sync as r,initial as i}from"../../../../core/reactiveUtils.js";import{createScreenPointArray as a}from"../../../../core/screenUtils.js";import{ViewshedDrawToolRenderer as o}from"./ViewshedDrawToolRenderer.js";import{isValidIntersectorResult as s}from"../../webgl-engine/lib/IntersectorResult.js";import{toGraphic as c}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{DrawTool as l}from"../../../draw/DrawTool.js";function u(a){let{analysisViewData:s,snappingManager:c,view:u,toolOptions:d,elevationInfo:f,onCancel:p,onComplete:m,onManipulatorCountChange:h,isPlacingObserver:g}=a,_=new o({view:u,isPlacingObserver:g}),v=new l({disableTouchDrag:!0,elevationInfo:f,enableVertexVisuals:!1,hasZ:!0,renderer:_,toolOptions:d,snappingManager:c,view:u});return v.addHandles([e(_),v.on(`cancel`,()=>p(v)),v.on(`complete`,()=>m(v)),t(()=>v.mostDownstreamPlugin,()=>v.defaultZ=0,n),t(()=>v.manipulators.length,()=>h(v),r),t(()=>s.visible,e=>_.analysisVisible=e,i)]),{drawTool:v,renderer:_}}function d({intersector:e,snappingManager:t,screenPoint:n,view:r}){let i=t.getMainFeatureCandidate();return i?p(i):n?f(n,r,e):null}function f(e,t,n){t.sceneIntersectionHelper.intersectToolIntersectorScreen(a(e.x,e.y),n);let r=n.results.min;return s(r)?c(r,t):null}function p(e){let t={id:e.layer.id,objectIdField:`objectIdField`in e.layer?e.layer.objectIdField:void 0};return{attributes:{[t.objectIdField??`ObjectId`]:e.objectId},layer:t,objectId:e.objectId,uid:null}}export{u as createDrawTool,d as getFeatureReference};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import{createTask as r}from"../../core/asyncUtils.js";import{makeHandle as i,disposable as a}from"../../core/handleUtils.js";import o from"../../core/Logger.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import{destroyMaybe as c,abortMaybe as l}from"../../core/maybe.js";import{ignoreAbortErrors as u}from"../../core/promiseUtils.js";import{when as d,initial as f,watch as p,syncAndInitial as ee,on as m,sync as h}from"../../core/reactiveUtils.js";import{screenPointEqual as g,createScreenPoint as _}from"../../core/screenUtils.js";import{diff as v}from"../../core/accessorSupport/diffUtils.js";import{property as y}from"../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as x}from"../../core/support/UpdatingHandles.js";import te from"../../geometry/Polygon.js";import{simplifyIsSimple as S,simplifyExecute as C}from"../../geometry/operators/simplifyOperator.js";import{isPolygon as w}from"../../geometry/support/typeUtils.js";import{isCurvedGeometry as T}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{getEffectiveElevationInfo as D}from"../../support/elevationInfoUtils.js";import{getMaxDeviationInPixels as O,getMinSegmentsPerCurve as k}from"../2d/layers/graphics/densificationConstants.js";import{createSnappingVisualizer as A}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as j,markHandled as M,getPointerType as N,getPointerId as P}from"./support/drawToolUtils.js";import{PluginContext as F}from"./support/PluginContext.js";import{viewEventToCommand as I}from"./support/input/drawToolInput.js";import{EditSessionManager as L}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as R}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as z}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as B}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as V}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as H}from"./support/managers/SurfaceManager.js";import{TooltipManager as U}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as W}from"../input/InputManager.js";import{createCoordinateHelper as G}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as K}from"../interactive/InteractiveToolBase.js";import{KeyBindings as q,mediaKeys as J,sketchKeys as Y,advancedSketchKeys as X,tooltipKeys as Z}from"../interactive/keybindings.js";import{isInputModeAvailable as ne}from"../interactive/tooltip/tooltipCommonUtils.js";const Q=Symbol();let $=class extends K{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._queuedFeedbackEvents=[],this._flushingQueuedFeedbackEvents=!1,this._commandsSuspended=!1,this._snappingVisualizer=null,this._segmentLabels=null,this._segmentLabelsImportTask=null,this._updatingHandles=new x,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type=`draw-2.0`,this.automaticManipulatorSelection=!0,this.snappingManager=null,this.toolOptions=null,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new B,this.globalStateManager=new R({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new L({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new V({getContext:this._getContextForPlugin.bind(this),editSessionManager:this.editSessionManager,afterAttach:this._afterAttach.bind(this),afterDetach:this._afterDetach.bind(this),beforeResume:this._beforeResume.bind(this)}),this.surfaceManager=null,this.interactiveHandleManager=null,this.renderer=null,this.readPluginSetting=null,this.enableVertexVisuals=!0}initialize(){let{view:e}=this;this.interactiveHandleManager=new z({view:e,renderer:this.renderer}),this._override(`manipulators`,this.interactiveHandleManager.manipulators),this.tooltipManager=new U({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(d(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:`outputGeometry`}),t.addOrUpdateVisual(this._vertexVisualId,{role:`vertex`}),this._updatingHandles.addPromise(A(e,t).then(e=>this._snappingVisualizer=e))},f)),this.addHandles([p(()=>[this.view,this.coordinateHelper.spatialReference,this.defaultZ,this.hasZ,this.elevationInfo],([e,t,n,r,i])=>{this.surfaceManager?.destroy(),this.surfaceManager=new H({spatialReference:t,excludedGraphicsLayer:null,defaultZ:n,hasZ:r,view:e,elevationInfo:i,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},ee),d(()=>this.toolOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),p(()=>[this.editGeometryOperations,this.toolOptions?.labels.enabled,this.globalStateManager.segmentLabelsDisabled],()=>{this._updatingHandles.addPromise(this._setupSegmentLabels())},f),m(()=>this.editSessionManager,`cancelPlugin`,({plugin:e})=>{this._suspendPlugin(e)},h),m(()=>this.editSessionManager,`restartPlugin`,({restartInfo:e})=>{this._resumePlugin(e)},h),p(()=>this.lifecycleManager.updating,e=>{e||this._emitQueuedFeedbackEvents()},h),m(()=>this.editGeometryOperations,[`vertex-add`,`vertex-update`,`vertex-remove`],e=>{let t=e.vertices.map(e=>({componentIndex:0,vertexIndex:e.index,coordinates:this.coordinateHelper.vectorToArray(e.pos)})),n=t.map(e=>e.coordinates);switch(e.type){case`vertex-add`:this._emitWhenReady(e.type,{...e,added:n,vertices:t});break;case`vertex-update`:this._emitWhenReady(e.type,{...e,updated:n,vertices:t});break;case`vertex-remove`:this._emitWhenReady(e.type,{...e,removed:n,vertices:t})}})])}destroy(){this.active&&this.onDeactivate(),this.editSessionManager.destroy(),this.lifecycleManager.destroy(),this.measurementManager.destroy(),this.globalStateManager.destroy();for(let e of this._pluginContexts.values())e.destroy();this._pluginContexts.clear(),this.surfaceManager=c(this.surfaceManager),this.interactiveHandleManager=c(this.interactiveHandleManager),this._segmentLabelsImportTask=l(this._segmentLabelsImportTask),this._segmentLabels=c(this._segmentLabels),this.tooltipManager=c(this.tooltipManager)}get _zOfLastUserInput(){let e=(this.mostDownstreamPlugin&&this.editSessionManager.getSession(this.mostDownstreamPlugin))?.firstPointAddedBySession?.point;return e?.hasZ?e.z:null}get _tooltipDependencies(){let{defaultZ:e,editGeometryOperations:t,toolOptions:n,directionOptions:r,elevationInfo:i,view:a}=this;return!t||!n||!a?null:{defaultZ:e,directionOptions:r,elevationInfo:i,editGeometryOperations:t,toolOptions:n,view:a,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,getAllHandles:()=>this.interactiveHandleManager?.allhandles,getHelpMessageKey:()=>this.helpMessageKey,notifyTooltipsChanged:()=>{let{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}}get _editSessionManagerContext(){let{coordinateHelper:e,view:t}=this;return t?{coordinateHelper:e,viewingMode:t.type===`3d`&&t.viewingMode===`global`?1:2}:null}get _densificationParameters(){let{view:e,coordinateHelper:t}=this,n=t.spatialReference,r=e?.spatialReference,i=e.resolution;if(!n||!r||!i||!Number.isFinite(i))return null;let a=r.metersPerUnit/n.metersPerUnit;return{maxDeviation:2**Math.round(Math.log2(i))*O()*a,minSegmentsPerCurve:k()}}get test(){return{densificationParameters:this._densificationParameters,segmentLabels:this._segmentLabels}}get updating(){return this._updatingHandles.updating||this.snappingManager?.updating||this.lifecycleManager.updating||!!this._segmentLabels?.updating}get coordinateHelper(){return G(this.hasZ,!1,this.view.spatialReference)}get editGeometry(){return this.editGeometryOperations?.data}get editGeometryOperations(){return this.editSessionManager.editGeometryOperations}get unprocessedGeometry(){return this.editSessionManager.outputGeometry}get simplifiedGeometryPreview(){let e=this.editSessionManager.outputGeometry;if(e&&w(e))try{let t=this._densificationParameters,n=T(e)&&t?new te({...E(e,t)}):e;if(!S(n))return C(n)}catch{return e}return e}get _suppressCoincidentPointOverlaysIn3D(){return this.view.type===`3d`&&this.unprocessedGeometry?.type===`point`&&!!this.interactiveHandleManager?.allhandles?.find(e=>e.role===`primary`)?.outputMapPosition}get _shapeVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.simplifiedGeometryPreview}get _vertexVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.unprocessedGeometry}get canUndo(){return this.editSessionManager.canUndo}get canRedo(){return this.editSessionManager.canRedo}get pluginStack(){return this.lifecycleManager.pluginStack}get mostDownstreamPlugin(){return this.pluginStack.at(-1)}get mostUpstreamPlugin(){return this.pluginStack.at(0)}get positionOfLastUserInput(){let e=this.lastScreenPosition;return e?this.surfaceManager?.screenToMap(e,{firstPointZ:this._zOfLastUserInput})??this.view.toMap(e):this.view.center}get movementCommandContext(){let{editGeometryOperations:e,tooltipManager:t,surfaceManager:n,snappingManager:r,interactiveHandleManager:i,_snappingVisualizer:a,defaultZ:o,hasZ:s,globalStateManager:{drawAtFixedElevation:c},view:l}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:n,interactiveHandleManager:i,snappingManager:r,snappingVisualizer:a,pointerType:`mouse`,hasZ:s,defaultZ:o,view:l,drawAtFixedElevation:c}}get tooltip(){return this.tooltipManager?.tooltip}get activeTooltipInfo(){return this.tooltipManager?.tooltipInfo}get helpMessageKey(){return this.pluginStack.items.findLast(e=>e.helpMessageKey)?.helpMessageKey??`noTool`}begin(e){if(!this.active){this._pendingBeginRequest=e;return}this.lifecycleManager.begin(e),this._pendingBeginRequest=null}complete(e){let t=this.lifecycleManager;if(e&&t.complete(e),t.pluginStack.length===0){let e=this.unprocessedGeometry,t=!e||e.type===`mesh`||S(e);this.emit(`complete`,{geometry:e,isSimple:t,aborted:!1,type:`complete`,vertices:[]}),this.view?.activeTool===this&&(this.view.activeTool=null)}}cancelFirstUserLeafPlugin(){let e=this.pluginStack.toArray().findLast(e=>e.configuration?.hidden!==!0);e&&this.lifecycleManager.cancel(e)}getVertexSnappingCandidates(){return this.interactiveHandleManager?.capturingHandle?.role===`secondary`?[]:this.snappingManager?.getVertexCandidates()??[]}replaceLeaf(e){let t=this.lifecycleManager;if(t.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,`replaceLeaf`);return}t.replaceLeaf(e)}finishPart(){let e=this.mostUpstreamPlugin?.configuration;if(this.editGeometryOperations&&e&&e.kind?.includes(`multipart`)){let e=this.pluginStack.at(1);e&&this.complete(e)}}undo(){this._handleCommand({action:`undo`})}redo(){this._handleCommand({action:`redo`})}executeCommand(e){return this._handleCommand(e)}suspendCommands(){return this._commandsSuspended=!0,i(()=>{this._commandsSuspended=!1;let e=this.view?.inputManager.latestPointerInfo;if(e){let{x:t,y:n}=e.location;this._handleCommand({action:`manipulator-move-to`,x:t,y:n})}})}addPromise(e){return this._updatingHandles.addPromise(e)}readPluginSettingValue(e,t){return this.readPluginSetting?.(e,t)}getGeometryIfCompleted(){let e=this.lifecycleManager.gatherCompletablePlugins();return this.editSessionManager?.generatePreviewGeometryForPlugins(e)}onActivate(){super.onActivate();let{view:e}=this;this.lastScreenPosition=e?.inputManager.latestPointerInfo?.location,this.renderer?.activate(),this._pendingBeginRequest&&=(this.begin(this._pendingBeginRequest),null),this.enableVertexVisuals&&this.addHandles(p(()=>this._vertexVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?j(e):null})},f)),this.addHandles([p(()=>this._shapeVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e})},f),d(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:g}),p(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{let n=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&n&&this._emitWhenReady(`cursor-update`,{updated:n.pos,type:`vertex-update`,operation:`apply`,vertices:[{componentIndex:n.part.index,vertexIndex:n.index,coordinates:n.pos}]})},h),this._keybindings.register(e,W.TOOL),p(()=>e.viewpoint,(e,t)=>{e&&t&&v(e,t)&&this._handleCommand({action:`viewpoint-moved`})})],Q)}onDeactivate(){super.onDeactivate(),this.removeHandles(Q),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){e.type===`pointer-down`?this.interactiveHandleManager?.notePointerDown(e.pointerId,e.pointerType):(e.type===`pointer-up`||e.type===`pointer-leave`)&&this.interactiveHandleManager?.notePointerUp(e.pointerId,e.pointerType);let t=I(e);t&&this._handleCommand(t)}forceAddVertex(){this._commitNext()}_emitWhenReady(e,t){if(this.destroyed)return;let n=()=>{this.emit(e,t)};this.lifecycleManager.updating||this._flushingQueuedFeedbackEvents?this._queuedFeedbackEvents.push(n):n()}_emitQueuedFeedbackEvents(){if(!(this.destroyed||this._flushingQueuedFeedbackEvents||this.lifecycleManager.updating||this._queuedFeedbackEvents.length===0)){this._flushingQueuedFeedbackEvents=!0;try{for(;!this.destroyed&&!this.lifecycleManager.updating&&this._queuedFeedbackEvents.length>0;)this._queuedFeedbackEvents.shift()?.()}finally{this._flushingQueuedFeedbackEvents=!1}}}async _handleCommand(e){if(!this._commandsSuspended){if(this.lifecycleManager.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,e.action);return}switch(e.action){case`view-drag`:return await this._handleViewDragCommand(e);case`vertex-add`:return this._guardCommand(e,()=>{M(e),this._commitNext()});case`vertex-add-and-finish-part`:return this._handleVertexAddAndFinishPartCommand(e);case`cancel`:return this._guardCommand(e,()=>this.cancel());case`complete`:return this._guardCommand(e,()=>{this.mostUpstreamPlugin&&(M(e),this.complete(this.mostUpstreamPlugin))});case`finish-part`:return this._guardCommand(e,()=>this.finishPart());case`undo`:return this._guardCommand(e,()=>this.editSessionManager.undo());case`redo`:return this._guardCommand(e,()=>this.editSessionManager.redo());case`next-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`forward`));case`previous-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`backward`));case`toggle-manipulator-follow`:this.interactiveHandleManager?.toggleFollow()&&M(e);break;case`viewpoint-moved`:return await this._handleViewpointMovedCommand(e);case`manipulator-move-to`:return await this._handleManipulatorMoveToCommand(e);case`manipulator-drag-to`:return await this._handleManipulatorDragToCommand(e);case`vertex-add-at-point`:return await this._handleVertexAddAtPointCommand(e);case`show-tooltip`:return this._guardCommand(e,async()=>{let t=this.tooltipManager?.tooltip;t&&ne(t.info)&&(await t.enterInputMode(),M(e))});case`constraint-center`:this.globalStateManager.setCentered(e.enabled);break;case`constraint-aspect`:this.globalStateManager.setPreserveAspectRatio(e.enabled)}}}async _handleViewDragCommand(e){if(!this.editable)return;let t=e.originalEvent,n=this.interactiveHandleManager?.capturingHandle;if(t&&`pointerType`in t&&t.pointerType===`touch`&&(n?.captureMode===`capture-always`||n?.captureMode===`capture-when-engaged`)){M(e);return}if(this.interactiveHandleManager?.capturingHandle?.captureMode===`capture-when-engaged`){M(e);return}if(this._before(e)){M(e);return}}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(M(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:t,pointerId:n})),this.interactiveHandleManager?.updateAllScreenPositions(this.movementCommandContext.surfaceManager)}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&M(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e),i=this.interactiveHandleManager?.findHandleByManipulator(r,t);t===`touch`&&i&&e.state===`start`&&this.interactiveHandleManager?.releaseHandle();let a=this.interactiveHandleManager?.findHandleDragging(),o=this.interactiveHandleManager?.capturingHandle,s=a??o??i;s&&!i&&M(e),s?.captureMode===`capture-when-engaged`||s?.captureMode===`capture-always`&&t===`touch`?e.state===`end`?await this._updatingHandles.addPromise(s.noteDragEnd(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&s.role===`primary`&&(this.interactiveHandleManager?.handleCount===1?this._handleCommand({action:`vertex-add`}):this.interactiveHandleManager?.releaseHandle())})):e.state===`start`?await this._updatingHandles.addPromise(s.noteDragStart(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&!s.editSession?.lastPointAddedBySession&&this._handleCommand({action:`vertex-add`})})):await this._updatingHandles.addPromise(s?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})):s?.captureMode===`grabbable-object`&&(this.interactiveHandleManager?.releaseHandle(o),await this._updatingHandles.addPromise(s.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})))}async _handleVertexAddAtPointCommand(e){let t=this._updateLastScreenPosition(e),n=N(e.originalEvent),r=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(r,n))return;let i=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t,n);this.editable&&i&&(this._before(e)||(M(e),await this._updatingHandles.addPromise(i.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:n,pointerId:r}).finally(()=>this._commitNext()))))}_makeKeyBindings(){let e=new q,t=(t,n)=>{e.addToggle(t,e=>this._handleCommand({action:n,originalEvent:e,enabled:e.type===`key-down`}))},n=(t,n)=>{e.add(t,e=>this._handleCommand({action:n,originalEvent:e}))};return t(J.preserveAspectRatio,`constraint-aspect`),t(Y.center,`constraint-center`),n(X.toggleFollowManipulator,`toggle-manipulator-follow`),n(Y.undo,`undo`),n(Y.redo,`redo`),n(Y.complete,`complete`),n(Y.vertexAdd,`vertex-add`),n({key:Z.enterInputMode,continuePropagation:!0,repeats:!0},`show-tooltip`),e}_afterAttach(){}_afterDetach(e){this.interactiveHandleManager?.unregisterCustomConstraint(e),this.interactiveHandleManager?.unregisterHandle(e),this.tooltipManager?.unregisterPluginFields(e),this.globalStateManager.clearPluginOverrides(e);let t=this._pluginContexts.get(e);t&&(t.destroy(),this._pluginContexts.delete(e))}_beforeResume(e,t){this.interactiveHandleManager?.replaceEditSessions(e,t)}_commitNext(){let n={stack:[],error:void 0,hasError:!1};try{let t=this.mostDownstreamPlugin;if(!t)return;this.tooltipManager?.storeConstraintSnapshot();let r=this.tooltipManager?.getFieldsToUnlockOnVertexPlacement()??[],i=!1,o=this.editGeometryOperations;e(n,o?a(o.on(`vertex-add`,()=>i=!0)):null,!1),t.completeStep?t.completeStep():this.complete(t),i&&this.tooltipManager?.unlockOnVertexPlacement(r)}catch(e){n.error=e,n.hasError=!0}finally{t(n)}}_suspendPlugin(e){this.lifecycleManager.suspend(e),this.measurementManager.suspendPlugin(e)}_resumePlugin(e){this.lifecycleManager.resume(e)}_updateLastScreenPosition(e){let t=_(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){let n=s(this._pluginContexts,e,()=>new F({drawTool:this,plugin:e,session:t}));return n.session=t,n}_before(e){if(!this.hasEventListener(`before-${e.action}`))return!1;let t=new CustomEvent(`before-${e.action}`,{detail:e,cancelable:!0});return this.emit(`before-${e.action}`,t),t.defaultPrevented}_guardCommand(e,t,n){return this._before(e)?n?.():t()}async _setupSegmentLabels(){let e=this.editGeometryOperations,t=this.toolOptions?.labels,n=!!t?.enabled,r=this.globalStateManager.segmentLabelsDisabled;if(!e||!t||!n){this._segmentLabels=c(this._segmentLabels);return}if(r){this._segmentLabels&&(this._segmentLabels.visible=!1);return}if(this._segmentLabels?.context?.editGeometryOperations===e&&this._segmentLabels.context.labelOptions===t){this._segmentLabels.visible=!0;return}let i=await this._createSegmentLabels(e,t);i&&(this._segmentLabels=c(this._segmentLabels),this._segmentLabels=i)}async _createSegmentLabels(e,t){this._segmentLabelsImportTask?.abort();let n=this._segmentLabelsImportTask=r(async n=>{if(this.view.type===`3d`){let r=import(`../3d/interactive/SegmentLabels3D.js`),{SegmentLabels3D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})}let r=import(`../2d/interactive/SegmentLabels2D.js`),{SegmentLabels2D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})});return u(n.promise)}_isSegmentLabelsSetupStale(e,t,n){return e.aborted||this.editGeometryOperations!==t||this.toolOptions?.labels!==n||!n.enabled||this.globalStateManager.segmentLabelsDisabled}};n([y()],$.prototype,`_commandsSuspended`,void 0),n([y()],$.prototype,`_zOfLastUserInput`,null),n([y()],$.prototype,`_snappingVisualizer`,void 0),n([y()],$.prototype,`_segmentLabels`,void 0),n([y()],$.prototype,`_segmentLabelsImportTask`,void 0),n([y()],$.prototype,`_tooltipDependencies`,null),n([y()],$.prototype,`_editSessionManagerContext`,null),n([y()],$.prototype,`_densificationParameters`,null),n([y({constructOnly:!0,nonNullable:!0})],$.prototype,`view`,void 0),n([y()],$.prototype,`automaticManipulatorSelection`,void 0),n([y()],$.prototype,`updating`,null),n([y()],$.prototype,`coordinateHelper`,null),n([y()],$.prototype,`editGeometry`,null),n([y()],$.prototype,`editGeometryOperations`,null),n([y()],$.prototype,`unprocessedGeometry`,null),n([y()],$.prototype,`simplifiedGeometryPreview`,null),n([y()],$.prototype,`_suppressCoincidentPointOverlaysIn3D`,null),n([y()],$.prototype,`_shapeVisualGeometry`,null),n([y()],$.prototype,`_vertexVisualGeometry`,null),n([y()],$.prototype,`snappingManager`,void 0),n([y()],$.prototype,`toolOptions`,void 0),n([y()],$.prototype,`elevationInfo`,void 0),n([y()],$.prototype,`hasZ`,void 0),n([y()],$.prototype,`defaultZ`,void 0),n([y()],$.prototype,`directionOptions`,void 0),n([y()],$.prototype,`canUndo`,null),n([y()],$.prototype,`canRedo`,null),n([y()],$.prototype,`pluginStack`,null),n([y()],$.prototype,`mostDownstreamPlugin`,null),n([y()],$.prototype,`mostUpstreamPlugin`,null),n([y()],$.prototype,`lastScreenPosition`,void 0),n([y()],$.prototype,`positionOfLastUserInput`,null),n([y()],$.prototype,`tooltipManager`,void 0),n([y()],$.prototype,`measurementManager`,void 0),n([y()],$.prototype,`globalStateManager`,void 0),n([y()],$.prototype,`editSessionManager`,void 0),n([y()],$.prototype,`lifecycleManager`,void 0),n([y()],$.prototype,`surfaceManager`,void 0),n([y()],$.prototype,`interactiveHandleManager`,void 0),n([y()],$.prototype,`renderer`,void 0),n([y()],$.prototype,`readPluginSetting`,void 0),n([y()],$.prototype,`movementCommandContext`,null),n([y()],$.prototype,`tooltip`,null),n([y()],$.prototype,`activeTooltipInfo`,null),n([y()],$.prototype,`helpMessageKey`,null),n([y({constructOnly:!0})],$.prototype,`enableVertexVisuals`,void 0),$=n([b(`esri.views.draw.DrawTool`)],$);export{$ as DrawTool};
2
+ import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import{createTask as r}from"../../core/asyncUtils.js";import{makeHandle as i,disposable as a}from"../../core/handleUtils.js";import o from"../../core/Logger.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import{destroyMaybe as c,abortMaybe as l}from"../../core/maybe.js";import{ignoreAbortErrors as u}from"../../core/promiseUtils.js";import{when as d,initial as f,watch as p,syncAndInitial as ee,on as m,sync as h}from"../../core/reactiveUtils.js";import{screenPointEqual as g,createScreenPoint as _}from"../../core/screenUtils.js";import{diff as v}from"../../core/accessorSupport/diffUtils.js";import{property as y}from"../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as x}from"../../core/support/UpdatingHandles.js";import te from"../../geometry/Polygon.js";import{simplifyIsSimple as S,simplifyExecute as C}from"../../geometry/operators/simplifyOperator.js";import{isPolygon as w}from"../../geometry/support/typeUtils.js";import{isCurvedGeometry as T}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{getEffectiveElevationInfo as D}from"../../support/elevationInfoUtils.js";import{getMaxDeviationInPixels as O,getMinSegmentsPerCurve as k}from"../2d/layers/graphics/densificationConstants.js";import{createSnappingVisualizer as A}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as j,markHandled as M,getPointerType as N,getPointerId as P}from"./support/drawToolUtils.js";import{PluginContext as F}from"./support/PluginContext.js";import{viewEventToCommand as I}from"./support/input/drawToolInput.js";import{EditSessionManager as L}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as R}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as z}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as B}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as V}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as H}from"./support/managers/SurfaceManager.js";import{TooltipManager as U}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as W}from"../input/InputManager.js";import{createCoordinateHelper as G}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as K}from"../interactive/InteractiveToolBase.js";import{KeyBindings as q,mediaKeys as J,sketchKeys as Y,advancedSketchKeys as X,tooltipKeys as Z}from"../interactive/keybindings.js";import{isInputModeAvailable as ne}from"../interactive/tooltip/tooltipCommonUtils.js";const Q=Symbol();let $=class extends K{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._queuedFeedbackEvents=[],this._flushingQueuedFeedbackEvents=!1,this._commandsSuspended=!1,this._snappingVisualizer=null,this._segmentLabels=null,this._segmentLabelsImportTask=null,this._updatingHandles=new x,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type=`draw-2.0`,this.automaticManipulatorSelection=!0,this.snappingManager=null,this.toolOptions=null,this.disableTouchDrag=!1,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new B,this.globalStateManager=new R({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new L({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new V({getContext:this._getContextForPlugin.bind(this),editSessionManager:this.editSessionManager,afterAttach:this._afterAttach.bind(this),afterDetach:this._afterDetach.bind(this),beforeResume:this._beforeResume.bind(this)}),this.surfaceManager=null,this.interactiveHandleManager=null,this.renderer=null,this.readPluginSetting=null,this.enableVertexVisuals=!0}initialize(){let{view:e}=this;this.interactiveHandleManager=new z({view:e,renderer:this.renderer}),this._override(`manipulators`,this.interactiveHandleManager.manipulators),this.tooltipManager=new U({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(d(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:`outputGeometry`}),t.addOrUpdateVisual(this._vertexVisualId,{role:`vertex`}),this._updatingHandles.addPromise(A(e,t).then(e=>this._snappingVisualizer=e))},f)),this.addHandles([p(()=>[this.view,this.coordinateHelper.spatialReference,this.defaultZ,this.hasZ,this.elevationInfo],([e,t,n,r,i])=>{this.surfaceManager?.destroy(),this.surfaceManager=new H({spatialReference:t,excludedGraphicsLayer:null,defaultZ:n,hasZ:r,view:e,elevationInfo:i,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},ee),d(()=>this.toolOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),p(()=>[this.editGeometryOperations,this.toolOptions?.labels.enabled,this.globalStateManager.segmentLabelsDisabled],()=>{this._updatingHandles.addPromise(this._setupSegmentLabels())},f),m(()=>this.editSessionManager,`cancelPlugin`,({plugin:e})=>{this._suspendPlugin(e)},h),m(()=>this.editSessionManager,`restartPlugin`,({restartInfo:e})=>{this._resumePlugin(e)},h),p(()=>this.lifecycleManager.updating,e=>{e||this._emitQueuedFeedbackEvents()},h),m(()=>this.editGeometryOperations,[`vertex-add`,`vertex-update`,`vertex-remove`],e=>{let t=e.vertices.map(e=>({componentIndex:0,vertexIndex:e.index,coordinates:this.coordinateHelper.vectorToArray(e.pos)})),n=t.map(e=>e.coordinates);switch(e.type){case`vertex-add`:this._emitWhenReady(e.type,{...e,added:n,vertices:t});break;case`vertex-update`:this._emitWhenReady(e.type,{...e,updated:n,vertices:t});break;case`vertex-remove`:this._emitWhenReady(e.type,{...e,removed:n,vertices:t})}})])}destroy(){this.active&&this.onDeactivate(),this.editSessionManager.destroy(),this.lifecycleManager.destroy(),this.measurementManager.destroy(),this.globalStateManager.destroy();for(let e of this._pluginContexts.values())e.destroy();this._pluginContexts.clear(),this.surfaceManager=c(this.surfaceManager),this.interactiveHandleManager=c(this.interactiveHandleManager),this._segmentLabelsImportTask=l(this._segmentLabelsImportTask),this._segmentLabels=c(this._segmentLabels),this.tooltipManager=c(this.tooltipManager)}get _zOfLastUserInput(){let e=(this.mostDownstreamPlugin&&this.editSessionManager.getSession(this.mostDownstreamPlugin))?.firstPointAddedBySession?.point;return e?.hasZ?e.z:null}get _tooltipDependencies(){let{defaultZ:e,editGeometryOperations:t,toolOptions:n,directionOptions:r,elevationInfo:i,view:a}=this;return!t||!n||!a?null:{defaultZ:e,directionOptions:r,elevationInfo:i,editGeometryOperations:t,toolOptions:n,view:a,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,getAllHandles:()=>this.interactiveHandleManager?.allhandles,getHelpMessageKey:()=>this.helpMessageKey,notifyTooltipsChanged:()=>{let{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}}get _editSessionManagerContext(){let{coordinateHelper:e,view:t}=this;return t?{coordinateHelper:e,viewingMode:t.type===`3d`&&t.viewingMode===`global`?1:2}:null}get _densificationParameters(){let{view:e,coordinateHelper:t}=this,n=t.spatialReference,r=e?.spatialReference,i=e.resolution;if(!n||!r||!i||!Number.isFinite(i))return null;let a=r.metersPerUnit/n.metersPerUnit;return{maxDeviation:2**Math.round(Math.log2(i))*O()*a,minSegmentsPerCurve:k()}}get test(){return{densificationParameters:this._densificationParameters,segmentLabels:this._segmentLabels}}get updating(){return this._updatingHandles.updating||this.snappingManager?.updating||this.lifecycleManager.updating||!!this._segmentLabels?.updating}get coordinateHelper(){return G(this.hasZ,!1,this.view.spatialReference)}get editGeometry(){return this.editGeometryOperations?.data}get editGeometryOperations(){return this.editSessionManager.editGeometryOperations}get unprocessedGeometry(){return this.editSessionManager.outputGeometry}get simplifiedGeometryPreview(){let e=this.editSessionManager.outputGeometry;if(e&&w(e))try{let t=this._densificationParameters,n=T(e)&&t?new te({...E(e,t)}):e;if(!S(n))return C(n)}catch{return e}return e}get _suppressCoincidentPointOverlaysIn3D(){return this.view.type===`3d`&&this.unprocessedGeometry?.type===`point`&&!!this.interactiveHandleManager?.allhandles?.find(e=>e.role===`primary`)?.outputMapPosition}get _shapeVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.simplifiedGeometryPreview}get _vertexVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.unprocessedGeometry}get canUndo(){return this.editSessionManager.canUndo}get canRedo(){return this.editSessionManager.canRedo}get pluginStack(){return this.lifecycleManager.pluginStack}get mostDownstreamPlugin(){return this.pluginStack.at(-1)}get mostUpstreamPlugin(){return this.pluginStack.at(0)}get positionOfLastUserInput(){let e=this.lastScreenPosition;return e?this.surfaceManager?.screenToMap(e,{firstPointZ:this._zOfLastUserInput})??this.view.toMap(e):this.view.center}get movementCommandContext(){let{editGeometryOperations:e,tooltipManager:t,surfaceManager:n,snappingManager:r,interactiveHandleManager:i,_snappingVisualizer:a,defaultZ:o,hasZ:s,globalStateManager:{drawAtFixedElevation:c},view:l}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:n,interactiveHandleManager:i,snappingManager:r,snappingVisualizer:a,pointerType:`mouse`,hasZ:s,defaultZ:o,view:l,drawAtFixedElevation:c}}get tooltip(){return this.tooltipManager?.tooltip}get activeTooltipInfo(){return this.tooltipManager?.tooltipInfo}get helpMessageKey(){return this.pluginStack.items.findLast(e=>e.helpMessageKey)?.helpMessageKey??`noTool`}begin(e){if(!this.active){this._pendingBeginRequest=e;return}this.lifecycleManager.begin(e),this._pendingBeginRequest=null}complete(e){let t=this.lifecycleManager;if(e&&t.complete(e),t.pluginStack.length===0){let e=this.unprocessedGeometry,t=!e||e.type===`mesh`||S(e);this.emit(`complete`,{geometry:e,isSimple:t,aborted:!1,type:`complete`,vertices:[]}),this.view?.activeTool===this&&(this.view.activeTool=null)}}cancelFirstUserLeafPlugin(){let e=this.pluginStack.toArray().findLast(e=>e.configuration?.hidden!==!0);e&&this.lifecycleManager.cancel(e)}getVertexSnappingCandidates(){return this.interactiveHandleManager?.capturingHandle?.role===`secondary`?[]:this.snappingManager?.getVertexCandidates()??[]}replaceLeaf(e){let t=this.lifecycleManager;if(t.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,`replaceLeaf`);return}t.replaceLeaf(e)}finishPart(){let e=this.mostUpstreamPlugin?.configuration;if(this.editGeometryOperations&&e&&e.kind?.includes(`multipart`)){let e=this.pluginStack.at(1);e&&this.complete(e)}}undo(){this._handleCommand({action:`undo`})}redo(){this._handleCommand({action:`redo`})}executeCommand(e){return this._handleCommand(e)}suspendCommands(){return this._commandsSuspended=!0,i(()=>{this._commandsSuspended=!1;let e=this.view?.inputManager.latestPointerInfo;if(e){let{x:t,y:n}=e.location;this._handleCommand({action:`manipulator-move-to`,x:t,y:n})}})}addPromise(e){return this._updatingHandles.addPromise(e)}readPluginSettingValue(e,t){return this.readPluginSetting?.(e,t)}getGeometryIfCompleted(){let e=this.lifecycleManager.gatherCompletablePlugins();return this.editSessionManager?.generatePreviewGeometryForPlugins(e)}onActivate(){super.onActivate();let{view:e}=this;this.lastScreenPosition=e?.inputManager.latestPointerInfo?.location,this.renderer?.activate(),this._pendingBeginRequest&&=(this.begin(this._pendingBeginRequest),null),this.enableVertexVisuals&&this.addHandles(p(()=>this._vertexVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?j(e):null})},f)),this.addHandles([p(()=>this._shapeVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e})},f),d(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:g}),p(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{let n=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&n&&this._emitWhenReady(`cursor-update`,{updated:n.pos,type:`vertex-update`,operation:`apply`,vertices:[{componentIndex:n.part.index,vertexIndex:n.index,coordinates:n.pos}]})},h),this._keybindings.register(e,W.TOOL),p(()=>e.viewpoint,(e,t)=>{e&&t&&v(e,t)&&this._handleCommand({action:`viewpoint-moved`})})],Q)}onDeactivate(){super.onDeactivate(),this.removeHandles(Q),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){if(this.disableTouchDrag&&(e.type===`drag`||e.type===`pointer-drag`)&&e.pointerType===`touch`)return;e.type===`pointer-down`?this.interactiveHandleManager?.notePointerDown(e.pointerId,e.pointerType):(e.type===`pointer-up`||e.type===`pointer-leave`)&&this.interactiveHandleManager?.notePointerUp(e.pointerId,e.pointerType);let t=I(e);t&&this._handleCommand(t)}forceAddVertex(){this._commitNext()}_emitWhenReady(e,t){if(this.destroyed)return;let n=()=>{this.emit(e,t)};this.lifecycleManager.updating||this._flushingQueuedFeedbackEvents?this._queuedFeedbackEvents.push(n):n()}_emitQueuedFeedbackEvents(){if(!(this.destroyed||this._flushingQueuedFeedbackEvents||this.lifecycleManager.updating||this._queuedFeedbackEvents.length===0)){this._flushingQueuedFeedbackEvents=!0;try{for(;!this.destroyed&&!this.lifecycleManager.updating&&this._queuedFeedbackEvents.length>0;)this._queuedFeedbackEvents.shift()?.()}finally{this._flushingQueuedFeedbackEvents=!1}}}async _handleCommand(e){if(!this._commandsSuspended){if(this.lifecycleManager.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,e.action);return}switch(e.action){case`view-drag`:return await this._handleViewDragCommand(e);case`vertex-add`:return this._guardCommand(e,()=>{M(e),this._commitNext()});case`vertex-add-and-finish-part`:return this._handleVertexAddAndFinishPartCommand(e);case`cancel`:return this._guardCommand(e,()=>this.cancel());case`complete`:return this._guardCommand(e,()=>{this.mostUpstreamPlugin&&(M(e),this.complete(this.mostUpstreamPlugin))});case`finish-part`:return this._guardCommand(e,()=>this.finishPart());case`undo`:return this._guardCommand(e,()=>this.editSessionManager.undo());case`redo`:return this._guardCommand(e,()=>this.editSessionManager.redo());case`next-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`forward`));case`previous-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`backward`));case`toggle-manipulator-follow`:this.interactiveHandleManager?.toggleFollow()&&M(e);break;case`viewpoint-moved`:return await this._handleViewpointMovedCommand(e);case`manipulator-move-to`:return await this._handleManipulatorMoveToCommand(e);case`manipulator-drag-to`:return await this._handleManipulatorDragToCommand(e);case`vertex-add-at-point`:return await this._handleVertexAddAtPointCommand(e);case`show-tooltip`:return this._guardCommand(e,async()=>{let t=this.tooltipManager?.tooltip;t&&ne(t.info)&&(await t.enterInputMode(),M(e))});case`constraint-center`:this.globalStateManager.setCentered(e.enabled);break;case`constraint-aspect`:this.globalStateManager.setPreserveAspectRatio(e.enabled)}}}async _handleViewDragCommand(e){if(!this.editable)return;let t=e.originalEvent,n=this.interactiveHandleManager?.capturingHandle;if(t&&`pointerType`in t&&t.pointerType===`touch`&&(n?.captureMode===`capture-always`||n?.captureMode===`capture-when-engaged`)){M(e);return}if(this.interactiveHandleManager?.capturingHandle?.captureMode===`capture-when-engaged`){M(e);return}if(this._before(e)){M(e);return}}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(M(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:t,pointerId:n})),this.interactiveHandleManager?.updateAllScreenPositions(this.movementCommandContext.surfaceManager)}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&M(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e),i=this.interactiveHandleManager?.findHandleByManipulator(r,t);t===`touch`&&i&&e.state===`start`&&this.interactiveHandleManager?.releaseHandle();let a=this.interactiveHandleManager?.findHandleDragging(),o=this.interactiveHandleManager?.capturingHandle,s=a??o??i;s&&!i&&M(e),s?.captureMode===`capture-when-engaged`||s?.captureMode===`capture-always`&&t===`touch`?e.state===`end`?await this._updatingHandles.addPromise(s.noteDragEnd(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&s.role===`primary`&&(this.interactiveHandleManager?.handleCount===1?this._handleCommand({action:`vertex-add`}):this.interactiveHandleManager?.releaseHandle())})):e.state===`start`?await this._updatingHandles.addPromise(s.noteDragStart(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&!s.editSession?.lastPointAddedBySession&&this._handleCommand({action:`vertex-add`})})):await this._updatingHandles.addPromise(s?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})):s?.captureMode===`grabbable-object`&&(this.interactiveHandleManager?.releaseHandle(o),await this._updatingHandles.addPromise(s.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})))}async _handleVertexAddAtPointCommand(e){let t=this._updateLastScreenPosition(e),n=N(e.originalEvent),r=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(r,n))return;let i=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t,n);this.editable&&i&&(this._before(e)||(M(e),await this._updatingHandles.addPromise(i.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:n,pointerId:r}).finally(()=>this._commitNext()))))}_makeKeyBindings(){let e=new q,t=(t,n)=>{e.addToggle(t,e=>this._handleCommand({action:n,originalEvent:e,enabled:e.type===`key-down`}))},n=(t,n)=>{e.add(t,e=>this._handleCommand({action:n,originalEvent:e}))};return t(J.preserveAspectRatio,`constraint-aspect`),t(Y.center,`constraint-center`),n(X.toggleFollowManipulator,`toggle-manipulator-follow`),n(Y.undo,`undo`),n(Y.redo,`redo`),n(Y.complete,`complete`),n(Y.vertexAdd,`vertex-add`),n({key:Z.enterInputMode,continuePropagation:!0,repeats:!0},`show-tooltip`),e}_afterAttach(){}_afterDetach(e){this.interactiveHandleManager?.unregisterCustomConstraint(e),this.interactiveHandleManager?.unregisterHandle(e),this.tooltipManager?.unregisterPluginFields(e),this.globalStateManager.clearPluginOverrides(e);let t=this._pluginContexts.get(e);t&&(t.destroy(),this._pluginContexts.delete(e))}_beforeResume(e,t){this.interactiveHandleManager?.replaceEditSessions(e,t)}_commitNext(){let n={stack:[],error:void 0,hasError:!1};try{let t=this.mostDownstreamPlugin;if(!t)return;this.tooltipManager?.storeConstraintSnapshot();let r=this.tooltipManager?.getFieldsToUnlockOnVertexPlacement()??[],i=!1,o=this.editGeometryOperations;e(n,o?a(o.on(`vertex-add`,()=>i=!0)):null,!1),t.completeStep?t.completeStep():this.complete(t),i&&this.tooltipManager?.unlockOnVertexPlacement(r)}catch(e){n.error=e,n.hasError=!0}finally{t(n)}}_suspendPlugin(e){this.lifecycleManager.suspend(e),this.measurementManager.suspendPlugin(e)}_resumePlugin(e){this.lifecycleManager.resume(e)}_updateLastScreenPosition(e){let t=_(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){let n=s(this._pluginContexts,e,()=>new F({drawTool:this,plugin:e,session:t}));return n.session=t,n}_before(e){if(!this.hasEventListener(`before-${e.action}`))return!1;let t=new CustomEvent(`before-${e.action}`,{detail:e,cancelable:!0});return this.emit(`before-${e.action}`,t),t.defaultPrevented}_guardCommand(e,t,n){return this._before(e)?n?.():t()}async _setupSegmentLabels(){let e=this.editGeometryOperations,t=this.toolOptions?.labels,n=!!t?.enabled,r=this.globalStateManager.segmentLabelsDisabled;if(!e||!t||!n){this._segmentLabels=c(this._segmentLabels);return}if(r){this._segmentLabels&&(this._segmentLabels.visible=!1);return}if(this._segmentLabels?.context?.editGeometryOperations===e&&this._segmentLabels.context.labelOptions===t){this._segmentLabels.visible=!0;return}let i=await this._createSegmentLabels(e,t);i&&(this._segmentLabels=c(this._segmentLabels),this._segmentLabels=i)}async _createSegmentLabels(e,t){this._segmentLabelsImportTask?.abort();let n=this._segmentLabelsImportTask=r(async n=>{if(this.view.type===`3d`){let r=import(`../3d/interactive/SegmentLabels3D.js`),{SegmentLabels3D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})}let r=import(`../2d/interactive/SegmentLabels2D.js`),{SegmentLabels2D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})});return u(n.promise)}_isSegmentLabelsSetupStale(e,t,n){return e.aborted||this.editGeometryOperations!==t||this.toolOptions?.labels!==n||!n.enabled||this.globalStateManager.segmentLabelsDisabled}};n([y()],$.prototype,`_commandsSuspended`,void 0),n([y()],$.prototype,`_zOfLastUserInput`,null),n([y()],$.prototype,`_snappingVisualizer`,void 0),n([y()],$.prototype,`_segmentLabels`,void 0),n([y()],$.prototype,`_segmentLabelsImportTask`,void 0),n([y()],$.prototype,`_tooltipDependencies`,null),n([y()],$.prototype,`_editSessionManagerContext`,null),n([y()],$.prototype,`_densificationParameters`,null),n([y({constructOnly:!0,nonNullable:!0})],$.prototype,`view`,void 0),n([y()],$.prototype,`automaticManipulatorSelection`,void 0),n([y()],$.prototype,`updating`,null),n([y()],$.prototype,`coordinateHelper`,null),n([y()],$.prototype,`editGeometry`,null),n([y()],$.prototype,`editGeometryOperations`,null),n([y()],$.prototype,`unprocessedGeometry`,null),n([y()],$.prototype,`simplifiedGeometryPreview`,null),n([y()],$.prototype,`_suppressCoincidentPointOverlaysIn3D`,null),n([y()],$.prototype,`_shapeVisualGeometry`,null),n([y()],$.prototype,`_vertexVisualGeometry`,null),n([y()],$.prototype,`snappingManager`,void 0),n([y()],$.prototype,`toolOptions`,void 0),n([y()],$.prototype,`disableTouchDrag`,void 0),n([y()],$.prototype,`elevationInfo`,void 0),n([y()],$.prototype,`hasZ`,void 0),n([y()],$.prototype,`defaultZ`,void 0),n([y()],$.prototype,`directionOptions`,void 0),n([y()],$.prototype,`canUndo`,null),n([y()],$.prototype,`canRedo`,null),n([y()],$.prototype,`pluginStack`,null),n([y()],$.prototype,`mostDownstreamPlugin`,null),n([y()],$.prototype,`mostUpstreamPlugin`,null),n([y()],$.prototype,`lastScreenPosition`,void 0),n([y()],$.prototype,`positionOfLastUserInput`,null),n([y()],$.prototype,`tooltipManager`,void 0),n([y()],$.prototype,`measurementManager`,void 0),n([y()],$.prototype,`globalStateManager`,void 0),n([y()],$.prototype,`editSessionManager`,void 0),n([y()],$.prototype,`lifecycleManager`,void 0),n([y()],$.prototype,`surfaceManager`,void 0),n([y()],$.prototype,`interactiveHandleManager`,void 0),n([y()],$.prototype,`renderer`,void 0),n([y()],$.prototype,`readPluginSetting`,void 0),n([y()],$.prototype,`movementCommandContext`,null),n([y()],$.prototype,`tooltip`,null),n([y()],$.prototype,`activeTooltipInfo`,null),n([y()],$.prototype,`helpMessageKey`,null),n([y({constructOnly:!0})],$.prototype,`enableVertexVisuals`,void 0),$=n([b(`esri.views.draw.DrawTool`)],$);export{$ as DrawTool};
@@ -137,7 +137,7 @@ export interface DirectionsProperties extends WidgetProperties, Partial<Pick<Dir
137
137
  * @since 4.6
138
138
  * @see [DirectionsViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/Directions/DirectionsViewModel/)
139
139
  * @see [RouteLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/RouteLayer/)
140
- * @see [Guide topic - Access secure resources](https://developers.arcgis.com/javascript/latest/secure-resources/)
140
+ * @see [Guide topic - Authentication and access tokens](https://developers.arcgis.com/javascript/latest/authentication/access-tokens/)
141
141
  * @see [Sample - Directions widget](https://developers.arcgis.com/javascript/latest/sample-code/widgets-directions/)
142
142
  * @example
143
143
  * // 1. Add empty RouteLayer to Directions widget