@arcgis/core 4.24.0-next.20220607 → 4.24.0-next.20220610

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 (206) hide show
  1. package/analysis/Analysis.js +1 -1
  2. package/analysis/LineOfSightAnalysis.js +1 -1
  3. package/arcade/arcadeCompiler.js +1 -1
  4. package/arcade.d.ts +4 -0
  5. package/arcade.js +1 -1
  6. package/assets/esri/core/workers/RemoteClient.js +1 -1
  7. package/assets/esri/core/workers/chunks/{4d2181bde97983ecac8b.js → 03ddf44e6fb8bf9db3ff.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{2e2d7f5952934af43fd7.js → 04034dabc8e0a489b0f8.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{d7168ff8f26ca2537080.js → 0747c28fce0b344dc89b.js} +1 -1
  10. package/assets/esri/core/workers/chunks/1e4e5d147263e98536bc.js +1 -0
  11. package/assets/esri/core/workers/chunks/{cbe98327181d8d7ad9e5.js → 262fabdc409d55831ffa.js} +1 -1
  12. package/assets/esri/core/workers/chunks/2a52c2c6edd70432f4a5.js +1 -0
  13. package/assets/esri/core/workers/chunks/{71d445d1e6812e03a1d7.js → 3ce7adaefc9de28d9c87.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{c165845a117c21246b1e.js → 42aa8ce4eb7bd851475e.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{a9a4bb1d781b1a995fb3.js → 4824926501e11d04eb4a.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{e51420d231c286b9c062.js → 540f1ed1ea9cddc739af.js} +1 -1
  17. package/assets/esri/core/workers/chunks/6196cfdeb91ceba52af3.js +1 -0
  18. package/assets/esri/core/workers/chunks/71a4618d959a09302c51.js +1 -0
  19. package/assets/esri/core/workers/chunks/76fbc8eaabba62fd4f9c.js +1 -0
  20. package/assets/esri/core/workers/chunks/{cb906a3f03dd0805c880.js → 7cc17b716b16a6684023.js} +1 -1
  21. package/assets/esri/core/workers/chunks/871681c1353026cb6d4b.js +1 -0
  22. package/assets/esri/core/workers/chunks/{13e9e6f0b4942d79b0eb.js → 88942e9f60687ac006dc.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{4c5b80ba3dbfe6f6cafb.js → acb1e649cda99d4f69a5.js} +1 -1
  24. package/assets/esri/core/workers/chunks/b71a0a8a2f446c671161.js +1 -0
  25. package/assets/esri/core/workers/chunks/b8002aaa665712299121.js +1 -0
  26. package/assets/esri/core/workers/chunks/{e4ca3f04ca7f71b46240.js → bb3480e231934b7bb34e.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{185da42e7cc8e440c0f0.js → c157b46b0724f3f0947e.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{1aba8c73c62a64e0658c.js → c6af8b0903d8d934d542.js} +1 -1
  29. package/assets/esri/core/workers/chunks/c8402e32307a7b7eaaeb.js +1 -0
  30. package/assets/esri/core/workers/chunks/c8e08a956b16034d9819.js +1 -0
  31. package/assets/esri/core/workers/chunks/d0d2566bedc493ed0a3b.js +1 -0
  32. package/assets/esri/core/workers/chunks/{8152cd26ebeae910b753.js → d3c73da9c2abb59e762a.js} +1 -1
  33. package/assets/esri/core/workers/chunks/d828a0656e7351a74fc4.js +1 -0
  34. package/assets/esri/core/workers/chunks/{172368d4eb6e6f8d2bdb.js → d8b9551df1bd196d0126.js} +1 -1
  35. package/assets/esri/core/workers/chunks/e5c8584ae764892c324d.js +1 -0
  36. package/assets/esri/core/workers/chunks/{1d893ebc6f203ff1fc3d.js → efe605ff4ba2a95c14c5.js} +1 -1
  37. package/assets/esri/core/workers/chunks/f54d5abbb9668c45bd19.js +1 -0
  38. package/assets/esri/core/workers/chunks/{bd2f4a01cb71e25837ba.js → f7ba74fc4eb541c424fc.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{1ebed6d6f561f926bd36.js → faf6e48f9f1205fb2e43.js} +1 -1
  40. package/assets/esri/geometry/support/pe-wasm.wasm +0 -0
  41. package/assets/esri/themes/base/widgets/_BasemapToggle.scss +6 -23
  42. package/assets/esri/themes/base/widgets/_Directions.scss +0 -3
  43. package/assets/esri/themes/base/widgets/_FeatureTable.scss +10 -2
  44. package/assets/esri/themes/base/widgets/_Slider.scss +8 -3
  45. package/assets/esri/themes/base/widgets/_Tooltip.scss +8 -8
  46. package/assets/esri/themes/base/widgets/_Weather.scss +5 -1
  47. package/assets/esri/themes/dark/main.css +1 -1
  48. package/assets/esri/themes/light/main.css +1 -1
  49. package/assets/esri/themes/light/view.css +1 -1
  50. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle.json +1 -1
  51. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ar.json +1 -1
  52. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_bg.json +1 -1
  53. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_bs.json +1 -1
  54. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ca.json +1 -1
  55. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_cs.json +1 -1
  56. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_da.json +1 -1
  57. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_de.json +1 -1
  58. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_el.json +1 -1
  59. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_en.json +1 -1
  60. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_es.json +1 -1
  61. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_et.json +1 -1
  62. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_fi.json +1 -1
  63. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_fr.json +1 -1
  64. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_he.json +1 -1
  65. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_hr.json +1 -1
  66. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_hu.json +1 -1
  67. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_id.json +1 -1
  68. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_it.json +1 -1
  69. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ja.json +1 -1
  70. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ko.json +1 -1
  71. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_lt.json +1 -1
  72. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_lv.json +1 -1
  73. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_nb.json +1 -1
  74. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_nl.json +1 -1
  75. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pl.json +1 -1
  76. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pt-BR.json +1 -1
  77. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pt-PT.json +1 -1
  78. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ro.json +1 -1
  79. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ru.json +1 -1
  80. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sk.json +1 -1
  81. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sl.json +1 -1
  82. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sr.json +1 -1
  83. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sv.json +1 -1
  84. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_th.json +1 -1
  85. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_tr.json +1 -1
  86. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_uk.json +1 -1
  87. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_vi.json +1 -1
  88. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-CN.json +1 -1
  89. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-HK.json +1 -1
  90. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-TW.json +1 -1
  91. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_en.json +1 -1
  92. package/chunks/RasterColorizer.glsl.js +22 -18
  93. package/chunks/basis_transcoder.js +1 -1
  94. package/chunks/i3s.js +1 -1
  95. package/chunks/lclayout.js +1 -1
  96. package/chunks/lerc-wasm.js +1 -1
  97. package/chunks/libtess-asm.js +1 -1
  98. package/chunks/libtess.js +1 -1
  99. package/chunks/pe-wasm.js +1 -1
  100. package/chunks/persistableUrlUtils.js +1 -1
  101. package/chunks/vxlLayer.js +1 -1
  102. package/core/quantityUtils.js +1 -1
  103. package/geometry/projection.js +1 -1
  104. package/geometry/support/geodesicUtils.js +1 -1
  105. package/geometry/support/plane.js +1 -1
  106. package/interfaces.d.ts +471 -52
  107. package/layers/LineOfSightLayer.js +1 -1
  108. package/layers/RouteLayer.js +1 -1
  109. package/layers/VectorTileLayer.js +1 -1
  110. package/layers/support/LayerContingentValuesCache.js +1 -1
  111. package/layers/support/RasterInfo.js +1 -1
  112. package/layers/support/rasterDatasets/ImageAuxRaster.js +1 -1
  113. package/layers/support/rasterDatasets/InMemoryRaster.js +1 -1
  114. package/layers/support/rasterDatasets/WCSRaster.js +1 -1
  115. package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
  116. package/layers/support/rasterFormats/JpgPlus.js +1 -1
  117. package/layers/support/rasterFormats/RasterCodec.js +1 -1
  118. package/layers/support/rasterFormats/TiffDecoder.js +1 -1
  119. package/package.json +1 -1
  120. package/portal/support/urlUtils.js +5 -0
  121. package/renderers/support/colorRampUtils.js +1 -1
  122. package/rest/imageService/fetchRasterInfo.js +1 -1
  123. package/smartMapping/renderers/pieChart.js +1 -1
  124. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  125. package/support/arcadeUtils.js +1 -1
  126. package/support/elevationInfoUtils.js +1 -1
  127. package/support/persistableUrlUtils.js +1 -1
  128. package/support/revision.js +1 -1
  129. package/symbols/cim/cimAnalyzer.js +1 -1
  130. package/views/2d/engine/vectorTiles/shaders/VTLMaterial.js +1 -1
  131. package/views/2d/engine/webgl/Utils.js +1 -1
  132. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  133. package/views/2d/layers/graphics/GraphicStoreItem.js +1 -1
  134. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  135. package/views/3d/analysis/AnalysisViewManager3D.js +1 -1
  136. package/views/3d/analysis/Dimensioning/LengthDimensionComputation.js +1 -1
  137. package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
  138. package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
  139. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  140. package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
  141. package/views/3d/input/SceneInputManager.js +1 -1
  142. package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
  143. package/views/3d/interactive/editingTools/moveGraphic/GraphicMoveTool.js +1 -1
  144. package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
  145. package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
  146. package/views/3d/interactive/editingTools/transformGraphic/GraphicTransformTool.js +1 -1
  147. package/views/3d/layers/i3s/I3SAttributeOverrides.js +1 -1
  148. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  149. package/views/3d/support/MemoryController.js +1 -1
  150. package/views/3d/terrain/RasterColorizerTechnique.js +1 -1
  151. package/views/3d/terrain/TerrainSurface.js +1 -1
  152. package/views/3d/terrain/TileCompositor.js +1 -1
  153. package/views/3d/terrain/TileRenderer.js +1 -1
  154. package/views/3d/webgl-engine/core/shaderLibrary/output/BlendOptions.js +1 -1
  155. package/views/MapView.js +1 -1
  156. package/views/SceneView.js +1 -1
  157. package/views/View.js +1 -1
  158. package/views/draw/DrawOperation.js +1 -1
  159. package/views/draw/support/GraphicMover.js +1 -1
  160. package/views/interactive/SegmentLabels.js +1 -1
  161. package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
  162. package/views/interactive/tooltip/TranslateTooltipInfos.js +1 -1
  163. package/views/interactive/tooltip/content/TooltipContentTranslateVertex.js +1 -1
  164. package/views/interactive/tooltip/support/measurements.js +1 -1
  165. package/views/support/areaMeasurementUtils.js +1 -1
  166. package/views/support/automaticLengthMeasurementUtils.js +5 -0
  167. package/views/support/euclideanLengthMeasurementUtils.js +5 -0
  168. package/views/support/geodesicLengthMeasurementUtils.js +5 -0
  169. package/views/support/measurementUtils.js +5 -0
  170. package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
  171. package/widgets/BasemapToggle.js +1 -1
  172. package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesTree.js +1 -1
  173. package/widgets/BuildingExplorer/BuildingLevelPicker/BuildingLevelPicker.js +1 -1
  174. package/widgets/BuildingExplorer/BuildingPhasePicker/BuildingPhasePicker.js +1 -1
  175. package/widgets/BuildingExplorer.js +1 -1
  176. package/widgets/Daylight/DaylightViewModel.js +1 -1
  177. package/widgets/Directions/DirectionsViewModel.js +1 -1
  178. package/widgets/Directions.js +1 -1
  179. package/widgets/Feature/FeatureMedia/FeatureMediaViewModel.js +1 -1
  180. package/widgets/Feature/support/featureUtils.js +1 -1
  181. package/widgets/FeatureTable/FieldColumn.js +1 -1
  182. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  183. package/widgets/Print/PrintViewModel.js +1 -1
  184. package/widgets/Sketch/SketchViewModel.js +1 -1
  185. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  186. package/widgets/UtilityNetworkTrace.js +1 -1
  187. package/widgets/Weather.js +1 -1
  188. package/widgets/Widget.js +1 -1
  189. package/widgets/support/AnalysisViewModel.js +1 -1
  190. package/widgets/support/AnchorElementViewModel.js +1 -1
  191. package/widgets/support/InteractiveAnalysisViewModel.js +1 -1
  192. package/assets/esri/core/workers/chunks/2ac6c99aacb873134f7c.js +0 -1
  193. package/assets/esri/core/workers/chunks/471beeb6924599209567.js +0 -1
  194. package/assets/esri/core/workers/chunks/5242c9badca17ba2ab25.js +0 -1
  195. package/assets/esri/core/workers/chunks/72c7d48408d1f8050026.js +0 -1
  196. package/assets/esri/core/workers/chunks/770cf0a66102100abe74.js +0 -1
  197. package/assets/esri/core/workers/chunks/96ff15d6c2bfca0c6061.js +0 -1
  198. package/assets/esri/core/workers/chunks/9c4c721d890b49697132.js +0 -1
  199. package/assets/esri/core/workers/chunks/af3766a2d27419c7766c.js +0 -1
  200. package/assets/esri/core/workers/chunks/b50bbfd75768d9a8de88.js +0 -1
  201. package/assets/esri/core/workers/chunks/b577ec80647cf2ece397.js +0 -1
  202. package/assets/esri/core/workers/chunks/c1653b6cb201ecbaabaa.js +0 -1
  203. package/assets/esri/core/workers/chunks/e99b58d07475bffce7ea.js +0 -1
  204. package/assets/esri/core/workers/chunks/f3d885aec4bca18928d4.js +0 -1
  205. package/assets/esri/core/workers/chunks/fc0da1dfeef041182ddf.js +0 -1
  206. package/views/support/lengthMeasurementUtils.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{isNone as t}from"../../../../../core/maybe.js";import e from"../MemoryBuffer.js";import{EncodingType as o,AttributeStatus as n}from"./enums.js";import{DataType as s}from"../../../../webgl/enums.js";import{VertexElementDescriptor as r}from"../../../../webgl/VertexElementDescriptor.js";class i{constructor(t){this._locations=new Map,this._key=t}get key(){return this._key}get type(){return 7&this._key}defines(){return[]}getStride(){return this._layoutInfo||this._buildAttributesInfo(),this._stride}getAttributeLocations(){return 0===this._locations.size&&this._buildAttributesInfo(),this._locations}getLayoutInfo(){return this._layoutInfo||this._buildAttributesInfo(),this._layoutInfo}getEncodingInfos(){return this._propertyEncodingInfo||this._buildAttributesInfo(),this._propertyEncodingInfo}getUniforms(){return this._uniforms||this._buildAttributesInfo(),this._uniforms}getShaderHeader(){return this._shaderHeader||this._buildAttributesInfo(),this._shaderHeader}getShaderMain(){return this._shaderMain||this._buildAttributesInfo(),this._shaderMain}setDataUniforms(t,e,o,n,s){const r=this.getUniforms();for(const i of r){const{name:r,type:a,getValue:c}=i,u=c(o,e,n,s);if(null!==u)switch(a){case"float":t.setUniform1f(r,u);break;case"vec2":t.setUniform2fv(r,u);break;case"vec4":t.setUniform4fv(r,u)}}}encodeAttributes(t,e,n,s){const r=this.attributesInfo(),i=this.getEncodingInfos(),a=[];let c=0,u=0;for(const f of Object.keys(i)){const _=i[f],{type:h,precisionFactor:d,isLayout:l}=r[f],y=l?n.getLayoutProperty(f):n.getPaintProperty(f),I=y.interpolator?.getInterpolationRange(e);let m=0;for(const n of _){const{offset:r,bufferElementsToAdd:i}=n;if(i>0){for(let t=0;t<i;t++)a.push(0);c+=u,u=n.bufferElementsToAdd}const f=s??y.getValue(I?I[m]:e,t);switch(h){case o.R8_SIGNED:case o.R8_UNSIGNED:a[c]|=this._encodeByte(f*(d||1),8*r);break;case o.R16_SIGNED:case o.R16_UNSIGNED:a[c]|=this._encodeShort(f*(d||1),8*r);break;case o.R8G8_SIGNED:case o.R8G8_UNSIGNED:a[c]|=this._encodeByte(f*(d||1),8*r),a[c]|=this._encodeByte(f*(d||1),8*r+8);break;case o.R16G16_SIGNED:case o.R16G16_UNSIGNED:a[c]|=this._encodeShort(f*(d||1),8*r),a[c]|=this._encodeShort(f*(d||1),8*r+16);break;case o.R8G8B8A8_SIGNED:case o.R8G8B8A8_UNSIGNED:a[c]|=this._encodeByte(f*(d||1),8*r),a[c]|=this._encodeByte(f*(d||1),8*r+8),a[c]|=this._encodeByte(f*(d||1),8*r+16),a[c]|=this._encodeByte(f*(d||1),8*r+24);break;case o.R8G8B8A8_COLOR:a[c]=this._encodeColor(f);break;case o.R16G16B16A16_DASHARRAY:case o.R16G16B16A16_PATTERN:this._encodePattern(c,a,f);break;default:throw new Error("Unsupported encoding type")}m++}}return a}getAtributeState(t){let e=0;const o=3+2*t;return e|=this._bit(o),e|=this._bit(o+1)<<1,e}_buildAttributesInfo(){const t=[],e={},o={};let r=-1;const a=this.attributesInfo(),c=this.attributes();let u=-1;for(const s of c){u++;const c=this.getAtributeState(u);if(c===n.UNIFORM||c===n.UNUSED)continue;const f=a[s],_=[];e[s]=_;const h=f.type;for(let e=0;e<c;e++){const{dataType:e,bytesPerElement:n,count:s,normalized:a}=i._encodingInfo[h],c=n*s;let u=o[e],f=0;if(!u||u.count+s>4)r++,u={dataIndex:r,count:0,offset:0},4!==s&&(o[e]=u),t.push({location:-1,name:"a_data_"+r,count:s,type:e,normalized:a}),f=Math.ceil(Math.max(c/4,1));else{const e=t[u.dataIndex];e.count+=s;f=Math.ceil(Math.max(e.count*n/4,1))-Math.ceil(Math.max(u.offset/4,1))}_.push({dataIndex:u.dataIndex,offset:u.offset,bufferElementsToAdd:f}),u.offset+=c,u.count+=s}}for(const n of t)switch(n.type){case s.BYTE:case s.UNSIGNED_BYTE:n.count=4;case s.SHORT:case s.UNSIGNED_SHORT:n.count+=n.count%2}this._buildVertexBufferLayout(t);let f=0;const _=this._layoutInfo.geometry;for(const n of _)this._locations.set(n.name,f++);const h=this._layoutInfo.opacity;if(h)for(const n of h)this._locations.set(n.name,f++);this._buildShaderInfo(t,e),this._propertyEncodingInfo=e}_buildVertexBufferLayout(t){const e={},o=this.geometryInfo();let n=o[0].stride;if(0===t.length)e.geometry=o;else{const s=[];let i=n;for(const e of t)n+=a(e.type)*e.count;for(const t of o){const e={...t};e.stride=n,s.push(e)}for(const e of t)s.push(new r(e.name,e.count,e.type,i,n)),i+=a(e.type)*e.count;e.geometry=s}this.opacityInfo()&&(e.opacity=this.opacityInfo()),this._layoutInfo=e,this._stride=n}_buildShaderInfo(e,s){let r="\n",a="\n";const u=[];for(const t of e)r+=`attribute ${this._getType(t.count)} ${t.name};\n`;const f=this.attributes(),_=this.attributesInfo();let h=-1;for(const d of f){h++;const{name:e,type:f,precisionFactor:l,isLayout:y}=_[d],I=l&&1!==l?" * "+1/l:"",{bytesPerElement:m,count:E}=i._encodingInfo[f],p=t=>`a_data_${t.dataIndex}${c(E,t.offset,m)}`;switch(this.getAtributeState(h)){case n.UNIFORM:{const n=this._getType(E),s=`u_${e}`;u.push({name:s,type:n,getValue:(e,n,s,r)=>{const i=y?e.getLayoutValue(d,n):e.getPaintValue(d,n);if(f===o.R16G16B16A16_DASHARRAY){const o=e.getDashKey(i,e.getLayoutValue("line-cap",n)),s=r.getMosaicItemPosition(o,!1);if(t(s))return null;const{tl:a,br:c}=s;return[a[0],c[1],c[0],a[1]]}if(f===o.R16G16B16A16_PATTERN){const e=r.getMosaicItemPosition(i,!d.includes("line-"));if(t(e))return null;const{tl:o,br:n}=e;return[o[0],n[1],n[0],o[1]]}if(f===o.R8G8B8A8_COLOR){const t=i[3];return[t*i[0],t*i[1],t*i[2],t]}return i}}),r+=`uniform ${n} ${s};\n`,a+=`${n} ${e} = ${s};\n`}break;case n.DATA_DRIVEN:{const t=p(s[d][0]);a+=`${this._getType(E)} ${e} = ${t}${I};\n`}break;case n.INTERPOLATED_DATA_DRIVEN:{const t=`u_t_${e}`;u.push({name:t,type:"float",getValue:(t,e,o,n)=>(y?t.getLayoutProperty(d):t.getPaintProperty(d)).interpolator.interpolationUniformValue(o,e)}),r+=`uniform float ${t};\n`;const o=p(s[d][0]),n=p(s[d][1]);a+=`${this._getType(E)} ${e} = mix(${o}${I}, ${n}${I}, ${t});\n`}}}this._shaderHeader=r,this._shaderMain=a,this._uniforms=u}_bit(t){return(this._key&1<<t)>>t}_getType(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4"}throw new Error("Invalid count")}_encodeColor(t){const o=255*t[3];return e.i8888to32(t[0]*o,t[1]*o,t[2]*o,o)}_encodePattern(t,e,o){if(!o||!o.rect)return;const n=2,s=o.rect,r=o.width,i=o.height;e[t]=this._encodeShort(s.x+n,0),e[t]|=this._encodeShort(s.y+n+i,16),e[t+1]=this._encodeShort(s.x+n+r,0),e[t+1]|=this._encodeShort(s.y+n,16)}_encodeByte(t,e){return(255&t)<<e}_encodeShort(t,e){return(65535&t)<<e}}i._encodingInfo={[o.R8_SIGNED]:{dataType:s.BYTE,bytesPerElement:1,count:1,normalized:!1},[o.R8_UNSIGNED]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:1,normalized:!1},[o.R16_SIGNED]:{dataType:s.SHORT,bytesPerElement:2,count:1,normalized:!1},[o.R16_UNSIGNED]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:1,normalized:!1},[o.R8G8_SIGNED]:{dataType:s.BYTE,bytesPerElement:1,count:2,normalized:!1},[o.R8G8_UNSIGNED]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:2,normalized:!1},[o.R16G16_SIGNED]:{dataType:s.SHORT,bytesPerElement:2,count:2,normalized:!1},[o.R16G16_UNSIGNED]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:2,normalized:!1},[o.R8G8B8A8_SIGNED]:{dataType:s.BYTE,bytesPerElement:1,count:4,normalized:!1},[o.R8G8B8A8_UNSIGNED]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:4,normalized:!1},[o.R8G8B8A8_COLOR]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:4,normalized:!0},[o.R16G16B16A16_DASHARRAY]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:4,normalized:!1},[o.R16G16B16A16_PATTERN]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:4,normalized:!1}};const a=t=>{switch(t){case s.FLOAT:case s.INT:case s.UNSIGNED_INT:return 4;case s.SHORT:case s.UNSIGNED_SHORT:return 2;case s.BYTE:case s.UNSIGNED_BYTE:return 1}},c=(t,e,o)=>{const n=e/o;if(1===t)switch(n){case 0:return".x";case 1:return".y";case 2:return".z";case 3:return".w"}else if(2===t)switch(n){case 0:return".xy";case 1:return".yz";case 2:return".zw"}else if(3===t)switch(n){case 0:return".xyz";case 1:return".yzw"}return""};export{i as VTLMaterial};
5
+ import{isNone as t}from"../../../../../core/maybe.js";import e from"../MemoryBuffer.js";import{EncodingType as n,AttributeStatus as o}from"./enums.js";import{DataType as s}from"../../../../webgl/enums.js";import{VertexElementDescriptor as r}from"../../../../webgl/VertexElementDescriptor.js";class i{constructor(t){this._locations=new Map,this._key=t}get key(){return this._key}get type(){return 7&this._key}defines(){return[]}getStride(){return this._layoutInfo||this._buildAttributesInfo(),this._stride}getAttributeLocations(){return 0===this._locations.size&&this._buildAttributesInfo(),this._locations}getLayoutInfo(){return this._layoutInfo||this._buildAttributesInfo(),this._layoutInfo}getEncodingInfos(){return this._propertyEncodingInfo||this._buildAttributesInfo(),this._propertyEncodingInfo}getUniforms(){return this._uniforms||this._buildAttributesInfo(),this._uniforms}getShaderHeader(){return this._shaderHeader||this._buildAttributesInfo(),this._shaderHeader}getShaderMain(){return this._shaderMain||this._buildAttributesInfo(),this._shaderMain}setDataUniforms(t,e,n,o,s){const r=this.getUniforms();for(const i of r){const{name:r,type:a,getValue:c}=i,u=c(n,e,o,s);if(null!==u)switch(a){case"float":t.setUniform1f(r,u);break;case"vec2":t.setUniform2fv(r,u);break;case"vec4":t.setUniform4fv(r,u)}}}encodeAttributes(t,e,o,s){const r=this.attributesInfo(),i=this.getEncodingInfos(),a=[];let c=0,u=0;for(const f of Object.keys(i)){const _=i[f],{type:h,precisionFactor:d,isLayout:l}=r[f],y=l?o.getLayoutProperty(f):o.getPaintProperty(f),m=y.interpolator?.getInterpolationRange(e);let I=0;for(const o of _){const{offset:r,bufferElementsToAdd:i}=o;if(i>0){for(let t=0;t<i;t++)a.push(0);c+=u,u=o.bufferElementsToAdd}const f=s??y.getValue(m?m[I]:e,t);switch(h){case n.R8_SIGNED:case n.R8_UNSIGNED:a[c]|=this._encodeByte(f*(d||1),8*r);break;case n.R16_SIGNED:case n.R16_UNSIGNED:a[c]|=this._encodeShort(f*(d||1),8*r);break;case n.R8G8_SIGNED:case n.R8G8_UNSIGNED:a[c]|=this._encodeByte(f*(d||1),8*r),a[c]|=this._encodeByte(f*(d||1),8*r+8);break;case n.R16G16_SIGNED:case n.R16G16_UNSIGNED:a[c]|=this._encodeShort(f*(d||1),8*r),a[c]|=this._encodeShort(f*(d||1),8*r+16);break;case n.R8G8B8A8_SIGNED:case n.R8G8B8A8_UNSIGNED:a[c]|=this._encodeByte(f*(d||1),8*r),a[c]|=this._encodeByte(f*(d||1),8*r+8),a[c]|=this._encodeByte(f*(d||1),8*r+16),a[c]|=this._encodeByte(f*(d||1),8*r+24);break;case n.R8G8B8A8_COLOR:a[c]=this._encodeColor(f);break;case n.R16G16B16A16_DASHARRAY:case n.R16G16B16A16_PATTERN:this._encodePattern(c,a,f);break;default:throw new Error("Unsupported encoding type")}I++}}return a}getAtributeState(t){let e=0;const n=3+2*t;return e|=this._bit(n),e|=this._bit(n+1)<<1,e}_buildAttributesInfo(){const t=[],e={},n={};let r=-1;const a=this.attributesInfo(),c=this.attributes();let u=-1;for(const s of c){u++;const c=this.getAtributeState(u);if(c===o.UNIFORM||c===o.UNUSED)continue;const f=a[s],_=[];e[s]=_;const h=f.type;for(let e=0;e<c;e++){const{dataType:e,bytesPerElement:o,count:s,normalized:a}=i._encodingInfo[h],c=o*s,u=`${e}-${!0===a}`;let f=n[u],d=0;if(!f||f.count+s>4)r++,f={dataIndex:r,count:0,offset:0},4!==s&&(n[u]=f),t.push({location:-1,name:"a_data_"+r,count:s,type:e,normalized:a}),d=Math.ceil(Math.max(c/4,1));else{const e=t[f.dataIndex];e.count+=s;d=Math.ceil(Math.max(e.count*o/4,1))-Math.ceil(Math.max(f.offset/4,1))}_.push({dataIndex:f.dataIndex,offset:f.offset,bufferElementsToAdd:d}),f.offset+=c,f.count+=s}}for(const o of t)switch(o.type){case s.BYTE:case s.UNSIGNED_BYTE:o.count=4;break;case s.SHORT:case s.UNSIGNED_SHORT:o.count+=o.count%2}this._buildVertexBufferLayout(t);let f=0;const _=this._layoutInfo.geometry;for(const o of _)this._locations.set(o.name,f++);const h=this._layoutInfo.opacity;if(h)for(const o of h)this._locations.set(o.name,f++);this._buildShaderInfo(t,e),this._propertyEncodingInfo=e}_buildVertexBufferLayout(t){const e={},n=this.geometryInfo();let o=n[0].stride;if(0===t.length)e.geometry=n;else{const s=[];let i=o;for(const e of t)o+=a(e.type)*e.count;for(const t of n)s.push(new r(t.name,t.count,t.type,t.offset,o,t.normalized));for(const e of t)s.push(new r(e.name,e.count,e.type,i,o,e.normalized)),i+=a(e.type)*e.count;e.geometry=s}this.opacityInfo()&&(e.opacity=this.opacityInfo()),this._layoutInfo=e,this._stride=o}_buildShaderInfo(e,s){let r="\n",a="\n";const u=[];for(const t of e)r+=`attribute ${this._getType(t.count)} ${t.name};\n`;const f=this.attributes(),_=this.attributesInfo();let h=-1;for(const d of f){h++;const{name:e,type:f,precisionFactor:l,isLayout:y}=_[d],m=l&&1!==l?" * "+1/l:"",{bytesPerElement:I,count:E}=i._encodingInfo[f],p=t=>`a_data_${t.dataIndex}${c(E,t.offset,I)}`;switch(this.getAtributeState(h)){case o.UNIFORM:{const o=this._getType(E),s=`u_${e}`;u.push({name:s,type:o,getValue:(e,o,s,r)=>{const i=y?e.getLayoutValue(d,o):e.getPaintValue(d,o);if(f===n.R16G16B16A16_DASHARRAY){const n=e.getDashKey(i,e.getLayoutValue("line-cap",o)),s=r.getMosaicItemPosition(n,!1);if(t(s))return null;const{tl:a,br:c}=s;return[a[0],c[1],c[0],a[1]]}if(f===n.R16G16B16A16_PATTERN){const e=r.getMosaicItemPosition(i,!d.includes("line-"));if(t(e))return null;const{tl:n,br:o}=e;return[n[0],o[1],o[0],n[1]]}if(f===n.R8G8B8A8_COLOR){const t=i[3];return[t*i[0],t*i[1],t*i[2],t]}return i}}),r+=`uniform ${o} ${s};\n`,a+=`${o} ${e} = ${s};\n`}break;case o.DATA_DRIVEN:{const t=p(s[d][0]);a+=`${this._getType(E)} ${e} = ${t}${m};\n`}break;case o.INTERPOLATED_DATA_DRIVEN:{const t=`u_t_${e}`;u.push({name:t,type:"float",getValue:(t,e,n,o)=>(y?t.getLayoutProperty(d):t.getPaintProperty(d)).interpolator.interpolationUniformValue(n,e)}),r+=`uniform float ${t};\n`;const n=p(s[d][0]),o=p(s[d][1]);a+=`${this._getType(E)} ${e} = mix(${n}${m}, ${o}${m}, ${t});\n`}}}this._shaderHeader=r,this._shaderMain=a,this._uniforms=u}_bit(t){return(this._key&1<<t)>>t}_getType(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4"}throw new Error("Invalid count")}_encodeColor(t){const n=255*t[3];return e.i8888to32(t[0]*n,t[1]*n,t[2]*n,n)}_encodePattern(t,e,n){if(!n||!n.rect)return;const o=2,s=n.rect,r=n.width,i=n.height;e[t]=this._encodeShort(s.x+o,0),e[t]|=this._encodeShort(s.y+o+i,16),e[t+1]=this._encodeShort(s.x+o+r,0),e[t+1]|=this._encodeShort(s.y+o,16)}_encodeByte(t,e){return(255&t)<<e}_encodeShort(t,e){return(65535&t)<<e}}i._encodingInfo={[n.R8_SIGNED]:{dataType:s.BYTE,bytesPerElement:1,count:1,normalized:!1},[n.R8_UNSIGNED]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:1,normalized:!1},[n.R16_SIGNED]:{dataType:s.SHORT,bytesPerElement:2,count:1,normalized:!1},[n.R16_UNSIGNED]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:1,normalized:!1},[n.R8G8_SIGNED]:{dataType:s.BYTE,bytesPerElement:1,count:2,normalized:!1},[n.R8G8_UNSIGNED]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:2,normalized:!1},[n.R16G16_SIGNED]:{dataType:s.SHORT,bytesPerElement:2,count:2,normalized:!1},[n.R16G16_UNSIGNED]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:2,normalized:!1},[n.R8G8B8A8_SIGNED]:{dataType:s.BYTE,bytesPerElement:1,count:4,normalized:!1},[n.R8G8B8A8_UNSIGNED]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:4,normalized:!1},[n.R8G8B8A8_COLOR]:{dataType:s.UNSIGNED_BYTE,bytesPerElement:1,count:4,normalized:!0},[n.R16G16B16A16_DASHARRAY]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:4,normalized:!1},[n.R16G16B16A16_PATTERN]:{dataType:s.UNSIGNED_SHORT,bytesPerElement:2,count:4,normalized:!1}};const a=t=>{switch(t){case s.FLOAT:case s.INT:case s.UNSIGNED_INT:return 4;case s.SHORT:case s.UNSIGNED_SHORT:return 2;case s.BYTE:case s.UNSIGNED_BYTE:return 1}},c=(t,e,n)=>{const o=e/n;if(1===t)switch(o){case 0:return".x";case 1:return".y";case 2:return".z";case 3:return".w"}else if(2===t)switch(o){case 0:return".xy";case 1:return".yz";case 2:return".zw"}else if(3===t)switch(o){case 0:return".xyz";case 1:return".yzw"}return""};export{i as VTLMaterial};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Error.js";import t from"../../../../core/Logger.js";import{isPowerOfTwo as r}from"../../../../core/mathUtils.js";import{pt2px as n}from"../../../../core/screenUtils.js";import{CapType as a,JoinType as s}from"../../../../symbols/cim/enums.js";import{copyAndPremultiply as i}from"./color.js";import{WGLGeometryType as o,WGLSymbologyType as c,VVType as u}from"./enums.js";import{TextProperties as l}from"./SymbolProperties.js";import{Usage as m,TextureType as f,PixelFormat as p,PixelType as d,TextureWrapMode as y,DataType as g,TextureSamplingMode as h}from"../../../webgl/enums.js";import{Texture as I}from"../../../webgl/Texture.js";import{VertexElementDescriptor as T}from"../../../webgl/VertexElementDescriptor.js";const E=t.getLogger("esri.views.2d.engine.webgl.Utils"),S="geometry",w="per_instance",L="per_instance_vv",A=[{name:S,strideInBytes:36}],N=[{name:S,strideInBytes:12}],M=[{name:S,strideInBytes:36}],D=[{name:S,strideInBytes:24}],_=[{name:S,strideInBytes:12}],U=[{name:S,strideInBytes:40}],v=[{name:S,strideInBytes:36}],R=[{name:S,strideInBytes:36}];function B(e){const t={};for(const r of e)t[r.name]=r.strideInBytes;return t}const C=B(A),b=B(N),O=B(M),F=B(D),x=B(_),z=B(U),P=B(v),j=B(R);function G(e,t){switch(e){case o.MARKER:return t===c.HEATMAP?b:C;case o.FILL:switch(t){case c.DOT_DENSITY:return x;case c.SIMPLE:case c.OUTLINE_FILL_SIMPLE:return F;default:return O}case o.LINE:return z;case o.TEXT:return P;case o.LABEL:return j}}const $=[S],k=[S],V=[S],Y=[S],H=[S];function q(e){switch(e){case o.MARKER:return $;case o.FILL:return k;case o.LINE:return V;case o.TEXT:return Y;case o.LABEL:return H}}function X(e){switch(e%4){case 0:case 2:return 4;case 1:case 3:return 1}}function K(e,t){switch(t%4){case 0:case 2:return new Uint32Array(Math.floor(e*t/4));case 1:case 3:return new Uint8Array(e*t)}}function W(e,t){switch(t%4){case 0:case 2:return new Uint32Array(e);case 1:case 3:return new Uint8Array(e)}}function Z(e){return l.pool.acquire(e.color?i(e.color):[255,255,255,255],e.haloColor?i(e.haloColor):[255,255,255,255],n(e.haloSize),n(e.font.size),e.angle*Math.PI/180,e.xoffset/e.font.size,e.yoffset/e.font.size,"left"===e.horizontalAlignment?0:"right"===e.horizontalAlignment?1:.5,"top"===e.verticalAlignment?0:"bottom"===e.verticalAlignment?1:.5)}function J(e){return null!=e}function Q(e){return"number"==typeof e}function ee(t){switch(t){case"butt":return a.BUTT;case"round":return a.ROUND;case"square":return a.SQUARE;default:return E.error(new e("mapview-invalid-type",`Cap type ${t} is not a valid option. Defaulting to round`)),a.ROUND}}function te(t){switch(t){case"miter":return s.MITER;case"bevel":return s.BEVEL;case"round":return s.ROUND;default:return E.error(new e("mapview-invalid-type",`Join type ${t} is not a valid option. Defaulting to round`)),s.ROUND}}function re(e){switch(e){case"opacity":return u.OPACITY;case"color":return u.COLOR;case"rotation":return u.ROTATION;case"size":return u.SIZE;default:return E.error(`Cannot interpret unknown vv: ${e}`),null}}function ne(e){const{transform:t,hasZ:r,hasM:n}=e;return{transform:t,hasZ:r,hasM:n}}function ae(e,t,r,n,a,s,i){for(const c in s){const t=s[c].stride,n=X(t),i=s[c].data,o=r[c].data,u=t*a.vertexCount/n,l=t*e/n,m=t*a.vertexFrom/n;for(let e=0;e<u;++e)o[e+l]=i[e+m]}const o=a.indexCount;for(let c=0;c<o;++c)n[c+t]=i[c+a.indexFrom]-a.vertexFrom+e}const se={[S]:m.STATIC_DRAW};function ie(e,t){const r=[];for(let n=0;n<5;++n){const a=q(n),s={};for(const e of a)s[e]={data:t(n,e)};r.push({data:e(n),buffers:s})}return r}function oe(e,t){let n,a;return r(t.width)&&r(t.height)?(n=!0,a=h.LINEAR_MIPMAP_LINEAR):(n=!1,a=h.LINEAR),new I(e,{target:f.TEXTURE_2D,pixelFormat:p.RGBA,internalFormat:p.RGBA,dataType:d.UNSIGNED_BYTE,hasMipmap:n,samplingMode:a,wrapMode:y.CLAMP_TO_EDGE,flipped:!0},t)}function ce(e){return{vertexFrom:void 0,vertexTo:void 0,geometry:e}}function ue(e){switch(e){case g.BYTE:case g.UNSIGNED_BYTE:return 1;case g.SHORT:case g.UNSIGNED_SHORT:return 2;case g.FLOAT:case g.INT:case g.UNSIGNED_INT:return 4}}function le(t){switch(t){case d.UNSIGNED_BYTE:return 1;case d.UNSIGNED_SHORT_4_4_4_4:return 2;case d.FLOAT:return 4;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function me(t){switch(t){case d.UNSIGNED_BYTE:return Uint8Array;case d.UNSIGNED_SHORT_4_4_4_4:return Uint16Array;case d.FLOAT:return Float32Array;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function fe(e){const t={};for(const r in e){const n=e[r];let a=0;t[r]=n.map((e=>{const t=new T(e.name,e.count,e.type,a,0,e.normalized||!1);return a+=e.count*ue(e.type),t})),t[r].forEach((e=>e.stride=a))}return t}const pe=e=>{const t=new Map;for(const r in e)for(const n of e[r])t.set(n.name,n.location);return t},de=e=>{const t={};for(const r in e){const n=e[r];t[r]=n.length?n[0].stride:0}return t},ye=new Map,ge=(e,t)=>{if(!ye.has(e)){const r=fe(t),n={strides:de(r),bufferLayouts:r,attributes:pe(t)};ye.set(e,n)}return ye.get(e)};function he(e){e(o.FILL),e(o.LINE),e(o.MARKER),e(o.TEXT),e(o.LABEL)}const Ie=e=>"path"in e&&Re(e.path),Te=e=>"url"in e&&e.url||"imageData"in e&&e.imageData,Ee=e=>"imageData"in e&&e.imageData&&"contentType"in e&&e.contentType?`data:${e.contentType};base64,${e.imageData}`:"url"in e?e.url:null,Se=e=>e.startsWith("data:image/gif"),we=e=>"url"in e&&e.url&&(e.url.includes(".gif")||Se(e.url))||"contentType"in e&&"image/gif"===e.contentType||"imageData"in e&&Se(e.imageData),Le=e=>e.startsWith("data:image/png"),Ae=e=>"url"in e&&e.url&&(e.url.includes(".png")||Le(e.url))||"contentType"in e&&"image/png"===e.contentType||"imageData"in e&&Le(e.imageData),Ne=e=>e.type&&e.type.toLowerCase().includes("3d");function Me(e){switch(e.type){case"line":{const t=e;return"CIMSolidStroke"===t.cim.type&&!t.dashTemplate}case"fill":return"CIMSolidFill"===e.cim.type;case"esriSFS":return"esriSFSSolid"===e.style||"esriSFSNull"===e.style;case"esriSLS":return"esriSLSSolid"===e.style||"esriSLSNull"===e.style;default:return!1}}const De=e=>e.includes("data:image/svg+xml");function _e(e){switch("cim"in e?e.cim.type:e.type){case"esriSMS":case"esriPMS":case"CIMPointSymbol":return!1;case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":return Be(e);default:return!0}}function Ue(e){const t="maxVVSize"in e&&e.maxVVSize,r="width"in e&&e.width||"size"in e&&e.size||0;return t||r}function ve(e){const t=[];for(let r=0;r<e.length;r++)t.push(e.charCodeAt(r));return t}const Re=e=>!!e&&(e=e.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(e)&&/[\dz]$/i.test(e)&&e.length>4)),Be=e=>"fill"===e.type&&"CIMMarkerPlacementInsidePolygon"===e?.cim?.markerPlacement?.type;export{O as C_FILL_STRIDE_SPEC,x as C_FILL_STRIDE_SPEC_DD,F as C_FILL_STRIDE_SPEC_SIMPLE,M as C_FILL_VERTEX_DEF,_ as C_FILL_VERTEX_DEF_DD,D as C_FILL_VERTEX_DEF_SIMPLE,b as C_HEATMAP_STRIDE_SPEC,N as C_HEATMAP_VERTEX_DEF,C as C_ICON_STRIDE_SPEC,A as C_ICON_VERTEX_DEF,j as C_LABEL_STRIDE_SPEC,R as C_LABEL_VERTEX_DEF,z as C_LINE_STRIDE_SPEC,U as C_LINE_VERTEX_DEF,P as C_TEXT_STRIDE_SPEC,v as C_TEXT_VERTEX_DEF,S as C_VBO_GEOMETRY,se as C_VBO_INFO,w as C_VBO_PERINSTANCE,L as C_VBO_PERINSTANCE_VV,K as allocateTypedArrayBuffer,W as allocateTypedArrayBufferwithData,ve as charCodes,ae as copyMeshData,ie as createGeometryData,ge as createProgramDescriptor,oe as createTextureFromTexelData,he as forEachGeometryType,ce as geometryToMappedGeometry,ue as getBytes,ee as getCapType,te as getJoinType,q as getNamedBuffers,Ue as getPMSResourceSize,me as getPixelArrayCtor,le as getPixelBytes,G as getStrides,Z as getTextProperties,ne as getTransformParams,Ee as getUrl,re as getVVType,Ne as is3D,J as isDefined,we as isGIF,Se as isGIFDataUri,Te as isImageResource,Be as isMarkerPlacementInsidePolygon,Q as isNumber,Ae as isPNG,Le as isPNGDataUri,De as isSVGImage,Ie as isSVGResource,Me as isSimple,Re as isValidSVG,_e as shouldRepeat,X as strideToPackingFactor};
5
+ import e from"../../../../core/Error.js";import t from"../../../../core/Logger.js";import{isPowerOfTwo as r}from"../../../../core/mathUtils.js";import{pt2px as n}from"../../../../core/screenUtils.js";import{CapType as a,JoinType as s}from"../../../../symbols/cim/enums.js";import{copyAndPremultiply as i}from"./color.js";import{WGLGeometryType as o,WGLSymbologyType as c,VVType as u}from"./enums.js";import{TextProperties as l}from"./SymbolProperties.js";import{Usage as m,TextureSamplingMode as f,TextureType as p,PixelFormat as d,PixelType as y,TextureWrapMode as g,DataType as h}from"../../../webgl/enums.js";import{Texture as I}from"../../../webgl/Texture.js";import{VertexElementDescriptor as T}from"../../../webgl/VertexElementDescriptor.js";const E=t.getLogger("esri.views.2d.engine.webgl.Utils"),S="geometry",w="per_instance",L="per_instance_vv",A=[{name:S,strideInBytes:36}],N=[{name:S,strideInBytes:12}],M=[{name:S,strideInBytes:36}],D=[{name:S,strideInBytes:24}],_=[{name:S,strideInBytes:12}],U=[{name:S,strideInBytes:40}],v=[{name:S,strideInBytes:36}],R=[{name:S,strideInBytes:36}];function B(e){const t={};for(const r of e)t[r.name]=r.strideInBytes;return t}const C=B(A),b=B(N),O=B(M),F=B(D),x=B(_),z=B(U),P=B(v),j=B(R);function G(e,t){switch(e){case o.MARKER:return t===c.HEATMAP?b:C;case o.FILL:switch(t){case c.DOT_DENSITY:return x;case c.SIMPLE:case c.OUTLINE_FILL_SIMPLE:return F;default:return O}case o.LINE:return z;case o.TEXT:return P;case o.LABEL:return j}}const $=[S],k=[S],V=[S],Y=[S],H=[S];function q(e){switch(e){case o.MARKER:return $;case o.FILL:return k;case o.LINE:return V;case o.TEXT:return Y;case o.LABEL:return H}}function X(e){switch(e%4){case 0:case 2:return 4;case 1:case 3:return 1}}function K(e,t){switch(t%4){case 0:case 2:return new Uint32Array(Math.floor(e*t/4));case 1:case 3:return new Uint8Array(e*t)}}function W(e,t){switch(t%4){case 0:case 2:return new Uint32Array(e);case 1:case 3:return new Uint8Array(e)}}function Z(e){return l.pool.acquire(e.color?i(e.color):[255,255,255,255],e.haloColor?i(e.haloColor):[255,255,255,255],n(e.haloSize),n(e.font.size),e.angle*Math.PI/180,e.xoffset/e.font.size,e.yoffset/e.font.size,"left"===e.horizontalAlignment?0:"right"===e.horizontalAlignment?1:.5,"top"===e.verticalAlignment?0:"bottom"===e.verticalAlignment?1:.5)}function J(e){return null!=e}function Q(e){return"number"==typeof e}function ee(t){switch(t){case"butt":return a.BUTT;case"round":return a.ROUND;case"square":return a.SQUARE;default:return E.error(new e("mapview-invalid-type",`Cap type ${t} is not a valid option. Defaulting to round`)),a.ROUND}}function te(t){switch(t){case"miter":return s.MITER;case"bevel":return s.BEVEL;case"round":return s.ROUND;default:return E.error(new e("mapview-invalid-type",`Join type ${t} is not a valid option. Defaulting to round`)),s.ROUND}}function re(e){switch(e){case"opacity":return u.OPACITY;case"color":return u.COLOR;case"rotation":return u.ROTATION;case"size":return u.SIZE;default:return E.error(`Cannot interpret unknown vv: ${e}`),null}}function ne(e){const{transform:t,hasZ:r,hasM:n}=e;return{transform:t,hasZ:r,hasM:n}}function ae(e,t,r,n,a,s,i){for(const c in s){const t=s[c].stride,n=X(t),i=s[c].data,o=r[c].data,u=t*a.vertexCount/n,l=t*e/n,m=t*a.vertexFrom/n;for(let e=0;e<u;++e)o[e+l]=i[e+m]}const o=a.indexCount;for(let c=0;c<o;++c)n[c+t]=i[c+a.indexFrom]-a.vertexFrom+e}const se={[S]:m.STATIC_DRAW};function ie(e,t){const r=[];for(let n=0;n<5;++n){const a=q(n),s={};for(const e of a)s[e]={data:t(n,e)};r.push({data:e(n),buffers:s})}return r}function oe(e,t){let n,a;return r(t.width)&&r(t.height)?(n=!0,a=f.LINEAR_MIPMAP_LINEAR):(n=!1,a=f.LINEAR),new I(e,{target:p.TEXTURE_2D,pixelFormat:d.RGBA,internalFormat:d.RGBA,dataType:y.UNSIGNED_BYTE,hasMipmap:n,samplingMode:a,wrapMode:g.CLAMP_TO_EDGE,flipped:!0},t)}function ce(e){return{vertexFrom:void 0,vertexTo:void 0,geometry:e}}function ue(e){switch(e){case h.BYTE:case h.UNSIGNED_BYTE:return 1;case h.SHORT:case h.UNSIGNED_SHORT:return 2;case h.FLOAT:case h.INT:case h.UNSIGNED_INT:return 4}}function le(t){switch(t){case y.UNSIGNED_BYTE:return 1;case y.UNSIGNED_SHORT_4_4_4_4:return 2;case y.FLOAT:return 4;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function me(t){switch(t){case y.UNSIGNED_BYTE:return Uint8Array;case y.UNSIGNED_SHORT_4_4_4_4:return Uint16Array;case y.FLOAT:return Float32Array;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function fe(e){const t={};for(const r in e){const n=e[r];let a=0;t[r]=n.map((e=>{const t=new T(e.name,e.count,e.type,a,0,e.normalized||!1);return a+=e.count*ue(e.type),t})),t[r].forEach((e=>e.stride=a))}return t}const pe=e=>{const t=new Map;for(const r in e)for(const n of e[r])t.set(n.name,n.location);return t},de=e=>{const t={};for(const r in e){const n=e[r];t[r]=n.length?n[0].stride:0}return t},ye=new Map,ge=(e,t)=>{if(!ye.has(e)){const r=fe(t),n={strides:de(r),bufferLayouts:r,attributes:pe(t)};ye.set(e,n)}return ye.get(e)};function he(e){e(o.FILL),e(o.LINE),e(o.MARKER),e(o.TEXT),e(o.LABEL)}const Ie=e=>"path"in e&&Re(e.path),Te=e=>"url"in e&&e.url||"imageData"in e&&e.imageData,Ee=e=>"imageData"in e&&e.imageData&&"contentType"in e&&e.contentType?`data:${e.contentType};base64,${e.imageData}`:"url"in e?e.url:null,Se=e=>e.startsWith("data:image/gif"),we=e=>"url"in e&&e.url&&(e.url.includes(".gif")||Se(e.url))||"contentType"in e&&"image/gif"===e.contentType||"imageData"in e&&Se(e.imageData),Le=e=>e.startsWith("data:image/png"),Ae=e=>"url"in e&&e.url&&(e.url.includes(".png")||Le(e.url))||"contentType"in e&&"image/png"===e.contentType||"imageData"in e&&Le(e.imageData),Ne=e=>e.type&&e.type.toLowerCase().includes("3d");function Me(e){switch(e.type){case"line":{const t=e;return"CIMSolidStroke"===t.cim.type&&!t.dashTemplate}case"fill":return"CIMSolidFill"===e.cim.type;case"esriSFS":return"esriSFSSolid"===e.style||"esriSFSNull"===e.style;case"esriSLS":return"esriSLSSolid"===e.style||"esriSLSNull"===e.style;default:return!1}}const De=e=>e.includes("data:image/svg+xml");function _e(e){switch("cim"in e?e.cim.type:e.type){case"esriSMS":case"esriPMS":case"CIMPointSymbol":return!1;case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":return Be(e);default:return!0}}function Ue(e){const t="maxVVSize"in e&&e.maxVVSize,r="width"in e&&e.width||"size"in e&&e.size||0;return t||r}function ve(e){const t=[];for(let r=0;r<e.length;r++)t.push(e.charCodeAt(r));return t}const Re=e=>!!e&&(e=e.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(e)&&/[\dz]$/i.test(e)&&e.length>4)),Be=e=>"fill"===e.type&&"CIMMarkerPlacementInsidePolygon"===e?.cim?.markerPlacement?.type;export{O as C_FILL_STRIDE_SPEC,x as C_FILL_STRIDE_SPEC_DD,F as C_FILL_STRIDE_SPEC_SIMPLE,M as C_FILL_VERTEX_DEF,_ as C_FILL_VERTEX_DEF_DD,D as C_FILL_VERTEX_DEF_SIMPLE,b as C_HEATMAP_STRIDE_SPEC,N as C_HEATMAP_VERTEX_DEF,C as C_ICON_STRIDE_SPEC,A as C_ICON_VERTEX_DEF,j as C_LABEL_STRIDE_SPEC,R as C_LABEL_VERTEX_DEF,z as C_LINE_STRIDE_SPEC,U as C_LINE_VERTEX_DEF,P as C_TEXT_STRIDE_SPEC,v as C_TEXT_VERTEX_DEF,S as C_VBO_GEOMETRY,se as C_VBO_INFO,w as C_VBO_PERINSTANCE,L as C_VBO_PERINSTANCE_VV,K as allocateTypedArrayBuffer,W as allocateTypedArrayBufferwithData,ve as charCodes,ae as copyMeshData,ie as createGeometryData,ge as createProgramDescriptor,oe as createTextureFromTexelData,he as forEachGeometryType,ce as geometryToMappedGeometry,ue as getBytes,ee as getCapType,te as getJoinType,q as getNamedBuffers,Ue as getPMSResourceSize,me as getPixelArrayCtor,le as getPixelBytes,G as getStrides,Z as getTextProperties,ne as getTransformParams,Ee as getUrl,re as getVVType,Ne as is3D,J as isDefined,we as isGIF,Se as isGIFDataUri,Te as isImageResource,Be as isMarkerPlacementInsidePolygon,Q as isNumber,Ae as isPNG,Le as isPNGDataUri,De as isSVGImage,Ie as isSVGResource,Me as isSimple,Re as isValidSVG,_e as shouldRepeat,X as strideToPackingFactor};