@arcgis/core 5.2.0-next.93 → 5.2.0-next.94

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 (84) hide show
  1. package/arcade/arcadeAsyncRuntime.js +1 -1
  2. package/arcade/arcadeCompiler.js +1 -1
  3. package/arcade/functions/portal.js +2 -0
  4. package/arcade/treeAnalysis.js +1 -1
  5. package/assets/esri/core/workers/RemoteClient.js +1 -1
  6. package/assets/esri/core/workers/chunks/0be98adfef79fc5036f0.js +1 -0
  7. package/assets/esri/core/workers/chunks/5d6733dcee9c2ef00072.js +1 -0
  8. package/assets/esri/core/workers/chunks/{aed7b80145b22c246098.js → 6cbc30b31f0bb39c73ca.js} +1 -1
  9. package/assets/esri/core/workers/chunks/6cc03ef97d7731153b9a.js +1 -0
  10. package/assets/esri/core/workers/chunks/7eae9053065d3d38e54e.js +1 -0
  11. package/assets/esri/core/workers/chunks/87e9f7e85221bc7e6709.js +1 -0
  12. package/assets/esri/core/workers/chunks/909ee7d2a0eec773037a.js +1 -0
  13. package/assets/esri/core/workers/chunks/a0eb882a5a81d25b9153.js +1 -0
  14. package/assets/esri/core/workers/chunks/{6fd0d9431b141f2a3252.js → cefb70d633c220cbedf9.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{69c9a12c97ead8963817.js → d1304d414b1fa725168a.js} +1 -1
  16. package/assets/esri/core/workers/chunks/d453627894e6e5b02023.js +1 -0
  17. package/assets/esri/core/workers/chunks/e4380706b629729f2212.js +1 -0
  18. package/assets/esri/core/workers/chunks/{5d9c92c4e60a4696fdad.js → e488e5c62cb375c87a39.js} +1 -1
  19. package/assets/esri/core/workers/chunks/ea1877ce00da3b585a30.js +1 -0
  20. package/assets/esri/core/workers/chunks/ec77222776f755dc372c.js +1 -0
  21. package/assets/esri/core/workers/chunks/f5867d8ba73c67ac27d2.js +1 -0
  22. package/assets/esri/core/workers/chunks/{b7ed5f130661e9ca00b9.js → f5a058a0ce006bce2a2a.js} +1 -1
  23. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  24. package/chunks/Fog.glsl.js +5 -5
  25. package/chunks/GlowBlur.glsl.js +3 -3
  26. package/chunks/GlowComposite.glsl.js +1 -36
  27. package/chunks/bundle.js +1 -1
  28. package/chunks/portal.js +2 -0
  29. package/config.js +1 -1
  30. package/kernel.js +1 -1
  31. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  32. package/layers/support/AnnotationFeatureSublayer.js +1 -1
  33. package/libs/parquet/parquet.js +1 -1
  34. package/package.json +3 -3
  35. package/support/revision.js +1 -1
  36. package/views/2d/engine/Stage.js +1 -1
  37. package/views/2d/engine/vectorTiles/SpriteMosaic.js +1 -1
  38. package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
  39. package/views/2d/engine/webgl/Painter.js +1 -1
  40. package/views/2d/engine/webgl/SpriteMosaic.js +1 -1
  41. package/views/2d/engine/webgl/shaderGraph/techniques/Technique.js +1 -1
  42. package/views/2d/engine/webgl/shaderGraph/techniques/heatmap/HeatmapTechnique.js +1 -1
  43. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelTechnique.js +1 -1
  44. package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileDebugInfoTechnique.js +1 -1
  45. package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileStencilTechnique.js +1 -1
  46. package/views/2d/layers/AnnotationFeatureLayerView2D.js +1 -1
  47. package/views/2d/layers/features/FeatureContainer.js +1 -1
  48. package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
  49. package/views/2d/layers/features/support/FeatureSetReaderParquet.js +1 -1
  50. package/views/2d/layers/graphics/GraphicContainer.js +1 -1
  51. package/views/2d/layers/graphics/HighlightGraphicContainer.js +1 -1
  52. package/views/3d/environment/CloudyWeather.js +1 -1
  53. package/views/3d/environment/SunnyWeather.js +1 -1
  54. package/views/3d/support/GaussianSplatSortWorker.js +1 -1
  55. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
  56. package/views/3d/terrain/TileCompositor.js +1 -1
  57. package/views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js +1 -1
  58. package/views/3d/webgl-engine/effects/clouds/CloudsParameters.js +1 -1
  59. package/views/3d/webgl-engine/effects/clouds/CloudsPresets.js +1 -1
  60. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +1 -1
  61. package/views/3d/webgl-engine/effects/glow/Glow.js +1 -1
  62. package/views/3d/webgl-engine/effects/glow/GlowBlur.glsl.js +1 -1
  63. package/views/3d/webgl-engine/effects/glow/GlowComposite.glsl.js +1 -1
  64. package/views/3d/webgl-engine/effects/glow/GlowCompositeTechnique.js +1 -1
  65. package/views/3d/webgl-engine/effects/glow/blurEmission.glsl.js +38 -0
  66. package/views/3d/webgl-engine/effects/shadowAccumulation/ShadowAccumulator.js +1 -1
  67. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  68. package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
  69. package/views/3d/webgl-engine/lib/RenderContext.js +1 -1
  70. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  71. package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
  72. package/views/popupAdapter.js +1 -1
  73. package/assets/esri/core/workers/chunks/0846855843f85661e974.js +0 -1
  74. package/assets/esri/core/workers/chunks/30376f00cda1165a2504.js +0 -1
  75. package/assets/esri/core/workers/chunks/423c2692df662b3dddd4.js +0 -1
  76. package/assets/esri/core/workers/chunks/46f8c7ae7fb356c3410d.js +0 -1
  77. package/assets/esri/core/workers/chunks/4bf7c0c874d30b1c0760.js +0 -1
  78. package/assets/esri/core/workers/chunks/7253a439c98200e3e748.js +0 -1
  79. package/assets/esri/core/workers/chunks/848a9f0e5373bbf289a5.js +0 -1
  80. package/assets/esri/core/workers/chunks/b2e2234fdf8e05bc3312.js +0 -1
  81. package/assets/esri/core/workers/chunks/bb23e670736bcace8b6f.js +0 -1
  82. package/assets/esri/core/workers/chunks/ec69dd546c312ba97110.js +0 -1
  83. package/assets/esri/core/workers/chunks/f247f3c5148fa0237a7c.js +0 -1
  84. package/assets/esri/core/workers/chunks/f4d351b4cd9d1aa10632.js +0 -1
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../core/Error.js";import n from"../../core/Logger.js";import{latitudeFieldNames as t,longitudeFieldNames as o}from"../../layers/support/locationUtils.js";import{loadParquetModule as r}from"./loadParquetModule.js";const i=()=>n.getLogger("esri.layers.ParquetLayer"),l=new Set(["uncompressed","snappy","gzip"]),u=new Set(["esriFieldTypeSmallInteger","esriFieldTypeInteger","esriFieldTypeBigInteger","esriFieldTypeSingle","esriFieldTypeDouble","esriFieldTypeLong"]);function s(n,t){switch(t){case"esriGeometryPoint":return n.GeometryType.Point;case"esriGeometryPolygon":case"polygon":return n.GeometryType.Polygon;case"esriGeometryPolyline":case"polyline":return n.GeometryType.Polyline;case"esriGeometryMultipoint":case"multipoint":return n.GeometryType.Multipoint;default:throw new e("parquet",`Found unexpected GeometryType: ${t}`)}}function a(e,n){const t=n.encoding,o=s(e,n.geometryType),r=n.spatialReference.wkid;if(null==r)throw new Error("InternalError: Wkid must be defined.");switch(t.type){case"wkb":return e.GeometryField.fromWkb(t.field,r,o);case"location":{const{yField:n,xField:i}=t;return e.GeometryField.fromLocation(n,i,r,o)}}}function m(e,n){const t=e.GeometryInfo.new();n.geometry&&t.setGeometry(a(e,n.geometry));const o=n.displayOptimization;if(o){const{index:n}=o;if("z"===n.type){const o=e.DisplayOptimizationZBuilder.new();o.setCodeField(f(n.code)),o.setXColumn(f(n.xColumn)),o.setYColumn(f(n.yColumn)),null!=n.zColumn&&o.setZColumn(f(n.zColumn)),null!=n.mColumn&&o.setMColumn(f(n.mColumn)),o.setCooordinatePrecision(n.coordinatePrecision),o.setFullExtent(n.fullExtent),o.setSpatialReference(n.wkid,null==n.wkid?n.wkt:void 0),o.setHasZ(!!n.zColumn),o.setHasM(!!n.mColumn),n.zColumn&&o.setZColumn(f(n.zColumn)),n.mColumn&&o.setMColumn(f(n.mColumn)),t.setOptmizationZ(o)}if("xz"===n.type){const o=s(e,n.geometryType),r=e.DisplayOptimizationXZBuilder.new();r.setCodeField(f(n.code)),r.setEncoding(n.encoding),r.setFullExtent(n.fullExtent),r.setGeometryType(o),r.setSpatialReference(n.wkid,null==n.wkid?n.wkt:void 0),r.setMaxLevel(n.maxLevel),r.setHasZ(n.hasZ??!1),r.setHasM(n.hasM??!1);for(const t of n.levels??[]){const n=new Float64Array(t.transform.translate),o=new Float64Array(t.transform.scale),i=f(t.column);r.addLevel(e.MultiscaleGeometryField.new(t.level,t.resolution,i,n,o))}t.setOptmizationXZ(r)}}return t}async function c(n,t){const o=await r(),i=t.geometryInfo?m(o,t.geometryInfo):null,l=t.provider.fetchRange.bind(t.provider),u=t.provider.fetchLength.bind(t.provider);try{return await o.ParquetFile.fromUrl(n,l,u,i)}catch(s){throw new e("parquet","Failed to parse file",{error:s})}}function p(e){const n=e.keyValueMetadata("geo");return null!=n?JSON.parse(n):null}function y(n){if(n.keyValueMetadata("esri"))throw new e("parquet:unsupported","File was created using an unsupported experimental display index. Please regenerate the file.");const t=n.keyValueMetadata("geodisplay");if(null!=t){return{present:!0,optimization:d({index:JSON.parse(t)})}}const o=n.keyValueMetadata("org.apache.spark.sql.parquet.row.metadata");if(null!=o){const e=JSON.parse(o);for(const n of e.fields)if(null!=n.metadata&&w(n.metadata)){if(!h(n.metadata))return i().warn("parquet:protocol-violation","Ignoring display optimization, found invalid column path",{index:n.metadata}),{present:!0,optimization:null};const e=g(n.metadata,n.name);return null==e?(i().warn("parquet:protocol-violation","Ignoring display optimization, Spark display column paths must be non-empty strings",{index:n.metadata}),{present:!0,optimization:null}):{present:!0,optimization:d({index:e})}}}return{present:!1,optimization:null}}function d(e){if(!h(e.index))return i().warn("parquet:protocol-violation","Ignoring display optimization, found invalid column path",{index:e.index}),null;if("xz"===e.index.type&&(e.index.geometryType=E(e.index.geometryType),"esri-pbf"===e.index.encoding&&(e.index.encoding="esriPBF"),"esriPBF"!==e.index.encoding))return i().warn("parquet:unsupported",`Encoding for display index must be of type esriPBF, but found ${e.index.encoding}`),null;const{xmin:n,ymin:t,xmax:o,ymax:r}=e.index.fullExtent;return Number.isFinite(n)&&Number.isFinite(t)&&Number.isFinite(o)&&Number.isFinite(r)?e:(i().warn("parquet:protocol-violation","Ignoring display optimization, found bad extent",{index:e.index}),null)}function f(e){return Array.isArray(e)?e.join("."):e}function g(e,n){if("z"===e.type){const t=x(e.code,n),o=x(e.xColumn,n),r=x(e.yColumn,n),i=null==e.zColumn?e.zColumn:x(e.zColumn,n),l=null==e.mColumn?e.mColumn:x(e.mColumn,n);return null==t||null==o||null==r||null===i||null===l?null:{...e,code:t,xColumn:o,yColumn:r,...null==i?{}:{zColumn:i},...null==l?{}:{mColumn:l}}}const t=x(e.code,n),o=[];for(const r of e.levels){const e=x(r.column,n);if(null==e)return null;o.push({...r,column:e})}return null==t?null:{...e,code:t,levels:o}}function x(e,n){return"string"==typeof e&&e.length>0?[n,e]:null}function w(e){return"object"==typeof e&&null!=e&&"type"in e&&("z"===e.type||"xz"===e.type)}function h(e){return"z"===e.type?C(e.code)&&C(e.xColumn)&&C(e.yColumn)&&(null==e.zColumn||C(e.zColumn))&&(null==e.mColumn||C(e.mColumn)):C(e.code)&&Array.isArray(e.levels)&&e.levels.every(e=>"object"==typeof e&&null!=e&&"column"in e&&C(e.column))}function C(e){return"string"==typeof e&&e.length>0||Array.isArray(e)&&2===e.length&&e.every(e=>"string"==typeof e&&e.length>0)}function z(e){if(null==e)return null;const n=e.ordering,t=e.lod;if(null==n&&null==t)return null;if("xz"!==n?.type||null==t||n.geometry_column!==e.primary_column||t.geometry_column!==e.primary_column||n.geometry_column!==t.geometry_column||20!==n.max_level||!G(n.extent)||"pbf"!==t.encoding)return M(e,"ordering and lod must form a valid primary-column XZ pair");const o=e.columns[e.primary_column],r=v(o);if(null==r||!F(t.orientation,r.geometryType))return M(e,"geometry type, dimensions, or LOD orientation is invalid");const i=k(t.levels),l=R(o)?.wkid;if(null==i||null==l)return M(e,"LOD levels or spatial reference is invalid");const[u,s,a,m]=n.extent;return{index:{type:"xz",code:"geokey",wkid:l,wkt:null,encoding:"esriPBF",fullExtent:{xmin:u,ymin:s,xmax:a,ymax:m},geometryType:r.geometryType,maxLevel:n.max_level,hasZ:r.hasZ,hasM:r.hasM,levels:i}}}function M(e,n){return i().warn("parquet:protocol-violation",`Ignoring GeoParquet ordering and LOD extensions: ${n}`,{lod:e.lod,ordering:e.ordering}),null}function v(e){if(null==e||0===e.geometry_types.length)return null;let n,t;for(const o of e.geometry_types){const e=/^(LineString|MultiLineString|Polygon|MultiPolygon)(?: (Z|M|ZM))?$/.exec(o);if(null==e)return null;const r="LineString"===e[1]||"MultiLineString"===e[1]?"polyline":"polygon";if(null!=n&&n!==r||null!=t&&t!==(e[2]??""))return null;n=r,t=e[2]??""}return null==n||null==t?null:{geometryType:n,hasZ:"Z"===t||"ZM"===t,hasM:"M"===t||"ZM"===t}}function F(e,n){return"polygon"===n?"clockwise"===e:null==e}function k(e){if(!Array.isArray(e)||0===e.length)return null;const n=new Set,t=e.slice().sort((e,n)=>n.resolution-e.resolution),o=[];for(const[r,i]of t.entries()){if(!P(i.column)||!Number.isFinite(i.resolution)||i.resolution<=0||n.has(i.resolution)||!b(i.transform))return null;n.add(i.resolution),o.push({column:i.column,level:r,resolution:i.resolution,transform:i.transform})}return o}function P(e){return Array.isArray(e)&&2===e.length&&"geolod"===e[0]&&"string"==typeof e[1]&&e[1].length>0}function b(e){return Z(e?.scale,!0)&&Z(e?.translate,!1)}function Z(e,n){return Array.isArray(e)&&4===e.length&&e.every(e=>"number"==typeof e&&Number.isFinite(e)&&(!n||e>0))}function G(e){return Z(e,!1)&&e[0]<e[2]&&e[1]<e[3]}function T(e){q(e);const n=L(e),t=p(e),o=y(e),r=o.present?o.optimization:z(t),i=S(t,n),{hasZ:l,hasM:u}=A(t,r);let s,a;if(i)switch(i.type){case"location":a={wkid:4326},s="esriGeometryPoint";break;case"wkb":if(t){const e=t.primary_column,n=t.columns[e];s=N(n),a=R(n)}}if(r){const e=r.index;!a&&e.wkid&&(a={wkid:e.wkid}),s||(s="z"===e.type?"esriGeometryPoint":I(e.geometryType))}return{geoMetadata:t,displayOptimization:r,hasZ:l,hasM:u,geometryEncoding:i,geometryInfo:a&&s?{geometry:i?{geometryType:s,spatialReference:a,encoding:i}:null,displayOptimization:r}:null,geometryType:s,spatialReference:a,extent:$(t,r,a),fields:n}}function q(n){for(const t of n.compressionCodecs())if(!l.has(t))throw new e("parquet:unsupported",`Compression codec ${t} is unsupported. Must be of type ${Array.from(l).join(",")}`)}function L(e){return e.fields(!1).map(e=>({name:e.name,alias:e.name,type:e.type}))}function S(e,n){if(null!=e){const n=e.primary_column;return{type:"wkb",field:n,orientation:"counterclockwise"===e.columns[n].orientation?"counter-clockwise":null}}const t=_(n.filter(e=>u.has(e.type)).map(e=>e.name));return t.latitudeFieldName&&t.longitudeFieldName?{type:"location",xField:t.longitudeFieldName,yField:t.latitudeFieldName}:null}function _(e){const n=e.map(e=>e.toLowerCase());return{longitudeFieldName:e[n.indexOf(o.find(e=>n.includes(e)))],latitudeFieldName:e[n.indexOf(t.find(e=>n.includes(e)))]}}function N(n){const{geometry_types:t}=n,o=new Set;for(const e of t){const n=O(e);n&&o.add(n)}if(o.size>1)throw new e("parquet:unsupported","Parquet mixed geometry types are not supported",{geometryTypes:o});return 1===o.size?o.values().next().value:void 0}function O(e){switch(e.replace(/ (?:Z|M|ZM)$/u,"")){case"Point":return"esriGeometryPoint";case"Polygon":case"MultiPolygon":return"esriGeometryPolygon";case"LineString":case"MultiLineString":return"esriGeometryPolyline";case"MultiPoint":return"esriGeometryMultipoint";default:return null}}function A(e,n){const t=n?.index;if("z"===t?.type)return{hasZ:null!=t.zColumn,hasM:null!=t.mColumn};if("xz"===t?.type)return{hasZ:!0===t.hasZ,hasM:!0===t.hasM};const o=e?.columns[e.primary_column]?.geometry_types??[];return{hasZ:o.some(e=>/ (?:Z|ZM)$/u.test(e)),hasM:o.some(e=>/ (?:M|ZM)$/u.test(e))}}function I(e){switch(e){case"polygon":return"esriGeometryPolygon";case"polyline":return"esriGeometryPolyline";case"multipoint":return"esriGeometryMultipoint"}}function E(n){switch(n.toLowerCase()){case"polygon":return"polygon";case"polyline":return"polyline";case"multipoint":return"multipoint";default:throw new e("parquet:unsupported",`Geometry type ${n} is unsupported`)}}function R(e){const n=e.crs?.id?.code;return"number"==typeof n?{wkid:n}:"OGC"===e.crs?.id?.authority&&"CRS84"===n?{wkid:4326}:void 0}function $(e,n,t){if(!t)return null;const o=e?e.columns[e.primary_column]:null,r=o?.bbox;if(r?.every(e=>Number.isFinite(e)))switch(r.length){case 4:return{xmin:r[0],ymin:r[1],xmax:r[2],ymax:r[3],spatialReference:t};case 6:return{xmin:r[0],ymin:r[1],xmax:r[3],ymax:r[4],spatialReference:t};default:i().warn("parquet:protocol-violation","Invalid Geoparquet file. BoundingBox size must be 4 or 6.",{geoMetadata:e})}const l=n?.index.fullExtent;return l?{...l,spatialReference:t}:null}export{c as createParquetFile,f as normalizeColumnPath,p as readGeoMetadata,T as readMetadata};
2
+ import e from"../../core/Error.js";import n from"../../core/Logger.js";import{latitudeFieldNames as t,longitudeFieldNames as o}from"../../layers/support/locationUtils.js";import{loadParquetModule as r}from"./loadParquetModule.js";const i=()=>n.getLogger("esri.layers.ParquetLayer"),l=864e5,u=new Set(["uncompressed","snappy","gzip"]),a=new TextDecoder,s=new Set(["esriFieldTypeSmallInteger","esriFieldTypeInteger","esriFieldTypeBigInteger","esriFieldTypeSingle","esriFieldTypeDouble","esriFieldTypeLong"]);function m(n,t){switch(t){case"esriGeometryPoint":return n.GeometryType.Point;case"esriGeometryPolygon":case"polygon":return n.GeometryType.Polygon;case"esriGeometryPolyline":case"polyline":return n.GeometryType.Polyline;case"esriGeometryMultipoint":case"multipoint":return n.GeometryType.Multipoint;default:throw new e("parquet",`Found unexpected GeometryType: ${t}`)}}function c(e,n){const t=n.encoding,o=m(e,n.geometryType),r=n.spatialReference.wkid;if(null==r)throw new Error("InternalError: Wkid must be defined.");switch(t.type){case"wkb":return e.GeometryField.fromWkb(t.field,r,o);case"location":{const{yField:n,xField:i}=t;return e.GeometryField.fromLocation(n,i,r,o)}}}function p(e,n){const t=e.GeometryInfo.new();n.geometry&&t.setGeometry(c(e,n.geometry));const o=n.displayOptimization;if(o){const{index:n}=o;if("z"===n.type){const o=e.DisplayOptimizationZBuilder.new();o.setCodeField(x(n.code)),o.setXColumn(x(n.xColumn)),o.setYColumn(x(n.yColumn)),null!=n.zColumn&&o.setZColumn(x(n.zColumn)),null!=n.mColumn&&o.setMColumn(x(n.mColumn)),o.setCooordinatePrecision(n.coordinatePrecision),o.setFullExtent(n.fullExtent),o.setSpatialReference(n.wkid,null==n.wkid?n.wkt:void 0),o.setHasZ(!!n.zColumn),o.setHasM(!!n.mColumn),n.zColumn&&o.setZColumn(x(n.zColumn)),n.mColumn&&o.setMColumn(x(n.mColumn)),t.setOptmizationZ(o)}if("xz"===n.type){const o=m(e,n.geometryType),r=e.DisplayOptimizationXZBuilder.new();r.setCodeField(x(n.code)),r.setEncoding(n.encoding),r.setFullExtent(n.fullExtent),r.setGeometryType(o),r.setSpatialReference(n.wkid,null==n.wkid?n.wkt:void 0),r.setMaxLevel(n.maxLevel),r.setHasZ(n.hasZ??!1),r.setHasM(n.hasM??!1);for(const t of n.levels??[]){const n=new Float64Array(t.transform.translate),o=new Float64Array(t.transform.scale),i=x(t.column);r.addLevel(e.MultiscaleGeometryField.new(t.level,t.resolution,i,n,o))}t.setOptmizationXZ(r)}}return t}async function y(n,t){const o=await r(),i=t.geometryInfo?p(o,t.geometryInfo):null,l=t.provider.fetchRange.bind(t.provider),u=t.provider.fetchLength.bind(t.provider);try{return await o.ParquetFile.fromUrl(n,l,u,i)}catch(a){throw new e("parquet","Failed to parse file",{error:a})}}function d(e){const n=e.keyValueMetadata("geo");return null!=n?JSON.parse(n):null}function f(n){if(n.keyValueMetadata("esri"))throw new e("parquet:unsupported","File was created using an unsupported experimental display index. Please regenerate the file.");const t=n.keyValueMetadata("geodisplay");if(null!=t){return{present:!0,optimization:g({index:JSON.parse(t)})}}const o=n.keyValueMetadata("org.apache.spark.sql.parquet.row.metadata");if(null!=o){const e=JSON.parse(o);for(const n of e.fields)if(null!=n.metadata&&z(n.metadata)){if(!F(n.metadata))return i().warn("parquet:protocol-violation","Ignoring display optimization, found invalid column path",{index:n.metadata}),{present:!0,optimization:null};const e=C(n.metadata,n.name);return null==e?(i().warn("parquet:protocol-violation","Ignoring display optimization, Spark display column paths must be non-empty strings",{index:n.metadata}),{present:!0,optimization:null}):{present:!0,optimization:g({index:e})}}}return{present:!1,optimization:null}}function g(e){if(!F(e.index))return i().warn("parquet:protocol-violation","Ignoring display optimization, found invalid column path",{index:e.index}),null;if("xz"===e.index.type&&(e.index.geometryType=V(e.index.geometryType),"esri-pbf"===e.index.encoding&&(e.index.encoding="esriPBF"),"esriPBF"!==e.index.encoding))return i().warn("parquet:unsupported",`Encoding for display index must be of type esriPBF, but found ${e.index.encoding}`),null;const{xmin:n,ymin:t,xmax:o,ymax:r}=e.index.fullExtent;return Number.isFinite(n)&&Number.isFinite(t)&&Number.isFinite(o)&&Number.isFinite(r)?e:(i().warn("parquet:protocol-violation","Ignoring display optimization, found bad extent",{index:e.index}),null)}function x(e){return Array.isArray(e)?e.join("."):e}function w(e,n,t,o,r){const i=N(e.readAttribute(n,t),o);return r&&null!=i&&"esriFieldTypeDate"===o?new Date(i):i}function h(e,n,t,o,r){return N(e.readAttribute(n,t,o),r)}function C(e,n){if("z"===e.type){const t=M(e.code,n),o=M(e.xColumn,n),r=M(e.yColumn,n),i=null==e.zColumn?e.zColumn:M(e.zColumn,n),l=null==e.mColumn?e.mColumn:M(e.mColumn,n);return null==t||null==o||null==r||null===i||null===l?null:{...e,code:t,xColumn:o,yColumn:r,...null==i?{}:{zColumn:i},...null==l?{}:{mColumn:l}}}const t=M(e.code,n),o=[];for(const r of e.levels){const e=M(r.column,n);if(null==e)return null;o.push({...r,column:e})}return null==t?null:{...e,code:t,levels:o}}function M(e,n){return"string"==typeof e&&e.length>0?[n,e]:null}function z(e){return"object"==typeof e&&null!=e&&"type"in e&&("z"===e.type||"xz"===e.type)}function F(e){return"z"===e.type?v(e.code)&&v(e.xColumn)&&v(e.yColumn)&&(null==e.zColumn||v(e.zColumn))&&(null==e.mColumn||v(e.mColumn)):v(e.code)&&Array.isArray(e.levels)&&e.levels.every(e=>"object"==typeof e&&null!=e&&"column"in e&&v(e.column))}function v(e){return"string"==typeof e&&e.length>0||Array.isArray(e)&&2===e.length&&e.every(e=>"string"==typeof e&&e.length>0)}function b(e){if(null==e)return null;const n=e.ordering,t=e.lod;if(null==n&&null==t)return null;if("xz"!==n?.type||null==t||n.geometry_column!==e.primary_column||t.geometry_column!==e.primary_column||n.geometry_column!==t.geometry_column||20!==n.max_level||!L(n.extent)||"pbf"!==t.encoding)return k(e,"ordering and lod must form a valid primary-column XZ pair");const o=e.columns[e.primary_column],r=T(o);if(null==r||!P(t.orientation,r.geometryType))return k(e,"geometry type, dimensions, or LOD orientation is invalid");const i=Z(t.levels),l=X(o)?.wkid;if(null==i||null==l)return k(e,"LOD levels or spatial reference is invalid");const[u,a,s,m]=n.extent;return{index:{type:"xz",code:"geokey",wkid:l,wkt:null,encoding:"esriPBF",fullExtent:{xmin:u,ymin:a,xmax:s,ymax:m},geometryType:r.geometryType,maxLevel:n.max_level,hasZ:r.hasZ,hasM:r.hasM,levels:i}}}function k(e,n){return i().warn("parquet:protocol-violation",`Ignoring GeoParquet ordering and LOD extensions: ${n}`,{lod:e.lod,ordering:e.ordering}),null}function T(e){if(null==e||0===e.geometry_types.length)return null;let n,t;for(const o of e.geometry_types){const e=/^(LineString|MultiLineString|Polygon|MultiPolygon)(?: (Z|M|ZM))?$/.exec(o);if(null==e)return null;const r="LineString"===e[1]||"MultiLineString"===e[1]?"polyline":"polygon";if(null!=n&&n!==r||null!=t&&t!==(e[2]??""))return null;n=r,t=e[2]??""}return null==n||null==t?null:{geometryType:n,hasZ:"Z"===t||"ZM"===t,hasM:"M"===t||"ZM"===t}}function P(e,n){return"polygon"===n?"clockwise"===e:null==e}function Z(e){if(!Array.isArray(e)||0===e.length)return null;const n=new Set,t=e.slice().sort((e,n)=>n.resolution-e.resolution),o=[];for(const[r,i]of t.entries()){if(!G(i.column)||!Number.isFinite(i.resolution)||i.resolution<=0||n.has(i.resolution)||!S(i.transform))return null;n.add(i.resolution),o.push({column:i.column,level:r,resolution:i.resolution,transform:i.transform})}return o}function G(e){return Array.isArray(e)&&2===e.length&&"geolod"===e[0]&&"string"==typeof e[1]&&e[1].length>0}function S(e){return q(e?.scale,!0)&&q(e?.translate,!1)}function q(e,n){return Array.isArray(e)&&4===e.length&&e.every(e=>"number"==typeof e&&Number.isFinite(e)&&(!n||e>0))}function L(e){return q(e,!1)&&e[0]<e[2]&&e[1]<e[3]}function O(e){A(e);const n=_(e),t=d(e),o=f(e),r=o.present?o.optimization:b(t),i=$(t,n),{hasZ:l,hasM:u}=j(t,r);let a,s;if(i)switch(i.type){case"location":s={wkid:4326},a="esriGeometryPoint";break;case"wkb":if(t){const e=t.primary_column,n=t.columns[e];a=R(n),s=X(n)}}if(r){const e=r.index;!s&&e.wkid&&(s={wkid:e.wkid}),a||(a="z"===e.type?"esriGeometryPoint":H(e.geometryType))}return{geoMetadata:t,displayOptimization:r,hasZ:l,hasM:u,geometryEncoding:i,geometryInfo:s&&a?{geometry:i?{geometryType:a,spatialReference:s,encoding:i}:null,displayOptimization:r}:null,geometryType:a,spatialReference:s,extent:J(t,r,s),fields:n}}function A(n){for(const t of n.compressionCodecs())if(!u.has(t))throw new e("parquet:unsupported",`Compression codec ${t} is unsupported. Must be of type ${Array.from(u).join(",")}`)}function _(e){const n=[];for(const t of e.fields(!1))n.push({name:t.name,alias:t.name,type:t.type});return n}function N(e,n){return null==e?e:"esriFieldTypeDateOnly"===n?I(e):"esriFieldTypeTimeOnly"===n?E(e):"esriFieldTypeString"===n||"esriFieldTypeTimestampOffset"===n?a.decode(e):e}function I(e){return new Date(e*l).toISOString().slice(0,10)}function E(e){const n=Math.floor(e/3600),t=Math.floor(e%3600/60),o=e%60;return`${n.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}function $(e,n){if(null!=e){const n=e.primary_column;return{type:"wkb",field:n,orientation:"counterclockwise"===e.columns[n].orientation?"counter-clockwise":null}}const t=D(n.filter(e=>s.has(e.type)).map(e=>e.name));return t.latitudeFieldName&&t.longitudeFieldName?{type:"location",xField:t.longitudeFieldName,yField:t.latitudeFieldName}:null}function D(e){const n=e.map(e=>e.toLowerCase());return{longitudeFieldName:e[n.indexOf(o.find(e=>n.includes(e)))],latitudeFieldName:e[n.indexOf(t.find(e=>n.includes(e)))]}}function R(n){const{geometry_types:t}=n,o=new Set;for(const e of t){const n=B(e);n&&o.add(n)}if(o.size>1)throw new e("parquet:unsupported","Parquet mixed geometry types are not supported",{geometryTypes:o});return 1===o.size?o.values().next().value:void 0}function B(e){switch(e.replace(/ (?:Z|M|ZM)$/u,"")){case"Point":return"esriGeometryPoint";case"Polygon":case"MultiPolygon":return"esriGeometryPolygon";case"LineString":case"MultiLineString":return"esriGeometryPolyline";case"MultiPoint":return"esriGeometryMultipoint";default:return null}}function j(e,n){const t=n?.index;if("z"===t?.type)return{hasZ:null!=t.zColumn,hasM:null!=t.mColumn};if("xz"===t?.type)return{hasZ:!0===t.hasZ,hasM:!0===t.hasM};const o=e?.columns[e.primary_column]?.geometry_types??[];return{hasZ:o.some(e=>/ (?:Z|ZM)$/u.test(e)),hasM:o.some(e=>/ (?:M|ZM)$/u.test(e))}}function H(e){switch(e){case"polygon":return"esriGeometryPolygon";case"polyline":return"esriGeometryPolyline";case"multipoint":return"esriGeometryMultipoint"}}function V(n){switch(n.toLowerCase()){case"polygon":return"polygon";case"polyline":return"polyline";case"multipoint":return"multipoint";default:throw new e("parquet:unsupported",`Geometry type ${n} is unsupported`)}}function X(e){const n=e.crs?.id?.code;return"number"==typeof n?{wkid:n}:"OGC"===e.crs?.id?.authority&&"CRS84"===n?{wkid:4326}:void 0}function J(e,n,t){if(!t)return null;const o=e?e.columns[e.primary_column]:null,r=o?.bbox;if(r?.every(e=>Number.isFinite(e)))switch(r.length){case 4:return{xmin:r[0],ymin:r[1],xmax:r[2],ymax:r[3],spatialReference:t};case 6:return{xmin:r[0],ymin:r[1],xmax:r[3],ymax:r[4],spatialReference:t};default:i().warn("parquet:protocol-violation","Invalid Geoparquet file. BoundingBox size must be 4 or 6.",{geoMetadata:e})}const l=n?.index.fullExtent;return l?{...l,spatialReference:t}:null}export{y as createParquetFile,x as normalizeColumnPath,d as readGeoMetadata,O as readMetadata,w as readParquetChunkAttribute,h as readParquetFileAttribute};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "5.2.0-next.93",
3
+ "version": "5.2.0-next.94",
4
4
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
5
5
  "keywords": [
6
6
  "ArcGIS",
@@ -20,11 +20,11 @@
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
22
  "@amcharts/amcharts5": "~5.20.3",
23
- "@arcgis/toolkit": "5.2.0-next.93",
23
+ "@arcgis/toolkit": "5.2.0-next.94",
24
24
  "@esri/arcgis-html-sanitizer": "~4.1.0",
25
25
  "@esri/calcite-components": "^5.2.0-next.52",
26
26
  "@vaadin/grid": "~25.2.9",
27
- "@zip.js/zip.js": "~2.8.60",
27
+ "@zip.js/zip.js": "~2.8.61",
28
28
  "luxon": "~3.7.2",
29
29
  "marked": "~18.0.11",
30
30
  "tslib": "^2.8.1"
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const c="20260831",f="5e0cf952a325fa7823d9c47b12dffe65c39750b0";export{c as buildDate,f as revision};
2
+ const c="20260831",f="5060df3d10b96a76f1acf0e4c53360a6fcc8be19";export{c as buildDate,f as revision};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import has from"../../../core/has.js";import{removeMaybe as r}from"../../../core/maybe.js";import{addFrameTask as s}from"../../../core/scheduling.js";import{signal as i}from"../../../core/signal.js";import{property as n}from"../../../core/accessorSupport/decorators.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{CIMAnalyzer as o}from"../../../symbols/cim/cimAnalyzer.js";import{LabelManager as h}from"../LabelManager.js";import{Container as d}from"./Container.js";import{ThrottledCanvas as l}from"./ThrottledCanvas.js";import{MAX_TILE_RESHUFFLES_PER_FRAME as m}from"./webgl/definitions.js";import c from"./webgl/Painter.js";import{Profiler as u}from"./webgl/Profiler.js";import{TileReshuffleManager as p}from"./webgl/TileReshuffleManager.js";import{startup as f,shutdown as g}from"./webgl/shaderGraph/techniques/TechniqueRegistry.js";import{MeshWriterRegistry as _}from"./webgl/shaderGraph/techniques/mesh/MeshWriterRegistry.js";import{FeatureContainer as b}from"../layers/features/FeatureContainer.js";import{Timeline as w}from"../support/Timeline.js";import{SizedPixelFormat as R,SizedDepthStencilFormat as y,PixelType as x}from"../../webgl/enums.js";import{DisposableFramebufferObject as C}from"../../webgl/FramebufferObject.js";import{RenderbufferDescriptor as j}from"../../webgl/RenderbufferDescriptor.js";import{RenderingContext as P}from"../../webgl/RenderingContext.js";import{RenderingContextOptions as T}from"../../webgl/RenderingContextOptions.js";import{TextureDescriptor as M}from"../../webgl/TextureDescriptor.js";const q=2e3;class v extends d{constructor(e,r){super(),this._trash=new Set,this._renderRemainingTime=0,this._lastFrameRenderTime=0,this._stationary=!0,this._animationsEnabled=!0,this._renderRequested=i(!1),this._reshuffleManager=new p,this.stage=this,this.meshWriterRegistry=new _,this.labelManager=new h({featuresTilingScheme:r.featuresTilingScheme}),this._throttledCanvas=new l(e),this.context=new P(this._throttledCanvas.gl,r.contextOptions??new T),this.painter=new c(this.context,this),this._cimAnalyzer=new o(this.painter.textureManager.resourceManager);const n=()=>this.highlightGradient;this._renderParameters={drawPhase:0,state:this.state,pixelRatio:window.devicePixelRatio,stationary:!1,globalOpacity:1,blendMode:null,deltaTime:-1,time:0,inFadeTransition:!1,effects:null,context:this.context,painter:this.painter,timeline:r.timeline||new w,renderingOptions:r.renderingOptions,requestRender:()=>this.requestRender(),allowDelayedRender:!1,requireFBO:!1,profiler:new u(this.context),dataUploadCounter:0,get highlightGradient(){return n()},reshuffleManager:this._reshuffleManager,backgroundColor:r.backgroundColor,animationsEnabled:!0};let a=e=>this.renderFrame(e);null!=r.renderFrame&&(a=r.renderFrame),this._taskHandle=s({render:e=>a(e)}),this._taskHandle.pause(),this._lostWebGLContextHandle=this._throttledCanvas.events.on("webgl-context-lost",e=>this.emit("webgl-error",{error:new t("webgl-context-lost",e.statusMessage||"WebGL context lost")})),f()}destroy(){super.destroy(),g(this.context),this.labelManager.destroy(),this.removeAllChildren(),this._emptyTrash(),this._taskHandle=r(this._taskHandle),this._lostWebGLContextHandle=r(this._lostWebGLContextHandle),this._throttledCanvas.destroy(),this.painter.dispose(),this.context.dispose(),this._throttledCanvas=null}get updating(){return this.labelManager.updating}get textureManager(){return this.painter.textureManager}get profiler(){return this._renderParameters.profiler}get backgroundColor(){return this._renderParameters.backgroundColor}set backgroundColor(e){this._renderParameters.backgroundColor=e,this.requestRender()}get canvas(){return this._throttledCanvas.canvas}get cimAnalyzer(){return this._cimAnalyzer}get effectiveVisible(){return this.visible}get renderingOptions(){return this._renderingOptions}set renderingOptions(e){this._renderingOptions=e,this.requestRender()}get renderRequested(){return this._renderRequested.value}get state(){return this._state}set state(e){this._state=e,this.requestDeclutter(),this.requestRender()}get stationary(){return this._stationary}set stationary(e){this._stationary!==e&&(this._stationary=e,this.requestRender())}get animationsEnabled(){return this._animationsEnabled}set animationsEnabled(e){this._animationsEnabled!==e&&(this._animationsEnabled=e,this._animationsEnabled&&this.requestRender())}trashDisplayObject(e){this._trash.add(e),this.requestRender()}untrashDisplayObject(e){return this._trash.delete(e)}requestRender(){this._renderRemainingTime=q,this.renderRequested||(this._renderRequested.value=!0,this._taskHandle.resume())}requestDeclutter(){this.labelManager.requestDeclutter(),this.requestRender()}renderFrame(e){const t=this._lastFrameRenderTime?e.time-this._lastFrameRenderTime:0;this._renderRemainingTime-=t,this._renderRemainingTime<=0&&this._taskHandle.pause(),this._lastFrameRenderTime=e.time,this._renderRequested.value=!1,this._renderParameters.state=this._state,this._renderParameters.stationary=this.stationary,this._renderParameters.pixelRatio=window.devicePixelRatio,this._renderParameters.globalOpacity=1,this._renderParameters.time=e.time,this._renderParameters.deltaTime=e.deltaTime,this._renderParameters.effects=null,this._renderParameters.animationsEnabled=this._animationsEnabled,this.processRender(this._renderParameters),this._emptyTrash()}_createTransforms(){return{displayViewScreenMat3:a()}}renderChildren(e){this._reshuffleManager.reshuffle(m);const t=[];this._prepareFeatureContainers(t,this);const r=this.labelManager.declutter(t,e.state);r&&this.requestRender(),this._throttledCanvas.render(e,()=>this._renderChildren(this.children,e,r))}_renderChildren(e,t,r=!1){t.decluttering=r;for(const i of e)i.beforeRender(t);const s=this.context;this.painter.textureUploadManager.upload(),s.resetInfo(),t.profiler.recordStart("drawLayers"),t.dataUploadCounter=0,this.painter.beforeRenderPhases(t,t.backgroundColor,this.state.padding),t.drawPhase=1;for(const i of e)i.processRender(t);if(this.children.some(e=>e.hasHighlight)){t.drawPhase=16;for(const r of e)r.processRender(t)}if(this.children.some(e=>e.hasLabels)){t.drawPhase=2;for(const r of e)r.processRender(t)}if(has("esri-tiles-debug")){t.drawPhase=64;for(const r of e)r.processRender(t)}t.drawPhase=128;for(const i of e)i.processRender(t);this.painter.afterRenderPhases(t),t.profiler.recordEnd("drawLayers"),s.logInfo();for(const i of e)i.afterRender(t)}_prepareFeatureContainers(e,t){for(const r of t.children)r instanceof b?e.push(r):r instanceof d&&this._prepareFeatureContainers(e,r)}doRender(e){const t=this.context,{state:r,pixelRatio:s}=e;this._throttledCanvas.resize(e),t.setViewport(0,0,s*r.size[0],s*r.size[1]),t.setDepthWriteEnabled(!0),t.setStencilWriteMask(255),this.renderChildren(e)}async takeScreenshot(e,t,r,s){const i=Math.round(this.state.size[0]*e.resolutionScale),n=Math.round(this.state.size[1]*e.resolutionScale),a=e.resolutionScale,o=this.context,h=this._state.clone();if(null!=s){const e=h.viewpoint;h.viewpoint.rotation=s,h.viewpoint=e}const d={...this._renderParameters,drawPhase:null,globalOpacity:1,stationary:!0,state:h,pixelRatio:a,time:performance.now(),deltaTime:0,blendMode:null,effects:null,inFadeTransition:!1,backgroundColor:r},l=new M(i,n);l.wrapMode=33071,l.internalFormat=R.RGBA8,l.isImmutable=!0;const m=new C(o,l,new j(y.DEPTH24_STENCIL8,i,n)),c=o.boundFramebuffer,u=o.getViewport();o.bindFramebuffer(m),o.setViewport(0,0,i,n),this._renderChildren(t??this.children,d);const p=this._readbackScreenshot(m,{...e.cropArea,y:n-(e.cropArea.y+e.cropArea.height)});o.bindFramebuffer(c),o.setViewport(u.x,u.y,u.width,u.height),this.requestRender();const f=await p;let g;return 1===e.outputScale?g=f:(g=new ImageData(Math.round(f.width*e.outputScale),Math.round(f.height*e.outputScale)),(await(import("../../support/screenshotUtils.js"))).resampleHermite(f,g,!0)),m.dispose(),g}async _readbackScreenshot(e,t){const r=(await(import("../../support/screenshotUtils.js"))).createEmptyImageData(t.width,t.height,document.createElement("canvas"));return await e.readPixelsAsync(t.x,t.y,t.width,t.height,6408,x.UNSIGNED_BYTE,new Uint8Array(r.data.buffer)),r}_emptyTrash(){for(;this._trash.size>0;){const e=Array.from(this._trash);this._trash.clear();for(const t of e)t.processDetach()}}}e([n()],v.prototype,"updating",null);export{v as Stage,q as extraRenderTime};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import has from"../../../core/has.js";import{removeMaybe as r}from"../../../core/maybe.js";import{addFrameTask as s}from"../../../core/scheduling.js";import{signal as i}from"../../../core/signal.js";import{property as n}from"../../../core/accessorSupport/decorators.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{CIMAnalyzer as o}from"../../../symbols/cim/cimAnalyzer.js";import{LabelManager as h}from"../LabelManager.js";import{Container as d}from"./Container.js";import{ThrottledCanvas as l}from"./ThrottledCanvas.js";import{MAX_TILE_RESHUFFLES_PER_FRAME as m}from"./webgl/definitions.js";import c from"./webgl/Painter.js";import{Profiler as u}from"./webgl/Profiler.js";import{TileReshuffleManager as p}from"./webgl/TileReshuffleManager.js";import{startup as f,shutdown as g}from"./webgl/shaderGraph/techniques/TechniqueRegistry.js";import{MeshWriterRegistry as _}from"./webgl/shaderGraph/techniques/mesh/MeshWriterRegistry.js";import{FeatureContainer as b}from"../layers/features/FeatureContainer.js";import{Timeline as w}from"../support/Timeline.js";import{SizedPixelFormat as R,SizedDepthStencilFormat as y,PixelType as x}from"../../webgl/enums.js";import{DisposableFramebufferObject as C}from"../../webgl/FramebufferObject.js";import{RenderbufferDescriptor as j}from"../../webgl/RenderbufferDescriptor.js";import{RenderingContext as P}from"../../webgl/RenderingContext.js";import{RenderingContextOptions as T}from"../../webgl/RenderingContextOptions.js";import{TextureDescriptor as M}from"../../webgl/TextureDescriptor.js";const q=2e3;class v extends d{constructor(e,r){super(),this._trash=new Set,this._renderRemainingTime=0,this._lastFrameRenderTime=0,this._stationary=!0,this._animationsEnabled=!0,this._renderRequested=i(!1),this._reshuffleManager=new p,this.stage=this,this.meshWriterRegistry=new _,this.labelManager=new h({featuresTilingScheme:r.featuresTilingScheme}),this._throttledCanvas=new l(e),this.context=new P(this._throttledCanvas.gl,r.contextOptions??new T),this.painter=new c(this.context,this),this._cimAnalyzer=new o(this.painter.textureManager.resourceManager);const n=()=>this.highlightGradient;this._renderParameters={drawPhase:0,state:this.state,pixelRatio:window.devicePixelRatio,stationary:!1,globalOpacity:1,blendMode:null,deltaTime:-1,time:0,inFadeTransition:!1,effects:null,context:this.context,painter:this.painter,timeline:r.timeline||new w,renderingOptions:r.renderingOptions,requestRender:()=>this.requestRender(),allowDelayedRender:!1,requireFBO:!1,profiler:new u(this.context),dataUploadCounter:0,get highlightGradient(){return n()},reshuffleManager:this._reshuffleManager,backgroundColor:r.backgroundColor,animationsEnabled:!0};let a=e=>this.renderFrame(e);null!=r.renderFrame&&(a=r.renderFrame),this._taskHandle=s({render:e=>a(e)}),this._taskHandle.pause(),this._lostWebGLContextHandle=this._throttledCanvas.events.on("webgl-context-lost",e=>this.emit("webgl-error",{error:new t("webgl-context-lost",e.statusMessage||"WebGL context lost")})),f()}destroy(){super.destroy(),g(this.context),this.labelManager.destroy(),this.removeAllChildren(),this._emptyTrash(),this._taskHandle=r(this._taskHandle),this._lostWebGLContextHandle=r(this._lostWebGLContextHandle),this._throttledCanvas.destroy(),this.painter.dispose(),this.context.dispose(),this._throttledCanvas=null}get updating(){return this.labelManager.updating}get textureManager(){return this.painter.textureManager}get profiler(){return this._renderParameters.profiler}get backgroundColor(){return this._renderParameters.backgroundColor}set backgroundColor(e){this._renderParameters.backgroundColor=e,this.requestRender()}get canvas(){return this._throttledCanvas.canvas}get cimAnalyzer(){return this._cimAnalyzer}get effectiveVisible(){return this.visible}get renderingOptions(){return this._renderingOptions}set renderingOptions(e){this._renderingOptions=e,this.requestRender()}get renderRequested(){return this._renderRequested.value}get state(){return this._state}set state(e){this._state=e,this.requestDeclutter(),this.requestRender()}get stationary(){return this._stationary}set stationary(e){this._stationary!==e&&(this._stationary=e,this.requestRender())}get animationsEnabled(){return this._animationsEnabled}set animationsEnabled(e){this._animationsEnabled!==e&&(this._animationsEnabled=e,this._animationsEnabled&&this.requestRender())}trashDisplayObject(e){this._trash.add(e),this.requestRender()}untrashDisplayObject(e){return this._trash.delete(e)}requestRender(){this._renderRemainingTime=q,this.renderRequested||(this._renderRequested.value=!0,this._taskHandle.resume())}requestDeclutter(){this.labelManager.requestDeclutter(),this.requestRender()}renderFrame(e){const t=this._lastFrameRenderTime?e.time-this._lastFrameRenderTime:0;this._renderRemainingTime-=t,this._renderRemainingTime<=0&&this._taskHandle.pause(),this._lastFrameRenderTime=e.time,this._renderRequested.value=!1,this._renderParameters.state=this._state,this._renderParameters.stationary=this.stationary,this._renderParameters.pixelRatio=window.devicePixelRatio,this._renderParameters.globalOpacity=1,this._renderParameters.time=e.time,this._renderParameters.deltaTime=e.deltaTime,this._renderParameters.effects=null,this._renderParameters.animationsEnabled=this._animationsEnabled,this.processRender(this._renderParameters),this._emptyTrash()}_createTransforms(){return{displayViewScreenMat3:a()}}renderChildren(e){this._reshuffleManager.reshuffle(m);const t=[];this._prepareFeatureContainers(t,this);const r=this.labelManager.declutter(t,e.state);r&&this.requestRender(),this._throttledCanvas.render(e,()=>this._renderChildren(this.children,e,r))}_renderChildren(e,t,r=!1){t.decluttering=r;for(const i of e)i.beforeRender(t);const s=this.context;this.painter.textureUploadManager.upload(),s.resetInfo(),t.profiler.recordStart("drawLayers"),t.dataUploadCounter=0,this.painter.beforeRenderPhases(t,t.backgroundColor,this.state.padding),t.drawPhase=1;for(const i of e)i.processRender(t);if(this.children.some(e=>e.hasHighlight)){t.drawPhase=8;for(const r of e)r.processRender(t)}if(this.children.some(e=>e.hasLabels)){t.drawPhase=2;for(const r of e)r.processRender(t)}if(has("esri-tiles-debug")){t.drawPhase=32;for(const r of e)r.processRender(t)}t.drawPhase=64;for(const i of e)i.processRender(t);this.painter.afterRenderPhases(t),t.profiler.recordEnd("drawLayers"),s.logInfo();for(const i of e)i.afterRender(t)}_prepareFeatureContainers(e,t){for(const r of t.children)r instanceof b?e.push(r):r instanceof d&&this._prepareFeatureContainers(e,r)}doRender(e){const t=this.context,{state:r,pixelRatio:s}=e;this._throttledCanvas.resize(e),t.setViewport(0,0,s*r.size[0],s*r.size[1]),t.setDepthWriteEnabled(!0),t.setStencilWriteMask(255),this.renderChildren(e)}async takeScreenshot(e,t,r,s){const i=Math.round(this.state.size[0]*e.resolutionScale),n=Math.round(this.state.size[1]*e.resolutionScale),a=e.resolutionScale,o=this.context,h=this._state.clone();if(null!=s){const e=h.viewpoint;h.viewpoint.rotation=s,h.viewpoint=e}const d={...this._renderParameters,drawPhase:null,globalOpacity:1,stationary:!0,state:h,pixelRatio:a,time:performance.now(),deltaTime:0,blendMode:null,effects:null,inFadeTransition:!1,backgroundColor:r},l=new M(i,n);l.wrapMode=33071,l.internalFormat=R.RGBA8,l.isImmutable=!0;const m=new C(o,l,new j(y.DEPTH24_STENCIL8,i,n)),c=o.boundFramebuffer,u=o.getViewport();o.bindFramebuffer(m),o.setViewport(0,0,i,n),this._renderChildren(t??this.children,d);const p=this._readbackScreenshot(m,{...e.cropArea,y:n-(e.cropArea.y+e.cropArea.height)});o.bindFramebuffer(c),o.setViewport(u.x,u.y,u.width,u.height),this.requestRender();const f=await p;let g;return 1===e.outputScale?g=f:(g=new ImageData(Math.round(f.width*e.outputScale),Math.round(f.height*e.outputScale)),(await(import("../../support/screenshotUtils.js"))).resampleHermite(f,g,!0)),m.dispose(),g}async _readbackScreenshot(e,t){const r=(await(import("../../support/screenshotUtils.js"))).createEmptyImageData(t.width,t.height,document.createElement("canvas"));return await e.readPixelsAsync(t.x,t.y,t.width,t.height,6408,x.UNSIGNED_BYTE,new Uint8Array(r.data.buffer)),r}_emptyTrash(){for(;this._trash.size>0;){const e=Array.from(this._trash);this._trash.clear();for(const t of e)t.processDetach()}}}e([n()],v.prototype,"updating",null);export{v as Stage,q as extraRenderTime};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../core/has.js";import{rasterizeDash as t}from"../../../../symbols/cim/rasterizingUtils.js";import{log2 as e}from"./GeometryUtils.js";import i from"../webgl/Rect.js";import s from"../webgl/RectangleBinPack.js";import a from"../../../webgl/Texture.js";import{TextureDescriptor as h}from"../../../webgl/TextureDescriptor.js";const r="dasharray-";class o{constructor(t,e,i=0){this._mosaicPages=[],this._currentPage=0,this._maxItemSize=0,this._pageWidth=0,this._pageHeight=0,this._mosaicRects={},this.pixelRatio=1,e<=0&&console.error("Sprites mosaic defaultWidth and defaultHeight must be greater than zero!"),this._pageWidth=t,this._pageHeight=e,i>0&&(this._maxItemSize=i),this._binPack=new s(t-4,e-4),this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(this._pageWidth*this._pageHeight)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0})}destroy(){this.dispose()}dispose(){if(this._binPack=null,null!==this._mosaicPages){for(const t of this._mosaicPages){const e=t.texture;e&&e.dispose()}this._mosaicPages=null}}getWidth(t){return t<0||t>=this._mosaicPages.length?-1:this._mosaicPages[t].size[0]}getHeight(t){return t<0||t>=this._mosaicPages.length?-1:this._mosaicPages[t].size[1]}getPageSize(t){return t<0||t>=this._mosaicPages.length?null:this._mosaicPages[t].size}getTexture(t){return t<0||t>=this._mosaicPages.length?null:this._mosaicPages[t].texture||null}setSpriteSource(t){for(const e of this._mosaicPages)e.texture&&(e.texture.dispose(),e.texture=null),e.dirty=!0;if(0===this._mosaicPages.length){this._binPack=new s(this._pageWidth-4,this._pageHeight-4);const t=Math.floor(this._pageWidth)*Math.floor(this._pageHeight),e=new Uint32Array(t);for(let i=0;i<t;i++)e[i]=0;this._mosaicPages.push({mosaicsData:{type:"static",data:e},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:null})}this._sprites=t}getSpriteItem(t,e=!1){let i,s,a=this._mosaicRects[t];if(a)return a;if(t&&t.startsWith(r))[i,s]=this._rasterizeDash(t),e=!0;else{if(!this._sprites||"loaded"!==this._sprites.loadStatus)return null;i=this._sprites.getSpriteInfo(t)}if(!i?.width||!i.height||i.width<0||i.height<0)return null;const h=i.width,o=i.height,[n,g,c]=this._allocateImage(h,o);return n.width<=0?null:(this._copy(n,i,g,c,e,s),a={type:"sprite",rect:n,width:h,height:o,sdf:i.sdf,simplePattern:!1,rasterizationScale:i.pixelRatio??1,samplingMode:"Linear",page:g},this._mosaicRects[t]=a,a)}getSpriteItems(t){const e={};for(const i of t)e[i.name]=this.getSpriteItem(i.name,i.repeat);return e}getMosaicItemPosition(t,e){const i=this.getSpriteItem(t,e),s=i?.rect;if(!s)return null;s.width=i.width,s.height=i.height;const a=i.width,h=i.height,r=2;return{tl:[s.x+r,s.y+r],br:[s.x+r+a,s.y+r+h],page:i.page}}bind(t,e,i=0,s=0){if(i>=this._mosaicPages.length||i>=this._mosaicPages.length)return;const r=this._mosaicPages[i];let o=r.texture;if(!o){const e=new h(r.size[0],r.size[1]);e.wrapMode=33071,o=new a(t,e),r.texture=o}if(o.setSamplingMode(e),t.bindTexture(o,s),r.dirty){const t=r.mosaicsData.data;o.setData(new Uint8Array(t.buffer))}r.dirty=!1}static _copyBits(t,e,i,s,a,h,r,o,n,g,c){let l=s*e+i,_=o*h+r;if(c){_-=h;for(let r=-1;r<=g;r++,l=((r+g)%g+s)*e+i,_+=h)for(let e=-1;e<=n;e++)a[_+e]=t[l+(e+n)%n]}else for(let m=0;m<g;m++){for(let e=0;e<n;e++)a[_+e]=t[l+e];l+=e,_+=h}}_copy(t,e,i,s,a,h){if(i>=this._mosaicPages.length||!h&&(!this._sprites||"loaded"!==this._sprites.loadStatus))return;const r=this._mosaicPages[i],n=r.mosaicsData.data,g=new Uint32Array(h?h.buffer:this._sprites.image.buffer),c=2,l=h?e.width:this._sprites.width;o._copyBits(g,l,e.x,e.y,n,s[0],t.x+c,t.y+c,e.width,e.height,a),r.dirty=!0}_allocateImage(t,a){t+=2,a+=2;const h=Math.max(t,a);if(this._maxItemSize&&this._maxItemSize<h){const s=2**Math.ceil(e(t)),h=2**Math.ceil(e(a)),r=new i(0,0,t,a);return this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(s*h)},size:[s,h],dirty:!0,texture:null}),[r,this._mosaicPages.length-1,[s,h]]}let r=t%4?4-t%4:4,o=a%4?4-a%4:4;1===r&&(r=5),1===o&&(o=5);const n=this._binPack.allocate(t+r,a+o);if(n.width<=0){const e=this._mosaicPages[this._currentPage];return e.dirty||(e.mosaicsData.data=null),this._currentPage=this._mosaicPages.length,this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(this._pageWidth*this._pageHeight)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:null}),this._binPack=new s(this._pageWidth-4,this._pageHeight-4),this._allocateImage(t,a)}return[n,this._currentPage,[this._pageWidth,this._pageHeight]]}_rasterizeDash(e){const i=/\[(.*?)\]/,s=e.match(i);if(!s)return null;const a=s[1].split(",").map(Number),h=e.slice(e.lastIndexOf("-")+1),[r,o,n]=t(a,h);return[{x:0,y:0,width:o,height:n,sdf:!0,pixelRatio:1},new Uint8Array(r.buffer)]}}export{o as default};
2
+ import"../../../../core/has.js";import{rasterizeDash as t}from"../../../../symbols/cim/rasterizingUtils.js";import{log2 as e}from"./GeometryUtils.js";import i from"../webgl/Rect.js";import s from"../webgl/RectangleBinPack.js";import a from"../../../webgl/Texture.js";import{TextureDescriptor as h}from"../../../webgl/TextureDescriptor.js";const r="dasharray-";class o{constructor(t,e,i=0){this._mosaicPages=[],this._currentPage=0,this._maxItemSize=0,this._pageWidth=0,this._pageHeight=0,this._mosaicRects={},e<=0&&console.error("Sprites mosaic defaultWidth and defaultHeight must be greater than zero!"),this._pageWidth=t,this._pageHeight=e,i>0&&(this._maxItemSize=i),this._binPack=new s(t-4,e-4),this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(this._pageWidth*this._pageHeight)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0})}destroy(){this.dispose()}dispose(){if(this._binPack=null,null!==this._mosaicPages){for(const t of this._mosaicPages){const e=t.texture;e&&e.dispose()}this._mosaicPages=null}}getWidth(t){return t<0||t>=this._mosaicPages.length?-1:this._mosaicPages[t].size[0]}getHeight(t){return t<0||t>=this._mosaicPages.length?-1:this._mosaicPages[t].size[1]}getPageSize(t){return t<0||t>=this._mosaicPages.length?null:this._mosaicPages[t].size}getTexture(t){return t<0||t>=this._mosaicPages.length?null:this._mosaicPages[t].texture||null}setSpriteSource(t){for(const e of this._mosaicPages)e.texture&&(e.texture.dispose(),e.texture=null),e.dirty=!0;if(0===this._mosaicPages.length){this._binPack=new s(this._pageWidth-4,this._pageHeight-4);const t=Math.floor(this._pageWidth)*Math.floor(this._pageHeight),e=new Uint32Array(t);for(let i=0;i<t;i++)e[i]=0;this._mosaicPages.push({mosaicsData:{type:"static",data:e},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:null})}this._sprites=t}getSpriteItem(t,e=!1){let i,s,a=this._mosaicRects[t];if(a)return a;if(t&&t.startsWith(r))[i,s]=this._rasterizeDash(t),e=!0;else{if(!this._sprites||"loaded"!==this._sprites.loadStatus)return null;i=this._sprites.getSpriteInfo(t)}if(!i?.width||!i.height||i.width<0||i.height<0)return null;const h=i.width,o=i.height,[n,g,c]=this._allocateImage(h,o);return n.width<=0?null:(this._copy(n,i,g,c,e,s),a={type:"sprite",rect:n,width:h,height:o,sdf:i.sdf,simplePattern:!1,rasterizationScale:i.pixelRatio??1,samplingMode:"Linear",page:g},this._mosaicRects[t]=a,a)}getSpriteItems(t){const e={};for(const i of t)e[i.name]=this.getSpriteItem(i.name,i.repeat);return e}getMosaicItemPosition(t,e){const i=this.getSpriteItem(t,e),s=i?.rect;if(!s)return null;s.width=i.width,s.height=i.height;const a=i.width,h=i.height,r=2;return{tl:[s.x+r,s.y+r],br:[s.x+r+a,s.y+r+h],page:i.page}}bind(t,e,i=0,s=0){if(i>=this._mosaicPages.length||i>=this._mosaicPages.length)return;const r=this._mosaicPages[i];let o=r.texture;if(!o){const e=new h(r.size[0],r.size[1]);e.wrapMode=33071,o=new a(t,e),r.texture=o}if(o.setSamplingMode(e),t.bindTexture(o,s),r.dirty){const t=r.mosaicsData.data;o.setData(new Uint8Array(t.buffer))}r.dirty=!1}static _copyBits(t,e,i,s,a,h,r,o,n,g,c){let l=s*e+i,_=o*h+r;if(c){_-=h;for(let r=-1;r<=g;r++,l=((r+g)%g+s)*e+i,_+=h)for(let e=-1;e<=n;e++)a[_+e]=t[l+(e+n)%n]}else for(let m=0;m<g;m++){for(let e=0;e<n;e++)a[_+e]=t[l+e];l+=e,_+=h}}_copy(t,e,i,s,a,h){if(i>=this._mosaicPages.length||!h&&(!this._sprites||"loaded"!==this._sprites.loadStatus))return;const r=this._mosaicPages[i],n=r.mosaicsData.data,g=new Uint32Array(h?h.buffer:this._sprites.image.buffer),c=2,l=h?e.width:this._sprites.width;o._copyBits(g,l,e.x,e.y,n,s[0],t.x+c,t.y+c,e.width,e.height,a),r.dirty=!0}_allocateImage(t,a){t+=2,a+=2;const h=Math.max(t,a);if(this._maxItemSize&&this._maxItemSize<h){const s=2**Math.ceil(e(t)),h=2**Math.ceil(e(a)),r=new i(0,0,t,a);return this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(s*h)},size:[s,h],dirty:!0,texture:null}),[r,this._mosaicPages.length-1,[s,h]]}let r=t%4?4-t%4:4,o=a%4?4-a%4:4;1===r&&(r=5),1===o&&(o=5);const n=this._binPack.allocate(t+r,a+o);if(n.width<=0){const e=this._mosaicPages[this._currentPage];return e.dirty||(e.mosaicsData.data=null),this._currentPage=this._mosaicPages.length,this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(this._pageWidth*this._pageHeight)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:null}),this._binPack=new s(this._pageWidth-4,this._pageHeight-4),this._allocateImage(t,a)}return[n,this._currentPage,[this._pageWidth,this._pageHeight]]}_rasterizeDash(e){const i=/\[(.*?)\]/,s=e.match(i);if(!s)return null;const a=s[1].split(",").map(Number),h=e.slice(e.lastIndexOf("-")+1),[r,o,n]=t(a,h);return[{x:0,y:0,width:o,height:n,sdf:!0,pixelRatio:1},new Uint8Array(r.buffer)]}}export{o as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{create as e}from"../../../../geometry/support/aaBoundingRect.js";import t from"../../../../layers/support/TileInfo.js";import{tileSizeInTileUnits as s,tileSizeInPixels as r}from"./constants.js";import{SymbolFader as i}from"./decluttering/SymbolFader.js";import{writeOpacityToBuffers as o}from"./decluttering/util.js";import{RenderableTile as l}from"../webgl/RenderableTile.js";import n from"../webgl/TileContainer.js";import{simplePipelineState as a}from"../webgl/shaderGraph/utils.js";import{VTLTechniquesRepo as d}from"../webgl/shaderGraph/techniques/vectorTiles/VTLTechniques.js";import h from"../../tiling/TileCoverage.js";import c from"../../tiling/TileKey.js";const u=1e-6;function y(e,t){if(e){const s=e.getLayoutProperty("visibility");if(!s||1!==s.getValue()&&(void 0===e.minzoom||e.minzoom<t+u)&&(void 0===e.maxzoom||e.maxzoom>=t-u))return!0}return!1}class m extends n{constructor(e){super(e),this._backgroundTiles=[],this._techniques=new d,this._computeDisplayInfoView(e),this._techniques.startup()}destroy(){super.destroy(),this.removeAllChildren(),this._spriteMosaic?.dispose(),this._spriteMosaic=null,null!=this._symbolFader&&(this._symbolFader.clear(),this._symbolFader=null);const e=this.stage?.context;e&&this._techniques.shutdown(e),this._styleRepository=null,this._backgroundTiles=[]}get fading(){return this._symbolFader?.fading??!1}get symbolFader(){return this._symbolFader}get symbolRepository(){return this._symbolFader?.symbolRepository}setStyleResources(e,t,r,l){if(this._spriteMosaic=e,this._glyphMosaic=t,this._styleRepository=r,this.tilingScheme=l,this._computeDisplayInfoView(l),null==this._symbolFader){const e=(e,t)=>{e.allSymbolsFadingOut=!0,e.lastOpacityUpdate=t,o(e,t,!0),e.decluttered=!0,e.requestRender()};this._symbolFader=new i("vector-tile",this._styleRepository,e,this.children,s)}this._symbolFader.styleRepository=r}setSpriteMosaic(e){this._spriteMosaic?.dispose(),this._spriteMosaic=e}deleteStyleLayers(e){null!=this._symbolFader&&this._symbolFader.deleteStyleLayers(e)}createRenderParams(e){return{...super.createRenderParams(e),renderPass:null,styleLayer:null,styleLayerUID:-1,glyphMosaic:this._glyphMosaic,spriteMosaic:this._spriteMosaic}}doRender(e){const{drawPhase:t}=e,s=1===t||64===t;this.visible&&s&&void 0!==this._spriteMosaic&&super.doRender(e)}addChild(e){return super.addChild(e),null!=this._symbolFader?this._symbolFader.addTile(e):e.decluttered=!0,this.requestRender(),e}removeChild(e){return null!=this._symbolFader&&this._symbolFader.removeTile(e),this.requestRender(),super.removeChild(e)}renderChildren(e){const{drawPhase:t}=e;64!==t?this._doRender(e):super.renderChildren(e)}removeAllChildren(){for(let e=0;e<this.children.length;e++){const t=this.children[e];null!=this._symbolFader&&this._symbolFader.removeTile(t),t.dispose()}super.removeAllChildren()}getStencilTarget(){return this.children.filter(e=>e.neededForCoverage&&e.hasData())}restartDeclutter(){null!=this._symbolFader&&this._symbolFader.restartDeclutter()}_doRender(e){const{context:t,painter:s,state:r}=e,i=this._styleRepository;if(!i)return;const o=i.layers,l=this._displayInfo.scaleToZoom(r.scale);this.children.forEach(e=>e.disposeLayerData()),super.renderChildren(e),i.backgroundBucketIds.length>0&&(e.renderPass="background",this._renderBackgroundLayers(e,i.backgroundBucketIds,l)),1===e.drawPhase&&this._fade(l,r);const n=this.children.filter(t=>(1===e.drawPhase&&t.fader.fade()<1&&this.requestRender(),t.visible&&t.hasData()));if(n&&0!==n.length){for(const e of n)e.triangleCount=0;t.setClearDepth(1),t.clear(256),s.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},stencil:{write:!1,test:{compare:514,op:{fail:7680,zFail:7680,zPass:7681},mask:255}},depth:{write:!1,test:515}}),e.renderPass="translucent";for(let t=0;t<o.length;t++)this._renderStyleLayer(o[t],e,n);t.bindVAO(null),s.setPipelineState(a);for(const e of n)e.debugInfo.display.triangleCount=e.triangleCount}else t.bindVAO(null)}_fade(e,t){null!=this._symbolFader&&(this._symbolFader.update(e,t)||this.requestRender())}_renderStyleLayer(e,t,s){const{displayLevel:r,renderPass:i}=t;if(void 0===e)return;const o=e.getLayoutProperty("visibility");if(o&&1===o.getValue())return;switch(e.type){case 0:return;case 1:case 2:case 4:case 3:if("translucent"!==i)return}if(s=3===e.type?s.filter(e=>e.decluttered):s.filter(e=>e.neededForCoverage),3!==e.type&&(0===s.length||void 0!==e.minzoom&&e.minzoom>=r+u||void 0!==e.maxzoom&&e.maxzoom<r-u))return;const l=e.uid;t.styleLayerUID=l,t.styleLayer=e;const n=this._techniques.getTechnique(e.type);null!=n&&n.render(t,{tiles:s})}_renderBackgroundLayers(e,t,s){const{displayLevel:r,state:i}=e,o=this._styleRepository;let l=!1;for(const h of t){const e=o.getLayerById(h);if(e&&0===e.type&&y(o.getLayerById(h),s)){l=!0;break}}if(!l)return;const n=this.tilingScheme.getTileCoverage(e.state,0,!0,"smallest"),{spans:a,lodInfo:d}=n,{level:m}=d,p=[];let g=0;for(const{row:h,colFrom:u,colTo:y}of a)for(let e=u;e<=y;e++){const t=new c(m,h,d.normalizeCol(e),d.getWorldForColumn(e)),s=this._getOrCreateBackgroundTile(g,t);s.setTransform(i),p.push(s),g++}const f=this._techniques.getTechnique(0);for(const h of t){const t=o.getLayerById(h);0!==t.type||!y(t,s)||void 0!==t.minzoom&&t.minzoom>=r+u||void 0!==t.maxzoom&&t.maxzoom<r-u||(e.styleLayerUID=t.uid,e.styleLayer=t,f.render(e,{tiles:p}))}h.pool.release(n)}_getOrCreateBackgroundTile(t,i){const o=this._backgroundTiles[t];if(o?.key.equals(i))return o;const n=this.tilingScheme.getTileBounds(e(),i),a=this.tilingScheme.getTileResolution(i.level),d=new l(i,a,n[0],n[3],r,r,s,s);return o?(o.destroy(),this._backgroundTiles[t]=d):this._backgroundTiles.push(d),d}_computeDisplayInfoView(e){let s=e.tileInfo.lods[0].scale;const i=Math.max(25,e.tileInfo.lods.length),o=[];for(let t=0;t<=i;t++)o.push(s),s/=2;this._displayInfo=t.create({scales:o,size:r,spatialReference:e.spatialReference,numLODs:i})}}export{m as VectorTileContainer};
2
+ import{create as e}from"../../../../geometry/support/aaBoundingRect.js";import t from"../../../../layers/support/TileInfo.js";import{tileSizeInTileUnits as s,tileSizeInPixels as r}from"./constants.js";import{SymbolFader as i}from"./decluttering/SymbolFader.js";import{writeOpacityToBuffers as o}from"./decluttering/util.js";import{RenderableTile as l}from"../webgl/RenderableTile.js";import n from"../webgl/TileContainer.js";import{simplePipelineState as a}from"../webgl/shaderGraph/utils.js";import{VTLTechniquesRepo as d}from"../webgl/shaderGraph/techniques/vectorTiles/VTLTechniques.js";import h from"../../tiling/TileCoverage.js";import c from"../../tiling/TileKey.js";const u=1e-6;function y(e,t){if(e){const s=e.getLayoutProperty("visibility");if(!s||1!==s.getValue()&&(void 0===e.minzoom||e.minzoom<t+u)&&(void 0===e.maxzoom||e.maxzoom>=t-u))return!0}return!1}class m extends n{constructor(e){super(e),this._backgroundTiles=[],this._techniques=new d,this._computeDisplayInfoView(e),this._techniques.startup()}destroy(){super.destroy(),this.removeAllChildren(),this._spriteMosaic?.dispose(),this._spriteMosaic=null,null!=this._symbolFader&&(this._symbolFader.clear(),this._symbolFader=null);const e=this.stage?.context;e&&this._techniques.shutdown(e),this._styleRepository=null,this._backgroundTiles=[]}get fading(){return this._symbolFader?.fading??!1}get symbolFader(){return this._symbolFader}get symbolRepository(){return this._symbolFader?.symbolRepository}setStyleResources(e,t,r,l){if(this._spriteMosaic=e,this._glyphMosaic=t,this._styleRepository=r,this.tilingScheme=l,this._computeDisplayInfoView(l),null==this._symbolFader){const e=(e,t)=>{e.allSymbolsFadingOut=!0,e.lastOpacityUpdate=t,o(e,t,!0),e.decluttered=!0,e.requestRender()};this._symbolFader=new i("vector-tile",this._styleRepository,e,this.children,s)}this._symbolFader.styleRepository=r}setSpriteMosaic(e){this._spriteMosaic?.dispose(),this._spriteMosaic=e}deleteStyleLayers(e){null!=this._symbolFader&&this._symbolFader.deleteStyleLayers(e)}createRenderParams(e){return{...super.createRenderParams(e),renderPass:null,styleLayer:null,styleLayerUID:-1,glyphMosaic:this._glyphMosaic,spriteMosaic:this._spriteMosaic}}doRender(e){const{drawPhase:t}=e,s=1===t||32===t;this.visible&&s&&void 0!==this._spriteMosaic&&super.doRender(e)}addChild(e){return super.addChild(e),null!=this._symbolFader?this._symbolFader.addTile(e):e.decluttered=!0,this.requestRender(),e}removeChild(e){return null!=this._symbolFader&&this._symbolFader.removeTile(e),this.requestRender(),super.removeChild(e)}renderChildren(e){const{drawPhase:t}=e;32!==t?this._doRender(e):super.renderChildren(e)}removeAllChildren(){for(let e=0;e<this.children.length;e++){const t=this.children[e];null!=this._symbolFader&&this._symbolFader.removeTile(t),t.dispose()}super.removeAllChildren()}getStencilTarget(){return this.children.filter(e=>e.neededForCoverage&&e.hasData())}restartDeclutter(){null!=this._symbolFader&&this._symbolFader.restartDeclutter()}_doRender(e){const{context:t,painter:s,state:r}=e,i=this._styleRepository;if(!i)return;const o=i.layers,l=this._displayInfo.scaleToZoom(r.scale);this.children.forEach(e=>e.disposeLayerData()),super.renderChildren(e),i.backgroundBucketIds.length>0&&(e.renderPass="background",this._renderBackgroundLayers(e,i.backgroundBucketIds,l)),1===e.drawPhase&&this._fade(l,r);const n=this.children.filter(t=>(1===e.drawPhase&&t.fader.fade()<1&&this.requestRender(),t.visible&&t.hasData()));if(n&&0!==n.length){for(const e of n)e.triangleCount=0;t.setClearDepth(1),t.clear(256),s.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},stencil:{write:!1,test:{compare:514,op:{fail:7680,zFail:7680,zPass:7681},mask:255}},depth:{write:!1,test:515}}),e.renderPass="translucent";for(let t=0;t<o.length;t++)this._renderStyleLayer(o[t],e,n);t.bindVAO(null),s.setPipelineState(a);for(const e of n)e.debugInfo.display.triangleCount=e.triangleCount}else t.bindVAO(null)}_fade(e,t){null!=this._symbolFader&&(this._symbolFader.update(e,t)||this.requestRender())}_renderStyleLayer(e,t,s){const{displayLevel:r,renderPass:i}=t;if(void 0===e)return;const o=e.getLayoutProperty("visibility");if(o&&1===o.getValue())return;switch(e.type){case 0:return;case 1:case 2:case 4:case 3:if("translucent"!==i)return}if(s=3===e.type?s.filter(e=>e.decluttered):s.filter(e=>e.neededForCoverage),3!==e.type&&(0===s.length||void 0!==e.minzoom&&e.minzoom>=r+u||void 0!==e.maxzoom&&e.maxzoom<r-u))return;const l=e.uid;t.styleLayerUID=l,t.styleLayer=e;const n=this._techniques.getTechnique(e.type);null!=n&&n.render(t,{tiles:s})}_renderBackgroundLayers(e,t,s){const{displayLevel:r,state:i}=e,o=this._styleRepository;let l=!1;for(const h of t){const e=o.getLayerById(h);if(e&&0===e.type&&y(o.getLayerById(h),s)){l=!0;break}}if(!l)return;const n=this.tilingScheme.getTileCoverage(e.state,0,!0,"smallest"),{spans:a,lodInfo:d}=n,{level:m}=d,p=[];let g=0;for(const{row:h,colFrom:u,colTo:y}of a)for(let e=u;e<=y;e++){const t=new c(m,h,d.normalizeCol(e),d.getWorldForColumn(e)),s=this._getOrCreateBackgroundTile(g,t);s.setTransform(i),p.push(s),g++}const f=this._techniques.getTechnique(0);for(const h of t){const t=o.getLayerById(h);0!==t.type||!y(t,s)||void 0!==t.minzoom&&t.minzoom>=r+u||void 0!==t.maxzoom&&t.maxzoom<r-u||(e.styleLayerUID=t.uid,e.styleLayer=t,f.render(e,{tiles:p}))}h.pool.release(n)}_getOrCreateBackgroundTile(t,i){const o=this._backgroundTiles[t];if(o?.key.equals(i))return o;const n=this.tilingScheme.getTileBounds(e(),i),a=this.tilingScheme.getTileResolution(i.level),d=new l(i,a,n[0],n[3],r,r,s,s);return o?(o.destroy(),this._backgroundTiles[t]=d):this._backgroundTiles.push(d),d}_computeDisplayInfoView(e){let s=e.tileInfo.lods[0].scale;const i=Math.max(25,e.tileInfo.lods.length),o=[];for(let t=0;t<=i;t++)o.push(s),s/=2;this._displayInfo=t.create({scales:o,size:r,spatialReference:e.spatialReference,numLODs:i})}}export{m as VectorTileContainer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../core/has.js";import{destroyMaybe as e}from"../../../../core/maybe.js";import{RenderingDevice as t}from"./RenderingDevice.js";import{TextureManager as s}from"./TextureManager.js";import{TextureUploadManager as i}from"./TextureUploadManager.js";import{BlendEffect as r}from"./effects/BlendEffect.js";import{FeatureEffect as n}from"./effects/FeatureEffect.js";import o from"./effects/HighlightEffect.js";import{HittestEffect as h}from"./effects/HittestEffect.js";import{EffectManager as f}from"./effects/post-processing/EffectManager.js";import{SimpleMesh as a}from"./meshing/SimpleMesh.js";import{BitBlitTechnique as l}from"./shaderGraph/techniques/utility/BitBlitTechnique.js";import{WorldExtentClipTechnique as c}from"./shaderGraph/techniques/utility/WorldExtentClipTechnique.js";import{SizedDepthStencilFormat as d}from"../../../webgl/enums.js";import{DisposableFramebufferObject as u}from"../../../webgl/FramebufferObject.js";import{Renderbuffer as p}from"../../../webgl/Renderbuffer.js";import{RenderbufferDescriptor as b}from"../../../webgl/RenderbufferDescriptor.js";import{TextureDescriptor as g}from"../../../webgl/TextureDescriptor.js";class _{constructor(e,d){this.context=e,this._blitTechnique=new l,this._worldExtentClipTechnique=new c,this._lastWidth=null,this._lastHeight=null,this._blendEffect=new r,this._stencilBuf=null,this._prevBeforeLayerFBOStack=[],this._fboPool=[],this.effects={highlight:new o,hittest:new h,insideEffect:new n("inside"),outsideEffect:new n("outside")},this.textureManager=new s(d),this.textureUploadManager=new i(d),this._effectsManager=new f,this._quadMesh=a.fromVertexStream(e,[0,0,1,0,0,1,1,1]),this._renderingDevice=new t}dispose(){if(this.textureManager.dispose(),this.textureUploadManager.destroy(),this._blitTechnique.shutdown(),this._worldExtentClipTechnique.shutdown(),this._quadMesh=e(this._quadMesh),this._fbos){let e;for(e in this._fbos)this._fbos[e]&&this._fbos[e].dispose()}for(const e of this._fboPool)e.dispose();if(this._fboPool.length=0,this.effects){let e;for(e in this.effects)this.effects[e]&&this.effects[e].dispose()}this._effectsManager.dispose(),this._blendEffect.dispose(this.context),this._renderingDevice.dispose()}get quadMesh(){return this._quadMesh}getFbos(){if(!this._fbos)throw new Error("InternalError: Painter FBOs not initialized");return this._fbos}acquireFbo(e,t){let s;if(this._fboPool.length>0)s=this._fboPool.pop();else{const i=new g(e,t);i.samplingMode=9728,i.wrapMode=33071,s=new u(this.context,i,this._stencilBuf)}return s.width===e&&s.height===t||s.resize(e,t),s}releaseFbo(e){this._fboPool.push(e)}getSharedStencilBuffer(){return this._stencilBuf}beforeRenderPhases(e,t,s){const{context:i}=e;this._worldExtentClipTechnique.render(e,{backgroundColor:t,padding:s});const{width:r,height:n}=i.getViewport();if(this.updateFBOs(r,n),this._prevFBO=i.boundFramebuffer,i.bindFramebuffer(this.getFbos().output),i.setColorMask(!0,!0,!0,!0),null!=t){const{r:e,g:s,b:r,a:n}=t;i.setClearColor(n*e/255,n*s/255,n*r/255,n)}else i.setClearColor(0,0,0,0);i.setDepthWriteEnabled(!0),i.setClearDepth(1),i.clear(16640),i.setDepthWriteEnabled(!1)}afterRenderPhases(e){const{context:t}=e;t.bindFramebuffer(this._prevFBO),this._blitTechnique.render(e,{texture:this.getFbos().output.colorTexture,samplingMode:9728,opacity:1,clipToVisibleRegion:!0}),this._renderingDevice.setPipelineStateNeedsUpdate(!0)}beforeRenderLayer(e,t,s){const{context:i,blendMode:r,effects:n,drawPhase:o,requireFBO:h}=e;if(i.setClearColor(0,0,0,0),h||m(o,r,n,s)){const e=i.boundFramebuffer;this._prevBeforeLayerFBOStack.push(e);const{width:t,height:s}=i.getViewport(),r=this.acquireFbo(t,s);i.bindFramebuffer(r),i.setColorMask(!0,!0,!0,!0),i.setClearColor(0,0,0,0),i.setDepthWriteEnabled(!0),i.setClearDepth(1),i.clear(16640),i.setDepthWriteEnabled(!1)}i.setDepthWriteEnabled(!1),i.setDepthTestEnabled(!1),i.setStencilTestEnabled(!0),i.setClearStencil(t),i.setStencilWriteMask(255),i.clear(1024)}afterRenderLayer(e,t){const{context:s,blendMode:i,effects:r,requireFBO:n,drawPhase:o}=e;if(n||m(o,i,r,t)){const n=s.boundFramebuffer;if(null==n)return;null!=r&&r.length>0&&1===o&&(s.setColorMask(!0,!0,!0,!0),this._applyEffects(e,r,n)),s.bindFramebuffer(this._prevBeforeLayerFBOStack.pop()),s.setStencilTestEnabled(!1),s.setStencilWriteMask(0),s.setBlendingEnabled(!0),s.setBlendFunctionSeparate(1,771,1,771),s.setColorMask(!0,!0,!0,!0);const h=null==i||16===o||2===o||128===o?"normal":i;this._blendEffect.draw(e,n.colorTexture,9728,h,t),this.releaseFbo(n)}}blitTexture(e,t,s,i=1){this._blitTechnique.render(e,{texture:t,samplingMode:s,opacity:i}),this._renderingDevice.setPipelineStateNeedsUpdate(!0)}getPostProcessingEffects(e){return this._effectsManager.getPostProcessingEffects(e)}updateFBOs(e,t){if(e!==this._lastWidth||t!==this._lastHeight){if(this._lastWidth=e,this._lastHeight=t,this._fbos){let s;for(s in this._fbos)this._fbos[s].resize(e,t);return}const s=new g(e,t);s.samplingMode=9728,s.wrapMode=33071;const i=new b(d.DEPTH24_STENCIL8,e,t);this._stencilBuf=new p(this.context,i),this._fbos={output:new u(this.context,s,this._stencilBuf),effect0:new u(this.context,s,this._stencilBuf)}}}_applyEffects(e,t,s){const{context:i}=e,r=this._effectsManager.getPostProcessingEffects(t);for(const{postProcessingTechnique:n,effect:o}of r)i.bindFramebuffer(s),n.render(e,{layerFBO:s,effect:o});this._renderingDevice.setPipelineStateNeedsUpdate(!0)}setShader(e){return this._renderingDevice.setShader(e)}clearShaderCache(){this._renderingDevice.clearShaderCache()}getProgramCache(){return this._renderingDevice.getProgramCache()}setPipelineState(e){return this._renderingDevice.setPipelineState(e)}getPipelineState(){return this._renderingDevice.getPipelineState()}submitDraw(e,t,s){return this._renderingDevice.submitDraw(e,t,s)}submitDrawMesh(e,t,s,i){this._renderingDevice.submitDrawMesh(e,t,s,i)}submitDrawMeshUntyped(e,t,s,i){this._renderingDevice.submitDrawMeshUntyped(e,t,s,i)}updatePipelineState(e){return this._renderingDevice.updatePipelineState(e)}setStencilRef(e,t){return this._renderingDevice.setStencilRef(e,t)}}function m(e,t,s,i){return 4!==e&&2!==e&&16!==e&&128!==e&&(1!==i||null!=t&&"normal"!==t||null!=s&&s.length>0)}export{_ as default};
2
+ import"../../../../core/has.js";import{destroyMaybe as e}from"../../../../core/maybe.js";import{RenderingDevice as t}from"./RenderingDevice.js";import{TextureManager as s}from"./TextureManager.js";import{TextureUploadManager as i}from"./TextureUploadManager.js";import{BlendEffect as r}from"./effects/BlendEffect.js";import{FeatureEffect as n}from"./effects/FeatureEffect.js";import o from"./effects/HighlightEffect.js";import{HittestEffect as h}from"./effects/HittestEffect.js";import{EffectManager as f}from"./effects/post-processing/EffectManager.js";import{SimpleMesh as a}from"./meshing/SimpleMesh.js";import{BitBlitTechnique as l}from"./shaderGraph/techniques/utility/BitBlitTechnique.js";import{WorldExtentClipTechnique as c}from"./shaderGraph/techniques/utility/WorldExtentClipTechnique.js";import{SizedDepthStencilFormat as d}from"../../../webgl/enums.js";import{DisposableFramebufferObject as u}from"../../../webgl/FramebufferObject.js";import{Renderbuffer as p}from"../../../webgl/Renderbuffer.js";import{RenderbufferDescriptor as b}from"../../../webgl/RenderbufferDescriptor.js";import{TextureDescriptor as g}from"../../../webgl/TextureDescriptor.js";class _{constructor(e,d){this.context=e,this._blitTechnique=new l,this._worldExtentClipTechnique=new c,this._lastWidth=null,this._lastHeight=null,this._blendEffect=new r,this._stencilBuf=null,this._prevBeforeLayerFBOStack=[],this._fboPool=[],this.effects={highlight:new o,hittest:new h,insideEffect:new n("inside"),outsideEffect:new n("outside")},this.textureManager=new s(d),this.textureUploadManager=new i(d),this._effectsManager=new f,this._quadMesh=a.fromVertexStream(e,[0,0,1,0,0,1,1,1]),this._renderingDevice=new t}dispose(){if(this.textureManager.dispose(),this.textureUploadManager.destroy(),this._blitTechnique.shutdown(),this._worldExtentClipTechnique.shutdown(),this._quadMesh=e(this._quadMesh),this._fbos){let e;for(e in this._fbos)this._fbos[e]&&this._fbos[e].dispose()}for(const e of this._fboPool)e.dispose();if(this._fboPool.length=0,this.effects){let e;for(e in this.effects)this.effects[e]&&this.effects[e].dispose()}this._effectsManager.dispose(),this._blendEffect.dispose(this.context),this._renderingDevice.dispose()}get quadMesh(){return this._quadMesh}getFbos(){if(!this._fbos)throw new Error("InternalError: Painter FBOs not initialized");return this._fbos}acquireFbo(e,t){let s;if(this._fboPool.length>0)s=this._fboPool.pop();else{const i=new g(e,t);i.samplingMode=9728,i.wrapMode=33071,s=new u(this.context,i,this._stencilBuf)}return s.width===e&&s.height===t||s.resize(e,t),s}releaseFbo(e){this._fboPool.push(e)}getSharedStencilBuffer(){return this._stencilBuf}beforeRenderPhases(e,t,s){const{context:i}=e;this._worldExtentClipTechnique.render(e,{backgroundColor:t,padding:s});const{width:r,height:n}=i.getViewport();if(this.updateFBOs(r,n),this._prevFBO=i.boundFramebuffer,i.bindFramebuffer(this.getFbos().output),i.setColorMask(!0,!0,!0,!0),null!=t){const{r:e,g:s,b:r,a:n}=t;i.setClearColor(n*e/255,n*s/255,n*r/255,n)}else i.setClearColor(0,0,0,0);i.setDepthWriteEnabled(!0),i.setClearDepth(1),i.clear(16640),i.setDepthWriteEnabled(!1)}afterRenderPhases(e){const{context:t}=e;t.bindFramebuffer(this._prevFBO),this._blitTechnique.render(e,{texture:this.getFbos().output.colorTexture,samplingMode:9728,opacity:1,clipToVisibleRegion:!0}),this._renderingDevice.setPipelineStateNeedsUpdate(!0)}beforeRenderLayer(e,t,s){const{context:i,blendMode:r,effects:n,drawPhase:o,requireFBO:h}=e;if(i.setClearColor(0,0,0,0),h||m(o,r,n,s)){const e=i.boundFramebuffer;this._prevBeforeLayerFBOStack.push(e);const{width:t,height:s}=i.getViewport(),r=this.acquireFbo(t,s);i.bindFramebuffer(r),i.setColorMask(!0,!0,!0,!0),i.setClearColor(0,0,0,0),i.setDepthWriteEnabled(!0),i.setClearDepth(1),i.clear(16640),i.setDepthWriteEnabled(!1)}i.setDepthWriteEnabled(!1),i.setDepthTestEnabled(!1),i.setStencilTestEnabled(!0),i.setClearStencil(t),i.setStencilWriteMask(255),i.clear(1024)}afterRenderLayer(e,t){const{context:s,blendMode:i,effects:r,requireFBO:n,drawPhase:o}=e;if(n||m(o,i,r,t)){const n=s.boundFramebuffer;if(null==n)return;null!=r&&r.length>0&&1===o&&(s.setColorMask(!0,!0,!0,!0),this._applyEffects(e,r,n)),s.bindFramebuffer(this._prevBeforeLayerFBOStack.pop()),s.setStencilTestEnabled(!1),s.setStencilWriteMask(0),s.setBlendingEnabled(!0),s.setBlendFunctionSeparate(1,771,1,771),s.setColorMask(!0,!0,!0,!0);const h=null==i||8===o||2===o||64===o?"normal":i;this._blendEffect.draw(e,n.colorTexture,9728,h,t),this.releaseFbo(n)}}blitTexture(e,t,s,i=1){this._blitTechnique.render(e,{texture:t,samplingMode:s,opacity:i}),this._renderingDevice.setPipelineStateNeedsUpdate(!0)}getPostProcessingEffects(e){return this._effectsManager.getPostProcessingEffects(e)}updateFBOs(e,t){if(e!==this._lastWidth||t!==this._lastHeight){if(this._lastWidth=e,this._lastHeight=t,this._fbos){let s;for(s in this._fbos)this._fbos[s].resize(e,t);return}const s=new g(e,t);s.samplingMode=9728,s.wrapMode=33071;const i=new b(d.DEPTH24_STENCIL8,e,t);this._stencilBuf=new p(this.context,i),this._fbos={output:new u(this.context,s,this._stencilBuf),effect0:new u(this.context,s,this._stencilBuf)}}}_applyEffects(e,t,s){const{context:i}=e,r=this._effectsManager.getPostProcessingEffects(t);for(const{postProcessingTechnique:n,effect:o}of r)i.bindFramebuffer(s),n.render(e,{layerFBO:s,effect:o});this._renderingDevice.setPipelineStateNeedsUpdate(!0)}setShader(e){return this._renderingDevice.setShader(e)}clearShaderCache(){this._renderingDevice.clearShaderCache()}getProgramCache(){return this._renderingDevice.getProgramCache()}setPipelineState(e){return this._renderingDevice.setPipelineState(e)}getPipelineState(){return this._renderingDevice.getPipelineState()}submitDraw(e,t,s){return this._renderingDevice.submitDraw(e,t,s)}submitDrawMesh(e,t,s,i){this._renderingDevice.submitDrawMesh(e,t,s,i)}submitDrawMeshUntyped(e,t,s,i){this._renderingDevice.submitDrawMeshUntyped(e,t,s,i)}updatePipelineState(e){return this._renderingDevice.updatePipelineState(e)}setStencilRef(e,t){return this._renderingDevice.setStencilRef(e,t)}}function m(e,t,s,i){return 2!==e&&8!==e&&64!==e&&(1!==i||null!=t&&"normal"!==t||null!=s&&s.length>0)}export{_ as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import{spritePadding as e}from"./definitions.js";import{log2 as i}from"./GeometryUtils.js";import s from"./Rect.js";import a from"./RectangleBinPack.js";import r from"../../../webgl/Texture.js";import{TextureDescriptor as o}from"../../../webgl/TextureDescriptor.js";function h(t){return t&&"static"===t.type}class c{constructor(t,e,i=0){this._mosaicPages=[],this._maxItemSize=0,this._currentPage=0,this._pageWidth=0,this._pageHeight=0,this._mosaicRects=new Map,this._spriteCopyQueue=[],this.pixelRatio=1,this._pageWidth=t,this._pageHeight=e,i>0&&(this._maxItemSize=i),this.pixelRatio=window.devicePixelRatio||1,this._binPack=new a(this._pageWidth,this._pageHeight);const s=Math.floor(this._pageWidth),r=Math.floor(this._pageHeight);this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(s*r)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0})}getSize(t){return t>=this._mosaicPages.length?[0,0]:this._mosaicPages[t].size}getPageTexture(t){return t<this._mosaicPages.length?this._mosaicPages[t].texture:null}has(t){return this._mosaicRects.has(t)}get itemCount(){return this._mosaicRects.size}getSpriteItem(t){return this._mosaicRects.get(t)}addSpriteItem(t,i,a,r,o,c,n=1,g="Linear",p=.5,m=1){if(this._mosaicRects.has(t))return this._mosaicRects.get(t);let d,u,l;if(h(a))[d,u,l]=this._allocateImage(i[0],i[1]);else{d=new s(0,0,i[0],i[1]),u=this._mosaicPages.length;const t=void 0;this._mosaicPages.push({mosaicsData:a,size:[i[0]+2*e,i[1]+2*e],dirty:!0,texture:t})}if(d.width<=0||d.height<=0)return null;const _={type:"sprite",rect:d,width:i[0],height:i[1],sdf:o,simplePattern:c,rasterizationScale:n,samplingMode:g,sdfPaddingRatio:p,sdfDecodeCoeff:m,page:u};return this._mosaicRects.set(t,_),h(a)&&(has("esri-mosaic-debug")&&this._showDebugSprite(i,a.data),this._copy({rect:d,spriteSize:i,spriteData:a.data,page:u,pageSize:l,repeat:r,sdf:o})),_}hasItemsToProcess(){return 0!==this._spriteCopyQueue.length}processNextItem(){const t=this._spriteCopyQueue.pop();t&&this._copy(t)}getMosaicItemPosition(t){const i=this.getSpriteItem(t),s=i?.rect;if(!s)return null;s.width=i.width,s.height=i.height;const a=i.width,r=i.height,o=e,h=this._mosaicPages[i.page].size;return{size:[i.width,i.height],tl:[(s.x+o)/h[0],(s.y+o)/h[1]],br:[(s.x+o+a)/h[0],(s.y+o+r)/h[1]],page:i.page}}bind(t,e,i=0,s=0){const a=this._mosaicPages[i],r=a.mosaicsData;let o=a.texture;if(o||(o=g(t,a.size),a.texture=o),o.setSamplingMode(e),t.bindTexture(o,s),h(r))a.dirty&&(o.setData(new Uint8Array(r.data.buffer)),o.generateMipmap(),has("esri-mosaic-debug")&&this._showDebugPage(i));else{const t=r.data;t.hasFrameData&&(t.loadFrame(o),o.generateMipmap())}a.dirty=!1}getTexture(t,e=0){const{context:i}=t,s=this._mosaicPages[e],a=s.mosaicsData;let r=s.texture;if(r||(r=g(i,s.size),s.texture=r),h(a))s.dirty&&(r.setData(new Uint8Array(a.data.buffer)),r.generateMipmap(),has("esri-mosaic-debug")&&this._showDebugPage(e));else{const e=a.data;e.update(t),e.hasFrameData&&(e.loadFrame(r),r.generateMipmap())}return s.dirty=!1,r}dispose(){this._binPack=null;for(const t of this._mosaicPages){const e=t.texture;e&&e.dispose();const i=t.mosaicsData;if(!h(i)){i.data.destroy()}}this._mosaicPages=null,this._mosaicRects.clear()}static _copyBits(t,e,i,s,a,r,o,h,c,n,g){let p=s*e+i,m=h*r+o;if(g){m-=r;for(let o=-1;o<=n;o++,p=((o+n)%n+s)*e+i,m+=r)for(let e=-1;e<=c;e++)a[m+e]=t[p+(e+c)%c]}else for(let d=0;d<n;d++){for(let e=0;e<c;e++)a[m+e]=t[p+e];p+=e,m+=r}}_copy(i){if(i.page>=this._mosaicPages.length)return;const s=this._mosaicPages[i.page],a=s.mosaicsData;if(!h(s.mosaicsData))throw new t("mapview-invalid-resource","unsuitable data type!");const r=i.spriteData,o=a.data;c._copyBits(r,i.spriteSize[0],0,0,o,i.pageSize[0],i.rect.x+e,i.rect.y+e,i.spriteSize[0],i.spriteSize[1],i.repeat),s.dirty=!0}_allocateImage(t,r){t+=2*e,r+=2*e;const o=Math.max(t,r);if(this._maxItemSize&&this._maxItemSize<o){const e=2**Math.ceil(i(t)),a=2**Math.ceil(i(r)),o=new s(0,0,t,r);return this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(e*a)},size:[e,a],dirty:!0,texture:void 0}),[o,this._mosaicPages.length-1,[e,a]]}const c=this._binPack.allocate(t,r);if(c.width<=0){const e=this._mosaicPages[this._currentPage];return!e.dirty&&h(e.mosaicsData)&&(e.mosaicsData.data=null),this._currentPage=this._mosaicPages.length,this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(this._pageWidth*this._pageHeight)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0}),this._binPack=new a(this._pageWidth,this._pageHeight),this._allocateImage(t,r)}return[c,this._currentPage,[this._pageWidth,this._pageHeight]]}_showDebugSprite([t,e],i){const s=document.createElement("canvas");s.width=t,s.height=e,s.setAttribute("style",`position: absolute; top: ${4+204*n++}px; right: 208px; width: 200px; height: 200px; border: 1px solid black;`);const a=s.getContext("2d"),r=new ImageData(t,e);r.data.set(new Uint8Array(i.buffer)),a.putImageData(r,0,0),document.body.appendChild(s)}_showDebugPage(t){const e=this._mosaicPages[t],{size:[i,s],mosaicsData:a}=e;if(!h(a))return;const r=`mosaicDebugPage${t}`,o=document.getElementById(r)??document.createElement("canvas");o.id=r,o.width=i,o.height=s,o.setAttribute("style",`position: absolute; top: ${4+204*t}px; right: 4px; width: 200px; height: 200px; border: 1px solid black;`);const c=o.getContext("2d"),n=new ImageData(i,s);n.data.set(new Uint8Array(a.data.buffer)),c.putImageData(n,0,0),document.body.appendChild(o)}}let n=0;function g(t,e){const i=new o(e[0],e[1]);return i.wrapMode=33071,new r(t,i,null)}export{c as default};
2
+ import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import{spritePadding as e}from"./definitions.js";import{log2 as i}from"./GeometryUtils.js";import a from"./Rect.js";import s from"./RectangleBinPack.js";import r from"../../../webgl/Texture.js";import{TextureDescriptor as o}from"../../../webgl/TextureDescriptor.js";function h(t){return t&&"static"===t.type}class c{constructor(t,e,i=0){this._mosaicPages=[],this._maxItemSize=0,this._currentPage=0,this._pageWidth=0,this._pageHeight=0,this._mosaicRects=new Map,this._pageWidth=t,this._pageHeight=e,i>0&&(this._maxItemSize=i),this._binPack=new s(this._pageWidth,this._pageHeight);const a=Math.floor(this._pageWidth),r=Math.floor(this._pageHeight);this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(a*r)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0})}getSize(t){return t>=this._mosaicPages.length?[0,0]:this._mosaicPages[t].size}has(t){return this._mosaicRects.has(t)}getSpriteItem(t){return this._mosaicRects.get(t)}addSpriteItem(t,i,s,r,o,c,n=1,g="Linear",p=.5,m=1){if(this._mosaicRects.has(t))return this._mosaicRects.get(t);let d,u,_;if(h(s))[d,u,_]=this._allocateImage(i[0],i[1]);else{d=new a(0,0,i[0],i[1]),u=this._mosaicPages.length;const t=void 0;this._mosaicPages.push({mosaicsData:s,size:[i[0]+2*e,i[1]+2*e],dirty:!0,texture:t})}if(d.width<=0||d.height<=0)return null;const l={type:"sprite",rect:d,width:i[0],height:i[1],sdf:o,simplePattern:c,rasterizationScale:n,samplingMode:g,sdfPaddingRatio:p,sdfDecodeCoeff:m,page:u};return this._mosaicRects.set(t,l),h(s)&&(has("esri-mosaic-debug")&&this._showDebugSprite(i,s.data),this._copy({rect:d,spriteSize:i,spriteData:s.data,page:u,pageSize:_,repeat:r,sdf:o})),l}getTexture(t,e=0){const{context:i}=t,a=this._mosaicPages[e],s=a.mosaicsData;let r=a.texture;if(r||(r=g(i,a.size),a.texture=r),h(s))a.dirty&&(r.setData(new Uint8Array(s.data.buffer)),r.generateMipmap(),has("esri-mosaic-debug")&&this._showDebugPage(e));else{const e=s.data;e.update(t),e.hasFrameData&&(e.loadFrame(r),r.generateMipmap())}return a.dirty=!1,r}dispose(){this._binPack=null;for(const t of this._mosaicPages){const e=t.texture;e&&e.dispose();const i=t.mosaicsData;if(!h(i)){i.data.destroy()}}this._mosaicPages=null,this._mosaicRects.clear()}static _copyBits(t,e,i,a,s,r,o,h,c,n,g){let p=a*e+i,m=h*r+o;if(g){m-=r;for(let o=-1;o<=n;o++,p=((o+n)%n+a)*e+i,m+=r)for(let e=-1;e<=c;e++)s[m+e]=t[p+(e+c)%c]}else for(let d=0;d<n;d++){for(let e=0;e<c;e++)s[m+e]=t[p+e];p+=e,m+=r}}_copy(i){if(i.page>=this._mosaicPages.length)return;const a=this._mosaicPages[i.page],s=a.mosaicsData;if(!h(a.mosaicsData))throw new t("mapview-invalid-resource","unsuitable data type!");const r=i.spriteData,o=s.data;c._copyBits(r,i.spriteSize[0],0,0,o,i.pageSize[0],i.rect.x+e,i.rect.y+e,i.spriteSize[0],i.spriteSize[1],i.repeat),a.dirty=!0}_allocateImage(t,r){t+=2*e,r+=2*e;const o=Math.max(t,r);if(this._maxItemSize&&this._maxItemSize<o){const e=2**Math.ceil(i(t)),s=2**Math.ceil(i(r)),o=new a(0,0,t,r);return this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(e*s)},size:[e,s],dirty:!0,texture:void 0}),[o,this._mosaicPages.length-1,[e,s]]}const c=this._binPack.allocate(t,r);if(c.width<=0){const e=this._mosaicPages[this._currentPage];return!e.dirty&&h(e.mosaicsData)&&(e.mosaicsData.data=null),this._currentPage=this._mosaicPages.length,this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(this._pageWidth*this._pageHeight)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0}),this._binPack=new s(this._pageWidth,this._pageHeight),this._allocateImage(t,r)}return[c,this._currentPage,[this._pageWidth,this._pageHeight]]}_showDebugSprite([t,e],i){const a=document.createElement("canvas");a.width=t,a.height=e,a.setAttribute("style",`position: absolute; top: ${4+204*n++}px; right: 208px; width: 200px; height: 200px; border: 1px solid black;`);const s=a.getContext("2d"),r=new ImageData(t,e);r.data.set(new Uint8Array(i.buffer)),s.putImageData(r,0,0),document.body.appendChild(a)}_showDebugPage(t){const e=this._mosaicPages[t],{size:[i,a],mosaicsData:s}=e;if(!h(s))return;const r=`mosaicDebugPage${t}`,o=document.getElementById(r)??document.createElement("canvas");o.id=r,o.width=i,o.height=a,o.setAttribute("style",`position: absolute; top: ${4+204*t}px; right: 4px; width: 200px; height: 200px; border: 1px solid black;`);const c=o.getContext("2d"),n=new ImageData(i,a);n.data.set(new Uint8Array(s.data.buffer)),c.putImageData(n,0,0),document.body.appendChild(o)}}let n=0;function g(t,e){const i=new o(e[0],e[1]);return i.wrapMode=33071,new r(t,i,null)}export{c as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- class s{constructor(){this.drawPhase=217}startup(){}shutdown(s){}}export{s as Technique};
2
+ class s{constructor(){this.drawPhase=109}startup(){}shutdown(s){}}export{s as Technique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{FeatureTechnique as e}from"../FeatureTechnique.js";import{isHittest as t,getSelectionDefines as r,getFeatureTextures as s,getFeatureUniforms as i}from"../featureTechniqueUtils.js";import{HeatmapResources as n}from"./HeatmapResources.js";import{HeatmapAccumulateShader as o}from"../shaders/HeatmapAccumulateShader.js";import{HeatmapResolveShader as u}from"../shaders/HeatmapResolveShader.js";class a extends e{constructor(){super(...arguments),this.type=19,this.drawPhase=73,this.shaders={accumulate:new o,resolve:new u},this._isBound=!1,this._resources=new Map}shutdown(e){super.shutdown(e),this._resources.get(e)?.destroy(),this._resources.delete(e),this._prevFBO=null,this._unbind()}render(e,n){const{context:o,painter:u,state:a}=e,l=n.instance.getInput(),{isFieldActive:d}=l.uniforms,p=this._getOrCreateResourcesRecord(o),m=p.loadQualityProfile(o);t(e)||this._bind(e,p,l),u.setShader({shader:this.shaders.accumulate,uniforms:{...i(e,n.target),kernelControls:{radius:f(l,a),isFieldActive:d?1:0}},textures:s(e),defines:{...r(e),...m.defines},optionalAttributes:{},useComputeBuffer:t(e)});const _=t(e)?h:c;u.setPipelineState(_),u.submitDraw(e,n)}getStencilReference(e){return d(e)}renderResolvePass(e,r){if(t(e))return;const{context:s,painter:i}=e,n=this._resources.get(s);if(null==this._prevFBO||null==this._prevViewport||!n?.initialized)return;const{defines:o}=n.loadQualityProfile(s),{minDensity:u,maxDensity:a,radius:l}=r.getInput().uniforms,d=8,c=9,h=n.accumulateFramebuffer,f=n.resolveGradientTexture,m={shader:this.shaders.resolve,uniforms:{accumulatedDensity:{minAndInvRange:[u,1/(a-u)],normalization:3/(l*l*Math.PI)}},textures:{densityTexture:{unit:d,texture:h.colorTexture},gradientTexture:{unit:c,texture:f}},defines:o,optionalAttributes:{},useComputeBuffer:!1};s.bindFramebuffer(this._prevFBO),s.setViewport(0,0,this._prevViewport.width,this._prevViewport.height),s.bindTexture(h.colorTexture,d),s.bindTexture(f,c),i.setPipelineState(p),i.submitDrawMesh(s,m,i.quadMesh),this._unbind()}_getOrCreateResourcesRecord(e){let t=this._resources.get(e);return null==t&&(t=new n,this._resources.set(e,t)),t}_unbind(){this._prevFBO=null,this._prevViewport=null,this._isBound=!1}_bind(e,t,r){const{context:s,state:i,pixelRatio:n}=e,o=s.boundFramebuffer;if(this._isBound||null==o)return;const u=s.getViewport();this._prevFBO=o,this._prevViewport=u;const{gradient:a,gradientHash:d}=r.uniforms;t.ensureResolveGradientTexture(s,d,a);const{width:c,height:h}=u,p=l(f(r,i),n),m=c*p,_=h*p,w=t.ensureAccumulateFBO(s,m,_);s.blitFramebuffer(o,w,1024),s.bindFramebuffer(w),s.setViewport(0,0,w.width,w.height),s.setColorMask(!0,!0,!0,!0),s.setClearColor(0,0,0,0),s.clear(16384),this._isBound=!0}}function l(e,t){const r=t>1.5?.25:.5;return e<1/(2*r)?1:r}function d(e){return e.key.level+1}const c={color:{write:[!0,!0,!0,!0],blendMode:"additive"},depth:!1,stencil:{write:!1,test:{compare:518,mask:255,op:{fail:7680,zFail:7680,zPass:7681}}}},h={...c,stencil:!1},p={color:{write:[!0,!0,!0,!0],blendMode:"composite"},depth:!1,stencil:!1};function f(e,t){const{referenceScale:r,radius:s}=e.uniforms;return s*(0!==r?r/t.scale:1)}export{a as HeatmapTechnique};
2
+ import{FeatureTechnique as e}from"../FeatureTechnique.js";import{isHittest as t,getSelectionDefines as r,getFeatureTextures as s,getFeatureUniforms as i}from"../featureTechniqueUtils.js";import{HeatmapResources as n}from"./HeatmapResources.js";import{HeatmapAccumulateShader as o}from"../shaders/HeatmapAccumulateShader.js";import{HeatmapResolveShader as u}from"../shaders/HeatmapResolveShader.js";class a extends e{constructor(){super(...arguments),this.type=19,this.drawPhase=37,this.shaders={accumulate:new o,resolve:new u},this._isBound=!1,this._resources=new Map}shutdown(e){super.shutdown(e),this._resources.get(e)?.destroy(),this._resources.delete(e),this._prevFBO=null,this._unbind()}render(e,n){const{context:o,painter:u,state:a}=e,l=n.instance.getInput(),{isFieldActive:d}=l.uniforms,p=this._getOrCreateResourcesRecord(o),m=p.loadQualityProfile(o);t(e)||this._bind(e,p,l),u.setShader({shader:this.shaders.accumulate,uniforms:{...i(e,n.target),kernelControls:{radius:f(l,a),isFieldActive:d?1:0}},textures:s(e),defines:{...r(e),...m.defines},optionalAttributes:{},useComputeBuffer:t(e)});const _=t(e)?h:c;u.setPipelineState(_),u.submitDraw(e,n)}getStencilReference(e){return d(e)}renderResolvePass(e,r){if(t(e))return;const{context:s,painter:i}=e,n=this._resources.get(s);if(null==this._prevFBO||null==this._prevViewport||!n?.initialized)return;const{defines:o}=n.loadQualityProfile(s),{minDensity:u,maxDensity:a,radius:l}=r.getInput().uniforms,d=8,c=9,h=n.accumulateFramebuffer,f=n.resolveGradientTexture,m={shader:this.shaders.resolve,uniforms:{accumulatedDensity:{minAndInvRange:[u,1/(a-u)],normalization:3/(l*l*Math.PI)}},textures:{densityTexture:{unit:d,texture:h.colorTexture},gradientTexture:{unit:c,texture:f}},defines:o,optionalAttributes:{},useComputeBuffer:!1};s.bindFramebuffer(this._prevFBO),s.setViewport(0,0,this._prevViewport.width,this._prevViewport.height),s.bindTexture(h.colorTexture,d),s.bindTexture(f,c),i.setPipelineState(p),i.submitDrawMesh(s,m,i.quadMesh),this._unbind()}_getOrCreateResourcesRecord(e){let t=this._resources.get(e);return null==t&&(t=new n,this._resources.set(e,t)),t}_unbind(){this._prevFBO=null,this._prevViewport=null,this._isBound=!1}_bind(e,t,r){const{context:s,state:i,pixelRatio:n}=e,o=s.boundFramebuffer;if(this._isBound||null==o)return;const u=s.getViewport();this._prevFBO=o,this._prevViewport=u;const{gradient:a,gradientHash:d}=r.uniforms;t.ensureResolveGradientTexture(s,d,a);const{width:c,height:h}=u,p=l(f(r,i),n),m=c*p,_=h*p,w=t.ensureAccumulateFBO(s,m,_);s.blitFramebuffer(o,w,1024),s.bindFramebuffer(w),s.setViewport(0,0,w.width,w.height),s.setColorMask(!0,!0,!0,!0),s.setClearColor(0,0,0,0),s.clear(16384),this._isBound=!0}}function l(e,t){const r=t>1.5?.25:.5;return e<1/(2*r)?1:r}function d(e){return e.key.level+1}const c={color:{write:[!0,!0,!0,!0],blendMode:"additive"},depth:!1,stencil:{write:!1,test:{compare:518,mask:255,op:{fail:7680,zFail:7680,zPass:7681}}}},h={...c,stencil:!1},p={color:{write:[!0,!0,!0,!0],blendMode:"composite"},depth:!1,stencil:!1};function f(e,t){const{referenceScale:r,radius:s}=e.uniforms;return s*(0!==r?r/t.scale:1)}export{a as HeatmapTechnique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{FeatureTechnique as e}from"../FeatureTechnique.js";import{getSelectionDefines as t,getFeaturePipelineState as s,isHittest as r,getFeatureTextures as a,getFeatureUniforms as i,resolveDynamicUniforms as n}from"../featureTechniqueUtils.js";import{TextShader as o}from"../text/TextShader.js";class u extends e{constructor(){super(...arguments),this.type=20,this.shaders={geometry:new o},this.drawPhase=14,this.symbologyPlane=3}render(e,o){const{painter:u}=e,m=t(e),d={...s(e),stencil:{write:!1,test:{compare:516,mask:255,op:{fail:7680,zFail:7680,zPass:7680}}}},c=o.instance.getInput(),{mosaicInfo:f,mosaicTexture:p}=u.textureManager.getBindingInfo(e,o.textureKey,!1),l={shader:this.shaders.geometry,uniforms:{...n(e,o.target,c.uniforms),...i(e,o.target),mosaicInfo:f},textures:{...a(e),mosaicTexture:p},defines:{...m,textRenderPassType:0,isBackgroundPass:!0,isLabel:!0},optionalAttributes:c.optionalAttributes,useComputeBuffer:r(e)};u.setPipelineState(d),u.setShader(l),u.submitDraw(e,o,{stencilRef:255}),u.setShader({...l,defines:{...m,textRenderPassType:2,isBackgroundPass:!1,isLabel:!0}}),u.submitDraw(e,o,{stencilRef:255}),u.setShader({...l,defines:{...m,textRenderPassType:0,isBackgroundPass:!1,isLabel:!0}}),u.submitDraw(e,o,{stencilRef:255})}}export{u as LabelTechnique};
2
+ import{FeatureTechnique as e}from"../FeatureTechnique.js";import{getSelectionDefines as t,getFeaturePipelineState as s,isHittest as r,getFeatureTextures as a,getFeatureUniforms as i,resolveDynamicUniforms as n}from"../featureTechniqueUtils.js";import{TextShader as o}from"../text/TextShader.js";class u extends e{constructor(){super(...arguments),this.type=20,this.shaders={geometry:new o},this.drawPhase=6,this.symbologyPlane=3}render(e,o){const{painter:u}=e,m=t(e),d={...s(e),stencil:{write:!1,test:{compare:516,mask:255,op:{fail:7680,zFail:7680,zPass:7680}}}},c=o.instance.getInput(),{mosaicInfo:f,mosaicTexture:p}=u.textureManager.getBindingInfo(e,o.textureKey,!1),l={shader:this.shaders.geometry,uniforms:{...n(e,o.target,c.uniforms),...i(e,o.target),mosaicInfo:f},textures:{...a(e),mosaicTexture:p},defines:{...m,textRenderPassType:0,isBackgroundPass:!0,isLabel:!0},optionalAttributes:c.optionalAttributes,useComputeBuffer:r(e)};u.setPipelineState(d),u.setShader(l),u.submitDraw(e,o,{stencilRef:255}),u.setShader({...l,defines:{...m,textRenderPassType:2,isBackgroundPass:!1,isLabel:!0}}),u.submitDraw(e,o,{stencilRef:255}),u.setShader({...l,defines:{...m,textRenderPassType:0,isBackgroundPass:!1,isLabel:!0}}),u.submitDraw(e,o,{stencilRef:255})}}export{u as LabelTechnique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{destroyMaybe as e}from"../../../../../../../core/maybe.js";import{fromValues as t}from"../../../../../../../core/libs/gl-matrix-2/factories/vec4f32.js";import{FeatureTile as i}from"../../../FeatureTile.js";import{Mesh as s}from"../../../meshing/Mesh.js";import{Technique as r}from"../Technique.js";import{getTileUniforms as o}from"../shaders/Tile.js";import{TileDebugInfoShader as n,TileDebugInfoOutlineShader as h}from"../shaders/TileDebugInfoShader.js";import{getTileContainerUniforms as u}from"../shaders/TileInfo.js";import{getViewUniforms as a}from"../shaders/ViewInfo.js";import{TileDebugInfoTexture as l}from"./TileDebugInfoTexture.js";import{PrimitiveType as d,DataType as m}from"../../../../../../webgl/enums.js";import{VertexElementDescriptor as p}from"../../../../../../webgl/VertexElementDescriptor.js";class c extends r{constructor(){super(...arguments),this.type=34,this.drawPhase=64,this.shaders={outline:new h,tileInfo:new n},this._outlineMesh=null,this._color=t(1,0,0,1),this._texture=new l}render(e,t){if(!(this.drawPhase&e.drawPhase))return;const{context:s,painter:r}=e;if(!t.isReady&&t instanceof i&&t.hasData)return;const n=this._getOutlineMesh(s),h=a(e),l=u(e),d=o(e.tilingScheme,t);r.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},depth:!1,stencil:!1});const m={shader:this.shaders.outline,uniforms:{view:h,tileContainer:l,tile:d,config:{coordRange:[t.rangeX,t.rangeY],depth:0,color:this._color}},textures:void 0,defines:void 0,optionalAttributes:void 0,useComputeBuffer:!1};r.submitDrawMeshUntyped(s,m,n);const p=this._texture.getTexture(s,t);r.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},depth:!1,stencil:!1});const c={shader:this.shaders.tileInfo,uniforms:{view:h,tileContainer:l,tile:d,config:{depth:0,coordRatio:[t.rangeX/t.width,t.rangeY/t.height],delta:[0,0],dimensions:[p.descriptor.width,p.descriptor.height]}},textures:{texture:{texture:p,unit:0}},defines:void 0,optionalAttributes:void 0,useComputeBuffer:!1};r.submitDrawMesh(s,c,r.quadMesh)}shutdown(){this._outlineMesh=e(this._outlineMesh),this._texture.shutdown()}_getOutlineMesh(e){return this._outlineMesh||(this._outlineMesh=new s(e,{vertex:{geometry:{data:new Int8Array([0,0,1,0,1,1,0,1]),layout:[new p("position",2,m.BYTE,0,2)]}},groups:[{primitive:d.LINE_LOOP}],parts:[{group:0,start:0,count:4}]})),this._outlineMesh}}export{c as TileDebugInfoTechnique};
2
+ import{destroyMaybe as e}from"../../../../../../../core/maybe.js";import{fromValues as t}from"../../../../../../../core/libs/gl-matrix-2/factories/vec4f32.js";import{FeatureTile as i}from"../../../FeatureTile.js";import{Mesh as s}from"../../../meshing/Mesh.js";import{Technique as r}from"../Technique.js";import{getTileUniforms as o}from"../shaders/Tile.js";import{TileDebugInfoShader as n,TileDebugInfoOutlineShader as h}from"../shaders/TileDebugInfoShader.js";import{getTileContainerUniforms as u}from"../shaders/TileInfo.js";import{getViewUniforms as a}from"../shaders/ViewInfo.js";import{TileDebugInfoTexture as l}from"./TileDebugInfoTexture.js";import{PrimitiveType as d,DataType as m}from"../../../../../../webgl/enums.js";import{VertexElementDescriptor as p}from"../../../../../../webgl/VertexElementDescriptor.js";class c extends r{constructor(){super(...arguments),this.type=34,this.drawPhase=32,this.shaders={outline:new h,tileInfo:new n},this._outlineMesh=null,this._color=t(1,0,0,1),this._texture=new l}render(e,t){if(!(this.drawPhase&e.drawPhase))return;const{context:s,painter:r}=e;if(!t.isReady&&t instanceof i&&t.hasData)return;const n=this._getOutlineMesh(s),h=a(e),l=u(e),d=o(e.tilingScheme,t);r.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},depth:!1,stencil:!1});const m={shader:this.shaders.outline,uniforms:{view:h,tileContainer:l,tile:d,config:{coordRange:[t.rangeX,t.rangeY],depth:0,color:this._color}},textures:void 0,defines:void 0,optionalAttributes:void 0,useComputeBuffer:!1};r.submitDrawMeshUntyped(s,m,n);const p=this._texture.getTexture(s,t);r.setPipelineState({color:{write:[!0,!0,!0,!0],blendMode:"composite"},depth:!1,stencil:!1});const c={shader:this.shaders.tileInfo,uniforms:{view:h,tileContainer:l,tile:d,config:{depth:0,coordRatio:[t.rangeX/t.width,t.rangeY/t.height],delta:[0,0],dimensions:[p.descriptor.width,p.descriptor.height]}},textures:{texture:{texture:p,unit:0}},defines:void 0,optionalAttributes:void 0,useComputeBuffer:!1};r.submitDrawMesh(s,c,r.quadMesh)}shutdown(){this._outlineMesh=e(this._outlineMesh),this._texture.shutdown()}_getOutlineMesh(e){return this._outlineMesh||(this._outlineMesh=new s(e,{vertex:{geometry:{data:new Int8Array([0,0,1,0,1,1,0,1]),layout:[new p("position",2,m.BYTE,0,2)]}},groups:[{primitive:d.LINE_LOOP}],parts:[{group:0,start:0,count:4}]})),this._outlineMesh}}export{c as TileDebugInfoTechnique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{fromValues as e}from"../../../../../../../core/libs/gl-matrix-2/factories/vec4f32.js";import{Technique as s}from"../Technique.js";import{getTileUniforms as t}from"../shaders/Tile.js";import{getTileContainerUniforms as r}from"../shaders/TileInfo.js";import{TileStencilShader as i}from"../shaders/TileStencilShader.js";import{getViewUniforms as o}from"../shaders/ViewInfo.js";class a extends s{constructor(){super(...arguments),this.type=35,this.drawPhase=211,this.shaders={tileStencil:new i},this._color=e(1,0,0,1)}render(e,s,i){if(!(this.drawPhase&e.drawPhase&&s.visible))return;const{context:a,painter:n}=e,l=i?.rasterVF??null;n.setPipelineState({color:!1,depth:!1,stencil:{write:{mask:255},test:{compare:516,op:{fail:7680,zFail:7680,zPass:7681},mask:255}}});const c={shader:this.shaders.tileStencil,uniforms:{view:o(e),tileContainer:r(e),tile:t(e.tilingScheme,s),config:{coordRange:[s.rangeX,s.rangeY],depth:0,color:this._color},rasterVF:l},textures:void 0,defines:{isRasterVF:null!=l},optionalAttributes:void 0,useComputeBuffer:!1};n.submitDrawMesh(a,c,n.quadMesh,{stencilRef:s.stencilRef})}}export{a as TileStencilTechnique};
2
+ import{fromValues as e}from"../../../../../../../core/libs/gl-matrix-2/factories/vec4f32.js";import{Technique as s}from"../Technique.js";import{getTileUniforms as t}from"../shaders/Tile.js";import{getTileContainerUniforms as r}from"../shaders/TileInfo.js";import{TileStencilShader as i}from"../shaders/TileStencilShader.js";import{getViewUniforms as o}from"../shaders/ViewInfo.js";class a extends s{constructor(){super(...arguments),this.type=35,this.drawPhase=107,this.shaders={tileStencil:new i},this._color=e(1,0,0,1)}render(e,s,i){if(!(this.drawPhase&e.drawPhase&&s.visible))return;const{context:a,painter:n}=e,l=i?.rasterVF??null;n.setPipelineState({color:!1,depth:!1,stencil:{write:{mask:255},test:{compare:516,op:{fail:7680,zFail:7680,zPass:7681},mask:255}}});const c={shader:this.shaders.tileStencil,uniforms:{view:o(e),tileContainer:r(e),tile:t(e.tilingScheme,s),config:{coordRange:[s.rangeX,s.rangeY],depth:0,color:this._color},rasterVF:l},textures:void 0,defines:{isRasterVF:null!=l},optionalAttributes:void 0,useComputeBuffer:!1};n.submitDrawMesh(a,c,n.quadMesh,{stencilRef:s.stencilRef})}}export{a as TileStencilTechnique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../core/accessorSupport/decorators.js";import{FeatureLikeLayerView2D as o}from"./FeatureLikeLayerView2D.js";import t from"../../layers/FeatureLayerView.js";let s=class extends(o(t)){};s=e([r("esri.views.2d.layers.AnnotationFeatureLayerView2D")],s);const a=s;export{a as default};
2
+ import{__decorate as e}from"tslib";import{watch as r,initial as t}from"../../../core/reactiveUtils.js";import{subclass as s}from"../../../core/accessorSupport/decorators.js";import{FeatureLikeLayerView2D as i}from"./FeatureLikeLayerView2D.js";import o from"../../layers/AnnotationFeatureLayerView.js";let a=class extends(i(o)){initialize(){this.addHandles([r(()=>this.view.scale,()=>this._update(),t)],"constructor")}hasRenderer(){return!0}};a=e([s("esri.views.2d.layers.AnnotationFeatureLayerView2D")],a);const n=a;export{n as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../../core/has.js";import{destroyMaybe as e}from"../../../../core/maybe.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import{signal as r}from"../../../../core/signal.js";import{AFeatureContainer as s}from"../../engine/AFeatureContainer.js";import{effectFlag0 as i,filterFlag0 as n}from"../../engine/webgl/definitions.js";import a from"../../engine/webgl/shaderGraph/techniques/FeatureInstanceStore.js";import{Techniques as o}from"../../engine/webgl/shaderGraph/techniques/TechniqueRegistry.js";import{FeatureTilePresentStrategy as l}from"./FeatureTilePresentStrategy.js";import{RenderState as d}from"./RenderState.js";import{renderHighlight as h}from"../support/util.js";import{createHittestQuery as u}from"../../support/hitTestUtils.js";class c{constructor(e){this.inner=e,this.resolver=Promise.withResolvers()}}class p{constructor(e){this.level=e,this.id=performance.now(),this.messages=[]}}class f{constructor(e,t){this.id=e,this.version=t}}class _ extends s{constructor(e){super(e.view.featuresTilingScheme),this.referenceScale=null,this._updatingChildren=r(!1),this._hitTestsRequests=[],this._renderState=r(null),this._renderStateNext=r(null),this._store=new a,this._subscriptions=new Map,this._presentation=new l,this._updateStatisticsRequests=[],this._lockStatisticUpdates=!1,this._supportsInstanceCleanup=!0,this._shouldUnlockAttributeView=!1,this._layerView=e,this.addTransitionable(this._layerView.featureEffectView)}destroy(){super.destroy(),this._renderState.value=e(this._renderState.value),this._renderStateNext.value=e(this._renderStateNext.value)}get batching(){return has("featurelayer-strict-draw-order")?1:has("featurelayer-force-marker-text-draw-order")?2:0}get updating(){const e=this._updatingChildren.value,t=!this._renderState.value||this._renderState.value.updating,r=!!this._renderStateNext.value,s=this.attributeView.updating;return e||t||r||s}subscriptions(){return this._subscriptions.values()}get hasLabels(){return null!==this.labelSchema}get hasHighlight(){return this._layerView.hasHighlight}get children(){return this._renderState.value?this._renderState.value.tiles().filter(e=>e.presenting):[]}get usedMemory(){let e=0;return this._renderState.value&&(e+=this._renderState.value.usedMemory),this._renderStateNext.value&&(e+=this._renderStateNext.value.usedMemory),e+=this.attributeView.usedMemory,e}get instanceStore(){return this._store}get labelingCollisionInfos(){if(!this._deconflictionInfo)throw new Error("InternalError: DeconflictionInfo not defined. Was update called?");return this._deconflictionInfo}get labelSchema(){return this._schema?.mesh.factory.labels??null}get layerOrder(){return this._layerView.view.allLayerViews.items.indexOf(this._layerView)}get tiles(){return this._renderState.value?.tiles()}get requiresRefresh(){return!!this._renderState.value?.requiresRefresh}get _instanceStore(){return this._store}_getHeatmapInstance(e){if(null==this._instanceStore||!(e.drawPhase&o.heatmap.drawPhase))return null;for(const t of this._instanceStore.values())if(v(t))return t;return null}update(e,t){this._schema=e,this._deconflictionInfo=t}setCoverage(e){this._presentation.updateCoverage(e)}getPresenting(){const e=new Set;for(const t of this._renderState.value?.tiles()??[])t.presenting&&e.add(t.id);return e}beforeRender(e){if(super.beforeRender(e),this._renderState.value){for(const t of this._renderState.value.tiles())t.setTransform(e.state);if(!e.decluttering){this._presentation.update(this._renderState.value.tiles());for(const e of this._renderState.value.tiles())e.upload(this._instanceStore,this.batching)}this._updatingChildren.value=!this.children.every(e=>e.ended&&e.presenting)}}renderChildren(e){switch(super.renderChildren(e),e.drawPhase){case 1:return this._renderMapPhase(e);case 16:return this._renderHighlightPhase(e);case 2:return this._renderLabelPhase(e)}}afterRender(e){super.afterRender(e),e.decluttering||(this._finializeUpdate(),this._updateAttributeView(),this._handleSwapRenderState(),this._renderState.value?.update(this.attributeView.currentEpoch)),this._hitTestsRequests.length&&this.requestRender()}updateStart(e){return this.attributeView.lockTextureUploads(),this._supportsInstanceCleanup=!e&&"dictionary"!==this._schema?.mesh.factory.symbology.type,this.instanceStore.updateStart(this._supportsInstanceCleanup),this.instanceStore}async updateEnd(e,t,r){return this._updateResolver=new c({schema:e,deconflictionInfo:t,invalidateMesh:r}),this.requestRender(),e.mesh.factory.referenceScale&&(this.referenceScale=e.mesh.factory.referenceScale),this._updateResolver.resolver.promise}updateAttributeView(e){this.requestRender(),this.attributeView.requestUpdate(e)}updateSubscriptions(e){for(const{tileId:t,version:r}of e.subscribe){if(!this._subscriptions.has(t)){const e=new f(t,r);this._subscriptions.set(t,e);continue}this._subscriptions.get(t).version=r}for(const t of e.unsubscribe)this._subscriptions.delete(t),this.removeTile(t)}isFeatureFiltered(e){const t=this.attributeView.getFilterFlags(e),r=t&n,s=null==this._layerView.featureEffectView.featureEffect||this._layerView.featureEffectView.featureEffect.excludedLabelsVisible||t&i;return!(r&&s)}getDisplayStatistics(e,t){const r=this._statisticsByLevel.get(e);return r?r.get(t):null}updateStatistics(e,t){if(this._lockStatisticUpdates)return void this._updateStatisticsRequests.push({level:e,statistics:t});let r=this._statisticsByLevel.get(e);r||(r=new Map,this._statisticsByLevel.set(e,r));for(const s of t)r.set(s.fieldName,{minValue:s.minValue,maxValue:s.maxValue})}beginLevelMeshUpdate(e){if(null!=this._pendingLevelUpdate)throw new Error("InternalError: Pending level mesh update in progress");return this._pendingLevelUpdate=new p(e),has("esri-2d-update-debug")&&console.debug(`FeatureContainer.beginLevelMeshUpdate(level=${e}, id=${this._pendingLevelUpdate.id})`),this._pendingLevelUpdate.id}applyLevelMeshUpdate(e){if(null==this._pendingLevelUpdate)throw new Error("InternalError: No level mesh update to apply");if(this._pendingLevelUpdate.id!==e)throw new Error("InternalError: Unexpected id");if(has("esri-2d-update-debug")){const{id:e,level:t}=this._pendingLevelUpdate;console.debug(`FeatureContainer.applyLevelMeshUpdate(level=${t}, id=${e})`)}const{level:t,messages:r}=this._pendingLevelUpdate,s=this._renderStateNext.value??this._renderState.value;if(!s)throw new Error("InternalError: No renderState defined");s.enqueueLevelReplace(t,r),this._pendingLevelUpdate=null,this.requestRender()}lockForOverrides(){this._renderState.value?.lockUploads(),this._lockStatisticUpdates=!0,this.attributeView.locked||(this.attributeView.lockTextureUploads(),this._shouldUnlockAttributeView=!0)}unlockForOverrides(){this._renderState.value?.unlockUploads(),this._shouldUnlockAttributeView&&(this.attributeView.unlockTextureUploads()&&this.hasLabels&&this.requestDeclutter(),this._shouldUnlockAttributeView=!1),this._lockStatisticUpdates=!1;for(const e of this._updateStatisticsRequests)this.updateStatistics(e.level,e.statistics);this._updateStatisticsRequests=[],this._renderState.value?.flush(this.attributeView.currentEpoch),this.requestRender()}async updateRenderState(e){if(this._renderStateNext.value)throw new Error("InternalError: renderStateNext already exists");has("esri-2d-update-debug")&&console.debug(`Version[${e}] FeatureContainer.updateRenderState`),this._renderStateNext.value=new d(()=>this._stage,e=>this._subscriptions.get(e)?.version,e,this.tilingScheme)}async swapRenderState(){if(!this._renderStateNext.value)throw new Error("InternalError: renderStateNext not yet created");if(this._renderStateSwapResolver)throw new Error("InternalError: renderState swap already in progress");this._renderStateSwapResolver=Promise.withResolvers(),await this._renderStateSwapResolver.promise}async onMessage(e,r){if(t(r),!this._pendingLevelUpdate)return this._applyMessage(e);this._pendingLevelUpdate.messages.push(e)}removeTile(e){(this._renderState.value||this._renderStateNext.value)&&(this._renderState.value&&this._renderState.value.removeTile(e),this._renderStateNext.value&&this._renderStateNext.value.removeTile(e))}hitTest(e){const t=u(e);if(!t)return console.warn("Unexpected hittest input:",e),Promise.resolve({trueHitIds:[],candidateHitIds:[]});let r=this._hitTestsRequests.find(({query:e})=>t.hittestType===e.hittestType&&t.input===e.input);const s=Promise.withResolvers();return r?r.resolvers.push(s):(r={query:t,resolvers:[s]},this._hitTestsRequests.push(r)),this.requestRender(),s.promise}getSortKeys(e){const t=new Set(e),r=new Map;for(const s of this.children)if(s.getSortKeys(t).forEach((e,t)=>r.set(t,e)),r.size===t.size)break;return r}get hasAnimation(){return this.hasLabels}doRender(e){const{minScale:t,maxScale:r}=this._layerView.layer.effectiveScaleRange,s=e.state.scale;s<=(t||1/0)&&s>=r&&super.doRender(e)}setStencilReference(e){if(null==this._getHeatmapInstance(e))super.setStencilReference(e);else for(const t of this.children)t.stencilRef=o.heatmap.getStencilReference(t)}createRenderParams(e){const t=super.createRenderParams(e);return t.referenceScale=this.referenceScale,t}_applyMessage(e){const t=e.inner;if(!this._subscriptions.has(t.id))return;const r=this._subscriptions.get(t.id);if(r.version!==t.subscriptionVesrion){if(has("esri-2d-update-debug")){const e=`${t.subscriptionVesrion} != ${r.version}`;console.debug(`Version[${e}] Tile[${t.id}] FeatureContainer - Dropping message, outdated version]`,t)}return}const s=this._renderStateNext.value??this._renderState.value;if(!s)throw new Error("InternalError: No renderState defined");s.version!==t.version&&console.error(`InternalError: Version mismatch. [renderState: ${s.version}, message: ${t.version}]`),s.enqueueUpdate(e),this.requestRender()}_finializeUpdate(){if(!this._updateResolver)return;const{schema:e,deconflictionInfo:t,invalidateMesh:r}=this._updateResolver.inner;this._schema=e,this._deconflictionInfo=t,this.attributeView.unlockTextureUploads()&&this.hasLabels&&this.requestDeclutter(),this.instanceStore.updateEnd(this._supportsInstanceCleanup),r&&(this.restartAllAnimations(),this.swapRenderState());const s="heatmap"===e.mesh.factory.symbology.type?"target-defer":"eager";this._presentation.updateStrategy(s),this._updateResolver.resolver.resolve(),this._updateResolver=null,this.requestRender()}_handleSwapRenderState(){if(this._renderStateSwapResolver&&this._renderStateNext.value){has("esri-2d-update-debug")&&console.debug(`Version[${this._renderStateNext.value}] FeatureContainer.update.swapRenderState`);const e=this._renderState.value,t=new Set,r=new Set;for(const s of e?.tiles()??[])s.decluttering&&t.add(s.id),s.presenting&&r.add(s.id);this._renderState.value=this._renderStateNext.value,this._renderStateNext.value=null,this._renderState.value.flush(this.attributeView.currentEpoch),e?.destroy(),this._renderStateSwapResolver.resolve(),this._renderStateSwapResolver=null;for(const s of this._renderState.value.tiles())t.has(s.id)&&(s.decluttering=!0),r.has(s.id)&&(s.presenting=!0);this.requestRender(),this.hasLabels&&this.requestDeclutter()}}_renderMapPhase(e){this._layerView.featureEffectView.hasEffects?(this._renderOutsideEffect(e),this._renderInsideEffect(e)):this._renderFeatures(e,0),this._hitTestsRequests.length>0&&this._renderHittest(e)}_renderHighlightPhase(e){this.hasHighlight&&h(e,!1,e=>{this._renderFeatures(e,1)})}_renderLabelPhase(e){this._renderFeatures(e,0)}_renderInsideEffect(e){const t=e.painter.effects.insideEffect;t.bind(e),this._renderFeatures(e,2),t.draw(e,this._layerView.featureEffectView.includedEffects),t.unbind()}_renderOutsideEffect(e){const t=e.painter.effects.outsideEffect;t.bind(e),this._renderFeatures(e,3),t.draw(e,this._layerView.featureEffectView.excludedEffects),t.unbind()}_renderHittest(e){const{context:t}=e,r=e.painter.effects.hittest,s=t.boundFramebuffer,i=t.getViewport(),n=e.passOptions,a=e.drawPhase;r.bind(e),e.passOptions=r.createOptions(e,this._hitTestsRequests),e.drawPhase=8;const{distance:o,smallSymbolDistance:l}=e.passOptions,d=Math.max(o,l),h=e.passOptions.hittestType;for(const u of this.children)u.visible&&("rect"===h?u.containsScreenRect(e.state,e.passOptions.tlbr)&&this._renderTile(u,e,0):u.containsScreenPoint(e.state,e.passOptions.position,2*d)&&this._renderTile(u,e,0));r.draw(e),r.unbind(e),t.bindFramebuffer(s),t.restoreViewport(i),e.passOptions=n,e.drawPhase=a}_renderFeatures(e,t){const r=this._getHeatmapInstance(e);null!=r?this._renderHeatmapFeatures(e,t,r):this._renderGeometryFeatures(e,t)}_renderGeometryFeatures(e,t){for(const r of this.children)r.visible&&this._renderTile(r,e,t)}_renderHeatmapFeatures(e,t,r){for(const s of this.children)s.visible&&this._renderTile(s,e,t,19);r.techniqueRef.renderResolvePass(e,r)}_renderTile(e,t,r,s){t.selection=r,e.getDisplayList()?.render(t,s)}}function v(e){return 19===e.techniqueRef.type}export{_ as FeatureContainer};
2
+ import has from"../../../../core/has.js";import{destroyMaybe as e}from"../../../../core/maybe.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import{signal as r}from"../../../../core/signal.js";import{AFeatureContainer as s}from"../../engine/AFeatureContainer.js";import{effectFlag0 as i,filterFlag0 as n}from"../../engine/webgl/definitions.js";import a from"../../engine/webgl/shaderGraph/techniques/FeatureInstanceStore.js";import{Techniques as o}from"../../engine/webgl/shaderGraph/techniques/TechniqueRegistry.js";import{FeatureTilePresentStrategy as l}from"./FeatureTilePresentStrategy.js";import{RenderState as d}from"./RenderState.js";import{renderHighlight as h}from"../support/util.js";import{createHittestQuery as u}from"../../support/hitTestUtils.js";class c{constructor(e){this.inner=e,this.resolver=Promise.withResolvers()}}class p{constructor(e){this.level=e,this.id=performance.now(),this.messages=[]}}class f{constructor(e,t){this.id=e,this.version=t}}class _ extends s{constructor(e){super(e.view.featuresTilingScheme),this.referenceScale=null,this._updatingChildren=r(!1),this._hitTestsRequests=[],this._renderState=r(null),this._renderStateNext=r(null),this._store=new a,this._subscriptions=new Map,this._presentation=new l,this._updateStatisticsRequests=[],this._lockStatisticUpdates=!1,this._supportsInstanceCleanup=!0,this._shouldUnlockAttributeView=!1,this._layerView=e,this.addTransitionable(this._layerView.featureEffectView)}destroy(){super.destroy(),this._renderState.value=e(this._renderState.value),this._renderStateNext.value=e(this._renderStateNext.value)}get batching(){return has("featurelayer-strict-draw-order")?1:has("featurelayer-force-marker-text-draw-order")?2:0}get updating(){const e=this._updatingChildren.value,t=!this._renderState.value||this._renderState.value.updating,r=!!this._renderStateNext.value,s=this.attributeView.updating;return e||t||r||s}subscriptions(){return this._subscriptions.values()}get hasLabels(){return null!==this.labelSchema}get hasHighlight(){return this._layerView.hasHighlight}get children(){return this._renderState.value?this._renderState.value.tiles().filter(e=>e.presenting):[]}get usedMemory(){let e=0;return this._renderState.value&&(e+=this._renderState.value.usedMemory),this._renderStateNext.value&&(e+=this._renderStateNext.value.usedMemory),e+=this.attributeView.usedMemory,e}get instanceStore(){return this._store}get labelingCollisionInfos(){if(!this._deconflictionInfo)throw new Error("InternalError: DeconflictionInfo not defined. Was update called?");return this._deconflictionInfo}get labelSchema(){return this._schema?.mesh.factory.labels??null}get layerOrder(){return this._layerView.view.allLayerViews.items.indexOf(this._layerView)}get tiles(){return this._renderState.value?.tiles()}get requiresRefresh(){return!!this._renderState.value?.requiresRefresh}get _instanceStore(){return this._store}_getHeatmapInstance(e){if(null==this._instanceStore||!(e.drawPhase&o.heatmap.drawPhase))return null;for(const t of this._instanceStore.values())if(v(t))return t;return null}update(e,t){this._schema=e,this._deconflictionInfo=t}setCoverage(e){this._presentation.updateCoverage(e)}getPresenting(){const e=new Set;for(const t of this._renderState.value?.tiles()??[])t.presenting&&e.add(t.id);return e}beforeRender(e){if(super.beforeRender(e),this._renderState.value){for(const t of this._renderState.value.tiles())t.setTransform(e.state);if(!e.decluttering){this._presentation.update(this._renderState.value.tiles());for(const e of this._renderState.value.tiles())e.upload(this._instanceStore,this.batching)}this._updatingChildren.value=!this.children.every(e=>e.ended&&e.presenting)}}renderChildren(e){switch(super.renderChildren(e),e.drawPhase){case 1:return this._renderMapPhase(e);case 8:return this._renderHighlightPhase(e);case 2:return this._renderLabelPhase(e)}}afterRender(e){super.afterRender(e),e.decluttering||(this._finializeUpdate(),this._updateAttributeView(),this._handleSwapRenderState(),this._renderState.value?.update(this.attributeView.currentEpoch)),this._hitTestsRequests.length&&this.requestRender()}updateStart(e){return this.attributeView.lockTextureUploads(),this._supportsInstanceCleanup=!e&&"dictionary"!==this._schema?.mesh.factory.symbology.type,this.instanceStore.updateStart(this._supportsInstanceCleanup),this.instanceStore}async updateEnd(e,t,r){return this._updateResolver=new c({schema:e,deconflictionInfo:t,invalidateMesh:r}),this.requestRender(),e.mesh.factory.referenceScale&&(this.referenceScale=e.mesh.factory.referenceScale),this._updateResolver.resolver.promise}updateAttributeView(e){this.requestRender(),this.attributeView.requestUpdate(e)}updateSubscriptions(e){for(const{tileId:t,version:r}of e.subscribe){if(!this._subscriptions.has(t)){const e=new f(t,r);this._subscriptions.set(t,e);continue}this._subscriptions.get(t).version=r}for(const t of e.unsubscribe)this._subscriptions.delete(t),this.removeTile(t)}isFeatureFiltered(e){const t=this.attributeView.getFilterFlags(e),r=t&n,s=null==this._layerView.featureEffectView.featureEffect||this._layerView.featureEffectView.featureEffect.excludedLabelsVisible||t&i;return!(r&&s)}getDisplayStatistics(e,t){const r=this._statisticsByLevel.get(e);return r?r.get(t):null}updateStatistics(e,t){if(this._lockStatisticUpdates)return void this._updateStatisticsRequests.push({level:e,statistics:t});let r=this._statisticsByLevel.get(e);r||(r=new Map,this._statisticsByLevel.set(e,r));for(const s of t)r.set(s.fieldName,{minValue:s.minValue,maxValue:s.maxValue})}beginLevelMeshUpdate(e){if(null!=this._pendingLevelUpdate)throw new Error("InternalError: Pending level mesh update in progress");return this._pendingLevelUpdate=new p(e),has("esri-2d-update-debug")&&console.debug(`FeatureContainer.beginLevelMeshUpdate(level=${e}, id=${this._pendingLevelUpdate.id})`),this._pendingLevelUpdate.id}applyLevelMeshUpdate(e){if(null==this._pendingLevelUpdate)throw new Error("InternalError: No level mesh update to apply");if(this._pendingLevelUpdate.id!==e)throw new Error("InternalError: Unexpected id");if(has("esri-2d-update-debug")){const{id:e,level:t}=this._pendingLevelUpdate;console.debug(`FeatureContainer.applyLevelMeshUpdate(level=${t}, id=${e})`)}const{level:t,messages:r}=this._pendingLevelUpdate,s=this._renderStateNext.value??this._renderState.value;if(!s)throw new Error("InternalError: No renderState defined");s.enqueueLevelReplace(t,r),this._pendingLevelUpdate=null,this.requestRender()}lockForOverrides(){this._renderState.value?.lockUploads(),this._lockStatisticUpdates=!0,this.attributeView.locked||(this.attributeView.lockTextureUploads(),this._shouldUnlockAttributeView=!0)}unlockForOverrides(){this._renderState.value?.unlockUploads(),this._shouldUnlockAttributeView&&(this.attributeView.unlockTextureUploads()&&this.hasLabels&&this.requestDeclutter(),this._shouldUnlockAttributeView=!1),this._lockStatisticUpdates=!1;for(const e of this._updateStatisticsRequests)this.updateStatistics(e.level,e.statistics);this._updateStatisticsRequests=[],this._renderState.value?.flush(this.attributeView.currentEpoch),this.requestRender()}async updateRenderState(e){if(this._renderStateNext.value)throw new Error("InternalError: renderStateNext already exists");has("esri-2d-update-debug")&&console.debug(`Version[${e}] FeatureContainer.updateRenderState`),this._renderStateNext.value=new d(()=>this._stage,e=>this._subscriptions.get(e)?.version,e,this.tilingScheme)}async swapRenderState(){if(!this._renderStateNext.value)throw new Error("InternalError: renderStateNext not yet created");if(this._renderStateSwapResolver)throw new Error("InternalError: renderState swap already in progress");this._renderStateSwapResolver=Promise.withResolvers(),await this._renderStateSwapResolver.promise}async onMessage(e,r){if(t(r),!this._pendingLevelUpdate)return this._applyMessage(e);this._pendingLevelUpdate.messages.push(e)}removeTile(e){(this._renderState.value||this._renderStateNext.value)&&(this._renderState.value&&this._renderState.value.removeTile(e),this._renderStateNext.value&&this._renderStateNext.value.removeTile(e))}hitTest(e){const t=u(e);if(!t)return console.warn("Unexpected hittest input:",e),Promise.resolve({trueHitIds:[],candidateHitIds:[]});let r=this._hitTestsRequests.find(({query:e})=>t.hittestType===e.hittestType&&t.input===e.input);const s=Promise.withResolvers();return r?r.resolvers.push(s):(r={query:t,resolvers:[s]},this._hitTestsRequests.push(r)),this.requestRender(),s.promise}getSortKeys(e){const t=new Set(e),r=new Map;for(const s of this.children)if(s.getSortKeys(t).forEach((e,t)=>r.set(t,e)),r.size===t.size)break;return r}get hasAnimation(){return this.hasLabels}doRender(e){const{minScale:t,maxScale:r}=this._layerView.layer.effectiveScaleRange,s=e.state.scale;s<=(t||1/0)&&s>=r&&super.doRender(e)}setStencilReference(e){if(null==this._getHeatmapInstance(e))super.setStencilReference(e);else for(const t of this.children)t.stencilRef=o.heatmap.getStencilReference(t)}createRenderParams(e){const t=super.createRenderParams(e);return t.referenceScale=this.referenceScale,t}_applyMessage(e){const t=e.inner;if(!this._subscriptions.has(t.id))return;const r=this._subscriptions.get(t.id);if(r.version!==t.subscriptionVesrion){if(has("esri-2d-update-debug")){const e=`${t.subscriptionVesrion} != ${r.version}`;console.debug(`Version[${e}] Tile[${t.id}] FeatureContainer - Dropping message, outdated version]`,t)}return}const s=this._renderStateNext.value??this._renderState.value;if(!s)throw new Error("InternalError: No renderState defined");s.version!==t.version&&console.error(`InternalError: Version mismatch. [renderState: ${s.version}, message: ${t.version}]`),s.enqueueUpdate(e),this.requestRender()}_finializeUpdate(){if(!this._updateResolver)return;const{schema:e,deconflictionInfo:t,invalidateMesh:r}=this._updateResolver.inner;this._schema=e,this._deconflictionInfo=t,this.attributeView.unlockTextureUploads()&&this.hasLabels&&this.requestDeclutter(),this.instanceStore.updateEnd(this._supportsInstanceCleanup),r&&(this.restartAllAnimations(),this.swapRenderState());const s="heatmap"===e.mesh.factory.symbology.type?"target-defer":"eager";this._presentation.updateStrategy(s),this._updateResolver.resolver.resolve(),this._updateResolver=null,this.requestRender()}_handleSwapRenderState(){if(this._renderStateSwapResolver&&this._renderStateNext.value){has("esri-2d-update-debug")&&console.debug(`Version[${this._renderStateNext.value}] FeatureContainer.update.swapRenderState`);const e=this._renderState.value,t=new Set,r=new Set;for(const s of e?.tiles()??[])s.decluttering&&t.add(s.id),s.presenting&&r.add(s.id);this._renderState.value=this._renderStateNext.value,this._renderStateNext.value=null,this._renderState.value.flush(this.attributeView.currentEpoch),e?.destroy(),this._renderStateSwapResolver.resolve(),this._renderStateSwapResolver=null;for(const s of this._renderState.value.tiles())t.has(s.id)&&(s.decluttering=!0),r.has(s.id)&&(s.presenting=!0);this.requestRender(),this.hasLabels&&this.requestDeclutter()}}_renderMapPhase(e){this._layerView.featureEffectView.hasEffects?(this._renderOutsideEffect(e),this._renderInsideEffect(e)):this._renderFeatures(e,0),this._hitTestsRequests.length>0&&this._renderHittest(e)}_renderHighlightPhase(e){this.hasHighlight&&h(e,!1,e=>{this._renderFeatures(e,1)})}_renderLabelPhase(e){this._renderFeatures(e,0)}_renderInsideEffect(e){const t=e.painter.effects.insideEffect;t.bind(e),this._renderFeatures(e,2),t.draw(e,this._layerView.featureEffectView.includedEffects),t.unbind()}_renderOutsideEffect(e){const t=e.painter.effects.outsideEffect;t.bind(e),this._renderFeatures(e,3),t.draw(e,this._layerView.featureEffectView.excludedEffects),t.unbind()}_renderHittest(e){const{context:t}=e,r=e.painter.effects.hittest,s=t.boundFramebuffer,i=t.getViewport(),n=e.passOptions,a=e.drawPhase;r.bind(e),e.passOptions=r.createOptions(e,this._hitTestsRequests),e.drawPhase=4;const{distance:o,smallSymbolDistance:l}=e.passOptions,d=Math.max(o,l),h=e.passOptions.hittestType;for(const u of this.children)u.visible&&("rect"===h?u.containsScreenRect(e.state,e.passOptions.tlbr)&&this._renderTile(u,e,0):u.containsScreenPoint(e.state,e.passOptions.position,2*d)&&this._renderTile(u,e,0));r.draw(e),r.unbind(e),t.bindFramebuffer(s),t.restoreViewport(i),e.passOptions=n,e.drawPhase=a}_renderFeatures(e,t){const r=this._getHeatmapInstance(e);null!=r?this._renderHeatmapFeatures(e,t,r):this._renderGeometryFeatures(e,t)}_renderGeometryFeatures(e,t){for(const r of this.children)r.visible&&this._renderTile(r,e,t)}_renderHeatmapFeatures(e,t,r){for(const s of this.children)s.visible&&this._renderTile(s,e,t,19);r.techniqueRef.renderResolvePass(e,r)}_renderTile(e,t,r,s){t.selection=r,e.getDisplayList()?.render(t,s)}}function v(e){return 19===e.techniqueRef.type}export{_ as FeatureContainer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{clone as e}from"../../../../../core/lang.js";import{sqlAnd as t,sqlNotIn as r}from"../../../../../core/sql.js";import{isHostedAgolService as s}from"../../../../../layers/support/arcgisLayerUrl.js";import i from"../../../../../layers/support/FeatureFilter.js";import{createFeatureIdInfo as a}from"./featureServiceUtils.js";import{addFloorFilter as o,hasFloorFilter as l}from"./floorFilterUtils.js";import{getServiceGeometryType as n}from"./geometryUtils.js";import{ExceedsLimitCache as u}from"../schema/ExceedsLimitCache.js";import{createSnapshotInfo as p,createFeatureSourceSchema as c}from"../schema/SourceSchema.js";import{getSortKey as y}from"../schema/processor/SimpleProcessorSchema.js";import{createStorageSchema as m}from"../schema/processor/StorageSchema.js";import{getAnnotationMatcherSchema as d}from"../../support/annodime/annotationSchema.js";class h{constructor(e){this.layer=e,this._cache=new u}getLabelingDeconflictionInfo(){return[]}async createSourceSchema(e,t){const r=this._createServiceInfo(e),s=null!=this.layer.editingInfo?.lastEditDate,i=this.layer.refreshInterval>0,a=!s&&i,o=p("isSourceHosted"in r&&r.isSourceHosted,a,this.layer.capabilities,r.metadata.geometryType,e.extent,this.layer.fullExtent);return c(r,o,{definitionExpression:this.layer.definitionExpression,queryScaleRanges:[],displayFilterEnabled:!1,displayFilterInfo:null,customParameters:this.layer.customParameters,gdbVersion:this.layer.gdbVersion,historicMoment:this.layer.historicMoment,timeExtent:this.layer.timeExtent,apiKey:this.layer.apiKey,sourceRefreshVersion:t,availableFields:e.availableFields,cache:this._cache,postQueryFilter:null,returnM:!1,returnZ:!1})}async createProcessorSchema(e,t,r){const{objectIdField:s,symbolCollection:i,referenceScale:a}=this.layer,o=await d(i,{cimAnalyzer:e.cimAnalyzer,cimResourceManager:e.cimResourceManager,store:e.store,scaleExpression:null,viewRotation:e.viewRotation}),l=y(null,null,s);return{storage:m(null,t.filters),mesh:{properties:{sortKey:l,timeZone:t.timeZone,returnMeshObjectId:!1,displayRefreshVersion:r,currentUser:t.currentUser},strategy:{type:"feature"},factory:{symbology:o,labels:{type:"label",classes:[]},referenceScale:a}},expressionProperties:{timeExtent:null}}}get hasRequiredSupport(){return!0}get timeOptions(){return this.layer}addFilters(e,s){e=o(this.layer,e,s),this.layer.unplacedAnnotationsVisible||(e??=new i,e.where=t(e?.where,`${this.layer.statusField} = 0`));const a=this.layer.sublayers.filter(e=>!e.visible).map(e=>e.subtypeCode);if(!a.length)return e;e??=new i;const l=r(this.layer.subtypeField,a.toArray());return e.where=t(e.where,l),e}getUpdateHashProperties(e){return this.layer.destroyed?[]:[()=>this.layer.apiKey,()=>this.layer.customParameters,()=>this.layer.definitionExpression,()=>this.layer.unplacedAnnotationsVisible,()=>l(this.layer,e)?e.floors:null,()=>this.layer.gdbVersion,()=>this.layer.historicMoment,()=>this.layer.outFields,()=>this.layer.sublayers.map(({visible:e})=>({visible:e}))]}getRenderer(){return null}setGraphicOrigin(e){const t=this.layer.findSublayerForFeature(e);e.layer=e.sourceLayer=this.layer,e.origin=t?.graphicOrigin??this.layer.graphicOrigin}_createServiceInfo(t){const r=this.layer,{capabilities:i,editingInfo:o,globalIdField:l,datesInUnknownTimezone:u,dateFieldsTimeZone:p,subtypeField:c}=r,y=n(r),m=r.timeInfo?.toJSON(),d=r.spatialReference.toJSON(),h=e(this.layer.parsedUrl),f=this.layer.objectIdField,g=s(h.path),b=t.spatialReference.toJSON();return{type:"feature-service",source:h,isSourceHosted:g,orderByFields:f,outSpatialReference:b,metadata:{timeReferenceUnknownClient:u,dateFieldsTimeZone:p,subtypeField:c,globalIdField:l,fieldsIndex:r.fieldsIndex.toJSON(),geometryType:y,featureIdInfo:a(r),timeInfo:m,spatialReference:d,outSpatialReference:b,attributeSpatialReference:this.layer.attributeSpatialReference?.toJSON(),subtypes:this.layer.subtypes?.map(e=>e.toJSON()),typeIdField:null,types:null,layerType:r.type,hasM:!1,hasZ:!1},queryMetadata:{supportsFormatPBF:i.query.supportsFormatPBF,supportsQuantization:!1,maxRecordCount:i.query.maxRecordCount,tileMaxRecordCount:i.query.tileMaxRecordCount,supportsCompactGeometry:i.query.supportsCompactGeometry,supportsDefaultSpatialReference:i.query.supportsDefaultSpatialReference,supportsMaxRecordCountFactor:i.query.supportsMaxRecordCountFactor,supportsCentroidOnDegeneratedQuantizedGeometry:i.query.supportsCentroidOnDegeneratedQuantizedGeometry,supportsDegeneratedQuantizedGeometry:i.query.supportsDegeneratedQuantizedGeometry,lastEditDate:o?.lastEditDate?.getTime(),supportsReturnExceededLimitGeometries:i.query.supportsReturnExceededLimitGeometries}}}}export{h as AnnotationLayerAdapter};
2
+ import{clone as e}from"../../../../../core/lang.js";import{floatEqualAbsolute as t}from"../../../../../core/mathUtils.js";import{sqlAnd as r,sqlNotIn as s}from"../../../../../core/sql.js";import{isHostedAgolService as a}from"../../../../../layers/support/arcgisLayerUrl.js";import i from"../../../../../layers/support/FeatureFilter.js";import{createFeatureIdInfo as o}from"./featureServiceUtils.js";import{addFloorFilter as l,hasFloorFilter as n}from"./floorFilterUtils.js";import{getServiceGeometryType as c}from"./geometryUtils.js";import{ExceedsLimitCache as u}from"../schema/ExceedsLimitCache.js";import{createSnapshotInfo as p,createFeatureSourceSchema as m}from"../schema/SourceSchema.js";import{getSortKey as y}from"../schema/processor/SimpleProcessorSchema.js";import{createStorageSchema as d}from"../schema/processor/StorageSchema.js";import{getAnnotationMatcherSchema as h}from"../../support/annodime/annotationSchema.js";class f{constructor(e){this.layer=e,this._cache=new u}getLabelingDeconflictionInfo(){return[]}async createSourceSchema(e,t){const r=this._createServiceInfo(e),s=null!=this.layer.editingInfo?.lastEditDate,a=this.layer.refreshInterval>0,i=!s&&a,o=p("isSourceHosted"in r&&r.isSourceHosted,i,this.layer.capabilities,r.metadata.geometryType,e.extent,this.layer.fullExtent);return m(r,o,{definitionExpression:this.layer.definitionExpression,queryScaleRanges:this.layer.sublayers.items.map(e=>({subtypeCode:e.subtypeCode,minScale:e.minScale,maxScale:e.maxScale})),displayFilterEnabled:!1,displayFilterInfo:null,customParameters:this.layer.customParameters,gdbVersion:this.layer.gdbVersion,historicMoment:this.layer.historicMoment,timeExtent:this.layer.timeExtent,apiKey:this.layer.apiKey,sourceRefreshVersion:t,availableFields:e.availableFields,cache:this._cache,postQueryFilter:null,returnM:!1,returnZ:!1})}async createProcessorSchema(e,t,r){const{objectIdField:s,symbolCollection:a,referenceScale:i}=this.layer,o=await h(a,{cimAnalyzer:e.cimAnalyzer,cimResourceManager:e.cimResourceManager,store:e.store,scaleExpression:null,viewRotation:e.viewRotation}),l=y(null,null,s);return{storage:d(null,t.filters),mesh:{properties:{sortKey:l,timeZone:t.timeZone,returnMeshObjectId:!1,displayRefreshVersion:r,currentUser:t.currentUser},strategy:{type:"feature"},factory:{symbology:o,labels:{type:"label",classes:[]},referenceScale:i}},expressionProperties:{timeExtent:null}}}get hasRequiredSupport(){return!0}get timeOptions(){return this.layer}addFilters(e,t){e=l(this.layer,e,t),this.layer.unplacedAnnotationsVisible||(e??=new i,e.where=r(e?.where,`${this.layer.statusField} = 0`));const a=this.layer.sublayers.filter(e=>!S(e,t)).map(e=>e.subtypeCode);if(!a.length)return e;e??=new i;const o=s(this.layer.subtypeField,a.toArray());return e.where=r(e.where,o),e}getUpdateHashProperties(e){return this.layer.destroyed?[]:[()=>this.layer.apiKey,()=>this.layer.customParameters,()=>this.layer.definitionExpression,()=>this.layer.unplacedAnnotationsVisible,()=>n(this.layer,e)?e.floors:null,()=>this.layer.gdbVersion,()=>this.layer.historicMoment,()=>this.layer.outFields,()=>this.layer.sublayers.map(({visible:e,minScale:t,maxScale:r})=>({visible:e,minScale:t,maxScale:r}))]}getRenderer(){return null}setGraphicOrigin(e){const t=this.layer.findSublayerForFeature(e);e.layer=e.sourceLayer=this.layer,e.origin=t?.graphicOrigin??this.layer.graphicOrigin}_createServiceInfo(t){const r=this.layer,{capabilities:s,editingInfo:i,globalIdField:l,datesInUnknownTimezone:n,dateFieldsTimeZone:u,subtypeField:p}=r,m=c(r),y=r.timeInfo?.toJSON(),d=r.spatialReference.toJSON(),h=e(this.layer.parsedUrl),f=this.layer.objectIdField,S=a(h.path),b=t.spatialReference.toJSON();return{type:"feature-service",source:h,isSourceHosted:S,orderByFields:f,outSpatialReference:b,metadata:{timeReferenceUnknownClient:n,dateFieldsTimeZone:u,subtypeField:p,globalIdField:l,fieldsIndex:r.fieldsIndex.toJSON(),geometryType:m,featureIdInfo:o(r),timeInfo:y,spatialReference:d,outSpatialReference:b,attributeSpatialReference:this.layer.attributeSpatialReference?.toJSON(),subtypes:this.layer.subtypes?.map(e=>e.toJSON()),typeIdField:null,types:null,layerType:r.type,hasM:!1,hasZ:!1},queryMetadata:{supportsFormatPBF:s.query.supportsFormatPBF,supportsQuantization:!1,maxRecordCount:s.query.maxRecordCount,tileMaxRecordCount:s.query.tileMaxRecordCount,supportsCompactGeometry:s.query.supportsCompactGeometry,supportsDefaultSpatialReference:s.query.supportsDefaultSpatialReference,supportsMaxRecordCountFactor:s.query.supportsMaxRecordCountFactor,supportsCentroidOnDegeneratedQuantizedGeometry:s.query.supportsCentroidOnDegeneratedQuantizedGeometry,supportsDegeneratedQuantizedGeometry:s.query.supportsDegeneratedQuantizedGeometry,lastEditDate:i?.lastEditDate?.getTime(),supportsReturnExceededLimitGeometries:s.query.supportsReturnExceededLimitGeometries}}}}function S(e,r){return e.visible&&(0===e.minScale||t(r.scale,e.minScale)||r.scale<e.minScale)&&(0===e.maxScale||t(r.scale,e.maxScale)||r.scale>e.maxScale)}export{f as AnnotationLayerAdapter};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../../core/has.js";import{baseObjectMemory as e}from"../../../../../core/memoryEstimations.js";import{minInt16 as t}from"../../../../../core/typedArrayUtil.js";import{fromRectValues as i}from"../../../../../geometry/support/aaBoundingBox.js";import r from"../../../../../layers/graphics/OptimizedGeometry.js";import{getParquetObjectId as s}from"../../../../../layers/graphics/sources/support/parquetIdUtils.js";import{FeatureSetReader as n}from"./FeatureSetReader.js";const o=new TextDecoder;class d extends n{constructor(i,r,s,n,o,d=new Uint32Array(s.size()),h,a,u){if(super(i),this._indexMap=r,this._inner=s,this._fileId=n,this._transform=o,this._displayIds=d,this._points=h,this._rowIds=a,this._emptyNumberValue=u,this._index=-1,this.usedMemory=e,this._size=this._inner.size(),this._coordinateStride=this._inner.coordinateStride(),this._rowIds||(this._rowIds=this._inner.readIdsUnsafe().slice()),!this._points&&"esriGeometryPoint"===this.geometryType){const e=this._inner.readPointCoordsQuantizedUnsafe()?.slice();e?(this._emptyNumberValue=t,this._points=e):(this._emptyNumberValue=NaN,this._points=this._inner.readPointCoordsUnsafe()?.slice())}i.featureIdInfo.type}destroy(){super.destroy(),this._inner.free()}get fields(){return this.metadata.fieldsIndex}get geometryType(){return this.metadata.geometryType}get hasFeatures(){return!0}get hasNext(){throw new Error("Method not implemented.")}get exceededTransferLimit(){return!1}get hasZ(){return this._inner.hasZ()}get hasM(){return this._inner.hasM()}async updateFields(e,t,i,r){const s=this._inner.rowGroup(),n=new Uint32Array(this._inner.readIdsUnsafe()),o=await e.createPatch(t,s,n,i,r);this._inner.insertPatchBytes(new Uint8Array(o))}getInTransform(){return this._transform}getSize(){return this._size}getCursor(){return this.copy()}getAttributeHash(){let e="";for(const t of this.fields.fields)e+=this._readAttribute(t.name,!1)+".";return e}getObjectId(){const e=this._rowIds[this._index];return s(this._fileId,e)}getDisplayId(){return this._displayIds[this._index]}setDisplayId(e){this._displayIds[this._index]=e}setIndex(e){this._index=e}getBoundsXMin(){return this._inner.boundsXMin(this._index)}getBoundsYMin(){return this._inner.boundsYMin(this._index)}getBoundsXMax(){return this._inner.boundsXMax(this._index)}getBoundsYMax(){return this._inner.boundsYMax(this._index)}getBounds(e){const t=this._inner.boundsXMin(this._index);return!!Number.isFinite(t)&&(i(e,t,this._inner.boundsYMin(this._index),this._inner.boundsXMax(this._index),this._inner.boundsYMax(this._index)),!0)}setBoundsXMin(e){throw new Error("InternalError: Setting bounds is unsupported")}setBoundsYMin(e){throw new Error("InternalError: Setting bounds is unsupported")}setBoundsXMax(e){throw new Error("InternalError: Setting bounds is unsupported")}setBoundsYMax(e){throw new Error("InternalError: Setting bounds is unsupported")}getIndex(){return this._index}next(){for(;++this._index<this._size&&!this._getExists(););return this._index<this._size}readGeometryArea(){return this.readGeometryForDisplay()?.area()??0}copy(){const e=new d(this.metadata,this._indexMap,this._inner,this._fileId,this._transform,this._displayIds,this._points,this._rowIds,this._emptyNumberValue);return this.copyInto(e),e}copyInto(e){super.copyInto(e),e._index=this._index}_readGeometry(e){const t=this._inner.readCoordsUnsafe(this._index),i=this._inner.readLengthsUnsafe(this._index);return t&&i?new r(i,t,this.hasZ,this.hasM):null}_readX(){if(this._points){const e=this._points[this._coordinateStride*this._index];return e===this._emptyNumberValue?NaN:e}throw new Error("InternalError: readX only supported for points")}_readY(){if(this._points){const e=this._points[this._coordinateStride*this._index+1];return e===this._emptyNumberValue?NaN:e}throw new Error("InternalError: readY only supported for points")}_readServerCentroid(){return null}_readAttribute(e,t){const i=this.fields.get(e);if(!i)return;const r=this._indexMap[i.name];if(null==r)return this.getObjectId();const s=this._inner.readAttribute(this._index,r);if(null==s)return s;if("esriFieldTypeString"===i.type||"esriFieldTypeDateOnly"===i.type||"esriFieldTypeTimeOnly"===i.type||"esriFieldTypeTimestampOffset"===i.type){const e=this._inner.readAttribute(this._index,r);return o.decode(e)}const n=this.fields.isDateField(i.name);return t?null==s?s:n?new Date(s):s:s}_readAttributes(){const e={};for(const t of this.metadata.fieldsIndex.fields){if(null==this._indexMap[t.name])continue;const i=this._readAttribute(t.name,!1);void 0!==i&&(e[t.name]=i)}return e.__OBJECTID=this.getObjectId(),e}}export{d as FeatureSetReaderParquet};
2
+ import"../../../../../core/has.js";import{baseObjectMemory as t}from"../../../../../core/memoryEstimations.js";import{minInt16 as e}from"../../../../../core/typedArrayUtil.js";import{fromRectValues as r}from"../../../../../geometry/support/aaBoundingBox.js";import i from"../../../../../layers/graphics/OptimizedGeometry.js";import{getParquetObjectId as s}from"../../../../../layers/graphics/sources/support/parquetIdUtils.js";import{readParquetChunkAttribute as n}from"../../../../../libs/parquet/parquet.js";import{FeatureSetReader as o}from"./FeatureSetReader.js";class d extends o{constructor(r,i,s,n,o,d=new Uint32Array(s.size()),h,a,u){if(super(r),this._indexMap=i,this._inner=s,this._fileId=n,this._transform=o,this._displayIds=d,this._points=h,this._rowIds=a,this._emptyNumberValue=u,this._index=-1,this.usedMemory=t,this._size=this._inner.size(),this._coordinateStride=this._inner.coordinateStride(),this._rowIds||(this._rowIds=this._inner.readIdsUnsafe().slice()),!this._points&&"esriGeometryPoint"===this.geometryType){const t=this._inner.readPointCoordsQuantizedUnsafe()?.slice();t?(this._emptyNumberValue=e,this._points=t):(this._emptyNumberValue=NaN,this._points=this._inner.readPointCoordsUnsafe()?.slice())}r.featureIdInfo.type}destroy(){super.destroy(),this._inner.free()}get fields(){return this.metadata.fieldsIndex}get geometryType(){return this.metadata.geometryType}get hasFeatures(){return!0}get hasNext(){throw new Error("Method not implemented.")}get exceededTransferLimit(){return!1}get hasZ(){return this._inner.hasZ()}get hasM(){return this._inner.hasM()}async updateFields(t,e,r,i){const s=this._inner.rowGroup(),n=new Uint32Array(this._inner.readIdsUnsafe()),o=await t.createPatch(e,s,n,r,i);this._inner.insertPatchBytes(new Uint8Array(o))}getInTransform(){return this._transform}getSize(){return this._size}getCursor(){return this.copy()}getAttributeHash(){let t="";for(const e of this.fields.fields)t+=this._readAttribute(e.name,!1)+".";return t}getObjectId(){const t=this._rowIds[this._index];return s(this._fileId,t)}getDisplayId(){return this._displayIds[this._index]}setDisplayId(t){this._displayIds[this._index]=t}setIndex(t){this._index=t}getBoundsXMin(){return this._inner.boundsXMin(this._index)}getBoundsYMin(){return this._inner.boundsYMin(this._index)}getBoundsXMax(){return this._inner.boundsXMax(this._index)}getBoundsYMax(){return this._inner.boundsYMax(this._index)}getBounds(t){const e=this._inner.boundsXMin(this._index);return!!Number.isFinite(e)&&(r(t,e,this._inner.boundsYMin(this._index),this._inner.boundsXMax(this._index),this._inner.boundsYMax(this._index)),!0)}setBoundsXMin(t){throw new Error("InternalError: Setting bounds is unsupported")}setBoundsYMin(t){throw new Error("InternalError: Setting bounds is unsupported")}setBoundsXMax(t){throw new Error("InternalError: Setting bounds is unsupported")}setBoundsYMax(t){throw new Error("InternalError: Setting bounds is unsupported")}getIndex(){return this._index}next(){for(;++this._index<this._size&&!this._getExists(););return this._index<this._size}readGeometryArea(){return this.readGeometryForDisplay()?.area()??0}copy(){const t=new d(this.metadata,this._indexMap,this._inner,this._fileId,this._transform,this._displayIds,this._points,this._rowIds,this._emptyNumberValue);return this.copyInto(t),t}copyInto(t){super.copyInto(t),t._index=this._index}_readGeometry(t){const e=this._inner.readCoordsUnsafe(this._index),r=this._inner.readLengthsUnsafe(this._index);return e&&r?new i(r,e,this.hasZ,this.hasM):null}_readX(){if(this._points){const t=this._points[this._coordinateStride*this._index];return t===this._emptyNumberValue?NaN:t}throw new Error("InternalError: readX only supported for points")}_readY(){if(this._points){const t=this._points[this._coordinateStride*this._index+1];return t===this._emptyNumberValue?NaN:t}throw new Error("InternalError: readY only supported for points")}_readServerCentroid(){return null}_readAttribute(t,e){const r=this.fields.get(t);if(!r)return;const i=this._indexMap[r.name];return null==i?this.getObjectId():n(this._inner,this._index,i,r.type,e)}_readAttributes(){const t={};for(const e of this.metadata.fieldsIndex.fields){if(null==this._indexMap[e.name])continue;const r=this._readAttribute(e.name,!1);void 0!==r&&(t[e.name]=r)}return t.__OBJECTID=this.getObjectId(),t}}export{d as FeatureSetReaderParquet};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{AGraphicContainer as e}from"./AGraphicContainer.js";import{renderHighlight as r}from"../support/util.js";class i extends e{renderChildren(e){for(const r of this.children)r.setTransform(e.state);if(super.renderChildren(e),this._updateAttributeView(),this.children.some(e=>e.hasData)){if(this.drawOnTop){if(128===e.drawPhase)this._renderChildren(e,0)}else switch(e.drawPhase){case 1:this._renderChildren(e,0);break;case 16:this.hasHighlight&&this._renderHighlight(e)}this._boundsRenderer&&this._boundsRenderer.doRender(e)}}_renderHighlight(e){r(e,!1,e=>{this._renderChildren(e,1)})}}export{i as default};
2
+ import{AGraphicContainer as e}from"./AGraphicContainer.js";import{renderHighlight as r}from"../support/util.js";class i extends e{renderChildren(e){for(const r of this.children)r.setTransform(e.state);if(super.renderChildren(e),this._updateAttributeView(),this.children.some(e=>e.hasData)){if(this.drawOnTop){if(64===e.drawPhase)this._renderChildren(e,0)}else switch(e.drawPhase){case 1:this._renderChildren(e,0);break;case 8:this.hasHighlight&&this._renderHighlight(e)}this._boundsRenderer&&this._boundsRenderer.doRender(e)}}_renderHighlight(e){r(e,!1,e=>{this._renderChildren(e,1)})}}export{i as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as r}from"tslib";import{subclass as e}from"../../../../core/accessorSupport/decorators.js";import{AGraphicContainer as t}from"./AGraphicContainer.js";import{renderHighlight as s}from"../support/util.js";let i=class extends t{get hasHighlight(){return this.children.some(r=>r.hasData)}renderChildren(r){this.attributeView.update(),16===r.drawPhase&&this.children.some(r=>r.hasData)&&(super.renderChildren(r),r.context.setColorMask(!0,!0,!0,!0),s(r,!1,r=>{this._renderChildren(r,1)}))}};i=r([e("esri.views.2d.layers.graphics.HighlightGraphicContainer")],i);export{i as default};
2
+ import{__decorate as r}from"tslib";import{subclass as e}from"../../../../core/accessorSupport/decorators.js";import{AGraphicContainer as t}from"./AGraphicContainer.js";import{renderHighlight as s}from"../support/util.js";let i=class extends t{get hasHighlight(){return this.children.some(r=>r.hasData)}renderChildren(r){this.attributeView.update(),8===r.drawPhase&&this.children.some(r=>r.hasData)&&(super.renderChildren(r),r.context.setColorMask(!0,!0,!0,!0),s(r,!1,r=>{this._renderChildren(r,1)}))}};i=r([e("esri.views.2d.layers.graphics.HighlightGraphicContainer")],i);export{i as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";import c from"./FoggyWeather.js";var i;let n=i=class extends r{constructor(o){super(o),this.type="cloudy",this.cloudCover=.5}clone(){return new i({cloudCover:this.cloudCover})}get scattering(){return c.minScattering*(1+this.cloudCover)}};o([s({cloudy:"cloudy"}),e({json:{write:{isRequired:!0}}})],n.prototype,"type",void 0),o([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],n.prototype,"cloudCover",void 0),n=i=o([t("esri.views.3d.environment.CloudyWeather")],n);const u=n;export{u as default};
2
+ import{__decorate as o}from"tslib";import{JSONSupport as r}from"../../../core/JSONSupport.js";import{lerp as e}from"../../../core/mathUtils.js";import{property as t,subclass as s}from"../../../core/accessorSupport/decorators.js";import{enumeration as i}from"../../../core/accessorSupport/decorators/enumeration.js";import c from"./RainyWeather.js";import{rainyToCloudy as n}from"../webgl-engine/effects/clouds/CloudsPresets.js";var u;let m=u=class extends r{constructor(o){super(o),this.type="cloudy",this.cloudCover=.5}clone(){return new u({cloudCover:this.cloudCover})}get scattering(){return e(c.minScattering,c.maxScattering,this.cloudCover)*n}};o([i({cloudy:"cloudy"}),t({json:{write:{isRequired:!0}}})],m.prototype,"type",void 0),o([t({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],m.prototype,"cloudCover",void 0),m=u=o([s("esri.views.3d.environment.CloudyWeather")],m);const p=m;export{p as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as r}from"tslib";import{JSONSupport as o}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";import n from"./RainyWeather.js";var i;let c=i=class extends o{constructor(r){super(r),this.type="sunny",this.cloudCover=.5}clone(){return new i({cloudCover:this.cloudCover})}get scattering(){return n.minScattering*this.cloudCover}};r([s({sunny:"sunny"}),e({json:{write:{isRequired:!0}}})],c.prototype,"type",void 0),r([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],c.prototype,"cloudCover",void 0),c=i=r([t("esri.views.3d.environment.SunnyWeather")],c);const u=c;export{u as default};
2
+ import{__decorate as r}from"tslib";import{JSONSupport as o}from"../../../core/JSONSupport.js";import{property as e,subclass as t}from"../../../core/accessorSupport/decorators.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";import n from"./RainyWeather.js";var i;let c=i=class extends o{constructor(r){super(r),this.type="sunny",this.cloudCover=.5}clone(){return new i({cloudCover:this.cloudCover})}get scattering(){return n.minScattering*(this.cloudCover+.5)}};r([s({sunny:"sunny"}),e({json:{write:{isRequired:!0}}})],c.prototype,"type",void 0),r([e({type:Number,nonNullable:!0,range:{min:0,max:1},json:{write:!0}})],c.prototype,"cloudCover",void 0),c=i=r([t("esri.views.3d.environment.SunnyWeather")],c);const u=c;export{u as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{gaussiansPerPage as t}from"./gaussianSplatting/GaussianSplatAtlasPages.js";class e{constructor(t,e,n,s,r,i,o,a,l=!1){this.addedTiles=t,this.removedTileHandles=e,this.visibleTileHandles=n,this.sortedAtlasIndices=s,this.numGaussians=r,this.directionX=i,this.directionY=o,this.directionZ=a,this.preciseSort=l}}class n{constructor(t){this.sortedAtlasIndices=t}}let s=null,r=0,i=null,o=0,a=null,l=0;const c=new Map,u=10,d=20,f=.25,h=1.5;function g(t,e){let n=Math.max(1,t);for(;n<e;)n=Math.ceil(n*h);return n}function w(t){t>r&&(r=g(r,t),s=new Uint32Array(r)),s.fill(0,0,t)}function p(t){t<=o||(o=g(o,t),i=new Float64Array(o))}function m(t){return t>l&&(l=g(l,t),a=new Uint32Array(l)),a}function M(e,n){let s=0;for(let r=0;r<e.length;r++){const i=c.get(e[r]);if(null==i)throw new Error("Gaussian splat sort worker is missing resident tile data");const o=s+i.gaussianCount;for(let e=0;e<i.pageIds.length&&s<o;e++){const r=i.pageIds[e]*t,a=Math.min(o-s,t);for(let t=0;t<a;t++,s++)n[s]=r+t}}if(s!==n.length)throw new Error("Gaussian splat sort worker received inconsistent resident tile data")}function G(e,n,r,i,o){const a=e.length,l=Math.max(u,Math.min(d,Math.round(Math.log2(a/f)))),h=1+(1<<l);w(h);const g=s,p=o-i,m=p>=1e-6,M=m?(1<<l)/p:0;if(m)for(let t=0;t<a;t++){g[(e[t]-i)*M>>>0]++}else g[0]=a;let G=g[0];for(let t=1;t<h;t++)G+=g[t],g[t]=G;let v=0;for(let s=0;s<n.length;s++){const o=c.get(n[s]);if(null==o)throw new Error("Gaussian splat sort worker is missing resident tile data");const a=v+o.gaussianCount;for(let n=0;n<o.pageIds.length&&v<a;n++){const s=o.pageIds[n]*t,l=Math.min(a-v,t);for(let t=0;t<l;t++,v++){r[--g[m?(e[v]-i)*M>>>0:0]]=s+t}}}if(v!==a)throw new Error("Gaussian splat sort worker received inconsistent resident tile data")}async function v(t){const{addedTiles:e,removedTileHandles:s,visibleTileHandles:r,sortedAtlasIndices:o,numGaussians:a,directionX:l,directionY:u,directionZ:d,preciseSort:f}=t;for(let n=0;n<s.length;n++)c.delete(s[n]);for(let n=0;n<e.length;n++){const t=e[n];c.set(t.handle,t)}if(0===a)return{result:new n(o),transferList:[o.buffer]};p(a);const h=i.subarray(0,a),g=o.subarray(0,a);let w=0,v=1/0,y=-1/0;for(let n=0;n<r.length;n++){const t=c.get(r[n]);if(null==t)throw new Error("Gaussian splat sort worker is missing resident tile data");const{relativePositions:e,gaussianCount:s,originX:i,originY:o,originZ:a}=t,f=w+s,g=l*i+u*o+d*a;for(let n=0;w<f;w++,n+=3){const t=e[n]*l+e[n+1]*u+e[n+2]*d+g;h[w]=t,v=Math.min(v,t),y=Math.max(y,t)}}if(w!==a)throw new Error("Gaussian splat sort worker received inconsistent resident tile data");if(f){const t=m(a).subarray(0,a);M(r,t);const e=new Array(a);for(let n=0;n<a;n++)e[n]=n;e.sort((t,e)=>h[t]-h[e]||t-e);for(let n=0;n<a;n++)g[n]=t[e[n]]}else a>0&&G(h,r,g,v,y);return{result:new n(o),transferList:[o.buffer]}}function y(){A()}function A(){c.clear(),i=null,o=0,a=null,l=0,s=null,r=0}export{e as SplatSortWorkerInput,n as SplatSortWorkerOutput,A as clear,y as destroy,v as sort};
2
+ import{estimateNumberArrayMemory as t,estimateNestedObjectMemory as e}from"../../../core/memoryEstimations.js";import{gaussiansPerPage as s}from"./gaussianSplatting/GaussianSplatAtlasPages.js";class n{constructor(t,e,s,n,r,i,o,a,l=!1){this.addedTiles=t,this.removedTileHandles=e,this.visibleTileHandles=s,this.sortedAtlasIndices=n,this.numGaussians=r,this.directionX=i,this.directionY=o,this.directionZ=a,this.preciseSort=l}}class r{constructor(t,e){this.sortedAtlasIndices=t,this.usedMemory=e}}let i=null,o=0,a=null,l=0,c=null,u=0;const d=new Map,f=10,h=20,g=.25,w=1.5;function m(){let s=t(i,a,c);for(const t of d.values())s+=e(t);return s}function p(t,e){let s=Math.max(1,t);for(;s<e;)s=Math.ceil(s*w);return s}function M(t){t>o&&(o=p(o,t),i=new Uint32Array(o)),i.fill(0,0,t)}function y(t){t<=l||(l=p(l,t),a=new Float64Array(l))}function v(t){return t>u&&(u=p(u,t),c=new Uint32Array(u)),c}function G(t,e){let n=0;for(let r=0;r<t.length;r++){const i=d.get(t[r]);if(null==i)throw new Error("Gaussian splat sort worker is missing resident tile data");const o=n+i.gaussianCount;for(let t=0;t<i.pageIds.length&&n<o;t++){const r=i.pageIds[t]*s,a=Math.min(o-n,s);for(let t=0;t<a;t++,n++)e[n]=r+t}}if(n!==e.length)throw new Error("Gaussian splat sort worker received inconsistent resident tile data")}function A(t,e,n,r,o){const a=t.length,l=Math.max(f,Math.min(h,Math.round(Math.log2(a/g)))),c=1+(1<<l);M(c);const u=i,w=o-r,m=w>=1e-6,p=m?(1<<l)/w:0;if(m)for(let s=0;s<a;s++){u[(t[s]-r)*p>>>0]++}else u[0]=a;let y=u[0];for(let s=1;s<c;s++)y+=u[s],u[s]=y;let v=0;for(let i=0;i<e.length;i++){const o=d.get(e[i]);if(null==o)throw new Error("Gaussian splat sort worker is missing resident tile data");const a=v+o.gaussianCount;for(let e=0;e<o.pageIds.length&&v<a;e++){const i=o.pageIds[e]*s,l=Math.min(a-v,s);for(let e=0;e<l;e++,v++){n[--u[m?(t[v]-r)*p>>>0:0]]=i+e}}}if(v!==a)throw new Error("Gaussian splat sort worker received inconsistent resident tile data")}async function b(t){const{addedTiles:e,removedTileHandles:s,visibleTileHandles:n,sortedAtlasIndices:i,numGaussians:o,directionX:l,directionY:c,directionZ:u,preciseSort:f}=t;for(let r=0;r<s.length;r++)d.delete(s[r]);for(let r=0;r<e.length;r++){const t=e[r];d.set(t.handle,t)}if(0===o)return{result:new r(i,m()),transferList:[i.buffer]};y(o);const h=a.subarray(0,o),g=i.subarray(0,o);let w=0,p=1/0,M=-1/0;for(let r=0;r<n.length;r++){const t=d.get(n[r]);if(null==t)throw new Error("Gaussian splat sort worker is missing resident tile data");const{relativePositions:e,gaussianCount:s,originX:i,originY:o,originZ:a}=t,f=w+s,g=l*i+c*o+u*a;for(let n=0;w<f;w++,n+=3){const t=e[n]*l+e[n+1]*c+e[n+2]*u+g;h[w]=t,p=Math.min(p,t),M=Math.max(M,t)}}if(w!==o)throw new Error("Gaussian splat sort worker received inconsistent resident tile data");if(f){const t=v(o).subarray(0,o);G(n,t);const e=new Array(o);for(let s=0;s<o;s++)e[s]=s;e.sort((t,e)=>h[t]-h[e]||t-e);for(let s=0;s<o;s++)g[s]=t[e[s]]}else o>0&&A(h,n,g,p,M);return{result:new r(i,m()),transferList:[i.buffer]}}function E(){I()}function I(){d.clear(),a=null,l=0,c=null,u=0,i=null,o=0}export{n as SplatSortWorkerInput,r as SplatSortWorkerOutput,I as clear,E as destroy,b as sort};