@arcgis/core 5.1.0-next.46 → 5.1.0-next.48

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 (131) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{521a671182b0f79e3624.js → 193775b3b7de8f5dc578.js} +1 -1
  3. package/assets/esri/core/workers/chunks/{c0ecb68387e342dddf58.js → 25509953f19fbc4949a1.js} +1 -1
  4. package/assets/esri/core/workers/chunks/2669a7195f1de21a9cf3.js +1 -0
  5. package/assets/esri/core/workers/chunks/36425d29aaa5852cb41d.js +1 -0
  6. package/assets/esri/core/workers/chunks/440a650ed0867a16f559.js +1 -0
  7. package/assets/esri/core/workers/chunks/{aa367ca7f8326fd67881.js → 4afddb66242438b38df0.js} +1 -1
  8. package/assets/esri/core/workers/chunks/5344919fc6e8050450f1.js +1 -0
  9. package/assets/esri/core/workers/chunks/53c149bca42595b7dd1e.js +1 -0
  10. package/assets/esri/core/workers/chunks/{6afdaa6c4555c467dca7.js → 54420b66fd53d6e19ba5.js} +1 -1
  11. package/assets/esri/core/workers/chunks/797bf402489b3677a5f7.js +1 -0
  12. package/assets/esri/core/workers/chunks/{5c830cce32710d70dfa6.js → 7dba4121cdd20dbc4b20.js} +1 -1
  13. package/assets/esri/core/workers/chunks/947a715b608c8affd812.js +1 -0
  14. package/assets/esri/core/workers/chunks/{ce0a6bc9df30af778ac9.js → 9f7b5749f3ceca8d5978.js} +12 -9
  15. package/assets/esri/core/workers/chunks/aa69cbaa38b49677ddff.js +1 -0
  16. package/assets/esri/core/workers/chunks/{beb53b372d356800f333.js → ab414a60808ea05a63e6.js} +1 -1
  17. package/assets/esri/core/workers/chunks/b98dd9fc9a7e3ff6bd49.js +1 -0
  18. package/assets/esri/core/workers/chunks/cb8c17daec7055bf99cc.js +1 -0
  19. package/assets/esri/core/workers/chunks/cd491c37ba1ac381178c.js +1 -0
  20. package/assets/esri/core/workers/chunks/{a9f35127c3f5bf42036b.js → de359f89e03da18999fc.js} +1 -1
  21. package/chunks/Fog.glsl.js +3 -3
  22. package/chunks/GlowComposition.glsl.js +5 -3
  23. package/chunks/OITBlend.glsl.js +2 -1
  24. package/config.js +1 -1
  25. package/core/has.js +1 -1
  26. package/core/workers/Connection.js +1 -1
  27. package/core/workers/WorkerHandle.js +1 -1
  28. package/core/workers/workers.js +1 -1
  29. package/geometry/support/curves/bezierCurveUtils.js +1 -1
  30. package/kernel.js +1 -1
  31. package/layers/Layer.d.ts +2 -1
  32. package/layers/Lyr3DWorkerHandle.js +1 -1
  33. package/layers/ParquetLayer.d.ts +23 -1
  34. package/layers/graphics/data/QueryEngineResult.js +1 -1
  35. package/layers/support/LayerContingentValuesCache.js +1 -1
  36. package/layers/support/RasterJobHandler.js +1 -1
  37. package/layers/support/arcgisLayers.js +1 -1
  38. package/layers/support/layerUtils.js +1 -1
  39. package/package.json +1 -1
  40. package/smartMapping/statistics/support/statsWorker.js +1 -1
  41. package/support/revision.js +1 -1
  42. package/time/TimeExtent.d.ts +34 -0
  43. package/time/TimeInterval.d.ts +15 -0
  44. package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
  45. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  46. package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
  47. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  48. package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
  49. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  50. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillVisualization.js +1 -1
  51. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  52. package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
  53. package/views/3d/interactive/visualElements/MeasurementAreaVisualElement.js +1 -1
  54. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  55. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  56. package/views/3d/layers/FlowSubView3D.js +1 -1
  57. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  58. package/views/3d/layers/I3SMeshView3D.js +1 -1
  59. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  60. package/views/3d/layers/SceneLayerWorkerHandle.js +1 -1
  61. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  62. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  63. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  64. package/views/3d/layers/i3s/Highlights.js +1 -1
  65. package/views/3d/layers/i3s/Intersector.js +1 -1
  66. package/views/3d/layers/support/patternUtils.js +1 -1
  67. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
  68. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  69. package/views/3d/support/gaussianSplatting/GaussianSplatFadeTexture.js +1 -1
  70. package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +1 -1
  71. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  72. package/views/3d/terrain/TerrainRenderer.js +1 -1
  73. package/views/3d/webgl-engine/collections/Component/ComponentObject.js +1 -1
  74. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  75. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterialGlobalParameters.js +2 -0
  76. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterialRepository.js +1 -1
  77. package/views/3d/webgl-engine/collections/Component/Material/ComponentTechnique.js +1 -1
  78. package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
  79. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  80. package/views/3d/webgl-engine/effects/fog/Fog.glsl.js +1 -1
  81. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  82. package/views/3d/webgl-engine/effects/fog/FogTechniqueConfiguration.js +1 -1
  83. package/views/3d/webgl-engine/effects/glow/GlowBlurTechniqueConfiguration.js +1 -1
  84. package/views/3d/webgl-engine/effects/glow/GlowComposition.glsl.js +1 -1
  85. package/views/3d/webgl-engine/effects/glow/GlowCompositionTechniqueConfiguration.js +1 -1
  86. package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +1 -1
  87. package/views/3d/webgl-engine/effects/transparency/OITBlend.js +1 -1
  88. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  89. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  90. package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
  91. package/views/3d/webgl-engine/lib/Material.js +1 -1
  92. package/views/3d/webgl-engine/lib/OrderIndependentTransparency.js +1 -1
  93. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  94. package/views/3d/webgl-engine/lib/intersectorUtilsConversions.js +1 -1
  95. package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
  96. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  97. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  98. package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
  99. package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
  100. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  101. package/views/3d/webgl-engine/materials/PolygonOffset.js +2 -0
  102. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  103. package/views/3d/webgl-engine/materials/SlicePlaneMaterial.js +1 -1
  104. package/views/3d/webgl-engine/materials/TriangleMaterial.js +1 -1
  105. package/views/3d/webgl-engine/materials/TriangleTechniqueConfiguration.js +1 -1
  106. package/views/3d/webgl-engine/shaders/ColorMaterialTechnique.js +1 -1
  107. package/views/3d/webgl-engine/shaders/DefaultMaterialTechniqueConfiguration.js +1 -1
  108. package/views/3d/webgl-engine/shaders/Dithering.glsl.js +4 -0
  109. package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
  110. package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +11 -10
  111. package/views/3d/webgl-engine/shaders/PatternTechnique.js +1 -1
  112. package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
  113. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  114. package/views/3d/webgl-engine/shaders/ShadedColorMaterialTechnique.js +1 -1
  115. package/views/3d/webgl-engine/shaders/ShadedColorMaterialTechniqueConfiguration.js +1 -1
  116. package/views/SceneView.d.ts +2 -1
  117. package/views/SceneView.js +1 -1
  118. package/views/support/LayerViewManager.js +1 -1
  119. package/views/types.d.ts +33 -2
  120. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  121. package/assets/esri/core/workers/chunks/0601c316da0256a60538.js +0 -1
  122. package/assets/esri/core/workers/chunks/13d55e3c9aea04116eaa.js +0 -1
  123. package/assets/esri/core/workers/chunks/54c1d31e1efab765ee7a.js +0 -1
  124. package/assets/esri/core/workers/chunks/5b515b5741733bcb4645.js +0 -1
  125. package/assets/esri/core/workers/chunks/7f07f490c6fcc794c8d9.js +0 -1
  126. package/assets/esri/core/workers/chunks/abcb39ad1e2d54710766.js +0 -1
  127. package/assets/esri/core/workers/chunks/c2aa3b1344b42a904234.js +0 -1
  128. package/assets/esri/core/workers/chunks/cf5e4cf9b1aa37eeb6b0.js +0 -1
  129. package/assets/esri/core/workers/chunks/e63046a9567d84228644.js +0 -1
  130. package/assets/esri/core/workers/chunks/f4ec2dcdc4bbf7dbcc94.js +0 -1
  131. package/assets/esri/core/workers/chunks/fce8d4ff920baf8856e6.js +0 -1
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[2733],{83960(e,t,r){r.d(t,{X_:()=>s,oW:()=>o,zx:()=>a});var i=r(34727),n=r(86211);function s(e,t){const r=t||e.extent,i=e.width,s=(0,n.GA)(r?.spatialReference);return r&&i?r.width/i*s*n.dy*96:0}function a(e,t,r){return function(e,t){return 0===t||(0,i.Sp)(e,t)||e<t}(e,t)&&function(e,t){return 0===t||(0,i.Sp)(e,t)||e>t}(e,r)}function o(e,t){return(0,i.Sp)(e,t)?0:(e||Number.POSITIVE_INFINITY)>(t||Number.POSITIVE_INFINITY)?1:-1}},4146(e,t,r){r.d(t,{A:()=>v});var i=r(5482),n=r(11254),s=r(49186),a=r(65529),o=r(4902),l=r(92474),u=r(53966),p=r(17676),d=r(84952),y=r(91429),c=r(5443),m=r(16930),h=r(92602),f=r(79677);let g=0,v=class extends((0,a.Zt)((0,o.s)(l.x_))){constructor(){super(...arguments),this.attributionDataUrl=null,this.fullExtent=new c.A(-180,-90,180,90,m.A.WGS84),this.id=Date.now().toString(16)+"-layer-"+g++,this.legendEnabled=!0,this.listMode="show",this.opacity=1,this.parent=null,this.persistenceEnabled=!1,this.popupEnabled=!0,this.attributionVisible=!0,this.spatialReference=m.A.WGS84,this.title=null,this.type=null,this.url=null,this.visibilityTimeExtent=null,this.visible=!0}static async fromArcGISServerUrl(e){const t="string"==typeof e?{url:e}:e;return(await Promise.all([r.e(812),r.e(7982)]).then(r.bind(r,27982))).fromUrl(t)}static fromPortalItem(e){return async function(e){const t="portalItem"in e?e:{portalItem:e},{fromItem:i}=await Promise.all([r.e(812),r.e(5613),r.e(5710)]).then(r.bind(r,45613));try{return await i(t)}catch(e){const r=t?.portalItem,i=r?.id||"unset",n=r?.portal?.url||h.A.portalUrl;throw u.A.getLogger("esri.layers.support.fromPortalItem").error("#fromPortalItem()","Failed to create layer from portal item (portal: '"+n+"', id: '"+i+"')",e),e}}(e)}initialize(){this.when().catch(e=>{(0,p.zf)(e)||u.A.getLogger(this).error("#load()",`Failed to load layer (title: '${this.title??"no title"}', id: '${this.id??"no id"}')`,{error:e})})}destroy(){const{parent:e}=this;e&&(this.parent=null,e.removeChildLayer?.(this))}get effectiveVisible(){return this.visible&&(this.parent?.effectiveVisible??!0)}get hasAttributionData(){return null!=this.attributionDataUrl}get loaded(){return super.loaded}removeFromParent(){const{parent:e}=this;e&&(e.removeChildLayer?.(this),this.parent=null)}get parsedUrl(){return(0,d.An)(this.url)}createLayerView(e,t){return Promise.reject(new s.A("layer:create-layer-view","Layer does not support creating a layer view"))}async fetchAttributionData(){const e=this.attributionDataUrl;if(this.hasAttributionData&&e)return(await(0,n.A)(e,{query:{f:"json"},responseType:"json"})).data;throw new s.A("layer:no-attribution-data","Layer does not have attribution data")}};(0,i.Cg)([(0,y.MZ)({type:String})],v.prototype,"attributionDataUrl",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0})],v.prototype,"effectiveVisible",null),(0,i.Cg)([(0,y.MZ)({type:c.A})],v.prototype,"fullExtent",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0})],v.prototype,"hasAttributionData",null),(0,i.Cg)([(0,y.MZ)({type:String,clonable:!1})],v.prototype,"id",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean,nonNullable:!0})],v.prototype,"legendEnabled",void 0),(0,i.Cg)([(0,y.MZ)({type:["show","hide","hide-children"]})],v.prototype,"listMode",void 0),(0,i.Cg)([(0,y.MZ)({type:Number,range:{min:0,max:1},nonNullable:!0})],v.prototype,"opacity",void 0),(0,i.Cg)([(0,y.MZ)({clonable:!1})],v.prototype,"parent",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0})],v.prototype,"parsedUrl",null),(0,i.Cg)([(0,y.MZ)({type:Boolean,readOnly:!0})],v.prototype,"persistenceEnabled",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean})],v.prototype,"popupEnabled",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean})],v.prototype,"attributionVisible",void 0),(0,i.Cg)([(0,y.MZ)({type:m.A})],v.prototype,"spatialReference",void 0),(0,i.Cg)([(0,y.MZ)({type:String})],v.prototype,"title",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0,json:{read:!1}})],v.prototype,"type",void 0),(0,i.Cg)([(0,y.MZ)()],v.prototype,"url",void 0),(0,i.Cg)([(0,y.MZ)({type:f.A})],v.prototype,"visibilityTimeExtent",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean,nonNullable:!0})],v.prototype,"visible",void 0),v=(0,i.Cg)([(0,y.$K)("esri.layers.Layer")],v)},7656(e,t,r){r.r(t),r.d(t,{default:()=>q});var i=r(5482),n=r(11254),s=r(7762),a=r(49186),o=r(81583),l=r(25728),u=r(17676),p=r(86211),d=r(91429),y=r(56507),c=r(35666),m=r(5443),h=r(83960),f=r(21325),g=r(4146),v=r(52136),b=r(98534),w=r(18768),C=r(63074),S=r(69208),I=r(16131),M=r(8303),x=r(54310),T=r(25036),A=r(91921),Z=r(82935),E=r(10873),O=r(69622),L=r(39516);function j(e,t){return"floorInfo"in t&&t.floorInfo?.floorField?function(e,t){if(!e?.length)return null;const r=e.filter(e=>""!==e).map(e=>`'${e}'`);return r.push("''"),`${t} IN (${r.join(",")}) OR ${t} IS NULL`}(e,t.floorInfo.floorField):null}var N=r(63389);const D={visible:"visibleSublayers",definitionExpression:"layerDefs",labelingInfo:"hasDynamicLayers",labelsVisible:"hasDynamicLayers",opacity:"hasDynamicLayers",minScale:"visibleSublayers",maxScale:"visibleSublayers",renderer:"hasDynamicLayers",source:"hasDynamicLayers"};let P=class extends O.A{constructor(e){super(e),this.floors=null,this.scale=0}destroy(){this.layer=null}get dynamicLayers(){if(!this.hasDynamicLayers)return null;const e=this.visibleSublayers.map(e=>{const t=j(this.floors,e);return e.toExportImageJSON(t)});return e.length?JSON.stringify(e):null}get hasDynamicLayers(){return this.layer&&(0,N.Sk)(this.visibleSublayers,this.layer.serviceSublayers,this.layer.gdbVersion)}set layer(e){this._get("layer")!==e&&(this._set("layer",e),this.removeHandles("layer"),e&&this.addHandles([e.allSublayers.on("change",()=>this.notifyChange("visibleSublayers")),e.on("sublayer-update",e=>this.notifyChange(D[e.propertyName]))],"layer"))}get layers(){const e=this.visibleSublayers;return e?e.length?"show:"+e.map(e=>e.id).join(","):"show:-1":null}get layerDefs(){const e=!!this.floors?.length,t=this.visibleSublayers.filter(t=>null!=t.definitionExpression||e&&null!=t.floorInfo);return t.length?JSON.stringify(t.reduce((e,t)=>{const r=j(this.floors,t),i=(0,L.mA)(r,t.definitionExpression);return null!=i&&(e[t.id]=i),e},{})):null}get version(){this.commitProperty("layers"),this.commitProperty("layerDefs"),this.commitProperty("dynamicLayers");const e=this.layer;return e&&(e.commitProperty("dpi"),e.commitProperty("imageFormat"),e.commitProperty("imageTransparency"),e.commitProperty("gdbVersion")),(this._get("version")||0)+1}get visibleSublayers(){const e=[];if(!this.layer)return e;const t=this.layer.sublayers,r=this.scale,i=t=>{t.visible&&(0===r||(0,h.zx)(r,t.minScale,t.maxScale))&&(t.sublayers?t.sublayers.forEach(i):e.unshift(t))};t?.forEach(i);const n=this._get("visibleSublayers");return!n||n.length!==e.length||n.some((t,r)=>e[r]!==t)?e:n}toJSON(){const e=this.layer;let t={dpi:e.dpi,format:e.imageFormat,transparent:e.imageTransparency,gdbVersion:e.gdbVersion||null};return this.hasDynamicLayers&&this.dynamicLayers?t.dynamicLayers=this.dynamicLayers:t={...t,layers:this.layers,layerDefs:this.layerDefs},t}};(0,i.Cg)([(0,d.MZ)({readOnly:!0})],P.prototype,"dynamicLayers",null),(0,i.Cg)([(0,d.MZ)()],P.prototype,"floors",void 0),(0,i.Cg)([(0,d.MZ)({readOnly:!0})],P.prototype,"hasDynamicLayers",null),(0,i.Cg)([(0,d.MZ)()],P.prototype,"layer",null),(0,i.Cg)([(0,d.MZ)({readOnly:!0})],P.prototype,"layers",null),(0,i.Cg)([(0,d.MZ)({readOnly:!0})],P.prototype,"layerDefs",null),(0,i.Cg)([(0,d.MZ)({type:Number})],P.prototype,"scale",void 0),(0,i.Cg)([(0,d.MZ)({readOnly:!0})],P.prototype,"version",null),(0,i.Cg)([(0,d.MZ)({readOnly:!0})],P.prototype,"visibleSublayers",null),P=(0,i.Cg)([(0,d.$K)("esri.layers.support.ExportImageParameters")],P);var F=r(33446),U=r(15775),_=r(91908),R=r(88625),V=r(79677),k=r(56400),B=r(36005),$=r(43937);let J=class extends((0,C.dM)((0,Z.e)((0,T.j)((0,A.I)((0,b.V)((0,w.b)((0,I.q)((0,M.A)((0,l.M)((0,x.J)((0,v.p)((0,S.d)(g.A))))))))))))){constructor(...e){super(...e),this._exportImageParameters=new P({layer:this}),this.dateFieldsTimeZone=null,this.datesInUnknownTimezone=!1,this.dpi=96,this.elevationInfo=new R.A({mode:"on-the-ground"}),this.gdbVersion=null,this.imageFormat="png24",this.imageMaxHeight=2048,this.imageMaxWidth=2048,this.imageTransparency=!0,this.isReference=null,this.labelsVisible=!1,this.operationalLayerType="ArcGISMapServiceLayer",this.preferredTimeZone=null,this.sourceJSON=null,this.sublayers=null,this.type="map-image",this.url=null,this._debouncedSaveOperations=(0,u.sg)(async(e,t,i)=>{const{save:n,saveAs:s}=await r.e(390).then(r.bind(r,10390));switch(e){case 0:return n(this,t);case 1:return s(this,i,t)}})}normalizeCtorArgs(e,t){return"string"==typeof e?{url:e,...t}:e}load(e){const t=null!=e?e.signal:null;return this.addResolvingPromise(this.loadFromPortal({supportedTypes:["Map Service"]},e).catch(u.QP).then(()=>this._fetchService(t))),Promise.resolve(this)}destroy(){this._exportImageParameters.destroy()}readImageFormat(e,t){const r=t.supportedImageFormatTypes;return r&&r.includes("PNG32")?"png32":"png24"}get loaded(){return super.loaded}get portalItem(){return super.portalItem}set portalItem(e){super.portalItem=e}writeSublayers(e,t,r,i){if(!this.loaded||!e)return;const n=e.slice().reverse().flatten(({sublayers:e})=>e&&e.toArray().reverse()).toArray();let s=!1;const a=(0,c.aB)(i.origin);let o;if(this.capabilities?.operations.supportsExportMap&&this.capabilities?.exportMap?.supportsDynamicLayers)if(3===a){const e=this.createSublayersForOrigin("service").sublayers;s=(0,N.Zx)(n,e,2)}else if(a>3){const e=this.createSublayersForOrigin("portal-item");s=(0,N.Zx)(n,e.sublayers,(0,c.aB)(e.origin)),o=e.originWithPartialOverrides}const l=[],u={writeSublayerStructure:s,...i,minimumWritableOrigin:o};let p=s||this.hasVisibleLayersForOrigin(a);n.forEach(e=>{const t=e.write({},u);l.push(t),p=p||"user"===e.originOf("visible")}),l.some(e=>Object.keys(e).length>1)&&(t.layers=l),p&&(t.visibleLayers=n.filter(e=>e.visible).map(e=>e.id))}createExportImageParameters(e,t,r,i){const n=i?.pixelRatio||1;e&&this.version>=10&&(e=e.clone().shiftCentralMeridian()),this._exportImageParameters.floors=i?.floors??null,this._exportImageParameters.scale=i?.scale||(0,h.X_)({extent:e,width:t})*n;const s=this._exportImageParameters.toJSON(),a=!i?.rotation||this.version<10.3?{}:{rotation:-i.rotation},o=e?.spatialReference,l=(0,f.YX)(o);if(i?.scale&&e){const r=e.width/t*((0,p.GA)(e?.spatialReference)*p.dy);s.dpi=i.scale/r}s.dpi*=n;const u={};if(i?.timeExtent){const{start:e,end:t}=i.timeExtent.toJSON();u.time=e&&t&&e===t?""+e:`${e??"null"},${t??"null"}`}else this.timeInfo&&!this.timeInfo.hasLiveData&&(u.time="null,null");return{bbox:e?e.xmin+","+e.ymin+","+e.xmax+","+e.ymax:void 0,bboxSR:l,imageSR:l,size:t+","+r,...s,...a,...u}}async fetchImage(e,t,r,i){const{data:n}=await this._fetchImage("image",e,t,r,i);return n}async fetchImageBitmap(e,t,r,i){const{data:n,url:s}=await this._fetchImage("blob",e,t,r,i);return(0,F.m)(n,s,i?.signal)}async fetchRecomputedExtents(e={}){const t={...e,query:{returnUpdates:!0,f:"json",...this.customParameters,token:this.apiKey}},{data:r}=await(0,n.A)(this.url,t),{extent:i,fullExtent:s,timeExtent:a}=r,o=i||s;return{fullExtent:o&&m.A.fromJSON(o),timeExtent:a&&V.A.fromJSON({start:a[0],end:a[1]})}}loadAll(){return(0,o.g)(this,e=>{e(this.allSublayers),e(this.subtables)})}async save(e){return this._debouncedSaveOperations(0,e)}async saveAs(e,t){return this._debouncedSaveOperations(1,t,e)}serviceSupportsSpatialReference(e){return(0,_.D)(this,e)}async _fetchImage(e,t,r,i,s){const o={responseType:e,signal:s?.signal??null,query:{...this.parsedUrl.query,...this.createExportImageParameters(t,r,i,s),f:"image",...this.refreshParameters,...this.customParameters,token:this.apiKey}},l=this.parsedUrl.path+"/export";if(null!=o.query?.dynamicLayers&&!this.capabilities?.exportMap?.supportsDynamicLayers)throw new a.A("mapimagelayer:dynamiclayer-not-supported",`service ${this.url} doesn't support dynamic layers, which is required to be able to change the sublayer's order, rendering, labeling or source.`,{query:o.query});try{const{data:e}=await(0,n.A)(l,o);return{data:e,url:l}}catch(e){if((0,u.zf)(e))throw e;throw new a.A("mapimagelayer:image-fetch-error",`Unable to load image: ${l}`,{error:e})}}async _fetchService(e){if(this.sourceJSON)return void this.read(this.sourceJSON,{origin:"service",url:this.parsedUrl});const{data:t,ssl:r}=await(0,n.A)(this.parsedUrl.path,{query:{f:"json",...this.parsedUrl.query,...this.customParameters,token:this.apiKey},signal:e});r&&(this.url=this.url.replace(/^http:/i,"https:")),this.sourceJSON=t,this.read(t,{origin:"service",url:this.parsedUrl})}hasVisibleLayersForOrigin(e){return!(null==e||!this.sublayersSourceJSON[e]?.visibleLayers)}};(0,i.Cg)([(0,d.MZ)((0,k.P6)("dateFieldsTimeReference"))],J.prototype,"dateFieldsTimeZone",void 0),(0,i.Cg)([(0,d.MZ)({type:Boolean})],J.prototype,"datesInUnknownTimezone",void 0),(0,i.Cg)([(0,d.MZ)()],J.prototype,"dpi",void 0),(0,i.Cg)([(0,d.MZ)()],J.prototype,"elevationInfo",void 0),(0,i.Cg)([(0,d.MZ)()],J.prototype,"gdbVersion",void 0),(0,i.Cg)([(0,d.MZ)()],J.prototype,"imageFormat",void 0),(0,i.Cg)([(0,B.w)("imageFormat",["supportedImageFormatTypes"])],J.prototype,"readImageFormat",null),(0,i.Cg)([(0,d.MZ)({json:{origins:{service:{read:{source:"maxImageHeight"}}}}})],J.prototype,"imageMaxHeight",void 0),(0,i.Cg)([(0,d.MZ)({json:{origins:{service:{read:{source:"maxImageWidth"}}}}})],J.prototype,"imageMaxWidth",void 0),(0,i.Cg)([(0,d.MZ)()],J.prototype,"imageTransparency",void 0),(0,i.Cg)([(0,d.MZ)({type:Boolean,json:{read:!1,write:{enabled:!0,overridePolicy:()=>({enabled:!1})}}})],J.prototype,"isReference",void 0),(0,i.Cg)([(0,d.MZ)({json:{read:!1,write:!1}})],J.prototype,"labelsVisible",void 0),(0,i.Cg)([(0,d.MZ)({type:["ArcGISMapServiceLayer"]})],J.prototype,"operationalLayerType",void 0),(0,i.Cg)([(0,d.MZ)({json:{read:!1,write:!1}})],J.prototype,"popupEnabled",void 0),(0,i.Cg)([(0,d.MZ)((0,k.P6)("preferredTimeReference"))],J.prototype,"preferredTimeZone",void 0),(0,i.Cg)([(0,d.MZ)()],J.prototype,"sourceJSON",void 0),(0,i.Cg)([(0,d.MZ)({type:s.A.ofType(U.A),json:{write:{ignoreOrigin:!0}}})],J.prototype,"sublayers",void 0),(0,i.Cg)([(0,$.K)("sublayers",{layers:{type:[U.A]},visibleLayers:{type:[y.jz]}})],J.prototype,"writeSublayers",null),(0,i.Cg)([(0,d.MZ)({type:["show","hide","hide-children"],json:{origins:{"portal-item":{read:!1,write:!1}}}})],J.prototype,"listMode",void 0),(0,i.Cg)([(0,d.MZ)({json:{read:!1},readOnly:!0,value:"map-image"})],J.prototype,"type",void 0),(0,i.Cg)([(0,d.MZ)(E.OZ)],J.prototype,"url",void 0),J=(0,i.Cg)([(0,d.$K)("esri.layers.MapImageLayer")],J);const q=J},82935(e,t,r){r.d(t,{B:()=>y,e:()=>c});var i=r(5482),n=r(91429),s=r(89317),a=r(30524),o=r(96184),l=r(73133),u=r(79677),p=r(10184),d=r(36005);const y={type:Boolean,json:{read:{source:"timeAnimation"},write:{target:"timeAnimation",layerContainerTypes:s.K}}},c=e=>{const t=e;let r=class extends t{constructor(){super(...arguments),this.timeExtent=null,this.timeOffset=null,this.useViewTime=!0}readOffset(e,t){const r=t.timeInfo.exportOptions;if(!r)return null;const i=r.timeOffset,n=l.j.fromJSON(r.timeOffsetUnits);return i&&n?new p.A({value:i,unit:n}):null}get timeInfo(){return this._get("timeInfo")}set timeInfo(e){(0,a.sv)(e,this.fieldsIndex),this._set("timeInfo",e)}};return(0,i.Cg)([(0,n.MZ)({type:u.A,json:{write:!1}})],r.prototype,"timeExtent",void 0),(0,i.Cg)([(0,n.MZ)({type:p.A})],r.prototype,"timeOffset",void 0),(0,i.Cg)([(0,d.w)("service","timeOffset",["timeInfo.exportOptions"])],r.prototype,"readOffset",null),(0,i.Cg)([(0,n.MZ)({value:null,type:o.A,json:{write:!0,origins:{"web-document":{read:!1,write:!1},"portal-item":{read:!1,write:!1}}}})],r.prototype,"timeInfo",null),(0,i.Cg)([(0,n.MZ)(y)],r.prototype,"useViewTime",void 0),r=(0,i.Cg)([(0,n.$K)("esri.layers.mixins.TemporalLayer")],r),r}},96184(e,t,r){r.d(t,{A:()=>c});var i=r(5482),n=r(69540),s=r(25482),a=r(91429),o=r(79677),l=r(10184),u=r(56400),p=r(36005),d=r(43937);function y(e,t){return l.A.fromJSON({value:e,unit:t})}let c=class extends((0,n.OU)(s.o)){constructor(e){super(e),this.cumulative=!1,this.endField=null,this.fullTimeExtent=null,this.hasLiveData=!1,this.interval=null,this.startField=null,this.timeZone=null,this.trackIdField=null,this.useTime=!0,this.stops=null}readFullTimeExtent(e,t){return t.timeExtent&&Array.isArray(t.timeExtent)&&2===t.timeExtent.length?o.A.fromArray(t.timeExtent):null}writeFullTimeExtent(e,t){null!=e?.start&&null!=e.end?t.timeExtent=e.toArray():t.timeExtent=null}readInterval(e,t){return t.timeInterval&&t.timeIntervalUnits?y(t.timeInterval,t.timeIntervalUnits):t.defaultTimeInterval&&t.defaultTimeIntervalUnits?y(t.defaultTimeInterval,t.defaultTimeIntervalUnits):null}writeInterval(e,t){t.timeInterval=e?.toJSON().value??null,t.timeIntervalUnits=e?.toJSON().unit??null}};(0,i.Cg)([(0,a.MZ)({type:Boolean,json:{name:"exportOptions.timeDataCumulative",write:!0}})],c.prototype,"cumulative",void 0),(0,i.Cg)([(0,a.MZ)({type:String,json:{name:"endTimeField",write:{enabled:!0,allowNull:!0}}})],c.prototype,"endField",void 0),(0,i.Cg)([(0,a.MZ)({type:o.A,json:{write:{enabled:!0,allowNull:!0}}})],c.prototype,"fullTimeExtent",void 0),(0,i.Cg)([(0,p.w)("fullTimeExtent",["timeExtent"])],c.prototype,"readFullTimeExtent",null),(0,i.Cg)([(0,d.K)("fullTimeExtent")],c.prototype,"writeFullTimeExtent",null),(0,i.Cg)([(0,a.MZ)({type:Boolean,json:{write:!0}})],c.prototype,"hasLiveData",void 0),(0,i.Cg)([(0,a.MZ)({type:l.A,json:{write:{enabled:!0,allowNull:!0}}})],c.prototype,"interval",void 0),(0,i.Cg)([(0,p.w)("interval",["timeInterval","timeIntervalUnits","defaultTimeInterval","defaultTimeIntervalUnits"])],c.prototype,"readInterval",null),(0,i.Cg)([(0,d.K)("interval")],c.prototype,"writeInterval",null),(0,i.Cg)([(0,a.MZ)({type:String,json:{name:"startTimeField",write:{enabled:!0,allowNull:!0}}})],c.prototype,"startField",void 0),(0,i.Cg)([(0,a.MZ)((0,u.P6)("timeReference",!0))],c.prototype,"timeZone",void 0),(0,i.Cg)([(0,a.MZ)({type:String,json:{write:{enabled:!0,allowNull:!0}}})],c.prototype,"trackIdField",void 0),(0,i.Cg)([(0,a.MZ)({type:Boolean,json:{name:"exportOptions.useTime",write:!0}})],c.prototype,"useTime",void 0),(0,i.Cg)([(0,a.MZ)({type:[Date],json:{read:!1}})],c.prototype,"stops",void 0),c=(0,i.Cg)([(0,a.$K)("esri.layers.support.TimeInfo")],c)},77548(e,t,r){r.d(t,{Gh:()=>A,tk:()=>S,BR:()=>C,p2:()=>b,qd:()=>I,wI:()=>w,G$:()=>x,$x:()=>M,Ov:()=>h,UC:()=>d,W_:()=>f,OP:()=>T,TU:()=>m,XX:()=>c,jy:()=>g});var i=r(70333),n=r(11254),s=r(7762),a=(r(84952),r(36563)),o=r(36708),l=r(4146);const u=new WeakMap;function p(e){return!e.destroyed&&(u.has(e)||e.addHandles([(0,o.wB)(()=>{const{parent:t}=e;return!!(t&&t instanceof l.A)&&("catalog-dynamic-group"===t.type||p(t))},t=>u.set(e,t),o.pc),(0,a.hA)(()=>u.delete(e))]),u.get(e))}function d(e){return null!=e&&"object"==typeof e&&"type"in e&&"knowledge-graph-sublayer"===e.type}function y(e){const t=e.parent;return function(e){return null!=e&&"type"in e&&"group"===e.type}(t)&&t.tables.includes(e)}r(16215);const c={Point:"SceneLayer","3DObject":"SceneLayer",IntegratedMesh:"IntegratedMeshLayer",PointCloud:"PointCloudLayer",Building:"BuildingSceneLayer"};function m(e){const t=e?.type;return"building-scene"===t||"integrated-mesh"===t||"point-cloud"===t||"scene"===t}function h(e){return"feature"===e?.type&&!e.url&&"memory"===e.source?.type}function f(e){const t=e?.type;return("feature"===t||"subtype-group"===t||"oriented-imagery"===t)&&"feature-layer"===e?.source?.type}function g(e){return function(e){return null!=e&&"object"==typeof e&&"type"in e&&"feature"===e.type}(e)&&function(e){return"feature"===e?.type&&"feature-layer"===e.source?.type}(e)}function v(e){const t=e?.type;return"binning"===t||"cluster"===t}function b(e,t){if(!g(e))return;const r=t?.graphic,i=e.featureReduction;if(r){if(r.isAggregate){const e=r.origin;return e&&"featureReductionProvider"in e&&i?v(i)?i:null:void 0}return e}return t?.checkFeatureReduction&&i?v(i)?i:null:e}async function w(e,t){const r=i.id?.findServerInfo(e);if(null!=r?.currentVersion)return r.owningSystemUrl||null;const s=e.toLowerCase().indexOf("/rest/services");if(-1===s)return null;const a=`${e.slice(0,s)}/rest/info`,o=null!=t?t.signal:null,{data:l}=await(0,n.A)(a,{query:{f:"json"},responseType:"json",signal:o});return l?.owningSystemUrl||null}function C(e){return function(e){if(!("capabilities"in e))return!1;switch(e.type){case"catalog":case"catalog-footprint":case"csv":case"feature":case"geojson":case"imagery":case"knowledge-graph-sublayer":case"ogc-feature":case"oriented-imagery":case"scene":case"sublayer":case"subtype-group":case"subtype-sublayer":case"wfs":return!0;default:return!1}}(e)?"effectiveCapabilities"in e?e.effectiveCapabilities:e.capabilities:null}function S(e){return!!function(e){if(!("editingEnabled"in e))return!1;switch(e.type){case"csv":case"feature":case"geojson":case"oriented-imagery":case"scene":case"subtype-group":case"subtype-sublayer":case"knowledge-graph-sublayer":return!0;default:return!1}}(e)&&("effectiveEditingEnabled"in e?e.effectiveEditingEnabled:e.editingEnabled)}function I(e){const t=new s.A;for(const r of e.allLayers.concat(e.allTables))p(r)||y(r)||("charts"in r&&t.push(r),"subtype-group"===r.type&&t.push(...r.sublayers));return t}function M(e,t){return null}function x(e){return null}function T(e){return!e||"Feature Service"===e.type&&!e.sourceUrl}function A(e,t){if(!t||!T(e))return;const r=(e.url,null);r&&(e.url=r)}},91908(e,t,r){r.d(t,{D:()=>s});var i=r(60694);const n=[];function s(e,t){if((0,i.Wo)(e.url??""))return!0;const{wkid:r}=t;for(const t of n){if((e.version??0)>=t[0])return!0;if("function"==typeof t[1]&&(t[1]=t[1]()),t[1].has(r))return!1}return!0}n.push([10.91,()=>{const e=new Set([9709,9716,9741,9761,9766]);for(let t=9712;t<=9713;t++)e.add(t);for(let t=9748;t<=9749;t++)e.add(t);for(let t=20904;t<=20932;t++)e.add(t);for(let t=21004;t<=21032;t++)e.add(t);for(let t=21207;t<=21264;t++)e.add(t);for(let t=21307;t<=21364;t++)e.add(t);for(let t=23301;t<=23333;t++)e.add(t);for(let t=102759;t<=102760;t++)e.add(t);for(let t=102934;t<=102955;t++)e.add(t);return e}]),n.push([10.9,()=>{const e=new Set([9300,9354,9364,9367,9373,9377,9387,9456,9473,9498,9678,9680,29874,103599,103872,104028]);for(let t=9356;t<=9360;t++)e.add(t);for(let t=9404;t<=9407;t++)e.add(t);for(let t=9476;t<=9482;t++)e.add(t);for(let t=9487;t<=9494;t++)e.add(t);for(let t=9697;t<=9699;t++)e.add(t);return e}]),n.push([10.81,()=>{const e=new Set([9265,9333,103598,103699]);for(let t=9248;t<=9254;t++)e.add(t);for(let t=9271;t<=9273;t++)e.add(t);for(let t=9284;t<=9285;t++)e.add(t);for(let t=21453;t<=21463;t++)e.add(t);return e}]),n.push([10.8,()=>{const e=new Set([8088,8395,8428,8433,8531,8687,8692,8694,8699,8900,9003,9006,9009,9012,9017,9191]);for(let t=8035;t<=8036;t++)e.add(t);for(let t=8455;t<=8456;t++)e.add(t);for(let t=8518;t<=8529;t++)e.add(t);for(let t=8533;t<=8536;t++)e.add(t);for(let t=8538;t<=8540;t++)e.add(t);for(let t=8677;t<=8679;t++)e.add(t);for(let t=8902;t<=8903;t++)e.add(t);for(let t=8907;t<=8910;t++)e.add(t);for(let t=8949;t<=8951;t++)e.add(t);for(let t=8972;t<=8987;t++)e.add(t);for(let t=9039;t<=9040;t++)e.add(t);for(let t=9068;t<=9069;t++)e.add(t);for(let t=9140;t<=9141;t++)e.add(t);for(let t=9148;t<=9150;t++)e.add(t);for(let t=9153;t<=9159;t++)e.add(t);for(let t=9205;t<=9218;t++)e.add(t);for(let t=9221;t<=9222;t++)e.add(t);for(let t=54098;t<=54101;t++)e.add(t);return e}]),n.push([10.71,()=>{const e=new Set([6316]);for(let t=8351;t<=8353;t++)e.add(t);for(let t=9294;t<=9297;t++)e.add(t);for(let t=22619;t<=22621;t++)e.add(t);for(let t=103586;t<=103594;t++)e.add(t);return e}])},16215(e,t,r){r.d(t,{S:()=>n,Y:()=>i});const i=Symbol("BasemapInstance");function n(e){return null!=e&&"object"==typeof e&&i in e}},79677(e,t,r){r.d(t,{A:()=>y});var i,n=r(5482),s=r(25482),a=r(88930),o=r(91429),l=r(98623),u=r(10184),p=r(36005),d=r(43937);let y=class extends s.o{static{i=this}static get allTime(){return c}static get empty(){return m}static fromArray(e){return new i({start:null!=e[0]?new Date(e[0]):e[0],end:null!=e[1]?new Date(e[1]):e[1]})}constructor(e){super(e),this.end=null,this.start=null}readEnd(e,t){return null!=t.end?new Date(t.end):null}writeEnd(e,t){t.end=e?.getTime()??null}get isAllTime(){return this.equals(i.allTime)}get isEmpty(){return this.equals(i.empty)}readStart(e,t){return null!=t.start?new Date(t.start):null}writeStart(e,t){t.start=e?.getTime()??null}clone(){return new i({end:this.end,start:this.start})}equals(e){if(!e)return!1;const t=this.start?.getTime()??this.start,r=this.end?.getTime()??this.end,i=e.start?.getTime()??e.start,n=e.end?.getTime()??e.end;return t===i&&r===n}expandTo(e,t=l.qU){if(this.isEmpty||this.isAllTime||"unknown"===e)return this.clone();let r=this.start;r&&(r=(0,a.lL)(r,new u.A({value:1,unit:e}),t));let n=this.end;if(n){const r=(0,a.lL)(n,new u.A({value:1,unit:e}),t);n=n.getTime()===r.getTime()?r:(0,a.S1)(r,1,e,t)}return new i({start:r,end:n})}intersection(e){if(!e)return this.clone();if(this.isEmpty||e.isEmpty)return i.empty;if(this.isAllTime)return e.clone();if(e.isAllTime)return this.clone();const t=this.start?.getTime()??-1/0,r=this.end?.getTime()??1/0,n=e.start?.getTime()??-1/0,s=e.end?.getTime()??1/0;let a,o;return n>=t&&n<=r?a=n:t>=n&&t<=s&&(a=t),r>=n&&r<=s?o=r:s>=t&&s<=r&&(o=s),null==a||null==o||isNaN(a)||isNaN(o)?i.empty:new i({start:a===-1/0?null:new Date(a),end:o===1/0?null:new Date(o)})}offset(e,t,r=l.qU){if(this.isEmpty||this.isAllTime||"unknown"===t)return this.clone();const n=new i,{start:s,end:o}=this;return null!=s&&(n.start=(0,a.S1)(s,e,t,r)),null!=o&&(n.end=(0,a.S1)(o,e,t,r)),n}toArray(){return this.isEmpty?[void 0,void 0]:[this.start?.getTime()??null,this.end?.getTime()??null]}union(e){if(!e||e.isEmpty)return this.clone();if(this.isEmpty)return e.clone();if(this.isAllTime||e.isAllTime)return c.clone();const t=null!=this.start&&null!=e.start?new Date(Math.min(this.start.getTime(),e.start.getTime())):null,r=null!=this.end&&null!=e.end?new Date(Math.max(this.end.getTime(),e.end.getTime())):null;return new i({start:t,end:r})}};(0,n.Cg)([(0,o.MZ)({type:Date,json:{write:{allowNull:!0}}})],y.prototype,"end",void 0),(0,n.Cg)([(0,p.w)("end")],y.prototype,"readEnd",null),(0,n.Cg)([(0,d.K)("end")],y.prototype,"writeEnd",null),(0,n.Cg)([(0,o.MZ)({readOnly:!0,json:{read:!1}})],y.prototype,"isAllTime",null),(0,n.Cg)([(0,o.MZ)({readOnly:!0,json:{read:!1}})],y.prototype,"isEmpty",null),(0,n.Cg)([(0,o.MZ)({type:Date,json:{write:{allowNull:!0}}})],y.prototype,"start",void 0),(0,n.Cg)([(0,p.w)("start")],y.prototype,"readStart",null),(0,n.Cg)([(0,d.K)("start")],y.prototype,"writeStart",null),y=i=(0,n.Cg)([(0,o.$K)("esri.time.TimeExtent")],y);const c=new y,m=new y({start:void 0,end:void 0})},10184(e,t,r){r.d(t,{A:()=>p});var i=r(5482),n=r(69540),s=r(25482),a=r(88930),o=r(91429),l=r(73133),u=r(93223);let p=class extends((0,n.OU)(s.o)){constructor(e){super(e),this.unit="milliseconds",this.value=0}toMilliseconds(){return(0,a.t)(this.value,this.unit,"milliseconds")}};(0,i.Cg)([(0,u.e)(l.j,{nonNullable:!0})],p.prototype,"unit",void 0),(0,i.Cg)([(0,o.MZ)({type:Number,json:{write:!0},nonNullable:!0})],p.prototype,"value",void 0),p=(0,i.Cg)([(0,o.$K)("esri.time.TimeInterval")],p)}}]);
1
+ "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[2733],{83960(e,t,r){r.d(t,{X_:()=>s,oW:()=>o,zx:()=>a});var i=r(34727),n=r(86211);function s(e,t){const r=t||e.extent,i=e.width,s=(0,n.GA)(r?.spatialReference);return r&&i?r.width/i*s*n.dy*96:0}function a(e,t,r){return function(e,t){return 0===t||(0,i.Sp)(e,t)||e<t}(e,t)&&function(e,t){return 0===t||(0,i.Sp)(e,t)||e>t}(e,r)}function o(e,t){return(0,i.Sp)(e,t)?0:(e||Number.POSITIVE_INFINITY)>(t||Number.POSITIVE_INFINITY)?1:-1}},4146(e,t,r){r.d(t,{A:()=>v});var i=r(5482),n=r(11254),s=r(49186),a=r(65529),o=r(4902),l=r(92474),u=r(53966),d=r(17676),p=r(84952),y=r(91429),c=r(5443),m=r(16930),h=r(92602),f=r(79677);let g=0,v=class extends((0,a.Zt)((0,o.s)(l.x_))){constructor(){super(...arguments),this.attributionDataUrl=null,this.fullExtent=new c.A(-180,-90,180,90,m.A.WGS84),this.id=Date.now().toString(16)+"-layer-"+g++,this.legendEnabled=!0,this.listMode="show",this.opacity=1,this.parent=null,this.persistenceEnabled=!1,this.popupEnabled=!0,this.attributionVisible=!0,this.spatialReference=m.A.WGS84,this.title=null,this.type=null,this.url=null,this.visibilityTimeExtent=null,this.visible=!0}static async fromArcGISServerUrl(e){const t="string"==typeof e?{url:e}:e;return(await Promise.all([r.e(812),r.e(7982)]).then(r.bind(r,27982))).fromUrl(t)}static fromPortalItem(e){return async function(e){const t="portalItem"in e?e:{portalItem:e},{fromItem:i}=await Promise.all([r.e(812),r.e(5613),r.e(5710)]).then(r.bind(r,45613));try{return await i(t)}catch(e){const r=t?.portalItem,i=r?.id||"unset",n=r?.portal?.url||h.A.portalUrl;throw u.A.getLogger("esri.layers.support.fromPortalItem").error("#fromPortalItem()","Failed to create layer from portal item (portal: '"+n+"', id: '"+i+"')",e),e}}(e)}initialize(){this.when().catch(e=>{(0,d.zf)(e)||u.A.getLogger(this).error("#load()",`Failed to load layer (title: '${this.title??"no title"}', id: '${this.id??"no id"}')`,{error:e})})}destroy(){const{parent:e}=this;e&&(this.parent=null,e.removeChildLayer?.(this))}get effectiveVisible(){return this.visible&&(this.parent?.effectiveVisible??!0)}get hasAttributionData(){return null!=this.attributionDataUrl}get loaded(){return super.loaded}removeFromParent(){const{parent:e}=this;e&&(e.removeChildLayer?.(this),this.parent=null)}get parsedUrl(){return(0,p.An)(this.url)}createLayerView(e,t){return Promise.reject(new s.A("layer:create-layer-view","Layer does not support creating a layer view"))}async fetchAttributionData(){const e=this.attributionDataUrl;if(this.hasAttributionData&&e)return(await(0,n.A)(e,{query:{f:"json"},responseType:"json"})).data;throw new s.A("layer:no-attribution-data","Layer does not have attribution data")}};(0,i.Cg)([(0,y.MZ)({type:String})],v.prototype,"attributionDataUrl",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0})],v.prototype,"effectiveVisible",null),(0,i.Cg)([(0,y.MZ)({type:c.A})],v.prototype,"fullExtent",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0})],v.prototype,"hasAttributionData",null),(0,i.Cg)([(0,y.MZ)({type:String,clonable:!1})],v.prototype,"id",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean,nonNullable:!0})],v.prototype,"legendEnabled",void 0),(0,i.Cg)([(0,y.MZ)({type:["show","hide","hide-children"]})],v.prototype,"listMode",void 0),(0,i.Cg)([(0,y.MZ)({type:Number,range:{min:0,max:1},nonNullable:!0})],v.prototype,"opacity",void 0),(0,i.Cg)([(0,y.MZ)({clonable:!1})],v.prototype,"parent",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0})],v.prototype,"parsedUrl",null),(0,i.Cg)([(0,y.MZ)({type:Boolean,readOnly:!0})],v.prototype,"persistenceEnabled",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean})],v.prototype,"popupEnabled",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean})],v.prototype,"attributionVisible",void 0),(0,i.Cg)([(0,y.MZ)({type:m.A})],v.prototype,"spatialReference",void 0),(0,i.Cg)([(0,y.MZ)({type:String})],v.prototype,"title",void 0),(0,i.Cg)([(0,y.MZ)({readOnly:!0,json:{read:!1}})],v.prototype,"type",void 0),(0,i.Cg)([(0,y.MZ)()],v.prototype,"url",void 0),(0,i.Cg)([(0,y.MZ)({type:f.A})],v.prototype,"visibilityTimeExtent",void 0),(0,i.Cg)([(0,y.MZ)({type:Boolean,nonNullable:!0})],v.prototype,"visible",void 0),v=(0,i.Cg)([(0,y.$K)("esri.layers.Layer")],v)},7656(e,t,r){r.r(t),r.d(t,{default:()=>q});var i=r(5482),n=r(11254),s=r(7762),a=r(49186),o=r(81583),l=r(25728),u=r(17676),d=r(86211),p=r(91429),y=r(56507),c=r(35666),m=r(5443),h=r(83960),f=r(21325),g=r(4146),v=r(52136),b=r(98534),w=r(18768),C=r(63074),S=r(69208),I=r(16131),M=r(8303),x=r(54310),T=r(25036),A=r(91921),Z=r(82935),E=r(10873),O=r(69622),L=r(39516);function N(e,t){return"floorInfo"in t&&t.floorInfo?.floorField?function(e,t){if(!e?.length)return null;const r=e.filter(e=>""!==e).map(e=>`'${e}'`);return r.push("''"),`${t} IN (${r.join(",")}) OR ${t} IS NULL`}(e,t.floorInfo.floorField):null}var j=r(63389);const D={visible:"visibleSublayers",definitionExpression:"layerDefs",labelingInfo:"hasDynamicLayers",labelsVisible:"hasDynamicLayers",opacity:"hasDynamicLayers",minScale:"visibleSublayers",maxScale:"visibleSublayers",renderer:"hasDynamicLayers",source:"hasDynamicLayers"};let P=class extends O.A{constructor(e){super(e),this.floors=null,this.scale=0}destroy(){this.layer=null}get dynamicLayers(){if(!this.hasDynamicLayers)return null;const e=this.visibleSublayers.map(e=>{const t=N(this.floors,e);return e.toExportImageJSON(t)});return e.length?JSON.stringify(e):null}get hasDynamicLayers(){return this.layer&&(0,j.Sk)(this.visibleSublayers,this.layer.serviceSublayers,this.layer.gdbVersion)}set layer(e){this._get("layer")!==e&&(this._set("layer",e),this.removeHandles("layer"),e&&this.addHandles([e.allSublayers.on("change",()=>this.notifyChange("visibleSublayers")),e.on("sublayer-update",e=>this.notifyChange(D[e.propertyName]))],"layer"))}get layers(){const e=this.visibleSublayers;return e?e.length?"show:"+e.map(e=>e.id).join(","):"show:-1":null}get layerDefs(){const e=!!this.floors?.length,t=this.visibleSublayers.filter(t=>null!=t.definitionExpression||e&&null!=t.floorInfo);return t.length?JSON.stringify(t.reduce((e,t)=>{const r=N(this.floors,t),i=(0,L.mA)(r,t.definitionExpression);return null!=i&&(e[t.id]=i),e},{})):null}get version(){this.commitProperty("layers"),this.commitProperty("layerDefs"),this.commitProperty("dynamicLayers");const e=this.layer;return e&&(e.commitProperty("dpi"),e.commitProperty("imageFormat"),e.commitProperty("imageTransparency"),e.commitProperty("gdbVersion")),(this._get("version")||0)+1}get visibleSublayers(){const e=[];if(!this.layer)return e;const t=this.layer.sublayers,r=this.scale,i=t=>{t.visible&&(0===r||(0,h.zx)(r,t.minScale,t.maxScale))&&(t.sublayers?t.sublayers.forEach(i):e.unshift(t))};t?.forEach(i);const n=this._get("visibleSublayers");return!n||n.length!==e.length||n.some((t,r)=>e[r]!==t)?e:n}toJSON(){const e=this.layer;let t={dpi:e.dpi,format:e.imageFormat,transparent:e.imageTransparency,gdbVersion:e.gdbVersion||null};return this.hasDynamicLayers&&this.dynamicLayers?t.dynamicLayers=this.dynamicLayers:t={...t,layers:this.layers,layerDefs:this.layerDefs},t}};(0,i.Cg)([(0,p.MZ)({readOnly:!0})],P.prototype,"dynamicLayers",null),(0,i.Cg)([(0,p.MZ)()],P.prototype,"floors",void 0),(0,i.Cg)([(0,p.MZ)({readOnly:!0})],P.prototype,"hasDynamicLayers",null),(0,i.Cg)([(0,p.MZ)()],P.prototype,"layer",null),(0,i.Cg)([(0,p.MZ)({readOnly:!0})],P.prototype,"layers",null),(0,i.Cg)([(0,p.MZ)({readOnly:!0})],P.prototype,"layerDefs",null),(0,i.Cg)([(0,p.MZ)({type:Number})],P.prototype,"scale",void 0),(0,i.Cg)([(0,p.MZ)({readOnly:!0})],P.prototype,"version",null),(0,i.Cg)([(0,p.MZ)({readOnly:!0})],P.prototype,"visibleSublayers",null),P=(0,i.Cg)([(0,p.$K)("esri.layers.support.ExportImageParameters")],P);var F=r(33446),U=r(15775),_=r(91908),R=r(88625),V=r(79677),k=r(56400),B=r(36005),$=r(43937);let J=class extends((0,C.dM)((0,Z.e)((0,T.j)((0,A.I)((0,b.V)((0,w.b)((0,I.q)((0,M.A)((0,l.M)((0,x.J)((0,v.p)((0,S.d)(g.A))))))))))))){constructor(...e){super(...e),this._exportImageParameters=new P({layer:this}),this.dateFieldsTimeZone=null,this.datesInUnknownTimezone=!1,this.dpi=96,this.elevationInfo=new R.A({mode:"on-the-ground"}),this.gdbVersion=null,this.imageFormat="png24",this.imageMaxHeight=2048,this.imageMaxWidth=2048,this.imageTransparency=!0,this.isReference=null,this.labelsVisible=!1,this.operationalLayerType="ArcGISMapServiceLayer",this.preferredTimeZone=null,this.sourceJSON=null,this.sublayers=null,this.type="map-image",this.url=null,this._debouncedSaveOperations=(0,u.sg)(async(e,t,i)=>{const{save:n,saveAs:s}=await r.e(390).then(r.bind(r,10390));switch(e){case 0:return n(this,t);case 1:return s(this,i,t)}})}normalizeCtorArgs(e,t){return"string"==typeof e?{url:e,...t}:e}load(e){const t=null!=e?e.signal:null;return this.addResolvingPromise(this.loadFromPortal({supportedTypes:["Map Service"]},e).catch(u.QP).then(()=>this._fetchService(t))),Promise.resolve(this)}destroy(){this._exportImageParameters.destroy()}readImageFormat(e,t){const r=t.supportedImageFormatTypes;return r&&r.includes("PNG32")?"png32":"png24"}get loaded(){return super.loaded}get portalItem(){return super.portalItem}set portalItem(e){super.portalItem=e}writeSublayers(e,t,r,i){if(!this.loaded||!e)return;const n=e.slice().reverse().flatten(({sublayers:e})=>e&&e.toArray().reverse()).toArray();let s=!1;const a=(0,c.aB)(i.origin);let o;if(this.capabilities?.operations.supportsExportMap&&this.capabilities?.exportMap?.supportsDynamicLayers)if(3===a){const e=this.createSublayersForOrigin("service").sublayers;s=(0,j.Zx)(n,e,2)}else if(a>3){const e=this.createSublayersForOrigin("portal-item");s=(0,j.Zx)(n,e.sublayers,(0,c.aB)(e.origin)),o=e.originWithPartialOverrides}const l=[],u={writeSublayerStructure:s,...i,minimumWritableOrigin:o};let d=s||this.hasVisibleLayersForOrigin(a);n.forEach(e=>{const t=e.write({},u);l.push(t),d=d||"user"===e.originOf("visible")}),l.some(e=>Object.keys(e).length>1)&&(t.layers=l),d&&(t.visibleLayers=n.filter(e=>e.visible).map(e=>e.id))}createExportImageParameters(e,t,r,i){const n=i?.pixelRatio||1;e&&this.version>=10&&(e=e.clone().shiftCentralMeridian()),this._exportImageParameters.floors=i?.floors??null,this._exportImageParameters.scale=i?.scale||(0,h.X_)({extent:e,width:t})*n;const s=this._exportImageParameters.toJSON(),a=!i?.rotation||this.version<10.3?{}:{rotation:-i.rotation},o=e?.spatialReference,l=(0,f.YX)(o);if(i?.scale&&e){const r=e.width/t*((0,d.GA)(e?.spatialReference)*d.dy);s.dpi=i.scale/r}s.dpi*=n;const u={};if(i?.timeExtent){const{start:e,end:t}=i.timeExtent.toJSON();u.time=e&&t&&e===t?""+e:`${e??"null"},${t??"null"}`}else this.timeInfo&&!this.timeInfo.hasLiveData&&(u.time="null,null");return{bbox:e?e.xmin+","+e.ymin+","+e.xmax+","+e.ymax:void 0,bboxSR:l,imageSR:l,size:t+","+r,...s,...a,...u}}async fetchImage(e,t,r,i){const{data:n}=await this._fetchImage("image",e,t,r,i);return n}async fetchImageBitmap(e,t,r,i){const{data:n,url:s}=await this._fetchImage("blob",e,t,r,i);return(0,F.m)(n,s,i?.signal)}async fetchRecomputedExtents(e={}){const t={...e,query:{returnUpdates:!0,f:"json",...this.customParameters,token:this.apiKey}},{data:r}=await(0,n.A)(this.url,t),{extent:i,fullExtent:s,timeExtent:a}=r,o=i||s;return{fullExtent:o&&m.A.fromJSON(o),timeExtent:a&&V.A.fromJSON({start:a[0],end:a[1]})}}loadAll(){return(0,o.g)(this,e=>{e(this.allSublayers),e(this.subtables)})}async save(e){return this._debouncedSaveOperations(0,e)}async saveAs(e,t){return this._debouncedSaveOperations(1,t,e)}serviceSupportsSpatialReference(e){return(0,_.D)(this,e)}async _fetchImage(e,t,r,i,s){const o={responseType:e,signal:s?.signal??null,query:{...this.parsedUrl.query,...this.createExportImageParameters(t,r,i,s),f:"image",...this.refreshParameters,...this.customParameters,token:this.apiKey}},l=this.parsedUrl.path+"/export";if(null!=o.query?.dynamicLayers&&!this.capabilities?.exportMap?.supportsDynamicLayers)throw new a.A("mapimagelayer:dynamiclayer-not-supported",`service ${this.url} doesn't support dynamic layers, which is required to be able to change the sublayer's order, rendering, labeling or source.`,{query:o.query});try{const{data:e}=await(0,n.A)(l,o);return{data:e,url:l}}catch(e){if((0,u.zf)(e))throw e;throw new a.A("mapimagelayer:image-fetch-error",`Unable to load image: ${l}`,{error:e})}}async _fetchService(e){if(this.sourceJSON)return void this.read(this.sourceJSON,{origin:"service",url:this.parsedUrl});const{data:t,ssl:r}=await(0,n.A)(this.parsedUrl.path,{query:{f:"json",...this.parsedUrl.query,...this.customParameters,token:this.apiKey},signal:e});r&&(this.url=this.url.replace(/^http:/i,"https:")),this.sourceJSON=t,this.read(t,{origin:"service",url:this.parsedUrl})}hasVisibleLayersForOrigin(e){return!(null==e||!this.sublayersSourceJSON[e]?.visibleLayers)}};(0,i.Cg)([(0,p.MZ)((0,k.P6)("dateFieldsTimeReference"))],J.prototype,"dateFieldsTimeZone",void 0),(0,i.Cg)([(0,p.MZ)({type:Boolean})],J.prototype,"datesInUnknownTimezone",void 0),(0,i.Cg)([(0,p.MZ)()],J.prototype,"dpi",void 0),(0,i.Cg)([(0,p.MZ)()],J.prototype,"elevationInfo",void 0),(0,i.Cg)([(0,p.MZ)()],J.prototype,"gdbVersion",void 0),(0,i.Cg)([(0,p.MZ)()],J.prototype,"imageFormat",void 0),(0,i.Cg)([(0,B.w)("imageFormat",["supportedImageFormatTypes"])],J.prototype,"readImageFormat",null),(0,i.Cg)([(0,p.MZ)({json:{origins:{service:{read:{source:"maxImageHeight"}}}}})],J.prototype,"imageMaxHeight",void 0),(0,i.Cg)([(0,p.MZ)({json:{origins:{service:{read:{source:"maxImageWidth"}}}}})],J.prototype,"imageMaxWidth",void 0),(0,i.Cg)([(0,p.MZ)()],J.prototype,"imageTransparency",void 0),(0,i.Cg)([(0,p.MZ)({type:Boolean,json:{read:!1,write:{enabled:!0,overridePolicy:()=>({enabled:!1})}}})],J.prototype,"isReference",void 0),(0,i.Cg)([(0,p.MZ)({json:{read:!1,write:!1}})],J.prototype,"labelsVisible",void 0),(0,i.Cg)([(0,p.MZ)({type:["ArcGISMapServiceLayer"]})],J.prototype,"operationalLayerType",void 0),(0,i.Cg)([(0,p.MZ)({json:{read:!1,write:!1}})],J.prototype,"popupEnabled",void 0),(0,i.Cg)([(0,p.MZ)((0,k.P6)("preferredTimeReference"))],J.prototype,"preferredTimeZone",void 0),(0,i.Cg)([(0,p.MZ)()],J.prototype,"sourceJSON",void 0),(0,i.Cg)([(0,p.MZ)({type:s.A.ofType(U.A),json:{write:{ignoreOrigin:!0}}})],J.prototype,"sublayers",void 0),(0,i.Cg)([(0,$.K)("sublayers",{layers:{type:[U.A]},visibleLayers:{type:[y.jz]}})],J.prototype,"writeSublayers",null),(0,i.Cg)([(0,p.MZ)({type:["show","hide","hide-children"],json:{origins:{"portal-item":{read:!1,write:!1}}}})],J.prototype,"listMode",void 0),(0,i.Cg)([(0,p.MZ)({json:{read:!1},readOnly:!0,value:"map-image"})],J.prototype,"type",void 0),(0,i.Cg)([(0,p.MZ)(E.OZ)],J.prototype,"url",void 0),J=(0,i.Cg)([(0,p.$K)("esri.layers.MapImageLayer")],J);const q=J},82935(e,t,r){r.d(t,{B:()=>y,e:()=>c});var i=r(5482),n=r(91429),s=r(89317),a=r(30524),o=r(96184),l=r(73133),u=r(79677),d=r(10184),p=r(36005);const y={type:Boolean,json:{read:{source:"timeAnimation"},write:{target:"timeAnimation",layerContainerTypes:s.K}}},c=e=>{const t=e;let r=class extends t{constructor(){super(...arguments),this.timeExtent=null,this.timeOffset=null,this.useViewTime=!0}readOffset(e,t){const r=t.timeInfo.exportOptions;if(!r)return null;const i=r.timeOffset,n=l.j.fromJSON(r.timeOffsetUnits);return i&&n?new d.A({value:i,unit:n}):null}get timeInfo(){return this._get("timeInfo")}set timeInfo(e){(0,a.sv)(e,this.fieldsIndex),this._set("timeInfo",e)}};return(0,i.Cg)([(0,n.MZ)({type:u.A,json:{write:!1}})],r.prototype,"timeExtent",void 0),(0,i.Cg)([(0,n.MZ)({type:d.A})],r.prototype,"timeOffset",void 0),(0,i.Cg)([(0,p.w)("service","timeOffset",["timeInfo.exportOptions"])],r.prototype,"readOffset",null),(0,i.Cg)([(0,n.MZ)({value:null,type:o.A,json:{write:!0,origins:{"web-document":{read:!1,write:!1},"portal-item":{read:!1,write:!1}}}})],r.prototype,"timeInfo",null),(0,i.Cg)([(0,n.MZ)(y)],r.prototype,"useViewTime",void 0),r=(0,i.Cg)([(0,n.$K)("esri.layers.mixins.TemporalLayer")],r),r}},96184(e,t,r){r.d(t,{A:()=>c});var i=r(5482),n=r(69540),s=r(25482),a=r(91429),o=r(79677),l=r(10184),u=r(56400),d=r(36005),p=r(43937);function y(e,t){return l.A.fromJSON({value:e,unit:t})}let c=class extends((0,n.OU)(s.o)){constructor(e){super(e),this.cumulative=!1,this.endField=null,this.fullTimeExtent=null,this.hasLiveData=!1,this.interval=null,this.startField=null,this.timeZone=null,this.trackIdField=null,this.useTime=!0,this.stops=null}readFullTimeExtent(e,t){return t.timeExtent&&Array.isArray(t.timeExtent)&&2===t.timeExtent.length?o.A.fromArray(t.timeExtent):null}writeFullTimeExtent(e,t){null!=e?.start&&null!=e.end?t.timeExtent=e.toArray():t.timeExtent=null}readInterval(e,t){return t.timeInterval&&t.timeIntervalUnits?y(t.timeInterval,t.timeIntervalUnits):t.defaultTimeInterval&&t.defaultTimeIntervalUnits?y(t.defaultTimeInterval,t.defaultTimeIntervalUnits):null}writeInterval(e,t){t.timeInterval=e?.toJSON().value??null,t.timeIntervalUnits=e?.toJSON().unit??null}};(0,i.Cg)([(0,a.MZ)({type:Boolean,json:{name:"exportOptions.timeDataCumulative",write:!0}})],c.prototype,"cumulative",void 0),(0,i.Cg)([(0,a.MZ)({type:String,json:{name:"endTimeField",write:{enabled:!0,allowNull:!0}}})],c.prototype,"endField",void 0),(0,i.Cg)([(0,a.MZ)({type:o.A,json:{write:{enabled:!0,allowNull:!0}}})],c.prototype,"fullTimeExtent",void 0),(0,i.Cg)([(0,d.w)("fullTimeExtent",["timeExtent"])],c.prototype,"readFullTimeExtent",null),(0,i.Cg)([(0,p.K)("fullTimeExtent")],c.prototype,"writeFullTimeExtent",null),(0,i.Cg)([(0,a.MZ)({type:Boolean,json:{write:!0}})],c.prototype,"hasLiveData",void 0),(0,i.Cg)([(0,a.MZ)({type:l.A,json:{write:{enabled:!0,allowNull:!0}}})],c.prototype,"interval",void 0),(0,i.Cg)([(0,d.w)("interval",["timeInterval","timeIntervalUnits","defaultTimeInterval","defaultTimeIntervalUnits"])],c.prototype,"readInterval",null),(0,i.Cg)([(0,p.K)("interval")],c.prototype,"writeInterval",null),(0,i.Cg)([(0,a.MZ)({type:String,json:{name:"startTimeField",write:{enabled:!0,allowNull:!0}}})],c.prototype,"startField",void 0),(0,i.Cg)([(0,a.MZ)((0,u.P6)("timeReference",!0))],c.prototype,"timeZone",void 0),(0,i.Cg)([(0,a.MZ)({type:String,json:{write:{enabled:!0,allowNull:!0}}})],c.prototype,"trackIdField",void 0),(0,i.Cg)([(0,a.MZ)({type:Boolean,json:{name:"exportOptions.useTime",write:!0}})],c.prototype,"useTime",void 0),(0,i.Cg)([(0,a.MZ)({type:[Date],json:{read:!1}})],c.prototype,"stops",void 0),c=(0,i.Cg)([(0,a.$K)("esri.layers.support.TimeInfo")],c)},77548(e,t,r){r.d(t,{Gh:()=>Z,tk:()=>I,BR:()=>S,p2:()=>w,qd:()=>M,wI:()=>C,G$:()=>T,$x:()=>x,Ov:()=>f,UC:()=>y,W_:()=>g,OP:()=>A,TU:()=>h,XX:()=>m,jy:()=>v});var i=r(70333),n=r(11254),s=r(7762),a=(r(84952),r(36563)),o=r(36708),l=r(4146);const u=new WeakMap;function d(e){return!e.destroyed&&(u.has(e)||e.addHandles([(0,o.wB)(()=>{const{parent:t}=e;return!!(t&&t instanceof l.A)&&("catalog-dynamic-group"===t.type||d(t))},t=>u.set(e,t),o.pc),(0,a.hA)(()=>u.delete(e))]),u.get(e))}function p(e,t){return null!=e&&"object"==typeof e&&"type"in e&&e.type===t}function y(e){return p(e,"knowledge-graph-sublayer")}function c(e){const t=e.parent;return function(e){return"group"===e?.type}(t)&&t.tables.includes(e)}r(16215);const m={Point:"SceneLayer","3DObject":"SceneLayer",IntegratedMesh:"IntegratedMeshLayer",PointCloud:"PointCloudLayer",Building:"BuildingSceneLayer"};function h(e){const t=e?.type;return"building-scene"===t||"integrated-mesh"===t||"point-cloud"===t||"scene"===t}function f(e){return"feature"===e?.type&&!e.url&&"memory"===e.source?.type}function g(e){const t=e?.type;return("feature"===t||"subtype-group"===t||"oriented-imagery"===t)&&"feature-layer"===e?.source?.type}function v(e){return function(e){return p(e,"feature")}(e)&&function(e){return"feature"===e?.type&&"feature-layer"===e.source?.type}(e)}function b(e){const t=e?.type;return"binning"===t||"cluster"===t}function w(e,t){if(!v(e))return;const r=t?.graphic,i=e.featureReduction;if(r){if(r.isAggregate){const e=r.origin;return e&&"featureReductionProvider"in e&&i?b(i)?i:null:void 0}return e}return t?.checkFeatureReduction&&i?b(i)?i:null:e}async function C(e,t){const r=i.id?.findServerInfo(e);if(null!=r?.currentVersion)return r.owningSystemUrl||null;const s=e.toLowerCase().indexOf("/rest/services");if(-1===s)return null;const a=`${e.slice(0,s)}/rest/info`,o=null!=t?t.signal:null,{data:l}=await(0,n.A)(a,{query:{f:"json"},responseType:"json",signal:o});return l?.owningSystemUrl||null}function S(e){return function(e){if(!("capabilities"in e))return!1;switch(e.type){case"catalog":case"catalog-footprint":case"csv":case"feature":case"geojson":case"imagery":case"knowledge-graph-sublayer":case"ogc-feature":case"oriented-imagery":case"scene":case"sublayer":case"subtype-group":case"subtype-sublayer":case"wfs":return!0;default:return!1}}(e)?"effectiveCapabilities"in e?e.effectiveCapabilities:e.capabilities:null}function I(e){return!!function(e){if(!("editingEnabled"in e))return!1;switch(e.type){case"csv":case"feature":case"geojson":case"oriented-imagery":case"scene":case"subtype-group":case"subtype-sublayer":case"knowledge-graph-sublayer":return!0;default:return!1}}(e)&&("effectiveEditingEnabled"in e?e.effectiveEditingEnabled:e.editingEnabled)}function M(e){const t=new s.A;for(const r of e.allLayers.concat(e.allTables))d(r)||c(r)||("charts"in r&&t.push(r),"subtype-group"===r.type&&t.push(...r.sublayers));return t}function x(e,t){return null}function T(e){return null}function A(e){return!e||"Feature Service"===e.type&&!e.sourceUrl}function Z(e,t){if(!t||!A(e))return;const r=(e.url,null);r&&(e.url=r)}},91908(e,t,r){r.d(t,{D:()=>s});var i=r(60694);const n=[];function s(e,t){if((0,i.Wo)(e.url??""))return!0;const{wkid:r}=t;for(const t of n){if((e.version??0)>=t[0])return!0;if("function"==typeof t[1]&&(t[1]=t[1]()),t[1].has(r))return!1}return!0}n.push([10.91,()=>{const e=new Set([9709,9716,9741,9761,9766]);for(let t=9712;t<=9713;t++)e.add(t);for(let t=9748;t<=9749;t++)e.add(t);for(let t=20904;t<=20932;t++)e.add(t);for(let t=21004;t<=21032;t++)e.add(t);for(let t=21207;t<=21264;t++)e.add(t);for(let t=21307;t<=21364;t++)e.add(t);for(let t=23301;t<=23333;t++)e.add(t);for(let t=102759;t<=102760;t++)e.add(t);for(let t=102934;t<=102955;t++)e.add(t);return e}]),n.push([10.9,()=>{const e=new Set([9300,9354,9364,9367,9373,9377,9387,9456,9473,9498,9678,9680,29874,103599,103872,104028]);for(let t=9356;t<=9360;t++)e.add(t);for(let t=9404;t<=9407;t++)e.add(t);for(let t=9476;t<=9482;t++)e.add(t);for(let t=9487;t<=9494;t++)e.add(t);for(let t=9697;t<=9699;t++)e.add(t);return e}]),n.push([10.81,()=>{const e=new Set([9265,9333,103598,103699]);for(let t=9248;t<=9254;t++)e.add(t);for(let t=9271;t<=9273;t++)e.add(t);for(let t=9284;t<=9285;t++)e.add(t);for(let t=21453;t<=21463;t++)e.add(t);return e}]),n.push([10.8,()=>{const e=new Set([8088,8395,8428,8433,8531,8687,8692,8694,8699,8900,9003,9006,9009,9012,9017,9191]);for(let t=8035;t<=8036;t++)e.add(t);for(let t=8455;t<=8456;t++)e.add(t);for(let t=8518;t<=8529;t++)e.add(t);for(let t=8533;t<=8536;t++)e.add(t);for(let t=8538;t<=8540;t++)e.add(t);for(let t=8677;t<=8679;t++)e.add(t);for(let t=8902;t<=8903;t++)e.add(t);for(let t=8907;t<=8910;t++)e.add(t);for(let t=8949;t<=8951;t++)e.add(t);for(let t=8972;t<=8987;t++)e.add(t);for(let t=9039;t<=9040;t++)e.add(t);for(let t=9068;t<=9069;t++)e.add(t);for(let t=9140;t<=9141;t++)e.add(t);for(let t=9148;t<=9150;t++)e.add(t);for(let t=9153;t<=9159;t++)e.add(t);for(let t=9205;t<=9218;t++)e.add(t);for(let t=9221;t<=9222;t++)e.add(t);for(let t=54098;t<=54101;t++)e.add(t);return e}]),n.push([10.71,()=>{const e=new Set([6316]);for(let t=8351;t<=8353;t++)e.add(t);for(let t=9294;t<=9297;t++)e.add(t);for(let t=22619;t<=22621;t++)e.add(t);for(let t=103586;t<=103594;t++)e.add(t);return e}])},16215(e,t,r){r.d(t,{S:()=>n,Y:()=>i});const i=Symbol("BasemapInstance");function n(e){return null!=e&&"object"==typeof e&&i in e}},79677(e,t,r){r.d(t,{A:()=>y});var i,n=r(5482),s=r(25482),a=r(88930),o=r(91429),l=r(98623),u=r(10184),d=r(36005),p=r(43937);let y=class extends s.o{static{i=this}static get allTime(){return c}static get empty(){return m}static fromArray(e){return new i({start:null!=e[0]?new Date(e[0]):e[0],end:null!=e[1]?new Date(e[1]):e[1]})}constructor(e){super(e),this.end=null,this.start=null}readEnd(e,t){return null!=t.end?new Date(t.end):null}writeEnd(e,t){t.end=e?.getTime()??null}get isAllTime(){return this.equals(i.allTime)}get isEmpty(){return this.equals(i.empty)}readStart(e,t){return null!=t.start?new Date(t.start):null}writeStart(e,t){t.start=e?.getTime()??null}clone(){return new i({end:this.end,start:this.start})}equals(e){if(!e)return!1;const t=this.start?.getTime()??this.start,r=this.end?.getTime()??this.end,i=e.start?.getTime()??e.start,n=e.end?.getTime()??e.end;return t===i&&r===n}expandTo(e,t=l.qU){if(this.isEmpty||this.isAllTime||"unknown"===e)return this.clone();let r=this.start;r&&(r=(0,a.lL)(r,new u.A({value:1,unit:e}),t));let n=this.end;if(n){const r=(0,a.lL)(n,new u.A({value:1,unit:e}),t);n=n.getTime()===r.getTime()?r:(0,a.S1)(r,1,e,t)}return new i({start:r,end:n})}intersection(e){if(!e)return this.clone();if(this.isEmpty||e.isEmpty)return i.empty;if(this.isAllTime)return e.clone();if(e.isAllTime)return this.clone();const t=this.start?.getTime()??-1/0,r=this.end?.getTime()??1/0,n=e.start?.getTime()??-1/0,s=e.end?.getTime()??1/0;let a,o;return n>=t&&n<=r?a=n:t>=n&&t<=s&&(a=t),r>=n&&r<=s?o=r:s>=t&&s<=r&&(o=s),null==a||null==o||isNaN(a)||isNaN(o)?i.empty:new i({start:a===-1/0?null:new Date(a),end:o===1/0?null:new Date(o)})}offset(e,t,r=l.qU){if(this.isEmpty||this.isAllTime||"unknown"===t)return this.clone();const n=new i,{start:s,end:o}=this;return null!=s&&(n.start=(0,a.S1)(s,e,t,r)),null!=o&&(n.end=(0,a.S1)(o,e,t,r)),n}toArray(){return this.isEmpty?[void 0,void 0]:[this.start?.getTime()??null,this.end?.getTime()??null]}union(e){if(!e||e.isEmpty)return this.clone();if(this.isEmpty)return e.clone();if(this.isAllTime||e.isAllTime)return c.clone();const t=null!=this.start&&null!=e.start?new Date(Math.min(this.start.getTime(),e.start.getTime())):null,r=null!=this.end&&null!=e.end?new Date(Math.max(this.end.getTime(),e.end.getTime())):null;return new i({start:t,end:r})}};(0,n.Cg)([(0,o.MZ)({type:Date,json:{write:{allowNull:!0}}})],y.prototype,"end",void 0),(0,n.Cg)([(0,d.w)("end")],y.prototype,"readEnd",null),(0,n.Cg)([(0,p.K)("end")],y.prototype,"writeEnd",null),(0,n.Cg)([(0,o.MZ)({readOnly:!0,json:{read:!1}})],y.prototype,"isAllTime",null),(0,n.Cg)([(0,o.MZ)({readOnly:!0,json:{read:!1}})],y.prototype,"isEmpty",null),(0,n.Cg)([(0,o.MZ)({type:Date,json:{write:{allowNull:!0}}})],y.prototype,"start",void 0),(0,n.Cg)([(0,d.w)("start")],y.prototype,"readStart",null),(0,n.Cg)([(0,p.K)("start")],y.prototype,"writeStart",null),y=i=(0,n.Cg)([(0,o.$K)("esri.time.TimeExtent")],y);const c=new y,m=new y({start:void 0,end:void 0})},10184(e,t,r){r.d(t,{A:()=>d});var i=r(5482),n=r(69540),s=r(25482),a=r(88930),o=r(91429),l=r(73133),u=r(93223);let d=class extends((0,n.OU)(s.o)){constructor(e){super(e),this.unit="milliseconds",this.value=0}toMilliseconds(){return(0,a.t)(this.value,this.unit,"milliseconds")}};(0,i.Cg)([(0,u.e)(l.j,{nonNullable:!0})],d.prototype,"unit",void 0),(0,i.Cg)([(0,o.MZ)({type:Number,json:{write:!0},nonNullable:!0})],d.prototype,"value",void 0),d=(0,i.Cg)([(0,o.$K)("esri.time.TimeInterval")],d)}}]);
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{create as e}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{ReadDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{Gamma as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{Float3PassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as t,glsl as a}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{RayDistanceFalloffPassParameters as m,RayDistanceFalloff as g}from"../views/3d/webgl-engine/effects/raymarching/RayDistanceFalloff.glsl.js";import{ScreenSpacePassAtmosphere as c}from"../views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js";import{ToneMapping as d}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as f}from"../views/webgl/ShaderBuilder.js";class p extends m{constructor(){super(...arguments),this.color=e(),this.strength=4e-6,this.amount=0,this.fogColorDistanceWeight=.85}}function u(e){const m=new f;m.include(c,{needUVs:!0,needEyeDirection:!0});const p=m.fragment,{hasEmissive:u}=e;return p.uniforms.add(new n("depthTexture",e=>e.mainDepth),new s("fogStrength",e=>e.strength),new s("fogAmount",e=>e.amount),new i("fogColor",e=>e.color),new s("fogColorDistanceWeight",e=>e.fogColorDistanceWeight)),u&&p.uniforms.add(new l("emissionTexture",e=>e.emission?.getTexture())),p.include(g),p.include(r),p.include(d),p.include(o),p.main.add(a`
2
+ import{create as e}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{ReadDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{Gamma as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{Float3PassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as t,glsl as a}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{RayDistanceFalloffPassParameters as m,RayDistanceFalloff as g}from"../views/3d/webgl-engine/effects/raymarching/RayDistanceFalloff.glsl.js";import{oitResolution as c}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ScreenSpacePassAtmosphere as d}from"../views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js";import{ToneMapping as f}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as p}from"../views/webgl/ShaderBuilder.js";class u extends m{constructor(){super(...arguments),this.color=e(),this.strength=4e-6,this.amount=0,this.fogColorDistanceWeight=.85}}function h(e){const m=new p;m.include(d,{needUVs:!0,needEyeDirection:!0});const u=m.fragment,{hasEmissive:h}=e;return u.uniforms.add(new n("depthTexture",e=>e.mainDepth),new s("fogStrength",e=>e.strength),new s("fogAmount",e=>e.amount),new i("fogColor",e=>e.color),new s("fogColorDistanceWeight",e=>e.fogColorDistanceWeight)),h&&u.uniforms.add(new l("emissionTexture",e=>e.emission?.getTexture())),u.include(g),u.include(r),u.include(f),u.include(o),u.include(c,e),u.main.add(a`
3
3
  vec3 rayDir = normalize(worldRay);
4
4
  float terrainDepth = -1.0;
5
5
 
@@ -13,9 +13,9 @@ import{create as e}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Re
13
13
 
14
14
  float fogAmount = fogAmount * getDistanceFalloff(terrainDepth, rayDir, fogStrength);
15
15
 
16
- ${t(u,a`vec3 emission = texture(emissionTexture, uv).rgb;
16
+ ${t(h,a`vec3 emission = texture(emissionTexture, uv).rgb * oitInputScale;
17
17
  vec3 emissionDistanceCorrected = mix(emission, vec3(0.0), fogAmount * fogColorDistanceWeight);
18
18
  vec3 finalFogColor = fogColor * fogAmount + emissionDistanceCorrected;
19
19
  vec4 fog = vec4(finalFogColor, fogAmount);`,a`vec4 fog = vec4(fogColor, 1.0) * fogAmount;`)}
20
20
  fragColor = delinearizeGamma(vec4(tonemapACES(fog.rgb), fog.a));
21
- `),m}const h=Object.freeze(Object.defineProperty({__proto__:null,FogPassParameters:p,build:u},Symbol.toStringTag,{value:"Module"}));export{p as F,h as a,u as b};
21
+ `),m}const w=Object.freeze(Object.defineProperty({__proto__:null,FogPassParameters:u,build:h},Symbol.toStringTag,{value:"Module"}));export{u as F,w as a,h as b};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{ReadDepth as e}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{Gamma as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{FloatPassUniform as r}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{If as s,glsl as l}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DBindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{RayDistanceFalloffPassParameters as d,RayDistanceFalloff as m}from"../views/3d/webgl-engine/effects/raymarching/RayDistanceFalloff.glsl.js";import{oitResolution as c}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ScreenSpacePassAtmosphere as p}from"../views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js";import{ToneMapping as u}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as g}from"../views/webgl/ShaderBuilder.js";class x extends d{constructor(){super(...arguments),this.glowLod=-1,this.minDisperse=new f([.8,.12,.05,.02,.01,0]),this.dispersionWeight=1,this.distanceModifier=1e-4}}function w(d){const x=new g,w=x.fragment,{blurEnabled:f,tonemappingEnabled:v}=d;return x.include(p,{needUVs:!0,needEyeDirection:!0}),w.include(o),w.include(m),w.include(e),x.outputs.add("fragColor","vec4",0),x.outputs.add("fragEmission","vec3",1),w.include(u),w.include(c,d),w.uniforms.add(new n("colorTexture",e=>e.color),new n("emissionTexture",e=>e.emission)),f?(w.uniforms.add(new a("depthTexture",e=>e.mainDepth),new r("distanceModifier",e=>e.distanceModifier),new n("lodTexture0",e=>e.lodTexture0),new n("lodTexture1",e=>e.lodTexture1),new n("lodTexture2",e=>e.lodTexture2),new n("lodTexture3",e=>e.lodTexture3),new n("lodTexture4",e=>e.lodTexture4),new t("glowLod",e=>e.glowLod),new i("minDisperse",6,e=>e.minDisperse.presets),new i("maxDisperse",6,e=>e.maxDisperse.presets),new r("dispersionWeight",e=>e.dispersionWeight)).main.add(l`
2
+ import{ReadDepth as e}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{Gamma as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{FloatPassUniform as r}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{If as s,glsl as l}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DBindUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{RayDistanceFalloffPassParameters as d,RayDistanceFalloff as m}from"../views/3d/webgl-engine/effects/raymarching/RayDistanceFalloff.glsl.js";import{Dithering as c}from"../views/3d/webgl-engine/shaders/Dithering.glsl.js";import{oitResolution as p}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ScreenSpacePassAtmosphere as u}from"../views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js";import{ToneMapping as g}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as x}from"../views/webgl/ShaderBuilder.js";class w extends d{constructor(){super(...arguments),this.glowLod=-1,this.minDisperse=new h([.8,.12,.05,.02,.01,0]),this.dispersionWeight=1,this.distanceModifier=1e-4}}function f(d){const w=new x,f=w.fragment,{blurEnabled:h,tonemappingEnabled:v}=d;return w.include(u,{needUVs:!0,needEyeDirection:!0}),f.include(o),f.include(m),f.include(e),w.outputs.add("fragColor","vec4",0),w.outputs.add("fragEmission","vec3",1),f.include(g),f.include(p,d),f.include(c,d),f.uniforms.add(new a("colorTexture",e=>e.color),new a("emissionTexture",e=>e.emission)),h?(f.uniforms.add(new n("depthTexture",e=>e.mainDepth),new r("distanceModifier",e=>e.distanceModifier),new a("lodTexture0",e=>e.lodTexture0),new a("lodTexture1",e=>e.lodTexture1),new a("lodTexture2",e=>e.lodTexture2),new a("lodTexture3",e=>e.lodTexture3),new a("lodTexture4",e=>e.lodTexture4),new t("glowLod",e=>e.glowLod),new i("minDisperse",6,e=>e.minDisperse.presets),new i("maxDisperse",6,e=>e.maxDisperse.presets),new r("dispersionWeight",e=>e.dispersionWeight)).main.add(l`
3
3
  vec4 color = texture(colorTexture, uv);
4
4
  color = vec4(linearizeGamma(color.rgb), color.a);
5
5
 
@@ -40,11 +40,13 @@ import{ReadDepth as e}from"../views/3d/webgl-engine/core/shaderLibrary/output/Re
40
40
  emission = glowLod == 0 ? lodFactor0 * lod0 : glowLod == 1 ? lodFactor1 * lod1 : glowLod == 2 ? lodFactor2 * lod2 : glowLod == 3 ? lodFactor3 * lod3 : glowLod == 4 ? lodFactor4 * lod4 : glowLod == 5 ? lodFactor5 * lod5 : emission;
41
41
 
42
42
  fragEmission = emission;
43
+ fragEmission.rgb = emission.rgb * oitOutputScale + ditherNoise();
44
+
43
45
  // tonemapping is only applied to the emissive part since main color values are not in HDR.
44
46
  ${s(v,"emission = tonemapKhronosNeutral(emission, 1.0);")}
45
47
 
46
48
  fragColor = delinearizeGamma(vec4(color.rgb + emission.rgb, color.w));
47
- `),x):(w.main.add(l`
49
+ `),w):(f.main.add(l`
48
50
  vec4 color = texture(colorTexture, uv);
49
51
  color = vec4(linearizeGamma(color.rgb), color.a);
50
52
 
@@ -53,4 +55,4 @@ import{ReadDepth as e}from"../views/3d/webgl-engine/core/shaderLibrary/output/Re
53
55
 
54
56
  ${s(v,"emission = tonemapKhronosNeutral(emission, 1.0);")}
55
57
  fragColor = delinearizeGamma(vec4(color.rgb + emission, color.w));
56
- `),x)}class f{constructor(e,o=!0){this.presets=e,this.presets=v(e,o)}}function v(e,o,r=1){const i=e[0]+e[1]+e[2]+e[3]+e[4]+e[5];return!o||i<=r?e:[e[0]/i,e[1]/i,e[2]/i,e[3]/i,e[4]/i,e[5]/i]}function h(e,o,r=1){return[e[0]*(1-r)+o[0]*r,e[1]*(1-r)+o[1]*r,e[2]*(1-r)+o[2]*r,e[3]*(1-r)+o[3]*r,e[4]*(1-r)+o[4]*r,e[5]*(1-r)+o[5]*r]}const b=Object.freeze(Object.defineProperty({__proto__:null,GlowCompositionPassParameters:x,GlowLodFactors:f,build:w,mixPreset:h},Symbol.toStringTag,{value:"Module"}));export{x as G,f as a,b,w as c,h as m};
58
+ `),w)}class h{constructor(e,o=!0){this.presets=e,this.presets=v(e,o)}}function v(e,o,r=1){const i=e[0]+e[1]+e[2]+e[3]+e[4]+e[5];return!o||i<=r?e:[e[0]/i,e[1]/i,e[2]/i,e[3]/i,e[4]/i,e[5]/i]}function b(e,o,r=1){return[e[0]*(1-r)+o[0]*r,e[1]*(1-r)+o[1]*r,e[2]*(1-r)+o[2]*r,e[3]*(1-r)+o[3]*r,e[4]*(1-r)+o[4]*r,e[5]*(1-r)+o[5]*r]}const D=Object.freeze(Object.defineProperty({__proto__:null,GlowCompositionPassParameters:w,GlowLodFactors:h,build:f,mixPreset:b},Symbol.toStringTag,{value:"Module"}));export{w as G,h as a,D as b,f as c,b as m};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{If as r,glsl as o}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{O as t}from"./OITDim.glsl.js";import{oitResolution as n}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ShaderBuilder as a}from"../views/webgl/ShaderBuilder.js";class i extends t{}function c(t){const i=new a;i.include(e);const{hasEmission:c,frontFaceMask:u,computeHudOcclusion:l}=t,m=i.fragment;m.include(n,t),m.uniforms.add(new s("colorTexture",e=>e.colorTexture),new s("alphaTexture",e=>e.alphaTexture));let f=0;return i.outputs.add("fragColor","vec4",f++),c&&i.outputs.add("fragEmission","vec4",f++),l&&i.outputs.add("fragOcclusion","vec4",f++),m.uniforms.add(new s("frontFaceTexture",e=>e.frontFaceTexture)),c&&(m.uniforms.add(new s("emissionTexture",e=>e.emissionTexture)),m.uniforms.add(new s("emissionFrontFaceTexture",e=>e.emissionFrontFaceTexture))),m.main.add(o`
2
+ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{If as r,glsl as o}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{O as s}from"./OITDim.glsl.js";import{oitResolution as a}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ShaderBuilder as n}from"../views/webgl/ShaderBuilder.js";class i extends s{}function c(s){const i=new n;i.include(e);const{hasEmission:c,frontFaceMask:u,computeHudOcclusion:l,hasFloatOit:m}=s,f=i.fragment;f.include(a,s),f.uniforms.add(new t("colorTexture",e=>e.colorTexture),new t("alphaTexture",e=>e.alphaTexture));let d=0;return i.outputs.add("fragColor","vec4",d++),c&&i.outputs.add("fragEmission","vec4",d++),l&&i.outputs.add("fragOcclusion","vec4",d++),f.uniforms.add(new t("frontFaceTexture",e=>e.frontFaceTexture)),c&&(f.uniforms.add(new t("emissionTexture",e=>e.emissionTexture)),f.uniforms.add(new t("emissionFrontFaceTexture",e=>e.emissionFrontFaceTexture))),f.main.add(o`
3
3
  float srcAlpha = texture(alphaTexture, uv).r * oitInputScale;
4
4
  ${r(l,"fragOcclusion = vec4(1.0, 0.0, 0.0, 1.0);")}
5
5
 
@@ -19,6 +19,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
19
19
  `)}
20
20
 
21
21
  vec4 srcColor = texture(colorTexture, uv);
22
+ ${r(!m,"float frontWeight = srcAlpha * oitOutputScale;\n frontFace.a = mix(frontFace.a, 1.0, clamp((frontWeight - 0.9) * 10.0, 0.0, 1.0));")}
22
23
  fragColor = vec4(mix(srcColor.rgb * oitInputScale / srcAlpha, frontFace.rgb, frontFace.a), 1.0 - srcColor.a);
23
24
 
24
25
  ${r(c,"vec4 emission = texture(emissionTexture, uv) * oitInputScale;\n vec4 emissionFrontFace = texture(emissionFrontFaceTexture, uv);\n\n // Modulate transparent emitter by front faces. This case is important for surfaces which contain emitter and\n // non-emitter at the same time. Non-emitter surface parts need to modulate emissions as well.\n emission.rgb = emission.rgb * (1.0 - frontFace.a);\n\n fragEmission = vec4(mix(emission.rgb / srcAlpha, emissionFrontFace.rgb, emissionFrontFace.a) * oitOutputScale, 1.0 - srcColor.a);\n ")}
package/config.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.1.0-next.46";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
2
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.1.0-next.48";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
package/core/has.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- const e=globalThis,a={...e.esriConfig?.has};function has(d){return"function"==typeof a[d]?a[d]=a[d](e):a[d]}has.add=(e,d,r,t)=>{(t||void 0===a[e])&&(a[e]=d),r&&has(e)},has.cache=a,has.add("big-integer-warning-enabled",!0),has.add("esri-deprecation-warnings",!0),has.add("esri-tests-disable-screenshots",!1),has.add("esri-tests-use-full-window",!1),has.add("esri-tests-post-to-influx",!0),has.add("esri-cim-animations-enable-status","enabled"),has.add("esri-cim-animations-spotlight",!1),has.add("esri-cim-animations-freeze-time",!1),(()=>{has.add("host-webworker",void 0!==e.WorkerGlobalScope&&self instanceof e.WorkerGlobalScope);const a="undefined"!=typeof window&&"undefined"!=typeof location&&"undefined"!=typeof document&&window.location===location&&window.document===document;if(has.add("host-browser",a),has.add("host-node",!("object"!=typeof e.process||!e.process.versions?.node||!e.process.versions.v8)),has.add("dom",a),has("host-browser")){const e=navigator,a=e.userAgent,d=e.appVersion,r=parseFloat(d);if(has.add("wp",parseFloat(a.split("Windows Phone")[1])||void 0),has.add("msapp",parseFloat(a.split("MSAppHost/")[1])||void 0),has.add("khtml",d.includes("Konqueror")?r:void 0),has.add("edge",parseFloat(a.split("Edge/")[1])||void 0),has.add("opr",parseFloat(a.split("OPR/")[1])||void 0),has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(a.split("WebKit/")[1])||void 0),has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(a.split("Chrome/")[1])||void 0),has.add("android",!has("wp")&&parseFloat(a.split("Android ")[1])||void 0),has.add("safari",!d.includes("Safari")||has("wp")||has("chrome")||has("android")||has("edge")||has("opr")?void 0:parseFloat(d.split("Version/")[1])),has.add("mac",d.includes("Macintosh")),!has("wp")&&/(iPhone|iPod|iPad)/.test(a)){const e=RegExp.$1.replace(/P/,"p"),d=/OS ([\d_]+)/.test(a)?RegExp.$1:"1",r=parseFloat(d.replace(/_/,".").replaceAll("_",""));has.add(e,r),has.add("ios",r)}has("webkit")||(!a.includes("Gecko")||has("wp")||has("khtml")||has("edge")||has.add("mozilla",r),has("mozilla")&&has.add("ff",parseFloat(a.split("Firefox/")[1]||a.split("Minefield/")[1])||void 0))}})(),(()=>{if(e.navigator){const e=navigator.userAgent,a=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),d=/iPhone/i.test(e);a&&has.add("esri-mobile",a),d&&has.add("esri-iPhone",d),has.add("esri-geolocation",!!navigator.geolocation)}has.add("esri-wasm","WebAssembly"in e),has.add("esri-performance-mode-frames-between-render",20),has.add("esri-force-performance-mode",!1),has.add("esri-shared-array-buffer",()=>{const a="SharedArrayBuffer"in e,d=!1===e.crossOriginIsolated;return a&&!d}),has.add("wasm-simd",()=>{const e=[0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11];return WebAssembly.validate(new Uint8Array(e))}),has.add("esri-atomics","Atomics"in e),has.add("esri-workers","Worker"in e),has.add("web-feat:cache","caches"in e),has.add("esri-workers-arraybuffer-transfer",!has("safari")||Number(has("safari"))>=12),has.add("workers-pool-size",8),has.add("featurelayer-simplify-thresholds",[.5,.5,.5,.5]),has.add("featurelayer-simplify-payload-size-factors",[1,1,4]),has.add("featurelayer-animation-enabled",!0),has.add("featurelayer-snapshot-enabled",!0),has.add("featurelayer-snapshot-initial-tolerance",0),has.add("featurelayer-snapshot-point-min-threshold",8e4),has.add("featurelayer-snapshot-point-max-threshold",4e5),has.add("featurelayer-snapshot-multipoint-min-threshold",2e4),has.add("featurelayer-snapshot-multipoint-max-threshold",1e5),has.add("featurelayer-snapshot-polygon-min-threshold",2e3),has.add("featurelayer-snapshot-polygon-max-threshold",2e3),has.add("featurelayer-snapshot-polyline-min-threshold",2e3),has.add("featurelayer-snapshot-polyline-max-threshold",2e3),has.add("featurelayer-snapshot-max-vertex-count",25e4),has.add("featurelayer-snapshot-non-hosted-exceedslimit-enabled",!0),has.add("featurelayer-snapshot-concurrency",4),has.add("featurelayer-snapshot-allow-editable",!1),has.add("featurelayer-snapshot-coverage",.1),has.add("featurelayer-query-max-depth",4),has.add("featurelayer-query-max-page-size",8e3),has.add("featurelayer-query-pausing-enabled",!1),has.add("featurelayer-query-tile-concurrency",4),has.add("featurelayer-query-tile-max-features",6e5),has.add("featurelayer-advanced-symbols",!1),has.add("featurelayer-pbf",!0),has.add("featurelayer-pbf-statistics",!1),has.add("featurelayer-pbf-true-curves",!0),has.add("feature-layers-workers",!0),has.add("feature-polyline-generalization-factor",1),has.add("featurelayer-relative-time-queries-enabled",!0),has.add("featurelayer-relative-time-queries-bin-window-public",1),has.add("featurelayer-relative-time-queries-bin-window-private",60),has.add("parquetlayer-full-query-feature-count",2e4),has.add("parquetlayer-hittest-max-feature-count",1),has.add("parquetlayer-persistence-enabled",!1),has.add("parquetlayer-cache-enabled",!0),has.add("mapview-transitions-duration",200),has.add("mapview-essential-goto-duration",200),has.add("mapview-srswitch-adjust-rotation-scale-threshold",24e6),has.add("mapserver-pbf-version-support",10.81),has.add("mapservice-popup-identify-max-tolerance",20),has.add("request-queue-concurrency-global",50),has.add("request-queue-concurrency-hosted",16),has.add("request-queue-concurrency-non-hosted",6),has.add("curve-densification-coarse-segments",128),has.add("curve-densification-max-segments",2e3),has.add("curve-densification-min-segments",3),has.add("curve-densification-pixel-deviation",.5),has.add("view-readyState-waiting-delay",1e3),has.add("gradient-depth-bias",.01),has.add("gradient-depth-epsilon",1e-8),has.add("enable-feature:esri-compress-textures",!0),has.add("enable-feature:basemap-groundlayers",!0),has.add("enable-feature:im-shading",!0),has.add("enable-feature:im-vertex-normals",!0),!has("host-webworker")&&has("host-browser")&&(has.add("esri-csp-restrictions",()=>{try{new Function}catch{return!0}return!1}),has.add("esri-url-encodes-apostrophe",()=>{const e=window.document.createElement("a");return e.href="?'",e.href.includes("?%27")}))})();export{has as default};
2
+ const e=globalThis,a={...e.esriConfig?.has};function has(d){return"function"==typeof a[d]?a[d]=a[d](e):a[d]}has.add=(e,d,r,t)=>{(t||void 0===a[e])&&(a[e]=d),r&&has(e)},has.cache=a,has.add("big-integer-warning-enabled",!0),has.add("esri-deprecation-warnings",!0),has.add("esri-tests-disable-screenshots",!1),has.add("esri-tests-use-full-window",!1),has.add("esri-tests-post-to-influx",!0),has.add("esri-cim-animations-enable-status","enabled"),has.add("esri-cim-animations-spotlight",!1),has.add("esri-cim-animations-freeze-time",!1),(()=>{has.add("host-webworker",void 0!==e.WorkerGlobalScope&&self instanceof e.WorkerGlobalScope);const a="undefined"!=typeof window&&"undefined"!=typeof location&&"undefined"!=typeof document&&window.location===location&&window.document===document;if(has.add("host-browser",a),has.add("host-node",!("object"!=typeof e.process||!e.process.versions?.node||!e.process.versions.v8)),has.add("dom",a),has("host-browser")){const e=navigator,a=e.userAgent,d=e.appVersion,r=parseFloat(d);if(has.add("wp",parseFloat(a.split("Windows Phone")[1])||void 0),has.add("msapp",parseFloat(a.split("MSAppHost/")[1])||void 0),has.add("khtml",d.includes("Konqueror")?r:void 0),has.add("edge",parseFloat(a.split("Edge/")[1])||void 0),has.add("opr",parseFloat(a.split("OPR/")[1])||void 0),has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(a.split("WebKit/")[1])||void 0),has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(a.split("Chrome/")[1])||void 0),has.add("android",!has("wp")&&parseFloat(a.split("Android ")[1])||void 0),has.add("safari",!d.includes("Safari")||has("wp")||has("chrome")||has("android")||has("edge")||has("opr")?void 0:parseFloat(d.split("Version/")[1])),has.add("mac",d.includes("Macintosh")),!has("wp")&&/(iPhone|iPod|iPad)/.test(a)){const e=RegExp.$1.replace(/P/,"p"),d=/OS ([\d_]+)/.test(a)?RegExp.$1:"1",r=parseFloat(d.replace(/_/,".").replaceAll("_",""));has.add(e,r),has.add("ios",r)}has("webkit")||(!a.includes("Gecko")||has("wp")||has("khtml")||has("edge")||has.add("mozilla",r),has("mozilla")&&has.add("ff",parseFloat(a.split("Firefox/")[1]||a.split("Minefield/")[1])||void 0))}})(),(()=>{if(e.navigator){const e=navigator.userAgent,a=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),d=/iPhone/i.test(e);a&&has.add("esri-mobile",a),d&&has.add("esri-iPhone",d),has.add("esri-geolocation",!!navigator.geolocation)}has.add("esri-wasm","WebAssembly"in e),has.add("esri-performance-mode-frames-between-render",20),has.add("esri-force-performance-mode",!1),has.add("esri-shared-array-buffer",()=>{const a="SharedArrayBuffer"in e,d=!1===e.crossOriginIsolated;return a&&!d}),has.add("wasm-simd",()=>{const e=[0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11];return WebAssembly.validate(new Uint8Array(e))}),has.add("esri-atomics","Atomics"in e),has.add("esri-workers","Worker"in e),has.add("web-feat:cache","caches"in e),has.add("esri-workers-arraybuffer-transfer",!has("safari")||Number(has("safari"))>=12),has.add("min-workers-pool-size",2),has.add("max-workers-pool-size",has("esri-mobile")?3:8),has.add("featurelayer-simplify-thresholds",[.5,.5,.5,.5]),has.add("featurelayer-simplify-payload-size-factors",[1,1,4]),has.add("featurelayer-animation-enabled",!0),has.add("featurelayer-snapshot-enabled",!0),has.add("featurelayer-snapshot-initial-tolerance",0),has.add("featurelayer-snapshot-point-min-threshold",8e4),has.add("featurelayer-snapshot-point-max-threshold",4e5),has.add("featurelayer-snapshot-multipoint-min-threshold",2e4),has.add("featurelayer-snapshot-multipoint-max-threshold",1e5),has.add("featurelayer-snapshot-polygon-min-threshold",2e3),has.add("featurelayer-snapshot-polygon-max-threshold",2e3),has.add("featurelayer-snapshot-polyline-min-threshold",2e3),has.add("featurelayer-snapshot-polyline-max-threshold",2e3),has.add("featurelayer-snapshot-max-vertex-count",25e4),has.add("featurelayer-snapshot-non-hosted-exceedslimit-enabled",!0),has.add("featurelayer-snapshot-concurrency",4),has.add("featurelayer-snapshot-allow-editable",!1),has.add("featurelayer-snapshot-coverage",.1),has.add("featurelayer-query-max-depth",4),has.add("featurelayer-query-max-page-size",8e3),has.add("featurelayer-query-pausing-enabled",!1),has.add("featurelayer-query-tile-concurrency",4),has.add("featurelayer-query-tile-max-features",6e5),has.add("featurelayer-advanced-symbols",!1),has.add("featurelayer-pbf",!0),has.add("featurelayer-pbf-statistics",!1),has.add("featurelayer-pbf-true-curves",!0),has.add("feature-layers-workers",!0),has.add("feature-polyline-generalization-factor",1),has.add("featurelayer-relative-time-queries-enabled",!0),has.add("featurelayer-relative-time-queries-bin-window-public",1),has.add("featurelayer-relative-time-queries-bin-window-private",60),has.add("parquetlayer-full-query-feature-count",2e4),has.add("parquetlayer-hittest-max-feature-count",1),has.add("parquetlayer-persistence-enabled",!1),has.add("parquetlayer-cache-enabled",!0),has.add("mapview-transitions-duration",200),has.add("mapview-essential-goto-duration",200),has.add("mapview-srswitch-adjust-rotation-scale-threshold",24e6),has.add("mapserver-pbf-version-support",10.81),has.add("mapservice-popup-identify-max-tolerance",20),has.add("request-queue-concurrency-global",50),has.add("request-queue-concurrency-hosted",16),has.add("request-queue-concurrency-non-hosted",6),has.add("curve-densification-coarse-segments",128),has.add("curve-densification-max-segments",2e3),has.add("curve-densification-min-segments",3),has.add("curve-densification-pixel-deviation",.5),has.add("view-readyState-waiting-delay",1e3),has.add("gradient-depth-bias",.01),has.add("gradient-depth-epsilon",1e-8),has.add("enable-feature:esri-compress-textures",!0),has.add("enable-feature:basemap-groundlayers",!0),has.add("enable-feature:im-shading",!0),has.add("enable-feature:im-vertex-normals",!0),!has("host-webworker")&&has("host-browser")&&(has.add("esri-csp-restrictions",()=>{try{new Function}catch{return!0}return!1}),has.add("esri-url-encodes-apostrophe",()=>{const e=window.document.createElement("a");return e.href="?'",e.href.includes("?%27")}))})();export{has as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{handlesGroup as e}from"../handleUtils.js";import"../has.js";import{isPromiseLike as t,createAbortError as s,throwIfAborted as i}from"../promiseUtils.js";import o from"../Queue.js";import{unregister as n}from"./connectionRegistry.js";import{createInvokeProxy as r}from"./InvokeHandler.js";import l from"./RemoteClient.js";class h{constructor(){this._inUseClients=new Array,this._clients=new Array,this._clientPromises=new Array,this._ongoingJobsQueue=new o,this._ongoingLowPriorityJobsQueue=new o}destroy(){this.close()}get closed(){return!this._clients?.length}open(e,s){return new Promise((o,n)=>{let r=!0;const h=e=>{i(s.signal),r&&(r=!1,e())};this._clients.length=e.length,this._clientPromises.length=e.length,this._inUseClients.length=e.length;for(let i=0;i<e.length;++i){const r=e[i];t(r)?this._clientPromises[i]=r.then(e=>(this._clients[i]=new l(e,s,this._ongoingJobsQueue,this._ongoingLowPriorityJobsQueue),h(o),this._clients[i]),()=>(h(n),null)):(this._clients[i]=new l(r,s,this._ongoingJobsQueue,this._ongoingLowPriorityJobsQueue),this._clientPromises[i]=Promise.resolve(this._clients[i]),h(o))}})}broadcast(e,t,s){const i=new Array(this._clientPromises.length);for(let o=0;o<this._clientPromises.length;++o){const n=this._clientPromises[o];i[o]=n.then(i=>i?.invoke(e,t,s))}return i}close(){let e;for(;e=this._ongoingJobsQueue.pop();)e.resolver.reject(s(`Worker closing, aborting job calling '${e.methodName}'`));for(;e=this._ongoingLowPriorityJobsQueue.pop();)e.resolver.reject(s(`Worker closing, aborting job calling '${e.methodName}'`));for(const t of this._clientPromises)t.then(e=>e?.close());this._clients.length=0,this._clientPromises.length=0,this._inUseClients.length=0,n(this)}invoke(e,t,s){return this.apply(e,[t],s)}apply(e,t,s){const i=Promise.withResolvers();(1===s?.jobPriority?this._ongoingLowPriorityJobsQueue:this._ongoingJobsQueue).push({methodName:e,data:t,invokeOptions:s,resolver:i});for(let o=0;o<this._clientPromises.length;o++){const e=this._clients[o];e?e.jobAdded():this._clientPromises[o].then(e=>e?.jobAdded())}return i.promise}createInvokeProxy(e){return r(this,e)}on(t,s){return Promise.all(this._clientPromises).then(()=>e(this._clients.map(e=>e.on(t,s))))}openPorts(){return new Promise(e=>{const t=new Array(this._clientPromises.length);let s=t.length;for(let i=0;i<this._clientPromises.length;++i){this._clientPromises[i].then(o=>{o&&(t[i]=o.openPort()),0===--s&&e(t)})}})}get test(){}}export{h as default};
2
+ import{handlesGroup as t,makeHandle as o}from"../handleUtils.js";import"../has.js";import{createAbortError as e,isAborted as i}from"../promiseUtils.js";import s from"../Queue.js";import{unregister as n}from"./connectionRegistry.js";import{createInvokeProxy as r}from"./InvokeHandler.js";import l from"./RemoteClient.js";class h{constructor(){this._clients=new Array,this._ongoingJobsQueue=new s,this._ongoingLowPriorityJobsQueue=new s,this._onClientConnectedCallbacks=new Set,this._clientOpenOptions=null,this._portSource=null,this._onClose=null,this._isProvisioningClient=!1,this._isClosed=!1}destroy(){this.close()}[Symbol.dispose](){this.destroy()}get closed(){return this._isClosed}async open(t,o,e){this._isClosed=!1,this._clientOpenOptions=o,this._portSource=t[Symbol.iterator](),this._onClose=e,this._clients.length=0,await this._tryAllocateNewClient()}broadcast(t,o,e){return this._clients.map(i=>i.invoke(t,o,e))}close(){if(this._isClosed)return;let t;for(this._isClosed=!0;t=this._ongoingJobsQueue.pop();)t.resolver.reject(e(`Worker closing, aborting job calling '${t.methodName}'`));for(;t=this._ongoingLowPriorityJobsQueue.pop();)t.resolver.reject(e(`Worker closing, aborting job calling '${t.methodName}'`));for(const o of this._clients)o.close();this._clients.length=0,this._onClose?.(),this._onClose=null,this._portSource?.return?.(),this._portSource=null,this._onClientConnectedCallbacks.clear(),n(this)}invoke(t,o,e){return this.apply(t,[o],e)}apply(t,o,e){const i=Promise.withResolvers();return(1===e?.jobPriority?this._ongoingLowPriorityJobsQueue:this._ongoingJobsQueue).push({methodName:t,data:o,invokeOptions:e,resolver:i}),this._provisionClientIfNeeded(),this._signalClientsJobAdded(),i.promise}createInvokeProxy(t){return r(this,t)}on(o,e){return t(this._clients.map(t=>t.on(o,e)))}onClientConnected(t){this._onClientConnectedCallbacks.add(t);for(const o of this._clients)o&&t(o);return o(()=>{this._onClientConnectedCallbacks.delete(t)})}openPorts(){return this._clients.map(t=>t.openPort())}get test(){}async _addClient(t,o){const s=await t;if(i(o)||this._isClosed)throw e();const n=new l(s,o,this._ongoingJobsQueue,this._ongoingLowPriorityJobsQueue);this._clients.push(n);for(const e of this._onClientConnectedCallbacks)e(n);n.jobAdded()}_signalClientsJobAdded(){for(const t of this._clients)t.jobAdded()}_provisionClientIfNeeded(){const t=this._ongoingJobsQueue.length>0||this._ongoingLowPriorityJobsQueue.length>0,o=this._clients.some(t=>t&&!t.isBusy());t&&!o&&this._tryAllocateNewClient()}async _tryAllocateNewClient(){const t=this._clientOpenOptions;if(!this._portSource||this._isClosed||!t||this._isProvisioningClient)return;const o=this._portSource.next();if(o.done)this._portSource=null;else{this._isProvisioningClient=!0;try{await this._addClient(o.value,t)}finally{this._isProvisioningClient=!1}}}}export{h as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{remove as e}from"../arrayUtils.js";import{makeHandle as t}from"../handleUtils.js";import s from"../Logger.js";import{throwIfAborted as r}from"../promiseUtils.js";import{open as i}from"../workers.js";class o{constructor(e,t,r,o,h={}){this._mainMethod=t,this._transferLists=r,this._listeners=[],this._promise=i(e,{...h,schedule:o}).then(e=>{if(void 0===this._thread){this._thread=e,this._promise=null,h.hasInitialize&&this.broadcast({},"initialize");for(const e of this._listeners)this._connectListener(e)}else e.close()}),this._promise.catch(t=>s.getLogger("esri.core.workers.WorkerHandle").error(`Failed to initialize ${e} worker: ${t}`))}on(s,r){const i={removed:!1,eventName:s,callback:r,threadHandle:null};return this._listeners.push(i),this._connectListener(i),t(()=>{i.removed=!0,e(this._listeners,i),this._thread&&null!=i.threadHandle&&i.threadHandle.remove()})}[Symbol.dispose](){this.destroy()}destroy(){this._thread&&(this._thread.close(),this._thread=null),this._promise=null,this._listeners.length=0,this._transferLists={}}invoke(e,t,s){return this.invokeMethod(this._mainMethod,e,t,s)}invokeMethod(e,t,s,i){if(this._thread){const r=this._transferLists[e],o=r?r(t):[];return this._thread.invoke(e,t,{transferList:o,signal:s,jobPriority:i})}return this._promise?this._promise.then(()=>(r(s),this.invokeMethod(e,t,s))):Promise.reject(null)}broadcast(e,t){return this._thread?Promise.all(this._thread.broadcast(t,e)).then(h):this._promise?this._promise.then(()=>this.broadcast(e,t)):Promise.reject()}get promise(){return this._promise}_connectListener(e){this._thread&&this._thread.on(e.eventName,e.callback).then(t=>{e.removed||(e.threadHandle=t)})}}function h(){}export{o as WorkerHandle};
2
+ import{remove as t}from"../arrayUtils.js";import e from"../Handles.js";import{makeHandle as s}from"../handleUtils.js";import i from"../Logger.js";import{removeMaybe as r}from"../maybe.js";import{throwIfAborted as n}from"../promiseUtils.js";import{open as o}from"../workers.js";class h{constructor(t,e,s,r,n={}){this._mainMethod=e,this._transferLists=s,this._listeners=[],this._onClientConnectedHandle=null,this._destroyed=!1,this._promise=o(t,{...n,schedule:r}).then(t=>{null!=this._thread||this._destroyed?t.close():(this._thread=t,this._promise=null,this._onClientConnectedHandle=this._thread.onClientConnected(t=>{n.hasInitialize&&t.invoke("initialize",{});for(const e of this._listeners)this._connectListenerToClient(e,t);this._onClientConnected(t)}))}),this._promise.catch(e=>i.getLogger("esri.core.workers.WorkerHandle").error(`Failed to initialize ${t} worker: ${e}`))}on(e,i){const r=new a(e,i);return this._listeners.push(r),this._connectListener(r),s(()=>{t(this._listeners,r),r.destroy()})}[Symbol.dispose](){this.destroy()}destroy(){this._onClientConnectedHandle=r(this._onClientConnectedHandle),this._thread&&(this._thread.close(),this._thread=null),this._promise=null;for(const t of this._listeners)t.destroy();this._listeners.length=0,this._transferLists={},this._destroyed=!0}invoke(t,e,s){return this.invokeMethod(this._mainMethod,t,e,s)}invokeMethod(t,e,s,i){if(this._thread){const r=this._transferLists[t],n=r?r(e):[];return this._thread.invoke(t,e,{transferList:n,signal:s,jobPriority:i})}return this._promise?this._promise.then(()=>(n(s),this.invokeMethod(t,e,s))):Promise.reject(null)}broadcast(t,e){return this._thread?Promise.all(this._thread.broadcast(e,t)).then(d):this._promise?this._promise.then(()=>this.broadcast(t,e)):Promise.reject()}get promise(){return this._promise}_onClientConnected(t){}_connectListener(t){this._thread&&t.add(this._thread.on(t.eventName,t.callback))}_connectListenerToClient(t,e){t.add(e.on(t.eventName,t.callback))}}class a{constructor(t,s){this.eventName=t,this.callback=s,this._handles=new e}add(t){this._handles.add(t)}destroy(){this._handles.destroy()}}function d(){}export{h as WorkerHandle};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import r from"../Error.js";import has from"../has.js";import{throwIfAborted as t}from"../promiseUtils.js";import o from"./Connection.js";import{register as e}from"./connectionRegistry.js";import n from"./RemoteClient.js";import i from"./WorkerOwner.js";const s=has("host-browser")?Math.min(navigator.hardwareConcurrency-1,has("workers-pool-size")??8):0;let a=has("esri-mobile")?Math.min(s,3):s;a||(a=has("safari")&&has("mac")?7:2);let c=0;const l=[];function m(){g()}function u(r,t={}){return f(r,t)}async function f(r,t){const n=new o,{registryTarget:i,...s}=t;return await n.open(r,s),i&&e(i,n),n}async function p(o,e={}){if("string"!=typeof o)throw new r("workers:undefined-module","modulePath is missing");let i=e.strategy||"distributed";if(has("host-webworker")&&!has("esri-workers")&&(i="local"),"local"===i){let r=await n.loadWorker(o);r||(r=await import(/* @vite-ignore */ /* webpackIgnore: true */o)),t(e.signal);const i=e.client||r;return f([n.connect(r,e.schedule)],{...e,client:i})}if(await g(),t(e.signal),"dedicated"===i){const r=c++%a;return f([await l[r].open(o,e)],e)}if(e.maxNumWorkers&&e.maxNumWorkers>0){const r=Math.min(e.maxNumWorkers,a);if(r<a){const t=new Array(r);for(let n=0;n<r;++n){const r=c++%a;t[n]=l[r].open(o,e)}return f(t,e)}}return f(l.map(r=>r.open(o,e)),e)}function w(){d&&(h.abort(),d=null);for(let r=0;r<l.length;r++)l[r]&&l[r].terminate();l.length=0}let h,d=null;async function g(){if(d)return d;h=new AbortController;const r=[];for(let t=0;t<a;t++){const o=i.create(t).then(r=>(l[t]=r,r));r.push(o)}return d=Promise.all(r),d}export{o as Connection,n as RemoteClient,m as initialize,p as open,u as openWithPorts,w as terminate};
2
+ import t from"../Error.js";import{handlesGroup as r}from"../handleUtils.js";import has from"../has.js";import{getOrCreateMapValue as o}from"../MapUtils.js";import{throwIfAborted as e}from"../promiseUtils.js";import n from"./Connection.js";import{register as s}from"./connectionRegistry.js";import i from"./RemoteClient.js";import a from"./WorkerOwner.js";function u(){const t=has("min-workers-pool-size")??2,r=has("max-workers-pool-size")??8,o=has("host-browser")&&void 0!==navigator.hardwareConcurrency?navigator.hardwareConcurrency-1:r;return Math.min(Math.max(t,o),r)}const l=[],c=new Map;let m=u(),h=0;function f(){m=u(),h=0,c.clear()}function y(){k()}async function p(t,r={},o){const e=new n,{registryTarget:i,...a}=r;return await e.open(t,a,o),i&&s(i,e),e}async function x(r,e={}){if("string"!=typeof r)throw new t("workers:undefined-module","modulePath is missing");let n=e.strategy||"distributed";has("host-webworker")&&!has("esri-workers")&&(n="local");const s=o(c,r,()=>new _(r));return"local"===n?d(s,e):g(s,e)}async function d({modulePath:t},r){let o=await i.loadWorker(t);o||(o=await import(/* @vite-ignore */ /* webpackIgnore: true */t)),e(r.signal);const n=r.client||o,s=i.connect(o,r.schedule);return await p([s],{...r,client:n})}async function g(t,o){await k(),e(o.signal);const n=[];return p(w(t,o,n),o,()=>r(n).remove())}function*w(t,r,o){const e="dedicated"===r.strategy?1:r.maxNumWorkers&&r.maxNumWorkers>0?Math.min(r.maxNumWorkers,m):m,n=new Set;for(let s=0;s<e;s++){const e=t.getNextProxyId(t=>!n.has(t));if(null==e)break;n.add(e),o.push(t.useProxy(e)),yield l[e].open(t.modulePath,r)}}function C(){U&&(P.abort(),U=null);for(let t=0;t<l.length;t++)l[t]&&l[t].terminate();l.length=0,f()}let P,U=null;async function k(){if(U)return U;P=new AbortController;const t=[];for(let r=0;r<m;r++){const o=a.create(r).then(t=>(l[r]=t,t));t.push(o)}return U=Promise.all(t),U}class _{constructor(t){this.modulePath=t,this._proxyUseCount=new Map}useProxy(t){return this._proxyUseCount.set(t,this._getProxyUseCount(t)+1),{remove:()=>this._unuseProxy(t)}}getNextProxyId(t){const r=Array.from(this._proxyUseCount.keys());let o;const e=h;h=(h+1)%m;for(let n=0;n<r.length;n++){const s=r[(e+n)%r.length];if(t(s)&&(r.length===m&&(o??=s),0===this._getProxyUseCount(s)))return s}if(null!=o)return o;for(let n=0;n<m;n++){const r=(n+e)%m;if(t(r)&&!this._proxyUseCount.has(r))return r}}_unuseProxy(t){this._proxyUseCount.set(t,Math.max(0,this._getProxyUseCount(t)-1))}_getProxyUseCount(t){return this._proxyUseCount.get(t)??0}}export{n as Connection,i as RemoteClient,y as initialize,x as open,p as openWithPorts,C as terminate};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{floatEqualRelative as t,floatEqualAbsolute as n}from"../../../core/mathUtils.js";import{expandPointInPlace as o,containsXY as r,expandXInPlace as s,expandYInPlace as c}from"../aaBoundingRect.js";import{distance2 as u,findClosestAndFurthestCurveParametersToPoint as e,interpolateSegment as f}from"./mathUtils.js";const i=[0,0];function a(t){const n=1-t,o=n*n,r=t*t;return[o*n,3*t*o,3*r*n,r*t]}function h(t,n,o,r,s){const[c,u,e,f]=a(s);return[t[0]*c+n[0]*u+o[0]*e+r[0]*f,t[1]*c+n[1]*u+o[1]*e+r[1]*f]}function m(t,n,o,r,s){const[c,u,e,f]=a(s);return t*c+n*u+o*e+r*f}function p(t,n,o){const r=t,[s,c,u]=n.b;return h(r,c,u,s,o)}function M(t,n,o){const r=t,[s,c,u]=n.b,e=f([0,0],r,c,o),a=f(i,c,u,o),h=f([0,0],u,s,o),m=f([0,0],e,a,o),p=f([0,0],a,h,o);return[{b:[f([],m,p,o),e,m]},{b:[[...s],p,h]}]}function b(o,r,s){const c=o,[u,f,i]=r.b,a=e(s,[.1,.5,.9],t=>{const n=1-t,[o,r]=h(c,f,i,u,t);return[o,r,3*n*n*(f[0]-c[0])+6*n*t*(i[0]-f[0])+3*t*t*(u[0]-i[0]),3*n*n*(f[1]-c[1])+6*n*t*(i[1]-f[1])+3*t*t*(u[1]-i[1]),6*n*(i[0]-2*f[0]+c[0])+6*t*(u[0]-2*i[0]+f[0]),6*n*(i[1]-2*f[1]+c[1])+6*t*(u[1]-2*i[1]+f[1])]}).map(t=>Math.min(1,Math.max(0,t)));a.push(0,1);let m=1/0;const p=a.map(t=>{const n=h(c,f,i,u,t),[o,r]=n,e=s[0]-o,a=s[1]-r,p=Math.sqrt(e*e+a*a);return m=Math.min(p,m),{t,curvePoint:n,distance:p}}),M=[];for(const e of p){const{t:o,distance:r}=e;t(r,m)&&!M.some(({t})=>n(t,o))&&M.push(e)}return M}function l(t,n,u){const e=n,[f,i,a]=u.b;if(o(t,e),o(t,f),r(t,i[0],i[1])&&r(t,a[0],a[1]))return t;for(const o of q(e[0],i[0],a[0],f[0]))o>0&&o<1&&s(t,m(e[0],i[0],a[0],f[0],o));for(const o of q(e[1],i[1],a[1],f[1]))o>0&&o<1&&c(t,m(e[1],i[1],a[1],f[1],o));return t}function q(t,n,o,r){const s=3*(3*(n-o)-t+r),c=6*(t-2*n+o),u=3*(n-t);if(0===s)return 0!==c?[-u/c]:[];const e=Math.sqrt(c*c-4*s*u);return[(-c+e)/(2*s),(-c-e)/(2*s)]}function d(t,n,o){const r=16;let s=0,c=[n];for(let e=0;e<r;e++){let n=t;const r=[];for(const t of c)r.push(...M(n,t,.5)),n=t.b[0];c=r,n=t,s=0;let e=0;for(const t of c){const[o,r,c]=t.b,f=Math.sqrt(u(n,o));s+=(f+(Math.sqrt(u(n,r))+Math.sqrt(u(r,c))+Math.sqrt(u(c,o))))/2,e+=f,n=o}if(s-e<o)return s}return s}export{l as bezierCurveExtent,d as bezierCurveLength,b as closestPointsOnBezierCurve,p as interpolateBezierCurve,h as interpolateCubicBezier,m as interpolateCubicBezier1D,M as splitBezierCurve};
2
+ import{floatEqualRelative as t,floatEqualAbsolute as n}from"../../../core/mathUtils.js";import{expandPointInPlace as o,containsXY as r,expandXInPlace as s,expandYInPlace as c}from"../aaBoundingRect.js";import{distance2 as u,interpolateSegment as e,findClosestAndFurthestCurveParametersToPoint as f}from"./mathUtils.js";const i=[0,0];function a(t){const n=1-t,o=n*n,r=t*t;return[o*n,3*t*o,3*r*n,r*t]}function h(t,n,o,r,s){const[c,u,e,f]=a(s);return[t[0]*c+n[0]*u+o[0]*e+r[0]*f,t[1]*c+n[1]*u+o[1]*e+r[1]*f]}function m(t,n,o,r,s){const[c,u,e,f]=a(s);return t*c+n*u+o*e+r*f}function p(t,n,o){const r=t,[s,c,u]=n.b;return h(r,c,u,s,o)}function M(t,n,o){const r=t,[s,c,u]=n.b,f=e([0,0],r,c,o),a=e(i,c,u,o),h=e([0,0],u,s,o),m=e([0,0],f,a,o),p=e([0,0],a,h,o);return[{b:[e([],m,p,o),f,m]},{b:[[...s],p,h]}]}function b(o,r,s){const c=o,[u,e,i]=r.b,a=f(s,[.1,.5,.9],t=>{const n=1-t,[o,r]=h(c,e,i,u,t);return[o,r,3*n*n*(e[0]-c[0])+6*n*t*(i[0]-e[0])+3*t*t*(u[0]-i[0]),3*n*n*(e[1]-c[1])+6*n*t*(i[1]-e[1])+3*t*t*(u[1]-i[1]),6*n*(i[0]-2*e[0]+c[0])+6*t*(u[0]-2*i[0]+e[0]),6*n*(i[1]-2*e[1]+c[1])+6*t*(u[1]-2*i[1]+e[1])]}).map(t=>Math.min(1,Math.max(0,t)));a.push(0,1);let m=1/0;const p=a.map(t=>{const n=h(c,e,i,u,t),[o,r]=n,f=s[0]-o,a=s[1]-r,p=Math.sqrt(f*f+a*a);return m=Math.min(p,m),{t,curvePoint:n,distance:p}}),M=[];for(const f of p){const{t:o,distance:r}=f;t(r,m)&&!M.some(({t})=>n(t,o))&&M.push(f)}return M}function l(t,n,u){const e=n,[f,i,a]=u.b;if(o(t,e),o(t,f),r(t,i[0],i[1])&&r(t,a[0],a[1]))return t;for(const o of q(e[0],i[0],a[0],f[0]))o>0&&o<1&&s(t,m(e[0],i[0],a[0],f[0],o));for(const o of q(e[1],i[1],a[1],f[1]))o>0&&o<1&&c(t,m(e[1],i[1],a[1],f[1],o));return t}function q(t,n,o,r){const s=3*(3*(n-o)-t+r),c=6*(t-2*n+o),u=3*(n-t);if(0===s)return 0!==c?[-u/c]:[];const e=Math.sqrt(c*c-4*s*u);return[(-c+e)/(2*s),(-c-e)/(2*s)]}function d(t,n,o){const r=16;let s=0,c=[n];for(let e=0;e<r;e++){let n=t;const r=[];for(const t of c)r.push(...M(n,t,.5)),n=t.b[0];c=r,n=t,s=0;let e=0;for(const t of c){const[o,r,c]=t.b,f=Math.sqrt(u(n,o));s+=(f+(Math.sqrt(u(n,r))+Math.sqrt(u(r,c))+Math.sqrt(u(c,o))))/2,e+=f,n=o}if(s-e<o)return s}return s}export{l as bezierCurveExtent,d as bezierCurveLength,b as closestPointsOnBezierCurve,p as interpolateBezierCurve,h as interpolateCubicBezier,m as interpolateCubicBezier1D,M as splitBezierCurve};
package/kernel.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.46",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
2
+ import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.48",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
package/layers/Layer.d.ts CHANGED
@@ -170,7 +170,8 @@ export default abstract class Layer extends LayerSuperclass {
170
170
  /**
171
171
  * Creates a new layer instance from an ArcGIS Server URL. Depending on the URL, the returned layer type may be a [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/BuildingSceneLayer/),
172
172
  * [CatalogLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CatalogLayer/), [ElevationLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ElevationLayer/), [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/), [GroupLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GroupLayer/), [ImageryLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/),
173
- * [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryTileLayer/), [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/), [KnowledgeGraphLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/),
173
+ * [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryTileLayer/), [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/), [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/),
174
+ * [GaussianSplatLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/), [KnowledgeGraphLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/),
174
175
  * [MapImageLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapImageLayer/), [OrientedImageryLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/OrientedImageryLayer/), [PointCloudLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/PointCloudLayer/),
175
176
  * [SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/), [StreamLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/StreamLayer/), [SubtypeGroupLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SubtypeGroupLayer/), [TileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/TileLayer/), or [VideoLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/VideoLayer/).
176
177
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{WorkerHandle as r}from"../core/workers/WorkerHandle.js";class e extends r{constructor(r){super("Lyr3DWorker","process",{process:r=>r.inputs},r,{hasInitialize:!0})}destroyWasm(){return this.broadcast({},"destroyWasm")}addSpatialReferenceInfo(r,e,s,t){const o={sr:r,isGCS:e,toMetersXY:s,toMetersZ:t};return this.broadcast(o,"addSpatialReferenceInfo")}}export{e as Lyr3DWorkerHandle};
2
+ import{WorkerHandle as s}from"../core/workers/WorkerHandle.js";class e extends s{constructor(s){super("Lyr3DWorker","process",{process:s=>s.inputs},s,{hasInitialize:!0}),this._srInfos=[]}destroyWasm(){return this.broadcast({},"destroyWasm")}addSpatialReferenceInfo(s,e,r,o){const t={sr:s,isGCS:e,toMetersXY:r,toMetersZ:o};return this._srInfos.push(t),this.broadcast(t,"addSpatialReferenceInfo")}_onClientConnected(s){for(const e of this._srInfos)s.invoke("addSpatialReferenceInfo",e)}}export{e as Lyr3DWorkerHandle};
@@ -41,7 +41,7 @@ import type { SpatialReferenceProperties } from "../geometry/SpatialReference.js
41
41
  import type { ReadonlyArrayOrCollection } from "../core/Collection.js";
42
42
  import type { LayerProperties } from "./Layer.js";
43
43
 
44
- export interface ParquetLayerProperties extends LayerProperties, CustomParametersMixinProperties, OperationalLayerProperties, ScaleRangeLayerProperties, OrderedLayerProperties, BlendLayerProperties, FeatureEffectLayerProperties, FeatureReductionLayerProperties, Partial<Pick<ParquetLayer, "copyright" | "geometryType" | "labelsVisible" | "legendEnabled" | "outFields" | "popupEnabled">> {
44
+ export interface ParquetLayerProperties extends LayerProperties, CustomParametersMixinProperties, OperationalLayerProperties, ScaleRangeLayerProperties, OrderedLayerProperties, BlendLayerProperties, FeatureEffectLayerProperties, FeatureReductionLayerProperties, Partial<Pick<ParquetLayer, "copyright" | "definitionExpression" | "geometryType" | "labelsVisible" | "legendEnabled" | "outFields" | "popupEnabled">> {
45
45
  /**
46
46
  * An array of fields in the layer.
47
47
  *
@@ -288,6 +288,28 @@ export default class ParquetLayer extends ParquetLayerSuperclass {
288
288
  get capabilities(): FeatureLayerCapabilities | null | undefined;
289
289
  /** Copyright information for the layer. */
290
290
  accessor copyright: string | null | undefined;
291
+ /**
292
+ * The SQL where clause used to filter features on the client. Only the features that satisfy the definition
293
+ * expression are displayed in the map. Setting a definition expression is useful
294
+ * when the dataset is large and you don't want to bring all features to the client for analysis.
295
+ * Definition expressions may be set when a layer is constructed prior to it loading in the view or
296
+ * after it has been added to the map. If the definition expression is set after the layer has been added to the map, the view will
297
+ * automatically refresh itself to display the features that satisfy the new definition expression.
298
+ *
299
+ * @since 5.1
300
+ * @example
301
+ * // Set definition expression in constructor to only display water wells with Status = 'Constructed'
302
+ * const layer = new ParquetLayer({
303
+ * urls: [
304
+ * "https://jsapi.maps.arcgis.com/sharing/rest/content/items/6ab6f959c1684eb5a54db91644a89747/data",
305
+ * ],
306
+ * definitionExpression: "Status = 'Constructed'"
307
+ * });
308
+ * @example
309
+ * // Set the definition expression directly on layer instance after it has loaded
310
+ * layer.definitionExpression = "Status = 'Constructed'";
311
+ */
312
+ accessor definitionExpression: string | null | undefined;
291
313
  /**
292
314
  * An array of fields in the layer.
293
315
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{insertSortedStableTopN as e}from"../../../core/arrayUtils.js";import{clone as t}from"../../../core/lang.js";import{polygonCentroid as s,extentCentroid as i}from"../../../geometry/support/centroid.js";import{getPolygonExtent as a,getGeometryExtent as n}from"../../../geometry/support/extentUtils.js";import{toQuantizationTransform as r}from"../../../geometry/support/quantizationUtils.js";import{isValid as o,equals as l}from"../../../geometry/support/spatialReferenceUtils.js";import{closestPointOnCurve as u}from"../../../geometry/support/curves/closestPointOnCurve.js";import{getEndpoint as c,isCoordinate as m,cloneCurve as d}from"../../../geometry/support/curves/curveUtils.js";import p from"./AttributesBuilder.js";import{cleanFromGeometryEngine as f,getGeometry as h,transformCentroid as y}from"./geometryUtils.js";import{project as g}from"./projectionSupport.js";import{getDateInNumber as x}from"./queryUtils.js";import{SnappingCandidateEdge as F,SnappingCandidateVertex as T}from"./SnappingCandidate.js";import{isDateField as I,isDateOnlyField as _,isTimestampOffsetField as v,isStringField as V,isTimeOnlyField as S}from"../../support/fieldUtils.js";import b from"../../../rest/support/AutoIntervalBinParameters.js";import R from"../../../rest/support/DateBinParameters.js";import{unitsDict as z}from"../../../rest/support/DateBinUtils.js";import B from"../../../rest/support/FixedBoundariesBinParameters.js";import M from"../../../rest/support/FixedIntervalBinParameters.js";import{isNullCountSupported as A,calculateStringStatistics as w,calculateStatistics as N,processSummaryStatisticsResult as D,calculateUniqueValuesCount as P,createUVResult as q,calculateClassBreaks as O,resolveCBResult as j,calculateHistogram as C,calculatePercentile as Z,binIndex as G,getBinParams as E,getAttributeComparator as H}from"../../../statistics/utils.js";import{utc as U}from"../../../time/constants.js";import{DateTime as k}from"luxon";const J="bin";class Q{constructor(e,t,s){this.items=e,this.query=t,this.geometryType=s.geometryType,this.hasM=s.hasM,this.hasZ=s.hasZ,this.fieldsIndex=s.fieldsIndex,this.objectIdField=s.objectIdField,this.spatialReference=s.spatialReference,this.featureAdapter=s.featureAdapter}get size(){return this.items.length}createQueryResponseForCount(){const e=new p(this.query,this.featureAdapter,this.fieldsIndex);if(!this.query.outStatistics)return e.countDistinctValues(this.items);const{groupByFieldsForStatistics:t,having:s,outStatistics:i}=this.query,a=t?.length;if(!!!a)return 1;const n=new Map,r=new Map,o=new Set;for(const l of i){const{statisticType:i}=l,a="exceedslimit"!==i?l.onStatisticField:void 0;if(!r.has(a)){const s=[];for(const i of t){const t=this._getAttributeValues(e,i,this.items,n);s.push(t)}r.set(a,this._calculateUniqueValues(s,this.items,e.returnDistinctValues))}const u=r.get(a);for(const t in u){const{data:i,items:a}=u[t],n=i.join(",");s&&!e.validateItems(a,s)||o.add(n)}}return o.size}async createQueryResponse(){let e;if(this.query.outStatistics){e=this.query.outStatistics.some(e=>"exceedslimit"===e.statisticType)?this._createExceedsLimitQueryResponse():await this._createStatisticsQueryResponse(this.query,this.items)}else e=this._createFeatureQueryResponse(this.query);if(this.query.returnQueryGeometry){const t=this.query.geometry;o(this.query.outSR)&&!l(t.spatialReference,this.query.outSR)?e.queryGeometry=f({spatialReference:this.query.outSR,...g(t,t.spatialReference,this.query.outSR)}):e.queryGeometry=f({spatialReference:this.query.outSR,...t})}return e}createSnappingResponse(e,t,s){const i=this.featureAdapter,a=X(this.hasZ,this.hasM),{point:n}=e,r="number"==typeof e.distance?e.distance:e.distance.x,o="number"==typeof e.distance?e.distance:e.distance.y;function l(e,t){const s=(e-n.x)/r,i=(t-n.y)/o;return s*s+i*i}const p={candidates:[]},f="esriGeometryPolygon"===this.geometryType,h="esriGeometryPolyline"===this.geometryType||"esriGeometryPoint"===this.geometryType,y=this._getPointCreator(t,this.spatialReference,s),g=new L(null,0),x=new L(null,0),I={x:0,y:0,z:0};for(const u of this.items){const e=i.getObjectId(u),t=i.getGeometryWithCurves?.(u);if(null!=t){v(t,e);continue}const s=i.getGeometry(u);null==s||_(s,e)}return p.candidates.sort((e,t)=>e.distance-t.distance),p;function _(t,s){const{coords:i}=t,r=t.isPoint?W:t.lengths;if(g.coords=i,x.coords=i,e.returnEdge){let e=0;for(let t=0;t<r.length;t++){const i=r[t],o=e;for(let t=0;t<i;t++,e+=a){if(!f&&t===i-1)continue;if(g.coordsIndex=e,x.coordsIndex=t===i-1?o:e+a,!Y(I,n,g,x))continue;const r=l(I.x,I.y);r<=1&&p.candidates.push(new F(s,y(I),Math.sqrt(r),y(g),y(x)))}}}if("all"===e.vertexMode){let e=0;for(let t=0;t<r.length;t++){const i=r[t],n=e,o=x;o.coordsIndex=n;for(let t=0;t<i;t++,e+=a){if(g.coordsIndex=e,f&&t===i-1&&g.x===o.x&&g.y===o.y)continue;const a=l(g.x,g.y);a<=1&&p.candidates.push(new T(s,y(g),Math.sqrt(a)))}}}else if(h&&"ends"===e.vertexMode){let e=0;const t=[];for(let s=0;s<r.length;s++){t.push(e);const i=r[s];e+=i*a,i>1&&t.push(e-a)}for(const i of t){g.coordsIndex=i;const e=l(g.x,g.y);e<=1&&p.candidates.push(new T(s,y(g),Math.sqrt(e)))}}}function v(t,s){const{candidates:i}=p,a={x:0,y:0,z:0};if(e.returnEdge){const e=[n.x,n.y],r=new L(e,0),o=new L(e,0);for(const{segments:n}of t.parts)for(const{start:t,curve:p}of n){const{curvePoint:n}=u(t,p,e),f=l(...n);if(f>1)continue;[a.x,a.y]=n,r.coords=t,o.coords=c(p);const h=m(p)?null:d(p);i.push(new F(s,y(a),Math.sqrt(f),y(r),y(o),!1,h))}}function r(e){a.x=t.vertexXY[2*e],a.y=t.vertexXY[2*e+1];const n=l(a.x,a.y);n>1||(a.z=t.vertexZ?.[e]??0,i.push(new T(s,y(a),Math.sqrt(n))))}if("all"===e.vertexMode){const{vertexCount:e}=t;for(let t=0;t<e;++t)r(t);return}if("ends"===e.vertexMode)switch(t.type){case"point":r(0);break;case"polyline":for(let e=0;e<t.partCount;++e){const s=t.partOffsets[e],i=t.partOffsets[e+1]-1;r(s),i!==s&&r(i)}}}}_getPointCreator(e,t,s){const i=null==s||l(t,s)?e=>e:e=>g(e,t,s),{hasZ:a}=this,n=0;return a&&e?({x:e,y:t,z:s})=>i({x:e,y:t,z:s}):({x:e,y:t})=>i({x:e,y:t,z:n})}async createSummaryStatisticsResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,minValue:r,maxValue:o,scale:l,timeZone:u,outStatisticTypes:c}=e,m=this.fieldsIndex.get(t),d=I(m)||_(m)||v(m),p=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,scale:l,timeZone:u},this.items),f=A({normalizationType:a,normalizationField:i,minValue:r,maxValue:o}),h={value:.5,fieldType:m?.type},y=V(m)?w({values:p,supportsNullCount:f,percentileParams:h,outStatisticTypes:c}):N({values:p,minValue:r,maxValue:o,useSampleStdDev:!a,supportsNullCount:f,percentileParams:h,outStatisticTypes:c});return D(y,c,d)}async createUniqueValuesResponse(e){const{field:t,valueExpression:s,domains:i,returnAllCodedValues:a,scale:n,timeZone:r}=e,o=await this._getDataValues({field:t,field2:e.field2,field3:e.field3,fieldDelimiter:e.fieldDelimiter,valueExpression:s,scale:n,timeZone:r},this.items,!1),l=P(o);return q(l,i,a,e.fieldDelimiter)}async createClassBreaksResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c,scale:m,timeZone:d}=e,p=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,scale:m,timeZone:d},this.items),f=O(p,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c});return j(f,r)}async createHistogramResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c,scale:m,timeZone:d}=e,p=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,scale:m,timeZone:d},this.items);return C(p,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c})}_sortFeatures(e,t,s){if(e.length>1&&t?.length)for(const i of t.slice().reverse()){const{compare:t,fieldOrExpression:a,fieldInfo:n}=K(i,this.fieldsIndex);e.sort((e,i)=>t(s(e,a,n),s(i,a,n)))}}_topNFeatures(t,s,i,a){if(t.length>1&&s?.length){const n=s.map(e=>{const{compare:t,fieldOrExpression:s,fieldInfo:i}=K(e,this.fieldsIndex);return(e,n)=>t(a(e,s,i),a(n,s,i))}).reduceRight((e,t)=>(s,i)=>{const a=t(s,i);return 0===a||Number.isNaN(a)?e(s,i):a}),r=[];for(const s of t)e(r,s,i,n);return r}return t.slice(0,i)}_createFeatureQueryResponse(e){const{items:t,geometryType:s,hasM:i,hasZ:a,objectIdField:n,spatialReference:o}=this,{outFields:l,outSR:u,quantizationParameters:c,resultRecordCount:m,resultOffset:d,returnZ:p,returnM:h}=e,y=null!=m&&t.length>(d||0)+m,g=l&&(l.includes("*")?[...this.fieldsIndex.fields]:l.map(e=>this.fieldsIndex.get(e)));return{exceededTransferLimit:y,features:this._createFeatures(e,t),fields:g,geometryType:s,hasM:i&&h,hasZ:a&&p,objectIdFieldName:n,spatialReference:f(u||o),transform:c&&r(c)||null}}_createFeatures(e,t){const s=new p(e,this.featureAdapter,this.fieldsIndex),{hasM:i,hasZ:a}=this,{orderByFields:n,quantizationParameters:o,returnGeometry:l,returnCentroid:u,maxAllowableOffset:c,resultOffset:m,resultRecordCount:d,returnZ:f=!1,returnM:g=!1}=e,x=a&&f,F=i&&g;let T;const I=m||0,_=null!=d?I+d:null;null!=_&&_<=5e3&&_<t.length?T=this._topNFeatures(t,n,_,(e,t,i)=>s.getFieldValue(e,t,i)):(T=[...t],this._sortFeatures(T,n,(e,t,i)=>s.getFieldValue(e,t,i))),(I>0||null!=_)&&(T=T.slice(I,_??void 0));const v=[];let V=0;if(this.geometryType&&(l||u)){const e=r(o)??void 0,t="esriGeometryPolygon"===this.geometryType||"esriGeometryPolyline"===this.geometryType;if(l&&!u)for(const i of T){const a=this.featureAdapter.getGeometry(i),n=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),geometry:h(this.geometryType,a,c,e,x,F)});t&&a&&!n.geometry&&(n.centroid=y(this,this.featureAdapter.getCentroid(i,this),e)),v[V++]=n}else if(!l&&u)for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:y(this,this.featureAdapter.getCentroid(i,this),e)});else for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:y(this,this.featureAdapter.getCentroid(i,this),e),geometry:h(this.geometryType,this.featureAdapter.getGeometry(i),c,e,x,F)})}else for(const r of T){const e=s.getAttributes(r);e&&(v[V++]=this._addFeatureJSONMetadata(r,{attributes:e}))}return v}_addFeatureJSONMetadata(e,t){const s=this.featureAdapter.getMetadata?.(e);return void 0!==s&&(t.metadata=s),t}_createExceedsLimitQueryResponse(){let e=!1,t=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY;for(const a of this.query.outStatistics??[])if("exceedslimit"===a.statisticType){t=null!=a.maxPointCount?a.maxPointCount:Number.POSITIVE_INFINITY,s=null!=a.maxRecordCount?a.maxRecordCount:Number.POSITIVE_INFINITY,i=null!=a.maxVertexCount?a.maxVertexCount:Number.POSITIVE_INFINITY;break}if("esriGeometryPoint"===this.geometryType)e=this.items.length>t;else if(this.items.length>s)e=!0;else{const t=X(this.hasZ,this.hasM),s=this.featureAdapter;e=this.items.reduce((e,t)=>{const i=s.getGeometry(t);return e+(null!=i&&i.coords.length||0)},0)/t>i}return{fields:[{name:"exceedslimit",type:"esriFieldTypeInteger",alias:"exceedslimit",sqlType:"sqlTypeInteger",domain:null,defaultValue:null}],features:[{attributes:{exceedslimit:Number(e)}}]}}async _createStatisticsQueryResponse(e,t,s={attributes:{}}){const i=[],a=new Map,n=new Map,r=new Map,o=new Map,l=new p(e,this.featureAdapter,this.fieldsIndex),u=e.outStatistics,{groupByFieldsForStatistics:c,having:m,orderByFields:d,resultRecordCount:f}=e,h=c?.length,y=!!h,g=y?c[0]:null,x=y&&!this.fieldsIndex.get(g);for(const p of u??[]){const{outStatisticFieldName:e,statisticType:u}=p,d=p,f="exceedslimit"!==u?p.onStatisticField:void 0,F="percentile_disc"===u||"percentile_cont"===u,T="EnvelopeAggregate"===u||"CentroidAggregate"===u||"ConvexHullAggregate"===u,I=y&&1===h&&(f===g||x)&&"count"===u;if(y){if(!r.has(f)){const e=[];for(const s of c){const i=this._getAttributeValues(l,s,t,a);e.push(i)}r.set(f,this._calculateUniqueValues(e,t,!T&&l.returnDistinctValues))}const s=r.get(f);if(!s)continue;const i=Object.keys(s);for(const n of i){const{count:i,data:r,items:u,itemPositions:p}=s[n],h=r.join(",");if(!m||l.validateItems(u,m)){const s=o.get(h)||{attributes:{}};if(T){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:t}=await this._getAggregateGeometry(d,u);s.aggregateGeometries[t]=e}else{let n=null;if(I)n=i;else{const e=this._getAttributeValues(l,f,t,a),s=p.map(t=>e[t]);n=F&&"statisticParameters"in d?this._getPercentileValue(d,s):this._getStatisticValue(d,s,null,l.returnDistinctValues)}s.attributes[e]=n}let n=0;c.forEach((e,t)=>s.attributes[this.fieldsIndex.get(e)?e:"EXPR_"+ ++n]=r[t]),o.set(h,s)}}}else if(T){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:i}=await this._getAggregateGeometry(d,t);s.aggregateGeometries[i]=e}else{const i=this._getAttributeValues(l,f,t,a);s.attributes[e]=F&&"statisticParameters"in d?this._getPercentileValue(d,i):this._getStatisticValue(d,i,n,l.returnDistinctValues)}const _="min"!==u&&"max"!==u||!V(this.fieldsIndex.get(f))&&!this._isAnyDateField(f)?null:this.fieldsIndex.get(f)?.type;i.push({name:e,alias:e,type:_||"esriFieldTypeDouble"})}const F=y?Array.from(o.values()):[s];return this._sortFeatures(F,d,(e,t)=>e.attributes[t]),f&&(F.length=Math.min(f,F.length)),{fields:i,features:F}}_isAnyDateField(e){const t=this.fieldsIndex.get(e);return I(t)||_(t)||v(t)||S(t)}async _getAggregateGeometry(e,t){const{convexHull:r,union:o}=await import("../../../geometry/geometryEngineJSON.js"),{statisticType:l,outStatisticFieldName:u}=e,{featureAdapter:c,spatialReference:m,geometryType:d}=this,p=t.map(e=>h(d,c.getGeometry(e))),f=r(m,p,!0)[0],y={aggregateGeometries:null,outStatisticFieldName:null};if("EnvelopeAggregate"===l){const e=f?a(f):n(o(m,p));y.aggregateGeometries={...e,spatialReference:m},y.outStatisticFieldName=u||"extent"}else if("CentroidAggregate"===l){const e=f?s(f):i(n(o(m,p)));y.aggregateGeometries={x:e[0],y:e[1],spatialReference:m},y.outStatisticFieldName=u||"centroid"}else"ConvexHullAggregate"===l&&(y.aggregateGeometries=f,y.outStatisticFieldName=u||"convexHull");return y}_getStatisticValue(e,t,s,i){const{onStatisticField:a,statisticType:n}=e;let r=null;r=s?.has(a)?s.get(a):V(this.fieldsIndex.get(a))||this._isAnyDateField(a)?w({values:t,returnDistinct:i}):N({values:i?[...new Set(t)]:t,minValue:null,maxValue:null,useSampleStdDev:!0}),s&&s.set(a,r);return r["var"===n?"variance":n]}_getPercentileValue(e,t){const{onStatisticField:s,statisticParameters:i,statisticType:a}=e,{value:n,orderBy:r}=i,o=this.fieldsIndex.get(s);return Z(t,{value:n,orderBy:r,fieldType:o?.type,isDiscrete:"percentile_disc"===a})}_getAttributeValues(e,t,s,i){if(i.has(t))return i.get(t);const a=this.fieldsIndex.get(t),n=s.map(s=>e.getFieldValue(s,t,a));return i.set(t,n),n}_calculateUniqueValues(e,t,s){const i={},a=t.length;for(let n=0;n<a;n++){const a=t[n],r=[];for(const t of e)r.push(t[n]);const o=r.join(",");null==i[o]?i[o]={count:1,data:r,items:[a],itemPositions:[n]}:(s||i[o].count++,i[o].items.push(a),i[o].itemPositions.push(n))}return i}async _getDataValues(e,s,i=!0){const a=new p(this.query,this.featureAdapter,this.fieldsIndex),{valueExpression:n,scale:r,timeZone:o}=e;return n?a.getExpressionValues(s,n,{viewingMode:"map",scale:r,spatialReference:this.query.outSR||this.spatialReference},{geometryType:this.geometryType,hasZ:this.hasZ,hasM:this.hasM},o):a.getDataValues(s,t(e),i)}_calculateHistogramBins(e,t,s){if(null==t.min&&null==t.max)return[];const i=t.intervals,a=t.min??0,n=t.max??0,r=i.map(([e,t])=>({minValue:e,maxValue:t,count:0,items:[]}));for(let o=0;o<e.length;o++){const t=e[o],l=s[o];if(null!=t&&t>=a&&t<=n){const e=G(i,t);e>-1&&(r[e].count++,r[e].items.push(l))}}return r}async createQueryBinsResponse(e){const t=e.bin?.splitBy;if(!t)return this._createBinsResponse(e);const{value:s,outAlias:i,valueType:a}=t,n=[],r=[{name:i??s,alias:i??s,type:a??"esriFieldTypeString"},{name:J,alias:J,type:"esriFieldTypeInteger"}],o=new p(e,this.featureAdapter,this.fieldsIndex),l=new Map,u=[...this.items];this._sortFeatures(u,[s],(e,t,s)=>o.getFieldValue(e,t,s));const c=this._getAttributeValues(o,s,u,l),m=this._calculateUniqueValues([c],u,o.returnDistinctValues);for(const d in m){const{items:t}=m[d],a=await this._createBinsResponse(e,t);if(n.push(...a.features.map(e=>({...e,attributes:{...e.attributes,[i??s]:d}}))),a.fields)for(const e of a.fields)r.some(t=>t.name===e.name)||r.push(e)}return{fields:r,features:n}}async _createBinsResponse(e,t){const s=e.bin;switch(t=t??this.items,s.type){case"autoIntervalBin":return this._createAutoIntervalBinsResponse(b.fromJSON(s),e,t);case"dateBin":return this._createDateBinsResponse(R.fromJSON(s),e,t);case"fixedBoundariesBin":return this._createFixedBoundariesBinsResponse(B.fromJSON(s),e,t);case"fixedIntervalBin":return this._createFixedIntervalBinsResponse(M.fromJSON(s),e,t)}}async _createAutoIntervalBinsResponse(e,t,s){const{field:i,normalizationField:a,numBins:n,normalizationType:r,normalizationTotal:o,start:l,end:u}=e,c=await this._getDataValues({field:e.field||e.expression,normalizationField:e.normalizationField,normalizationType:e.normalizationType,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),m=E(c,{field:i,normalizationField:a,normalizationType:r,normalizationTotal:o,numBins:n,minValue:x(r?e.normalizationMinValue:l,!1),maxValue:x(r?e.normalizationMaxValue:u,!1)}),d=this._calculateHistogramBins(c,m,s);return this._createFeaturesFromHistogramBins(d,t)}async _createDateBinsResponse(e,t,s){const{field:i,interval:a,start:n,end:r,snapToData:o,returnFullIntervalBin:l,offset:u,firstDayOfWeek:c}=e,m=a.unit,d=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),p=S(this.fieldsIndex.get(i)),f=z.toJSON(m),h=d.filter(Boolean).sort((e,t)=>e-t),y=null!=n?x(n,p):h[0],g=null!=r?x(r,p):h[h.length-1],F=[];if(null!=y&&null!=g){const e={zone:t.outTimeReference?.ianaTimeZone??U},s=u?.unit?z.toJSON(u.unit):"milliseconds",i={[s]:u?.value||0},n=k.fromMillis(y,e).minus(i),r=k.fromMillis(g,e).minus(i),m="number"==typeof c&&c>=1&&c<=7?c:7,d=(e,t)=>{const s=(e.weekday-t+7)%7;return e.minus({days:s}).startOf("day")};if("last"===o){let e="week"===f?((e,t)=>d(e,t).plus({days:7}))(r,m):r;for(;e>n;){const t=e.minus({[f]:a.value});if(t<n){F.unshift([l?t.plus(i).toMillis():n.plus(i).toMillis(),e.plus(i).toMillis()]);break}F.unshift([t.plus(i).toMillis(),e.plus(i).toMillis()]),e=t}}else{let e="first"===o?n:"week"===f?d(n,m):n.startOf(f);for(;e<=r;){const t=e.plus({[f]:a.value});if(t>r){F.push([e.plus(i).toMillis(),l?t.plus(i).toMillis():r.plus(i).toMillis()]);break}F.push([e.plus(i).toMillis(),t.plus(i).toMillis()]),e=t}}}const T=this._calculateHistogramBins(d,{intervals:F,min:y,max:g},s);return this._createFeaturesFromHistogramBins(T,t)}async _createFixedBoundariesBinsResponse(e,t,s){const{field:i}=e,a=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),n=S(this.fieldsIndex.get(i)),r=e.boundaries.map(e=>x(e,n)).sort((e,t)=>e-t),o=[];for(let c=0;c<r.length-1;c++)o.push([r[c],r[c+1]]);const l={intervals:o,min:r.at(0),max:r.at(-1)},u=this._calculateHistogramBins(a,l,s);return this._createFeaturesFromHistogramBins(u,t)}async _createFixedIntervalBinsResponse(e,t,s){const{field:i,interval:a,normalizationType:n,start:r,end:o}=e,l=await this._getDataValues({field:i||e.expression,normalizationField:e.normalizationField,normalizationType:n,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),u=S(this.fieldsIndex.get(i)),c=E(l,{field:i,classificationMethod:"defined-interval",definedInterval:a,minValue:x(n?e.normalizationMinValue:r,u),maxValue:x(n?e.normalizationMaxValue:o,u)},!0),m=this._calculateHistogramBins(l,c,s);return this._createFeaturesFromHistogramBins(m,t)}async _createFeaturesFromHistogramBins(e,t){const{upperBoundaryAlias:s,lowerBoundaryAlias:i}=t,a=i||"lowerBoundary",n=s||"upperBoundary",r=[],o=[{name:a,alias:a,type:"esriFieldTypeDouble"},{name:n,alias:n,type:"esriFieldTypeDouble"}],l=t.bin?.stackBy?.value,u=t.bin?.stackBy?.outAlias;l&&o.push({name:J,alias:J,type:"esriFieldTypeInteger"},{name:u??l,alias:u??l,type:"esriFieldTypeString"});let c=0;const m="dateBin"===t.bin.type,d=t.outTimeReference?.ianaTimeZone;for(const p of e){const{minValue:e,maxValue:s,items:i}=p,f={attributes:{}};let h;if(f.attributes[a]=m&&d&&null!=e?k.fromMillis(e,{zone:d}).toISO():e,t.bin.hideUpperBound||(f.attributes[n]=m&&d&&null!=s?k.fromMillis(s,{zone:d}).toISO():s),l?(h=await this._createStatisticsQueryResponse({...t,groupByFieldsForStatistics:[l],orderByFields:[l]},i),f.attributes[J]=++c,"flat"===t.bin.jsonStyle?r.push(...h.features.map(({attributes:{EXPR_1:e,...t},...s})=>({...s,attributes:u??e?{...t,[u??e]:e,...f.attributes}:{...t,...f.attributes}}))):(f.stackedAttributes=h.features.map(({attributes:{EXPR_1:e,...t}})=>u??e?{...t,[u??e]:e}:t),r.push(f))):(t.bin?.splitBy&&(f.attributes[J]=++c),h=await this._createStatisticsQueryResponse(t,i,f),r.push(f)),h.fields)for(const t of h.fields)o.some(e=>e.name===t.name)||o.push(t)}return"desc"===t.binOrder&&r.reverse(),{fields:o,features:r}}}function Y(e,t,s,i){const a=i.x-s.x,n=i.y-s.y,r=t.x-s.x,o=t.y-s.y,l=a*a+n*n;if(0===l)return!1;const u=r*a+o*n,c=Math.min(1,Math.max(0,u/l));return e.x=s.x+a*c,e.y=s.y+n*c,!0}function X(e,t){return e?t?4:3:t?3:2}class L{constructor(e,t){this.coords=e,this.coordsIndex=t}get x(){return this.coords[this.coordsIndex]}get y(){return this.coords[this.coordsIndex+1]}get z(){return this.coords[this.coordsIndex+2]}}const W=[1];function K(e,t){const s=e.split(" "),i=s[0],a=t.get(i),n=!!s[1]&&"desc"===s[1].toLowerCase();return{compare:H(a?.type,n,"case-insensitive"),fieldOrExpression:i,fieldInfo:a}}export{Q as QueryEngineResult};
2
+ import{insertSortedStableTopN as e}from"../../../core/arrayUtils.js";import{clone as t}from"../../../core/lang.js";import{polygonCentroid as s,extentCentroid as i}from"../../../geometry/support/centroid.js";import{getPolygonExtent as a,getGeometryExtent as n}from"../../../geometry/support/extentUtils.js";import{toQuantizationTransform as r}from"../../../geometry/support/quantizationUtils.js";import{isValid as o,equals as l}from"../../../geometry/support/spatialReferenceUtils.js";import{closestPointOnCurve as u}from"../../../geometry/support/curves/closestPointOnCurve.js";import{getEndpoint as c,isCoordinate as m,cloneCurve as d}from"../../../geometry/support/curves/curveUtils.js";import p from"./AttributesBuilder.js";import{cleanFromGeometryEngine as f,getGeometry as h,transformCentroid as y}from"./geometryUtils.js";import{project as g}from"./projectionSupport.js";import{getDateInNumber as x}from"./queryUtils.js";import{SnappingCandidateEdge as F,SnappingCandidateVertex as T}from"./SnappingCandidate.js";import{isDateField as I,isDateOnlyField as _,isTimestampOffsetField as v,isStringField as V,isTimeOnlyField as S}from"../../support/fieldUtils.js";import b from"../../../rest/support/AutoIntervalBinParameters.js";import R from"../../../rest/support/DateBinParameters.js";import{unitsDict as z}from"../../../rest/support/DateBinUtils.js";import B from"../../../rest/support/FixedBoundariesBinParameters.js";import M from"../../../rest/support/FixedIntervalBinParameters.js";import{calculateStringStatistics as A,calculateStatistics as w,processSummaryStatisticsResult as N,calculateUniqueValuesCount as D,createUVResult as P,calculateClassBreaks as q,resolveCBResult as O,calculateHistogram as j,calculatePercentile as C,binIndex as Z,getBinParams as G,isNullCountSupported as E,getAttributeComparator as H}from"../../../statistics/utils.js";import{utc as U}from"../../../time/constants.js";import{DateTime as k}from"luxon";const J="bin";class Q{constructor(e,t,s){this.items=e,this.query=t,this.geometryType=s.geometryType,this.hasM=s.hasM,this.hasZ=s.hasZ,this.fieldsIndex=s.fieldsIndex,this.objectIdField=s.objectIdField,this.spatialReference=s.spatialReference,this.featureAdapter=s.featureAdapter}get size(){return this.items.length}createQueryResponseForCount(){const e=new p(this.query,this.featureAdapter,this.fieldsIndex);if(!this.query.outStatistics)return e.countDistinctValues(this.items);const{groupByFieldsForStatistics:t,having:s,outStatistics:i}=this.query,a=t?.length;if(!!!a)return 1;const n=new Map,r=new Map,o=new Set;for(const l of i){const{statisticType:i}=l,a="exceedslimit"!==i?l.onStatisticField:void 0;if(!r.has(a)){const s=[];for(const i of t){const t=this._getAttributeValues(e,i,this.items,n);s.push(t)}r.set(a,this._calculateUniqueValues(s,this.items,e.returnDistinctValues))}const u=r.get(a);for(const t in u){const{data:i,items:a}=u[t],n=i.join(",");s&&!e.validateItems(a,s)||o.add(n)}}return o.size}async createQueryResponse(){let e;if(this.query.outStatistics){e=this.query.outStatistics.some(e=>"exceedslimit"===e.statisticType)?this._createExceedsLimitQueryResponse():await this._createStatisticsQueryResponse(this.query,this.items)}else e=this._createFeatureQueryResponse(this.query);if(this.query.returnQueryGeometry){const t=this.query.geometry;o(this.query.outSR)&&!l(t.spatialReference,this.query.outSR)?e.queryGeometry=f({spatialReference:this.query.outSR,...g(t,t.spatialReference,this.query.outSR)}):e.queryGeometry=f({spatialReference:this.query.outSR,...t})}return e}createSnappingResponse(e,t,s){const i=this.featureAdapter,a=X(this.hasZ,this.hasM),{point:n}=e,r="number"==typeof e.distance?e.distance:e.distance.x,o="number"==typeof e.distance?e.distance:e.distance.y;function l(e,t){const s=(e-n.x)/r,i=(t-n.y)/o;return s*s+i*i}const p={candidates:[]},f="esriGeometryPolygon"===this.geometryType,h="esriGeometryPolyline"===this.geometryType||"esriGeometryPoint"===this.geometryType,y=this._getPointCreator(t,this.spatialReference,s),g=new L(null,0),x=new L(null,0),I={x:0,y:0,z:0};for(const u of this.items){const e=i.getObjectId(u),t=i.getGeometryWithCurves?.(u);if(null!=t){v(t,e);continue}const s=i.getGeometry(u);null==s||_(s,e)}return p.candidates.sort((e,t)=>e.distance-t.distance),p;function _(t,s){const{coords:i}=t,r=t.isPoint?W:t.lengths;if(g.coords=i,x.coords=i,e.returnEdge){let e=0;for(let t=0;t<r.length;t++){const i=r[t],o=e;for(let t=0;t<i;t++,e+=a){if(!f&&t===i-1)continue;if(g.coordsIndex=e,x.coordsIndex=t===i-1?o:e+a,!Y(I,n,g,x))continue;const r=l(I.x,I.y);r<=1&&p.candidates.push(new F(s,y(I),Math.sqrt(r),y(g),y(x)))}}}if("all"===e.vertexMode){let e=0;for(let t=0;t<r.length;t++){const i=r[t],n=e,o=x;o.coordsIndex=n;for(let t=0;t<i;t++,e+=a){if(g.coordsIndex=e,f&&t===i-1&&g.x===o.x&&g.y===o.y)continue;const a=l(g.x,g.y);a<=1&&p.candidates.push(new T(s,y(g),Math.sqrt(a)))}}}else if(h&&"ends"===e.vertexMode){let e=0;const t=[];for(let s=0;s<r.length;s++){t.push(e);const i=r[s];e+=i*a,i>1&&t.push(e-a)}for(const i of t){g.coordsIndex=i;const e=l(g.x,g.y);e<=1&&p.candidates.push(new T(s,y(g),Math.sqrt(e)))}}}function v(t,s){const{candidates:i}=p,a={x:0,y:0,z:0};if(e.returnEdge){const e=[n.x,n.y],r=new L(e,0),o=new L(e,0);for(const{segments:n}of t.parts)for(const{start:t,curve:p}of n){const{curvePoint:n}=u(t,p,e),f=l(...n);if(f>1)continue;[a.x,a.y]=n,r.coords=t,o.coords=c(p);const h=m(p)?null:d(p);i.push(new F(s,y(a),Math.sqrt(f),y(r),y(o),!1,h))}}function r(e){a.x=t.vertexXY[2*e],a.y=t.vertexXY[2*e+1];const n=l(a.x,a.y);n>1||(a.z=t.vertexZ?.[e]??0,i.push(new T(s,y(a),Math.sqrt(n))))}if("all"===e.vertexMode){const{vertexCount:e}=t;for(let t=0;t<e;++t)r(t);return}if("ends"===e.vertexMode)switch(t.type){case"point":r(0);break;case"polyline":for(let e=0;e<t.partCount;++e){const s=t.partOffsets[e],i=t.partOffsets[e+1]-1;r(s),i!==s&&r(i)}}}}_getPointCreator(e,t,s){const i=null==s||l(t,s)?e=>e:e=>g(e,t,s),{hasZ:a}=this,n=0;return a&&e?({x:e,y:t,z:s})=>i({x:e,y:t,z:s}):({x:e,y:t})=>i({x:e,y:t,z:n})}async createSummaryStatisticsResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,minValue:r,maxValue:o,scale:l,timeZone:u,outStatisticTypes:c}=e,m=this.fieldsIndex.get(t),d=I(m)||_(m)||v(m),p=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,scale:l,timeZone:u},this.items),f=E({normalizationType:a,normalizationField:i,minValue:r,maxValue:o}),h={value:.5,fieldType:m?.type},y=V(m)?A({values:p,supportsNullCount:f,percentileParams:h,outStatisticTypes:c}):w({values:p,minValue:r,maxValue:o,useSampleStdDev:!a,supportsNullCount:f,percentileParams:h,outStatisticTypes:c});return N(y,c,d)}async createUniqueValuesResponse(e){const{field:t,valueExpression:s,domains:i,returnAllCodedValues:a,scale:n,timeZone:r}=e,o=await this._getDataValues({field:t,field2:e.field2,field3:e.field3,fieldDelimiter:e.fieldDelimiter,valueExpression:s,scale:n,timeZone:r},this.items,!1),l=D(o);return P(l,i,a,e.fieldDelimiter)}async createClassBreaksResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c,scale:m,timeZone:d}=e,p=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,scale:m,timeZone:d},this.items),f=q(p,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numClasses:c});return O(f,r)}async createHistogramResponse(e){const{field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c,scale:m,timeZone:d}=e,p=await this._getDataValues({field:t,valueExpression:s,normalizationField:i,normalizationType:a,normalizationTotal:n,scale:m,timeZone:d},this.items);return j(p,{field:t,normalizationField:i,normalizationType:a,normalizationTotal:n,classificationMethod:r,standardDeviationInterval:o,minValue:l,maxValue:u,numBins:c})}_sortFeatures(e,t,s){if(e.length>1&&t?.length)for(const i of t.slice().reverse()){const{compare:t,fieldOrExpression:a,fieldInfo:n}=K(i,this.fieldsIndex);e.sort((e,i)=>t(s(e,a,n),s(i,a,n)))}}_topNFeatures(t,s,i,a){if(t.length>1&&s?.length){const n=s.map(e=>{const{compare:t,fieldOrExpression:s,fieldInfo:i}=K(e,this.fieldsIndex);return(e,n)=>t(a(e,s,i),a(n,s,i))}).reduceRight((e,t)=>(s,i)=>{const a=t(s,i);return 0===a||Number.isNaN(a)?e(s,i):a}),r=[];for(const s of t)e(r,s,i,n);return r}return t.slice(0,i)}_createFeatureQueryResponse(e){const{items:t,geometryType:s,hasM:i,hasZ:a,objectIdField:n,spatialReference:o}=this,{outFields:l,outSR:u,quantizationParameters:c,resultRecordCount:m,resultOffset:d,returnZ:p,returnM:h}=e,y=null!=m&&t.length>(d||0)+m,g=l&&(l.includes("*")?[...this.fieldsIndex.fields]:l.map(e=>this.fieldsIndex.get(e)));return{exceededTransferLimit:y,features:this._createFeatures(e,t),fields:g,geometryType:s,hasM:i&&h,hasZ:a&&p,objectIdFieldName:n,spatialReference:f(u||o),transform:c&&r(c)||null}}_createFeatures(e,t){const s=new p(e,this.featureAdapter,this.fieldsIndex),{hasM:i,hasZ:a}=this,{orderByFields:n,quantizationParameters:o,returnGeometry:l,returnCentroid:u,maxAllowableOffset:c,resultOffset:m,resultRecordCount:d,returnZ:f=!1,returnM:g=!1}=e,x=a&&f,F=i&&g;let T;const I=m||0,_=null!=d?I+d:null;null!=_&&_<=5e3&&_<t.length?T=this._topNFeatures(t,n,_,(e,t,i)=>s.getFieldValue(e,t,i)):(T=[...t],this._sortFeatures(T,n,(e,t,i)=>s.getFieldValue(e,t,i))),(I>0||null!=_)&&(T=T.slice(I,_??void 0));const v=[];let V=0;if(this.geometryType&&(l||u)){const e=r(o)??void 0,t="esriGeometryPolygon"===this.geometryType||"esriGeometryPolyline"===this.geometryType;if(l&&!u)for(const i of T){const a=this.featureAdapter.getGeometry(i),n=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),geometry:h(this.geometryType,a,c,e,x,F)});t&&a&&!n.geometry&&(n.centroid=y(this,this.featureAdapter.getCentroid(i,this),e)),v[V++]=n}else if(!l&&u)for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:y(this,this.featureAdapter.getCentroid(i,this),e)});else for(const i of T)v[V++]=this._addFeatureJSONMetadata(i,{attributes:s.getAttributes(i),centroid:y(this,this.featureAdapter.getCentroid(i,this),e),geometry:h(this.geometryType,this.featureAdapter.getGeometry(i),c,e,x,F)})}else for(const r of T){const e=s.getAttributes(r);e&&(v[V++]=this._addFeatureJSONMetadata(r,{attributes:e}))}return v}_addFeatureJSONMetadata(e,t){const s=this.featureAdapter.getMetadata?.(e);return void 0!==s&&(t.metadata=s),t}_createExceedsLimitQueryResponse(){let e=!1,t=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY;for(const a of this.query.outStatistics??[])if("exceedslimit"===a.statisticType){t=null!=a.maxPointCount?a.maxPointCount:Number.POSITIVE_INFINITY,s=null!=a.maxRecordCount?a.maxRecordCount:Number.POSITIVE_INFINITY,i=null!=a.maxVertexCount?a.maxVertexCount:Number.POSITIVE_INFINITY;break}if("esriGeometryPoint"===this.geometryType)e=this.items.length>t;else if(this.items.length>s)e=!0;else{const t=X(this.hasZ,this.hasM),s=this.featureAdapter;e=this.items.reduce((e,t)=>{const i=s.getGeometry(t);return e+(null!=i&&i.coords.length||0)},0)/t>i}return{fields:[{name:"exceedslimit",type:"esriFieldTypeInteger",alias:"exceedslimit",sqlType:"sqlTypeInteger",domain:null,defaultValue:null}],features:[{attributes:{exceedslimit:Number(e)}}]}}async _createStatisticsQueryResponse(e,t,s={attributes:{}}){const i=[],a=new Map,n=new Map,r=new Map,o=new Map,l=new p(e,this.featureAdapter,this.fieldsIndex),u=e.outStatistics,{groupByFieldsForStatistics:c,having:m,orderByFields:d,resultRecordCount:f}=e,h=c?.length,y=!!h,g=y?c[0]:null,x=y&&!this.fieldsIndex.get(g);for(const p of u??[]){const{outStatisticFieldName:e,statisticType:u}=p,d=p,f="exceedslimit"!==u?p.onStatisticField:void 0,F="percentile_disc"===u||"percentile_cont"===u,T="EnvelopeAggregate"===u||"CentroidAggregate"===u||"ConvexHullAggregate"===u,I=y&&1===h&&(f===g||x)&&"count"===u;if(y){if(!r.has(f)){const e=[];for(const s of c){const i=this._getAttributeValues(l,s,t,a);e.push(i)}r.set(f,this._calculateUniqueValues(e,t,!T&&l.returnDistinctValues))}const s=r.get(f);if(!s)continue;const i=Object.keys(s);for(const n of i){const{count:i,data:r,items:u,itemPositions:p}=s[n],h=r.join(",");if(!m||l.validateItems(u,m)){const s=o.get(h)||{attributes:{}};if(T){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:t}=await this._getAggregateGeometry(d,u);s.aggregateGeometries[t]=e}else{let n=null;if(I)n=i;else{const e=this._getAttributeValues(l,f,t,a),s=p.map(t=>e[t]);n=F&&"statisticParameters"in d?this._getPercentileValue(d,s):this._getStatisticValue(d,s,null,l.returnDistinctValues)}s.attributes[e]=n}let n=0;c.forEach((e,t)=>s.attributes[this.fieldsIndex.get(e)?e:"EXPR_"+ ++n]=r[t]),o.set(h,s)}}}else if(T){s.aggregateGeometries||(s.aggregateGeometries={});const{aggregateGeometries:e,outStatisticFieldName:i}=await this._getAggregateGeometry(d,t);s.aggregateGeometries[i]=e}else{const i=this._getAttributeValues(l,f,t,a);s.attributes[e]=F&&"statisticParameters"in d?this._getPercentileValue(d,i):this._getStatisticValue(d,i,n,l.returnDistinctValues)}const _="min"!==u&&"max"!==u||!V(this.fieldsIndex.get(f))&&!this._isAnyDateField(f)?null:this.fieldsIndex.get(f)?.type;i.push({name:e,alias:e,type:_||"esriFieldTypeDouble"})}const F=y?Array.from(o.values()):[s];return this._sortFeatures(F,d,(e,t)=>e.attributes[t]),f&&(F.length=Math.min(f,F.length)),{fields:i,features:F}}_isAnyDateField(e){const t=this.fieldsIndex.get(e);return I(t)||_(t)||v(t)||S(t)}async _getAggregateGeometry(e,t){const{convexHull:r,union:o}=await import("../../../geometry/geometryEngineJSON.js"),{statisticType:l,outStatisticFieldName:u}=e,{featureAdapter:c,spatialReference:m,geometryType:d}=this,p=t.map(e=>h(d,c.getGeometry(e))),f=r(m,p,!0)[0],y={aggregateGeometries:null,outStatisticFieldName:null};if("EnvelopeAggregate"===l){const e=f?a(f):n(o(m,p));y.aggregateGeometries={...e,spatialReference:m},y.outStatisticFieldName=u||"extent"}else if("CentroidAggregate"===l){const e=f?s(f):i(n(o(m,p)));y.aggregateGeometries={x:e[0],y:e[1],spatialReference:m},y.outStatisticFieldName=u||"centroid"}else"ConvexHullAggregate"===l&&(y.aggregateGeometries=f,y.outStatisticFieldName=u||"convexHull");return y}_getStatisticValue(e,t,s,i){const{onStatisticField:a,statisticType:n}=e;let r=null;r=s?.has(a)?s.get(a):V(this.fieldsIndex.get(a))||this._isAnyDateField(a)?A({values:t,returnDistinct:i}):w({values:i?[...new Set(t)]:t,minValue:null,maxValue:null,useSampleStdDev:!0}),s&&s.set(a,r);return r["var"===n?"variance":n]}_getPercentileValue(e,t){const{onStatisticField:s,statisticParameters:i,statisticType:a}=e,{value:n,orderBy:r}=i,o=this.fieldsIndex.get(s);return C(t,{value:n,orderBy:r,fieldType:o?.type,isDiscrete:"percentile_disc"===a})}_getAttributeValues(e,t,s,i){if(i.has(t))return i.get(t);const a=this.fieldsIndex.get(t),n=s.map(s=>e.getFieldValue(s,t,a));return i.set(t,n),n}_calculateUniqueValues(e,t,s){const i={},a=t.length;for(let n=0;n<a;n++){const a=t[n],r=[];for(const t of e)r.push(t[n]);const o=r.join(",");null==i[o]?i[o]={count:1,data:r,items:[a],itemPositions:[n]}:(s||i[o].count++,i[o].items.push(a),i[o].itemPositions.push(n))}return i}async _getDataValues(e,s,i=!0){const a=new p(this.query,this.featureAdapter,this.fieldsIndex),{valueExpression:n,scale:r,timeZone:o}=e;return n?a.getExpressionValues(s,n,{viewingMode:"map",scale:r,spatialReference:this.query.outSR||this.spatialReference},{geometryType:this.geometryType,hasZ:this.hasZ,hasM:this.hasM},o):a.getDataValues(s,t(e),i)}_calculateHistogramBins(e,t,s){if(null==t.min&&null==t.max)return[];const i=t.intervals,a=t.min??0,n=t.max??0,r=i.map(([e,t])=>({minValue:e,maxValue:t,count:0,items:[]}));for(let o=0;o<e.length;o++){const t=e[o],l=s[o];if(null!=t&&t>=a&&t<=n){const e=Z(i,t);e>-1&&(r[e].count++,r[e].items.push(l))}}return r}async createQueryBinsResponse(e){const t=e.bin?.splitBy;if(!t)return this._createBinsResponse(e);const{value:s,outAlias:i,valueType:a}=t,n=[],r=[{name:i??s,alias:i??s,type:a??"esriFieldTypeString"},{name:J,alias:J,type:"esriFieldTypeInteger"}],o=new p(e,this.featureAdapter,this.fieldsIndex),l=new Map,u=[...this.items];this._sortFeatures(u,[s],(e,t,s)=>o.getFieldValue(e,t,s));const c=this._getAttributeValues(o,s,u,l),m=this._calculateUniqueValues([c],u,o.returnDistinctValues);for(const d in m){const{items:t}=m[d],a=await this._createBinsResponse(e,t);if(n.push(...a.features.map(e=>({...e,attributes:{...e.attributes,[i??s]:d}}))),a.fields)for(const e of a.fields)r.some(t=>t.name===e.name)||r.push(e)}return{fields:r,features:n}}async _createBinsResponse(e,t){const s=e.bin;switch(t=t??this.items,s.type){case"autoIntervalBin":return this._createAutoIntervalBinsResponse(b.fromJSON(s),e,t);case"dateBin":return this._createDateBinsResponse(R.fromJSON(s),e,t);case"fixedBoundariesBin":return this._createFixedBoundariesBinsResponse(B.fromJSON(s),e,t);case"fixedIntervalBin":return this._createFixedIntervalBinsResponse(M.fromJSON(s),e,t)}}async _createAutoIntervalBinsResponse(e,t,s){const{field:i,normalizationField:a,numBins:n,normalizationType:r,normalizationTotal:o,start:l,end:u}=e,c=await this._getDataValues({field:e.field||e.expression,normalizationField:e.normalizationField,normalizationType:e.normalizationType,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),m=G(c,{field:i,normalizationField:a,normalizationType:r,normalizationTotal:o,numBins:n,minValue:x(r?e.normalizationMinValue:l,!1),maxValue:x(r?e.normalizationMaxValue:u,!1)}),d=this._calculateHistogramBins(c,m,s);return this._createFeaturesFromHistogramBins(d,t)}async _createDateBinsResponse(e,t,s){const{field:i,interval:a,start:n,end:r,snapToData:o,returnFullIntervalBin:l,offset:u,firstDayOfWeek:c}=e,m=a.unit,d=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),p=S(this.fieldsIndex.get(i)),f=z.toJSON(m),h=d.filter(Boolean).sort((e,t)=>e-t),y=null!=n?x(n,p):h[0],g=null!=r?x(r,p):h[h.length-1],F=[];if(null!=y&&null!=g){const e={zone:t.outTimeReference?.ianaTimeZone??U},s=u?.unit?z.toJSON(u.unit):"milliseconds",i={[s]:u?.value||0},n=k.fromMillis(y,e).minus(i),r=k.fromMillis(g,e).minus(i),m="number"==typeof c&&c>=1&&c<=7?c:7,d=(e,t)=>{const s=(e.weekday-t+7)%7;return e.minus({days:s}).startOf("day")};if("last"===o){let e="week"===f?((e,t)=>d(e,t).plus({days:7}))(r,m):r;for(;e>n;){const t=e.minus({[f]:a.value});if(t<n){F.unshift([l?t.plus(i).toMillis():n.plus(i).toMillis(),e.plus(i).toMillis()]);break}F.unshift([t.plus(i).toMillis(),e.plus(i).toMillis()]),e=t}}else{let e="first"===o?n:"week"===f?d(n,m):n.startOf(f);for(;e<=r;){const t=e.plus({[f]:a.value});if(t>r){F.push([e.plus(i).toMillis(),l?t.plus(i).toMillis():r.plus(i).toMillis()]);break}F.push([e.plus(i).toMillis(),t.plus(i).toMillis()]),e=t}}}const T=this._calculateHistogramBins(d,{intervals:F,min:y,max:g},s);return this._createFeaturesFromHistogramBins(T,t)}async _createFixedBoundariesBinsResponse(e,t,s){const{field:i}=e,a=await this._getDataValues({field:i||e.expression,timeZone:t.outTimeReference?.ianaTimeZone},s),n=S(this.fieldsIndex.get(i)),r=e.boundaries.map(e=>x(e,n)).sort((e,t)=>e-t),o=[];for(let c=0;c<r.length-1;c++)o.push([r[c],r[c+1]]);const l={intervals:o,min:r.at(0),max:r.at(-1)},u=this._calculateHistogramBins(a,l,s);return this._createFeaturesFromHistogramBins(u,t)}async _createFixedIntervalBinsResponse(e,t,s){const{field:i,interval:a,normalizationType:n,start:r,end:o}=e,l=await this._getDataValues({field:i||e.expression,normalizationField:e.normalizationField,normalizationType:n,normalizationTotal:e.normalizationTotal,timeZone:t.outTimeReference?.ianaTimeZone},s),u=S(this.fieldsIndex.get(i)),c=G(l,{field:i,classificationMethod:"defined-interval",definedInterval:a,minValue:x(n?e.normalizationMinValue:r,u),maxValue:x(n?e.normalizationMaxValue:o,u)},!0),m=this._calculateHistogramBins(l,c,s);return this._createFeaturesFromHistogramBins(m,t)}async _createFeaturesFromHistogramBins(e,t){const{upperBoundaryAlias:s,lowerBoundaryAlias:i}=t,a=i||"lowerBoundary",n=s||"upperBoundary",r=[],o=[{name:a,alias:a,type:"esriFieldTypeDouble"},{name:n,alias:n,type:"esriFieldTypeDouble"}],l=t.bin?.stackBy?.value,u=t.bin?.stackBy?.outAlias;l&&o.push({name:J,alias:J,type:"esriFieldTypeInteger"},{name:u??l,alias:u??l,type:"esriFieldTypeString"});let c=0;const m="dateBin"===t.bin.type,d=t.outTimeReference?.ianaTimeZone;for(const p of e){const{minValue:e,maxValue:s,items:i}=p,f={attributes:{}};let h;if(f.attributes[a]=m&&d&&null!=e?k.fromMillis(e,{zone:d}).toISO():e,t.bin.hideUpperBound||(f.attributes[n]=m&&d&&null!=s?k.fromMillis(s,{zone:d}).toISO():s),l?(h=await this._createStatisticsQueryResponse({...t,groupByFieldsForStatistics:[l],orderByFields:[l]},i),f.attributes[J]=++c,"flat"===t.bin.jsonStyle?r.push(...h.features.map(({attributes:{EXPR_1:e,...t},...s})=>({...s,attributes:u??e?{...t,[u??e]:e,...f.attributes}:{...t,...f.attributes}}))):(f.stackedAttributes=h.features.map(({attributes:{EXPR_1:e,...t}})=>u??e?{...t,[u??e]:e}:t),r.push(f))):(t.bin?.splitBy&&(f.attributes[J]=++c),h=await this._createStatisticsQueryResponse(t,i,f),r.push(f)),h.fields)for(const t of h.fields)o.some(e=>e.name===t.name)||o.push(t)}return"desc"===t.binOrder&&r.reverse(),{fields:o,features:r}}}function Y(e,t,s,i){const a=i.x-s.x,n=i.y-s.y,r=t.x-s.x,o=t.y-s.y,l=a*a+n*n;if(0===l)return!1;const u=r*a+o*n,c=Math.min(1,Math.max(0,u/l));return e.x=s.x+a*c,e.y=s.y+n*c,!0}function X(e,t){return e?t?4:3:t?3:2}class L{constructor(e,t){this.coords=e,this.coordsIndex=t}get x(){return this.coords[this.coordsIndex]}get y(){return this.coords[this.coordsIndex+1]}get z(){return this.coords[this.coordsIndex+2]}}const W=[1];function K(e,t){const s=e.split(" "),i=s[0],a=t.get(i),n=!!s[1]&&"desc"===s[1].toLowerCase();return{compare:H(a?.type,n,"case-insensitive"),fieldOrExpression:i,fieldInfo:a}}export{Q as QueryEngineResult};