@arcgis/core 4.27.0-next.20230516 → 4.27.0-next.20230517

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 (148) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/06d5f5e37fd44dc7de06.js +1 -0
  3. package/assets/esri/core/workers/chunks/12714d64a0154688072e.js +1 -0
  4. package/assets/esri/core/workers/chunks/{a507135977d83aea4421.js → 1827a3da6b5b9272ffe1.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{395ef46b635f9e9a5643.js → 20e8e18e4bd2fd5da47c.js} +1 -1
  6. package/assets/esri/core/workers/chunks/23f73f81aea461c0c6e6.js +1 -0
  7. package/assets/esri/core/workers/chunks/{15dda462b979e90b58fe.js → 3cebdd77a8401495097f.js} +1 -1
  8. package/assets/esri/core/workers/chunks/48cb634255e39711a720.js +1 -0
  9. package/assets/esri/core/workers/chunks/4d5f71d84c85f45c97ea.js +1 -0
  10. package/assets/esri/core/workers/chunks/6312783626bacf52df7a.js +1 -0
  11. package/assets/esri/core/workers/chunks/6d80f81bf6ad97a7e69e.js +1 -0
  12. package/assets/esri/core/workers/chunks/{a3822a97701890c12d63.js → 7903beee895860c7e3af.js} +1 -1
  13. package/assets/esri/core/workers/chunks/887a630c5c980c5028e1.js +1 -0
  14. package/assets/esri/core/workers/chunks/{522660da4589739a70c3.js → c7fb48ea5d907883bcce.js} +1 -1
  15. package/assets/esri/core/workers/chunks/d0ff968e42116f592065.js +1 -0
  16. package/assets/esri/core/workers/chunks/{fdf64f23529a22c79fbd.js → d52c920acf08c95277c3.js} +19 -19
  17. package/assets/esri/core/workers/chunks/d64c271c173797d98286.js +1 -0
  18. package/assets/esri/core/workers/chunks/e1b2076d0040fcb7d864.js +1 -0
  19. package/assets/esri/core/workers/chunks/{b3013a5a39d038b2d748.js → e4f84c79fe3e7b54b76c.js} +1 -1
  20. package/assets/esri/core/workers/chunks/e6836c84470fb6bd25bf.js +1 -0
  21. package/assets/esri/core/workers/chunks/f3f6035a17f7dcd19675.js +1 -0
  22. package/assets/esri/core/workers/chunks/{bff317b08e91414f6edc.js → f720967ba8c5486a26a2.js} +1 -1
  23. package/assets/esri/themes/base/widgets/_ValuePicker.scss +27 -10
  24. package/assets/esri/themes/dark/main.css +1 -1
  25. package/assets/esri/themes/light/main.css +1 -1
  26. package/assets/esri/themes/light/view.css +1 -1
  27. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ar.json +1 -1
  28. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_bg.json +1 -1
  29. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_bs.json +1 -1
  30. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ca.json +1 -1
  31. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_cs.json +1 -1
  32. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_da.json +1 -1
  33. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_de.json +1 -1
  34. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_el.json +1 -1
  35. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_es.json +1 -1
  36. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_et.json +1 -1
  37. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_fi.json +1 -1
  38. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_fr.json +1 -1
  39. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_he.json +1 -1
  40. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_hr.json +1 -1
  41. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_hu.json +1 -1
  42. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_id.json +1 -1
  43. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_it.json +1 -1
  44. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ja.json +1 -1
  45. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ko.json +1 -1
  46. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_lt.json +1 -1
  47. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_lv.json +1 -1
  48. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_nb.json +1 -1
  49. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_nl.json +1 -1
  50. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pl.json +1 -1
  51. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pt-BR.json +1 -1
  52. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pt-PT.json +1 -1
  53. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ro.json +1 -1
  54. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ru.json +1 -1
  55. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sk.json +1 -1
  56. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sl.json +1 -1
  57. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sr.json +1 -1
  58. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sv.json +1 -1
  59. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_th.json +1 -1
  60. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_tr.json +1 -1
  61. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_uk.json +1 -1
  62. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_vi.json +1 -1
  63. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-CN.json +1 -1
  64. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-HK.json +1 -1
  65. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-TW.json +1 -1
  66. package/chunks/DefaultMaterial.glsl.js +4 -4
  67. package/chunks/HUDMaterial.glsl.js +22 -22
  68. package/chunks/HeatmapDensity.glsl.js +5 -5
  69. package/chunks/LineMarker.glsl.js +35 -35
  70. package/chunks/RibbonLine.glsl.js +47 -47
  71. package/chunks/ShadowCastVisualize.glsl.js +2 -2
  72. package/core/Queue.js +1 -1
  73. package/interfaces.d.ts +290 -6
  74. package/intl/date.js +1 -1
  75. package/layers/ImageryTileLayer.js +1 -1
  76. package/layers/WMSLayer.js +1 -1
  77. package/layers/graphics/data/QueryEngine.js +1 -1
  78. package/layers/graphics/data/attributeSupport.js +1 -1
  79. package/layers/mixins/ArcGISImageService.js +1 -1
  80. package/layers/support/rasterFunctions/rasterFunctionHelper.js +1 -1
  81. package/package.json +1 -1
  82. package/popup/FieldInfo.js +1 -1
  83. package/popup/support/FieldInfoFormat.js +1 -1
  84. package/portal/schemas/definitions.js +1 -1
  85. package/smartMapping/raster/support/adapters/ImageryLayerAdapter.js +1 -1
  86. package/smartMapping/raster/support/adapters/ImageryTileLayerAdapter.js +1 -1
  87. package/support/revision.js +1 -1
  88. package/views/2d/layers/MediaLayerView2D.js +1 -1
  89. package/views/2d/layers/TileLayerView2D.js +1 -1
  90. package/views/2d/layers/support/cimSymbolUtils.js +1 -1
  91. package/views/3d/support/DisplayQualityProfile.js +1 -1
  92. package/views/3d/support/QualitySettings.js +1 -1
  93. package/views/3d/support/pointsOfInterest/PointsOfInterest.js +1 -1
  94. package/views/3d/terrain/Overlay.js +1 -1
  95. package/views/3d/terrain/OverlayManager.js +1 -1
  96. package/views/3d/terrain/OverlayRenderer.js +1 -1
  97. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +13 -13
  98. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +18 -18
  99. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +8 -8
  100. package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
  101. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  102. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  103. package/views/3d/webgl-engine/lib/RenderTargetHelper.js +1 -1
  104. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  105. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  106. package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
  107. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  108. package/views/3d/webgl-engine/lib/lodRendering/LodComponentData.js +1 -1
  109. package/views/3d/webgl-engine/materials/DefaultBufferWriter.js +1 -1
  110. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  111. package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
  112. package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
  113. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  114. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  115. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  116. package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
  117. package/views/3d/webgl-engine/materials/lineStippleUtils.js +1 -1
  118. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  119. package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
  120. package/views/3d/webgl-engine/shaders/HUDMaterialTechniqueConfiguration.js +1 -1
  121. package/views/3d/webgl-engine/shaders/HeatmapDensity.glsl.js +1 -1
  122. package/views/3d/webgl-engine/shaders/LineCalloutTechniqueConfiguration.js +1 -1
  123. package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
  124. package/views/PopupView.js +1 -1
  125. package/views/webgl/ValidatedTextureDescriptor.js +1 -1
  126. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  127. package/widgets/FeatureTable.js +1 -1
  128. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  129. package/widgets/ValuePicker/ValuePickerBaseComponent.js +1 -1
  130. package/widgets/ValuePicker/ValuePickerCollection.js +1 -1
  131. package/widgets/ValuePicker/ValuePickerCombobox.js +1 -1
  132. package/widgets/ValuePicker/ValuePickerLabel.js +1 -1
  133. package/widgets/ValuePicker/ValuePickerSlider.js +1 -1
  134. package/widgets/ValuePicker/ValuePickerViewModel.js +1 -1
  135. package/widgets/ValuePicker.js +1 -1
  136. package/assets/esri/core/workers/chunks/009026614cae60e9505c.js +0 -1
  137. package/assets/esri/core/workers/chunks/415c326d268b1a8fd03f.js +0 -1
  138. package/assets/esri/core/workers/chunks/504e929b686570ee858d.js +0 -1
  139. package/assets/esri/core/workers/chunks/5c811527898eb1c04e67.js +0 -1
  140. package/assets/esri/core/workers/chunks/6164a9c654c38f9cb64e.js +0 -1
  141. package/assets/esri/core/workers/chunks/6dd99db0adce09ac9794.js +0 -1
  142. package/assets/esri/core/workers/chunks/7cec069db0598431829e.js +0 -1
  143. package/assets/esri/core/workers/chunks/8bb3b10a777ae19f57f9.js +0 -1
  144. package/assets/esri/core/workers/chunks/91971a76a4ae0474a878.js +0 -1
  145. package/assets/esri/core/workers/chunks/9ed9e2ad50816a4f937a.js +0 -1
  146. package/assets/esri/core/workers/chunks/b81bb096ccfcea182cc1.js +0 -1
  147. package/assets/esri/core/workers/chunks/d05d9ddf244bb3dcbcaa.js +0 -1
  148. package/assets/esri/core/workers/chunks/d3a6504fbaf555707c58.js +0 -1
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import{estimateStatisticsFromHistograms as r}from"../../../../layers/support/rasterFunctions/stretchUtils.js";import a from"../../../../rest/support/ImageHistogramParameters.js";import i from"./RasterLayerAdapter.js";import o from"../../../../geometry/Point.js";let n=class extends i{constructor(){super(...arguments),this._cacheSize=20,this._statsCache=new Map}generateRasterInfo(t){const s=t?.rasterFunction;return this.layer.generateRasterInfo(s,{signal:t?.signal})}async estimateStatisticsHistograms(t){const s=t?.rasterFunction?.functionName??"default";if(this._statsCache.has(s))return this._statsCache.get(s);let{width:e,height:i,pixelSize:n}=this.layer.rasterInfo,c=1;for(;e>2e3||i>2e3;)e/=2,i/=2,c*=2;const p=t?.rasterFunction??this.layer.rasterFunction,{fullExtent:l,mosaicRule:h}=this.layer;n=new o(n.x*c,n.y*c,l.spatialReference);const m=new a({geometry:l,pixelSize:n,renderingRule:p,mosaicRule:h});let u;if(this.layer.capabilities.operations.supportsComputeStatisticsHistograms)u=await this.layer.computeStatisticsHistograms(m,t);else{const{histograms:s}=await this.layer.computeHistograms(m,t);u={statistics:r(s),histograms:s}}if(this._statsCache.set(s,u),this._statsCache.size>this._cacheSize){const t=this._statsCache.keys().next().value;this._statsCache.delete(t)}return u}supportsMultidirectionalHillshade(){return this.layer.version>=10.81}load(t){return this.addResolvingPromise(this.layer.load(t).then((()=>{this.generateRasterInfo({rasterFunction:this.rasterFunction,signal:t?.signal}).then((t=>this.rasterInfo=t))}))),Promise.resolve(this)}};t([s()],n.prototype,"layer",void 0),n=t([e("esri.smartMapping.support.adapters.ImageryLayerAdapter")],n);const c=n;export{c as default};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import{estimateStatisticsFromHistograms as r}from"../../../../layers/support/rasterFunctions/stretchUtils.js";import a from"../../../../rest/support/ImageHistogramParameters.js";import i from"./RasterLayerAdapter.js";import o from"../../../../geometry/Point.js";let n=class extends i{constructor(){super(...arguments),this._cacheSize=20,this._statsCache=new Map}generateRasterInfo(t){const s=t?.rasterFunction;try{return this.layer.generateRasterInfo(s,{signal:t?.signal})}catch{return Promise.resolve(this.layer.serviceRasterInfo)}}async estimateStatisticsHistograms(t){const s=t?.rasterFunction?.functionName??"default";if(this._statsCache.has(s))return this._statsCache.get(s);let{width:e,height:i,pixelSize:n}=this.layer.rasterInfo,c=1;for(;e>2e3||i>2e3;)e/=2,i/=2,c*=2;const p=t?.rasterFunction??this.layer.rasterFunction,{fullExtent:l,mosaicRule:h}=this.layer;n=new o(n.x*c,n.y*c,l.spatialReference);const m=new a({geometry:l,pixelSize:n,renderingRule:p,mosaicRule:h});let u;if(this.layer.capabilities.operations.supportsComputeStatisticsHistograms)u=await this.layer.computeStatisticsHistograms(m,t);else{const{histograms:s}=await this.layer.computeHistograms(m,t);u={statistics:r(s),histograms:s}}if(this._statsCache.set(s,u),this._statsCache.size>this._cacheSize){const t=this._statsCache.keys().next().value;this._statsCache.delete(t)}return u}supportsMultidirectionalHillshade(){return this.layer.version>=10.81}load(t){return this.addResolvingPromise(this.layer.load(t).then((()=>{this.generateRasterInfo({rasterFunction:this.rasterFunction,signal:t?.signal}).then((t=>this.rasterInfo=t))}))),Promise.resolve(this)}};t([s()],n.prototype,"layer",void 0),n=t([e("esri.smartMapping.support.adapters.ImageryLayerAdapter")],n);const c=n;export{c as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Error.js";import{property as e}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import a from"../../../../geometry/Extent.js";import{estimateStatisticsHistograms as o}from"../../../../layers/support/rasterFunctions/stretchUtils.js";import i from"./RasterLayerAdapter.js";let n=class extends i{async generateRasterInfo(t){const{layer:r}=this;if("imagery-tile"===r.type){return await r.generateRasterInfo(r.rasterFunction,{signal:t?.signal})??r.rasterInfo}return this.rasterInfo}async estimateStatisticsHistograms(t){if(null!==this._statsCache)return this._statsCache;const{raster:e}=this.layer,{extent:s,width:a,height:i}=this._getSamplePixelBlockDescriptor(e.rasterInfo),{pixelBlock:n}=await e.fetchPixels(s,a,i,t);if(null==n)throw new r("raster-layer-adapter","Unable to estimate histograms");return this._statsCache=o(n),this._statsCache}supportsMultidirectionalHillshade(){return!0}load(t){return this.addResolvingPromise(this.layer.load(t).then((()=>this.rasterInfo=this.layer.raster.rasterInfo))),Promise.resolve(this)}_getSamplePixelBlockDescriptor(t,r=1e3){const{pyramidScalingFactor:e,maximumPyramidLevel:s}=t.storageInfo;let{extent:o,width:i,height:n,pixelSize:l}=t,m=Math.ceil(Math.log(Math.max(i,n)/r)/Math.log(e))-1,h=0,c=0;if(m<=s){const t=e**m;i=Math.floor(i/t),n=Math.floor(n/t)}else m=0,i=Math.min(i,r),n=Math.min(n,r),h=Math.max(Math.floor(i/2-500),0),c=Math.max(Math.floor(n/2-500),0),o=new a({xmin:o.xmin+h*l.x,xmax:Math.min(o.xmax,o.xmin+h*l.x*r),ymin:o.ymin+c*l.y,ymax:Math.min(o.ymax,o.ymin+c*l.y*r)});return{extent:o,width:i,height:n,origin:{x:h,y:c}}}};t([e()],n.prototype,"layer",void 0),n=t([s("esri.smartMapping.support.adapters.ImageryTileLayerAdapter")],n);const l=n;export{l as default};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Error.js";import{property as e}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import a from"../../../../geometry/Extent.js";import{estimateStatisticsHistograms as o}from"../../../../layers/support/rasterFunctions/stretchUtils.js";import i from"./RasterLayerAdapter.js";let n=class extends i{async generateRasterInfo(t){const{layer:r}=this,e=t?.rasterFunction;if("imagery-tile"===r.type&&e)try{return r.generateRasterInfo(e,{signal:t?.signal})}catch{return r.rasterInfo}return this.rasterInfo}async estimateStatisticsHistograms(t){if(null!==this._statsCache)return this._statsCache;const{raster:e}=this.layer,{extent:s,width:a,height:i}=this._getSamplePixelBlockDescriptor(e.rasterInfo),{pixelBlock:n}=await e.fetchPixels(s,a,i,t);if(null==n)throw new r("raster-layer-adapter","Unable to estimate histograms");return this._statsCache=o(n),this._statsCache}supportsMultidirectionalHillshade(){return!0}load(t){return this.addResolvingPromise(this.layer.load(t).then((()=>this.rasterInfo=this.layer.raster.rasterInfo))),Promise.resolve(this)}_getSamplePixelBlockDescriptor(t,r=1e3){const{pyramidScalingFactor:e,maximumPyramidLevel:s}=t.storageInfo;let{extent:o,width:i,height:n,pixelSize:l}=t,m=Math.ceil(Math.log(Math.max(i,n)/r)/Math.log(e))-1,h=0,c=0;if(m<=s){const t=e**m;i=Math.floor(i/t),n=Math.floor(n/t)}else m=0,i=Math.min(i,r),n=Math.min(n,r),h=Math.max(Math.floor(i/2-500),0),c=Math.max(Math.floor(n/2-500),0),o=new a({xmin:o.xmin+h*l.x,xmax:Math.min(o.xmax,o.xmin+h*l.x*r),ymin:o.ymin+c*l.y,ymax:Math.min(o.ymax,o.ymin+c*l.y*r)});return{extent:o,width:i,height:n,origin:{x:h,y:c}}}};t([e()],n.prototype,"layer",void 0),n=t([s("esri.smartMapping.support.adapters.ImageryTileLayerAdapter")],n);const l=n;export{l as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- const a="20230516",d="48b057d01a26a2a3f3b53c060b0d467d129add4a";export{a as buildDate,d as commitHash};
5
+ const a="20230517",f="155f3807c3f957870ad5adf7a59abf885de775a2";export{a as buildDate,f as commitHash};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import"../../../geometry.js";import"../../../Graphic.js";import"../../../renderers/ClassBreaksRenderer.js";import"../../../renderers/DictionaryRenderer.js";import"../../../renderers/DotDensityRenderer.js";import"../../../renderers/HeatmapRenderer.js";import"../../../renderers/PieChartRenderer.js";import"../../../renderers/Renderer.js";import"../../../renderers/SimpleRenderer.js";import"../../../renderers/UniqueValueRenderer.js";import"../../../renderers/support/jsonUtils.js";import"../../../symbols.js";import t from"../../../core/Collection.js";import"../../../core/has.js";import r from"../../../core/Logger.js";import{getOrCreateMapValue as i}from"../../../core/MapUtils.js";import{isAbortError as s}from"../../../core/promiseUtils.js";import{on as n}from"../../../core/reactiveUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{create as a}from"../../../geometry/support/aaBoundingRect.js";import{ringsContainsCoords as m}from"../../../geometry/support/contains.js";import{extentIntersectsPolygon as p}from"../../../geometry/support/intersectsBase.js";import{MediaElementView as c}from"../../../layers/support/MediaElementView.js";import"../../../core/Error.js";import"../../../core/scheduling.js";import"../../../request.js";import"../../../chunks/index2.js";import"../../../core/urlUtils.js";import"../../../chunks/index3.js";import"../../../layers/effects/EffectView.js";import"../engine/DisplayObject.js";import"../engine/webgl/effects/highlight/HighlightGradient.js";import"../engine/webgl/BufferPool.js";import"../engine/webgl/enums.js";import"../engine/webgl/brushes/BrushBitmap.js";import"../../../chunks/vec4f32.js";import"../engine/webgl/Utils.js";import"../engine/webgl/shaders/BackgroundPrograms.js";import"../../webgl/enums.js";import"../../webgl/checkWebGLError.js";import"../../webgl/contextUtils.js";import"../../../chunks/builtins.js";import"../engine/webgl/definitions.js";import"../../../core/RandomLCG.js";import"../engine/webgl/materialKey/MaterialKey.js";import"../engine/webgl/techniques/Technique.js";import"../engine/webgl/techniques/dotDensity/TechniqueDotDensity.js";import"../engine/webgl/techniques/heatmap/TechniqueHeatmap.js";import"../engine/webgl/techniques/pieChart/TechniquePieChart.js";import"../../webgl/BufferObject.js";import"../../webgl/FramebufferObject.js";import"../../webgl/GLObjectType.js";import"../../webgl/Texture.js";import"../../webgl/VertexArrayObject.js";import"../engine/webgl/brushes/WGLBrushHeatmap.js";import"../engine/webgl/DefaultVertexAttributeLayouts.js";import"../engine/webgl/shaders/TileInfoPrograms.js";import"../engine/webgl/brushes/WGLGeometryBrushMarker.js";import"../../../core/mathUtils.js";import"../engine/webgl/number.js";import"../engine/vectorTiles/style/StyleDefinition.js";import"../../../chunks/vec2f32.js";import"../engine/vectorTiles/enums.js";import"../engine/vectorTiles/shaders/sources/resolver.js";import"../engine/webgl/shaders/BitBlitPrograms.js";import"../engine/webgl/shaders/sources/resolver.js";import"../engine/webgl/TextureManager.js";import"../engine/webgl/shaders/StencilPrograms.js";import"../engine/webgl/effects/BlendEffect.js";import"../engine/webgl/shaders/HighlightPrograms.js";import"../engine/webgl/Profiler.js";import"../../webgl/renderState.js";import"../../3d/webgl-engine/core/shaderModules/interfaces.js";import"../../../core/floatRGBA.js";import"../../3d/webgl-engine/lib/OrderIndependentTransparency.js";import"../LabelManager.js";import"./graphics/GraphicsView2D.js";import"../engine/webgl/AttributeStoreView.js";import"../../../chunks/earcut.js";import"../../../layers/graphics/featureConversionUtils.js";import"../../../core/unitUtils.js";import"../../../renderers/support/lengthUtils.js";import"../../../chunks/vec3f32.js";import"../../../geometry/support/normalizeUtils.js";import"../navigation/MapViewNavigation.js";import"../../../core/asyncUtils.js";import"../engine/webgl/shaders/MagnifierPrograms.js";import"../tiling/PagedTileQueue.js";import"../tiling/TileInfoView.js";import"../tiling/TileKey.js";import h from"../tiling/TileQueue.js";import u from"../tiling/TileStrategy.js";import d from"../engine/webgl/Overlay.js";import g from"../engine/webgl/OverlayContainer.js";import{LayerView2DMixin as f}from"./LayerView2D.js";import j from"../../layers/LayerView.js";import y from"../../../geometry/Extent.js";let w=class extends(f(j)){constructor(){super(...arguments),this._overlayContainer=null,this._fetchQueue=null,this._tileStrategy=null,this._elementReferences=new Map,this._debugGraphicsView=null,this.layer=null,this.elements=new t}attach(){this.addAttachHandles([n((()=>this.layer.effectiveSource),"refresh",(()=>{for(const e of this._tileStrategy.tiles)this._updateTile(e);this.requestUpdate()})),n((()=>this.layer.effectiveSource),"change",(({element:e})=>this._elementUpdateHandler(e)))]),this._overlayContainer=new g,this.container.addChild(this._overlayContainer),this._fetchQueue=new h({tileInfoView:this.view.featuresTilingScheme,concurrency:10,process:(e,t)=>this._queryElements(e,t)}),this._tileStrategy=new u({cachePolicy:"purge",resampling:!0,acquireTile:e=>this._acquireTile(e),releaseTile:e=>this._releaseTile(e),tileInfoView:this.view.featuresTilingScheme}),this.requestUpdate()}detach(){this.elements.removeAll(),this._tileStrategy.destroy(),this._fetchQueue.destroy(),this._overlayContainer.removeAllChildren(),this.container.removeAllChildren(),this._elementReferences.clear(),this._debugGraphicsView?.destroy()}supportsSpatialReference(e){return!0}moveStart(){this.requestUpdate()}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}update(e){this._tileStrategy.update(e),this._debugGraphicsView?.update(e)}async hitTest(e,t){const r=[],i=e.normalize(),s=[i.x,i.y];for(const{projectedElement:{normalizedCoords:n,element:o}}of this._elementReferences.values())null!=n&&m(n.rings,s)&&r.push({type:"media",element:o,layer:this.layer,mapPoint:e});return r.reverse()}canResume(){return null!=this.layer.source&&super.canResume()}async doRefresh(){this._fetchQueue.reset(),this._tileStrategy.tiles.forEach((e=>this._updateTile(e)))}_acquireTile(e){const t=new T(e.clone());return this._updateTile(t),t}_updateTile(e){this.updatingHandles.addPromise(this._fetchQueue.push(e.key).then((t=>{const[r,i]=e.setElements(t);this._referenceElements(e,r),this._dereferenceElements(e,i),this.requestUpdate()}),(e=>{s(e)||r.getLogger(this).error(e)})))}_releaseTile(e){this._fetchQueue.abort(e.key.id),e.elements&&this._dereferenceElements(e,e.elements),this.requestUpdate()}async _queryElements(e,t){const r=this.layer.effectiveSource;if(null==r)return[];this.view.featuresTilingScheme.getTileBounds(b,e,!0);const i=new y({xmin:b[0],ymin:b[1],xmax:b[2],ymax:b[3],spatialReference:this.view.spatialReference});return r.queryElements(i,t)}_referenceElements(e,t){if(null!=this.layer.source)for(const r of t)this._referenceElement(e,r)}_referenceElement(e,t){i(this._elementReferences,t.uid,(()=>{const e=new c({element:t,spatialReference:this.view.spatialReference}),r=new d(e);this._overlayContainer.addChild(r),this.elements.add(t);let i=null;return{tiles:new Set,projectedElement:e,overlay:r,debugGraphic:i}})).tiles.add(e)}_dereferenceElements(e,t){for(const r of t)this._dereferenceElement(e,r)}_dereferenceElement(e,t){const r=this._elementReferences.get(t.uid);r.tiles.delete(e),r.tiles.size||(this._overlayContainer.removeChild(r.overlay),r.overlay.destroy(),r.projectedElement.destroy(),this._elementReferences.delete(t.uid),this.elements.remove(t),this._debugGraphicsView?.graphics.remove(r.debugGraphic))}_elementUpdateHandler(e){let t=this._elementReferences.get(e.uid);if(t){const r=t.projectedElement.normalizedCoords;if(null==r)return this._overlayContainer.removeChild(t.overlay),t.overlay.destroy(),t.projectedElement.destroy(),this._elementReferences.delete(e.uid),this.elements.remove(e),void this._debugGraphicsView?.graphics.remove(t.debugGraphic);const i=[],s=[];for(const e of this._tileStrategy.tiles){const n=v(this.view.featuresTilingScheme,e,r);t.tiles.has(e)?n||s.push(e):n&&i.push(e)}for(const t of i)this._referenceElement(t,e);for(const t of s)this._dereferenceElement(t,e);return t=this._elementReferences.get(e.uid),void(t?.debugGraphic&&(t.debugGraphic.geometry=t.projectedElement.normalizedCoords,this._debugGraphicsView.graphicUpdateHandler({graphic:t.debugGraphic,property:"geometry"})))}const r=new c({element:e,spatialReference:this.view.spatialReference}).normalizedCoords;if(null!=r)for(const i of this._tileStrategy.tiles){v(this.view.featuresTilingScheme,i,r)&&this._referenceElement(i,e)}}};e([o()],w.prototype,"_fetchQueue",void 0),e([o()],w.prototype,"layer",void 0),e([o({readOnly:!0})],w.prototype,"elements",void 0),w=e([l("esri.views.2d.layers.MediaLayerView2D")],w);const b=a(),_={xmin:0,ymin:0,xmax:0,ymax:0};function v(e,t,r){return e.getTileBounds(b,t.key,!0),_.xmin=b[0],_.ymin=b[1],_.xmax=b[2],_.ymax=b[3],p(_,r)}class T{constructor(e){this.key=e,this.elements=null,this.isReady=!1,this.visible=!0}setElements(e){const t=[],r=new Set(this.elements);this.elements=e;for(const i of e)r.has(i)?r.delete(i):t.push(i);return this.isReady=!0,[t,Array.from(r)]}destroy(){}}const R=w;export{R as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import"../../../geometry.js";import"../../../Graphic.js";import"../../../renderers/ClassBreaksRenderer.js";import"../../../renderers/DictionaryRenderer.js";import"../../../renderers/DotDensityRenderer.js";import"../../../renderers/HeatmapRenderer.js";import"../../../renderers/PieChartRenderer.js";import"../../../renderers/Renderer.js";import"../../../renderers/SimpleRenderer.js";import"../../../renderers/UniqueValueRenderer.js";import"../../../renderers/support/jsonUtils.js";import"../../../symbols.js";import t from"../../../core/Collection.js";import"../../../core/has.js";import r from"../../../core/Logger.js";import{getOrCreateMapValue as s}from"../../../core/MapUtils.js";import{isAbortError as i}from"../../../core/promiseUtils.js";import{on as n}from"../../../core/reactiveUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{create as a}from"../../../geometry/support/aaBoundingRect.js";import{ringsContainsCoords as m}from"../../../geometry/support/contains.js";import{extentIntersectsPolygon as p}from"../../../geometry/support/intersectsBase.js";import{MediaElementView as c}from"../../../layers/support/MediaElementView.js";import"../../../core/Error.js";import"../../../core/scheduling.js";import"../../../request.js";import"../../../chunks/index2.js";import"../../../core/urlUtils.js";import"../../../chunks/index3.js";import"../../../layers/effects/EffectView.js";import"../engine/DisplayObject.js";import"../engine/webgl/effects/highlight/HighlightGradient.js";import"../engine/webgl/BufferPool.js";import"../engine/webgl/enums.js";import"../engine/webgl/brushes/BrushBitmap.js";import"../../../chunks/vec4f32.js";import"../engine/webgl/Utils.js";import"../engine/webgl/shaders/BackgroundPrograms.js";import"../../webgl/enums.js";import"../../webgl/checkWebGLError.js";import"../../webgl/contextUtils.js";import"../../../chunks/builtins.js";import"../engine/webgl/definitions.js";import"../../../core/RandomLCG.js";import"../engine/webgl/materialKey/MaterialKey.js";import"../engine/webgl/techniques/Technique.js";import"../engine/webgl/techniques/dotDensity/TechniqueDotDensity.js";import"../engine/webgl/techniques/heatmap/TechniqueHeatmap.js";import"../engine/webgl/techniques/pieChart/TechniquePieChart.js";import"../../webgl/BufferObject.js";import"../../webgl/FramebufferObject.js";import"../../webgl/GLObjectType.js";import"../../webgl/Texture.js";import"../../webgl/VertexArrayObject.js";import"../engine/webgl/brushes/WGLBrushHeatmap.js";import"../engine/webgl/DefaultVertexAttributeLayouts.js";import"../engine/webgl/shaders/TileInfoPrograms.js";import"../engine/webgl/brushes/WGLGeometryBrushMarker.js";import"../../../core/mathUtils.js";import"../engine/webgl/number.js";import"../engine/vectorTiles/style/StyleDefinition.js";import"../../../chunks/vec2f32.js";import"../engine/vectorTiles/enums.js";import"../engine/vectorTiles/shaders/sources/resolver.js";import"../engine/webgl/shaders/BitBlitPrograms.js";import"../engine/webgl/shaders/sources/resolver.js";import"../engine/webgl/TextureManager.js";import"../engine/webgl/shaders/StencilPrograms.js";import"../engine/webgl/effects/BlendEffect.js";import"../engine/webgl/shaders/HighlightPrograms.js";import"../engine/webgl/Profiler.js";import"../../webgl/renderState.js";import"../../3d/webgl-engine/core/shaderModules/interfaces.js";import"../../../core/floatRGBA.js";import"../../3d/webgl-engine/lib/OrderIndependentTransparency.js";import"../LabelManager.js";import"./graphics/GraphicsView2D.js";import"../../../core/accessorSupport/tracking/Flags.js";import"../engine/webgl/AttributeStoreView.js";import"../../../chunks/earcut.js";import"../../../layers/graphics/featureConversionUtils.js";import"../../../core/unitUtils.js";import"../../../renderers/support/lengthUtils.js";import"../../../chunks/vec3f32.js";import"../../../geometry/support/normalizeUtils.js";import"../navigation/MapViewNavigation.js";import"../../../core/asyncUtils.js";import"../engine/webgl/shaders/MagnifierPrograms.js";import"../tiling/PagedTileQueue.js";import"../tiling/TileInfoView.js";import"../tiling/TileKey.js";import h from"../tiling/TileQueue.js";import u from"../tiling/TileStrategy.js";import d from"../engine/webgl/Overlay.js";import g from"../engine/webgl/OverlayContainer.js";import{LayerView2DMixin as f}from"./LayerView2D.js";import j from"../../layers/LayerView.js";import y from"../../../geometry/Extent.js";let w=class extends(f(j)){constructor(){super(...arguments),this._overlayContainer=null,this._fetchQueue=null,this._tileStrategy=null,this._elementReferences=new Map,this._debugGraphicsView=null,this.layer=null,this.elements=new t}attach(){this.addAttachHandles([n((()=>this.layer.effectiveSource),"refresh",(()=>{for(const e of this._tileStrategy.tiles)this._updateTile(e);this.requestUpdate()})),n((()=>this.layer.effectiveSource),"change",(({element:e})=>this._elementUpdateHandler(e)))]),this._overlayContainer=new g,this.container.addChild(this._overlayContainer),this._fetchQueue=new h({tileInfoView:this.view.featuresTilingScheme,concurrency:10,process:(e,t)=>this._queryElements(e,t)}),this._tileStrategy=new u({cachePolicy:"purge",resampling:!0,acquireTile:e=>this._acquireTile(e),releaseTile:e=>this._releaseTile(e),tileInfoView:this.view.featuresTilingScheme}),this.requestUpdate()}detach(){this.elements.removeAll(),this._tileStrategy.destroy(),this._fetchQueue.destroy(),this._overlayContainer.removeAllChildren(),this.container.removeAllChildren(),this._elementReferences.clear(),this._debugGraphicsView?.destroy()}supportsSpatialReference(e){return!0}moveStart(){this.requestUpdate()}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}update(e){this._tileStrategy.update(e),this._debugGraphicsView?.update(e)}async hitTest(e,t){const r=[],s=e.normalize(),i=[s.x,s.y];for(const{projectedElement:{normalizedCoords:n,element:o}}of this._elementReferences.values())null!=n&&m(n.rings,i)&&r.push({type:"media",element:o,layer:this.layer,mapPoint:e});return r.reverse()}canResume(){return null!=this.layer.source&&super.canResume()}async doRefresh(){this._fetchQueue.reset(),this._tileStrategy.tiles.forEach((e=>this._updateTile(e)))}_acquireTile(e){const t=new T(e.clone());return this._updateTile(t),t}_updateTile(e){this.updatingHandles.addPromise(this._fetchQueue.push(e.key).then((t=>{const[r,s]=e.setElements(t);this._referenceElements(e,r),this._dereferenceElements(e,s),this.requestUpdate()}),(e=>{i(e)||r.getLogger(this).error(e)})))}_releaseTile(e){this._fetchQueue.abort(e.key.id),e.elements&&this._dereferenceElements(e,e.elements),this.requestUpdate()}async _queryElements(e,t){const r=this.layer.effectiveSource;if(null==r)return[];this.view.featuresTilingScheme.getTileBounds(b,e,!0);const s=new y({xmin:b[0],ymin:b[1],xmax:b[2],ymax:b[3],spatialReference:this.view.spatialReference});return r.queryElements(s,t)}_referenceElements(e,t){if(null!=this.layer.source)for(const r of t)this._referenceElement(e,r)}_referenceElement(e,t){s(this._elementReferences,t.uid,(()=>{const e=new c({element:t,spatialReference:this.view.spatialReference}),r=new d(e);this._overlayContainer.addChild(r),this.elements.add(t);let s=null;return{tiles:new Set,projectedElement:e,overlay:r,debugGraphic:s}})).tiles.add(e)}_dereferenceElements(e,t){for(const r of t)this._dereferenceElement(e,r)}_dereferenceElement(e,t){const r=this._elementReferences.get(t.uid);r.tiles.delete(e),r.tiles.size||(this._overlayContainer.removeChild(r.overlay),r.overlay.destroy(),r.projectedElement.destroy(),this._elementReferences.delete(t.uid),this.elements.remove(t),this._debugGraphicsView?.graphics.remove(r.debugGraphic))}_elementUpdateHandler(e){let t=this._elementReferences.get(e.uid);if(t){const r=t.projectedElement.normalizedCoords;if(null==r)return this._overlayContainer.removeChild(t.overlay),t.overlay.destroy(),t.projectedElement.destroy(),this._elementReferences.delete(e.uid),this.elements.remove(e),void this._debugGraphicsView?.graphics.remove(t.debugGraphic);const s=[],i=[];for(const e of this._tileStrategy.tiles){const n=v(this.view.featuresTilingScheme,e,r);t.tiles.has(e)?n||i.push(e):n&&s.push(e)}for(const t of s)this._referenceElement(t,e);for(const t of i)this._dereferenceElement(t,e);return t=this._elementReferences.get(e.uid),void(t?.debugGraphic&&(t.debugGraphic.geometry=t.projectedElement.normalizedCoords,this._debugGraphicsView.graphicUpdateHandler({graphic:t.debugGraphic,property:"geometry"})))}const r=new c({element:e,spatialReference:this.view.spatialReference}).normalizedCoords;if(null!=r)for(const s of this._tileStrategy.tiles){v(this.view.featuresTilingScheme,s,r)&&this._referenceElement(s,e)}}};e([o()],w.prototype,"_fetchQueue",void 0),e([o()],w.prototype,"layer",void 0),e([o({readOnly:!0})],w.prototype,"elements",void 0),w=e([l("esri.views.2d.layers.MediaLayerView2D")],w);const b=a(),_={xmin:0,ymin:0,xmax:0,ymax:0};function v(e,t,r){return e.getTileBounds(b,t.key,!0),_.xmin=b[0],_.ymin=b[1],_.xmax=b[2],_.ymax=b[3],p(_,r)}class T{constructor(e){this.key=e,this.elements=null,this.isReady=!1,this.visible=!0}setElements(e){const t=[],r=new Set(this.elements);this.elements=e;for(const s of e)r.has(s)?r.delete(s):t.push(s);return this.isReady=!0,[t,Array.from(r)]}destroy(){}}const R=w;export{R as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import i from"../../../core/Logger.js";import{isAbortError as t}from"../../../core/promiseUtils.js";import{watch as r}from"../../../core/reactiveUtils.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import{equals as l}from"../../../geometry/support/spatialReferenceUtils.js";import{GraphicsCollection as h}from"../../../support/GraphicsCollection.js";import"../../../core/Error.js";import"../../../core/scheduling.js";import"../../../request.js";import"../../../chunks/index2.js";import"../../../core/urlUtils.js";import"../../../chunks/index3.js";import"../../../layers/effects/EffectView.js";import"../engine/DisplayObject.js";import"../engine/webgl/effects/highlight/HighlightGradient.js";import"../engine/webgl/BufferPool.js";import"../engine/webgl/enums.js";import"../engine/webgl/brushes/BrushBitmap.js";import"../../../chunks/vec4f32.js";import"../engine/webgl/Utils.js";import"../engine/webgl/shaders/BackgroundPrograms.js";import"../../webgl/enums.js";import"../../webgl/checkWebGLError.js";import"../../webgl/contextUtils.js";import"../../../chunks/builtins.js";import"../engine/webgl/definitions.js";import"../../../core/RandomLCG.js";import"../engine/webgl/materialKey/MaterialKey.js";import"../engine/webgl/techniques/Technique.js";import"../engine/webgl/techniques/dotDensity/TechniqueDotDensity.js";import"../engine/webgl/techniques/heatmap/TechniqueHeatmap.js";import"../engine/webgl/techniques/pieChart/TechniquePieChart.js";import"../../webgl/BufferObject.js";import"../../webgl/FramebufferObject.js";import"../../webgl/GLObjectType.js";import"../../webgl/Texture.js";import"../../webgl/VertexArrayObject.js";import"../engine/webgl/brushes/WGLBrushHeatmap.js";import"../engine/webgl/DefaultVertexAttributeLayouts.js";import"../engine/webgl/shaders/TileInfoPrograms.js";import"../engine/webgl/brushes/WGLGeometryBrushMarker.js";import"../../../core/mathUtils.js";import"../engine/webgl/number.js";import"../engine/vectorTiles/style/StyleDefinition.js";import"../../../chunks/vec2f32.js";import"../engine/vectorTiles/enums.js";import"../engine/vectorTiles/shaders/sources/resolver.js";import"../engine/webgl/shaders/BitBlitPrograms.js";import"../engine/webgl/shaders/sources/resolver.js";import"../engine/webgl/TextureManager.js";import"../engine/webgl/shaders/StencilPrograms.js";import"../engine/webgl/effects/BlendEffect.js";import"../engine/webgl/shaders/HighlightPrograms.js";import"../engine/webgl/Profiler.js";import"../../webgl/renderState.js";import"../../3d/webgl-engine/core/shaderModules/interfaces.js";import"../../../core/floatRGBA.js";import"../../3d/webgl-engine/lib/OrderIndependentTransparency.js";import"../LabelManager.js";import a from"./graphics/GraphicsView2D.js";import"../engine/webgl/AttributeStoreView.js";import"../../../chunks/earcut.js";import"../../../layers/graphics/featureConversionUtils.js";import"../../../core/unitUtils.js";import"../../../renderers/support/lengthUtils.js";import"../../../chunks/vec3f32.js";import"../../../geometry/support/normalizeUtils.js";import"../navigation/MapViewNavigation.js";import"../../../core/asyncUtils.js";import"../engine/webgl/shaders/MagnifierPrograms.js";import{BitmapTileLayerView2D as n}from"./BitmapTileLayerView2D.js";import{LayerView2DMixin as p}from"./LayerView2D.js";import g from"./graphics/HighlightGraphicContainer.js";import{createBlankImage as c,resampleImage as m}from"./support/imageUtils.js";import u from"../tiling/TileInfoView.js";import f from"../tiling/TileKey.js";import w from"../tiling/TileQueue.js";import j from"../tiling/TileStrategy.js";import d from"../../layers/LayerView.js";import y from"../../layers/RefreshableLayerView.js";import{isMapServiceLayerView as b,MapServiceLayerViewHelper as _}from"../../layers/support/MapServiceLayerViewHelper.js";import{createQueryGeometry as T}from"../../support/drapedUtils.js";const V=[0,0];let v=class extends(y(n(p(d)))){constructor(){super(...arguments),this._fetchQueue=null,this._highlightGraphics=new h,this._highlightView=null,this._popupHighlightHelper=null,this._tileStrategy=null,this.layer=null}get resampling(){return!("resampling"in this.layer)||!1!==this.layer.resampling}get tilemapCache(){return"tilemapCache"in this.layer?this.layer.tilemapCache:null}update(e){this._fetchQueue.pause(),this._fetchQueue.state=e.state,this._tileStrategy.update(e),this._fetchQueue.resume(),this._highlightView?.processUpdate(e)}attach(){const e="tileServers"in this.layer?this.layer.tileServers:null,i=this.tilemapCache;if(this._tileInfoView=new u(this.layer.tileInfo,this.layer.fullExtent,i?.effectiveMinLOD,i?.effectiveMaxLOD),this._fetchQueue=new w({tileInfoView:this._tileInfoView,concurrency:e&&10*e.length||10,process:(e,i)=>this.fetchTile(e,i)}),this._tileStrategy=new j({cachePolicy:"keep",resampling:this.resampling,acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),tileInfoView:this._tileInfoView}),b(this,this.layer)){const e=this._highlightView=new a({view:this.view,graphics:this._highlightGraphics,requestUpdateCallback:()=>this.requestUpdate(),container:new g(this.view.featuresTilingScheme),defaultPointSymbolEnabled:!1});this.container.addChild(this._highlightView.container),this._popupHighlightHelper=new _({createFetchPopupFeaturesQueryGeometry:(e,i)=>T(e,i,this.view),highlightGraphics:this._highlightGraphics,highlightGraphicUpdated:(i,t)=>{e.graphicUpdateHandler({graphic:i,property:t})},layerView:this,updatingHandles:this.updatingHandles})}this.requestUpdate(),this.addAttachHandles(r((()=>this.resampling),(()=>{this.doRefresh()}))),super.attach()}detach(){super.detach(),this._tileStrategy.destroy(),this._fetchQueue.clear(),this.container.removeAllChildren(),this._popupHighlightHelper?.destroy(),this._fetchQueue=this._tileStrategy=this._tileInfoView=this._popupHighlightHelper=null}async fetchPopupFeatures(e,i){return this._popupHighlightHelper?this._popupHighlightHelper.fetchPopupFeatures(e,i):[]}highlight(e){return this._popupHighlightHelper?this._popupHighlightHelper.highlight(e):{remove(){}}}moveStart(){this.requestUpdate()}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}supportsSpatialReference(e){return l(this.layer.tileInfo?.spatialReference,e)}async doRefresh(){!this.attached||this.updateRequested||this.suspended||(this._fetchQueue.reset(),this._tileStrategy.tiles.forEach((e=>this._enqueueTileFetch(e))))}isUpdating(){return this._fetchQueue?.updating??!1}acquireTile(e){const i=this._bitmapView.createTile(e),t=i.bitmap;return[t.x,t.y]=this._tileInfoView.getTileCoords(V,i.key),t.resolution=this._tileInfoView.getTileResolution(i.key),[t.width,t.height]=this._tileInfoView.tileInfo.size,this._enqueueTileFetch(i),this._bitmapView.addChild(i),this.requestUpdate(),i}releaseTile(e){this._fetchQueue.abort(e.key.id),this._bitmapView.removeChild(e),e.once("detach",(()=>e.destroy())),this.requestUpdate()}async fetchTile(e,i={}){const r=this.tilemapCache,{signal:s,resamplingLevel:o=0}=i;if(!r)try{return await this._fetchImage(e,s)}catch(a){if(!t(a)&&!this.resampling)return c(this._tileInfoView.tileInfo.size);if(o<3){const t=this._tileInfoView.getTileParentId(e.id);if(t){const r=new f(t),s=await this.fetchTile(r,{...i,resamplingLevel:o+1});return m(this._tileInfoView,s,r,e)}}throw a}const l=new f(0,0,0,0);let h;try{if(await r.fetchAvailabilityUpsample(e.level,e.row,e.col,l,{signal:s}),l.level!==e.level&&!this.resampling)return c(this._tileInfoView.tileInfo.size);h=await this._fetchImage(l,s)}catch(a){if(t(a))throw a;h=await this._fetchImage(e,s)}return this.resampling?m(this._tileInfoView,h,l,e):h}async _enqueueTileFetch(e){if(!this._fetchQueue.has(e.key.id)){try{const i=await this._fetchQueue.push(e.key);e.bitmap.source=i,e.bitmap.width=this._tileInfoView.tileInfo.size[0],e.bitmap.height=this._tileInfoView.tileInfo.size[1],e.once("attach",(()=>this.requestUpdate()))}catch(r){t(r)||i.getLogger(this).error(r)}this.requestUpdate()}}async _fetchImage(e,i){return this.layer.fetchImageBitmapTile(e.level,e.row,e.col,{signal:i})}};e([s()],v.prototype,"_fetchQueue",void 0),e([s()],v.prototype,"resampling",null),e([s()],v.prototype,"tilemapCache",null),v=e([o("esri.views.2d.layers.TileLayerView2D")],v);const I=v;export{I as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Logger.js";import{isAbortError as i}from"../../../core/promiseUtils.js";import{watch as r}from"../../../core/reactiveUtils.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import{equals as l}from"../../../geometry/support/spatialReferenceUtils.js";import{GraphicsCollection as h}from"../../../support/GraphicsCollection.js";import"../../../core/Error.js";import"../../../core/scheduling.js";import"../../../request.js";import"../../../chunks/index2.js";import"../../../core/urlUtils.js";import"../../../chunks/index3.js";import"../../../layers/effects/EffectView.js";import"../engine/DisplayObject.js";import"../engine/webgl/effects/highlight/HighlightGradient.js";import"../engine/webgl/BufferPool.js";import"../engine/webgl/enums.js";import"../engine/webgl/brushes/BrushBitmap.js";import"../../../chunks/vec4f32.js";import"../engine/webgl/Utils.js";import"../engine/webgl/shaders/BackgroundPrograms.js";import"../../webgl/enums.js";import"../../webgl/checkWebGLError.js";import"../../webgl/contextUtils.js";import"../../../chunks/builtins.js";import"../engine/webgl/definitions.js";import"../../../core/RandomLCG.js";import"../engine/webgl/materialKey/MaterialKey.js";import"../engine/webgl/techniques/Technique.js";import"../engine/webgl/techniques/dotDensity/TechniqueDotDensity.js";import"../engine/webgl/techniques/heatmap/TechniqueHeatmap.js";import"../engine/webgl/techniques/pieChart/TechniquePieChart.js";import"../../webgl/BufferObject.js";import"../../webgl/FramebufferObject.js";import"../../webgl/GLObjectType.js";import"../../webgl/Texture.js";import"../../webgl/VertexArrayObject.js";import"../engine/webgl/brushes/WGLBrushHeatmap.js";import"../engine/webgl/DefaultVertexAttributeLayouts.js";import"../engine/webgl/shaders/TileInfoPrograms.js";import"../engine/webgl/brushes/WGLGeometryBrushMarker.js";import"../../../core/mathUtils.js";import"../engine/webgl/number.js";import"../engine/vectorTiles/style/StyleDefinition.js";import"../../../chunks/vec2f32.js";import"../engine/vectorTiles/enums.js";import"../engine/vectorTiles/shaders/sources/resolver.js";import"../engine/webgl/shaders/BitBlitPrograms.js";import"../engine/webgl/shaders/sources/resolver.js";import"../engine/webgl/TextureManager.js";import"../engine/webgl/shaders/StencilPrograms.js";import"../engine/webgl/effects/BlendEffect.js";import"../engine/webgl/shaders/HighlightPrograms.js";import"../engine/webgl/Profiler.js";import"../../webgl/renderState.js";import"../../3d/webgl-engine/core/shaderModules/interfaces.js";import"../../../core/floatRGBA.js";import"../../3d/webgl-engine/lib/OrderIndependentTransparency.js";import"../LabelManager.js";import a from"./graphics/GraphicsView2D.js";import"../../../core/accessorSupport/tracking/Flags.js";import"../engine/webgl/AttributeStoreView.js";import"../../../chunks/earcut.js";import"../../../layers/graphics/featureConversionUtils.js";import"../../../core/unitUtils.js";import"../../../renderers/support/lengthUtils.js";import"../../../chunks/vec3f32.js";import"../../../geometry/support/normalizeUtils.js";import"../navigation/MapViewNavigation.js";import"../../../core/asyncUtils.js";import"../engine/webgl/shaders/MagnifierPrograms.js";import{BitmapTileLayerView2D as n}from"./BitmapTileLayerView2D.js";import{LayerView2DMixin as p}from"./LayerView2D.js";import g from"./graphics/HighlightGraphicContainer.js";import{createBlankImage as c,resampleImage as m}from"./support/imageUtils.js";import u from"../tiling/TileInfoView.js";import f from"../tiling/TileKey.js";import w from"../tiling/TileQueue.js";import j from"../tiling/TileStrategy.js";import d from"../../layers/LayerView.js";import y from"../../layers/RefreshableLayerView.js";import{isMapServiceLayerView as b,MapServiceLayerViewHelper as _}from"../../layers/support/MapServiceLayerViewHelper.js";import{createQueryGeometry as T}from"../../support/drapedUtils.js";const V=[0,0];let v=class extends(y(n(p(d)))){constructor(){super(...arguments),this._fetchQueue=null,this._highlightGraphics=new h,this._highlightView=null,this._popupHighlightHelper=null,this._tileStrategy=null,this.layer=null}get resampling(){return!("resampling"in this.layer)||!1!==this.layer.resampling}get tilemapCache(){return"tilemapCache"in this.layer?this.layer.tilemapCache:null}update(e){this._fetchQueue.pause(),this._fetchQueue.state=e.state,this._tileStrategy.update(e),this._fetchQueue.resume(),this._highlightView?.processUpdate(e)}attach(){const e="tileServers"in this.layer?this.layer.tileServers:null,t=this.tilemapCache;if(this._tileInfoView=new u(this.layer.tileInfo,this.layer.fullExtent,t?.effectiveMinLOD,t?.effectiveMaxLOD),this._fetchQueue=new w({tileInfoView:this._tileInfoView,concurrency:e&&10*e.length||10,process:(e,t)=>this.fetchTile(e,t)}),this._tileStrategy=new j({cachePolicy:"keep",resampling:this.resampling,acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),tileInfoView:this._tileInfoView}),b(this,this.layer)){const e=this._highlightView=new a({view:this.view,graphics:this._highlightGraphics,requestUpdateCallback:()=>this.requestUpdate(),container:new g(this.view.featuresTilingScheme),defaultPointSymbolEnabled:!1});this.container.addChild(this._highlightView.container),this._popupHighlightHelper=new _({createFetchPopupFeaturesQueryGeometry:(e,t)=>T(e,t,this.view),highlightGraphics:this._highlightGraphics,highlightGraphicUpdated:(t,i)=>{e.graphicUpdateHandler({graphic:t,property:i})},layerView:this,updatingHandles:this.updatingHandles})}this.requestUpdate(),this.addAttachHandles(r((()=>this.resampling),(()=>{this.doRefresh()}))),super.attach()}detach(){super.detach(),this._tileStrategy.destroy(),this._fetchQueue.clear(),this.container.removeAllChildren(),this._popupHighlightHelper?.destroy(),this._fetchQueue=this._tileStrategy=this._tileInfoView=this._popupHighlightHelper=null}async fetchPopupFeatures(e,t){return this._popupHighlightHelper?this._popupHighlightHelper.fetchPopupFeatures(e,t):[]}highlight(e){return this._popupHighlightHelper?this._popupHighlightHelper.highlight(e):{remove(){}}}moveStart(){this.requestUpdate()}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}supportsSpatialReference(e){return l(this.layer.tileInfo?.spatialReference,e)}async doRefresh(){!this.attached||this.updateRequested||this.suspended||(this._fetchQueue.reset(),this._tileStrategy.tiles.forEach((e=>this._enqueueTileFetch(e))))}isUpdating(){return this._fetchQueue?.updating??!1}acquireTile(e){const t=this._bitmapView.createTile(e),i=t.bitmap;return[i.x,i.y]=this._tileInfoView.getTileCoords(V,t.key),i.resolution=this._tileInfoView.getTileResolution(t.key),[i.width,i.height]=this._tileInfoView.tileInfo.size,this._enqueueTileFetch(t),this._bitmapView.addChild(t),this.requestUpdate(),t}releaseTile(e){this._fetchQueue.abort(e.key.id),this._bitmapView.removeChild(e),e.once("detach",(()=>e.destroy())),this.requestUpdate()}async fetchTile(e,t={}){const r=this.tilemapCache,{signal:s,resamplingLevel:o=0}=t;if(!r)try{return await this._fetchImage(e,s)}catch(a){if(!i(a)&&!this.resampling)return c(this._tileInfoView.tileInfo.size);if(o<3){const i=this._tileInfoView.getTileParentId(e.id);if(i){const r=new f(i),s=await this.fetchTile(r,{...t,resamplingLevel:o+1});return m(this._tileInfoView,s,r,e)}}throw a}const l=new f(0,0,0,0);let h;try{if(await r.fetchAvailabilityUpsample(e.level,e.row,e.col,l,{signal:s}),l.level!==e.level&&!this.resampling)return c(this._tileInfoView.tileInfo.size);h=await this._fetchImage(l,s)}catch(a){if(i(a))throw a;h=await this._fetchImage(e,s)}return this.resampling?m(this._tileInfoView,h,l,e):h}async _enqueueTileFetch(e){if(!this._fetchQueue.has(e.key.id)){try{const t=await this._fetchQueue.push(e.key);e.bitmap.source=t,e.bitmap.width=this._tileInfoView.tileInfo.size[0],e.bitmap.height=this._tileInfoView.tileInfo.size[1],e.once("attach",(()=>this.requestUpdate()))}catch(r){i(r)||t.getLogger(this).error(r)}this.requestUpdate()}}async _fetchImage(e,t){return this.layer.fetchImageBitmapTile(e.level,e.row,e.col,{signal:t})}};e([s()],v.prototype,"_fetchQueue",void 0),e([s()],v.prototype,"resampling",null),e([s()],v.prototype,"tilemapCache",null),v=e([o("esri.views.2d.layers.TileLayerView2D")],v);const I=v;export{I as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{CIMAnalyzer as e}from"../../../../symbols/cim/cimAnalyzer.js";import{ExpandedCIM as t}from"../../../../symbols/cim/ExpandedCIM.js";import{fetchCIMSymbolReference as a}from"./webStyleUtils.js";const r=async(a,r,n)=>{const i=new e(n,r);return new t(await i.analyzeSymbolReference(a.data,!1),a.data,a.rendererKey,a.maxVVSize)};async function n(e,t,n,i){if(!e)return null;if("cim"===e.type)return r(e,t,n);if("web-style"===e.type){const l={type:"cim",data:await a(e,null,i)??void 0,rendererKey:e.rendererKey,maxVVSize:e.maxVVSize};return r(l,t,n)}return e}function i(e){if(!e)return null;const{avoidSDFRasterization:t,type:a,cim:r,url:n,materialHash:i}=e,l={cim:r,type:a,mosaicHash:i,url:n,size:null,dashTemplate:null,path:null,text:null,fontName:null,animatedSymbolProperties:null,avoidSDFRasterization:t};switch(a){case"marker":l.size=e.size,l.path=e.path,l.animatedSymbolProperties=e.animatedSymbolProperties;break;case"line":l.dashTemplate=e.dashTemplate;break;case"text":l.text=e.text,l.fontName=e.fontName}return l}export{i as cimLayerToRasterizationInfo,n as expandSymbol};
5
+ import{CIMAnalyzer as e}from"../../../../symbols/cim/cimAnalyzer.js";import{ExpandedCIM as t}from"../../../../symbols/cim/ExpandedCIM.js";import{fetchCIMSymbolReference as a}from"./webStyleUtils.js";const i=async(a,i,r)=>{const n=new e(r,i);return new t(await n.analyzeSymbolReference(a.data,!1),a.data,a.rendererKey,a.maxVVSize)};async function r(e,t,r,n){if(!e)return null;if("cim"===e.type)return i(e,t,r);if("web-style"===e.type){const l={type:"cim",data:await a(e,null,n)??void 0,rendererKey:e.rendererKey,maxVVSize:e.maxVVSize};return i(l,t,r)}return e}function n(e){if(!e)return null;const{avoidSDFRasterization:t,type:a,cim:i,url:r,materialHash:n,maxVVSize:l}=e,m={cim:i,type:a,mosaicHash:n,url:r,size:null,dashTemplate:null,path:null,text:null,fontName:null,animatedSymbolProperties:null,avoidSDFRasterization:t};switch(a){case"marker":l&&"size"in i&&(i.size=Math.max(l,i.size)),m.size=e.size,m.path=e.path,m.animatedSymbolProperties=e.animatedSymbolProperties;break;case"line":m.dashTemplate=e.dashTemplate;break;case"text":m.text=e.text,m.fontName=e.fontName}return m}export{n as cimLayerToRasterizationInfo,r as expandSymbol};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import has from"../../../core/has.js";import{Milliseconds as e}from"../../../core/time.js";class a{static isValidProfile(e){return e in a.profiles}static getDefaultProfile(){return has("esri-iPhone")?"low":"medium"}static apply(e,i){const o=a.profiles[e];i.graphics3D.maxTotalNumberOfFeatures=o.graphics3D.maxTotalNumberOfFeatures,i.graphics3D.maxTotalNumberOfPrimitives=o.graphics3D.maxTotalNumberOfPrimitives,i.graphics3D.polygonLodFactor=o.graphics3D.polygonLodFactor,i.graphics3D.polylineLodFactor=o.graphics3D.polylineLodFactor,i.graphics3D.snapshotAvailable=o.graphics3D.snapshotAvailable,i.graphics3D.skipHighSymbolLods=o.graphics3D.skipHighSymbolLods;const t=i.sceneService.object,r=o.sceneService.object;t.lodFactor=r.lodFactor,t.lodCrossfadeinDuration=r.lodCrossfadeinDuration,t.lodCrossfadeoutDuration=r.lodCrossfadeoutDuration,t.lodCrossfadeUncoveredDuration=r.lodCrossfadeUncoveredDuration,i.sceneService.point.lodFactor=o.sceneService.point.lodFactor,i.sceneService.integratedMesh.lodFactor=o.sceneService.integratedMesh.lodFactor,i.sceneService.pointCloud.lodFactor=o.sceneService.pointCloud.lodFactor,i.sceneService.uncompressedTextureDownsamplingEnabled=o.sceneService.uncompressedTextureDownsamplingEnabled,i.tiledSurface.lodBias=o.tiledSurface.lodBias,i.tiledSurface.angledSplitBias=o.tiledSurface.angledSplitBias,i.tiledSurface.reduceTileLevelDifferences=o.tiledSurface.reduceTileLevelDifferences,i.tiledSurface.textureFadeDuration=o.tiledSurface.textureFadeDuration,i.heatmap.pixelRatio=o.heatmap.pixelRatio,i.heatmap.maxTotalNumberOfFeatures=o.heatmap.maxTotalNumberOfFeatures,i.fadeDuration=o.fadeDuration,i.antialiasingEnabled=o.antialiasingEnabled,i.physicallyBasedRenderingEnabled=o.physicalBasedRenderingEnabled,i.highQualityShadows=o.highQualityShadows,i.highQualityTransparency=o.highQualityTransparency,i.highQualityAtmosphere=o.highQualityAtmosphere,i.reflections=o.reflections,i.ambientOcclusion=o.ambientOcclusion,i.memoryLimit=o.memoryLimit,i.additionalCacheMemory=o.additionalCacheMemory,i.frameRate=o.frameRate,i.maximumPixelRatio=o.maximumPixelRatio}}function i(){const a=!!has("esri-mobile"),i=!!has("ios"),o=e(400);return{low:{graphics3D:{maxTotalNumberOfFeatures:25e3,maxTotalNumberOfPrimitives:85e4,polygonLodFactor:.5,polylineLodFactor:1,snapshotAvailable:!1,skipHighSymbolLods:!0},heatmap:{pixelRatio:.125,maxTotalNumberOfFeatures:25e3},sceneService:{object:{lodFactor:.2,lodCrossfadeinDuration:e(0),lodCrossfadeoutDuration:e(0),lodCrossfadeUncoveredDuration:e(0)},point:{lodFactor:1},integratedMesh:{lodFactor:.6},pointCloud:{lodFactor:.5},uncompressedTextureDownsamplingEnabled:!0},tiledSurface:{lodBias:-1,angledSplitBias:.5,reduceTileLevelDifferences:!1,textureFadeDuration:e(0)},fadeDuration:e(0),antialiasingEnabled:!1,physicalBasedRenderingEnabled:!1,highQualityShadows:!1,highQualityTransparency:!1,highQualityAtmosphere:!1,reflections:!1,ambientOcclusion:!1,memoryLimit:200,additionalCacheMemory:0,frameRate:0,maximumPixelRatio:1},medium:{graphics3D:{maxTotalNumberOfFeatures:5e4,maxTotalNumberOfPrimitives:17e5,polygonLodFactor:a?.8:1,polylineLodFactor:a?1.2:1.5,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.25,maxTotalNumberOfFeatures:5e4},sceneService:{object:{lodFactor:1,lodCrossfadeinDuration:e(0),lodCrossfadeoutDuration:e(0),lodCrossfadeUncoveredDuration:o},point:{lodFactor:1},integratedMesh:{lodFactor:1},pointCloud:{lodFactor:1},uncompressedTextureDownsamplingEnabled:a},tiledSurface:{lodBias:0,angledSplitBias:1,reduceTileLevelDifferences:!has("disable-feature:reduce-map-tile-levels"),textureFadeDuration:o},fadeDuration:o,antialiasingEnabled:!0,physicalBasedRenderingEnabled:!0,highQualityShadows:!1,highQualityTransparency:!0,highQualityAtmosphere:!1,reflections:!1,ambientOcclusion:!1,memoryLimit:a?600:750,additionalCacheMemory:a?0:150,frameRate:0,maximumPixelRatio:1},high:{graphics3D:{maxTotalNumberOfFeatures:5e4,maxTotalNumberOfPrimitives:17e5,polygonLodFactor:a?1.2:2,polylineLodFactor:a?1.2:2,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.5,maxTotalNumberOfFeatures:5e4},sceneService:{object:{lodFactor:1,lodCrossfadeinDuration:e(0),lodCrossfadeoutDuration:e(0),lodCrossfadeUncoveredDuration:o},point:{lodFactor:1},integratedMesh:{lodFactor:1},pointCloud:{lodFactor:1},uncompressedTextureDownsamplingEnabled:!1},tiledSurface:{lodBias:0,angledSplitBias:1,reduceTileLevelDifferences:!has("disable-feature:reduce-map-tile-levels"),textureFadeDuration:o},fadeDuration:o,antialiasingEnabled:!0,physicalBasedRenderingEnabled:!0,highQualityShadows:!0,highQualityTransparency:!0,highQualityAtmosphere:!0,reflections:!0,ambientOcclusion:!0,memoryLimit:a?900:1500,additionalCacheMemory:0,frameRate:0,maximumPixelRatio:a?1:1/0}}}a.test={reset(){const e=i();for(const i of Object.keys(e))a.profiles[i]=e[i]}},function(e){e.profiles=i()}(a||(a={}));const o=a;export{o as default};
5
+ import has from"../../../core/has.js";import{Milliseconds as e}from"../../../core/time.js";class a{static isValidProfile(e){return e in a.profiles}static getDefaultProfile(){return has("esri-iPhone")?"low":"medium"}static apply(e,i){const o=a.profiles[e];i.graphics3D.maxTotalNumberOfFeatures=o.graphics3D.maxTotalNumberOfFeatures,i.graphics3D.maxTotalNumberOfPrimitives=o.graphics3D.maxTotalNumberOfPrimitives,i.graphics3D.polygonLodFactor=o.graphics3D.polygonLodFactor,i.graphics3D.polylineLodFactor=o.graphics3D.polylineLodFactor,i.graphics3D.snapshotAvailable=o.graphics3D.snapshotAvailable,i.graphics3D.skipHighSymbolLods=o.graphics3D.skipHighSymbolLods;const t=i.sceneService.object,r=o.sceneService.object;t.lodFactor=r.lodFactor,t.lodCrossfadeinDuration=r.lodCrossfadeinDuration,t.lodCrossfadeoutDuration=r.lodCrossfadeoutDuration,t.lodCrossfadeUncoveredDuration=r.lodCrossfadeUncoveredDuration,i.sceneService.point.lodFactor=o.sceneService.point.lodFactor,i.sceneService.integratedMesh.lodFactor=o.sceneService.integratedMesh.lodFactor,i.sceneService.pointCloud.lodFactor=o.sceneService.pointCloud.lodFactor,i.sceneService.uncompressedTextureDownsamplingEnabled=o.sceneService.uncompressedTextureDownsamplingEnabled,i.tiledSurface.lodBias=o.tiledSurface.lodBias,i.tiledSurface.angledSplitBias=o.tiledSurface.angledSplitBias,i.tiledSurface.reduceTileLevelDifferences=o.tiledSurface.reduceTileLevelDifferences,i.tiledSurface.textureFadeDuration=o.tiledSurface.textureFadeDuration,i.heatmap.pixelRatio=o.heatmap.pixelRatio,i.heatmap.maxTotalNumberOfFeatures=o.heatmap.maxTotalNumberOfFeatures,i.fadeDuration=o.fadeDuration,i.antialiasingEnabled=o.antialiasingEnabled,i.physicallyBasedRenderingEnabled=o.physicalBasedRenderingEnabled,i.highQualityTransparency=o.highQualityTransparency,i.highQualityAtmosphere=o.highQualityAtmosphere,i.reflections=o.reflections,i.ambientOcclusion=o.ambientOcclusion,i.memoryLimit=o.memoryLimit,i.additionalCacheMemory=o.additionalCacheMemory,i.frameRate=o.frameRate,i.maximumPixelRatio=o.maximumPixelRatio}}function i(){const a=!!has("esri-mobile"),i=!!has("ios"),o=e(400);return{low:{graphics3D:{maxTotalNumberOfFeatures:25e3,maxTotalNumberOfPrimitives:85e4,polygonLodFactor:.5,polylineLodFactor:1,snapshotAvailable:!1,skipHighSymbolLods:!0},heatmap:{pixelRatio:.125,maxTotalNumberOfFeatures:25e3},sceneService:{object:{lodFactor:.2,lodCrossfadeinDuration:e(0),lodCrossfadeoutDuration:e(0),lodCrossfadeUncoveredDuration:e(0)},point:{lodFactor:1},integratedMesh:{lodFactor:.6},pointCloud:{lodFactor:.5},uncompressedTextureDownsamplingEnabled:!0},tiledSurface:{lodBias:-1,angledSplitBias:.5,reduceTileLevelDifferences:!1,textureFadeDuration:e(0)},fadeDuration:e(0),antialiasingEnabled:!1,physicalBasedRenderingEnabled:!1,highQualityTransparency:!1,highQualityAtmosphere:!1,reflections:!1,ambientOcclusion:!1,memoryLimit:200,additionalCacheMemory:0,frameRate:0,maximumPixelRatio:1},medium:{graphics3D:{maxTotalNumberOfFeatures:5e4,maxTotalNumberOfPrimitives:17e5,polygonLodFactor:a?.8:1,polylineLodFactor:a?1.2:1.5,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.25,maxTotalNumberOfFeatures:5e4},sceneService:{object:{lodFactor:1,lodCrossfadeinDuration:e(0),lodCrossfadeoutDuration:e(0),lodCrossfadeUncoveredDuration:o},point:{lodFactor:1},integratedMesh:{lodFactor:1},pointCloud:{lodFactor:1},uncompressedTextureDownsamplingEnabled:a},tiledSurface:{lodBias:0,angledSplitBias:1,reduceTileLevelDifferences:!has("disable-feature:reduce-map-tile-levels"),textureFadeDuration:o},fadeDuration:o,antialiasingEnabled:!0,physicalBasedRenderingEnabled:!0,highQualityTransparency:!0,highQualityAtmosphere:!1,reflections:!1,ambientOcclusion:!1,memoryLimit:a?600:750,additionalCacheMemory:a?0:150,frameRate:0,maximumPixelRatio:1},high:{graphics3D:{maxTotalNumberOfFeatures:5e4,maxTotalNumberOfPrimitives:17e5,polygonLodFactor:a?1.2:2,polylineLodFactor:a?1.2:2,snapshotAvailable:!i,skipHighSymbolLods:!1},heatmap:{pixelRatio:.5,maxTotalNumberOfFeatures:5e4},sceneService:{object:{lodFactor:1,lodCrossfadeinDuration:e(0),lodCrossfadeoutDuration:e(0),lodCrossfadeUncoveredDuration:o},point:{lodFactor:1},integratedMesh:{lodFactor:1},pointCloud:{lodFactor:1},uncompressedTextureDownsamplingEnabled:!1},tiledSurface:{lodBias:0,angledSplitBias:1,reduceTileLevelDifferences:!has("disable-feature:reduce-map-tile-levels"),textureFadeDuration:o},fadeDuration:o,antialiasingEnabled:!0,physicalBasedRenderingEnabled:!0,highQualityTransparency:!0,highQualityAtmosphere:!0,reflections:!0,ambientOcclusion:!0,memoryLimit:a?900:1500,additionalCacheMemory:0,frameRate:0,maximumPixelRatio:a?1:1/0}}}a.test={reset(){const e=i();for(const i of Object.keys(e))a.profiles[i]=e[i]}},function(e){e.profiles=i()}(a||(a={}));const o=a;export{o as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../chunks/tslib.es6.js";import e from"../../../core/Accessor.js";import{Milliseconds as o}from"../../../core/time.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as s}from"../../../core/accessorSupport/decorators/subclass.js";let r=class extends e{constructor(){super(...arguments),this.minTotalNumberOfFeatures=2e3,this.maxTotalNumberOfFeatures=5e4,this.maxTotalNumberOfPrimitives=17e5,this.snapshotAvailable=!0,this.polygonLodFactor=1,this.polylineLodFactor=1,this.skipHighSymbolLods=!1}};t([i()],r.prototype,"minTotalNumberOfFeatures",void 0),t([i()],r.prototype,"maxTotalNumberOfFeatures",void 0),t([i()],r.prototype,"maxTotalNumberOfPrimitives",void 0),t([i()],r.prototype,"snapshotAvailable",void 0),t([i()],r.prototype,"polygonLodFactor",void 0),t([i()],r.prototype,"polylineLodFactor",void 0),t([i()],r.prototype,"skipHighSymbolLods",void 0),r=t([s("esri.views.3d.support.QualitySettings.Graphics3DSettings")],r);let p=class extends e{constructor(){super(...arguments),this.lodFactor=1}};t([i()],p.prototype,"lodFactor",void 0),p=t([s("esri.views.3d.support.QualitySettings.LoDFactorSettings")],p);let a=class extends p{constructor(){super(...arguments),this.lodCrossfadeinDuration=o(0),this.lodCrossfadeoutDuration=o(0),this.lodCrossfadeUncoveredDuration=o(0)}};a=t([s("esri.views.3d.support.QualitySettings.LoDFactor3DObjectSettings")],a);let d=class extends e{constructor(){super(...arguments),this.object=new a,this.point=new p,this.integratedMesh=new p,this.pointCloud=new p,this.uncompressedTextureDownsamplingEnabled=!1}};t([i({type:a})],d.prototype,"object",void 0),t([i({type:p})],d.prototype,"point",void 0),t([i({type:p})],d.prototype,"integratedMesh",void 0),t([i({type:p})],d.prototype,"pointCloud",void 0),t([i()],d.prototype,"uncompressedTextureDownsamplingEnabled",void 0),d=t([s("esri.views.3d.support.QualitySettings.SceneServiceSettings")],d);let n=class extends e{constructor(){super(...arguments),this.lodBias=0,this.angledSplitBias=1,this.reduceTileLevelDifferences=!0,this.textureFadeDuration=o(400)}};t([i()],n.prototype,"lodBias",void 0),t([i()],n.prototype,"angledSplitBias",void 0),t([i()],n.prototype,"reduceTileLevelDifferences",void 0),t([i()],n.prototype,"textureFadeDuration",void 0),n=t([s("esri.views.3d.support.QualitySettings.TiledSurfaceSettings")],n);let l=class extends e{constructor(){super(...arguments),this.pixelRatio=1,this.maxTotalNumberOfFeatures=5e4}};t([i()],l.prototype,"pixelRatio",void 0),t([i()],l.prototype,"maxTotalNumberOfFeatures",void 0),l=t([s("esri.views.3d.support.QualitySettings.HeatmapSettings")],l);let c=class extends e{constructor(){super(...arguments),this.graphics3D=new r,this.sceneService=new d,this.tiledSurface=new n,this.heatmap=new l,this.fadeDuration=o(400),this.antialiasingEnabled=!0,this.physicallyBasedRenderingEnabled=!1,this.highQualityTransparency=!0,this.highQualityAtmosphere=!1,this.reflections=!1,this.ambientOcclusion=!1,this.highQualityShadows=!1,this.memoryLimit=750,this.additionalCacheMemory=0,this.frameRate=void 0,this.maximumPixelRatio=1/0}};t([i({type:r})],c.prototype,"graphics3D",void 0),t([i({type:d})],c.prototype,"sceneService",void 0),t([i({type:n})],c.prototype,"tiledSurface",void 0),t([i({type:l})],c.prototype,"heatmap",void 0),t([i()],c.prototype,"fadeDuration",void 0),t([i()],c.prototype,"antialiasingEnabled",void 0),t([i()],c.prototype,"physicallyBasedRenderingEnabled",void 0),t([i()],c.prototype,"highQualityTransparency",void 0),t([i()],c.prototype,"highQualityAtmosphere",void 0),t([i()],c.prototype,"reflections",void 0),t([i()],c.prototype,"ambientOcclusion",void 0),t([i()],c.prototype,"highQualityShadows",void 0),t([i()],c.prototype,"memoryLimit",void 0),t([i()],c.prototype,"additionalCacheMemory",void 0),t([i()],c.prototype,"frameRate",void 0),t([i()],c.prototype,"maximumPixelRatio",void 0),c=t([s("esri.views.3d.support.QualitySettings.QualitySettings")],c);const u=c;export{u as default};
5
+ import{_ as t}from"../../../chunks/tslib.es6.js";import e from"../../../core/Accessor.js";import{Milliseconds as o}from"../../../core/time.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as s}from"../../../core/accessorSupport/decorators/subclass.js";let r=class extends e{constructor(){super(...arguments),this.minTotalNumberOfFeatures=2e3,this.maxTotalNumberOfFeatures=5e4,this.maxTotalNumberOfPrimitives=17e5,this.snapshotAvailable=!0,this.polygonLodFactor=1,this.polylineLodFactor=1,this.skipHighSymbolLods=!1}};t([i()],r.prototype,"minTotalNumberOfFeatures",void 0),t([i()],r.prototype,"maxTotalNumberOfFeatures",void 0),t([i()],r.prototype,"maxTotalNumberOfPrimitives",void 0),t([i()],r.prototype,"snapshotAvailable",void 0),t([i()],r.prototype,"polygonLodFactor",void 0),t([i()],r.prototype,"polylineLodFactor",void 0),t([i()],r.prototype,"skipHighSymbolLods",void 0),r=t([s("esri.views.3d.support.QualitySettings.Graphics3DSettings")],r);let p=class extends e{constructor(){super(...arguments),this.lodFactor=1}};t([i()],p.prototype,"lodFactor",void 0),p=t([s("esri.views.3d.support.QualitySettings.LoDFactorSettings")],p);let a=class extends p{constructor(){super(...arguments),this.lodCrossfadeinDuration=o(0),this.lodCrossfadeoutDuration=o(0),this.lodCrossfadeUncoveredDuration=o(0)}};a=t([s("esri.views.3d.support.QualitySettings.LoDFactor3DObjectSettings")],a);let n=class extends e{constructor(){super(...arguments),this.object=new a,this.point=new p,this.integratedMesh=new p,this.pointCloud=new p,this.uncompressedTextureDownsamplingEnabled=!1}};t([i({type:a})],n.prototype,"object",void 0),t([i({type:p})],n.prototype,"point",void 0),t([i({type:p})],n.prototype,"integratedMesh",void 0),t([i({type:p})],n.prototype,"pointCloud",void 0),t([i()],n.prototype,"uncompressedTextureDownsamplingEnabled",void 0),n=t([s("esri.views.3d.support.QualitySettings.SceneServiceSettings")],n);let d=class extends e{constructor(){super(...arguments),this.lodBias=0,this.angledSplitBias=1,this.reduceTileLevelDifferences=!0,this.textureFadeDuration=o(400)}};t([i()],d.prototype,"lodBias",void 0),t([i()],d.prototype,"angledSplitBias",void 0),t([i()],d.prototype,"reduceTileLevelDifferences",void 0),t([i()],d.prototype,"textureFadeDuration",void 0),d=t([s("esri.views.3d.support.QualitySettings.TiledSurfaceSettings")],d);let l=class extends e{constructor(){super(...arguments),this.pixelRatio=1,this.maxTotalNumberOfFeatures=5e4}};t([i()],l.prototype,"pixelRatio",void 0),t([i()],l.prototype,"maxTotalNumberOfFeatures",void 0),l=t([s("esri.views.3d.support.QualitySettings.HeatmapSettings")],l);let c=class extends e{constructor(){super(...arguments),this.graphics3D=new r,this.sceneService=new n,this.tiledSurface=new d,this.heatmap=new l,this.fadeDuration=o(400),this.antialiasingEnabled=!0,this.physicallyBasedRenderingEnabled=!1,this.highQualityTransparency=!0,this.highQualityAtmosphere=!1,this.reflections=!1,this.ambientOcclusion=!1,this.memoryLimit=750,this.additionalCacheMemory=0,this.frameRate=void 0,this.maximumPixelRatio=1/0}};t([i({type:r})],c.prototype,"graphics3D",void 0),t([i({type:n})],c.prototype,"sceneService",void 0),t([i({type:d})],c.prototype,"tiledSurface",void 0),t([i({type:l})],c.prototype,"heatmap",void 0),t([i()],c.prototype,"fadeDuration",void 0),t([i()],c.prototype,"antialiasingEnabled",void 0),t([i()],c.prototype,"physicallyBasedRenderingEnabled",void 0),t([i()],c.prototype,"highQualityTransparency",void 0),t([i()],c.prototype,"highQualityAtmosphere",void 0),t([i()],c.prototype,"reflections",void 0),t([i()],c.prototype,"ambientOcclusion",void 0),t([i()],c.prototype,"memoryLimit",void 0),t([i()],c.prototype,"additionalCacheMemory",void 0),t([i()],c.prototype,"frameRate",void 0),t([i()],c.prototype,"maximumPixelRatio",void 0),c=t([s("esri.views.3d.support.QualitySettings.QualitySettings")],c);const u=c;export{u as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import r from"../../../../core/Handles.js";import{watch as s,sync as n,when as i,on as o,initial as a}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as u}from"../../../../core/accessorSupport/decorators/subclass.js";import{a as h,k as d,c as f}from"../../../../chunks/vec3.js";import{c as p}from"../../../../chunks/vec3f64.js";import{create as l}from"../../../../geometry/support/ray.js";import _ from"../debugFlags.js";import{PointGraphics as m}from"../debugUtils.js";import{PropertiesPool as C}from"../PropertiesPool.js";import{fromRenderAtEye as y}from"../geometryUtils/ray.js";import{CameraOnSurface as O}from"./CameraOnSurface.js";import{CenterOnSurface as A}from"./CenterOnSurface.js";import{ContentGeometryUpdates as g}from"./ContentGeometryUpdates.js";import{Focus as w}from"./Focus.js";import{StableSurfaceCenter as I}from"./StableSurfaceCenter.js";import{SurfaceGeometryUpdates as S}from"./SurfaceGeometryUpdates.js";import{newIntersector as v}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as b}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{TERRAIN_ID as R}from"../../webgl-engine/lib/verticalOffsetUtils.js";import{TaskPriority as T}from"../../../support/Scheduler.js";let P=class extends t{constructor(e){super(e),this._handles=new r,this._tmpRay=l(),this._centerRayDirty=!0,this._surfaceAltitudeAtCenter=0,this._surfaceAltitudeAtCenterDirty=!0,this._contentAltitudeAtCenter=0,this._contentAltitudeAtCenterDirty=!0,this._propertiesPool=new C({renderPointOfView:j},this),this.renderPointOfView=p(),this._pois=new Array,this._debugCenters=new Map}initialize(){const{state:e,basemapTerrain:t,renderCoordsHelper:r,map:c}=this.view;this._surfaceIntersector=v(e.viewingMode),e.isGlobal?this._surfaceIntersector.options.backfacesTerrain=!1:this._surfaceIntersector.options.backfacesTerrain=!0,this._surfaceIntersector.options.invisibleTerrain=!1,this._surfaceIntersector.options.store=b.MIN,this._contentIntersector=v(e.viewingMode);const u=()=>this._estimateSurfaceAltitudeAtCenter(),h=this.view.resourceController.scheduler,d=this.view.basemapTerrain?.elevationQueryCache,f={state:e,scheduler:h,surface:t,renderCoordsHelper:r};this._set("centerOnSurfaceInfrequent",new A({...f,task:T.POINT_OF_INTEREST_INFREQUENT,estimateSurfaceAltitudeAtCenter:u})),this._set("centerOnSurfaceFrequent",new A({...f,task:T.POINT_OF_INTEREST_FREQUENT,estimateSurfaceAltitudeAtCenter:u})),this._set("centerOnContent",new A({...f,task:T.POINT_OF_INTEREST_FREQUENT,estimateSurfaceAltitudeAtCenter:()=>this._estimateContentAltitudeAtCenter()})),this._set("cameraOnSurface",new O({...f,cache:d,task:T.POINT_OF_INTEREST_INFREQUENT,map:c})),this._set("surfaceGeometryUpdates",new S({...f,centerOnSurfaces:[this.centerOnSurfaceFrequent,this.centerOnContent,this.centerOnSurfaceInfrequent]})),this._set("contentGeometryUpdates",new g({contentLayerViews:this.view.allLayerViews,renderCoordsHelper:r})),this._set("surfaceOrigin",new I({cache:d,view:this.view})),this._set("focus",new w({state:e,scheduler:h,surface:t,renderCoordsHelper:r,centerOnSurface:this.centerOnSurfaceInfrequent,estimateSurfaceIntersectionAtRenderPoint:(e,t)=>this._estimateSurfaceIntersectionAtRenderPoint(e,this.view.state.contentCamera,t)})),this._pois.push(this.centerOnContent,this.centerOnSurfaceFrequent,this.centerOnSurfaceInfrequent,this.cameraOnSurface,this.focus);const p=this.view.graphics;this._debugCenters.set(this.centerOnContent,new m(p,"red","CenterOnContent")),this._debugCenters.set(this.centerOnSurfaceFrequent,new m(p,"red","CenterOnSurface")),this._debugCenters.set(this.centerOnSurfaceInfrequent,new m(p,"red","CenterOnSurface")),this._debugCenters.set(this.cameraOnSurface,new m(p,"blue","CameraOnSurface")),this._debugCenters.set(this.focus,new m(p,"green","Focus")),this._handles.add([s((()=>e.contentCamera),(e=>this._cameraChanged(e)),n),s((()=>t.extent),(()=>this._updateCenterPointsOfInterest())),i((()=>!t.updating),(()=>this._updateCenterPointsOfInterest()),n),o((()=>this.surfaceGeometryUpdates.events),"request-update",(()=>this._updateCenterPointsOfInterest())),o((()=>this.contentGeometryUpdates.events),"request-update",(()=>this._updateCenterOnContent())),i((()=>_.SHOW_POI),(e=>this._setDebug(e)),a)]),this._cameraChanged(this.view.state.contentCamera);for(const s of this._pois)s.runTask()}destroy(){this._setDebug(!1),this._handles.destroy(),this._propertiesPool.destroy();for(const e of this._pois)e.destroy();this.surfaceOrigin.destroy()}get updating(){return!(!this.surfaceGeometryUpdates?.updating&&!this._pois.some((e=>e.updating)))}get _centerRay(){return this._centerRayDirty&&(this._centerRayCached=this.view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(this.view.state.contentCamera,this._tmpRay),this._centerRayDirty=!1),this._centerRayCached}_estimateContentAltitudeAtCenter(){if(!this._contentAltitudeAtCenterDirty)return this._contentAltitudeAtCenter;this._contentAltitudeAtCenterDirty=!1;const e=this._centerRay;return null==e||(this.view.sceneIntersectionHelper.intersectRay(e,this._contentIntersector,U,D)?this._contentAltitudeAtCenter=this.view.renderCoordsHelper.getAltitude(U):this._contentAltitudeAtCenter=this._estimateSurfaceAltitudeAtCenter()),this._contentAltitudeAtCenter}_estimateSurfaceAltitudeAtCenter(){if(!this.view.basemapTerrain)return 0;if(!this._surfaceAltitudeAtCenterDirty)return this._surfaceAltitudeAtCenter;this._surfaceAltitudeAtCenterDirty=!1;const e=this._centerRay;if(null==e)return this._surfaceAltitudeAtCenter;const t=e.origin,r=h(U,e.origin,e.direction);return this._surfaceIntersector.resetWithRay(e,this.view.state.contentCamera),this.view.basemapTerrain.intersect(this._surfaceIntersector,null,t,r),this._surfaceIntersector.results.min.getIntersectionPoint(U)&&(this._surfaceAltitudeAtCenter=this.view.renderCoordsHelper.getAltitude(U)),this._surfaceAltitudeAtCenter}_estimateSurfaceIntersectionAtRenderPoint(e,t,r){const s=y(t,e,E);if(null==s)return null;const n=s.origin,i=h(U,s.origin,s.direction);return this._surfaceIntersector.resetWithRay(s,t),this.view.basemapTerrain.intersect(this._surfaceIntersector,null,n,i),this._surfaceIntersector.results.min.getIntersectionPoint(r)?r:null}_cameraChanged(e){this._updateCenterPointsOfInterest();const t=e.eye;d(this.renderPointOfView,t)||this._set("renderPointOfView",f(this._propertiesPool.get("renderPointOfView"),t))}_updateCenterPointsOfInterest(){this._centerRayDirty=!0,this._surfaceAltitudeAtCenterDirty=!0,this._contentAltitudeAtCenterDirty=!0;for(const e of this._pois)e.updateRenderLocation()}_updateCenterOnContent(){this._contentAltitudeAtCenterDirty=!0,this.centerOnContent.updateRenderLocation()}_setDebug(e){if(!e)return this._debugCenters.forEach((e=>e.hide())),void this._handles.remove("debug");for(const t of this._pois)this._handles.add(s((()=>t.renderLocation),(e=>this._debugCenters.get(t)?.show(e,t.renderCoordsHelper.spatialReference)),a),"debug")}get test(){return{update:()=>{this.surfaceGeometryUpdates.runTask();for(const e of this._pois)e.runTask()},surfaceGeometryUpdates:this.surfaceGeometryUpdates}}};e([c({readOnly:!0})],P.prototype,"centerOnContent",void 0),e([c({readOnly:!0})],P.prototype,"centerOnSurfaceFrequent",void 0),e([c({readOnly:!0})],P.prototype,"centerOnSurfaceInfrequent",void 0),e([c({readOnly:!0})],P.prototype,"cameraOnSurface",void 0),e([c({readOnly:!0})],P.prototype,"focus",void 0),e([c({readOnly:!0})],P.prototype,"renderPointOfView",void 0),e([c({readOnly:!0})],P.prototype,"surfaceOrigin",void 0),e([c({readOnly:!0})],P.prototype,"contentGeometryUpdates",void 0),e([c({readOnly:!0})],P.prototype,"surfaceGeometryUpdates",void 0),e([c({constructOnly:!0})],P.prototype,"view",void 0),e([c({readOnly:!0})],P.prototype,"updating",null),P=e([u("esri.views.3d.support.PointsOfInterest")],P);const j=Array,U=p(),E=l(),D={exclude:new Set([R])};export{P as PointsOfInterest};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import r from"../../../../core/Handles.js";import{watch as s,sync as n,when as i,on as o,initial as a}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as u}from"../../../../core/accessorSupport/decorators/subclass.js";import{a as h,k as d,c as p}from"../../../../chunks/vec3.js";import{c as f}from"../../../../chunks/vec3f64.js";import{create as l}from"../../../../geometry/support/ray.js";import _ from"../debugFlags.js";import{PointGraphics as m}from"../debugUtils.js";import{PropertiesPool as C}from"../PropertiesPool.js";import{fromRenderAtEye as y}from"../geometryUtils/ray.js";import{CameraOnSurface as O}from"./CameraOnSurface.js";import{CenterOnSurface as A}from"./CenterOnSurface.js";import{ContentGeometryUpdates as g}from"./ContentGeometryUpdates.js";import{Focus as w}from"./Focus.js";import{StableSurfaceCenter as I}from"./StableSurfaceCenter.js";import{SurfaceGeometryUpdates as S}from"./SurfaceGeometryUpdates.js";import{newIntersector as v}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as b}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{TERRAIN_ID as R}from"../../webgl-engine/lib/verticalOffsetUtils.js";import{TaskPriority as T}from"../../../support/Scheduler.js";let P=class extends t{constructor(e){super(e),this._handles=new r,this._tmpRay=l(),this._centerRayDirty=!0,this._surfaceAltitudeAtCenter=0,this._surfaceAltitudeAtCenterDirty=!0,this._contentAltitudeAtCenter=0,this._contentAltitudeAtCenterDirty=!0,this._propertiesPool=new C({renderPointOfView:j},this),this.renderPointOfView=f(),this._pois=new Array,this._debugCenters=new Map}initialize(){const{state:e,basemapTerrain:t,renderCoordsHelper:r,map:c}=this.view;this._surfaceIntersector=v(e.viewingMode),e.isGlobal?this._surfaceIntersector.options.backfacesTerrain=!1:this._surfaceIntersector.options.backfacesTerrain=!0,this._surfaceIntersector.options.invisibleTerrain=!1,this._surfaceIntersector.options.store=b.MIN,this._contentIntersector=v(e.viewingMode);const u=()=>this._estimateSurfaceAltitudeAtCenter(),h=this.view.resourceController.scheduler,d=this.view.basemapTerrain?.elevationQueryCache,p={state:e,scheduler:h,surface:t,renderCoordsHelper:r};this._set("centerOnSurfaceInfrequent",new A({...p,task:T.POINT_OF_INTEREST_INFREQUENT,estimateSurfaceAltitudeAtCenter:u})),this._set("centerOnSurfaceFrequent",new A({...p,task:T.POINT_OF_INTEREST_FREQUENT,estimateSurfaceAltitudeAtCenter:u})),this._set("centerOnContent",new A({...p,task:T.POINT_OF_INTEREST_FREQUENT,estimateSurfaceAltitudeAtCenter:()=>this._estimateContentAltitudeAtCenter()})),this._set("cameraOnSurface",new O({...p,cache:d,task:T.POINT_OF_INTEREST_INFREQUENT,map:c})),this._set("surfaceGeometryUpdates",new S({...p,centerOnSurfaces:[this.centerOnSurfaceFrequent,this.centerOnContent,this.centerOnSurfaceInfrequent]})),this._set("contentGeometryUpdates",new g({contentLayerViews:this.view.allLayerViews,renderCoordsHelper:r})),this._set("surfaceOrigin",new I({cache:d,view:this.view})),this._set("focus",new w({state:e,scheduler:h,surface:t,renderCoordsHelper:r,centerOnSurface:this.centerOnSurfaceFrequent,estimateSurfaceIntersectionAtRenderPoint:(e,t)=>this._estimateSurfaceIntersectionAtRenderPoint(e,this.view.state.contentCamera,t)})),this._pois.push(this.centerOnContent,this.centerOnSurfaceFrequent,this.centerOnSurfaceInfrequent,this.cameraOnSurface,this.focus);const f=this.view.graphics;this._debugCenters.set(this.centerOnContent,new m(f,"red","CenterOnContent")),this._debugCenters.set(this.centerOnSurfaceFrequent,new m(f,"red","CenterOnSurface")),this._debugCenters.set(this.centerOnSurfaceInfrequent,new m(f,"red","CenterOnSurface")),this._debugCenters.set(this.cameraOnSurface,new m(f,"blue","CameraOnSurface")),this._debugCenters.set(this.focus,new m(f,"green","Focus")),this._handles.add([s((()=>e.contentCamera),(e=>this._cameraChanged(e)),n),s((()=>t.extent),(()=>this._updateCenterPointsOfInterest())),i((()=>!t.updating),(()=>this._updateCenterPointsOfInterest()),n),o((()=>this.surfaceGeometryUpdates.events),"request-update",(()=>this._updateCenterPointsOfInterest())),o((()=>this.contentGeometryUpdates.events),"request-update",(()=>this._updateCenterOnContent())),i((()=>_.SHOW_POI),(e=>this._setDebug(e)),a)]),this._cameraChanged(this.view.state.contentCamera);for(const s of this._pois)s.runTask()}destroy(){this._setDebug(!1),this._handles.destroy(),this._propertiesPool.destroy();for(const e of this._pois)e.destroy();this.surfaceOrigin.destroy()}get updating(){return!(!this.surfaceGeometryUpdates?.updating&&!this._pois.some((e=>e.updating)))}get _centerRay(){return this._centerRayDirty&&(this._centerRayCached=this.view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(this.view.state.contentCamera,this._tmpRay),this._centerRayDirty=!1),this._centerRayCached}_estimateContentAltitudeAtCenter(){if(!this._contentAltitudeAtCenterDirty)return this._contentAltitudeAtCenter;this._contentAltitudeAtCenterDirty=!1;const e=this._centerRay;return null==e||(this.view.sceneIntersectionHelper.intersectRay(e,this._contentIntersector,U,F)?this._contentAltitudeAtCenter=this.view.renderCoordsHelper.getAltitude(U):this._contentAltitudeAtCenter=this._estimateSurfaceAltitudeAtCenter()),this._contentAltitudeAtCenter}_estimateSurfaceAltitudeAtCenter(){if(!this.view.basemapTerrain)return 0;if(!this._surfaceAltitudeAtCenterDirty)return this._surfaceAltitudeAtCenter;this._surfaceAltitudeAtCenterDirty=!1;const e=this._centerRay;if(null==e)return this._surfaceAltitudeAtCenter;const t=e.origin,r=h(U,e.origin,e.direction);return this._surfaceIntersector.resetWithRay(e,this.view.state.contentCamera),this.view.basemapTerrain.intersect(this._surfaceIntersector,null,t,r),this._surfaceIntersector.results.min.getIntersectionPoint(U)&&(this._surfaceAltitudeAtCenter=this.view.renderCoordsHelper.getAltitude(U)),this._surfaceAltitudeAtCenter}_estimateSurfaceIntersectionAtRenderPoint(e,t,r){const s=y(t,e,E);if(null==s)return null;const n=s.origin,i=h(U,s.origin,s.direction);return this._surfaceIntersector.resetWithRay(s,t),this.view.basemapTerrain.intersect(this._surfaceIntersector,null,n,i),this._surfaceIntersector.results.min.getIntersectionPoint(r)?r:null}_cameraChanged(e){this._updateCenterPointsOfInterest();const t=e.eye;d(this.renderPointOfView,t)||this._set("renderPointOfView",p(this._propertiesPool.get("renderPointOfView"),t))}_updateCenterPointsOfInterest(){this._centerRayDirty=!0,this._surfaceAltitudeAtCenterDirty=!0,this._contentAltitudeAtCenterDirty=!0;for(const e of this._pois)e.updateRenderLocation()}_updateCenterOnContent(){this._contentAltitudeAtCenterDirty=!0,this.centerOnContent.updateRenderLocation()}_setDebug(e){if(!e)return this._debugCenters.forEach((e=>e.hide())),void this._handles.remove("debug");for(const t of this._pois)this._handles.add(s((()=>t.renderLocation),(e=>this._debugCenters.get(t)?.show(e,t.renderCoordsHelper.spatialReference)),a),"debug")}get test(){return{update:()=>{this.surfaceGeometryUpdates.runTask();for(const e of this._pois)e.runTask()},surfaceGeometryUpdates:this.surfaceGeometryUpdates}}};e([c({readOnly:!0})],P.prototype,"centerOnContent",void 0),e([c({readOnly:!0})],P.prototype,"centerOnSurfaceFrequent",void 0),e([c({readOnly:!0})],P.prototype,"centerOnSurfaceInfrequent",void 0),e([c({readOnly:!0})],P.prototype,"cameraOnSurface",void 0),e([c({readOnly:!0})],P.prototype,"focus",void 0),e([c({readOnly:!0})],P.prototype,"renderPointOfView",void 0),e([c({readOnly:!0})],P.prototype,"surfaceOrigin",void 0),e([c({readOnly:!0})],P.prototype,"contentGeometryUpdates",void 0),e([c({readOnly:!0})],P.prototype,"surfaceGeometryUpdates",void 0),e([c({constructOnly:!0})],P.prototype,"view",void 0),e([c({readOnly:!0})],P.prototype,"updating",null),P=e([u("esri.views.3d.support.PointsOfInterest")],P);const j=Array,U=f(),E=l(),F={exclude:new Set([R])};export{P as PointsOfInterest};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{create as e,offset as t,copy as r}from"../../../geometry/support/aaBoundingRect.js";import{RenderTargetType as s,OverlayIndex as i}from"./interfaces.js";import{ValidationState as a}from"../webgl-engine/lib/basicInterfaces.js";import{fromValues as o}from"../webgl-engine/lib/LocalOriginFactory.js";var n;!function(e){e[e.None=0]="None",e[e.ColorAndWater=1]="ColorAndWater",e[e.Highlight=2]="Highlight",e[e.Occluded=3]="Occluded",e[e.ObjectAndLayerIdColor=4]="ObjectAndLayerIdColor"}(n||(n={}));class h{get extent(){return this._extent}constructor(t,r){this.index=t,this.renderTargets=r,this._extent=e(),this.resolution=0,this.renderLocalOrigin=o(0,0,0,"O"),this.pixelRatio=1,this.mapUnitsPerPixel=1,this.canvasGeometries=new g,this.hasDrapedFeatureSource=!1,this.hasDrapedRasterSource=!1,this.hasTargetWithoutRasterImage=!1,this.index=t,this.validTargets=new Array(r.renderTargets.length).fill(!1)}getValidTexture(e){return this.validTargets[e]?this.renderTargets.getTarget(e).getTexture():null}get _needsColorWithoutRasterImage(){return this.hasDrapedRasterSource&&this.hasDrapedFeatureSource&&this.hasTargetWithoutRasterImage}getColorTexture(e){const t=e===n.ColorAndWater?this.renderTargets.getTarget(s.Color):e===n.Highlight?this.renderTargets.getTarget(s.Highlight):e===n.ObjectAndLayerIdColor?this.renderTargets.getTarget(s.ObjectAndLayerIdColor):this.renderTargets.getTarget(s.Occluded);return t?t.getTexture():null}getColorTextureNoRasterImage(){return this._needsColorWithoutRasterImage?this.getValidTexture(s.ColorNoRasterImage):this.hasDrapedFeatureSource?this.getValidTexture(s.Color):null}getNormalTexture(e){const t=e===n.ColorAndWater?this.renderTargets.getTarget(s.Water):null;return t?t.getTexture():null}draw(e,t){const r=this.computeRenderTargetValidityBitfield();for(const i of this.renderTargets.renderTargets)i.type!==s.ColorNoRasterImage||this._needsColorWithoutRasterImage?this.validTargets[i.type]=e.drawTarget(this,i,t):this.validTargets[i.type]=!1;return r^this.computeRenderTargetValidityBitfield()?a.CHANGED:a.UNCHANGED}computeRenderTargetValidityBitfield(){const e=this.validTargets;return+e[s.Color]|+e[s.ColorNoRasterImage]<<1|+e[s.Highlight]<<2|+e[s.Water]<<3|+e[s.Occluded]<<4}setupGeometryViewsCyclical(e){this.setupGeometryViewsDirect();const r=.001*e.range;if(this._extent[0]-r<=e.min){const r=this.canvasGeometries.extents[this.canvasGeometries.numViews++];t(this._extent,e.range,0,r)}if(this._extent[2]+r>=e.max){const r=this.canvasGeometries.extents[this.canvasGeometries.numViews++];t(this._extent,-e.range,0,r)}}setupGeometryViewsDirect(){this.canvasGeometries.numViews=1,r(this.canvasGeometries.extents[0],this._extent)}hasSomeSizedView(){for(let e=0;e<this.canvasGeometries.numViews;e++){const t=this.canvasGeometries.extents[e];if(t[0]!==t[2]&&t[1]!==t[3])return!0}return!1}applyViewport(e){e.setViewport(this.index===i.INNER?0:this.resolution,0,this.resolution,this.resolution)}}class g{constructor(){this.extents=[e(),e(),e()],this.numViews=0}}export{h as Overlay,n as OverlaySource};
5
+ import{create as e,offset as t,copy as r}from"../../../geometry/support/aaBoundingRect.js";import{RenderTargetType as s,OverlayIndex as i}from"./interfaces.js";import{ValidationState as a}from"../webgl-engine/lib/basicInterfaces.js";import{fromValues as o}from"../webgl-engine/lib/LocalOriginFactory.js";var n;!function(e){e[e.None=0]="None",e[e.ColorAndWater=1]="ColorAndWater",e[e.Highlight=2]="Highlight",e[e.Occluded=3]="Occluded",e[e.ObjectAndLayerIdColor=4]="ObjectAndLayerIdColor"}(n||(n={}));const h=1.3;class g{get extent(){return this._extent}constructor(t,r){this.index=t,this.renderTargets=r,this._extent=e(),this.resolution=0,this.renderLocalOrigin=o(0,0,0,"O"),this.pixelRatio=1,this.mapUnitsPerPixel=1,this.canvasGeometries=new l,this.hasDrapedFeatureSource=!1,this.hasDrapedRasterSource=!1,this.hasTargetWithoutRasterImage=!1,this.index=t,this.validTargets=new Array(r.renderTargets.length).fill(!1)}getValidTexture(e){return this.validTargets[e]?this.renderTargets.getTarget(e).getTexture():null}get _needsColorWithoutRasterImage(){return this.hasDrapedRasterSource&&this.hasDrapedFeatureSource&&this.hasTargetWithoutRasterImage}getColorTexture(e){const t=e===n.ColorAndWater?this.renderTargets.getTarget(s.Color):e===n.Highlight?this.renderTargets.getTarget(s.Highlight):e===n.ObjectAndLayerIdColor?this.renderTargets.getTarget(s.ObjectAndLayerIdColor):this.renderTargets.getTarget(s.Occluded);return t?t.getTexture():null}getColorTextureNoRasterImage(){return this._needsColorWithoutRasterImage?this.getValidTexture(s.ColorNoRasterImage):this.hasDrapedFeatureSource?this.getValidTexture(s.Color):null}getNormalTexture(e){const t=e===n.ColorAndWater?this.renderTargets.getTarget(s.Water):null;return t?t.getTexture():null}draw(e,t){const r=this.computeRenderTargetValidityBitfield();for(const i of this.renderTargets.renderTargets)i.type!==s.ColorNoRasterImage||this._needsColorWithoutRasterImage?this.validTargets[i.type]=e.drawTarget(this,i,t):this.validTargets[i.type]=!1;return r^this.computeRenderTargetValidityBitfield()?a.CHANGED:a.UNCHANGED}computeRenderTargetValidityBitfield(){const e=this.validTargets;return+e[s.Color]|+e[s.ColorNoRasterImage]<<1|+e[s.Highlight]<<2|+e[s.Water]<<3|+e[s.Occluded]<<4}setupGeometryViewsCyclical(e){this.setupGeometryViewsDirect();const r=.001*e.range;if(this._extent[0]-r<=e.min){const r=this.canvasGeometries.extents[this.canvasGeometries.numViews++];t(this._extent,e.range,0,r)}if(this._extent[2]+r>=e.max){const r=this.canvasGeometries.extents[this.canvasGeometries.numViews++];t(this._extent,-e.range,0,r)}}setupGeometryViewsDirect(){this.canvasGeometries.numViews=1,r(this.canvasGeometries.extents[0],this._extent)}hasSomeSizedView(){for(let e=0;e<this.canvasGeometries.numViews;e++){const t=this.canvasGeometries.extents[e];if(t[0]!==t[2]&&t[1]!==t[3])return!0}return!1}applyViewport(e){e.setViewport(this.index===i.INNER?0:this.resolution,0,this.resolution,this.resolution)}}class l{constructor(){this.extents=[e(),e(),e()],this.numViews=0}}export{g as Overlay,n as OverlaySource,h as OverlayStretch};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{Cyclical as r,cyclicalPI as s}from"../../../core/Cyclical.js";import i from"../../../core/Handles.js";import has from"../../../core/has.js";import{nextHighestPowerOfTwo as a,clamp as n,deg2rad as o}from"../../../core/mathUtils.js";import{destroyMaybe as l}from"../../../core/maybe.js";import{watch as h,sync as c}from"../../../core/reactiveUtils.js";import{Milliseconds as d}from"../../../core/time.js";import{property as u}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as p}from"../../../core/accessorSupport/decorators/subclass.js";import{a as _}from"../../../chunks/vec2.js";import{a as m,b as y,z as g,c as v,i as f}from"../../../chunks/vec3.js";import{c as R}from"../../../chunks/vec3f64.js";import{t as O,b as T,a as w}from"../../../chunks/vec4.js";import{c as x,f as D}from"../../../chunks/vec4f64.js";import{getReferenceEllipsoid as S}from"../../../geometry/ellipsoidUtils.js";import{projectVectorToVector as E}from"../../../geometry/projection.js";import{create as P,width as C,copy as M,center as U,height as b,intersection as I,contains as N,intersects as j,offset as A}from"../../../geometry/support/aaBoundingRect.js";import{create as G,wrap as k}from"../../../geometry/support/ray.js";import{b as L,e as H,t as q}from"../../../chunks/sphere.js";import{angleAroundAxis as B}from"../../../geometry/support/vector.js";import{y2lat as F}from"../../../geometry/support/webMercatorUtils.js";import{viewAngle as V}from"../state/utils/viewUtils.js";import z from"../support/debugFlags.js";import{PointGraphics as W}from"../support/debugUtils.js";import{OverlayIndex as Y}from"./interfaces.js";import{OverlayRenderer as X}from"./OverlayRenderer.js";import{RenderRequestType as K,ValidationState as Z}from"../webgl-engine/lib/basicInterfaces.js";import{newIntersector as J}from"../webgl-engine/lib/Intersector.js";import{fromValues as Q}from"../webgl-engine/lib/LocalOriginFactory.js";import{UpdateParameters as $}from"../webgl-engine/lib/Material.js";import{SortedRenderGeometryRenderer as ee}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{removeLoadedShaderModules as te}from"../webgl-engine/parts/requireUtils.js";import{TaskPriority as re,noBudget as se,Task as ie}from"../../support/Scheduler.js";const ae=[[-.1,-2,3.9,2],[-.1,-3.9,3.9,.1],[-2,-3.9,2,.1],[-3.9,-3.9,.1,.1],[-3.9,-2,.1,2],[-3.9,-.1,.1,3.9],[-2,-.1,2,3.9],[-.1,-.1,3.9,3.9]];let ne,oe=class extends t{get running(){return this._placementDirty&&(this._drapeSources.size>0||this.view.graphics.length>0||z.OVERLAY_DRAW_DEBUG_TEXTURE)&&!!this._spatialReference&&!this.suspended&&this.surface.ready}get _isSpherical(){return this.view.state.isGlobal}get _worldToPCSRatio(){return null!=this._spatialReference&&this._spatialReference.isGeographic&&!this.view.state.isLocal?S(this._spatialReference).metersPerDegree:1}get suspended(){return this.surface.suspended}get updating(){return this.running||this.renderer.updating||this._contentUpdated}get hasHighlights(){return this.renderer.hasHighlights}get rendersOccluded(){return this.renderer.rendersOccluded}constructor(e){super(e),this._handles=new i,this._spatialReference=null,this._renderSR=null,this._overlaySREqualsRenderSR=!0,this._drapeSources=new Set,this._drapeTargets=new Set,this._placementDirty=!1,this._contentUpdated=!1,this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1,this._hasUnusedRenderTargets=!1,this._longitudeCyclical=null,this._latestOriginId=0,this._maxResolution=has("esri-mobile")?2048:4096,this._animationTimeLast=0,this._removeRenderOverlayCallback=()=>{}}initialize(){const e=this.view;this.renderer=new X({view:e,worldToPCSRatio:this._worldToPCSRatio,spatialReference:this._spatialReference});const t=()=>this.setDrawTexturesDirty();this._groundIntersector=J(this.view.state.viewingMode),this._groundIntersector.options.backfacesTerrain=!0,this._groundIntersector.options.invisibleTerrain=!0,this._groundIntersector.options.hud=!1,this._handles.add([this.renderer.events.on("has-highlights",(()=>{t(),this.notifyChange("hasHighlights")})),this.renderer.events.on("has-water",(t=>e._stage?.renderer.setParameters({hasOverlayWater:t}))),this.renderer.events.on("renders-occluded",(()=>{t(),this.notifyChange("rendersOccluded")})),this.renderer.events.on("content-changed",t),h((()=>e.state.camera.pixelRatio),t),h((()=>e.state.alignPixelEnabled),t),this.renderer.events.on("textures-disposed",(()=>this.updateOverlayResult())),h((()=>[e.pointsOfInterest?.renderPointOfView,e.pointsOfInterest?.centerOnSurfaceFrequent?.location]),(()=>this.setPlacementDirty())),h((()=>[e.state?.pixelRatio,e.state?.contentPixelRatio]),(()=>this.setPlacementDirty()),c),this.surface.on("elevation-change",(()=>this.setPlacementDirty())),e.on("resize",(()=>this.setPlacementDirty())),e.resourceController.scheduler.registerTask(re.OVERLAY,this),e._stage.renderView.events.on("force-camera-for-screenshot",(e=>{this._updateOverlays(se,e.camera,K.BACKGROUND),this.renderer.hasOverlays&&this._drawOverlayTextures(this.renderer.overlays,K.BACKGROUND,e)}))]);let r=e=>this._renderOverlayCallback(e);this._removeRenderOverlayCallback=()=>{r=()=>{}},e._stage?.renderer.setParameters({renderOverlay:e=>r(e)})}_renderOverlayCallback(e){this._contentUpdated=!1;const t=this.renderer;t.processSyncDrapeSources(),t.hasOverlays&&(this._dispatchAnimationUpdate(e),this._drawOverlayTextures(t.overlays,K.UPDATE,this.view.state)),this._hasUnusedRenderTargets&&this._collectUnusedRenderTargetMemory()}destroy(){this._handles=l(this._handles),this._removeRenderOverlayCallback(),this.view?._stage?.renderer.setParameters({renderOverlay:()=>{}}),null!=ne&&(ne.hide(),ne=null)}get hasOverlays(){return this.renderer.hasOverlays}setSpatialReference(e){this._spatialReference=e,this.renderer.spatialReference=e,this._longitudeCyclical=null;const t=this.view.renderSpatialReference;null!=e&&null!=t?(this._renderSR=t,this._overlaySREqualsRenderSR=e.equals(this._renderSR),this._isSpherical&&(this._longitudeCyclical=e.isWebMercator?new r(-20037508.342787,20037508.342787):new r(-180,180),this.renderer.longitudeCyclical=this._longitudeCyclical),this.renderer&&(this.renderer.worldToPCSRatio=this._worldToPCSRatio)):this.renderer.disposeOverlays()}get gpuMemoryUsage(){return this.renderer.gpuMemoryUsage}registerDrapeSource(e,t,r){this._drapeSources.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const s=this.renderer.createDrapeSourceRenderer(e,t,r);return this._updateDrapeSourceExtent(e),this._setContentDirty(),this.notifyChange("running"),s}registerGeometryDrapeSource(e){return this.registerDrapeSource(e,ee)}_updateDrapeSourceExtent(e){2===this.renderer.overlays.length&&null!=e.setDrapingExtent&&null!=this._spatialReference&&e.setDrapingExtent(this.renderer.overlays,this._spatialReference)}unregisterDrapeSource(e){this._drapeSources.has(e)&&(this._drapeSources.delete(e),this.renderer.removeDrapeSourceRenderer(e),this.renderer.ensureDrapeSources(this._drapeSources),this._setContentDirty(),this.notifyChange("running"))}registerDrapeTarget(e){this._drapeTargets.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources)}updateOverlayResult(){this.view._stage?.renderer.setParameters({overlays:this.renderer.overlays})}unregisterDrapeTarget(e){this._drapeTargets.delete(e),this.renderer.ensureDrapeTargets(this._drapeTargets)}_setContentDirty(){this.setPlacementDirty(),this.setDrawTexturesDirty()}setPlacementDirty(){this._placementDirty=!0}runTask(e){return this._updateOverlays(e,this.view.state.contentCamera,K.UPDATE)}_updateOverlays(e,t,r){if(!this._spatialReference)return ie.YIELD;const s=this._computeOverlayResolution(t);this._computeOverlayExtents(t,s,de);const i=C(de.inner)/C(de.outer);this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const a=this._updateOverlay(Y.INNER,de.inner,s,1*de.pixelRatioAdjustment,de.mapUnitsPerPixel),n=this._updateOverlay(Y.OUTER,de.outer,s,i*de.pixelRatioAdjustment,de.mapUnitsPerPixel);a!==me.EXTENT&&n!==me.EXTENT||(this._drapeSources.forEach((e=>this._updateDrapeSourceExtent(e))),this.surface.updateTileOverlayParams(r)),a===me.NONE&&n===me.NONE||this.setDrawTexturesDirty(),this._placementDirty=!1,e.madeProgress()}_computeOverlayResolution(e){const t=this.view.state.contentPixelRatio,r=e.fullWidth/e.pixelRatio*t,s=e.fullHeight/e.pixelRatio*t;return Math.min(a(Math.max(r,s)+256),this._maxResolution)}_updateOverlay(e,t,r,s,i){if(0===this.renderer.overlays.length)return me.NONE;const a=this.renderer.overlays[e],n=a.mapUnitsPerPixel;if(a.mapUnitsPerPixel=i,a.pixelRatio=s,le(t,a.extent)&&r===a.resolution)return n===i?me.NONE:me.RERENDER_ONLY;M(a.extent,t),a.resolution=r;const o=U(a.extent);return a.renderLocalOrigin=Q(o[0],o[1],0,"OV_"+this._latestOriginId++),me.EXTENT}setTileParameters(e){const t=e.renderData.overlay;if(this.renderer.overlays.length>0){const r=this.renderer.overlays[Y.INNER],s=this.renderer.overlays[Y.OUTER],i=e.extent;this._rectInsideRect(r.extent,i)||this._rectanglesOverlap(i,r.extent)||this._rectanglesOverlap(i,s.extent)?(this._setTileOverlayData(i,Y.INNER,t),this._setTileOverlayData(i,Y.OUTER,t)):(this._clearTileOverlayData(Y.INNER,t),this._clearTileOverlayData(Y.OUTER,t))}else this._clearTileOverlayData(Y.INNER,t),this._clearTileOverlayData(Y.OUTER,t)}overlayPixelSizeInMapUnits(e){if(0===this.renderer.overlays.length)return 0;const t=this.renderer.overlays[Y.INNER],r=this.renderer.overlays[Y.OUTER],s=this._pointIsInExtent(e,t.extent)?t:r;return(s.extent[2]-s.extent[0])/s.resolution}_setTileOverlayData(e,t,r){if(0===this.renderer.overlays.length)return;const s=this.renderer.overlays[t].extent,i=C(s),a=b(s);let n=e[0];if(this._longitudeCyclical){n=this._longitudeCyclical.minimalMonotonic(s[0],n);const t=this._longitudeCyclical.minimalMonotonic(s[0],e[2]);n>t&&(n=t-(e[2]-e[0]))}r.setScale(t,C(e)/i,b(e)/a),r.setOffset(t,(n-s[0])/i,(e[1]-s[1])/a)}_clearTileOverlayData(e,t){t.setScale(e,-1,-1),t.setOffset(e,-1,-1)}async reloadShaders(){te(),await this.renderer.reloadShaders(),this.setDrawTexturesDirty(),this.runTask(se)}_dispatchAnimationUpdate(e){const t=d(e-this._animationTimeLast);if(t>=this.surface.view._stage.renderer.animationTimestep||null!=this.view.state.forcedAnimationTime||this._drawTexturesDirty||this._drawTexturesAnimateDirty){const r=d(t/this.surface.view._stage.renderer.animationTimeDilation),s=new $(this.view.state.camera,r,this.view.state.forcedAnimationTime);this.renderer.updateAnimation(s)&&(this._drawTexturesAnimateDirty=!0),this._animationTimeLast=e}}setDrawTexturesDirty(){this.renderer.hasOverlays?(this._contentUpdated=!0,this._drawTexturesDirty=!0,this.view._stage.renderView.requestRender()):this.setPlacementDirty()}_intersectGroundFromView(e,t,r,s){const i=this.view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(e,_e,t,r);if(null==i)return!1;const a=i.origin,n=m(ce,i.origin,i.direction);return this._groundIntersector.reset(a,n,e),this._groundIntersector.intersect([]),this.view.basemapTerrain.intersect(this._groundIntersector,null,a,n),this._groundIntersector.results.min.getIntersectionPoint(s)}_findHorizonBasedPointOfInterest(e,t){let r=.5;const i=.55,a=this.view.renderCoordsHelper.getAltitude(e.eye),o=this.view.pointsOfInterest.centerOnSurfaceFrequent,l=1e-5,h=n(o.estimatedSurfaceAltitude,e.aboveGround?-1/0:a+l,e.aboveGround?a-l:1/0),c=e.aboveGround;if("global"===this.view.viewingMode){const t=ce;L(H(q,S(this.view.spatialReference).radius+h),k(e.eye,e.viewForward),t),y(t,t,e.eye);const a=s.normalize(B(e.viewForward,t,e.viewRight))/e.fovY+.5,n=a<=0||a>=1?.5:i;r=c?n*a:a+n*(1-a)}else{const t=.5*Math.PI-Math.acos(-e.viewForward[2]),s=Math.tan(t),a=D(0,s,1,0),o=O(a,a,e.projectionMatrix)[1],l=n(.5+.5*o,0,1);r=1===l||0===l?.5:c?l*i:1-(1-l)*i}return!!this._intersectGroundFromView(e,.5,r,t)&&g(t,e.eye)<o.distance*o.distance}_computeOverlayExtents(e,t,r){const s=this.view.pointsOfInterest.centerOnSurfaceFrequent.renderLocation,i=R();this._findHorizonBasedPointOfInterest(e,i)||v(i,s);const a=Math.max(.1,f(e.eye,i)),n=V(this.view.renderCoordsHelper,s,e.eye),l=Math.PI/2-Math.abs(n-Math.PI/2);z.OVERLAY_SHOW_CENTER?(null==ne&&(ne=new W(this.view.graphics,"red")),ne.show(i,this._renderSR)):null!=ne&&ne.hide(),this._overlaySREqualsRenderSR||E(i,this._renderSR,i,this._spatialReference);const h=this.surface.extent,c=!this._isSpherical&&null!=this._spatialReference&&this._spatialReference.isGeographic,d=c&&null!=this._spatialReference?1/S(this._spatialReference).metersPerDegree:1,u=this.view.state.contentPixelRatio,p=e.perScreenPixelRatio/u*a*d;r.mapUnitsPerPixel=p/this._worldToPCSRatio;let m=t*p/2,y=!1,g=c?90:1/0;this._isSpherical&&null!=h&&null!=this._spatialReference&&(this._spatialReference.isWebMercator?(m/=Math.cos(F(i[1])),g=h[3]):(y=!0,m/=S(this._spatialReference).metersPerDegree,g=90),m>=g&&(m=g,i[1]=0,this._spatialReference.isWebMercator&&(i[0]=0)));let O=1;y&&(O=1/Math.max(.2,Math.cos(Math.abs(o(i[1])))),m*O>180&&(O=180/m),r.mapUnitsPerPixel*=O);const x=Math.log(2)/12;m=Math.exp(Math.round(Math.log(m)/x)*x);const D=m*O,P=32,U=.5*t/(P*D),b=.5*t/(P*m);i[0]=Math.round(i[0]*U)/U,i[1]=Math.round(i[1]*b)/b;const j=r.inner;j[0]=i[0]-D,j[1]=i[1]-m,j[2]=i[0]+D,j[3]=i[1]+m,this._isSpherical&&this._shiftExtentToFitBounds(j,1/0,g);const A=r.outer;if(6*D>C(h))M(A,h);else if(l<=.25*Math.PI)A[0]=j[0]-D,A[1]=j[1]-m,A[2]=j[2]+D,A[3]=j[3]+m;else{E(e.eye,this._renderSR,ce,this._spatialReference),_(he,i,ce);let t=-Math.atan2(he[1],he[0])+.125*Math.PI;t<0&&(t+=2*Math.PI);const r=Math.floor(t/(.25*Math.PI));T(he,ae[r],2*m),he[0]*=O,he[2]*=O,w(A,j,he)}if(this._isSpherical)A[0]=this._longitudeCyclical.clamp(A[0]),A[2]=this._longitudeCyclical.clamp(A[2]),A[1]=Math.max(A[1],-g),A[3]=Math.min(A[3],g);else{const e=I(j,h,ue),t=I(A,h,pe);N(e,t)&&(A[2]=A[0],A[3]=A[1])}const G=Math.abs(j[2]-j[0])/t;r.mapUnitsPerPixel=Math.max(r.mapUnitsPerPixel,G),r.pixelRatioAdjustment=r.mapUnitsPerPixel/G}_drawOverlayTextures(e,t,r){if(0===e.length||!this._drawTexturesDirty&&!this._drawTexturesAnimateDirty)return;const s=this._drawTexturesDirty;this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1;const i=this._drawOverlay(e[Y.INNER],r),a=this._drawOverlay(e[Y.OUTER],r);i!==Z.CHANGED&&a!==Z.CHANGED||this.surface.updateTileOverlayParams(K.UPDATE),this._collectUnusedRenderTargetMemory(),this.updateOverlayResult(),s?(this.surface.requestRender(t),t===K.UPDATE&&this.surface.requestUpdate()):this.surface.requestRender(K.BACKGROUND)}_drawOverlay(e,t){return this._longitudeCyclical?e.setupGeometryViewsCyclical(this._longitudeCyclical):e.setupGeometryViewsDirect(),e.draw(this.renderer,t)}_collectUnusedRenderTargetMemory(){if(this._hasUnusedRenderTargets=!1,this.renderer.hasOverlays){const e=performance.now();this._hasUnusedRenderTargets=this.renderer.collectUnusedRenderTargetMemory(e)}}_rectanglesOverlap(e,t){return null!=e&&(this._longitudeCyclical?(this._longitudeCyclical.contains(t[0],t[2],e[0])||this._longitudeCyclical.contains(t[0],t[2],e[2])||this._longitudeCyclical.contains(e[0],e[2],t[0]))&&!(e[1]>t[3]||e[3]<t[1]):j(e,t))}_rectInsideRect(e,t){return null!=t&&(this._longitudeCyclical?this._longitudeCyclical.contains(e[0],e[2],t[0])&&this._longitudeCyclical.contains(e[0],e[2],t[2])&&t[1]>e[1]&&t[3]<e[3]:N(e,t))}_pointIsInExtent(e,t){if(this._longitudeCyclical)return this._longitudeCyclical.contains(t[0],t[2],e.x)&&e.y>=t[1]&&e.y<=t[3];const r=e.x,s=e.y;return r>t[0]&&r<t[2]&&s>t[1]&&s<t[3]}_shiftExtentToFitBounds(e,t,r){let s=0,i=0;e[0]<-t?s=e[0]+t:e[2]>t&&(s=t-e[2]),e[1]<-r?i=e[1]+r:e[3]>r&&(i=r-e[3]),A(e,s,i)}get test(){return{renderer:this.renderer,update:()=>this.runTask(se)}}};function le(e,t){const r=1e-5,s=z.TESTS_DISABLE_OPTIMIZATIONS?0:r*Math.max(e[2]-e[0],e[3]-e[1],t[2]-t[0],t[3]-t[1]);return Math.abs(t[0]-e[0])<=s&&Math.abs(t[1]-e[1])<=s&&Math.abs(t[2]-e[2])<=s&&Math.abs(t[3]-e[3])<=s}e([u()],oe.prototype,"_spatialReference",void 0),e([u({readOnly:!0})],oe.prototype,"running",null),e([u()],oe.prototype,"_placementDirty",void 0),e([u()],oe.prototype,"_contentUpdated",void 0),e([u()],oe.prototype,"_isSpherical",null),e([u()],oe.prototype,"_worldToPCSRatio",null),e([u({autoDestroy:!0})],oe.prototype,"renderer",void 0),e([u({constructOnly:!0})],oe.prototype,"view",void 0),e([u({constructOnly:!0})],oe.prototype,"surface",void 0),e([u()],oe.prototype,"suspended",null),e([u()],oe.prototype,"updating",null),e([u({type:Boolean})],oe.prototype,"hasHighlights",null),e([u({type:Boolean})],oe.prototype,"rendersOccluded",null),oe=e([p("esri.views.3d.terrain.OverlayManager")],oe);const he=x(),ce=R(),de={inner:P(),outer:P(),mapUnitsPerPixel:0,pixelRatioAdjustment:1},ue=P(),pe=P(),_e=G();var me;!function(e){e[e.NONE=0]="NONE",e[e.EXTENT=1]="EXTENT",e[e.RERENDER_ONLY=2]="RERENDER_ONLY"}(me||(me={}));export{oe as OverlayManager};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{Cyclical as r,cyclicalPI as s}from"../../../core/Cyclical.js";import i from"../../../core/Handles.js";import has from"../../../core/has.js";import{clamp as a,deg2rad as n}from"../../../core/mathUtils.js";import{destroyMaybe as o}from"../../../core/maybe.js";import{watch as l,sync as h}from"../../../core/reactiveUtils.js";import{Milliseconds as c}from"../../../core/time.js";import{property as d}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as u}from"../../../core/accessorSupport/decorators/subclass.js";import{a as p}from"../../../chunks/vec2.js";import{a as _,b as m,z as y,c as g,i as v}from"../../../chunks/vec3.js";import{c as f}from"../../../chunks/vec3f64.js";import{t as R,b as O,a as T}from"../../../chunks/vec4.js";import{c as w,f as x}from"../../../chunks/vec4f64.js";import{getReferenceEllipsoid as D}from"../../../geometry/ellipsoidUtils.js";import{projectVectorToVector as S}from"../../../geometry/projection.js";import{create as E,width as P,copy as M,center as U,height as C,intersection as b,contains as I,intersects as j,offset as N}from"../../../geometry/support/aaBoundingRect.js";import{create as A,wrap as G}from"../../../geometry/support/ray.js";import{b as k,e as L,t as H}from"../../../chunks/sphere.js";import{angleAroundAxis as q}from"../../../geometry/support/vector.js";import{y2lat as B}from"../../../geometry/support/webMercatorUtils.js";import{viewAngle as F}from"../state/utils/viewUtils.js";import V from"../support/debugFlags.js";import{PointGraphics as z}from"../support/debugUtils.js";import{OverlayIndex as W}from"./interfaces.js";import{OverlayStretch as Y}from"./Overlay.js";import{OverlayRenderer as X}from"./OverlayRenderer.js";import{RenderRequestType as K,ValidationState as Z}from"../webgl-engine/lib/basicInterfaces.js";import{newIntersector as J}from"../webgl-engine/lib/Intersector.js";import{fromValues as Q}from"../webgl-engine/lib/LocalOriginFactory.js";import{UpdateParameters as $}from"../webgl-engine/lib/Material.js";import{SortedRenderGeometryRenderer as ee}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{applyTextureResizeModulo as te}from"../webgl-engine/lib/textureUtils.js";import{removeLoadedShaderModules as re}from"../webgl-engine/parts/requireUtils.js";import{TaskPriority as se,noBudget as ie,Task as ae}from"../../support/Scheduler.js";const ne=[[-.1,-2,3.9,2],[-.1,-3.9,3.9,.1],[-2,-3.9,2,.1],[-3.9,-3.9,.1,.1],[-3.9,-2,.1,2],[-3.9,-.1,.1,3.9],[-2,-.1,2,3.9],[-.1,-.1,3.9,3.9]];let oe,le=class extends t{get running(){return this._placementDirty&&(this._drapeSources.size>0||this.view.graphics.length>0||V.OVERLAY_DRAW_DEBUG_TEXTURE)&&!!this._spatialReference&&!this.suspended&&this.surface.ready}get _isSpherical(){return this.view.state.isGlobal}get _worldToPCSRatio(){return null!=this._spatialReference&&this._spatialReference.isGeographic&&!this.view.state.isLocal?D(this._spatialReference).metersPerDegree:1}get suspended(){return this.surface.suspended}get updating(){return this.running||this.renderer.updating||this._contentUpdated}get hasHighlights(){return this.renderer.hasHighlights}get rendersOccluded(){return this.renderer.rendersOccluded}constructor(e){super(e),this._handles=new i,this._spatialReference=null,this._renderSR=null,this._overlaySREqualsRenderSR=!0,this._drapeSources=new Set,this._drapeTargets=new Set,this._placementDirty=!1,this._contentUpdated=!1,this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1,this._hasUnusedRenderTargets=!1,this._longitudeCyclical=null,this._latestOriginId=0,this._maxResolution=has("esri-mobile")?2048:4096,this._animationTimeLast=0,this._removeRenderOverlayCallback=()=>{}}initialize(){const e=this.view;this.renderer=new X({view:e,worldToPCSRatio:this._worldToPCSRatio,spatialReference:this._spatialReference});const t=()=>this.setDrawTexturesDirty();this._groundIntersector=J(this.view.state.viewingMode),this._groundIntersector.options.backfacesTerrain=!0,this._groundIntersector.options.invisibleTerrain=!0,this._groundIntersector.options.hud=!1,this._handles.add([this.renderer.events.on("has-highlights",(()=>{t(),this.notifyChange("hasHighlights")})),this.renderer.events.on("has-water",(t=>e._stage?.renderer.setParameters({hasOverlayWater:t}))),this.renderer.events.on("renders-occluded",(()=>{t(),this.notifyChange("rendersOccluded")})),this.renderer.events.on("content-changed",t),l((()=>e.state.camera.pixelRatio),t),l((()=>e.state.alignPixelEnabled),t),this.renderer.events.on("textures-disposed",(()=>this.updateOverlayResult())),l((()=>[e.pointsOfInterest?.renderPointOfView,e.pointsOfInterest?.centerOnSurfaceFrequent?.location]),(()=>this.setPlacementDirty())),l((()=>[e.state?.pixelRatio,e.state?.contentPixelRatio]),(()=>this.setPlacementDirty()),h),this.surface.on("elevation-change",(()=>this.setPlacementDirty())),e.on("resize",(()=>this.setPlacementDirty())),e.resourceController.scheduler.registerTask(se.OVERLAY,this),e._stage.renderView.events.on("force-camera-for-screenshot",(e=>{this._updateOverlays(ie,e.camera,K.BACKGROUND),this.renderer.hasOverlays&&this._drawOverlayTextures(this.renderer.overlays,K.BACKGROUND,e)}))]);let r=e=>this._renderOverlayCallback(e);this._removeRenderOverlayCallback=()=>{r=()=>{}},e._stage?.renderer.setParameters({renderOverlay:e=>r(e)})}_renderOverlayCallback(e){this._contentUpdated=!1;const t=this.renderer;t.processSyncDrapeSources(),t.hasOverlays&&(this._dispatchAnimationUpdate(e),this._drawOverlayTextures(t.overlays,K.UPDATE,this.view.state)),this._hasUnusedRenderTargets&&this._collectUnusedRenderTargetMemory()}destroy(){this._handles=o(this._handles),this._removeRenderOverlayCallback(),this.view?._stage?.renderer.setParameters({renderOverlay:()=>{}}),null!=oe&&(oe.hide(),oe=null)}get hasOverlays(){return this.renderer.hasOverlays}setSpatialReference(e){this._spatialReference=e,this.renderer.spatialReference=e,this._longitudeCyclical=null;const t=this.view.renderSpatialReference;null!=e&&null!=t?(this._renderSR=t,this._overlaySREqualsRenderSR=e.equals(this._renderSR),this._isSpherical&&(this._longitudeCyclical=e.isWebMercator?new r(-20037508.342787,20037508.342787):new r(-180,180),this.renderer.longitudeCyclical=this._longitudeCyclical),this.renderer&&(this.renderer.worldToPCSRatio=this._worldToPCSRatio)):this.renderer.disposeOverlays()}get gpuMemoryUsage(){return this.renderer.gpuMemoryUsage}registerDrapeSource(e,t,r){this._drapeSources.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const s=this.renderer.createDrapeSourceRenderer(e,t,r);return this._updateDrapeSourceExtent(e),this._setContentDirty(),this.notifyChange("running"),s}registerGeometryDrapeSource(e){return this.registerDrapeSource(e,ee)}_updateDrapeSourceExtent(e){2===this.renderer.overlays.length&&null!=e.setDrapingExtent&&null!=this._spatialReference&&e.setDrapingExtent(this.renderer.overlays,this._spatialReference)}unregisterDrapeSource(e){this._drapeSources.has(e)&&(this._drapeSources.delete(e),this.renderer.removeDrapeSourceRenderer(e),this.renderer.ensureDrapeSources(this._drapeSources),this._setContentDirty(),this.notifyChange("running"))}registerDrapeTarget(e){this._drapeTargets.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources)}updateOverlayResult(){this.view._stage?.renderer.setParameters({overlays:this.renderer.overlays})}unregisterDrapeTarget(e){this._drapeTargets.delete(e),this.renderer.ensureDrapeTargets(this._drapeTargets)}_setContentDirty(){this.setPlacementDirty(),this.setDrawTexturesDirty()}setPlacementDirty(){this._placementDirty=!0}runTask(e){return this._updateOverlays(e,this.view.state.contentCamera,K.UPDATE)}_updateOverlays(e,t,r){if(!this._spatialReference)return ae.YIELD;const s=this._computeOverlayResolution(t);this._computeOverlayExtents(t,s,ue);const i=P(ue.inner)/P(ue.outer);this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const a=this._updateOverlay(W.INNER,ue.inner,s,1*ue.pixelRatioAdjustment,ue.mapUnitsPerPixel),n=this._updateOverlay(W.OUTER,ue.outer,s,i*ue.pixelRatioAdjustment,ue.mapUnitsPerPixel);a!==ye.EXTENT&&n!==ye.EXTENT||(this._drapeSources.forEach((e=>this._updateDrapeSourceExtent(e))),this.surface.updateTileOverlayParams(r)),a===ye.NONE&&n===ye.NONE||this.setDrawTexturesDirty(),this._placementDirty=!1,e.madeProgress()}_computeOverlayResolution(e){const t=this.view.state.contentPixelRatio,r=e.fullWidth/e.pixelRatio*t,s=e.fullHeight/e.pixelRatio*t,i=Math.ceil(1.5*Math.max(r,s));return Math.min(te(i),this._maxResolution)}_updateOverlay(e,t,r,s,i){if(0===this.renderer.overlays.length)return ye.NONE;const a=this.renderer.overlays[e],n=a.mapUnitsPerPixel;if(a.mapUnitsPerPixel=i,a.pixelRatio=s,he(t,a.extent)&&r===a.resolution)return n===i?ye.NONE:ye.RERENDER_ONLY;M(a.extent,t),a.resolution=r;const o=U(a.extent);return a.renderLocalOrigin=Q(o[0],o[1],0,"OV_"+this._latestOriginId++),ye.EXTENT}setTileParameters(e){const t=e.renderData.overlay;if(this.renderer.overlays.length>0){const r=this.renderer.overlays[W.INNER],s=this.renderer.overlays[W.OUTER],i=e.extent;this._rectInsideRect(r.extent,i)||this._rectanglesOverlap(i,r.extent)||this._rectanglesOverlap(i,s.extent)?(this._setTileOverlayData(i,W.INNER,t),this._setTileOverlayData(i,W.OUTER,t)):(this._clearTileOverlayData(W.INNER,t),this._clearTileOverlayData(W.OUTER,t))}else this._clearTileOverlayData(W.INNER,t),this._clearTileOverlayData(W.OUTER,t)}overlayPixelSizeInMapUnits(e){if(0===this.renderer.overlays.length)return 0;const t=this.renderer.overlays[W.INNER],r=this.renderer.overlays[W.OUTER],s=this._pointIsInExtent(e,t.extent)?t:r;return(s.extent[2]-s.extent[0])/s.resolution}_setTileOverlayData(e,t,r){if(0===this.renderer.overlays.length)return;const s=this.renderer.overlays[t].extent,i=P(s),a=C(s);let n=e[0];if(this._longitudeCyclical){n=this._longitudeCyclical.minimalMonotonic(s[0],n);const t=this._longitudeCyclical.minimalMonotonic(s[0],e[2]);n>t&&(n=t-(e[2]-e[0]))}r.setScale(t,P(e)/i,C(e)/a),r.setOffset(t,(n-s[0])/i,(e[1]-s[1])/a)}_clearTileOverlayData(e,t){t.setScale(e,-1,-1),t.setOffset(e,-1,-1)}async reloadShaders(){re(),await this.renderer.reloadShaders(),this.setDrawTexturesDirty(),this.runTask(ie)}_dispatchAnimationUpdate(e){const t=c(e-this._animationTimeLast);if(t>=this.surface.view._stage.renderer.animationTimestep||null!=this.view.state.forcedAnimationTime||this._drawTexturesDirty||this._drawTexturesAnimateDirty){const r=c(t/this.surface.view._stage.renderer.animationTimeDilation),s=new $(this.view.state.camera,r,this.view.state.forcedAnimationTime);this.renderer.updateAnimation(s)&&(this._drawTexturesAnimateDirty=!0),this._animationTimeLast=e}}setDrawTexturesDirty(){this.renderer.hasOverlays?(this._contentUpdated=!0,this._drawTexturesDirty=!0,this.view._stage.renderView.requestRender()):this.setPlacementDirty()}_intersectGroundFromView(e,t,r,s){const i=this.view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(e,me,t,r);if(null==i)return!1;const a=i.origin,n=_(de,i.origin,i.direction);return this._groundIntersector.reset(a,n,e),this._groundIntersector.intersect([]),this.view.basemapTerrain.intersect(this._groundIntersector,null,a,n),this._groundIntersector.results.min.getIntersectionPoint(s)}_findHorizonBasedPointOfInterest(e,t){let r=.5;const i=.55,n=this.view.renderCoordsHelper.getAltitude(e.eye),o=this.view.pointsOfInterest.centerOnSurfaceFrequent,l=1e-5,h=a(o.estimatedSurfaceAltitude,e.aboveGround?-1/0:n+l,e.aboveGround?n-l:1/0),c=e.aboveGround;if("global"===this.view.viewingMode){const t=de;k(L(H,D(this.view.spatialReference).radius+h),G(e.eye,e.viewForward),t),m(t,t,e.eye);const a=s.normalize(q(e.viewForward,t,e.viewRight))/e.fovY+.5,n=a<=0||a>=1?.5:i;r=c?n*a:a+n*(1-a)}else{const t=.5*Math.PI-Math.acos(-e.viewForward[2]),s=Math.tan(t),n=x(0,s,1,0),o=R(n,n,e.projectionMatrix)[1],l=a(.5+.5*o,0,1);r=1===l||0===l?.5:c?l*i:1-(1-l)*i}return!!this._intersectGroundFromView(e,.5,r,t)&&y(t,e.eye)<o.distance*o.distance}_computeOverlayExtents(e,t,r){const s=this.view.pointsOfInterest.centerOnSurfaceFrequent.renderLocation,i=f();this._findHorizonBasedPointOfInterest(e,i)||g(i,s),V.OVERLAY_SHOW_CENTER?(null==oe&&(oe=new z(this.view.graphics,"red")),oe.show(i,this._renderSR)):null!=oe&&oe.hide();const a=Math.max(.1,v(e.eye,i)),o=F(this.view.renderCoordsHelper,s,e.eye);this._overlaySREqualsRenderSR||S(i,this._renderSR,i,this._spatialReference);const l=this.surface.extent,h=!this._isSpherical&&null!=this._spatialReference&&this._spatialReference.isGeographic,c=h&&null!=this._spatialReference?1/D(this._spatialReference).metersPerDegree:1,d=this.view.state.contentPixelRatio,u=e.perScreenPixelRatio/d*a*c;r.mapUnitsPerPixel=u/this._worldToPCSRatio;let _=t*u/2*Y,m=!1,y=h?90:1/0;this._isSpherical&&null!=l&&null!=this._spatialReference&&(this._spatialReference.isWebMercator?(_/=Math.cos(B(i[1])),y=l[3]):(m=!0,_/=D(this._spatialReference).metersPerDegree,y=90),_>=y&&(_=y,i[1]=0,this._spatialReference.isWebMercator&&(i[0]=0)));let R=1;m&&(R=1/Math.max(.2,Math.cos(Math.abs(n(i[1])))),_*R>180&&(R=180/_),r.mapUnitsPerPixel*=R);const w=Math.log(2)/12;_=Math.exp(Math.round(Math.log(_)/w)*w);const x=_*R,E=32,U=.5*t/(E*x),C=.5*t/(E*_);i[0]=Math.round(i[0]*U)/U,i[1]=Math.round(i[1]*C)/C;const j=r.inner;j[0]=i[0]-x,j[1]=i[1]-_,j[2]=i[0]+x,j[3]=i[1]+_,this._isSpherical&&this._shiftExtentToFitBounds(j,1/0,y);const N=r.outer;if(6*x>P(l))M(N,l);else{if(Math.PI/2-Math.abs(o-Math.PI/2)<=.25*Math.PI)N[0]=j[0]-x,N[1]=j[1]-_,N[2]=j[2]+x,N[3]=j[3]+_;else{S(e.eye,this._renderSR,de,this._spatialReference),p(ce,i,de);let t=-Math.atan2(ce[1],ce[0])+.125*Math.PI;t<0&&(t+=2*Math.PI);const r=Math.floor(t/(.25*Math.PI));O(ce,ne[r],2*_),ce[0]*=R,ce[2]*=R,T(N,j,ce)}}if(this._isSpherical)N[0]=this._longitudeCyclical.clamp(N[0]),N[2]=this._longitudeCyclical.clamp(N[2]),N[1]=Math.max(N[1],-y),N[3]=Math.min(N[3],y);else{const e=b(j,l,pe),t=b(N,l,_e);I(e,t)&&(N[2]=N[0],N[3]=N[1])}const A=Math.abs(j[2]-j[0])/t;r.mapUnitsPerPixel=Math.max(r.mapUnitsPerPixel,A),r.pixelRatioAdjustment=r.mapUnitsPerPixel/A}_drawOverlayTextures(e,t,r){if(0===e.length||!this._drawTexturesDirty&&!this._drawTexturesAnimateDirty)return;const s=this._drawTexturesDirty;this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1;const i=this._drawOverlay(e[W.INNER],r),a=this._drawOverlay(e[W.OUTER],r);i!==Z.CHANGED&&a!==Z.CHANGED||this.surface.updateTileOverlayParams(K.UPDATE),this._collectUnusedRenderTargetMemory(),this.updateOverlayResult(),s?(this.surface.requestRender(t),t===K.UPDATE&&this.surface.requestUpdate()):this.surface.requestRender(K.BACKGROUND)}_drawOverlay(e,t){return this._longitudeCyclical?e.setupGeometryViewsCyclical(this._longitudeCyclical):e.setupGeometryViewsDirect(),e.draw(this.renderer,t)}_collectUnusedRenderTargetMemory(){if(this._hasUnusedRenderTargets=!1,this.renderer.hasOverlays){const e=performance.now();this._hasUnusedRenderTargets=this.renderer.collectUnusedRenderTargetMemory(e)}}_rectanglesOverlap(e,t){return null!=e&&(this._longitudeCyclical?(this._longitudeCyclical.contains(t[0],t[2],e[0])||this._longitudeCyclical.contains(t[0],t[2],e[2])||this._longitudeCyclical.contains(e[0],e[2],t[0]))&&!(e[1]>t[3]||e[3]<t[1]):j(e,t))}_rectInsideRect(e,t){return null!=t&&(this._longitudeCyclical?this._longitudeCyclical.contains(e[0],e[2],t[0])&&this._longitudeCyclical.contains(e[0],e[2],t[2])&&t[1]>e[1]&&t[3]<e[3]:I(e,t))}_pointIsInExtent(e,t){if(this._longitudeCyclical)return this._longitudeCyclical.contains(t[0],t[2],e.x)&&e.y>=t[1]&&e.y<=t[3];const r=e.x,s=e.y;return r>t[0]&&r<t[2]&&s>t[1]&&s<t[3]}_shiftExtentToFitBounds(e,t,r){let s=0,i=0;e[0]<-t?s=e[0]+t:e[2]>t&&(s=t-e[2]),e[1]<-r?i=e[1]+r:e[3]>r&&(i=r-e[3]),N(e,s,i)}get test(){return{renderer:this.renderer,update:()=>this.runTask(ie)}}};function he(e,t){const r=1e-5,s=V.TESTS_DISABLE_OPTIMIZATIONS?0:r*Math.max(e[2]-e[0],e[3]-e[1],t[2]-t[0],t[3]-t[1]);return Math.abs(t[0]-e[0])<=s&&Math.abs(t[1]-e[1])<=s&&Math.abs(t[2]-e[2])<=s&&Math.abs(t[3]-e[3])<=s}e([d()],le.prototype,"_spatialReference",void 0),e([d({readOnly:!0})],le.prototype,"running",null),e([d()],le.prototype,"_placementDirty",void 0),e([d()],le.prototype,"_contentUpdated",void 0),e([d()],le.prototype,"_isSpherical",null),e([d()],le.prototype,"_worldToPCSRatio",null),e([d({autoDestroy:!0})],le.prototype,"renderer",void 0),e([d({constructOnly:!0})],le.prototype,"view",void 0),e([d({constructOnly:!0})],le.prototype,"surface",void 0),e([d()],le.prototype,"suspended",null),e([d()],le.prototype,"updating",null),e([d({type:Boolean})],le.prototype,"hasHighlights",null),e([d({type:Boolean})],le.prototype,"rendersOccluded",null),le=e([u("esri.views.3d.terrain.OverlayManager")],le);const ce=w(),de=f(),ue={inner:E(),outer:E(),mapUnitsPerPixel:0,pixelRatioAdjustment:1},pe=E(),_e=E(),me=A();var ye;!function(e){e[e.NONE=0]="NONE",e[e.EXTENT=1]="EXTENT",e[e.RERENDER_ONLY=2]="RERENDER_ONLY"}(ye||(ye={}));export{le as OverlayManager};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import{someMap as i}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as a,destroyMaybe as n}from"../../../core/maybe.js";import h from"../../../core/PooledArray.js";import{watch as d,syncAndInitial as l,on as c}from"../../../core/reactiveUtils.js";import{someSet as u}from"../../../core/SetUtils.js";import{property as p}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as _}from"../../../core/accessorSupport/decorators/subclass.js";import{x as m,f as g}from"../../../chunks/mat4.js";import{s as y}from"../../../chunks/vec3.js";import{f as R}from"../../../chunks/vec3f64.js";import{ViewingMode as f}from"../../ViewingMode.js";import{DrapeTargetType as T,DrapeSourceType as w,DrapedRenderGroup as b}from"../layers/interfaces.js";import v from"../support/debugFlags.js";import{OverlayIndex as x,RenderTargetType as O}from"./interfaces.js";import{Overlay as S}from"./Overlay.js";import{OverlayFramebufferObject as D}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as j}from"./OverlayRenderTarget.js";import{ShaderOutput as P}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{T as E}from"../../../chunks/TextureOnly.glsl.js";import{ShaderTechniqueRepository as A}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{Camera as C}from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as F}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as q,createQuadVAO as M}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as V}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderOccludedFlag as W}from"../webgl-engine/lib/Material.js";import{OverlayRenderContext as U}from"../webgl-engine/lib/RenderContext.js";import{RenderSlot as L}from"../webgl-engine/lib/RenderSlot.js";import{ShadowMap as H}from"../webgl-engine/lib/ShadowMap.js";import{SortedRenderGeometryRenderer as B}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{SSAOHelper as I}from"../webgl-engine/lib/SSAOHelper.js";import{TextureTechnique as k}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as N}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{TransparencyPassType as G}from"../webgl-engine/lib/TransparencyPassType.js";import{UpdatePolicy as z}from"../webgl-engine/lib/UpdatePolicy.js";import{AmbientLight as Y}from"../webgl-engine/lighting/Lightsources.js";import{TaskPriority as X,noBudget as J}from"../../support/Scheduler.js";import{ClearBufferBit as K,PrimitiveType as Q,TextureSamplingMode as Z}from"../../webgl/enums.js";import{Texture as $}from"../../webgl/Texture.js";import{TextureDescriptor as ee}from"../../webgl/TextureDescriptor.js";import{vertexCount as re}from"../../webgl/Util.js";let te=class extends r{get _bindParameters(){return this._renderContext.bindParameters}get _rctx(){return this.view._stage.renderView.renderingContext}get rctx(){return this._rctx}get materialRepository(){return this._materialRepository}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._handles=new s,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new h,this._passParameters=new E,this._materialRepository=null,this._screenToWorldRatio=1,this._localOriginFactory=null,this._camera=new C,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}initialize(){const e=this.view._stage.renderView,{waterTextureRepository:r,stippleTextureRepository:t,markerTextureRepository:s}=e;this._shaderTechniqueRepository=new A({rctx:this._rctx,viewingMode:f.Local,stippleTextureRepository:t,markerTextureRepository:s,waterTextureRepository:r}),this._renderContext=new U(this._rctx,new H(this._rctx,this.view.state.viewingMode),new I(this.view,this._shaderTechniqueRepository,this._rctx,(()=>{}))),this._handles.add([d((()=>r.updating),(()=>this.events.emit("content-changed")),l),d((()=>this.spatialReference),(e=>this._localOriginFactory=new V(e)),l),c((()=>this.view.allLayerViews),"after-changes",(()=>this._sortedDrapeSourceRenderersDirty=!0))]),this._materialRepository=new F(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&ae)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating"),this.notifyChange("isEmpty")}),(()=>this.events.emit("content-changed"))),this._bindParameters.slot=L.DRAPED_MATERIAL,this._bindParameters.highlightDepthTexture=q(this._rctx),this._camera.near=1,this._camera.far=1e4,this._camera.relativeElevation=null,this._bindParameters.camera=this._camera,this._bindParameters.transparencyPassType=G.NONE,this._bindParameters.newLighting.noonFactor=0,this._bindParameters.newLighting.globalFactor=0,this._bindParameters.newLighting.set([new Y(R(1,1,1))]),this._handles.add(this.view.resourceController.scheduler.registerTask(X.STAGE,this))}destroy(){this._handles.destroy(),this._renderers.forEach((e=>e.destroy())),this._renderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._passParameters.texture=a(this._passParameters.texture),this._bindParameters.highlightDepthTexture=a(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=n(this._shaderTechniqueRepository),this._temporaryFBO=a(this._temporaryFBO),this._quadVAO=a(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedDrapeSourceRenderersDirty||i(this._renderers,(e=>e.updating))}get hasOverlays(){return null!=this._overlays&&null!=this._overlayRenderTarget}get gpuMemoryUsage(){return null!=this._overlayRenderTarget?this._overlayRenderTarget.gpuMemoryUsage:0}createGeometryDrapeSourceRenderer(e){return this.createDrapeSourceRenderer(e,B)}createDrapeSourceRenderer(e,r,t){const s=this._renderers.get(e);null!=s&&s.destroy();const i=new r({...t,rendererContext:this,drapeSource:e});return this._renderers.set(e,i),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(d((()=>e.fullOpacity),(()=>this.events.emit("content-changed"))),e),i}removeDrapeSourceRenderer(e){if(null==e)return;const r=this._renderers.get(e);null!=r&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this._handles.remove(e),r.destroy())}collectUnusedRenderTargetMemory(e){let r=!1;if(null!=this._overlayRenderTarget)for(const t of this._overlayRenderTarget.renderTargets){const[s,i]=this.overlays,o=s.validTargets[t.type]||!i.validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(o,t,e)||r}return r}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){null!=this._overlays&&this._overlays.forEach((r=>r.hasTargetWithoutRasterImage=u(e,(e=>e.drapeTargetType===T.WithoutRasterImage))))}ensureDrapeSources(e){null!=this._overlays&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=u(e,(e=>e.drapeSourceType===w.Features)),r.hasDrapedRasterSource=u(e,(e=>e.drapeSourceType===w.RasterImage))}))}ensureOverlays(e,r){null==this._overlays&&(this._overlayRenderTarget=new j(this._rctx),this._overlays=[new S(x.INNER,this._overlayRenderTarget),new S(x.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=a(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e){this._processDrapeSources(e,(()=>!0))}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()))}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,t=!0,this._updateSortedDrapeSourceRenderers()),t&&(null!=this._overlays&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.notifyChange("isEmpty"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncDrapeSources(){this._processDrapeSources(J,(e=>e.updatePolicy===z.SYNC))}get isEmpty(){return!v.OVERLAY_DRAW_DEBUG_TEXTURE&&!i(this._renderers,(e=>!e.isEmpty))}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._renderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;const{alignPixelEnabled:i,contentPixelRatio:o}=t;this._screenToWorldRatio=o*e.mapUnitsPerPixel;const a=r.output;if(this.isEmpty||a===P.Highlight&&!this.hasHighlights||a===P.Normal&&!this.hasWater||!e.hasSomeSizedView())return!1;const n=r.fbo;if(!n.isValid())return!1;const h=2*e.resolution,d=e.resolution;n.resize(h,d);const l=this._rctx;if(this._camera.pixelRatio=e.pixelRatio*o,this._renderContext.output=a,this._bindParameters.alignPixelEnabled=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=a===P.Normal?L.DRAPED_WATER:L.DRAPED_MATERIAL,e.applyViewport(this._rctx),n.bind(l),e.index===x.INNER&&(l.setClearColor(0,0,0,0),l.clearSafe(K.COLOR_BUFFER_BIT)),r.type===O.Occluded&&(this._renderContext.renderOccludedMask=ae),v.OVERLAY_DRAW_DEBUG_TEXTURE&&r.type!==O.Occluded)for(let c=0;c<s.numViews;c++)this._setViewParameters(s.extents[c],e),this._drawDebugTexture(e.resolution,ie[e.index]);return this._renderers.size>0&&this._sortedRenderers.forAll((({drapeSource:t,renderer:i})=>{if(r.type===O.ColorNoRasterImage&&t.drapeSourceType===w.RasterImage)return;const{fullOpacity:o}=t,c=null!=o&&o<1&&a===P.Color;c&&(this.bindTemporaryFramebuffer(this._rctx,h,d),l.clearSafe(K.COLOR_BUFFER_BIT));for(let r=0;r<s.numViews;r++)this._setViewParameters(s.extents[r],e),i.render(this._renderContext);c&&null!=this._temporaryFBO&&(n.bind(l),this.view._stage.renderView.compositingHelper.compositeOverlay(this._renderContext.bindParameters,this._temporaryFBO.getTexture(),o,e.index))})),l.bindFramebuffer(null),n.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){null==this._temporaryFBO&&(this._temporaryFBO=new D(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}notifyContentChanged(){this.events.emit("content-changed")}intersect(e,r,t,s){let i=0;for(const o of this._renderers.values())i=o.intersect?.(e,r,t,s,i)??i}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this.view.map.allLayers;this._renderers.forEach(((r,t)=>{const s=e.indexOf(t.layer),i=s>=0,o=this._renderers.size*(t.renderGroup??(i?b.MapLayer:b.ViewLayer))+(i?s:0);this._sortedRenderers.push(new se(t,r,o))})),this._sortedRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r){const t=this._camera;t.viewport=[0,0,r.resolution,r.resolution],m(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),g(t.viewMatrix,[-e[0],-e[1],0])}_updateHasWater(){const e=i(this._renderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=i(this._renderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=i(this._renderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,e,r);const t=this._rctx;t.bindTechnique(this._debugTextureTechnique,this._passParameters,null),t.bindVAO(this._quadVAO),t.drawArrays(Q.TRIANGLE_STRIP,0,re(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r,t){if(y(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;const s=new Uint8Array(e*r*4);let i=0;for(let n=0;n<r;n++)for(let t=0;t<e;t++){const o=Math.floor(t/10),a=Math.floor(n/10);o<2||a<2||10*o>e-20||10*a>r-20?(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=255):(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=1&o&&1&a?1&t^1&n?0:255:1&o^1&a?0:128)}const o=new ee;o.samplingMode=Z.NEAREST,o.width=e,o.height=r,this._passParameters.texture=new $(this._rctx,o,s);const a=new N;a.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(k,a),this._quadVAO=M(this._rctx)}get test(){return{drapedRenderers:Array.from(this._renderers.values()),getDrapeSourceRenderer:e=>this._renderers.get(e)}}};e([p()],te.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([p({autoDestroy:!0})],te.prototype,"_shaderTechniqueRepository",void 0),e([p({constructOnly:!0})],te.prototype,"view",void 0),e([p()],te.prototype,"worldToPCSRatio",void 0),e([p()],te.prototype,"spatialReference",void 0),e([p({type:Boolean,readOnly:!0})],te.prototype,"updating",null),e([p()],te.prototype,"isEmpty",null),te=e([_("esri.views.3d.terrain.OverlayRenderer")],te);class se{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const ie=[[1,.5,.5],[.5,.5,1]],oe=-2,ae=W.OccludeAndTransparent;export{oe as DRAPED_Z,te as OverlayRenderer,ae as overlayRenderOccludedFlag};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import{someMap as i}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as a,destroyMaybe as n}from"../../../core/maybe.js";import h from"../../../core/PooledArray.js";import{watch as d,syncAndInitial as l,on as c}from"../../../core/reactiveUtils.js";import{someSet as u}from"../../../core/SetUtils.js";import{property as p}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as _}from"../../../core/accessorSupport/decorators/subclass.js";import{x as m,f as g}from"../../../chunks/mat4.js";import{s as y}from"../../../chunks/vec3.js";import{f as R}from"../../../chunks/vec3f64.js";import{ViewingMode as f}from"../../ViewingMode.js";import{DrapeTargetType as T,DrapeSourceType as w,DrapedRenderGroup as b}from"../layers/interfaces.js";import v from"../support/debugFlags.js";import{OverlayIndex as x,RenderTargetType as O}from"./interfaces.js";import{Overlay as S,OverlayStretch as D}from"./Overlay.js";import{OverlayFramebufferObject as j}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as P}from"./OverlayRenderTarget.js";import{ShaderOutput as E}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{T as A}from"../../../chunks/TextureOnly.glsl.js";import{ShaderTechniqueRepository as C}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{Camera as F}from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as q}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as M,createQuadVAO as V}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as W}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderOccludedFlag as U}from"../webgl-engine/lib/Material.js";import{OverlayRenderContext as L}from"../webgl-engine/lib/RenderContext.js";import{RenderSlot as H}from"../webgl-engine/lib/RenderSlot.js";import{ShadowMap as B}from"../webgl-engine/lib/ShadowMap.js";import{SortedRenderGeometryRenderer as I}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{SSAOHelper as k}from"../webgl-engine/lib/SSAOHelper.js";import{TextureTechnique as N}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as G}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{TransparencyPassType as z}from"../webgl-engine/lib/TransparencyPassType.js";import{UpdatePolicy as Y}from"../webgl-engine/lib/UpdatePolicy.js";import{AmbientLight as X}from"../webgl-engine/lighting/Lightsources.js";import{TaskPriority as J,noBudget as K}from"../../support/Scheduler.js";import{ClearBufferBit as Q,PrimitiveType as Z,TextureSamplingMode as $}from"../../webgl/enums.js";import{Texture as ee}from"../../webgl/Texture.js";import{TextureDescriptor as re}from"../../webgl/TextureDescriptor.js";import{vertexCount as te}from"../../webgl/Util.js";let se=class extends r{get _bindParameters(){return this._renderContext.bindParameters}get _rctx(){return this.view._stage.renderView.renderingContext}get rctx(){return this._rctx}get materialRepository(){return this._materialRepository}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._handles=new s,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new h,this._passParameters=new A,this._materialRepository=null,this._screenToWorldRatio=1,this._localOriginFactory=null,this._camera=new F,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}initialize(){const e=this.view._stage.renderView,{waterTextureRepository:r,stippleTextureRepository:t,markerTextureRepository:s}=e;this._shaderTechniqueRepository=new C({rctx:this._rctx,viewingMode:f.Local,stippleTextureRepository:t,markerTextureRepository:s,waterTextureRepository:r}),this._renderContext=new L(this._rctx,new B(this._rctx,this.view.state.viewingMode),new k(this.view,this._shaderTechniqueRepository,this._rctx,(()=>{}))),this._handles.add([d((()=>r.updating),(()=>this.events.emit("content-changed")),l),d((()=>this.spatialReference),(e=>this._localOriginFactory=new W(e)),l),c((()=>this.view.allLayerViews),"after-changes",(()=>this._sortedDrapeSourceRenderersDirty=!0))]),this._materialRepository=new q(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&ne)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating"),this.notifyChange("isEmpty")}),(()=>this.events.emit("content-changed"))),this._bindParameters.slot=H.DRAPED_MATERIAL,this._bindParameters.highlightDepthTexture=M(this._rctx),this._camera.near=1,this._camera.far=1e4,this._camera.relativeElevation=null,this._bindParameters.camera=this._camera,this._bindParameters.transparencyPassType=z.NONE,this._bindParameters.newLighting.noonFactor=0,this._bindParameters.newLighting.globalFactor=0,this._bindParameters.newLighting.set([new X(R(1,1,1))]),this._handles.add(this.view.resourceController.scheduler.registerTask(J.STAGE,this))}destroy(){this._handles.destroy(),this._renderers.forEach((e=>e.destroy())),this._renderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._passParameters.texture=a(this._passParameters.texture),this._bindParameters.highlightDepthTexture=a(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=n(this._shaderTechniqueRepository),this._temporaryFBO=a(this._temporaryFBO),this._quadVAO=a(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedDrapeSourceRenderersDirty||i(this._renderers,(e=>e.updating))}get hasOverlays(){return null!=this._overlays&&null!=this._overlayRenderTarget}get gpuMemoryUsage(){return null!=this._overlayRenderTarget?this._overlayRenderTarget.gpuMemoryUsage:0}createGeometryDrapeSourceRenderer(e){return this.createDrapeSourceRenderer(e,I)}createDrapeSourceRenderer(e,r,t){const s=this._renderers.get(e);null!=s&&s.destroy();const i=new r({...t,rendererContext:this,drapeSource:e});return this._renderers.set(e,i),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(d((()=>e.fullOpacity),(()=>this.events.emit("content-changed"))),e),i}removeDrapeSourceRenderer(e){if(null==e)return;const r=this._renderers.get(e);null!=r&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this._handles.remove(e),r.destroy())}collectUnusedRenderTargetMemory(e){let r=!1;if(null!=this._overlayRenderTarget)for(const t of this._overlayRenderTarget.renderTargets){const[s,i]=this.overlays,o=s.validTargets[t.type]||!i.validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(o,t,e)||r}return r}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){null!=this._overlays&&this._overlays.forEach((r=>r.hasTargetWithoutRasterImage=u(e,(e=>e.drapeTargetType===T.WithoutRasterImage))))}ensureDrapeSources(e){null!=this._overlays&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=u(e,(e=>e.drapeSourceType===w.Features)),r.hasDrapedRasterSource=u(e,(e=>e.drapeSourceType===w.RasterImage))}))}ensureOverlays(e,r){null==this._overlays&&(this._overlayRenderTarget=new P(this._rctx),this._overlays=[new S(x.INNER,this._overlayRenderTarget),new S(x.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=a(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e){this._processDrapeSources(e,(()=>!0))}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()))}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,t=!0,this._updateSortedDrapeSourceRenderers()),t&&(null!=this._overlays&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.notifyChange("isEmpty"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncDrapeSources(){this._processDrapeSources(K,(e=>e.updatePolicy===Y.SYNC))}get isEmpty(){return!v.OVERLAY_DRAW_DEBUG_TEXTURE&&!i(this._renderers,(e=>!e.isEmpty))}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._renderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;const{alignPixelEnabled:i,contentPixelRatio:o}=t;this._screenToWorldRatio=o*e.mapUnitsPerPixel/D;const a=r.output;if(this.isEmpty||a===E.Highlight&&!this.hasHighlights||a===E.Normal&&!this.hasWater||!e.hasSomeSizedView())return!1;const n=r.fbo;if(!n.isValid())return!1;const h=2*e.resolution,d=e.resolution;n.resize(h,d);const l=this._rctx;if(this._camera.pixelRatio=e.pixelRatio*o,this._renderContext.output=a,this._bindParameters.alignPixelEnabled=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=a===E.Normal?H.DRAPED_WATER:H.DRAPED_MATERIAL,e.applyViewport(this._rctx),n.bind(l),e.index===x.INNER&&(l.setClearColor(0,0,0,0),l.clearSafe(Q.COLOR_BUFFER_BIT)),r.type===O.Occluded&&(this._renderContext.renderOccludedMask=ne),v.OVERLAY_DRAW_DEBUG_TEXTURE&&r.type!==O.Occluded)for(let c=0;c<s.numViews;c++)this._setViewParameters(s.extents[c],e),this._drawDebugTexture(e.resolution,oe[e.index]);return this._renderers.size>0&&this._sortedRenderers.forAll((({drapeSource:t,renderer:i})=>{if(r.type===O.ColorNoRasterImage&&t.drapeSourceType===w.RasterImage)return;const{fullOpacity:o}=t,c=null!=o&&o<1&&a===E.Color;c&&(this.bindTemporaryFramebuffer(this._rctx,h,d),l.clearSafe(Q.COLOR_BUFFER_BIT));for(let r=0;r<s.numViews;r++)this._setViewParameters(s.extents[r],e),i.render(this._renderContext);c&&null!=this._temporaryFBO&&(n.bind(l),this.view._stage.renderView.compositingHelper.compositeOverlay(this._renderContext.bindParameters,this._temporaryFBO.getTexture(),o,e.index))})),l.bindFramebuffer(null),n.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){null==this._temporaryFBO&&(this._temporaryFBO=new j(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}notifyContentChanged(){this.events.emit("content-changed")}intersect(e,r,t,s){let i=0;for(const o of this._renderers.values())i=o.intersect?.(e,r,t,s,i)??i}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this.view.map.allLayers;this._renderers.forEach(((r,t)=>{const s=e.indexOf(t.layer),i=s>=0,o=this._renderers.size*(t.renderGroup??(i?b.MapLayer:b.ViewLayer))+(i?s:0);this._sortedRenderers.push(new ie(t,r,o))})),this._sortedRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r){const t=this._camera;t.viewport=[0,0,r.resolution,r.resolution],m(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),g(t.viewMatrix,[-e[0],-e[1],0])}_updateHasWater(){const e=i(this._renderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=i(this._renderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=i(this._renderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,r);const t=this._rctx;t.bindTechnique(this._debugTextureTechnique,this._passParameters,null),t.bindVAO(this._quadVAO),t.drawArrays(Z.TRIANGLE_STRIP,0,te(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r){if(y(this._passParameters.color,r[0],r[1],r[2]),this._passParameters.texture)return;const t=new Uint8Array(e*e*4);let s=0;for(let a=0;a<e;a++)for(let r=0;r<e;r++){const i=Math.floor(r/10),o=Math.floor(a/10);i<2||o<2||10*i>e-20||10*o>e-20?(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=255):(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=1&i&&1&o?1&r^1&a?0:255:1&i^1&o?0:128)}const i=new re(e);i.samplingMode=$.NEAREST,this._passParameters.texture=new ee(this._rctx,i,t);const o=new G;o.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(N,o),this._quadVAO=V(this._rctx)}get test(){return{drapedRenderers:Array.from(this._renderers.values()),getDrapeSourceRenderer:e=>this._renderers.get(e)}}};e([p()],se.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([p({autoDestroy:!0})],se.prototype,"_shaderTechniqueRepository",void 0),e([p({constructOnly:!0})],se.prototype,"view",void 0),e([p()],se.prototype,"worldToPCSRatio",void 0),e([p()],se.prototype,"spatialReference",void 0),e([p({type:Boolean,readOnly:!0})],se.prototype,"updating",null),e([p()],se.prototype,"isEmpty",null),se=e([_("esri.views.3d.terrain.OverlayRenderer")],se);class ie{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const oe=[[1,.5,.5],[.5,.5,1]],ae=-2,ne=U.OccludeAndTransparent;export{ae as DRAPED_Z,se as OverlayRenderer,ne as overlayRenderOccludedFlag};
@@ -2,13 +2,13 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{addVerticalOffset as e}from"../attributes/VerticalOffset.glsl.js";import{AlignPixel as t}from"./AlignPixel.glsl.js";import{HUDTransparencyRenderStyle as o}from"./HUDUniforms.js";import{ScreenSizePerspective as a,addScreenSizePerspectiveAlignment as i}from"../util/ScreenSizePerspective.glsl.js";import{addProjViewLocalOrigin as r,addCameraPosition as s,addViewNormal as n}from"../util/View.glsl.js";import{Float4PassUniform as l}from"../../shaderModules/Float4PassUniform.js";import{FloatPassUniform as c}from"../../shaderModules/FloatPassUniform.js";import{glsl as f}from"../../shaderModules/interfaces.js";import{Texture2DPassUniform as d}from"../../shaderModules/Texture2DPassUniform.js";import{VertexAttribute as p}from"../../../lib/VertexAttribute.js";var u;function v(v,m){v.include(a),v.attributes.add(p.POSITION,"vec3"),v.attributes.add(p.NORMAL,"vec3"),v.attributes.add(p.AUXPOS1,"vec4");const O=v.vertex;r(O,m),s(O,m),O.uniforms.add(new l("viewport",((e,t)=>t.camera.fullViewport)),new c("polygonOffset",(e=>e.shaderPolygonOffset)),new c("cameraGroundRelative",((e,t)=>t.camera.aboveGround?1:-1)),new c("renderTransparentlyOccludedHUD",((e,t)=>t.renderTransparentlyOccludedHUD===o.Occluded?1:t.renderTransparentlyOccludedHUD===o.NotOccluded?0:.75)),new d("hudVisibilityTexture",((e,t)=>t.hudVisibilityTexture))),m.hasVerticalOffset&&e(O),O.constants.add("smallOffsetAngle","float",.984807753012208),O.code.add(f`struct ProjectHUDAux {
5
+ import{addVerticalOffset as e}from"../attributes/VerticalOffset.glsl.js";import{AlignPixel as t}from"./AlignPixel.glsl.js";import{HUDTransparencyRenderStyle as o}from"./HUDUniforms.js";import{ScreenSizePerspective as a,addScreenSizePerspectiveAlignment as i}from"../util/ScreenSizePerspective.glsl.js";import{addProjViewLocalOrigin as r,addCameraPosition as s,addViewNormal as n,addPixelRatio as l}from"../util/View.glsl.js";import{Float4PassUniform as c}from"../../shaderModules/Float4PassUniform.js";import{FloatPassUniform as f}from"../../shaderModules/FloatPassUniform.js";import{glsl as d}from"../../shaderModules/interfaces.js";import{Texture2DPassUniform as p}from"../../shaderModules/Texture2DPassUniform.js";import{VertexAttribute as u}from"../../../lib/VertexAttribute.js";var v;function m(m,O){m.include(a),m.attributes.add(u.POSITION,"vec3"),m.attributes.add(u.NORMAL,"vec3"),m.attributes.add(u.AUXPOS1,"vec4");const w=m.vertex;r(w,O),s(w,O),w.uniforms.add(new c("viewport",((e,t)=>t.camera.fullViewport)),new f("polygonOffset",(e=>e.shaderPolygonOffset)),new f("cameraGroundRelative",((e,t)=>t.camera.aboveGround?1:-1)),new f("renderTransparentlyOccludedHUD",((e,t)=>t.renderTransparentlyOccludedHUD===o.Occluded?1:t.renderTransparentlyOccludedHUD===o.NotOccluded?0:.75)),new p("hudVisibilityTexture",((e,t)=>t.hudVisibilityTexture))),O.hasVerticalOffset&&e(w),w.constants.add("smallOffsetAngle","float",.984807753012208),w.code.add(d`struct ProjectHUDAux {
6
6
  vec3 posModel;
7
7
  vec3 posView;
8
8
  vec3 vnormal;
9
9
  float distanceToCamera;
10
10
  float absCosAngle;
11
- };`),O.code.add(f`float applyHUDViewDependentPolygonOffset(float pointGroundDistance, float absCosAngle, inout vec3 posView) {
11
+ };`),w.code.add(d`float applyHUDViewDependentPolygonOffset(float pointGroundDistance, float absCosAngle, inout vec3 posView) {
12
12
  float pointGroundSign = sign(pointGroundDistance);
13
13
  if (pointGroundSign == 0.0) {
14
14
  pointGroundSign = cameraGroundRelative;
@@ -26,14 +26,14 @@ posView /= factor;
26
26
  }
27
27
  }
28
28
  return groundRelative;
29
- }`),m.isDraped&&!m.hasVerticalOffset||n(O),m.isDraped||(O.uniforms.add(new c("perDistancePixelRatio",((e,t)=>Math.tan(t.camera.fovY/2)/(t.camera.fullViewport[2]/2)))),O.code.add(f`void applyHUDVerticalGroundOffset(vec3 normalModel, inout vec3 posModel, inout vec3 posView) {
29
+ }`),O.draped&&!O.hasVerticalOffset||n(w),O.draped||(w.uniforms.add(new f("perDistancePixelRatio",((e,t)=>Math.tan(t.camera.fovY/2)/(t.camera.fullViewport[2]/2)))),w.code.add(d`void applyHUDVerticalGroundOffset(vec3 normalModel, inout vec3 posModel, inout vec3 posView) {
30
30
  float distanceToCamera = length(posView);
31
31
  float pixelOffset = distanceToCamera * perDistancePixelRatio * 0.5;
32
32
  vec3 modelOffset = normalModel * cameraGroundRelative * pixelOffset;
33
33
  vec3 viewOffset = (viewNormal * vec4(modelOffset, 1.0)).xyz;
34
34
  posModel += modelOffset;
35
35
  posView += viewOffset;
36
- }`)),m.screenCenterOffsetUnitsEnabled===u.Screen&&O.uniforms.add(new c("pixelRatio",((e,t)=>t.camera.pixelRatio))),m.hasScreenSizePerspective&&i(O),O.code.add(f`
36
+ }`)),O.screenCenterOffsetUnitsEnabled===v.Screen&&l(w,O),O.hasScreenSizePerspective&&i(w),w.code.add(d`
37
37
  vec4 projectPositionHUD(out ProjectHUDAux aux) {
38
38
  // centerOffset is in view space and is used to implement world size offsetting
39
39
  // of labels with respect to objects. It also pulls the label towards the viewer
@@ -48,7 +48,7 @@ posView += viewOffset;
48
48
  aux.posModel = position;
49
49
  aux.posView = (view * vec4(aux.posModel, 1.0)).xyz;
50
50
  aux.vnormal = normal;
51
- ${m.isDraped?"":"applyHUDVerticalGroundOffset(aux.vnormal, aux.posModel, aux.posView);"}
51
+ ${O.draped?"":"applyHUDVerticalGroundOffset(aux.vnormal, aux.posModel, aux.posView);"}
52
52
 
53
53
  // Screen sized offset in world space, used for example for line callouts
54
54
  // Note: keep this implementation in sync with the CPU implementation, see
@@ -62,11 +62,11 @@ posView += viewOffset;
62
62
 
63
63
  aux.absCosAngle = abs(cosAngle);
64
64
 
65
- ${m.hasScreenSizePerspective&&(m.hasVerticalOffset||m.screenCenterOffsetUnitsEnabled===u.Screen)?"vec4 perspectiveFactor = screenSizePerspectiveScaleFactor(aux.absCosAngle, aux.distanceToCamera, screenSizePerspectiveAlignment);":""}
65
+ ${O.hasScreenSizePerspective&&(O.hasVerticalOffset||O.screenCenterOffsetUnitsEnabled===v.Screen)?"vec4 perspectiveFactor = screenSizePerspectiveScaleFactor(aux.absCosAngle, aux.distanceToCamera, screenSizePerspectiveAlignment);":""}
66
66
 
67
- ${m.hasVerticalOffset?m.hasScreenSizePerspective?"float verticalOffsetScreenHeight = applyScreenSizePerspectiveScaleFactorFloat(verticalOffset.x, perspectiveFactor);":"float verticalOffsetScreenHeight = verticalOffset.x;":""}
67
+ ${O.hasVerticalOffset?O.hasScreenSizePerspective?"float verticalOffsetScreenHeight = applyScreenSizePerspectiveScaleFactorFloat(verticalOffset.x, perspectiveFactor);":"float verticalOffsetScreenHeight = verticalOffset.x;":""}
68
68
 
69
- ${m.hasVerticalOffset?f`
69
+ ${O.hasVerticalOffset?d`
70
70
  float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * aux.distanceToCamera, verticalOffset.z, verticalOffset.w);
71
71
  vec3 modelOffset = aux.vnormal * worldOffset;
72
72
  aux.posModel += modelOffset;
@@ -78,7 +78,7 @@ posView += viewOffset;
78
78
 
79
79
  float groundRelative = applyHUDViewDependentPolygonOffset(pointGroundDistance, aux.absCosAngle, aux.posView);
80
80
 
81
- ${m.screenCenterOffsetUnitsEnabled!==u.Screen?f`
81
+ ${O.screenCenterOffsetUnitsEnabled!==v.Screen?d`
82
82
  // Apply x/y in view space, but z in screen space (i.e. along posView direction)
83
83
  aux.posView += vec3(centerOffset.x, centerOffset.y, 0.0);
84
84
 
@@ -91,19 +91,19 @@ posView += viewOffset;
91
91
 
92
92
  vec4 posProj = proj * vec4(aux.posView, 1.0);
93
93
 
94
- ${m.screenCenterOffsetUnitsEnabled===u.Screen?m.hasScreenSizePerspective?"float centerOffsetY = applyScreenSizePerspectiveScaleFactorFloat(centerOffset.y, perspectiveFactor);":"float centerOffsetY = centerOffset.y;":""}
94
+ ${O.screenCenterOffsetUnitsEnabled===v.Screen?O.hasScreenSizePerspective?"float centerOffsetY = applyScreenSizePerspectiveScaleFactorFloat(centerOffset.y, perspectiveFactor);":"float centerOffsetY = centerOffset.y;":""}
95
95
 
96
- ${m.screenCenterOffsetUnitsEnabled===u.Screen?"posProj.xy += vec2(centerOffset.x, centerOffsetY) * pixelRatio * 2.0 / viewport.zw * posProj.w;":""}
96
+ ${O.screenCenterOffsetUnitsEnabled===v.Screen?"posProj.xy += vec2(centerOffset.x, centerOffsetY) * pixelRatio * 2.0 / viewport.zw * posProj.w;":""}
97
97
 
98
98
  // constant part of polygon offset emulation
99
99
  posProj.z -= groundRelative * polygonOffset * posProj.w;
100
100
  return posProj;
101
101
  }
102
- `),O.include(t),O.code.add(f`bool testVisibilityHUD(vec4 posProj) {
102
+ `),w.include(t),w.code.add(d`bool testVisibilityHUD(vec4 posProj) {
103
103
  vec4 posProjCenter = alignToPixelCenter(posProj, viewport.zw);
104
104
  vec4 occlusionPixel = texture(hudVisibilityTexture, .5 + .5 * posProjCenter.xy / posProjCenter.w);
105
105
  if (renderTransparentlyOccludedHUD > 0.5) {
106
106
  return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g * renderTransparentlyOccludedHUD < 1.0;
107
107
  }
108
108
  return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g == 1.0;
109
- }`)}!function(e){e[e.World=0]="World",e[e.Screen=1]="Screen",e[e.COUNT=2]="COUNT"}(u||(u={}));export{v as HUD,u as HUDSpace};
109
+ }`)}!function(e){e[e.World=0]="World",e[e.Screen=1]="Screen",e[e.COUNT=2]="COUNT"}(v||(v={}));export{m as HUD,v as HUDSpace};