@arcgis/core 5.2.0-next.154 → 5.2.0-next.156
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.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{d994bcf0a65d1c07160f.js → 0320cbd825f9a4222042.js} +1 -1
- package/assets/esri/core/workers/chunks/0590857215c547e63b51.js +1 -0
- package/assets/esri/core/workers/chunks/08fe248e412bb170210d.js +1 -0
- package/assets/esri/core/workers/chunks/0cb50bc2b2125c5fedf2.js +1 -0
- package/assets/esri/core/workers/chunks/1201b8c5852830836eac.js +1 -0
- package/assets/esri/core/workers/chunks/129e04d24ced77c9bb6d.js +1 -0
- package/assets/esri/core/workers/chunks/15e1117a706a98b17ad5.js +1 -0
- package/assets/esri/core/workers/chunks/164e74d586297946a717.js +1 -0
- package/assets/esri/core/workers/chunks/168a523bdc3653081f8a.js +1 -0
- package/assets/esri/core/workers/chunks/{6f4e6022a52de0c54aab.js → 172cfeb5f415e4662432.js} +1 -1
- package/assets/esri/core/workers/chunks/1aa4f5394a596e544aeb.js +1 -0
- package/assets/esri/core/workers/chunks/22b01fe31bbf0bdc48db.js +1 -0
- package/assets/esri/core/workers/chunks/27c2da2e779def2ee08b.js +1 -0
- package/assets/esri/core/workers/chunks/28b74bc77f7c13080074.js +1 -0
- package/assets/esri/core/workers/chunks/{481589c3eddad6e026ad.js → 369780276b2755361f7d.js} +1 -1
- package/assets/esri/core/workers/chunks/3914d96147642a9d4b01.js +1 -0
- package/assets/esri/core/workers/chunks/{731018c0deffc41ffc97.js → 3e3e076fa5e8d5d5f33f.js} +1 -1
- package/assets/esri/core/workers/chunks/43cf862577bf37344ff4.js +1 -0
- package/assets/esri/core/workers/chunks/4932773663469919d10a.js +1 -0
- package/assets/esri/core/workers/chunks/4996869b9cbd8c8ddcfa.js +1 -0
- package/assets/esri/core/workers/chunks/4c389472b8cdb0c55154.js +1 -0
- package/assets/esri/core/workers/chunks/4e4f747de424941a0bfa.js +1 -0
- package/assets/esri/core/workers/chunks/{eb815148ae65388dd733.js → 544070198d2ca556103a.js} +1 -1
- package/assets/esri/core/workers/chunks/5736feefa261589b6273.js +1 -0
- package/assets/esri/core/workers/chunks/{aeaaff7a4b1a99540f52.js → 5cb26bbaa08114aec5ce.js} +1 -1
- package/assets/esri/core/workers/chunks/5f4feca26102088ea565.js +1 -0
- package/assets/esri/core/workers/chunks/{407f1e8176f3b0af73b4.js → 66867e523cc82f8fe35b.js} +1 -1
- package/assets/esri/core/workers/chunks/6f73e41e14817acfaead.js +1 -0
- package/assets/esri/core/workers/chunks/{320e5942a098dd104366.js → 74137ffec5265628c33b.js} +1 -1
- package/assets/esri/core/workers/chunks/7446d0dfebf93e86c098.js +1 -0
- package/assets/esri/core/workers/chunks/{688f2dbf784e66082308.js → 74c866e0b66e61751861.js} +1 -1
- package/assets/esri/core/workers/chunks/7711ae5612f685078fc8.js +1 -0
- package/assets/esri/core/workers/chunks/{5116b569a8dbda4910c8.js → 784a2fba3e18286958d1.js} +1 -1
- package/assets/esri/core/workers/chunks/{693873b3eb99fba58fa9.js → 78c4e43cfa1eda06b4d9.js} +1 -1
- package/assets/esri/core/workers/chunks/{f6e62d2d279a328cbed7.js → 7bcedf479b07a4b4a234.js} +1 -1
- package/assets/esri/core/workers/chunks/81cad8d2f62a5f671c55.js +1 -0
- package/assets/esri/core/workers/chunks/{588e677f33df86a595bf.js → 820c8aaf3632edb0150c.js} +1 -1
- package/assets/esri/core/workers/chunks/842893e75696428d536f.js +1 -0
- package/assets/esri/core/workers/chunks/8e19629899a5becf8e19.js +1 -0
- package/assets/esri/core/workers/chunks/950d4578dc450467404c.js +1 -0
- package/assets/esri/core/workers/chunks/{68be3fb88ca61f82fb90.js → 95dbbddac6581b9d671f.js} +1 -1
- package/assets/esri/core/workers/chunks/{a4162a8660bf763d542d.js → 967b4992b400517ee712.js} +1 -1
- package/assets/esri/core/workers/chunks/{adf25e5ed99615b83c68.js → a62c12925303ff802c3d.js} +1 -1
- package/assets/esri/core/workers/chunks/{900181f68449d8f82eeb.js → aa1ac7954e4f0fefe15b.js} +1 -1
- package/assets/esri/core/workers/chunks/ac24b4370dc7194a3107.js +1 -0
- package/assets/esri/core/workers/chunks/acdfd275dbf8533a67f3.js +1 -0
- package/assets/esri/core/workers/chunks/ace2e0a9d9013edd8624.js +1 -0
- package/assets/esri/core/workers/chunks/b1d5d236d5268fcbc74b.js +1 -0
- package/assets/esri/core/workers/chunks/b3007aedbf731dacaff1.js +1 -0
- package/assets/esri/core/workers/chunks/{53e2f2b922116a45fe8f.js → b573df59391ca41ee5a7.js} +1 -1
- package/assets/esri/core/workers/chunks/bac8c32665e982896ecc.js +1 -0
- package/assets/esri/core/workers/chunks/{f3da30d7300b92bd8bb0.js → befa32b9e7b3fbdd431e.js} +1 -1
- package/assets/esri/core/workers/chunks/c19f238b55ff2893f7c2.js +1 -0
- package/assets/esri/core/workers/chunks/c5ed67fdf261cbb1624b.js +1 -0
- package/assets/esri/core/workers/chunks/c72a904e01dc8c17d992.js +1 -0
- package/assets/esri/core/workers/chunks/d9b1aed88b205689cec6.js +1 -0
- package/assets/esri/core/workers/chunks/de6081df29183bf80787.js +1 -0
- package/assets/esri/core/workers/chunks/{c598b22f78ccc57f9d6d.js → dfd2dc5cdc97ffba8926.js} +1 -1
- package/assets/esri/core/workers/chunks/e1b7806ab3e1967b15f0.js +1 -0
- package/assets/esri/core/workers/chunks/e653c81ffb3d818645dd.js +1 -0
- package/assets/esri/core/workers/chunks/eaddffcc7004101fc230.js +1 -0
- package/assets/esri/core/workers/chunks/eb2652ec48faa78de3c5.js +1 -0
- package/assets/esri/core/workers/chunks/{c62738f84c914671b143.js → f4a7aa3cdbc0c429c359.js} +1 -1
- package/assets/esri/core/workers/chunks/fda83bcb8e40e8044c24.js +1 -0
- package/assets/esri/libs/pdfjs/wasm/openjpeg_nowasm_fallback.js +1 -0
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +4 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/widgets/support/uriUtils/t9n/messages.fr.json +1 -1
- package/config.d.ts +2 -0
- package/config.js +1 -1
- package/core/ObjectPool.js +1 -1
- package/core/PooledArray.js +1 -1
- package/core/accessorSupport/tracking/SimpleTrackingTarget.js +1 -1
- package/geometry/support/buffer/BufferPool.js +1 -1
- package/geometry/support/coordsUtils.js +1 -1
- package/geometry/support/curves/ellipticArc7Utils.js +1 -1
- package/geometry/support/curves/mathUtils.js +1 -1
- package/interfaces.d.ts +18 -9
- package/kernel.js +1 -1
- package/layers/AnnotationFeatureLayer.d.ts +2 -2
- package/layers/AnnotationFeatureLayer.js +1 -1
- package/layers/CatalogLayer.d.ts +2 -2
- package/layers/CatalogLayer.js +1 -1
- package/layers/DimensionFeatureLayer.d.ts +2 -2
- package/layers/DimensionFeatureLayer.js +1 -1
- package/layers/FeatureLayer.d.ts +2 -2
- package/layers/FeatureLayer.js +1 -1
- package/layers/SubtypeGroupLayer.d.ts +2 -2
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
- package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +9 -9
- package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
- package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
- package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
- package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
- package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
- package/layers/graphics/sources/GeoJSONSource.js +1 -1
- package/layers/graphics/sources/geojson/GeoJSONSourceWorker.js +1 -1
- package/layers/graphics/sources/parquet/FileProvider.js +1 -1
- package/layers/graphics/sources/support/MemorySourceWorker.js +1 -1
- package/layers/graphics/sources/support/clientSideDefaults.js +1 -1
- package/layers/graphics/sources/support/sourceUtils.js +1 -1
- package/layers/mixins/{FeatureLayerReload.d.ts → ReloadableLayer.d.ts} +5 -3
- package/layers/mixins/ReloadableLayer.js +2 -0
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/raster/datasets/BaseRaster.js +1 -1
- package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
- package/layers/raster/datasets/ImageAuxRaster.js +1 -1
- package/layers/raster/datasets/ImageServerRaster.js +1 -1
- package/layers/raster/datasets/MRFRaster.js +1 -1
- package/layers/raster/datasets/TIFFRaster.js +1 -1
- package/layers/raster/datasets/WCSRaster.js +1 -1
- package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
- package/layers/raster/formats/RasterCodec.js +1 -1
- package/layers/raster/formats/TiffDecoder.js +1 -1
- package/layers/raster/formats/Zlib.js +1 -1
- package/layers/support/RasterWorker.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/layers/support/vectorTileLayerLoader.js +1 -1
- package/package.json +2 -2
- package/popup/FeatureModel.js +1 -1
- package/popup/FeaturesModel.js +1 -1
- package/portal/schemas/definitions.js +1 -1
- package/request/process.js +1 -1
- package/request/types.d.ts +7 -0
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
- package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSource.js +1 -1
- package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSourceWorker.js +1 -1
- package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueBackground.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueFill.js +1 -1
- package/views/2d/layers/VectorTileLayerView2D.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
- package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightObserverPlugin.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightPlacementController.js +1 -1
- package/views/3d/analysis/LineOfSight/{LineOfSightRootPlugin.js → LineOfSightPlacementRootPlugin.js} +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTargetPlugin.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementPointPlugin.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
- package/views/3d/interactive/editingTools/ManipulatedObject3DGraphic.js +1 -1
- package/views/3d/support/MemoryController.js +1 -1
- package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
- package/views/3d/webgl-engine/effects/geometry/RenderOccluded.js +1 -1
- package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
- package/views/3d/webgl-engine/lib/PathCapBuilder.js +1 -1
- package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
- package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
- package/views/3d/webgl-engine/lib/PathProfile.js +1 -1
- package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
- package/views/draw/DrawTool.js +1 -1
- package/views/draw/support/PluginContext.js +1 -1
- package/views/draw/support/managers/TooltipManager.js +1 -1
- package/views/draw/support/types.d.ts +5 -2
- package/webdoc/applicationProperties/SearchLayerField.d.ts +7 -1
- package/webdoc/applicationProperties/SearchLayerField.js +1 -1
- package/webdoc/applicationProperties/SearchTableField.d.ts +7 -1
- package/webdoc/applicationProperties/SearchTableField.js +1 -1
- package/webdoc/applicationProperties/searchMode.js +2 -0
- package/widgets/BatchAttributeForm/inputs/support/DynamicChoiceController.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/inputUtils.js +1 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/Editor/EditorViewModel.d.ts +10 -1
- package/widgets/Editor.d.ts +10 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/HistogramRangeSlider.d.ts +2 -2
- package/widgets/HistogramRangeSlider.js +1 -1
- package/widgets/Legend.d.ts +1 -0
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer.js +2 -2
- package/widgets/PanoramicViewer/PanoramicVideoViewerViewModel.js +1 -1
- package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.d.ts +5 -2
- package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.js +1 -1
- package/widgets/ScaleRangeSlider.js +1 -1
- package/widgets/Search/LayerSearchSource.d.ts +23 -1
- package/widgets/Search/LayerSearchSource.js +1 -1
- package/widgets/Search/support/layerSearchUtils.js +1 -1
- package/widgets/Search/types.d.ts +7 -0
- package/widgets/ValuePicker/ValuePickerBaseComponent.d.ts +5 -1
- package/widgets/ValuePicker/ValuePickerCollection.d.ts +2 -0
- package/widgets/ValuePicker/ValuePickerCombobox.d.ts +7 -1
- package/widgets/ValuePicker/ValuePickerLabel.d.ts +7 -1
- package/widgets/ValuePicker/ValuePickerSlider.d.ts +2 -0
- package/widgets/ValuePicker/ValuePickerSliderVisibleElements.d.ts +5 -1
- package/widgets/ValuePicker/ValuePickerVisibleElements.d.ts +5 -1
- package/widgets/ValuePicker/types.d.ts +2 -0
- package/widgets/support/forms/formUtils.js +1 -1
- package/widgets/support/forms/types.d.ts +1 -1
- package/assets/esri/core/workers/chunks/03261b9451e293a0fac8.js +0 -1
- package/assets/esri/core/workers/chunks/03afeefb9d16b6f1d844.js +0 -1
- package/assets/esri/core/workers/chunks/09b9a886363bc1197785.js +0 -1
- package/assets/esri/core/workers/chunks/0ad0484ffcbe4ad21bd3.js +0 -1
- package/assets/esri/core/workers/chunks/19743dedaa40446259ec.js +0 -1
- package/assets/esri/core/workers/chunks/1c65ab9ed611c322ce27.js +0 -1
- package/assets/esri/core/workers/chunks/1f339247b68b061ab0a4.js +0 -1
- package/assets/esri/core/workers/chunks/251921cd10ecfbc89451.js +0 -1
- package/assets/esri/core/workers/chunks/3252b1fae363bb0129a0.js +0 -1
- package/assets/esri/core/workers/chunks/408e81c8f1eff8a7b379.js +0 -1
- package/assets/esri/core/workers/chunks/4fc337240e7cddd0e988.js +0 -1
- package/assets/esri/core/workers/chunks/50036a323c2e7f155311.js +0 -1
- package/assets/esri/core/workers/chunks/55dcbf296d8d0092e473.js +0 -1
- package/assets/esri/core/workers/chunks/5732fdf6d8b87739aeea.js +0 -1
- package/assets/esri/core/workers/chunks/5924ec3167a2941ebb1f.js +0 -1
- package/assets/esri/core/workers/chunks/59b216b60464611742d4.js +0 -1
- package/assets/esri/core/workers/chunks/5bfea0c55aca826de536.js +0 -1
- package/assets/esri/core/workers/chunks/5fa1ec357c3ad1f91bc7.js +0 -1
- package/assets/esri/core/workers/chunks/60d3056a31d982c9cad0.js +0 -1
- package/assets/esri/core/workers/chunks/6558488ea96620439f34.js +0 -1
- package/assets/esri/core/workers/chunks/6aebf7cfd294e88bf926.js +0 -1
- package/assets/esri/core/workers/chunks/6b43bb78f9839ed43135.js +0 -1
- package/assets/esri/core/workers/chunks/6c83398cf586ecea0eb1.js +0 -1
- package/assets/esri/core/workers/chunks/7267b17de212207142c9.js +0 -1
- package/assets/esri/core/workers/chunks/7d1fd2df579a4b535e0e.js +0 -1
- package/assets/esri/core/workers/chunks/7e0cf70c0eb5a2ddfcec.js +0 -1
- package/assets/esri/core/workers/chunks/879b2de825c1dfc8849d.js +0 -1
- package/assets/esri/core/workers/chunks/912080c90b5cc2e817cf.js +0 -1
- package/assets/esri/core/workers/chunks/917f53833b853898facc.js +0 -1
- package/assets/esri/core/workers/chunks/937824bc7948f7bc7845.js +0 -1
- package/assets/esri/core/workers/chunks/a97d85774f9a417202df.js +0 -1
- package/assets/esri/core/workers/chunks/aff32980d91dab07dfb7.js +0 -1
- package/assets/esri/core/workers/chunks/b132ffa7e8bb461b6786.js +0 -1
- package/assets/esri/core/workers/chunks/b1b4066e8d1c0c9656e5.js +0 -1
- package/assets/esri/core/workers/chunks/b6ba66a05030d3815dfd.js +0 -1
- package/assets/esri/core/workers/chunks/bbec9d2e3b75a5c59681.js +0 -1
- package/assets/esri/core/workers/chunks/bf69024804ac51c8f733.js +0 -1
- package/assets/esri/core/workers/chunks/d938987344bce83cc660.js +0 -1
- package/assets/esri/core/workers/chunks/db1ab9b9c8bf5c7635d3.js +0 -1
- package/assets/esri/core/workers/chunks/e01aeac34474540f61ee.js +0 -1
- package/assets/esri/core/workers/chunks/e15ba90af0faf873b42d.js +0 -1
- package/assets/esri/core/workers/chunks/fd9663952d5a94f3a83f.js +0 -1
- package/layers/mixins/FeatureLayerReload.js +0 -2
- /package/views/3d/analysis/LineOfSight/{lineOfSightPlacementUtils.js → placementUtils.js} +0 -0
package/request/process.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../config.js";import{id as t}from"../kernel.js";import n from"../core/Error.js";import has from"../core/has.js";import{clone as r}from"../core/lang.js";import{isAbortError as i,createAbortError as a,isAborted as o}from"../core/promiseUtils.js";import{isTrustedServer as s,getOrigin as c,isBlobProtocol as l,isDataProtocol as u,toHTTPS as d,objectToQuery as f,getProxyRule as p,getProxyUrl as m,addQueryParameters as h,hasSameOrigin as g,addProxyRule as _,getAppUrl as v}from"../core/urlUtils.js";import{isSecureProxyService as y}from"../portal/support/urlUtils.js";import{requestConfig as b}from"./config.js";import{registerNoCorsDomains as x,isNoCorsRequestRequired as S,sendNoCorsRequest as C}from"./cors.js";import{loadImage as w}from"./loadImage.js";import{setPreferredHost as T,getPreferredUrl as E}from"./preferredHosts.js";const D=`FormData`in globalThis,O=new Set([499,498,403,401]),k=new Set([`COM_0056`,`COM_0057`,`SB_0008`]),A=[/\/arcgis\/tokens/i,/\/sharing(\/rest)?\/generatetoken/i,/\/rest\/info/i];async function j(t){await M(t);let n,r;try{do[n,r]=await N(t);while(!await V(t,n,r))}catch(e){let r=H(`request:server`,e,t.parameters,n);throw r.details.ssl=t.useSSL,t.interceptor?.error?.(r),r}let i=t.parameters.url;if(r){if(/\/sharing\/rest\/(accounts|portals)\/self/i.test(i)){if(!t.hasToken&&!t.credentialToken&&r.user?.username&&!s(i)){let t=c(i,!0);t&&e.request.trustedServers.push(t)}Array.isArray(r.authorizedCrossOriginNoCorsDomains)&&x(r.authorizedCrossOriginNoCorsDomains)}else(t.parameters.requestOptions.responseType||`json`)===`json`&&T(i,r)}return{data:r,getAllHeaders:n?()=>Array.from(n.headers):W,getHeader:n?e=>n.headers.get(e):W,httpStatus:n?.status??200,requestOptions:t.parameters.requestOptions,ssl:t.useSSL,url:t.parameters.url}}async function M(n){let r=n.parameters.url,i=n.parameters.requestOptions,a=n.controller.signal,s=i.body,c=null,l=null;if(D&&`HTMLFormElement`in globalThis&&(s instanceof FormData?c=s:s instanceof HTMLFormElement&&(c=new FormData(s))),typeof s==`string`&&(l=s),n.fetchOptions={cache:i.cacheMode??(i.cacheBust?`no-cache`:`default`),credentials:`same-origin`,headers:i.headers||{},keepalive:i.keepAlive??!1,method:i.method===`head`?`HEAD`:`GET`,mode:`cors`,priority:i.priority??e.request.priority,redirect:`follow`,signal:a},(c||l)&&(n.fetchOptions.body=c||l),(b.isForeignWorker||i.authMode===`anonymous`)&&(n.useIdentity=!1),n.hasToken=!!(/token=/i.test(r)||i.query?.token||c?.get(`token`)),!n.hasToken){let{getApiKey:e,getSessionToken:t}=await import(`../support/apiKeyUtils.js`),a=await t(r)??e(r);a&&(i.query??={},i.query.token=a,n.hasToken=!0)}if(n.useIdentity&&!n.hasToken&&!n.credential&&!n.credentialToken&&!R(r)&&!o(a)){let e;i.authMode===`immediate`?(await L(),e=await t.getCredential(r,{signal:a})):i.authMode===`no-prompt`?(await L(),e=await t.getCredential(r,{prompt:!1,signal:a}).catch(()=>void 0)):t&&(e=t.findCredential(r)),e&&(n.credential=e,n.credentialToken=e.token,n.useSSL=!!e.ssl)}}async function N(n){let r=n.parameters.url,i=E(r),o=n.parameters.requestOptions,x=n.fetchOptions??{},w=l(r)||u(r),T=o.responseType??`json`,O=w?0:o.timeout==null?e.request.timeout:o.timeout,k=!1;if(!w){n.useSSL&&(r=d(r));let a={...o.query};n.credentialToken&&(a.token=n.credentialToken);let c=f(a);has(`esri-url-encodes-apostrophe`)&&(c=c.replaceAll(`'`,`%27`));let l=i.length+1+c.length,
|
|
2
|
+
import e from"../config.js";import{id as t}from"../kernel.js";import n from"../core/Error.js";import has from"../core/has.js";import{clone as r}from"../core/lang.js";import{isAbortError as i,createAbortError as a,isAborted as o}from"../core/promiseUtils.js";import{isTrustedServer as s,getOrigin as c,isBlobProtocol as l,isDataProtocol as u,toHTTPS as d,objectToQuery as f,getProxyRule as p,getProxyUrl as m,addQueryParameters as h,hasSameOrigin as g,addProxyRule as _,getAppUrl as v}from"../core/urlUtils.js";import{isSecureProxyService as y}from"../portal/support/urlUtils.js";import{requestConfig as b}from"./config.js";import{registerNoCorsDomains as x,isNoCorsRequestRequired as S,sendNoCorsRequest as C}from"./cors.js";import{loadImage as w}from"./loadImage.js";import{setPreferredHost as T,getPreferredUrl as E}from"./preferredHosts.js";const D=`FormData`in globalThis,O=new Set([499,498,403,401]),k=new Set([`COM_0056`,`COM_0057`,`SB_0008`]),A=[/\/arcgis\/tokens/i,/\/sharing(\/rest)?\/generatetoken/i,/\/rest\/info/i];async function j(t){await M(t);let n,r;try{do[n,r]=await N(t);while(!await V(t,n,r))}catch(e){let r=H(`request:server`,e,t.parameters,n);throw r.details.ssl=t.useSSL,t.interceptor?.error?.(r),r}let i=t.parameters.url;if(r){if(/\/sharing\/rest\/(accounts|portals)\/self/i.test(i)){if(!t.hasToken&&!t.credentialToken&&r.user?.username&&!s(i)){let t=c(i,!0);t&&e.request.trustedServers.push(t)}Array.isArray(r.authorizedCrossOriginNoCorsDomains)&&x(r.authorizedCrossOriginNoCorsDomains)}else(t.parameters.requestOptions.responseType||`json`)===`json`&&T(i,r)}return{data:r,getAllHeaders:n?()=>Array.from(n.headers):W,getHeader:n?e=>n.headers.get(e):W,httpStatus:n?.status??200,requestOptions:t.parameters.requestOptions,ssl:t.useSSL,url:t.parameters.url}}async function M(n){let r=n.parameters.url,i=n.parameters.requestOptions,a=n.controller.signal,s=i.body,c=null,l=null;if(D&&`HTMLFormElement`in globalThis&&(s instanceof FormData?c=s:s instanceof HTMLFormElement&&(c=new FormData(s))),typeof s==`string`&&(l=s),n.fetchOptions={cache:i.cacheMode??(i.cacheBust?`no-cache`:`default`),credentials:`same-origin`,headers:i.headers||{},keepalive:i.keepAlive??!1,method:i.method===`head`?`HEAD`:`GET`,mode:`cors`,priority:i.priority??e.request.priority,redirect:`follow`,signal:a},(c||l)&&(n.fetchOptions.body=c||l),(b.isForeignWorker||i.authMode===`anonymous`)&&(n.useIdentity=!1),n.hasToken=!!(/token=/i.test(r)||i.query?.token||c?.get(`token`)),!n.hasToken){let{getApiKey:e,getSessionToken:t}=await import(`../support/apiKeyUtils.js`),a=await t(r)??e(r);a&&(i.query??={},i.query.token=a,n.hasToken=!0)}if(n.useIdentity&&!n.hasToken&&!n.credential&&!n.credentialToken&&!R(r)&&!o(a)){let e;i.authMode===`immediate`?(await L(),e=await t.getCredential(r,{signal:a})):i.authMode===`no-prompt`?(await L(),e=await t.getCredential(r,{prompt:!1,signal:a}).catch(()=>void 0)):t&&(e=t.findCredential(r)),e&&(n.credential=e,n.credentialToken=e.token,n.useSSL=!!e.ssl)}}async function N(n){let r=n.parameters.url,i=E(r),o=n.parameters.requestOptions,x=n.fetchOptions??{},w=l(r)||u(r),T=o.responseType??`json`,O=w?0:o.timeout==null?e.request.timeout:o.timeout,k=!1;if(!w){n.useSSL&&(r=d(r));let a={...o.query};n.credentialToken&&(a.token=n.credentialToken);let c=f(a);has(`esri-url-encodes-apostrophe`)&&(c=c.replaceAll(`'`,`%27`));let l=o.maxUrlLength??e.request.maxUrlLength;l===0&&(l=1/0);let u=i.length+1+c.length,_;k=o.method===`delete`||o.method===`post`||o.method===`put`||!!o.body||u>l;let b=o.useProxy||!!p(r);if(b){let e=m(r);_=e.path,!k&&_.length+1+u>l&&(k=!0),e.query&&(a={...e.query,...a})}if(x.method===`HEAD`&&(k||b)){if(k)throw u>l?H(`request:invalid-parameters`,Error(`URL exceeds maximum length`),n.parameters):H(`request:invalid-parameters`,Error(`cannot use POST request when method is 'head'`),n.parameters);if(b)throw H(`request:invalid-parameters`,Error(`cannot use proxy when method is 'head'`),n.parameters)}k?(x.method=o.method===`delete`?`DELETE`:o.method===`put`?`PUT`:`POST`,o.body?r=h(r,a):(x.body=f(a),x.headers||={},x.headers[`Content-Type`]=`application/x-www-form-urlencoded`)):r=h(r,a),b&&(n.useProxy=!0,r=`${_}?${r}`),a.token&&D&&x.body instanceof FormData&&!y(r)&&x.body.set(`token`,a.token),o.hasOwnProperty(`withCredentials`)?n.withCredentials=o.withCredentials:g(r,v())||(s(r)||t&&t.findServerInfo(r)?.webTierAuth)&&(n.withCredentials=!0),n.withCredentials&&(x.credentials=`include`,S(r)&&await C(k?h(r,a):r)),i=E(r)}let A=0,j=!1;O>0&&(A=setTimeout(()=>{j=!0,n.controller.abort()},O));let M,N;try{if(o.responseType===`native-request-init`)N=x,N.url=i,o.signal?N.signal=o.signal:delete N.signal;else if(o.responseType===`image`&&x.cache==="default"&&!x.keepalive&&x.method===`GET`&&!k&&!z(o.headers)&&(w||n.useProxy||!e.request.proxyUrl||I(r)))N=await P(i,n);else if(await b.beforeFetch?.(r,x),M=await fetch(i,x),await b.afterFetch?.(M),n.useProxy||F(r),o.responseType===`native`)N=M;else if(x.method!==`HEAD`){if(M.ok){switch(T){case`array-buffer`:N=await M.arrayBuffer();break;case`blob`:case`image`:N=await M.blob();break;default:N=await M.text()}if(A&&=(clearTimeout(A),0),T===`json`||T===`xml`||T===`document`){if(N)switch(T){case`json`:N=JSON.parse(N);break;case`xml`:N=B(N,`application/xml`);break;case`document`:N=B(N,`text/html`)}else N=null}if(N){if((T===`array-buffer`||T===`blob`)&&N[T===`blob`?`size`:`byteLength`]<=750)try{let e=await new Response(N).json();e.error&&(N=e)}catch{}T===`image`&&N instanceof Blob&&(N=await P(URL.createObjectURL(N),n,!0))}}else{N=await M.text();try{N=JSON.parse(N)}catch{}}}}catch(t){if(t.name===`AbortError`)throw j?K():a(`Request canceled`);if(!M&&t instanceof TypeError&&e.request.proxyUrl&&!o.body&&o.method!==`delete`&&o.method!==`head`&&o.method!==`post`&&o.method!==`put`&&!n.useProxy&&!I(r))n.redoRequest=!0,_({proxyUrl:e.request.proxyUrl,urlPrefix:c(r)??``});else throw t}finally{A&&clearTimeout(A)}return[M,N]}function P(t,n,r=!1){let i=n.controller.signal,a=new Image;return a.crossOrigin=n.withCredentials?`use-credentials`:`anonymous`,a.alt=``,a.fetchPriority=e.request.priority,a.src=t,w(a,t,r,i)}function F(e){let t=c(e);t&&!b.corsServers.includes(t)&&b.corsServers.push(t)}function I(e){let t=c(e);return!t||t.endsWith(`.arcgis.com`)||b.corsServers.includes(t)||s(t)}async function L(){t||await import(`../identity/IdentityManager.js`)}function R(e){return A.some(t=>t.test(e))}function z(e){if(e){for(let t of Object.getOwnPropertyNames(e))if(e[t])return!0}return!1}function B(e,t){let n;try{n=new DOMParser().parseFromString(e,t)}catch{}if(!n||n.getElementsByTagName(`parsererror`).length)throw SyntaxError(`XML Parse error`);return n}async function V(e,n,r){if(e.redoRequest)return e.redoRequest=!1,!1;let i=e.parameters.requestOptions;if(!n||i.responseType===`native`||i.responseType===`native-request-init`)return!0;let a;if(r&&(r.error&&typeof r.error==`object`?a=r.error:r.status===`error`&&Array.isArray(r.messages)&&(a={...r},a[U]=r,a.details=r.messages)),!a&&!n.ok)throw a=Error(`Unable to load ${n.url} status: ${n.status}`),a[U]=r,a;let o,s=null,c;a&&(o=Number(a.code),s=a.hasOwnProperty(`subcode`)?Number(a.subcode):null,c=a.messageCode,c=c?.toUpperCase());let l=i.authMode;if(o===403&&(s===4||a.message?.toLowerCase().includes(`ssl`)&&!a.message.toLowerCase().includes(`permission`))){if(!e.useSSL)return e.useSSL=!0,!1}else if(!e.hasToken&&e.useIdentity&&(l!==`no-prompt`||o===498)&&o!==void 0&&O.has(o)&&!R(e.parameters.url)&&(o!==403||(!c||!k.has(c))&&(s==null||s===2&&e.credentialToken))){await L();try{let n=await t.getCredential(e.parameters.url,{error:H(`request:server`,a,e.parameters),credential:e.credential,prompt:l!==`no-prompt`,signal:e.controller.signal,token:e.credentialToken});return e.credential=n,e.credentialToken=n.token,e.useSSL=e.useSSL||n.ssl,!1}catch(t){if(l===`no-prompt`)return e.credential=void 0,e.credentialToken=void 0,!1;a=t}}if(a)throw a;return!0}function H(e,t,o,s){let c,l={url:o.url,requestOptions:o.requestOptions,getAllHeaders:W,getHeader:W,ssl:!1};if(t instanceof n)return t.details?(t.details=r(t.details),t.details.url=o.url,t.details.requestOptions=o.requestOptions):t.details=l,t;if(t){let e=s&&(()=>Array.from(s.headers)),n=s&&(e=>s.headers.get(e)),r=s?.status,i=t.message;i&&(c=i),e&&n&&(l.getAllHeaders=e,l.getHeader=n),l.httpStatus=(t.httpCode==null?t.code:t.httpCode)||r||0,l.subCode=t.subcode,l.messageCode=t.messageCode,typeof t.details==`string`?(l.messages=[t.details],c??=t.details):(l.messages=t.details,c??=l.messages?.[0]),l.raw=U in t?t[U]:t}return c??=`Error`,i(t)?a():new n(e,c,l)}const U=Symbol(),W=()=>null,G=`Timeout exceeded`;function K(){return Error(G)}function q(e){return typeof e==`object`&&!!e&&`message`in e&&e.message===G}export{H as createRequestError,q as isTimeoutError,j as processRequest};
|
package/request/types.d.ts
CHANGED
|
@@ -56,6 +56,13 @@ export interface RequestOptions extends AbortOptions {
|
|
|
56
56
|
* @since 5.0
|
|
57
57
|
*/
|
|
58
58
|
keepAlive?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Maximum number of characters allowed in the URL for HTTP GET requests. If this limit is exceeded, HTTP POST method will be used.
|
|
61
|
+
* Defaults to `maxUrlLength` in [RequestConfig](https://developers.arcgis.com/javascript/latest/references/core/config/#RequestConfig-maxUrlLength). Set to `0` to skip URL-length checks.
|
|
62
|
+
*
|
|
63
|
+
* @since 5.2
|
|
64
|
+
*/
|
|
65
|
+
maxUrlLength?: number;
|
|
59
66
|
/**
|
|
60
67
|
* Indicates if the request should be made using the
|
|
61
68
|
* HTTP DELETE, HEAD, POST, or PUT method. By default, HTTP POST will be used for `auto` if the request size is longer than the `maxUrlLength` property set in [Config](https://developers.arcgis.com/javascript/latest/references/core/config/#Config-request).
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as n}from"../../core/lang.js";import r from"../../core/Logger.js";import{pt2px as i,px2pt as a}from"../../core/screenUtils.js";import{numericHash as o}from"../../core/string.js";import{isCurvedGeometry as s}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as c}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{checkForAnimations as l,globalRotation as u,getAnimationParams as d,handleAbsoluteAnchor as f,handleMarker as p,handleRelativeAnchor as m,getFrameTranslation as h,translate as g,getStaticParam as _,shouldUseAnimatedPath as v}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as y,CIMSymbolHelper as b,forEachSymbolLayer as x}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as C}from"./defaultCIMValues.js";import{fitVectorMarker as w}from"./fitVectorMarker.js";import{fromCIMFontStyle as T}from"./fromCIMFontStyle.js";import{OverrideHelper as E}from"./OverrideHelper.js";import{hasRichTextFormattingTags as D}from"./richTextUtils.js";import{getSDFInfo as O,getExtent as k,getSDFMetrics as A,getSDFDimensions as j}from"./SDFHelper.js";import{CIMSymbolUnits as M}from"./types.js";import{colorToArray as N,normalizeAlpha as P,getSize as F,isCIMMarkerStrokePlacement as I,hasStrokeLayer as L,getNumericValue as R,getMaxStrokeWidth as z,getTintColor as B,normalizePrimitiveOverrideProps as V,getDefaultCIMValue as H,getEnum as U,getFillColor as W,getStrokeColor as G,fromCIMFontDecoration as K,getStrokeWidth as q,fromCIMVerticalAlignment as ee,fromCIMHorizontalAlignment as te,getTextCasing as J,isValidCIMValue as ne,uncapitalize as re}from"./utils.js";import{isSupportedCallout as ie,getPointSymbolCalloutTransforms as ae,normalizePointSymbolCalloutScale as oe,normalizeLeaderLineStyle as Y,getPointSymbolCalloutFitProperties as se,normalizeBalloonCalloutStyle as ce}from"./callouts/calloutAnalysisUtils.js";import{EffectHelper as le}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as ue,randomInsidePolygonTextureSize as de}from"../../views/2d/engine/webgl/definitions.js";const X=()=>r.getLogger(`esri.symbols.cim.cimAnalyzer`);function fe(e){let t=e.markerPlacement;return t&&t.angleToLine?1:0}class pe{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,n,r){if(this._cimLayers=r??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(let t of this._primitiveOverrides){let n=t.valueExpressionInfo;if(n)this._setPoMap(t.primitiveName,t.propertyName,n);else if(t.value!=null){let n=t.value;t.propertyName.includes(`Color`)&&(e(n)&&(n=N(n)),n=P(n)),this._setPoMap(t.primitiveName,t.propertyName,n)}}}return this._analyzeSymbol(t.symbol,n),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){let n=e?.symbolLayers;if(!n)return;for(let e=0;e<n.length;e++){let t=n[e];t.type===`CIMVectorMarker`&&(n[e]=w(t))}let r=e.effects,i=0,a=F(e)??0;e.type===`CIMPointSymbol`&&e.angleAlignment===`Map`&&(i=1);let o={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};o=u(o),o=d(this._poMap,e,o);let s=null;e.type===`CIMPointSymbol`&&(s=this._analyzePointSymbolHalo(e,i,a,r,o),this._analyzeCallout(e,null,[],o,a,i,t));let c=s?n.filter(e=>e!==s):n;if(Ce(c,r))return this._analyzeCompositeOutlineFill(c,r,a);this._analyzeSymbolLayer(s?{...e,symbolLayers:c}:e,null,[],o,a,i,t)}_analyzeSymbolLayer(e,t,n,r,i,a,o){let s=e?.symbolLayers;if(!s)return;let c=e.type===`CIMPolygonSymbol`,l=e.effects,u=s.length;for(;u--;){let d=s[u];if(!d||d.enable===!1)continue;let f;l?.length&&(f=[...l]);let p=d.effects;p?.length&&(l?f.push(...p):f=[...p]);let m=t?[...t]:null;if(f){m??=[];for(let e of f){let t=E.findEffectOverrides(e,this._primitiveOverrides);t&&m.push(t)}}E.findApplicableOverrides(d,this._primitiveOverrides,[]);let h=this._cimLayers.length;switch(d.type){case`CIMSolidFill`:this._analyzeSolidFill(d,m,r,L(s));break;case`CIMPictureFill`:this._analyzePictureFill(d,m,r);break;case`CIMHatchFill`:this._analyzeHatchFill(d,m,r);break;case`CIMGradientFill`:this._analyzeGradientFill(d,m);break;case`CIMSolidStroke`:this._analyzeSolidStroke(d,m,c,i,r);break;case`CIMPictureStroke`:this._analyzePictureStroke(d,m,c,i,r);break;case`CIMGradientStroke`:this._analyzeGradientStroke(d,m,c,i);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:{(e.type===`CIMLineSymbol`||e.type===`CIMPolygonSymbol`)&&(a=fe(d));let t=[],s=d.primitiveName;s&&t.push(s);let l=c&&I(d.markerPlacement);this._analyzeMarker(d,m,null,t,a,i,o,n,r,!1,l);break}default:X().error(`Cannot analyze CIM layer`,d.type)}if(m?.some(({effect:e})=>Z(e)))for(let e=h;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,r,i,o){let{haloSymbol:s}=e,c=R(e.haloSize,0);if(c<=0||!s?.symbolLayers)return null;let u=s.symbolLayers.filter(e=>e.enable!==!1),f=u[0];if(!f)return null;let p=u.length===1&&f.type===`CIMSolidFill`;if(e.symbolLayers?.some(e=>l(e))===!0||l(s))return X().warnOnce(`CIM point symbol halos do not support independently animated symbol components`),null;let m=i?.map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null);if(m?.some(({effect:e})=>Z(e))){if(!p)return X().warnOnce(`Complex CIM point symbol halos are not supported with geometry-changing effects`),null;let t=e.symbolLayers?.filter(e=>e.enable!==!1)??[];if(!xe(t,m))return X().warnOnce(`CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and an unambiguous solid-fill effect chain`),null;let n=t.find(e=>e.type===`CIMSolidFill`);if(!n)return null;let i=[...m,...(n.effects??[]).map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],a=z(t),o=this._getValueOrOverrideExpression(f.type,f.primitiveName,`Color`,P(f.color));return this._cimLayers.push({type:`outlineFill`,name:n.name,colorLocked:!!n.colorLocked,color:this._getValueOrOverrideExpression(n.type,n.primitiveName,`Color`,P(n.color)),effects:i,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth:c+a,cap:`Round`,join:`Round`,referenceWidth:r,pixelBufferSize:c+a,outlineEffects:i}),n}let h=e.symbolLayers?.filter(e=>e.enable!==!1)??[],g=h.length===1&&h[0].type===`CIMVectorMarker`?h[0]:null,_=n(e);if(_.effects=void 0,_.angle=0,_.scaleX=1,g){let e=_.symbolLayers?.find(e=>e.type===`CIMVectorMarker`&&e.enable!==!1);e&&(e.rotation=0,e.offsetX=0,e.offsetY=0)}let v={..._,haloSize:0,haloSymbol:void 0},x=y.getPointSymbolHaloPadding(e,this._resourceManager),[S,C,w]=b.getTextureAnchor(v,this._resourceManager,ue,x),T=a(w),D=[];E.findApplicableOverrides(_,this._primitiveOverrides,D);let k=g?D.filter(e=>e.primitiveName!==g.primitiveName||![`Rotation`,`OffsetX`,`OffsetY`].includes(e.propertyName)):D,A=g?[{offsetX:this._getValueOrOverrideExpression(g.type,g.primitiveName,`OffsetX`,R(g.offsetX)),offsetY:this._getValueOrOverrideExpression(g.type,g.primitiveName,`OffsetY`,R(g.offsetY)),rotation:this._getValueOrOverrideExpression(g.type,g.primitiveName,`Rotation`,R(g.rotation)),size:T,frameHeight:T,rotateClockWise:!!g.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:!1}]:[],j=$(p?d(this._poMap,f,o):o),M,N;if(j){let e=b.getEnvelope(v,null,this._resourceManager);e&&(M=[e.width,e.height],N=[e.width+2*x,e.height+2*x])}return this._cimLayers.push({type:`marker`,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:{type:`cim-point-symbol-halo`,symbol:_,sdf:!j&&p&&O(v)!=null},overrides:k},colorLocked:!0,color:p?this._getValueOrOverrideExpression(f.type,f.primitiveName,`Color`,P(f.color)):[255,255,255,1],effects:m??null,effectsChangeGeometryType:m?.some(({effect:e})=>Z(e)),scaleSymbolsProportionally:!1,alignment:t,anchorPoint:{x:S,y:C},isAbsoluteAnchorPoint:!1,size:T,scaleX:R(e.scaleX,1),rotation:g?0:R(e.angle,0),offsetX:0,offsetY:0,outlineColor:[0,0,0,0],outlineWidth:0,transform:{type:`cim-marker-transform-param`,params:A},frameHeight:T,widthRatio:1,rotateClockwise:!1,referenceSize:r||T,sizeRatio:1,markerPlacement:null,isOutline:!1,animationParams:j,baseSize:r||T,pixelDimensions:M,texelDimensions:N}),null}_analyzeSolidFill(e,t,n,r){let{primitiveName:i,type:a}=e,o=P(e.color),s=d(this._poMap,e,n);if(!r&&t?.some(e=>e.effect.type===`CIMGeometricEffectTaperedPolygon`)){let n=this._getValueOrOverrideExpression(a,i,`Color`,o);this._cimLayers.push({type:`outlineFill`,name:e.name,colorLocked:!!e.colorLocked,color:n,effects:t,outlineColor:n,outlineColorLocked:!!e.colorLocked,...S,outlineEffects:t});return}this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,i,`Color`,o),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:$(s)})}_analyzePictureFill(e,t,n){let{primitiveName:r,type:i}=e,a=B(e),o=R(e.height,C.CIMPictureFill.height),s=R(e.scaleX,1);if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height),s/=o/t*n}let c={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(r,i)},l=d(this._poMap,e,n);this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(i,r,`TintColor`,a),height:this._getValueOrOverrideExpression(i,r,`Height`,o),scaleX:this._getValueOrOverrideExpression(i,r,`ScaleX`,s),angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:$(l)})}_analyzeHatchFill(e,t,n){let{primitiveName:r,type:i}=e,a=d(this._poMap,e,n),o=this._analyzeMaterialOverrides(r,[`Rotation`,`OffsetX`,`OffsetY`]),s=V(o),c=[255,255,255,1],l=!1;if(e.lineSymbol?.symbolLayers)for(let t of e.lineSymbol.symbolLayers){if(t.type!==`CIMSolidStroke`)continue;let e=t.primitiveName??r;!l&&e&&!t.colorLocked&&(this._poMap[e]?.Color!=null||this._poMap[e]?.StrokeColor!=null)&&(c=P(t.color),c=this._maybeGetValueOrOverrideExpression(e,`StrokeColor`)??this._getValueOrOverrideExpression(i,e,`Color`,c),l=!0);let n=this._maybeGetValueOrOverrideExpression(e,`StrokeWidth`);if(n){let t=null,r=null;typeof n==`number`?t=n:r=n.valueExpressionInfo;let a=s.find(e=>e.propertyName===`strokeWidth`);a?a.propertyName=`width`:(a={type:`CIMPrimitiveOverride`,primitiveName:e,propertyName:`width`,valueExpressionInfo:r,value:t,defaultValue:H(i,`width`)},s.push(a))}}let u={type:`sprite-rasterization-param`,resource:e,overrides:s};this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:u,colorLocked:!!e.colorLocked,effects:t,color:c,height:this._getValueOrOverrideExpression(i,r,`Separation`,R(e.separation,C.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!l,animationParams:$(a)})}_analyzeGradientFill(e,t){let{angle:n,gradientMethod:r,gradientSize:i,gradientSizeUnits:a,gradientType:o,interval:s,primitiveName:c,type:l}=e,u=C.CIMGradientFill,d=e.colorRamp;this._cimLayers.push({type:`gradientFill`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(c,l)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(l,c,`GradientMethod`,r??`Linear`),angle:this._getValueOrOverrideExpression(l,c,`Angle`,R(n,u.angle)),gradientType:this._getValueOrOverrideExpression(l,c,`GradientType`,o??u.gradientType),interval:this._getValueOrOverrideExpression(l,c,`Interval`,R(s,d.type===`CIMFixedColorRamp`?d.colors.length:u.interval)),gradientSize:this._getValueOrOverrideExpression(l,c,`GradientSize`,R(i,u.gradientSize)),gradientSizeUnits:a===`Absolute`?M.Absolute:a===`Relative`?M.Relative:u.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,n,r=[]){let i=e.find(e=>e.type===`CIMSolidFill`),a=e.find(e=>e.type===`CIMSolidStroke`);if(i==null||a==null)return;let o=[...r,...[...t??[],...i.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],s=[...r,...[...t??[],...a.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],c=R(a.width,C.CIMSolidStroke.width),l=U(a.capStyle,C.CIMSolidStroke.capstyle),u=U(a.joinStyle,C.CIMSolidStroke.joinstyle),d=a.miterLimit;this._cimLayers.push({type:`outlineFill`,name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,`Color`,P(i.color)),effects:o,effectsChangeGeometryType:o.some(({effect:e})=>Z(e))||s.some(({effect:e})=>Z(e)),outlineColorLocked:!!a.colorLocked,outlineColor:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Color`,P(a.color)),outlineWidth:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Width`,c),cap:this._getValueOrOverrideExpression(a.type,a.primitiveName,`CapStyle`,l),join:this._getValueOrOverrideExpression(a.type,a.primitiveName,`JoinStyle`,u),miterLimit:d&&this._getValueOrOverrideExpression(a.type,a.primitiveName,`MiterLimit`,d),referenceWidth:n,outlineEffects:s})}_analyzeSolidStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=P(e.color),c=R(e.width,C.CIMSolidStroke.width),l=U(e.capStyle,C.CIMSolidStroke.capstyle),u=U(e.joinStyle,C.CIMSolidStroke.joinstyle),f=e.miterLimit,p=this._analyzePrimitiveOverrides(a,t,null,null),m=[];p&&(m=this._getPrimitiveMaterialOverrides(a,o));let h,g,_,v;if(t&&Array.isArray(t)&&t.length>0){let e=t[t.length-1].effect;e&&e.type===`CIMGeometricEffectDashes`&&e.lineDashEnding===`NoConstraint`&&(h=e.dashTemplate,g=e.scaleDash,_=e.offsetAlongLine,v=e.primitiveName,t=[...t],t.pop())}v!=null&&m.push(...this._getPrimitiveMaterialOverrides(v,o).filter(e=>e.propertyName===`dashTemplate`));let y=h===void 0?null:{type:`sprite-rasterization-param`,resource:{type:`dash`,dashTemplate:h,primitiveName:v},overrides:m},b=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:y,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`Color`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(v,`DashTemplate`)??h,offsetAlongLine:this._getValueOrOverrideExpression(o,v,`OffsetAlongLine`,_??0),scaleDash:g,sampleAlphaOnly:!0,animationParams:$(b)})}_analyzePictureStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=B(e),c=R(e.width,C.CIMPictureStroke.width),l=U(e.capStyle,C.CIMPictureStroke.capstyle),u=U(e.joinStyle,C.CIMPictureStroke.joinstyle),f=e.miterLimit,p={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(a,o)},m=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:p,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`TintColor`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:$(m)})}_analyzeGradientStroke(e,t,n,r){let{gradientMethod:i,gradientSize:a,gradientSizeUnits:o,gradientType:s,interval:c,primitiveName:l,type:u}=e,d=C.CIMGradientStroke,f=R(e.width,d.width),p=U(e.capStyle,d.capstyle),m=U(e.joinStyle,d.joinstyle),h=e.miterLimit,g=e.colorRamp;this._cimLayers.push({type:`gradientStroke`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(l,u)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(u,l,`Width`,f),cap:this._getValueOrOverrideExpression(u,l,`CapStyle`,p),join:this._getValueOrOverrideExpression(u,l,`JoinStyle`,m),miterLimit:h&&this._getValueOrOverrideExpression(u,l,`MiterLimit`,h),referenceWidth:r,isOutline:n,gradientMethod:this._getValueOrOverrideExpression(u,l,`GradientMethod`,i??d.gradientMethod),gradientType:this._getValueOrOverrideExpression(u,l,`GradientType`,s??d.gradientType),interval:this._getValueOrOverrideExpression(u,l,`Interval`,R(c,g.type===`CIMFixedColorRamp`?g.colors.length:d.interval)),gradientSize:this._getValueOrOverrideExpression(u,l,`GradientSize`,R(a,d.gradientSize)),gradientSizeUnits:o===`Absolute`?M.Absolute:o===`Relative`?M.Relative:d.gradientSizeUnits})}_analyzeMarker(e,t,n,r,i,a,o,s,c,l=!1,u=!1){l||=!!e.colorLocked;let h=c;if(h=f(e,h),h=p(this._poMap,e,h),h=m(e,h),h=d(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,l,h))return;let g=R(e.size,C.CIMVectorMarker.size),_=R(e.rotation),v=R(e.offsetX),y=R(e.offsetY),{primitiveName:b,type:x}=e,S=this._getValueOrOverrideExpression(x,b,`Size`,g),w=this._getValueOrOverrideExpression(x,b,`Rotation`,_),T=this._getValueOrOverrideExpression(x,b,`OffsetX`,v),E=this._getValueOrOverrideExpression(x,b,`OffsetY`,y);switch(e.type){case`CIMPictureMarker`:this._analyzePictureMarker(e,t,n,r,i,a,S,w,T,E,s,h,l,u);break;case`CIMVectorMarker`:this._analyzeVectorMarker(e,t,n,r,i,a,S,w,T,E,s,h,o,l,u)}}_analyzeMarkerInsidePolygon(e,t,n,r){let{markerPlacement:i,type:o}=e;if(!i||i.type!==`CIMMarkerPlacementInsidePolygon`||r.hasMotionAnimations)return!1;if(o===`CIMVectorMarker`||o===`CIMPictureMarker`){let n=e.primitiveName;if(n&&this._analyzePrimitiveOverrides([n],t,null,null))return!1;let r=i.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;if(o===`CIMVectorMarker`){let{markerGraphics:t}=e;if(t)for(let e of t){let{symbol:t}=e;if(t?.type===`CIMPolygonSymbol`&&t.symbolLayers){let{symbolLayers:e}=t;for(let t of e)if(t.type===`CIMSolidStroke`)return!1}}}else{let{animatedSymbolProperties:t}=e;if(t)return!1}}let s=Math.abs(i.stepX),c=Math.abs(i.stepY);if(s===0||c===0)return!0;let l,u;if(i.gridType===`Random`){let e=a(de),t=Math.max(Math.floor(e/s),1);l=c*Math.max(Math.floor(e/c),1),u=t*s/l}else i.shiftOddRows?(l=c*2,u=s/c*.5):(l=c,u=s/c);let d=B(e),f=e.type===`CIMCharacterMarker`?null:{type:`sprite-rasterization-param`,resource:{...e,effects:e.effects?.filter(e=>!ye(e))},overrides:[]};return this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:f,colorLocked:n,effects:t,color:d,height:l,scaleX:u,angle:i.gridAngle??0,offsetX:R(i.offsetX),offsetY:R(i.offsetY),applyRandomOffset:i.gridType===`Random`,sampleAlphaOnly:e.type!==`CIMPictureMarker`,hasUnresolvedReplacementColor:!0,animationParams:$(r)}),!0}_analyzePictureMarker(e,t,r,i,a,s,c,l,u,d,f,p,m,h){let{animatedSymbolProperties:g,primitiveName:_,type:v}=e,y=R(e.scaleX,1),b=B(e);r||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);let x=this._createGIFAnimatedSymbolPropertiesOverrideExpression(g),S=e.anchorPoint??{x:0,y:0};if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height);let i=R(e.size);y/=i/t*n}let C=[...i];e.primitiveName&&C.push(e.primitiveName);let w;g||x?w={type:`animated`,url:e.url,urlHash:`H`+o(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(w=n(e),w.markerPlacement=null);let T={type:`sprite-rasterization-param`,resource:w,overrides:this._getMaterialOverrides(C,v)};x&&T.overrides.push(...x.overrides);let E=c;this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:T,colorLocked:m,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:c,scaleX:this._getValueOrOverrideExpression(v,_,`ScaleX`,y),rotation:l,offsetX:u,offsetY:d,transform:{type:`cim-marker-transform-param`,params:f},color:this._getValueOrOverrideExpression(v,_,`TintColor`,b),anchorPoint:{x:S.x,y:S.y},isAbsoluteAnchorPoint:e.anchorPointUnits!==`Relative`,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:1,isOutline:h,markerPlacement:r,animationParams:$(p),baseSize:E})}_analyzeVectorMarker(e,t,n,r,i,a,o,l,u,d,f,p,m,v,y){let b=e.markerGraphics;if(!b)return;let x=e.frame,S=0;S=x?x.ymax-x.ymin:a;let C=!!e.scaleSymbolsProportionally;if(S){let t={offsetX:u,offsetY:d,rotation:l,size:o,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:C};f=[...f,t]}n||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);for(let o of b)if(o){let l=o.symbol;if(!l)continue;let u=o.primitiveName;u&&r.push(u);let d=p,b;if((l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&x){let t=0,n=0,r=o.geometry;`x`in r&&`y`in r&&(t+=r.x-(x.xmin+x.xmax)*.5,n+=r.y-(x.ymin+x.ymax)*.5);let i=e.anchorPoint,a=!1;i&&(e.anchorPointUnits===`Absolute`?(t-=i.x,n-=i.y,a=!0):x&&(t-=(x.xmax-x.xmin)*i.x,n-=(x.ymax-x.ymin)*i.y));let s={offsetX:t,offsetY:n,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:C};b=[...f,s]}(l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&this._analyzeCallout(l,t,b??f,d,a,i,m);let w=s(o.geometry)?{...o,geometry:c(o.geometry,{maxDeviation:.01})}:o,T=w.geometry,[E,D]=h(T,x);switch((E!==0||D!==0)&&(d=g(d,E,D)),l.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:m||ve(l)?(d={...d,transform:{type:`AnimatedTransform`,relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:_([0,0]),rotation:_(0),scale:_(S),parent:p.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,n,w,r,i,a,b??f,d,S,v,y)):this._analyzeMultiLayerGraphic(e,t,n,w,r,i,a,b??f,d,S,v,y);break;case`CIMTextSymbol`:this._analyzeTextGraphic(t,n,w,r,i,a,b??f,v)}u&&r.pop()}}_analyzeCallout(e,t,n,r,i,a,o){let s=e.callout;if(!s||!ie(s))return;let c=t??[],{leaderTolerance:l,leaderOffset:u}=s;switch(s.type){case`CIMSimpleLineCallout`:{let{lineSymbol:e,autoSnap:t}=s,d={type:`CIMSimpleLineCallout`,leaderTolerance:l,leaderOffset:u,autoSnap:t,inflateSize:500};this._analyzeSymbolLayer(e,[...c,{type:`cim-effect-param`,effect:d,overrides:[]}],n,r,i,a,o);break}case`CIMBackgroundCallout`:{let{accentBarSymbol:e,gap:t,backgroundSymbol:d,leaderLineSymbol:f,lineStyle:p,margin:m}=s,h=n=>({type:`CIMBackgroundCallout`,leaderTolerance:l,leaderOffset:u,lineStyle:Y(p),gap:t,hasAccentBar:!!e,margin:m,inflateSize:500,part:n}),g=[...c,{type:`cim-effect-param`,effect:h(`background`),overrides:[]}];if(f&&this._analyzeSymbolLayer(f,[...c,{type:`cim-effect-param`,effect:h(`leader`),overrides:[]}],n,r,i,a,o),d){let e=d.symbolLayers??[];Q(e)?this._analyzeCompositeOutlineFill(e,null,i,g):this._analyzeSymbolLayer(d,g,n,r,i,a,o)}e&&this._analyzeSymbolLayer(e,[...c,{type:`cim-effect-param`,effect:h(`accent-bar`),overrides:[]}],n,r,i,a,o);break}case`CIMBalloonCallout`:{let{balloonStyle:e,backgroundSymbol:t,dartSymbol:d,fixedDartWidth:f,margin:p,useDartSymbol:m,useFixedDartWidth:h}=s,g=m===!0&&d!=null,_=t=>({type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:p,balloonStyle:ce(e),dartWidth:h?f:void 0,inflateSize:500,part:t,separateDart:g}),v=(e,t)=>{let s=[...c,{type:`cim-effect-param`,effect:_(t),overrides:[]}],l=e.symbolLayers??[];Q(l)?this._analyzeCompositeOutlineFill(l,null,i,s):this._analyzeSymbolLayer(e,s,n,r,i,a,o)};g&&v(d,`dart`),v(t,`background`);break}case`CIMPointSymbolCallout`:{let{backgroundScale:e,gap:t,leaderLineSymbol:d,lineStyle:f,pointSymbol:p}=s,m=oe(e),h=ae(p,n),g=e=>({type:`CIMPointSymbolCallout`,leaderTolerance:l,leaderOffset:u,backgroundScale:m,...se(p,e),lineStyle:Y(f),gap:t,inflateSize:500,part:e});d&&this._analyzeSymbolLayer(d,[...c,{type:`cim-effect-param`,effect:g(`leader`),overrides:[]}],n,r,i,a,o),this._analyzeSymbolLayer(p,[...c,{type:`cim-effect-param`,effect:g(`marker`),overrides:[]}],h,r,i,a,o||m!==0);break}case`CIMCompositeCallout`:{let{backgroundSymbol:e,margin:t,shadowSymbol:d}=s,f={type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:t,balloonStyle:1,inflateSize:500,part:`background`},p=[...c,{type:`cim-effect-param`,effect:f,overrides:[]}],m=e=>{let t=e.symbolLayers??[];Q(t)?this._analyzeCompositeOutlineFill(t,null,i,p):this._analyzeSymbolLayer(e,p,n,r,i,a,o)};d&&m(d),m(e);break}}}_analyzeMultiLayerGraphic(e,t,n,r,i,a,o,s,c,l,u,d){let f=r.symbol,p=f.symbolLayers;if(p){if(_e(p)&&!v(c)){this._analyzeCompositeMarkerGraphic(e,t,n,r,p,a,o,s,l,u,d);return}if(Se(p)){x(f,e=>{e.colorLocked&&(u=!0)}),this._analyzeMultiLayerGraphicNonSDF(e,t,n,r,i,a,o,s,c,l,u,d);return}this._analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,d)}}_analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,f){let p=r.symbol,m=p.symbolLayers;if(!m)return;let h=le.applyEffects(p.effects,r.geometry);if(!h)return;let g=m.length;for(;g--;){let p=m[g];if(!p||p.enable===!1)continue;let _=p.primitiveName;switch(_&&i.push(_),p.type){case`CIMSolidFill`:case`CIMSolidStroke`:{let i=le.applyEffects(p.effects,h),m=k(i);if(!m)continue;let g=e.anchorPointUnits!==`Relative`,v=p.type===`CIMSolidStroke`?p.width:0,{frameSizeRatio:y,anchorX:b,anchorY:x,widthRatio:S,sdfPaddingRatio:w,sdfTextureSize:T}=A(m,e.frame,e.size,e.anchorPoint,g,v,e.scaleSymbolsProportionally),E=p.type===`CIMSolidFill`,D={type:`sdf`,geometry:i,sdfPaddingRatio:w,asFill:E,sdfTextureSize:T},{path:O}=p,M=E?P(W(p)):O==null?P(G(p)):[0,0,0,0],N=E?[0,0,0,0]:P(G(p));if(!E&&!v)break;let F=r.primitiveName,I=null;E&&!p.colorLocked&&(I=this._maybeGetValueOrOverrideExpression(F,`FillColor`));let L=null;!E&&!p.colorLocked&&(L=this._maybeGetValueOrOverrideExpression(F,`StrokeColor`));let z=I??this._getValueOrOverrideExpression(p.type,_,`Color`,M),B=L??this._getValueOrOverrideExpression(p.type,_,`Color`,N),V=this._maybeGetValueOrOverrideExpression(F,`StrokeWidth`)??this._getValueOrOverrideExpression(p.type,_,`Width`,v),H=O?{type:`sprite-rasterization-param`,resource:{type:`path`,path:O,asFill:E},overrides:[]}:{type:`sprite-rasterization-param`,resource:D,overrides:[]},U=d(this._poMap,p,c),K=R(e.size,C.CIMVectorMarker.size),q=this._getValueOrOverrideExpression(e.type,e.primitiveName,`Size`,K);this._cimLayers.push({type:`marker`,name:p.name,groupName:e.name,spriteRasterizationParam:H,colorLocked:!!p.colorLocked||!!u,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:b,y:x},isAbsoluteAnchorPoint:g,size:l,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:l,widthRatio:S,rotateClockwise:!1,referenceSize:o,sizeRatio:y,color:z,outlineColor:B,outlineWidth:V,isOutline:f,markerPlacement:n,animationParams:$(U),isStroke:p.type!==`CIMSolidFill`,baseSize:q,...j(i,T,w)});break}case`CIMPictureMarker`:case`CIMVectorMarker`:if(p.markerPlacement){X().error(`Error analyzing CIM, got unexpected marker placement`);break}this._analyzeMarker(p,t,n,i,a,o,!1,s,c,u,f)}_&&i.pop()}}_analyzeTextGraphic(e,n,r,i,a,o,s,c){E.findApplicableOverrides(r,this._primitiveOverrides,[]);let l=r.geometry;if(!(`x`in l)||!(`y`in l))return;let u=r.symbol,d=K(u),f=T(u.fontStyleName),p=t(u.fontFamilyName);u.font={family:p,decoration:d,...f};let m=R(u.height,C.CIMTextSymbol.height),h=R(u.angle),g=R(u.offsetX),_=R(u.offsetY),{haloSymbol:v}=u,y=R(u.haloSize,0),b=[0,0,0,0];if(v?.symbolLayers?.length){let e=v.symbolLayers;for(let t of e)if(t.color){b=this._getValueOrOverrideExpression(u?.haloSymbol?.type??`CIMPolygonSymbol`,t.primitiveName,`Color`,P(t.color));break}}let x=r.primitiveName,S=[0,0,0,1],w=[0,0,0,0],O=0,k=!1;if(u.symbol?.symbolLayers)for(let e of u.symbol.symbolLayers){let t=e.primitiveName;if(e.type===`CIMSolidStroke`)w=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Color`,P(e.color)),O=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Width`,q(e)??0);else if(e.type===`CIMSolidFill`){let n=P(e.color);k??=!!e.colorLocked,S=this._getValueOrOverrideExpression(`CIMSolidFill`,t??x,`Color`,n)}}let A=null,j=null,M=null,N=null,F=null;x&&(A=this._maybeGetValueOrOverrideExpression(x,`TextSize`),j=this._maybeGetValueOrOverrideExpression(x,`TextAngle`),M=this._maybeGetValueOrOverrideExpression(x,`TextOffsetX`),N=this._maybeGetValueOrOverrideExpression(x,`TextOffsetY`),k||(F=this._maybeGetValueOrOverrideExpression(x,`FillColor`)));let I=F??S,L=null,z=null,B=0,V=u.callout?.type===`CIMBackgroundCallout`;if(u.callout?.type===`CIMBackgroundCallout`){let e=u.callout;if(e.backgroundSymbol){let t=e.backgroundSymbol.symbolLayers;if(t)for(let e of t)e.type===`CIMSolidFill`?L=P(e.color):e.type===`CIMSolidStroke`&&(z=P(e.color),B=R(e.width,C.CIMSolidStroke.width))}}let H=this._getValueOrOverrideExpression(u.type,r.primitiveName,`TextString`,r.textString??``);if(H==null)return;let{fontStyleName:U}=u,W=p+(U?`-`+U.toLowerCase():`-regular`),G=this._getMaterialOverrides(i,u.type);G.push(...this._getPrimitiveMaterialOverrides(r.primitiveName,u.type)),this._collectDictionaryTemplateOverrides(G,r);let J={type:`text-rasterization-param`,resource:{type:`text`,textString:r.textString??``,font:u.font,symbol:u,primitiveName:r.primitiveName,supportsRichText:D(r.textString??``)||G.some(e=>e.propertyName===`textString`)},overrides:G};this._cimLayers.push({type:`text`,lineWidth:u.lineWidth,textRasterizationParam:J,colorLocked:!!c||!!k,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:W,decoration:d,haloSize:y,haloColor:b,weight:f.weight,style:f.style,size:A??m,angle:j??h,offsetX:M??g,offsetY:N??_,transform:{type:`cim-marker-transform-param`,params:s},horizontalAlignment:te(u.horizontalAlignment),verticalAlignment:ee(u.verticalAlignment),text:H,color:I,outlineColor:w,outlineSize:O,backgroundColor:L,borderLineColor:z,borderLineWidth:B,useBackgroundCallout:V,referenceSize:o,sizeRatio:1,markerPlacement:n})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){let n=J(t.symbol);e.push({propertyName:`textString`,defaultValue:``,valueExpressionInfo:{type:`dictionary-template`,textCase:n,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,n,r,a,o,s,c,l,u,d,f){let p=me(e,r),m=e.primitiveName,h=this._analyzeMaterialOverrides(m,[`Rotation`,`OffsetX`,`OffsetY`]),g=V(h),[_,v,y]=b.getTextureAnchor(p,this._resourceManager,ue),x=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==m||![`rotation`,`offsetX`,`offsetY`].includes(e.propertyName));x.push(...g);let S={type:`sprite-rasterization-param`,resource:{...p,avoidSDFRasterization:!0},overrides:x},w=R(e.size,C.CIMVectorMarker.size),T=this._getValueOrOverrideExpression(e.type,m,`Size`,w);this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:S,colorLocked:d,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:o,anchorPoint:{x:_,y:v},isAbsoluteAnchorPoint:!1,size:u,rotation:0,offsetX:0,offsetY:0,transform:{type:`cim-marker-transform-param`,params:c},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:u,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:y/i(e.size),isOutline:f,markerPlacement:n,animationParams:$(l),baseSize:T})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-marker-placement-param`,placement:e,overrides:we(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-gif-animation-params`,animation:e,overrides:we(t)}}_analyzeCompositeMarkerGraphic(e,t,n,r,i,a,o,s,c,l,u){let d=r.geometry,f=i[0],p=i[1],m=k(d);if(!m)return;let h=e.anchorPointUnits!==`Relative`,g=R(f.width,C.CIMSolidStroke.width),{frameSizeRatio:_,anchorX:v,anchorY:y,widthRatio:b,sdfPaddingRatio:x,sdfTextureSize:S}=A(m,e.frame,e.size,e.anchorPoint,h,g,e.scaleSymbolsProportionally),{path:w}=p,T=p.primitiveName,E=f.primitiveName,D=r.primitiveName,O=null;!p.colorLocked&&!l&&(O=this._maybeGetValueOrOverrideExpression(D,`FillColor`));let j=O??this._getValueOrOverrideExpression(p.type,T,`Color`,P(p.color)),M=null;!f.colorLocked&&!l&&(M=this._maybeGetValueOrOverrideExpression(D,`StrokeColor`));let N=M??this._getValueOrOverrideExpression(f.type,E,`Color`,P(f.color)),F=this._maybeGetValueOrOverrideExpression(D,`StrokeWidth`)??this._getValueOrOverrideExpression(f.type,E,`Width`,g),I={type:`sprite-rasterization-param`,resource:w?{type:`path`,path:w,asFill:!0}:{type:`sdf`,geometry:d,sdfTextureSize:S,sdfPaddingRatio:x,asFill:!0},overrides:[]};this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:I,colorLocked:l,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:v,y},isAbsoluteAnchorPoint:h,size:c,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:c,widthRatio:b,rotateClockwise:!1,referenceSize:o,sizeRatio:_,color:j,outlineColor:N,outlineWidth:F,isOutline:u,markerPlacement:n})}_setPoMap(e,t,n){let r;this._poMap[e]?r=this._poMap[e]:(r={},this._poMap[e]=r),r[t]=n}_maybeGetValueOrOverrideExpression(e,t,n){return this._getValueOrOverrideExpression(``,e,t,n,!1)}_getValueOrOverrideExpression(e,t,n,r,i=!0){if(i&&!ne(r)&&(r=H(e,n.toLowerCase())),t==null)return r;let a=this._poMap[t];if(a==null)return r;let o=a[n];return typeof o==`string`||typeof o==`number`||Array.isArray(o)?o:o?{valueExpressionInfo:o,defaultValue:r}:r}_analyzePrimitiveOverrides(e,t,n,r){if(e==null)return!1;typeof e==`string`&&(e=[e]);for(let t of this._primitiveOverrides)if(e.includes(t.primitiveName)&&t.valueExpressionInfo)return!0;if(t!=null){for(let e of t)if(e?.overrides.length>0)return!0}if(n!=null){for(let e of n)if(e?.overrides.length>0)return!0}if(r!=null){for(let e of r)if(e?.overrides.length>0)return!0}return!1}_getMaterialOverrides(e,t){if(!e)return[];let n=[];for(let r of e)n.push(...this._getPrimitiveMaterialOverrides(r,t));return n}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];let n=V(this._primitiveOverrides.filter(t=>t.primitiveName===e));return n.forEach(e=>e.defaultValue=H(t,e.propertyName.toLowerCase())),n}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(n=>n.primitiveName!==e||!t.includes(n.propertyName))}}function me(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[{...t}],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function he(e){if(e?.startsWith(`Level_`)){let t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ge(e,t){if(!t||t.length===0)return e;let r=n(e);return E.applyOverrides(r,t),r}const _e=e=>e&&e.length===2&&e[0].enable&&e[1].enable&&e[0].type===`CIMSolidStroke`&&e[1].type===`CIMSolidFill`&&e[0].path==null&&e[1].path==null&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function ve(e){let t=e.symbolLayers;if(!t)return!1;let n=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectDashes`&&e.dashTemplate!=null)),r=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectAddControlPoints`));return!!n||!!r}function ye(e){return Z(e)}function Z(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectRadial`||e.type===`CIMGeometricEffectTaperedPolygon`||e.type===`PrivateDimensionEffect`||e.type===`PrivateMatcherGeometryOverrideEffect`}function be(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectTaperedPolygon`}function xe(e,t){let n=e.filter(e=>e.type===`CIMSolidFill`),r=e.every(e=>e.type===`CIMSolidFill`||e.type===`CIMSolidStroke`),i=e.filter(e=>e.effects?.length),a=i.length===0||i.length===1&&n.length===1&&i[0]===n[0];return n.length>0&&r&&a&&t.some(({effect:e})=>be(e))}function Se(e){return e.some(e=>e.type!==`CIMSolidFill`&&e.type!==`CIMSolidStroke`&&(e.type!==`CIMVectorMarker`&&e.type!==`CIMPictureMarker`||e.markerPlacement!=null))}function Ce(e,t){return!!(t?.some(e=>e.type===`CIMGeometricEffectRadial`)&&t?.some(e=>e.type===`CIMGeometricEffectTaperedPolygon`)||t?.some(e=>e.type===`CIMGeometricEffectCircularSector`))&&Q(e)}function Q(e){if(e?.length!==2)return!1;let t=e.find(e=>e.type===`CIMSolidFill`),n=e.find(e=>e.type===`CIMSolidStroke`),r=n?.effects?.some(e=>e.type===`CIMGeometricEffectDashes`);return t!=null&&n!=null&&!r}function we(e){return n(e).map(e=>({...e,propertyName:re(e.propertyName)}))}function $(e){return v(e)?{type:`animation-params`,params:e}:null}export{pe as CIMAnalyzer,ge as analyzeCIMResource};
|
|
2
|
+
import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as n}from"../../core/lang.js";import r from"../../core/Logger.js";import{pt2px as i,px2pt as a}from"../../core/screenUtils.js";import{numericHash as o}from"../../core/string.js";import{isCurvedGeometry as s}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as c}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{checkForAnimations as l,globalRotation as u,getAnimationParams as d,handleAbsoluteAnchor as f,handleMarker as p,handleRelativeAnchor as m,getFrameTranslation as h,translate as g,getStaticParam as _,shouldUseAnimatedPath as v}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as y,CIMSymbolHelper as b,forEachSymbolLayer as x}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as C}from"./defaultCIMValues.js";import{fitVectorMarker as w}from"./fitVectorMarker.js";import{fromCIMFontStyle as T}from"./fromCIMFontStyle.js";import{OverrideHelper as E}from"./OverrideHelper.js";import{hasRichTextFormattingTags as D}from"./richTextUtils.js";import{getSDFInfo as O,getExtent as k,getSDFMetrics as A,getSDFDimensions as j}from"./SDFHelper.js";import{CIMSymbolUnits as M}from"./types.js";import{colorToArray as N,normalizeAlpha as P,getSize as F,isCIMMarkerStrokePlacement as I,hasStrokeLayer as L,getNumericValue as R,getMaxStrokeWidth as z,getTintColor as B,normalizePrimitiveOverrideProps as V,getDefaultCIMValue as H,getEnum as U,getFillColor as W,getStrokeColor as G,fromCIMFontDecoration as K,getStrokeWidth as q,fromCIMVerticalAlignment as ee,fromCIMHorizontalAlignment as te,getTextCasing as J,isValidCIMValue as ne,uncapitalize as re}from"./utils.js";import{isSupportedCallout as ie,getPointSymbolCalloutTransforms as ae,normalizePointSymbolCalloutScale as oe,normalizeLeaderLineStyle as Y,getPointSymbolCalloutFitProperties as se,normalizeBalloonCalloutStyle as ce}from"./callouts/calloutAnalysisUtils.js";import{EffectHelper as le}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as ue,randomInsidePolygonTextureSize as de}from"../../views/2d/engine/webgl/definitions.js";const X=()=>r.getLogger(`esri.symbols.cim.cimAnalyzer`);function fe(e){let t=e.markerPlacement;return t&&t.angleToLine?1:0}class pe{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,n,r){if(this._cimLayers=r??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(let t of this._primitiveOverrides){let n=t.valueExpressionInfo;if(n)this._setPoMap(t.primitiveName,t.propertyName,n);else if(t.value!=null){let n=t.value;t.propertyName.includes(`Color`)&&(e(n)&&(n=N(n)),n=P(n)),this._setPoMap(t.primitiveName,t.propertyName,n)}}}return this._analyzeSymbol(t.symbol,n),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){let n=e?.symbolLayers;if(!n)return;for(let e=0;e<n.length;e++){let t=n[e];t.type===`CIMVectorMarker`&&(n[e]=w(t))}let r=e.effects,i=0,a=F(e)??0;e.type===`CIMPointSymbol`&&e.angleAlignment===`Map`&&(i=1);let o={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};o=u(o),o=d(this._poMap,e,o);let s=null;e.type===`CIMPointSymbol`&&(s=this._analyzePointSymbolHalo(e,i,a,r,o),this._analyzeCallout(e,null,[],o,a,i,t));let c=s?n.filter(e=>e!==s):n;if(Ce(c,r))return this._analyzeCompositeOutlineFill(c,r,a);this._analyzeSymbolLayer(s?{...e,symbolLayers:c}:e,null,[],o,a,i,t)}_analyzeSymbolLayer(e,t,n,r,i,a,o){let s=e?.symbolLayers;if(!s)return;let c=e.type===`CIMPolygonSymbol`,l=e.effects,u=s.length;for(;u--;){let d=s[u];if(!d||d.enable===!1)continue;let f;l?.length&&(f=[...l]);let p=d.effects;p?.length&&(l?f.push(...p):f=[...p]);let m=t?[...t]:null;if(f){m??=[];for(let e of f){let t=E.findEffectOverrides(e,this._primitiveOverrides);t&&m.push(t)}}E.findApplicableOverrides(d,this._primitiveOverrides,[]);let h=this._cimLayers.length;switch(d.type){case`CIMSolidFill`:this._analyzeSolidFill(d,m,r,L(s));break;case`CIMPictureFill`:this._analyzePictureFill(d,m,r);break;case`CIMHatchFill`:this._analyzeHatchFill(d,m,r);break;case`CIMGradientFill`:this._analyzeGradientFill(d,m);break;case`CIMSolidStroke`:this._analyzeSolidStroke(d,m,c,i,r);break;case`CIMPictureStroke`:this._analyzePictureStroke(d,m,c,i,r);break;case`CIMGradientStroke`:this._analyzeGradientStroke(d,m,c,i);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:{(e.type===`CIMLineSymbol`||e.type===`CIMPolygonSymbol`)&&(a=fe(d));let t=[],s=d.primitiveName;s&&t.push(s);let l=c&&I(d.markerPlacement);this._analyzeMarker(d,m,null,t,a,i,o,n,r,!1,l);break}default:X().error(`Cannot analyze CIM layer`,d.type)}if(m?.some(({effect:e})=>Z(e)))for(let e=h;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,r,i,o){let{haloSymbol:s}=e,c=R(e.haloSize,0);if(c<=0||!s?.symbolLayers)return null;let u=s.symbolLayers.filter(e=>e.enable!==!1),f=u[0];if(!f)return null;let p=u.length===1&&f.type===`CIMSolidFill`;if(e.symbolLayers?.some(e=>l(e))===!0||l(s))return X().warnOnce(`CIM point symbol halos do not support independently animated symbol components`),null;let m=i?.map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null);if(m?.some(({effect:e})=>Z(e))){if(!p)return X().warnOnce(`Complex CIM point symbol halos are not supported with geometry-changing effects`),null;let t=e.symbolLayers?.filter(e=>e.enable!==!1)??[];if(!xe(t,m))return X().warnOnce(`CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and an unambiguous solid-fill effect chain`),null;let n=t.find(e=>e.type===`CIMSolidFill`);if(!n)return null;let i=[...m,...(n.effects??[]).map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],a=z(t),o=this._getValueOrOverrideExpression(f.type,f.primitiveName,`Color`,P(f.color));return this._cimLayers.push({type:`outlineFill`,name:n.name,colorLocked:!!n.colorLocked,color:this._getValueOrOverrideExpression(n.type,n.primitiveName,`Color`,P(n.color)),effects:i,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth:c+a,cap:`Round`,join:`Round`,referenceWidth:r,pixelBufferSize:c+a,outlineEffects:i}),n}let h=e.symbolLayers?.filter(e=>e.enable!==!1)??[],g=h.length===1&&h[0].type===`CIMVectorMarker`?h[0]:null,_=n(e);if(_.effects=void 0,_.angle=0,_.scaleX=1,g){let e=_.symbolLayers?.find(e=>e.type===`CIMVectorMarker`&&e.enable!==!1);e&&(e.rotation=0,e.offsetX=0,e.offsetY=0)}let v={..._,haloSize:0,haloSymbol:void 0},x=y.getPointSymbolHaloPadding(e,this._resourceManager),[S,C,w]=b.getTextureAnchor(v,this._resourceManager,ue,x),T=a(w),D=[];E.findApplicableOverrides(_,this._primitiveOverrides,D);let k=g?D.filter(e=>e.primitiveName!==g.primitiveName||![`Rotation`,`OffsetX`,`OffsetY`].includes(e.propertyName)):D,A=g?[{offsetX:this._getValueOrOverrideExpression(g.type,g.primitiveName,`OffsetX`,R(g.offsetX)),offsetY:this._getValueOrOverrideExpression(g.type,g.primitiveName,`OffsetY`,R(g.offsetY)),rotation:this._getValueOrOverrideExpression(g.type,g.primitiveName,`Rotation`,R(g.rotation)),size:T,frameHeight:T,rotateClockWise:!!g.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:!1}]:[],j=$(p?d(this._poMap,f,o):o),M,N;if(j){let e=b.getEnvelope(v,null,this._resourceManager);e&&(M=[e.width,e.height],N=[e.width+2*x,e.height+2*x])}return this._cimLayers.push({type:`marker`,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:{type:`cim-point-symbol-halo`,symbol:_,sdf:!j&&p&&O(v)!=null},overrides:k},colorLocked:!0,color:p?this._getValueOrOverrideExpression(f.type,f.primitiveName,`Color`,P(f.color)):[255,255,255,1],effects:m??null,effectsChangeGeometryType:m?.some(({effect:e})=>Z(e)),scaleSymbolsProportionally:!1,alignment:t,anchorPoint:{x:S,y:C},isAbsoluteAnchorPoint:!1,size:T,scaleX:R(e.scaleX,1),rotation:g?0:R(e.angle,0),offsetX:0,offsetY:0,outlineColor:[0,0,0,0],outlineWidth:0,transform:{type:`cim-marker-transform-param`,params:A},frameHeight:T,widthRatio:1,rotateClockwise:!1,referenceSize:r||T,sizeRatio:1,markerPlacement:null,isOutline:!1,animationParams:j,baseSize:r||T,pixelDimensions:M,texelDimensions:N}),null}_analyzeSolidFill(e,t,n,r){let{primitiveName:i,type:a}=e,o=P(e.color),s=d(this._poMap,e,n);if(!r&&t?.some(e=>e.effect.type===`CIMGeometricEffectTaperedPolygon`)){let n=this._getValueOrOverrideExpression(a,i,`Color`,o);this._cimLayers.push({type:`outlineFill`,name:e.name,colorLocked:!!e.colorLocked,color:n,effects:t,outlineColor:n,outlineColorLocked:!!e.colorLocked,...S,outlineEffects:t});return}this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,i,`Color`,o),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:$(s)})}_analyzePictureFill(e,t,n){let{primitiveName:r,type:i}=e,a=B(e),o=R(e.height,C.CIMPictureFill.height),s=R(e.scaleX,1);if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height),s/=o/t*n}let c={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(r,i)},l=d(this._poMap,e,n);this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(i,r,`TintColor`,a),height:this._getValueOrOverrideExpression(i,r,`Height`,o),scaleX:this._getValueOrOverrideExpression(i,r,`ScaleX`,s),angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:$(l)})}_analyzeHatchFill(e,t,n){let{primitiveName:r,type:i}=e,a=d(this._poMap,e,n),o=this._analyzeMaterialOverrides(r,[`Rotation`,`OffsetX`,`OffsetY`]),s=V(o),c=[255,255,255,1],l=!1;if(e.lineSymbol?.symbolLayers)for(let t of e.lineSymbol.symbolLayers){if(t.type!==`CIMSolidStroke`)continue;let e=t.primitiveName??r;!l&&e&&!t.colorLocked&&(this._poMap[e]?.Color!=null||this._poMap[e]?.StrokeColor!=null)&&(c=P(t.color),c=this._maybeGetValueOrOverrideExpression(e,`StrokeColor`)??this._getValueOrOverrideExpression(i,e,`Color`,c),l=!0);let n=this._maybeGetValueOrOverrideExpression(e,`StrokeWidth`);if(n){let t=null,r=null;typeof n==`number`?t=n:r=n.valueExpressionInfo;let a=s.find(e=>e.propertyName===`strokeWidth`);a?a.propertyName=`width`:(a={type:`CIMPrimitiveOverride`,primitiveName:e,propertyName:`width`,valueExpressionInfo:r,value:t,defaultValue:H(i,`width`)},s.push(a))}}let u={type:`sprite-rasterization-param`,resource:e,overrides:s};this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:u,colorLocked:!!e.colorLocked,effects:t,color:c,height:this._getValueOrOverrideExpression(i,r,`Separation`,R(e.separation,C.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!l,animationParams:$(a)})}_analyzeGradientFill(e,t){let{angle:n,gradientMethod:r,gradientSize:i,gradientSizeUnits:a,gradientType:o,interval:s,primitiveName:c,type:l}=e,u=C.CIMGradientFill,d=e.colorRamp;this._cimLayers.push({type:`gradientFill`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(c,l)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(l,c,`GradientMethod`,r??`Linear`),angle:this._getValueOrOverrideExpression(l,c,`Angle`,R(n,u.angle)),gradientType:this._getValueOrOverrideExpression(l,c,`GradientType`,o??u.gradientType),interval:this._getValueOrOverrideExpression(l,c,`Interval`,R(s,d.type===`CIMFixedColorRamp`?d.colors.length:u.interval)),gradientSize:this._getValueOrOverrideExpression(l,c,`GradientSize`,R(i,u.gradientSize)),gradientSizeUnits:a===`Absolute`?M.Absolute:a===`Relative`?M.Relative:u.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,n,r=[]){let i=e.find(e=>e.type===`CIMSolidFill`),a=e.find(e=>e.type===`CIMSolidStroke`);if(i==null||a==null)return;let o=[...r,...[...t??[],...i.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],s=[...r,...[...t??[],...a.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],c=R(a.width,C.CIMSolidStroke.width),l=U(a.capStyle,C.CIMSolidStroke.capstyle),u=U(a.joinStyle,C.CIMSolidStroke.joinstyle),d=a.miterLimit;this._cimLayers.push({type:`outlineFill`,name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,`Color`,P(i.color)),effects:o,effectsChangeGeometryType:o.some(({effect:e})=>Z(e))||s.some(({effect:e})=>Z(e)),outlineColorLocked:!!a.colorLocked,outlineColor:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Color`,P(a.color)),outlineWidth:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Width`,c),cap:this._getValueOrOverrideExpression(a.type,a.primitiveName,`CapStyle`,l),join:this._getValueOrOverrideExpression(a.type,a.primitiveName,`JoinStyle`,u),miterLimit:d&&this._getValueOrOverrideExpression(a.type,a.primitiveName,`MiterLimit`,d),referenceWidth:n,outlineEffects:s})}_analyzeSolidStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=P(e.color),c=R(e.width,C.CIMSolidStroke.width),l=U(e.capStyle,C.CIMSolidStroke.capstyle),u=U(e.joinStyle,C.CIMSolidStroke.joinstyle),f=e.miterLimit,p=this._analyzePrimitiveOverrides(a,t,null,null),m=[];p&&(m=this._getPrimitiveMaterialOverrides(a,o));let h,g,_,v;if(t&&Array.isArray(t)&&t.length>0){let e=t[t.length-1].effect;e&&e.type===`CIMGeometricEffectDashes`&&e.lineDashEnding===`NoConstraint`&&(h=e.dashTemplate,g=e.scaleDash,_=e.offsetAlongLine,v=e.primitiveName,t=[...t],t.pop())}v!=null&&m.push(...this._getPrimitiveMaterialOverrides(v,o).filter(e=>e.propertyName===`dashTemplate`));let y=h===void 0?null:{type:`sprite-rasterization-param`,resource:{type:`dash`,dashTemplate:h,primitiveName:v},overrides:m},b=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:y,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`Color`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(v,`DashTemplate`)??h,offsetAlongLine:this._getValueOrOverrideExpression(o,v,`OffsetAlongLine`,_??0),scaleDash:g,sampleAlphaOnly:!0,animationParams:$(b)})}_analyzePictureStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=B(e),c=R(e.width,C.CIMPictureStroke.width),l=U(e.capStyle,C.CIMPictureStroke.capstyle),u=U(e.joinStyle,C.CIMPictureStroke.joinstyle),f=e.miterLimit,p={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(a,o)},m=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:p,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`TintColor`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:$(m)})}_analyzeGradientStroke(e,t,n,r){let{gradientMethod:i,gradientSize:a,gradientSizeUnits:o,gradientType:s,interval:c,primitiveName:l,type:u}=e,d=C.CIMGradientStroke,f=R(e.width,d.width),p=U(e.capStyle,d.capstyle),m=U(e.joinStyle,d.joinstyle),h=e.miterLimit,g=e.colorRamp;this._cimLayers.push({type:`gradientStroke`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(l,u)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(u,l,`Width`,f),cap:this._getValueOrOverrideExpression(u,l,`CapStyle`,p),join:this._getValueOrOverrideExpression(u,l,`JoinStyle`,m),miterLimit:h&&this._getValueOrOverrideExpression(u,l,`MiterLimit`,h),referenceWidth:r,isOutline:n,gradientMethod:this._getValueOrOverrideExpression(u,l,`GradientMethod`,i??d.gradientMethod),gradientType:this._getValueOrOverrideExpression(u,l,`GradientType`,s??d.gradientType),interval:this._getValueOrOverrideExpression(u,l,`Interval`,R(c,g.type===`CIMFixedColorRamp`?g.colors.length:d.interval)),gradientSize:this._getValueOrOverrideExpression(u,l,`GradientSize`,R(a,d.gradientSize)),gradientSizeUnits:o===`Absolute`?M.Absolute:o===`Relative`?M.Relative:d.gradientSizeUnits})}_analyzeMarker(e,t,n,r,i,a,o,s,c,l=!1,u=!1){l||=!!e.colorLocked;let h=c;if(h=f(e,h),h=p(this._poMap,e,h),h=m(e,h),h=d(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,l,h))return;let g=R(e.size,C.CIMVectorMarker.size),_=R(e.rotation),v=R(e.offsetX),y=R(e.offsetY),{primitiveName:b,type:x}=e,S=this._getValueOrOverrideExpression(x,b,`Size`,g),w=this._getValueOrOverrideExpression(x,b,`Rotation`,_),T=this._getValueOrOverrideExpression(x,b,`OffsetX`,v),E=this._getValueOrOverrideExpression(x,b,`OffsetY`,y),D=this._cimLayers.length;switch(e.type){case`CIMPictureMarker`:this._analyzePictureMarker(e,t,n,r,i,a,S,w,T,E,s,h,l,u);break;case`CIMVectorMarker`:this._analyzeVectorMarker(e,t,n,r,i,a,S,w,T,E,s,h,o,l,u)}if(e.name)for(let t=D;t<this._cimLayers.length;t++){let n=this._cimLayers[t];n.name??=e.name;let r=n.groupNames??=[];r[r.length-1]!==e.name&&r.push(e.name)}}_analyzeMarkerInsidePolygon(e,t,n,r){let{markerPlacement:i,type:o}=e;if(!i||i.type!==`CIMMarkerPlacementInsidePolygon`||r.hasMotionAnimations)return!1;if(o===`CIMVectorMarker`||o===`CIMPictureMarker`){let n=e.primitiveName;if(n&&this._analyzePrimitiveOverrides([n],t,null,null))return!1;let r=i.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;if(o===`CIMVectorMarker`){let{markerGraphics:t}=e;if(t)for(let e of t){let{symbol:t}=e;if(t?.type===`CIMPolygonSymbol`&&t.symbolLayers){let{symbolLayers:e}=t;for(let t of e)if(t.type===`CIMSolidStroke`)return!1}}}else{let{animatedSymbolProperties:t}=e;if(t)return!1}}let s=Math.abs(i.stepX),c=Math.abs(i.stepY);if(s===0||c===0)return!0;let l,u;if(i.gridType===`Random`){let e=a(de),t=Math.max(Math.floor(e/s),1);l=c*Math.max(Math.floor(e/c),1),u=t*s/l}else i.shiftOddRows?(l=c*2,u=s/c*.5):(l=c,u=s/c);let d=B(e),f=e.type===`CIMCharacterMarker`?null:{type:`sprite-rasterization-param`,resource:{...e,effects:e.effects?.filter(e=>!ye(e))},overrides:[]};return this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:f,colorLocked:n,effects:t,color:d,height:l,scaleX:u,angle:i.gridAngle??0,offsetX:R(i.offsetX),offsetY:R(i.offsetY),applyRandomOffset:i.gridType===`Random`,sampleAlphaOnly:e.type!==`CIMPictureMarker`,hasUnresolvedReplacementColor:!0,animationParams:$(r)}),!0}_analyzePictureMarker(e,t,r,i,a,s,c,l,u,d,f,p,m,h){let{animatedSymbolProperties:g,primitiveName:_,type:v}=e,y=R(e.scaleX,1),b=B(e);r||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);let x=this._createGIFAnimatedSymbolPropertiesOverrideExpression(g),S=e.anchorPoint??{x:0,y:0};if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height);let i=R(e.size);y/=i/t*n}let C=[...i];e.primitiveName&&C.push(e.primitiveName);let w;g||x?w={type:`animated`,url:e.url,urlHash:`H`+o(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(w=n(e),w.markerPlacement=null);let T={type:`sprite-rasterization-param`,resource:w,overrides:this._getMaterialOverrides(C,v)};x&&T.overrides.push(...x.overrides);let E=c;this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:T,colorLocked:m,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:c,scaleX:this._getValueOrOverrideExpression(v,_,`ScaleX`,y),rotation:l,offsetX:u,offsetY:d,transform:{type:`cim-marker-transform-param`,params:f},color:this._getValueOrOverrideExpression(v,_,`TintColor`,b),anchorPoint:{x:S.x,y:S.y},isAbsoluteAnchorPoint:e.anchorPointUnits!==`Relative`,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:1,isOutline:h,markerPlacement:r,animationParams:$(p),baseSize:E})}_analyzeVectorMarker(e,t,n,r,i,a,o,l,u,d,f,p,m,v,y){let b=e.markerGraphics;if(!b)return;let x=e.frame,S=0;S=x?x.ymax-x.ymin:a;let C=!!e.scaleSymbolsProportionally;if(S){let t={offsetX:u,offsetY:d,rotation:l,size:o,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:C};f=[...f,t]}n||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);for(let o of b)if(o){let l=o.symbol;if(!l)continue;let u=o.primitiveName;u&&r.push(u);let d=p,b;if((l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&x){let t=0,n=0,r=o.geometry;`x`in r&&`y`in r&&(t+=r.x-(x.xmin+x.xmax)*.5,n+=r.y-(x.ymin+x.ymax)*.5);let i=e.anchorPoint,a=!1;i&&(e.anchorPointUnits===`Absolute`?(t-=i.x,n-=i.y,a=!0):x&&(t-=(x.xmax-x.xmin)*i.x,n-=(x.ymax-x.ymin)*i.y));let s={offsetX:t,offsetY:n,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:C};b=[...f,s]}(l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&this._analyzeCallout(l,t,b??f,d,a,i,m);let w=s(o.geometry)?{...o,geometry:c(o.geometry,{maxDeviation:.01})}:o,T=w.geometry,[E,D]=h(T,x);switch((E!==0||D!==0)&&(d=g(d,E,D)),l.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:m||ve(l)?(d={...d,transform:{type:`AnimatedTransform`,relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:_([0,0]),rotation:_(0),scale:_(S),parent:p.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,n,w,r,i,a,b??f,d,S,v,y)):this._analyzeMultiLayerGraphic(e,t,n,w,r,i,a,b??f,d,S,v,y);break;case`CIMTextSymbol`:this._analyzeTextGraphic(t,n,w,r,i,a,b??f,v)}u&&r.pop()}}_analyzeCallout(e,t,n,r,i,a,o){let s=e.callout;if(!s||!ie(s))return;let c=t??[],{leaderTolerance:l,leaderOffset:u}=s;switch(s.type){case`CIMSimpleLineCallout`:{let{lineSymbol:e,autoSnap:t}=s,d={type:`CIMSimpleLineCallout`,leaderTolerance:l,leaderOffset:u,autoSnap:t,inflateSize:500};this._analyzeSymbolLayer(e,[...c,{type:`cim-effect-param`,effect:d,overrides:[]}],n,r,i,a,o);break}case`CIMBackgroundCallout`:{let{accentBarSymbol:e,gap:t,backgroundSymbol:d,leaderLineSymbol:f,lineStyle:p,margin:m}=s,h=n=>({type:`CIMBackgroundCallout`,leaderTolerance:l,leaderOffset:u,lineStyle:Y(p),gap:t,hasAccentBar:!!e,margin:m,inflateSize:500,part:n}),g=[...c,{type:`cim-effect-param`,effect:h(`background`),overrides:[]}];if(f&&this._analyzeSymbolLayer(f,[...c,{type:`cim-effect-param`,effect:h(`leader`),overrides:[]}],n,r,i,a,o),d){let e=d.symbolLayers??[];Q(e)?this._analyzeCompositeOutlineFill(e,null,i,g):this._analyzeSymbolLayer(d,g,n,r,i,a,o)}e&&this._analyzeSymbolLayer(e,[...c,{type:`cim-effect-param`,effect:h(`accent-bar`),overrides:[]}],n,r,i,a,o);break}case`CIMBalloonCallout`:{let{balloonStyle:e,backgroundSymbol:t,dartSymbol:d,fixedDartWidth:f,margin:p,useDartSymbol:m,useFixedDartWidth:h}=s,g=m===!0&&d!=null,_=t=>({type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:p,balloonStyle:ce(e),dartWidth:h?f:void 0,inflateSize:500,part:t,separateDart:g}),v=(e,t)=>{let s=[...c,{type:`cim-effect-param`,effect:_(t),overrides:[]}],l=e.symbolLayers??[];Q(l)?this._analyzeCompositeOutlineFill(l,null,i,s):this._analyzeSymbolLayer(e,s,n,r,i,a,o)};g&&v(d,`dart`),v(t,`background`);break}case`CIMPointSymbolCallout`:{let{backgroundScale:e,gap:t,leaderLineSymbol:d,lineStyle:f,pointSymbol:p}=s,m=oe(e),h=ae(p,n),g=e=>({type:`CIMPointSymbolCallout`,leaderTolerance:l,leaderOffset:u,backgroundScale:m,...se(p,e),lineStyle:Y(f),gap:t,inflateSize:500,part:e});d&&this._analyzeSymbolLayer(d,[...c,{type:`cim-effect-param`,effect:g(`leader`),overrides:[]}],n,r,i,a,o),this._analyzeSymbolLayer(p,[...c,{type:`cim-effect-param`,effect:g(`marker`),overrides:[]}],h,r,i,a,o||m!==0);break}case`CIMCompositeCallout`:{let{backgroundSymbol:e,margin:t,shadowSymbol:d}=s,f={type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:t,balloonStyle:1,inflateSize:500,part:`background`},p=[...c,{type:`cim-effect-param`,effect:f,overrides:[]}],m=e=>{let t=e.symbolLayers??[];Q(t)?this._analyzeCompositeOutlineFill(t,null,i,p):this._analyzeSymbolLayer(e,p,n,r,i,a,o)};d&&m(d),m(e);break}}}_analyzeMultiLayerGraphic(e,t,n,r,i,a,o,s,c,l,u,d){let f=r.symbol,p=f.symbolLayers;if(p){if(_e(p)&&!v(c)){this._analyzeCompositeMarkerGraphic(e,t,n,r,p,a,o,s,l,u,d);return}if(Se(p)){x(f,e=>{e.colorLocked&&(u=!0)}),this._analyzeMultiLayerGraphicNonSDF(e,t,n,r,i,a,o,s,c,l,u,d);return}this._analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,d)}}_analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,f){let p=r.symbol,m=p.symbolLayers;if(!m)return;let h=le.applyEffects(p.effects,r.geometry);if(!h)return;let g=m.length;for(;g--;){let p=m[g];if(!p||p.enable===!1)continue;let _=p.primitiveName;switch(_&&i.push(_),p.type){case`CIMSolidFill`:case`CIMSolidStroke`:{let i=le.applyEffects(p.effects,h),m=k(i);if(!m)continue;let g=e.anchorPointUnits!==`Relative`,v=p.type===`CIMSolidStroke`?p.width:0,{frameSizeRatio:y,anchorX:b,anchorY:x,widthRatio:S,sdfPaddingRatio:w,sdfTextureSize:T}=A(m,e.frame,e.size,e.anchorPoint,g,v,e.scaleSymbolsProportionally),E=p.type===`CIMSolidFill`,D={type:`sdf`,geometry:i,sdfPaddingRatio:w,asFill:E,sdfTextureSize:T},{path:O}=p,M=E?P(W(p)):O==null?P(G(p)):[0,0,0,0],N=E?[0,0,0,0]:P(G(p));if(!E&&!v)break;let F=r.primitiveName,I=null;E&&!p.colorLocked&&(I=this._maybeGetValueOrOverrideExpression(F,`FillColor`));let L=null;!E&&!p.colorLocked&&(L=this._maybeGetValueOrOverrideExpression(F,`StrokeColor`));let z=I??this._getValueOrOverrideExpression(p.type,_,`Color`,M),B=L??this._getValueOrOverrideExpression(p.type,_,`Color`,N),V=this._maybeGetValueOrOverrideExpression(F,`StrokeWidth`)??this._getValueOrOverrideExpression(p.type,_,`Width`,v),H=O?{type:`sprite-rasterization-param`,resource:{type:`path`,path:O,asFill:E},overrides:[]}:{type:`sprite-rasterization-param`,resource:D,overrides:[]},U=d(this._poMap,p,c),K=R(e.size,C.CIMVectorMarker.size),q=this._getValueOrOverrideExpression(e.type,e.primitiveName,`Size`,K);this._cimLayers.push({type:`marker`,name:p.name,groupNames:e.name?[e.name]:void 0,spriteRasterizationParam:H,colorLocked:!!p.colorLocked||!!u,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:b,y:x},isAbsoluteAnchorPoint:g,size:l,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:l,widthRatio:S,rotateClockwise:!1,referenceSize:o,sizeRatio:y,color:z,outlineColor:B,outlineWidth:V,isOutline:f,markerPlacement:n,animationParams:$(U),isStroke:p.type!==`CIMSolidFill`,baseSize:q,...j(i,T,w)});break}case`CIMPictureMarker`:case`CIMVectorMarker`:if(p.markerPlacement){X().error(`Error analyzing CIM, got unexpected marker placement`);break}this._analyzeMarker(p,t,n,i,a,o,!1,s,c,u,f)}_&&i.pop()}}_analyzeTextGraphic(e,n,r,i,a,o,s,c){E.findApplicableOverrides(r,this._primitiveOverrides,[]);let l=r.geometry;if(!(`x`in l)||!(`y`in l))return;let u=r.symbol,d=K(u),f=T(u.fontStyleName),p=t(u.fontFamilyName);u.font={family:p,decoration:d,...f};let m=R(u.height,C.CIMTextSymbol.height),h=R(u.angle),g=R(u.offsetX),_=R(u.offsetY),{haloSymbol:v}=u,y=R(u.haloSize,0),b=[0,0,0,0];if(v?.symbolLayers?.length){let e=v.symbolLayers;for(let t of e)if(t.color){b=this._getValueOrOverrideExpression(u?.haloSymbol?.type??`CIMPolygonSymbol`,t.primitiveName,`Color`,P(t.color));break}}let x=r.primitiveName,S=[0,0,0,1],w=[0,0,0,0],O=0,k=!1;if(u.symbol?.symbolLayers)for(let e of u.symbol.symbolLayers){let t=e.primitiveName;if(e.type===`CIMSolidStroke`)w=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Color`,P(e.color)),O=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Width`,q(e)??0);else if(e.type===`CIMSolidFill`){let n=P(e.color);k??=!!e.colorLocked,S=this._getValueOrOverrideExpression(`CIMSolidFill`,t??x,`Color`,n)}}let A=null,j=null,M=null,N=null,F=null;x&&(A=this._maybeGetValueOrOverrideExpression(x,`TextSize`),j=this._maybeGetValueOrOverrideExpression(x,`TextAngle`),M=this._maybeGetValueOrOverrideExpression(x,`TextOffsetX`),N=this._maybeGetValueOrOverrideExpression(x,`TextOffsetY`),k||(F=this._maybeGetValueOrOverrideExpression(x,`FillColor`)));let I=F??S,L=null,z=null,B=0,V=u.callout?.type===`CIMBackgroundCallout`;if(u.callout?.type===`CIMBackgroundCallout`){let e=u.callout;if(e.backgroundSymbol){let t=e.backgroundSymbol.symbolLayers;if(t)for(let e of t)e.type===`CIMSolidFill`?L=P(e.color):e.type===`CIMSolidStroke`&&(z=P(e.color),B=R(e.width,C.CIMSolidStroke.width))}}let H=this._getValueOrOverrideExpression(u.type,r.primitiveName,`TextString`,r.textString??``);if(H==null)return;let{fontStyleName:U}=u,W=p+(U?`-`+U.toLowerCase():`-regular`),G=this._getMaterialOverrides(i,u.type);G.push(...this._getPrimitiveMaterialOverrides(r.primitiveName,u.type)),this._collectDictionaryTemplateOverrides(G,r);let J={type:`text-rasterization-param`,resource:{type:`text`,textString:r.textString??``,font:u.font,symbol:u,primitiveName:r.primitiveName,supportsRichText:D(r.textString??``)||G.some(e=>e.propertyName===`textString`)},overrides:G};this._cimLayers.push({type:`text`,lineWidth:u.lineWidth,textRasterizationParam:J,colorLocked:!!c||!!k,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:W,decoration:d,haloSize:y,haloColor:b,weight:f.weight,style:f.style,size:A??m,angle:j??h,offsetX:M??g,offsetY:N??_,transform:{type:`cim-marker-transform-param`,params:s},horizontalAlignment:te(u.horizontalAlignment),verticalAlignment:ee(u.verticalAlignment),text:H,color:I,outlineColor:w,outlineSize:O,backgroundColor:L,borderLineColor:z,borderLineWidth:B,useBackgroundCallout:V,referenceSize:o,sizeRatio:1,markerPlacement:n})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){let n=J(t.symbol);e.push({propertyName:`textString`,defaultValue:``,valueExpressionInfo:{type:`dictionary-template`,textCase:n,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,n,r,a,o,s,c,l,u,d,f){let p=me(e,r),m=e.primitiveName,h=this._analyzeMaterialOverrides(m,[`Rotation`,`OffsetX`,`OffsetY`]),g=V(h),[_,v,y]=b.getTextureAnchor(p,this._resourceManager,ue),x=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==m||![`rotation`,`offsetX`,`offsetY`].includes(e.propertyName));x.push(...g);let S={type:`sprite-rasterization-param`,resource:{...p,avoidSDFRasterization:!0},overrides:x},w=R(e.size,C.CIMVectorMarker.size),T=this._getValueOrOverrideExpression(e.type,m,`Size`,w);this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:S,colorLocked:d,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:o,anchorPoint:{x:_,y:v},isAbsoluteAnchorPoint:!1,size:u,rotation:0,offsetX:0,offsetY:0,transform:{type:`cim-marker-transform-param`,params:c},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:u,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:y/i(e.size),isOutline:f,markerPlacement:n,animationParams:$(l),baseSize:T})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-marker-placement-param`,placement:e,overrides:we(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-gif-animation-params`,animation:e,overrides:we(t)}}_analyzeCompositeMarkerGraphic(e,t,n,r,i,a,o,s,c,l,u){let d=r.geometry,f=i[0],p=i[1],m=k(d);if(!m)return;let h=e.anchorPointUnits!==`Relative`,g=R(f.width,C.CIMSolidStroke.width),{frameSizeRatio:_,anchorX:v,anchorY:y,widthRatio:b,sdfPaddingRatio:x,sdfTextureSize:S}=A(m,e.frame,e.size,e.anchorPoint,h,g,e.scaleSymbolsProportionally),{path:w}=p,T=p.primitiveName,E=f.primitiveName,D=r.primitiveName,O=null;!p.colorLocked&&!l&&(O=this._maybeGetValueOrOverrideExpression(D,`FillColor`));let j=O??this._getValueOrOverrideExpression(p.type,T,`Color`,P(p.color)),M=null;!f.colorLocked&&!l&&(M=this._maybeGetValueOrOverrideExpression(D,`StrokeColor`));let N=M??this._getValueOrOverrideExpression(f.type,E,`Color`,P(f.color)),F=this._maybeGetValueOrOverrideExpression(D,`StrokeWidth`)??this._getValueOrOverrideExpression(f.type,E,`Width`,g),I={type:`sprite-rasterization-param`,resource:w?{type:`path`,path:w,asFill:!0}:{type:`sdf`,geometry:d,sdfTextureSize:S,sdfPaddingRatio:x,asFill:!0},overrides:[]};this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:I,colorLocked:l,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:v,y},isAbsoluteAnchorPoint:h,size:c,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:c,widthRatio:b,rotateClockwise:!1,referenceSize:o,sizeRatio:_,color:j,outlineColor:N,outlineWidth:F,isOutline:u,markerPlacement:n})}_setPoMap(e,t,n){let r;this._poMap[e]?r=this._poMap[e]:(r={},this._poMap[e]=r),r[t]=n}_maybeGetValueOrOverrideExpression(e,t,n){return this._getValueOrOverrideExpression(``,e,t,n,!1)}_getValueOrOverrideExpression(e,t,n,r,i=!0){if(i&&!ne(r)&&(r=H(e,n.toLowerCase())),t==null)return r;let a=this._poMap[t];if(a==null)return r;let o=a[n];return typeof o==`string`||typeof o==`number`||Array.isArray(o)?o:o?{valueExpressionInfo:o,defaultValue:r}:r}_analyzePrimitiveOverrides(e,t,n,r){if(e==null)return!1;typeof e==`string`&&(e=[e]);for(let t of this._primitiveOverrides)if(e.includes(t.primitiveName)&&t.valueExpressionInfo)return!0;if(t!=null){for(let e of t)if(e?.overrides.length>0)return!0}if(n!=null){for(let e of n)if(e?.overrides.length>0)return!0}if(r!=null){for(let e of r)if(e?.overrides.length>0)return!0}return!1}_getMaterialOverrides(e,t){if(!e)return[];let n=[];for(let r of e)n.push(...this._getPrimitiveMaterialOverrides(r,t));return n}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];let n=V(this._primitiveOverrides.filter(t=>t.primitiveName===e));return n.forEach(e=>e.defaultValue=H(t,e.propertyName.toLowerCase())),n}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(n=>n.primitiveName!==e||!t.includes(n.propertyName))}}function me(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[{...t}],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function he(e){if(e?.startsWith(`Level_`)){let t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ge(e,t){if(!t||t.length===0)return e;let r=n(e);return E.applyOverrides(r,t),r}const _e=e=>e&&e.length===2&&e[0].enable&&e[1].enable&&e[0].type===`CIMSolidStroke`&&e[1].type===`CIMSolidFill`&&e[0].path==null&&e[1].path==null&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function ve(e){let t=e.symbolLayers;if(!t)return!1;let n=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectDashes`&&e.dashTemplate!=null)),r=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectAddControlPoints`));return!!n||!!r}function ye(e){return Z(e)}function Z(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectRadial`||e.type===`CIMGeometricEffectTaperedPolygon`||e.type===`PrivateDimensionEffect`||e.type===`PrivateMatcherGeometryOverrideEffect`}function be(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectTaperedPolygon`}function xe(e,t){let n=e.filter(e=>e.type===`CIMSolidFill`),r=e.every(e=>e.type===`CIMSolidFill`||e.type===`CIMSolidStroke`),i=e.filter(e=>e.effects?.length),a=i.length===0||i.length===1&&n.length===1&&i[0]===n[0];return n.length>0&&r&&a&&t.some(({effect:e})=>be(e))}function Se(e){return e.some(e=>e.type!==`CIMSolidFill`&&e.type!==`CIMSolidStroke`&&(e.type!==`CIMVectorMarker`&&e.type!==`CIMPictureMarker`||e.markerPlacement!=null))}function Ce(e,t){return!!(t?.some(e=>e.type===`CIMGeometricEffectRadial`)&&t?.some(e=>e.type===`CIMGeometricEffectTaperedPolygon`)||t?.some(e=>e.type===`CIMGeometricEffectCircularSector`))&&Q(e)}function Q(e){if(e?.length!==2)return!1;let t=e.find(e=>e.type===`CIMSolidFill`),n=e.find(e=>e.type===`CIMSolidStroke`),r=n?.effects?.some(e=>e.type===`CIMGeometricEffectDashes`);return t!=null&&n!=null&&!r}function we(e){return n(e).map(e=>({...e,propertyName:re(e.propertyName)}))}function $(e){return v(e)?{type:`animation-params`,params:e}:null}export{pe as CIMAnalyzer,ge as analyzeCIMResource};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{removeMaybe as e,abortMaybe as t}from"../../../../core/maybe.js";import{throwIfNotAbortError as n,throwIfAbortError as r,isAbortError as i,eachAlways as a}from"../../../../core/promiseUtils.js";import{addQueryParameters as o}from"../../../../core/urlUtils.js";import{open as s}from"../../../../core/workers.js";import c from"./SpriteMosaic.js";import l from"../../tiling/TileKey.js";class u{constructor(e,t,n,r,i){this._layer=e,this._styleRepository=t,this.devicePixelRatio=n,this._sourceDataMaxLOD=r,this._glyphMosaic=i,this._spriteMosaic=null,this._connection=null,this._spriteSourceAbortController=null,this._onClientConnectedHandle=null,this.type=`TileHandler2D`,this._startOptionsInputSignal=null,this._inputSignalEventListener=null}destroy(){this._onClientConnectedHandle=e(this._onClientConnectedHandle),this._connection?.close(),this._connection=null,this._styleRepository=null,this._layer=null,this._spriteMosaic?.destroy(),this._spriteMosaic=null,this._glyphMosaic=null,this._spriteSourceAbortController=t(this._spriteSourceAbortController),this._spriteSourcePromise=null,this._inputSignalEventListener&&this._startOptionsInputSignal?.removeEventListener(`abort`,this._inputSignalEventListener),this._startOptionsInputSignal=null,this._inputSignalEventListener=null}get spriteMosaic(){return this._spriteSourcePromise.then(()=>this._spriteMosaic)}get glyphMosaic(){return this._glyphMosaic}async start(t){this._requestSprite(t),this._baseUrl=this._getBaseUrl()??``,this._onClientConnectedHandle=e(this._onClientConnectedHandle);let r=s(`WorkerTileHandler`,{client:this,schedule:t.schedule,signal:t.signal});this._broadcastPromise=r;let i=await r;if(this._connection?.close(),this._connection=i,this._onClientConnectedHandle=i.onClientConnected(e=>{this._layer&&!this._connection.closed&&(e.invoke(`initializeGlyphWorker`).catch(e=>n(e)),e.invoke(`setStyle`,{style:this._layer.currentStyleInfo.style,sourceDataMaxLOD:this._sourceDataMaxLOD}).catch(e=>n(e)))}),this._layer&&!this._connection.closed){let e=i.broadcast(`setStyle`,{style:this._layer.currentStyleInfo.style,sourceDataMaxLOD:this._sourceDataMaxLOD});Promise.all(e).catch(e=>n(e))}}async openGlyphPorts(){let e=await this._glyphMosaic.openMessagePorts();return{result:e,transferList:e}}_requestSprite(e){this._spriteSourceAbortController?.abort();let t=new AbortController;this._spriteSourceAbortController=t;let n=e?.signal;this._inputSignalEventListener&&this._startOptionsInputSignal?.removeEventListener(`abort`,this._inputSignalEventListener),this._startOptionsInputSignal=null,n&&(this._inputSignalEventListener=d(t),n.addEventListener(`abort`,this._inputSignalEventListener,{once:!0}));let{signal:i}=t,a={...e,signal:i};this._spriteSourcePromise=this._layer.loadSpriteSource(this.devicePixelRatio,a),this._spriteSourcePromise.then(e=>{r(i),this._spriteMosaic=new c(1024,1024,250),this._spriteMosaic.setSpriteSource(e)})}async updateStyle(e){let t=[];for(let n of e)n.type===4?t.push({type:4,data:{spriteSource:null}}):t.push(n);return await this._broadcastPromise,this._broadcastPromise=Promise.all(this._connection.broadcast(`updateStyle`,t)),this._broadcastPromise}setSpriteSource(e){let t=new c(1024,1024,250);return t.setSpriteSource(e),this._spriteMosaic=t,this._spriteSourcePromise=Promise.resolve(e),this._spriteSourceAbortController=null,t}async setStyle(e,t,n){return await this._broadcastPromise,this._styleRepository=e,this._sourceDataMaxLOD=n,this._requestSprite(),this._baseUrl=this._getBaseUrl()??``,this._broadcastPromise=Promise.all(this._connection.broadcast(`setStyle`,{style:t,sourceDataMaxLOD:this._sourceDataMaxLOD})),this._broadcastPromise}async fetchTileData(e,t){let n=await this._getRefKeys(e,t);return this._getSourcesData(Object.keys(this._layer.sourceNameToSource),n,t)}async fetchTilePBFs(e){let t=Object.keys(this._layer.sourceNameToSource),n={},r=await this._getRefKeys(e,n),i=[],a=[];for(let e=0;e<r.length;e++)if(r[e].value==null||t[e]==null)a.push(null);else{let o=r[e].value,s=this._getTilePayload(o,t[e],n);s.then(e=>{i.push({...e,key:o})}),a.push(s)}return Promise.all(a).then(()=>i)}async parseTileData(e,t){let n=e&&e.data;if(!n)return null;let{sourceName2DataAndRefKey:r,transferList:i}=n;return Object.keys(r).length===0?null:this._broadcastPromise.then(()=>this._connection.invoke(`createTileAndParse`,{key:e.key.id,sourceName2DataAndRefKey:r,styleLayerUIDs:e.styleLayerUIDs,baseUrl:this._baseUrl},{...t,transferList:i}))}async getSprites(e){return await this._spriteSourcePromise,this._spriteMosaic.getSpriteItems(e)}async _getTilePayload(e,t,n){let r=l.pool.acquire(e.id),a=this._layer.sourceNameToSource[t],{level:o,row:s,col:c}=r;l.pool.release(r);try{return{protobuff:await a.requestTile(o,s,c,n),sourceName:t}}catch(e){if(i(e))throw e;return{protobuff:null,sourceName:t}}}async _getRefKeys(e,t){let n=this._layer.sourceNameToSource,r=[];for(let i in n){let a=n[i].getRefKey(e,t);r.push(a)}return a(r)}_getSourcesData(e,t,n){let r=[];for(let i=0;i<t.length;i++)if(t[i].value==null||e[i]==null)r.push(null);else{let a=t[i].value,o=this._getTilePayload(a,e[i],n);r.push(o)}return a(r).then(e=>{let n={},r=[];for(let i=0;i<e.length;i++){let a=e[i].value;if(a&&a.protobuff&&a.protobuff.byteLength>0){let e=t[i].value.id;n[a.sourceName]={refKey:e,protobuff:a.protobuff},r.push(a.protobuff)}}return{sourceName2DataAndRefKey:n,transferList:r}})}_getBaseUrl(){let e=this._layer.currentStyleInfo.glyphsUrl;return e&&o(e,{...this._layer.customParameters,token:this._layer.apiKey})}}function d(e){return()=>e.abort()}export{u as TileHandler};
|
|
2
|
+
import{removeMaybe as e,abortMaybe as t}from"../../../../core/maybe.js";import{throwIfNotAbortError as n,throwIfAbortError as r,isAbortError as i,eachAlways as a}from"../../../../core/promiseUtils.js";import{addQueryParameters as o}from"../../../../core/urlUtils.js";import{open as s}from"../../../../core/workers.js";import c from"./SpriteMosaic.js";import l from"../../tiling/TileKey.js";class u{constructor(e,t,n,r,i,a){this._layer=e,this._styleRepository=t,this.devicePixelRatio=n,this._sourceDataMaxLOD=r,this._glyphMosaic=i,this._getTileInfo=a,this._spriteMosaic=null,this._connection=null,this._spriteSourceAbortController=null,this._onClientConnectedHandle=null,this.type=`TileHandler2D`,this._startOptionsInputSignal=null,this._inputSignalEventListener=null}destroy(){this._onClientConnectedHandle=e(this._onClientConnectedHandle),this._connection?.close(),this._connection=null,this._styleRepository=null,this._layer=null,this._spriteMosaic?.destroy(),this._spriteMosaic=null,this._glyphMosaic=null,this._spriteSourceAbortController=t(this._spriteSourceAbortController),this._spriteSourcePromise=null,this._inputSignalEventListener&&this._startOptionsInputSignal?.removeEventListener(`abort`,this._inputSignalEventListener),this._startOptionsInputSignal=null,this._inputSignalEventListener=null}get spriteMosaic(){return this._spriteSourcePromise.then(()=>this._spriteMosaic)}get glyphMosaic(){return this._glyphMosaic}async start(t){this._requestSprite(t),this._baseUrl=this._getBaseUrl()??``,this._onClientConnectedHandle=e(this._onClientConnectedHandle);let r=s(`WorkerTileHandler`,{client:this,schedule:t.schedule,signal:t.signal});this._broadcastPromise=r;let i=await r;if(this._connection?.close(),this._connection=i,this._onClientConnectedHandle=i.onClientConnected(e=>{this._layer&&!this._connection.closed&&(e.invoke(`initializeGlyphWorker`).catch(e=>n(e)),e.invoke(`setStyle`,{style:this._layer.currentStyleInfo.style,sourceDataMaxLOD:this._sourceDataMaxLOD}).catch(e=>n(e)))}),this._layer&&!this._connection.closed){let e=i.broadcast(`setStyle`,{style:this._layer.currentStyleInfo.style,sourceDataMaxLOD:this._sourceDataMaxLOD});Promise.all(e).catch(e=>n(e))}}async openGlyphPorts(){let e=await this._glyphMosaic.openMessagePorts();return{result:e,transferList:e}}_requestSprite(e){this._spriteSourceAbortController?.abort();let t=new AbortController;this._spriteSourceAbortController=t;let n=e?.signal;this._inputSignalEventListener&&this._startOptionsInputSignal?.removeEventListener(`abort`,this._inputSignalEventListener),this._startOptionsInputSignal=null,n&&(this._inputSignalEventListener=d(t),n.addEventListener(`abort`,this._inputSignalEventListener,{once:!0}));let{signal:i}=t,a={...e,signal:i};this._spriteSourcePromise=this._layer.loadSpriteSource(this.devicePixelRatio,a),this._spriteSourcePromise.then(e=>{r(i),this._spriteMosaic=new c(1024,1024,250),this._spriteMosaic.setSpriteSource(e)})}async updateStyle(e){let t=[];for(let n of e)n.type===4?t.push({type:4,data:{spriteSource:null}}):t.push(n);return await this._broadcastPromise,this._broadcastPromise=Promise.all(this._connection.broadcast(`updateStyle`,t)),this._broadcastPromise}setSpriteSource(e){let t=new c(1024,1024,250);return t.setSpriteSource(e),this._spriteMosaic=t,this._spriteSourcePromise=Promise.resolve(e),this._spriteSourceAbortController=null,t}async setStyle(e,t,n){return await this._broadcastPromise,this._styleRepository=e,this._sourceDataMaxLOD=n,this._requestSprite(),this._baseUrl=this._getBaseUrl()??``,this._broadcastPromise=Promise.all(this._connection.broadcast(`setStyle`,{style:t,sourceDataMaxLOD:this._sourceDataMaxLOD})),this._broadcastPromise}async fetchTileData(e,t){let n=await this._getRefKeys(e,t);return this._getSourcesData(Object.keys(this._layer.sourceNameToSource),n,t)}async fetchTilePBFs(e){let t=Object.keys(this._layer.sourceNameToSource),n={},r=await this._getRefKeys(e,n),i=[],a=[];for(let e=0;e<r.length;e++)if(r[e].value==null||t[e]==null)a.push(null);else{let o=r[e].value,s=this._getTilePayload(o,t[e],n);s.then(e=>{i.push({...e,key:o})}),a.push(s)}return Promise.all(a).then(()=>i)}async parseTileData(e,t){let n=e&&e.data;if(!n)return null;let{sourceName2DataAndRefKey:r,transferList:i}=n;return Object.keys(r).length===0?null:this._broadcastPromise.then(()=>this._connection.invoke(`createTileAndParse`,{key:e.key.id,sourceName2DataAndRefKey:r,styleLayerUIDs:e.styleLayerUIDs,baseUrl:this._baseUrl},{...t,transferList:i}))}async getSprites(e){return await this._spriteSourcePromise,this._spriteMosaic.getSpriteItems(e)}async _getTilePayload(e,t,n){let r=l.pool.acquire(e.id),a=this._layer.sourceNameToSource[t],{level:o,row:s,col:c}=r;l.pool.release(r);try{return{protobuff:await a.requestTile(o,s,c,n,this._getTileInfo?.()),sourceName:t}}catch(e){if(i(e))throw e;return{protobuff:null,sourceName:t}}}async _getRefKeys(e,t){let n=this._layer.sourceNameToSource,r=[];for(let i in n){let a=n[i].getRefKey(e,t);r.push(a)}return a(r)}_getSourcesData(e,t,n){let r=[];for(let i=0;i<t.length;i++)if(t[i].value==null||e[i]==null)r.push(null);else{let a=t[i].value,o=this._getTilePayload(a,e[i],n);r.push(o)}return a(r).then(e=>{let n={},r=[];for(let i=0;i<e.length;i++){let a=e[i].value;if(a&&a.protobuff&&a.protobuff.byteLength>0){let e=t[i].value.id;n[a.sourceName]={refKey:e,protobuff:a.protobuff},r.push(a.protobuff)}}return{sourceName2DataAndRefKey:n,transferList:r}})}_getBaseUrl(){let e=this._layer.currentStyleInfo.glyphsUrl;return e&&o(e,{...this._layer.customParameters,token:this._layer.apiKey})}}function d(e){return()=>e.abort()}export{u as TileHandler};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{throwIfAborted as e,createAbortError as t}from"../../../../../core/promiseUtils.js";import{open as n}from"../../../../../core/workers.js";import r from"./VectorTileSource.js";import i from"../../../tiling/TileKey.js";class a extends r{static async create(t,r,i,s,c){if(s.cluster===!0)throw Error(`Clustered GeoJSON vector tile sources are not supported.`);if(s.data==null)throw Error(`GeoJSON source '${t}' must define a data property.`);let l=s.maxzoom??18,u=await n(`GeoJSONVectorTileSourceWorker`,{signal:c?.signal,strategy:`dedicated`}),d;try{d=await u.invoke(`initialize`,{definition:s,name:t,requestOptions:o(c)},{signal:c?.signal}),e(c)}catch(e){throw u.close(),e}return new a(t,r,i,u,s.minzoom??0,l,d.geometryTypes)}constructor(e,t,n,r,i,a,o){super(e,t,n),this._connection=r,this._minZoom=i,this._maxZoom=a,this.geometryTypes=o}destroy(){super.destroy(),this._connection?.close(),this._connection=null}async getRefKey(t,n){if(e(n),t.level<this._minZoom)return null;if(t.level<=this._maxZoom)return t;let r=t.level-this._maxZoom;return new i(this._maxZoom,t.row>>r,t.col>>r,t.world)}requestTile(n,r,i,a){return e(a),this._connection?this._connection.invoke(`requestTile`,{col:i,
|
|
2
|
+
import{throwIfAborted as e,createAbortError as t}from"../../../../../core/promiseUtils.js";import{open as n}from"../../../../../core/workers.js";import r from"./VectorTileSource.js";import i from"../../../tiling/TileKey.js";class a extends r{static async create(t,r,i,s,c){if(s.cluster===!0)throw Error(`Clustered GeoJSON vector tile sources are not supported.`);if(s.data==null)throw Error(`GeoJSON source '${t}' must define a data property.`);let l=s.maxzoom??18,u=await n(`GeoJSONVectorTileSourceWorker`,{signal:c?.signal,strategy:`dedicated`}),d;try{d=await u.invoke(`initialize`,{definition:s,name:t,requestOptions:o(c)},{signal:c?.signal}),e(c)}catch(e){throw u.close(),e}return new a(t,r,i,u,s.minzoom??0,l,d.geometryTypes)}constructor(e,t,n,r,i,a,o){super(e,t,n),this._connection=r,this._minZoom=i,this._maxZoom=a,this.geometryTypes=o,this.type=`geojson`}destroy(){super.destroy(),this._connection?.close(),this._connection=null}async getRefKey(t,n){if(e(n),t.level<this._minZoom)return null;if(t.level<=this._maxZoom)return t;let r=t.level-this._maxZoom;return new i(this._maxZoom,t.row>>r,t.col>>r,t.world)}requestTile(n,r,i,a,o=this.tileInfo){return e(a),this._connection?this._connection.invoke(`requestTile`,{col:i,row:r,origin:{x:o.origin.x,y:o.origin.y},tileSpan:o.size[0]*o.lodAt(n).resolution,spatialReference:o.spatialReference.toJSON()},a):Promise.reject(t())}}function o(e){if(!e)return{};let{signal:t,...n}=e;return n}export{a as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../../../request.js";import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{fromValues as n}from"../../../../../geometry/support/aaBoundingRect.js";import{
|
|
2
|
+
import e from"../../../../../request.js";import{throwIfAborted as t}from"../../../../../core/promiseUtils.js";import{fromValues as n}from"../../../../../geometry/support/aaBoundingRect.js";import{isWebMercator as r,getInfo as i,webMercator as a,wgs84 as o}from"../../../../../geometry/support/spatialReferenceUtils.js";import{TileClipper as s}from"../../../../../geometry/support/TileClipper.js";import{convertFromGeometry as c,convertToGeometry as l,generalizeOptimizedGeometry as u,quantizeOptimizedGeometry as d}from"../../../../../layers/graphics/featureConversionUtils.js";import f from"../../../../../layers/graphics/OptimizedGeometry.js";import p from"../../../../../layers/graphics/data/FeatureStore.js";import{project as m}from"../../../../../layers/graphics/data/projectionSupport.js";import{validateGeoJSON as h,createOptimizedFeatures as g,getGeometryType as _}from"../../../../../layers/graphics/sources/geojson/geojson.js";import{encodeVectorTileFeatures as v}from"./encodeVectorTileFeatures.js";const y=4096,b=[{geometryType:`esriGeometryPolygon`,vectorTileGeometryType:3},{geometryType:`esriGeometryPolyline`,vectorTileGeometryType:2},{geometryType:`esriGeometryPoint`,vectorTileGeometryType:1},{geometryType:`esriGeometryMultipoint`,vectorTileGeometryType:1}];class x{constructor(){this._buffer=128,this._featureIds=new Map,this._name=``,this._stores=[],this._webMercatorStores=null,this._tolerance=.375}destroy(){for(let{store:e}of this._stores)e.clear();for(let{store:e}of this._webMercatorStores??[])e.clear();this._webMercatorStores=null,this._featureIds.clear(),this._stores.length=0}async initialize({definition:n,name:r,requestOptions:i},a={}){if(n.data==null)throw Error(`GeoJSON source '${r}' must define a data property.`);if(n.lineMetrics===!0)throw Error(`GeoJSON lineMetrics are not supported.`);if(n.promoteId&&n.generateId)throw Error(`GeoJSON promoteId and generateId cannot be used together.`);let o=typeof n.data==`string`?(await e(n.data,{...i,responseType:`json`,signal:a.signal})).data:n.data;t(a),h(o),this.destroy(),this._buffer=n.buffer??128,this._name=r,this._tolerance=n.tolerance??.375;let s=0;for(let{geometryType:e,vectorTileGeometryType:t}of b){let r=g(o,{geometryType:e,hasZ:!1}),i=S(o,e,n);if(r.length===0)continue;let a=new p({geometryType:e,hasM:!1,hasZ:!1}),c=[];for(let[e,t]of r.entries())t.geometry&&(t.objectId=s++,this._featureIds.set(t.objectId,i[e]??null),c.push(t));c.length>0&&(a.addMany(c),this._stores.push({geometryType:e,store:a,vectorTileGeometryType:t}))}return t(a),{geometryTypes:[`polygon`,`line`,`point`].filter(e=>this._stores.some(({vectorTileGeometryType:t})=>t===E(e)))}}requestTile(e,n={}){t(n);let r=this._getTileFeatures(e),i=r.length>0?v(this._name,new D(r),y):new ArrayBuffer(0);return t(n),{result:i,transferList:[i]}}_getStores(e){return r(e)?(this._webMercatorStores||=this._stores.map(({geometryType:e,store:t,vectorTileGeometryType:n})=>{let r=new p({geometryType:e,hasM:!1,hasZ:!1});return t.forEach(t=>{let n=C(t.geometry,e);if(n){let e=t.weakClone();e.geometry=n,r.add(e)}}),{geometryType:e,store:r,vectorTileGeometryType:n}}),this._webMercatorStores):this._stores}_getTileFeatures({col:e,row:t,origin:r,tileSpan:a,spatialReference:o}){let s=r.x+e*a,c=r.y-t*a,{valid:l}=i(o),u=l[1]-l[0],d=this._getStores(o),f=a/y,p=this._buffer*f,m=this._tolerance*f,h=[];for(let e of[-u,0,u]){let t=n(s-p-e,c-a-p,s+a+p-e,c+p),r={scale:[f,-f,1,1],translate:[s-e,c,0,0]};for(let{geometryType:e,store:n,vectorTileGeometryType:i}of d)n.forEachInBounds(t,t=>{let n=w(t,e,i,r,m,this._buffer);n&&h.push({attributes:t.attributes,geometry:n,id:this._featureIds.get(t.objectId),type:i})})}return h}}function S(e,t,n){let r=[],i=e.type===`FeatureCollection`?e.features:[e];for(let e=0;e<i.length;e++){let a=i[e];if(!a.geometry||_(a.geometry.type)!==t)continue;let o=n.promoteId?a.properties?.[n.promoteId]:n.generateId===!0?e:a.id;r.push(typeof o==`number`||typeof o==`string`?o:null)}return r}function C(e,t){return e?c(m(l(e,t,!1,!1),o,a))??null:null}function w(e,t,n,r,i,a){if(!e.geometry)return null;let o=i>0?u(e.geometry,t,i,!1,!1):e.geometry;return T(d(o,t,r,!1,!1,!0),n,a)}function T(e,t,n){if(!e)return null;let r=new s(0,0,0,8,n/8);if(r.setExtent(y),r.reset(t),t===1)for(let t=0;t<e.size;t++){let n=t*e.stride;r.moveTo(e.coords[n],e.coords[n+1])}else{let n=0;for(let i of e.lengths){r.moveTo(e.coords[n],e.coords[n+1]);for(let t=1;t<i;t++){let i=n+t*e.stride;r.lineTo(e.coords[i],e.coords[i+1])}t===3&&r.close(),n+=i*e.stride}}let i=r.result();if(!i)return null;let a=t===1?[i.length]:i.map(e=>e.length),o=[];for(let e of i)for(let t of e)o.push(t.x,t.y);return new f(a,o)}function E(e){switch(e){case`polygon`:return 3;case`line`:return 2;case`point`:return 1}}class D{constructor(e){this._features=e,this._index=-1,this._pathOffsets=[]}get _feature(){return this._features[this._index]}destroy(){}getAttributes(){return this._feature.attributes}getId(){return this._feature.id}getPathCount(){return this._feature.type===1?1:this._feature.geometry.lengths.length}getPathLength(e){return this._feature.type===1?this._feature.geometry.size:this._feature.geometry.lengths[e]}getType(){return this._feature.type}getX(e,t){return this._feature.geometry.coords[this._getCoordinateIndex(e,t)]}getY(e,t){return this._feature.geometry.coords[this._getCoordinateIndex(e,t)+1]}next(){return++this._index>=this._features.length?!1:(this._pathOffsets=O(this._feature.geometry),!0)}_getCoordinateIndex(e,t){return(this._feature.type===1?t:this._pathOffsets[e]+t)*this._feature.geometry.stride}}function O(e){let t=Array(e.lengths.length),n=0;for(let r=0;r<e.lengths.length;r++)t[r]=n,n+=e.lengths[r];return t}export{x as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{getScaleForResolution as e}from"../../../../../geometry/support/scaleUtils.js";import{getInfo as t,equals as n}from"../../../../../geometry/support/spatialReferenceUtils.js";import{project as r}from"../../../../../geometry/support/webMercatorUtils.js";import i from"../../../../../layers/support/TileInfo.js";import a from"../../../tiling/TileInfoViewPOT.js";function o(n,r=22){let a=t(n),o=n.isWGS84?360/512:78271.51696400007,s=n.isWGS84?e(o,n):295828763.7957775;return i.fromJSON({rows:512,cols:512,dpi:96,format:`pbf`,origin:{x:a.origin[0],y:a.origin[1]},spatialReference:n.toJSON(),lods:Array.from({length:r+1},(e,t)=>({level:t,resolution:o/2**t,scale:s/2**t}))})}function s(e,t){return n(e.tileInfo?.spatialReference,t)||l(e)&&(t.isWGS84||t.isWebMercator)}function c(e,t){let i=l(e)&&s(e,t)?o(t,e.tileInfo.lods.length-1):e.tileInfo,c=n(e.spatialReference,i.spatialReference)?e.fullExtent:r(e.fullExtent,i.spatialReference);return c&&i.spatialReference.isWebMercator&&e.spatialReference.isWGS84&&(c.ymin=Math.max(c.ymin,-i.origin.y),c.ymax=Math.min(c.ymax,i.origin.y)),new a(i,c)}function l(e){let t=Object.values(e.sourceNameToSource);return t.length>0&&t.every(e=>e.type===`geojson`)}export{o as createTileInfo,c as createTileInfoView,s as supportsSpatialReference};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{nextPowerOfTwo as e}from"../../../../../../../core/mathUtils.js";import{create as t}from"../../../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{fromValues as n}from"../../../../../../../core/libs/gl-matrix-2/factories/vec4f32.js";import{getDefinesKey as r}from"../../../../vectorTiles/shaders/vtlMaterialUtils.js";import{vtlTextureBindingUnitSprites as i,vtlHighResCutoff as a}from"../../../definitions.js";import{Mesh as o}from"../../../meshing/Mesh.js";import{simplePipelineState as s}from"../../utils.js";import{Technique as c}from"../Technique.js";import{VTLShaderBackground as l}from"../shaders/vector-tiles/VTLShaderBackground.js";import{PrimitiveType as u}from"../../../../../../webgl/enums.js";function d(e,t){return{color:e.getPaintValue(`background-color`,t),opacity:e.getPaintValue(`background-opacity`,t),pattern:e.getPaintValue(`background-pattern`,Math.floor(t))}}class f extends c{constructor(){super(...arguments),this.type=38,this._color=n(1,0,0,1),this._patternMatrix=t(),this._mesh=null,this.shaders={background:new l}}render(n,o){if(o.tiles.length===0)return;this._loadResources(n);let{context:c,displayLevel:l,painter:u,spriteMosaic:f,styleLayer:p}=n,m=p,h=m.backgroundMaterial,{color:g,opacity:_,pattern:v}=d(m,l),y=v!==void 0,b=window.devicePixelRatio|1,x,S,C=h.key+r({hasPattern:y}),w=b>a?2:1,T={layerInfo:{depth:m.z,coordRange:o.tiles[0].rangeX},solidColor:null,pattern:null,patternMat:{mat:t()}},E=null;if(y){let e=f.getMosaicItemPosition(v,!0);if(e!=null){let{tl:t,br:n,page:r}=e;x=n[0]-t[0],S=n[1]-t[1];let a=f.getPageSize(r);a!=null&&(f.bind(c,9729,r,i),T.pattern={tlbr:[t[0],t[1],n[0],n[1]],mosaicSize:a,opacity:_},E={patternTexture:{texture:f.getTexture(r),unit:i}})}else return}else{let e=g[3]*_;this._color[0]=e*g[0],this._color[1]=e*g[1],this._color[2]=e*g[2],this._color[3]=e,T.solidColor={color:this._color}}u.setPipelineState(s);for(let t of o.tiles){if(T.layerInfo.coordRange=t.rangeX,y){let n=Math.max(2**(Math.round(
|
|
2
|
+
import{nextPowerOfTwo as e}from"../../../../../../../core/mathUtils.js";import{create as t}from"../../../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{fromValues as n}from"../../../../../../../core/libs/gl-matrix-2/factories/vec4f32.js";import{getDefinesKey as r}from"../../../../vectorTiles/shaders/vtlMaterialUtils.js";import{vtlTextureBindingUnitSprites as i,vtlHighResCutoff as a}from"../../../definitions.js";import{Mesh as o}from"../../../meshing/Mesh.js";import{simplePipelineState as s}from"../../utils.js";import{Technique as c}from"../Technique.js";import{VTLShaderBackground as l}from"../shaders/vector-tiles/VTLShaderBackground.js";import{PrimitiveType as u}from"../../../../../../webgl/enums.js";function d(e,t){return{color:e.getPaintValue(`background-color`,t),opacity:e.getPaintValue(`background-opacity`,t),pattern:e.getPaintValue(`background-pattern`,Math.floor(t))}}class f extends c{constructor(){super(...arguments),this.type=38,this._color=n(1,0,0,1),this._patternMatrix=t(),this._mesh=null,this.shaders={background:new l}}render(n,o){if(o.tiles.length===0)return;this._loadResources(n);let{context:c,displayLevel:l,painter:u,spriteMosaic:f,styleLayer:p}=n,m=p,h=m.backgroundMaterial,{color:g,opacity:_,pattern:v}=d(m,l),y=v!==void 0,b=window.devicePixelRatio|1,x,S,C=h.key+r({hasPattern:y}),w=b>a?2:1,T={layerInfo:{depth:m.z,coordRange:o.tiles[0].rangeX},solidColor:null,pattern:null,patternMat:{mat:t()}},E=null;if(y){let e=f.getMosaicItemPosition(v,!0);if(e!=null){let{tl:t,br:n,page:r}=e;x=n[0]-t[0],S=n[1]-t[1];let a=f.getPageSize(r);a!=null&&(f.bind(c,9729,r,i),T.pattern={tlbr:[t[0],t[1],n[0],n[1]],mosaicSize:a,opacity:_},E={patternTexture:{texture:f.getTexture(r),unit:i}})}else return}else{let e=g[3]*_;this._color[0]=e*g[0],this._color[1]=e*g[1],this._color[2]=e*g[2],this._color[3]=e,T.solidColor={color:this._color}}u.setPipelineState(s);for(let t of o.tiles){if(T.layerInfo.coordRange=t.rangeX,y){let r=Math.min(l,n.tilingScheme.tileInfo.lods.length-1),i=Math.max(2**(Math.round(r)-t.key.level),1),a=w*t.width*i,o=a/e(x),s=a/e(S);this._patternMatrix[0]=o,this._patternMatrix[4]=s,T.patternMat={mat:this._patternMatrix}}t.bind(c);let r={shader:this.shaders.background,uniforms:T,textures:E,defines:{renderMode:+!!y},optionalAttributes:h.getUsedAttributes(),useComputeBuffer:!1,precisionFactors:h.getPrecisionFactors(),materialKey:C};u.submitDrawMeshUntyped(c,r,this._mesh,{stencilRef:t.stencilRef})}}shutdown(){this._mesh&&=(this._mesh.destroy(),null)}_loadResources(e){if(this._mesh)return;let{context:t,styleLayer:n}=e,r=n,i=new Int16Array([0,0,1,0,0,1,1,1]),a=r.backgroundMaterial.geometryLayout;if(!a)return;let s={vertex:{geometryVB:{data:i,layout:a}},groups:[{primitive:u.TRIANGLE_STRIP}],parts:[{group:0,start:0,count:4}]};this._mesh=new o(t,s)}}export{f as VTLTechniqueBackground,d as getBackgroundPaintValues};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{getDefinesKey as e}from"../../../../vectorTiles/shaders/vtlMaterialUtils.js";import{vtlTextureBindingUnitSprites as t,vtlHighResCutoff as n}from"../../../definitions.js";import{Technique as r}from"../Technique.js";import{VTLShaderFill as i}from"../shaders/vector-tiles/VTLShaderFill.js";import{VTLShaderOutline as a}from"../shaders/vector-tiles/VTLShaderOutline.js";const o=1/65536;class s extends r{constructor(){super(...arguments),this.type=40,this._fillMesh=null,this._outlineMesh=null,this.shaders={fill:new i,outline:new a}}shutdown(){this._fillMesh=null,this._outlineMesh=null}render(e,t){let{displayLevel:n,is3D:r,renderPass:i,spriteMosaic:a,styleLayer:o,styleLayerUID:s}=e,{tiles:c}=t,l=!1;for(let e of c)if(e.layerData.has(s)){let t=e.layerData.get(s);if(t.fillIndexCount>0||t.outlineIndexCount>0){l=!0;break}}if(!l)return;let u=o,d=u.getPaintProperty(`fill-pattern`),f=d!==void 0,p=f&&d.isDataDriven,m;if(f&&!p){let e=d.getValue(n);m=a.getMosaicItemPosition(e,!0)}let h=!f&&u.getPaintValue(`fill-antialias`,n),g=!r||f,_=1;if(!f){let e=u.getPaintProperty(`fill-color`),t=u.getPaintProperty(`fill-opacity`);if(!e?.isDataDriven&&!t?.isDataDriven){let e=u.getPaintValue(`fill-color`,n);_=u.getPaintValue(`fill-opacity`,n)*e[3],_<1&&(g=!0)}}if((u.hasDataDrivenColor||u.hasDataDrivenOpacity)&&(g=!0),g&&i===`opaque`)return;let v=u.getPaintValue(`fill-translate`,n),y=u.getPaintValue(`fill-translate-anchor`,n);(i===`opaque`&&!g||i===`translucent`&&g)&&this._drawFill(e,s,u,c,v,y,f,m,p);let b=!u.hasDataDrivenOutlineColor&&u.outlineUsesFillColor&&_<1;h&&i===`translucent`&&!b&&this._drawOutline(e,s,u,c,v,y)}_drawFill(r,i,a,s,c,l,u,d,f){if(u&&!f&&d==null)return;let{context:p,displayLevel:m,drawPhase:h,painter:g,pixelRatio:_,spriteMosaic:v}=r,y=_>n?2:1,b=a.fillMaterial,x=l===1,S={config:{depth:a.z+o,fillTranslation:c,tileOpacity:1},patternOptions:f||u&&d!=null?{mosaicSize:[0,0],patternFactor:1,tlbr:[0,0,0,0]}:null,color:null,opacity:null,colorMix:null,opacityMix:null},C={patternTexture:null},w={fillType:+!!u,translateAnchorViewport:x},T=b.key+e(w);if(d!=null){let{page:e,tl:n,br:r}=d,i=n[0],a=r[1],o=r[0],s=n[1],c=v.getPageSize(e);c!=null&&(v.bind(p,9729,e,t),S.patternOptions={mosaicSize:[c[0],c[1]],patternFactor:1,tlbr:[i,a,o,s]},C.patternTexture={texture:v.getTexture(e),unit:t})}let E=-1;for(let e of s){if(!e.layerData.has(i))continue;if(e.key.level!==E){E=e.key.level;let t=b.getUniforms();for(let e of t){let t=e.getValue(a,m,E,v);S[e.name]={value:t}}if(u&&S.patternOptions!=null){let t=Math.max(2**(Math.round(
|
|
2
|
+
import{getDefinesKey as e}from"../../../../vectorTiles/shaders/vtlMaterialUtils.js";import{vtlTextureBindingUnitSprites as t,vtlHighResCutoff as n}from"../../../definitions.js";import{Technique as r}from"../Technique.js";import{VTLShaderFill as i}from"../shaders/vector-tiles/VTLShaderFill.js";import{VTLShaderOutline as a}from"../shaders/vector-tiles/VTLShaderOutline.js";const o=1/65536;class s extends r{constructor(){super(...arguments),this.type=40,this._fillMesh=null,this._outlineMesh=null,this.shaders={fill:new i,outline:new a}}shutdown(){this._fillMesh=null,this._outlineMesh=null}render(e,t){let{displayLevel:n,is3D:r,renderPass:i,spriteMosaic:a,styleLayer:o,styleLayerUID:s}=e,{tiles:c}=t,l=!1;for(let e of c)if(e.layerData.has(s)){let t=e.layerData.get(s);if(t.fillIndexCount>0||t.outlineIndexCount>0){l=!0;break}}if(!l)return;let u=o,d=u.getPaintProperty(`fill-pattern`),f=d!==void 0,p=f&&d.isDataDriven,m;if(f&&!p){let e=d.getValue(n);m=a.getMosaicItemPosition(e,!0)}let h=!f&&u.getPaintValue(`fill-antialias`,n),g=!r||f,_=1;if(!f){let e=u.getPaintProperty(`fill-color`),t=u.getPaintProperty(`fill-opacity`);if(!e?.isDataDriven&&!t?.isDataDriven){let e=u.getPaintValue(`fill-color`,n);_=u.getPaintValue(`fill-opacity`,n)*e[3],_<1&&(g=!0)}}if((u.hasDataDrivenColor||u.hasDataDrivenOpacity)&&(g=!0),g&&i===`opaque`)return;let v=u.getPaintValue(`fill-translate`,n),y=u.getPaintValue(`fill-translate-anchor`,n);(i===`opaque`&&!g||i===`translucent`&&g)&&this._drawFill(e,s,u,c,v,y,f,m,p);let b=!u.hasDataDrivenOutlineColor&&u.outlineUsesFillColor&&_<1;h&&i===`translucent`&&!b&&this._drawOutline(e,s,u,c,v,y)}_drawFill(r,i,a,s,c,l,u,d,f){if(u&&!f&&d==null)return;let{context:p,displayLevel:m,drawPhase:h,painter:g,pixelRatio:_,spriteMosaic:v}=r,y=_>n?2:1,b=a.fillMaterial,x=l===1,S={config:{depth:a.z+o,fillTranslation:c,tileOpacity:1},patternOptions:f||u&&d!=null?{mosaicSize:[0,0],patternFactor:1,tlbr:[0,0,0,0]}:null,color:null,opacity:null,colorMix:null,opacityMix:null},C={patternTexture:null},w={fillType:+!!u,translateAnchorViewport:x},T=b.key+e(w);if(d!=null){let{page:e,tl:n,br:r}=d,i=n[0],a=r[1],o=r[0],s=n[1],c=v.getPageSize(e);c!=null&&(v.bind(p,9729,e,t),S.patternOptions={mosaicSize:[c[0],c[1]],patternFactor:1,tlbr:[i,a,o,s]},C.patternTexture={texture:v.getTexture(e),unit:t})}let E=-1;for(let e of s){if(!e.layerData.has(i))continue;if(e.key.level!==E){E=e.key.level;let t=b.getUniforms();for(let e of t){let t=e.getValue(a,m,E,v);S[e.name]={value:t}}if(u&&S.patternOptions!=null){let t=Math.min(m,r.tilingScheme.tileInfo.lods.length-1),n=Math.max(2**(Math.round(t)-e.key.level),1),i=e.rangeX/(y*e.width*n);S.patternOptions.patternFactor=i}}let n=e.layerData.get(i);if(n.isDestroyed||n.fillIndexCount===0||(this._fillMesh=n.getMesh(p,{value:0}),!this._fillMesh))continue;let{config:o}=S;o.tileOpacity=h===1?e.fader.value():1,e.bind(p);let s={shader:this.shaders.fill,uniforms:S,textures:C,defines:w,optionalAttributes:b.getUsedAttributes(),useComputeBuffer:!1,precisionFactors:b.getPrecisionFactors(),materialKey:T};if(f){let r=S.patternOptions,i=n.patternMap;if(!i||r==null)continue;let a=0;for(let[n,o]of i){let i=v.getPageSize(n);i!=null&&(v.bind(p,9729,n,t),r.mosaicSize=i,C.patternTexture={texture:v.getTexture(n),unit:t},g.submitDrawMeshUntyped(p,s,this._fillMesh,{stencilRef:e.stencilRef,parts:[a++]}))}}else g.submitDrawMeshUntyped(p,s,this._fillMesh,{stencilRef:e.stencilRef});e.triangleCount+=n.fillIndexCount/3}}_drawOutline(t,n,r,i,a,s){let{context:c,displayLevel:l,spriteMosaic:u,painter:d,pixelRatio:f}=t,p=r.outlineMaterial,m={translateAnchorViewport:s===1},h=p.key+e(m),g=.75/f,_={config:{depth:r.z+o,fillTranslation:a,outlineWidth:g},color:null,opacity:null,colorMix:null,opacityMix:null},v=-1;for(let e of i){if(!e.layerData.has(n))continue;if(e.key.level!==v){v=e.key.level;let t=p.getUniforms();for(let e of t){let t=e.getValue(r,l,v,u);e.name in _&&(_[e.name]={value:t})}}let t=e.layerData.get(n);if(t.isDestroyed||t.outlineIndexCount===0||(this._outlineMesh=t.getMesh(c,{value:1}),this._outlineMesh==null))continue;e.bind(c);let i={shader:this.shaders.outline,uniforms:_,textures:{},defines:m,optionalAttributes:p.getUsedAttributes(),useComputeBuffer:!1,precisionFactors:p.getPrecisionFactors(),materialKey:h};d.submitDrawMeshUntyped(c,i,this._outlineMesh,{stencilRef:e.stencilRef}),e.triangleCount+=t.outlineIndexCount/3}}}export{s as VTLTechniqueFill};
|
|
@@ -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"../../../Graphic.js";import has from"../../../core/has.js";import{clone as n}from"../../../core/lang.js";import r from"../../../core/Logger.js";import{destroyMaybe as i}from"../../../core/maybe.js";import{isAbortError as a}from"../../../core/promiseUtils.js";import{createScreenPoint as o,isScreenPoint as s,isScreenRect as c,isScreenPolygon as l,pt2px as u}from"../../../core/screenUtils.js";import{property as d,subclass as f}from"../../../core/accessorSupport/decorators.js";import{diff as p,hasDiff as m}from"../../../core/accessorSupport/diffUtils.js";import h from"../../../geometry/Point.js";import{fromValues as g,create as _}from"../../../geometry/support/aaBoundingRect.js";import{equals as v}from"../../../geometry/support/spatialReferenceUtils.js";import{isVectorTileGraphicOrigin as y}from"../../../graphic/isVectorTileGraphicOrigin.js";import b from"../../../graphic/VectorTileGraphicOrigin.js";import{tileSizeInTileUnits as x,tileSizeInPixels as S}from"../engine/vectorTiles/constants.js";import{TileHandler as C}from"../engine/vectorTiles/TileHandler.js";import{TileManager as w}from"../engine/vectorTiles/TileManager.js";import{VectorTile as T}from"../engine/vectorTiles/VectorTile.js";import{VectorTileContainer as E}from"../engine/vectorTiles/VectorTileContainer.js";import D from"../engine/vectorTiles/VectorTileFeatureIndex.js";import{isSearchCircleOverlappingSymbol as O,isSearchPolygonOverlappingSymbol as k}from"../engine/vectorTiles/decluttering/util.js";import A from"../engine/vectorTiles/style/StyleRepository.js";import{LayerView2D as j}from"./LayerView2D.js";import{getBbox as M,getMapPointsFromScreen as N}from"../support/hitTestUtils.js";import P from"../tiling/TileInfoViewPOT.js";import F from"../tiling/TileQueue.js";import I from"../../layers/VectorTileLayerView.js";import{TaskPriority as L}from"../../support/Scheduler.js";let R=class extends j(I){constructor(){super(...arguments),this._styleChanges=[],this._fetchQueue=null,this._parseQueue=null,this._tileHandlerPromise=null,this._isTileHandlerReady=!1,this._styeChanged=!1,this._spriteSourceChanged=!1}get fading(){return(this._vectorTileContainer?.fading||this._tileManager?.isFading())??!1}get hasVisibleFeatures(){let e=this._vectorTileContainer.children;for(let t of e)if(t.hasFeatures())return!0;return!1}get spriteSourceChanged(){return this._spriteSourceChanged}get styleChanged(){return this._styeChanged}async hitTest(e,t){let n=this._tileHandlerPromise,r=this._vectorTileContainer?.symbolFader;if(!n||!this._isTileHandlerReady||!r)return;await n;let i=[],a,d=c(t),f=l(t);if(d){let e=t;i=[o(e.x,e.y+e.height),o(e.x+e.width,e.y+e.height),o(e.x+e.width,e.y),o(e.x,e.y)],a=`rect`}else f?(i=t.map(e=>e),a=`polygon`):(i=[t],a=`point`);let p=has(`esri-vtl-search-tolerance`)??0,m=p>0?p:2.5,h=this.view.state,{rotation:_,pixelRatio:v}=this.view.state,y=u(m)*v,b=null,x=this._vectorTileContainer?.symbolRepository;x&&(b=x.querySymbols());let S=[];if(b)for(let e of b){let{styleLayerUID:t,vtlSymbol:n,tileKey:o}=e;a===`point`&&O(n,i[0],y,r.decluttererOffset)&&S.push({vtlSymbol:n,styleLayerUID:t,tileKey:o}),k(n,i,r.decluttererOffset)&&S.push({vtlSymbol:n,styleLayerUID:t,tileKey:o})}let C;if(s(t)){let e=[0,0],n=[0,0];h.toMap(e,t.x-y,t.y+y),h.toMap(n,t.x+y,t.y-y),C=g(Math.min(e[0],n[0]),Math.min(e[1],n[1]),Math.max(e[0],n[0]),Math.max(e[1],n[1]))}else{let e=i.map(({x:e,y:t})=>{let n=[0,0];return h.toMap(n,e,t),n});C=M([e])}let w=this._tileManager.getIntersectingTiles(C,S);if(S=S?.filter(e=>this._styleRepository.getStyleLayerVisibility(e.styleLayerUID)),(!w||w.length===0)&&S?.length===0)return null;let T=N(this.view,i),E=[],D=[];for(let e of w)E.push(this._queryTile(D,T,y,_,e,S?.filter(t=>t.tileKey.id===e.id),d?`rect`:f?`polygon`:`point`));return await Promise.all(E),D}update(e){if(this._tileHandlerPromise&&this._isTileHandlerReady){if(e.pixelRatio!==this._tileHandler.devicePixelRatio){this._tileHandler.devicePixelRatio=e.pixelRatio,this._loadStyle();return}if(this._styleChanges.length>0){this._tileHandlerPromise=this._applyStyleChanges();return}this._pauseQueues(),this._fetchQueue.state=e.state,this._parseQueue.state=e.state,this._tileManager.update(e)||this.requestUpdate(),this._resumeQueues()}}attach(){let{style:e}=this.layer.currentStyleInfo;this._styleRepository=new A(e),this._tileInfoView=new P(this.layer.tileInfo,this.layer.fullExtent),this._vectorTileContainer=new E(this._tileInfoView),this._tileHandler=new C(this.layer,this._styleRepository,window.devicePixelRatio||1,this.layer.tileInfo.lods.length-1,this.view.glyphMosaic()),this.container.addChild(this._vectorTileContainer),this._start(),this.addAttachHandles([this.layer.on(`paint-change`,e=>{if(this._styeChanged=!0,e.isDataDriven)this._styleChanges.push({type:0,data:e}),this.requestUpdate();else{let t=this._styleRepository,n=t.getLayerById(e.layer);if(!n)return;let r=n.type===3;t.setPaintProperties(e.layer,e.paint),r&&this._vectorTileContainer?.restartDeclutter(),this._vectorTileContainer?.requestRender()}}),this.layer.on(`layout-change`,e=>{let t=this._styleRepository,n=t.getLayerById(e.layer);if(!n)return;this._styeChanged=!0;let r=p(n.layout,e.layout);if(r!=null){if(m(r,`visibility`)&&z(r)===1){t.setLayoutProperties(e.layer,e.layout),n.type===3&&this._vectorTileContainer?.restartDeclutter(),this._vectorTileContainer?.requestRender();return}this._styleChanges.push({type:1,data:e}),this.requestUpdate()}}),this.layer.on(`style-layer-visibility-change`,e=>{let t=this._styleRepository,n=t.getLayerById(e.layer);n&&(this._styeChanged=!0,t.setStyleLayerVisibility(e.layer,e.visibility),n.type===3&&this._vectorTileContainer?.restartDeclutter(),this._vectorTileContainer?.requestRender())}),this.layer.on(`style-layer-change`,e=>{this._styleChanges.push({type:2,data:e}),this._styeChanged=!0,this.requestUpdate()}),this.layer.on(`delete-style-layer`,e=>{this._styleChanges.push({type:3,data:e}),this._styeChanged=!0,this.requestUpdate()}),this.layer.on(`load-style`,()=>this._loadStyle()),this.layer.on(`spriteSource-change`,e=>{this._spriteSourceChanged=!0,this._styleChanges.push({type:4,data:e});let t=this._styleRepository.layers;for(let e of t)switch(e.type){case 3:e.getLayoutProperty(`icon-image`)&&this._styleChanges.push({type:1,data:{layer:e.id,layout:e.layout}});break;case 2:e.getPaintProperty(`line-pattern`)&&this._styleChanges.push({type:0,data:{layer:e.id,paint:e.paint,isDataDriven:e.isPainterDataDriven()}});break;case 1:e.getLayoutProperty(`fill-pattern`)&&this._styleChanges.push({type:0,data:{layer:e.id,paint:e.paint,isDataDriven:e.isPainterDataDriven()}})}this.requestUpdate()})])}detach(){this._stop(),this.container.removeAllChildren(),this._vectorTileContainer=i(this._vectorTileContainer),this._tileHandler=i(this._tileHandler)}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}supportsSpatialReference(e){return v(this.layer.tileInfo?.spatialReference,e)}canResume(){let e=super.canResume(),{currentStyleInfo:t}=this.layer;if(e&&t?.layerDefinition){let n=this.view.scale,{minScale:r,maxScale:i}=t.layerDefinition;t?.layerDefinition&&(r&&r<n&&(e=!1),i&&i>n&&(e=!1))}return e}isUpdating(){return this.fading||!this._isTileHandlerReady}acquireTile(e){let t=this._createVectorTile(e);return this._updatingHandles.consumePromise(this._fetchQueue.push(t.key).then(e=>this._parseQueue.push({key:t.key,data:e})).then(e=>{t.once(`attach`,()=>this.requestUpdate()),t.setData(e),this.requestUpdate()}).catch(e=>{a(e)||r.getLogger(this).error(e)})),t}releaseTile(e){let t=e.key.id;this._fetchQueue.abort(t),this._parseQueue.abort(t),this.requestUpdate()}async doRefresh(){if(!this.attached)return;if(this.suspended){this._tileManager.clear(),this.requestUpdate();return}this._isTileHandlerReady=!1,this._pauseQueues(),this._clearQueues(),this._tileManager.clearCache(),this._resumeQueues();let e=this._vectorTileContainer.children,t=[];try{for(let n of e){let e=this._updatingHandles.addPromise(this._fetchQueue.push(n.key).then(e=>this._parseQueue.push({key:n.key,data:e})).then(e=>n.setData(e)).finally(()=>n.featureIndex=null));t.push(e)}await Promise.all(t)}catch(e){r.getLogger(this).error(`error refreshing vector-tiles layer-view`,e),this._resumeQueues(),this._isTileHandlerReady=!0}this._isTileHandlerReady=!0,this.requestUpdate()}_start(){if(this._stop(),this._tileManager=new w({acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),tileInfoView:this._tileInfoView},this._vectorTileContainer),!this.layer.currentStyleInfo)return;let e=new AbortController,t=this._tileHandler.start({signal:e.signal}).then(()=>{this._fetchQueue=new F({tileInfoView:this._tileInfoView,process:(e,t)=>this._getTileData(e,t),concurrency:15,scheduler:this.scheduler,priority:L.MAPVIEW_FETCH_QUEUE}),this._parseQueue=new F({tileInfoView:this._tileInfoView,process:(e,t)=>this._parseTileData(e,t),concurrency:8,scheduler:this.scheduler,priority:L.MAPVIEW_VECTOR_TILE_PARSING_QUEUE}),this.requestUpdate(),this._isTileHandlerReady=!0});this._tileHandler.spriteMosaic.then(e=>{this._vectorTileContainer.setStyleResources(e,this._tileHandler.glyphMosaic,this._styleRepository,this._tileInfoView),this.requestUpdate()}),this._tileHandlerAbortController=e,this._tileHandlerPromise=t}_stop(){if(!this._tileHandlerAbortController||!this._vectorTileContainer)return;let e=this._tileHandlerAbortController;e&&e.abort(),this._tileHandlerPromise=null,this._isTileHandlerReady=!1,this._fetchQueue=i(this._fetchQueue),this._parseQueue=i(this._parseQueue),this._tileManager=i(this._tileManager),this._vectorTileContainer.removeAllChildren()}async _getTileData(e,t){return this._tileHandler.fetchTileData(e,t)}async _parseTileData(e,t){return this._tileHandler.parseTileData(e,t)}async _applyStyleChanges(){this._isTileHandlerReady=!1,this._pauseQueues(),this._clearQueues(),this._tileManager.clearCache();let e=this._styleChanges;try{await this._tileHandler.updateStyle(e)}catch(e){r.getLogger(this).error(`error applying vector-tiles style update`,e.message),this._resumeQueues(),this._isTileHandlerReady=!0}let t=this._styleRepository,n=new Set,i=new Set;for(let r of e){if(r.type!==3&&r.type!==2)continue;let e=r.type===2?r.data.layer.id:r.data.layer,a=t.getLayerById(e);a&&(n.add(a.uid),a.type===3&&i.add(a.uid))}let a=this._vectorTileContainer.children,o=this._vectorTileContainer?.symbolFader?.symbolRepository;o&&i.size>0&&o.deleteStyleLayers(Array.from(i));let s=new Set;if(e.forEach(e=>{let n;switch(e.type){case 0:t.setPaintProperties(e.data.layer,e.data.paint),n=e.data.layer;break;case 1:t.setLayoutProperties(e.data.layer,e.data.layout),n=e.data.layer;break;case 3:t.deleteStyleLayer(e.data.layer);return;case 2:t.setStyleLayer(e.data.layer,e.data.index),n=e.data.layer.id;break;case 4:this._vectorTileContainer.setSpriteMosaic(this._tileHandler.setSpriteSource(e.data.spriteSource))}if(n){let e=t.getLayerById(n);e&&s.add(e.uid)}}),n.size>0){let e=Array.from(n);this._vectorTileContainer.deleteStyleLayers(e);for(let t of a)t.deleteLayerData(e)}if(this._resumeQueues(),s.size>0){let e=Array.from(s),t=[];for(let n of a){let r=this._updatingHandles.addPromise(this._fetchQueue.push(n.key).then(t=>this._parseQueue.push({key:n.key,data:t,styleLayerUIDs:e})).then(e=>n.setData(e)).finally(()=>n.featureIndex=null));t.push(r)}await Promise.all(t)}this._styleChanges=[],this._isTileHandlerReady=!0,this.requestUpdate()}async _loadStyle(){let{style:e}=this.layer.currentStyleInfo,t=n(e);this._isTileHandlerReady=!1,this._pauseQueues(),this._clearQueues(),this._styleRepository=new A(t),this._vectorTileContainer.destroy(),this._tileManager.clear(),this._tileHandlerAbortController.abort(),this._tileHandlerAbortController=new AbortController;let{signal:r}=this._tileHandlerAbortController;try{this._tileHandlerPromise=this._tileHandler.setStyle(this._styleRepository,t,this.layer.tileInfo.lods.length-1),await this._tileHandlerPromise}catch(e){if(!a(e))throw e}if(r.aborted){this._resumeQueues(),this._isTileHandlerReady=!0,this._styeChanged=!1,this._spriteSourceChanged=!1,this.requestUpdate();return}let i=await this._tileHandler.spriteMosaic,o=this._vectorTileContainer;this._tileInfoView=new P(this.layer.tileInfo,this.layer.fullExtent),o.setStyleResources(i,this.view.glyphMosaic(),this._styleRepository,this._tileInfoView),this._tileManager=new w({acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),tileInfoView:this._tileInfoView},this._vectorTileContainer),this._resumeQueues(),this._isTileHandlerReady=!0,this.requestUpdate(),this._styeChanged=!1,this._spriteSourceChanged=!1}_createVectorTile(e){let t=this._tileInfoView.getTileBounds(_(),e),n=this._tileInfoView.getTileResolution(e.level);return new T(e,n,t[0],t[3],512,512,this._styleRepository)}async _queryTile(e,n,r,i,a,o,s){if(a.layerData.size===0)return;let c=this._ensureTileIndex(a),l=this._tileInfoView.getTileBounds(_(),a.key,!0),u=n.map(e=>{let[t,n,r,i]=l;return[x*((e.x-t)/(r-t)),x*(1-(e.y-n)/(i-n))]}),d=this.view.featuresTilingScheme.tileInfo.scaleToZoom(this.view.state.scale)-a.key.level,f=d>0?2**d:1,p=r/f*(x/S),m=await c.queryAttributes(u,p,s);for(let r of m){let{layer:a,feature:o}=r;this._styleRepository.getStyleLayerVisibility(a.uid)&&a.isIntersectingFeature(u,p,o,c.tileKey.level,i,f,r,s)&&e.push({type:`graphic`,layer:this.layer,graphic:new t({attributes:o.values,origin:new b(this.layer,r.layer.id,r.layer.uid)}),mapPoint:s===`point`?n[0].clone():null})}(await c.getSymbolHitResults([],o)).map(t=>{t.graphic.geometry=this._tileToMapPoint(t.tilePoint,a.transforms.tileUnitsToPixels),e.push({type:`graphic`,layer:this.layer,graphic:t.graphic,mapPoint:s===`point`?n[0].clone():null})}),e.sort((e,t)=>(y(t.graphic.origin)?t.graphic.origin.layerIndex:0)-(y(e.graphic.origin)?e.graphic.origin.layerIndex:0))}_tileToMapPoint(e,t){if(!e)return null;let n=e[0]*t[0]+e[1]*t[3]+t[6],r=e[0]*t[1]+e[1]*t[4]+t[7],i=this.view.state,a=[0,0];return i.toMap(a,[n,r]),new h({x:a[0],y:a[1],spatialReference:i.spatialReference})}_ensureTileIndex(e){let t=e.featureIndex;return t||(t=D.create(e.key,e.layerData,this._styleRepository,this._tileHandler,this.layer),e.featureIndex=t),t}_pauseQueues(){this._fetchQueue.pause(),this._parseQueue.pause()}_resumeQueues(){this._fetchQueue.resume(),this._parseQueue.resume()}_clearQueues(){this._fetchQueue.clear(),this._parseQueue.clear()}};e([d()],R.prototype,`_isTileHandlerReady`,void 0),R=e([f(`esri.views.2d.layers.VectorTileLayerView2D`)],R);function z(e){if(e==null)return 0;switch(e.type){case`partial`:return Object.keys(e.diff).length;case`complete`:return Math.max(Object.keys(e.oldValue).length,Object.keys(e.newValue).length);case`collection`:return Object.keys(e.added).length+Object.keys(e.changed).length+Object.keys(e.removed).length}}const B=R;export{B as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import has from"../../../core/has.js";import{clone as n}from"../../../core/lang.js";import r from"../../../core/Logger.js";import{destroyMaybe as i}from"../../../core/maybe.js";import{isAbortError as a}from"../../../core/promiseUtils.js";import{createScreenPoint as o,isScreenPoint as s,isScreenRect as c,isScreenPolygon as l,pt2px as u}from"../../../core/screenUtils.js";import{property as d,subclass as f}from"../../../core/accessorSupport/decorators.js";import{diff as p,hasDiff as m}from"../../../core/accessorSupport/diffUtils.js";import h from"../../../geometry/Point.js";import{fromValues as g,create as _}from"../../../geometry/support/aaBoundingRect.js";import{isVectorTileGraphicOrigin as v}from"../../../graphic/isVectorTileGraphicOrigin.js";import y from"../../../graphic/VectorTileGraphicOrigin.js";import{tileSizeInTileUnits as b,tileSizeInPixels as x}from"../engine/vectorTiles/constants.js";import{TileHandler as S}from"../engine/vectorTiles/TileHandler.js";import{TileManager as C}from"../engine/vectorTiles/TileManager.js";import{VectorTile as w}from"../engine/vectorTiles/VectorTile.js";import{VectorTileContainer as T}from"../engine/vectorTiles/VectorTileContainer.js";import E from"../engine/vectorTiles/VectorTileFeatureIndex.js";import{isSearchCircleOverlappingSymbol as D,isSearchPolygonOverlappingSymbol as O}from"../engine/vectorTiles/decluttering/util.js";import{createTileInfoView as k,supportsSpatialReference as A}from"../engine/vectorTiles/style/geoJSONVectorTileUtils.js";import j from"../engine/vectorTiles/style/StyleRepository.js";import{LayerView2D as M}from"./LayerView2D.js";import{getBbox as N,getMapPointsFromScreen as P}from"../support/hitTestUtils.js";import F from"../tiling/TileQueue.js";import I from"../../layers/VectorTileLayerView.js";import{TaskPriority as L}from"../../support/Scheduler.js";let R=class extends M(I){constructor(){super(...arguments),this._styleChanges=[],this._fetchQueue=null,this._parseQueue=null,this._tileHandlerPromise=null,this._isTileHandlerReady=!1,this._styeChanged=!1,this._spriteSourceChanged=!1}get fading(){return(this._vectorTileContainer?.fading||this._tileManager?.isFading())??!1}get hasVisibleFeatures(){let e=this._vectorTileContainer.children;for(let t of e)if(t.hasFeatures())return!0;return!1}get spriteSourceChanged(){return this._spriteSourceChanged}get styleChanged(){return this._styeChanged}async hitTest(e,t){let n=this._tileHandlerPromise,r=this._vectorTileContainer?.symbolFader;if(!n||!this._isTileHandlerReady||!r)return;await n;let i=[],a,d=c(t),f=l(t);if(d){let e=t;i=[o(e.x,e.y+e.height),o(e.x+e.width,e.y+e.height),o(e.x+e.width,e.y),o(e.x,e.y)],a=`rect`}else f?(i=t.map(e=>e),a=`polygon`):(i=[t],a=`point`);let p=has(`esri-vtl-search-tolerance`)??0,m=p>0?p:2.5,h=this.view.state,{rotation:_,pixelRatio:v}=this.view.state,y=u(m)*v,b=null,x=this._vectorTileContainer?.symbolRepository;x&&(b=x.querySymbols());let S=[];if(b)for(let e of b){let{styleLayerUID:t,vtlSymbol:n,tileKey:o}=e;a===`point`&&D(n,i[0],y,r.decluttererOffset)&&S.push({vtlSymbol:n,styleLayerUID:t,tileKey:o}),O(n,i,r.decluttererOffset)&&S.push({vtlSymbol:n,styleLayerUID:t,tileKey:o})}let C;if(s(t)){let e=[0,0],n=[0,0];h.toMap(e,t.x-y,t.y+y),h.toMap(n,t.x+y,t.y-y),C=g(Math.min(e[0],n[0]),Math.min(e[1],n[1]),Math.max(e[0],n[0]),Math.max(e[1],n[1]))}else{let e=i.map(({x:e,y:t})=>{let n=[0,0];return h.toMap(n,e,t),n});C=N([e])}let w=this._tileManager.getIntersectingTiles(C,S);if(S=S?.filter(e=>this._styleRepository.getStyleLayerVisibility(e.styleLayerUID)),(!w||w.length===0)&&S?.length===0)return null;let T=P(this.view,i),E=[],k=[];for(let e of w)E.push(this._queryTile(k,T,y,_,e,S?.filter(t=>t.tileKey.id===e.id),d?`rect`:f?`polygon`:`point`));return await Promise.all(E),k}update(e){if(this._tileHandlerPromise&&this._isTileHandlerReady){if(e.pixelRatio!==this._tileHandler.devicePixelRatio){this._tileHandler.devicePixelRatio=e.pixelRatio,this._loadStyle();return}if(this._styleChanges.length>0){this._tileHandlerPromise=this._applyStyleChanges();return}this._pauseQueues(),this._fetchQueue.state=e.state,this._parseQueue.state=e.state,this._tileManager.update(e)||this.requestUpdate(),this._resumeQueues()}}attach(){let{style:e}=this.layer.currentStyleInfo;this._styleRepository=new j(e),this._tileInfoView=k(this.layer,this.view.spatialReference),this._vectorTileContainer=new T(this._tileInfoView),this._tileHandler=new S(this.layer,this._styleRepository,window.devicePixelRatio||1,this._tileInfoView.tileInfo.lods.length-1,this.view.glyphMosaic(),()=>this._tileInfoView.tileInfo),this.container.addChild(this._vectorTileContainer),this._start(),this.addAttachHandles([this.layer.on(`paint-change`,e=>{if(this._styeChanged=!0,e.isDataDriven)this._styleChanges.push({type:0,data:e}),this.requestUpdate();else{let t=this._styleRepository,n=t.getLayerById(e.layer);if(!n)return;let r=n.type===3;t.setPaintProperties(e.layer,e.paint),r&&this._vectorTileContainer?.restartDeclutter(),this._vectorTileContainer?.requestRender()}}),this.layer.on(`layout-change`,e=>{let t=this._styleRepository,n=t.getLayerById(e.layer);if(!n)return;this._styeChanged=!0;let r=p(n.layout,e.layout);if(r!=null){if(m(r,`visibility`)&&z(r)===1){t.setLayoutProperties(e.layer,e.layout),n.type===3&&this._vectorTileContainer?.restartDeclutter(),this._vectorTileContainer?.requestRender();return}this._styleChanges.push({type:1,data:e}),this.requestUpdate()}}),this.layer.on(`style-layer-visibility-change`,e=>{let t=this._styleRepository,n=t.getLayerById(e.layer);n&&(this._styeChanged=!0,t.setStyleLayerVisibility(e.layer,e.visibility),n.type===3&&this._vectorTileContainer?.restartDeclutter(),this._vectorTileContainer?.requestRender())}),this.layer.on(`style-layer-change`,e=>{this._styleChanges.push({type:2,data:e}),this._styeChanged=!0,this.requestUpdate()}),this.layer.on(`delete-style-layer`,e=>{this._styleChanges.push({type:3,data:e}),this._styeChanged=!0,this.requestUpdate()}),this.layer.on(`load-style`,()=>this._loadStyle()),this.layer.on(`spriteSource-change`,e=>{this._spriteSourceChanged=!0,this._styleChanges.push({type:4,data:e});let t=this._styleRepository.layers;for(let e of t)switch(e.type){case 3:e.getLayoutProperty(`icon-image`)&&this._styleChanges.push({type:1,data:{layer:e.id,layout:e.layout}});break;case 2:e.getPaintProperty(`line-pattern`)&&this._styleChanges.push({type:0,data:{layer:e.id,paint:e.paint,isDataDriven:e.isPainterDataDriven()}});break;case 1:e.getLayoutProperty(`fill-pattern`)&&this._styleChanges.push({type:0,data:{layer:e.id,paint:e.paint,isDataDriven:e.isPainterDataDriven()}})}this.requestUpdate()})])}detach(){this._stop(),this.container.removeAllChildren(),this._vectorTileContainer=i(this._vectorTileContainer),this._tileHandler=i(this._tileHandler)}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}supportsSpatialReference(e){return A(this.layer,e)}canResume(){let e=super.canResume(),{currentStyleInfo:t}=this.layer;if(e&&t?.layerDefinition){let n=this.view.scale,{minScale:r,maxScale:i}=t.layerDefinition;t?.layerDefinition&&(r&&r<n&&(e=!1),i&&i>n&&(e=!1))}return e}isUpdating(){return this.fading||!this._isTileHandlerReady}acquireTile(e){let t=this._createVectorTile(e);return this._updatingHandles.consumePromise(this._fetchQueue.push(t.key).then(e=>this._parseQueue.push({key:t.key,data:e})).then(e=>{t.once(`attach`,()=>this.requestUpdate()),t.setData(e),this.requestUpdate()}).catch(e=>{a(e)||r.getLogger(this).error(e)})),t}releaseTile(e){let t=e.key.id;this._fetchQueue.abort(t),this._parseQueue.abort(t),this.requestUpdate()}async doRefresh(){if(!this.attached)return;if(this.suspended){this._tileManager.clear(),this.requestUpdate();return}this._isTileHandlerReady=!1,this._pauseQueues(),this._clearQueues(),this._tileManager.clearCache(),this._resumeQueues();let e=this._vectorTileContainer.children,t=[];try{for(let n of e){let e=this._updatingHandles.addPromise(this._fetchQueue.push(n.key).then(e=>this._parseQueue.push({key:n.key,data:e})).then(e=>n.setData(e)).finally(()=>n.featureIndex=null));t.push(e)}await Promise.all(t)}catch(e){r.getLogger(this).error(`error refreshing vector-tiles layer-view`,e),this._resumeQueues(),this._isTileHandlerReady=!0}this._isTileHandlerReady=!0,this.requestUpdate()}_start(){if(this._stop(),this._tileManager=new C({acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),tileInfoView:this._tileInfoView},this._vectorTileContainer),!this.layer.currentStyleInfo)return;let e=new AbortController,t=this._tileHandler.start({signal:e.signal}).then(()=>{this._fetchQueue=new F({tileInfoView:this._tileInfoView,process:(e,t)=>this._getTileData(e,t),concurrency:15,scheduler:this.scheduler,priority:L.MAPVIEW_FETCH_QUEUE}),this._parseQueue=new F({tileInfoView:this._tileInfoView,process:(e,t)=>this._parseTileData(e,t),concurrency:8,scheduler:this.scheduler,priority:L.MAPVIEW_VECTOR_TILE_PARSING_QUEUE}),this.requestUpdate(),this._isTileHandlerReady=!0});this._tileHandler.spriteMosaic.then(e=>{this._vectorTileContainer.setStyleResources(e,this._tileHandler.glyphMosaic,this._styleRepository,this._tileInfoView),this.requestUpdate()}),this._tileHandlerAbortController=e,this._tileHandlerPromise=t}_stop(){if(!this._tileHandlerAbortController||!this._vectorTileContainer)return;let e=this._tileHandlerAbortController;e&&e.abort(),this._tileHandlerPromise=null,this._isTileHandlerReady=!1,this._fetchQueue=i(this._fetchQueue),this._parseQueue=i(this._parseQueue),this._tileManager=i(this._tileManager),this._vectorTileContainer.removeAllChildren()}async _getTileData(e,t){return this._tileHandler.fetchTileData(e,t)}async _parseTileData(e,t){return this._tileHandler.parseTileData(e,t)}async _applyStyleChanges(){this._isTileHandlerReady=!1,this._pauseQueues(),this._clearQueues(),this._tileManager.clearCache();let e=this._styleChanges;try{await this._tileHandler.updateStyle(e)}catch(e){r.getLogger(this).error(`error applying vector-tiles style update`,e.message),this._resumeQueues(),this._isTileHandlerReady=!0}let t=this._styleRepository,n=new Set,i=new Set;for(let r of e){if(r.type!==3&&r.type!==2)continue;let e=r.type===2?r.data.layer.id:r.data.layer,a=t.getLayerById(e);a&&(n.add(a.uid),a.type===3&&i.add(a.uid))}let a=this._vectorTileContainer.children,o=this._vectorTileContainer?.symbolFader?.symbolRepository;o&&i.size>0&&o.deleteStyleLayers(Array.from(i));let s=new Set;if(e.forEach(e=>{let n;switch(e.type){case 0:t.setPaintProperties(e.data.layer,e.data.paint),n=e.data.layer;break;case 1:t.setLayoutProperties(e.data.layer,e.data.layout),n=e.data.layer;break;case 3:t.deleteStyleLayer(e.data.layer);return;case 2:t.setStyleLayer(e.data.layer,e.data.index),n=e.data.layer.id;break;case 4:this._vectorTileContainer.setSpriteMosaic(this._tileHandler.setSpriteSource(e.data.spriteSource))}if(n){let e=t.getLayerById(n);e&&s.add(e.uid)}}),n.size>0){let e=Array.from(n);this._vectorTileContainer.deleteStyleLayers(e);for(let t of a)t.deleteLayerData(e)}if(this._resumeQueues(),s.size>0){let e=Array.from(s),t=[];for(let n of a){let r=this._updatingHandles.addPromise(this._fetchQueue.push(n.key).then(t=>this._parseQueue.push({key:n.key,data:t,styleLayerUIDs:e})).then(e=>n.setData(e)).finally(()=>n.featureIndex=null));t.push(r)}await Promise.all(t)}this._styleChanges=[],this._isTileHandlerReady=!0,this.requestUpdate()}async _loadStyle(){let{style:e}=this.layer.currentStyleInfo,t=n(e);this._isTileHandlerReady=!1,this._pauseQueues(),this._clearQueues(),this._styleRepository=new j(t),this._vectorTileContainer.destroy(),this._tileManager.clear(),this._tileHandlerAbortController.abort(),this._tileHandlerAbortController=new AbortController;let{signal:r}=this._tileHandlerAbortController;try{this._tileHandlerPromise=this._tileHandler.setStyle(this._styleRepository,t,this.layer.tileInfo.lods.length-1),await this._tileHandlerPromise}catch(e){if(!a(e))throw e}if(r.aborted){this._resumeQueues(),this._isTileHandlerReady=!0,this._styeChanged=!1,this._spriteSourceChanged=!1,this.requestUpdate();return}let i=await this._tileHandler.spriteMosaic,o=this._vectorTileContainer;this._tileInfoView=k(this.layer,this.view.spatialReference),o.setStyleResources(i,this.view.glyphMosaic(),this._styleRepository,this._tileInfoView),this._tileManager=new C({acquireTile:e=>this.acquireTile(e),releaseTile:e=>this.releaseTile(e),tileInfoView:this._tileInfoView},this._vectorTileContainer),this._resumeQueues(),this._isTileHandlerReady=!0,this.requestUpdate(),this._styeChanged=!1,this._spriteSourceChanged=!1}_createVectorTile(e){let t=this._tileInfoView.getTileBounds(_(),e),n=this._tileInfoView.getTileResolution(e.level);return new w(e,n,t[0],t[3],512,512,this._styleRepository)}async _queryTile(e,n,r,i,a,o,s){if(a.layerData.size===0)return;let c=this._ensureTileIndex(a),l=this._tileInfoView.getTileBounds(_(),a.key,!0),u=n.map(e=>{let[t,n,r,i]=l;return[b*((e.x-t)/(r-t)),b*(1-(e.y-n)/(i-n))]}),d=this.view.featuresTilingScheme.tileInfo.scaleToZoom(this.view.state.scale)-a.key.level,f=d>0?2**d:1,p=r/f*(b/x),m=await c.queryAttributes(u,p,s);for(let r of m){let{layer:a,feature:o}=r;this._styleRepository.getStyleLayerVisibility(a.uid)&&a.isIntersectingFeature(u,p,o,c.tileKey.level,i,f,r,s)&&e.push({type:`graphic`,layer:this.layer,graphic:new t({attributes:o.values,origin:new y(this.layer,r.layer.id,r.layer.uid)}),mapPoint:s===`point`?n[0].clone():null})}(await c.getSymbolHitResults([],o)).map(t=>{t.graphic.geometry=this._tileToMapPoint(t.tilePoint,a.transforms.tileUnitsToPixels),e.push({type:`graphic`,layer:this.layer,graphic:t.graphic,mapPoint:s===`point`?n[0].clone():null})}),e.sort((e,t)=>(v(t.graphic.origin)?t.graphic.origin.layerIndex:0)-(v(e.graphic.origin)?e.graphic.origin.layerIndex:0))}_tileToMapPoint(e,t){if(!e)return null;let n=e[0]*t[0]+e[1]*t[3]+t[6],r=e[0]*t[1]+e[1]*t[4]+t[7],i=this.view.state,a=[0,0];return i.toMap(a,[n,r]),new h({x:a[0],y:a[1],spatialReference:i.spatialReference})}_ensureTileIndex(e){let t=e.featureIndex;return t||(t=E.create(e.key,e.layerData,this._styleRepository,this._tileHandler,this.layer),e.featureIndex=t),t}_pauseQueues(){this._fetchQueue.pause(),this._parseQueue.pause()}_resumeQueues(){this._fetchQueue.resume(),this._parseQueue.resume()}_clearQueues(){this._fetchQueue.clear(),this._parseQueue.clear()}};e([d()],R.prototype,`_isTileHandlerReady`,void 0),R=e([f(`esri.views.2d.layers.VectorTileLayerView2D`)],R);function z(e){if(e==null)return 0;switch(e.type){case`partial`:return Object.keys(e.diff).length;case`complete`:return Math.max(Object.keys(e.oldValue).length,Object.keys(e.newValue).length);case`collection`:return Object.keys(e.added).length+Object.keys(e.changed).length+Object.keys(e.removed).length}}const B=R;export{B as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../../../../../core/Logger.js";import{pt2px as t}from"../../../../../../../core/screenUtils.js";import{CIMSymbolHelper as n}from"../../../../../../../symbols/cim/CIMSymbolHelper.js";import{defaultCIMValues as r}from"../../../../../../../symbols/cim/defaultCIMValues.js";import{Techniques as i}from"../../../../../engine/webgl/shaderGraph/techniques/TechniqueRegistry.js";import{defineMeshWriterReferences as a}from"../../../../../engine/webgl/shaderGraph/techniques/mesh/MeshWriterReferences.js";import{getMaxSizeVVSize as o,noVisualVariables as s}from"../VisualVariablesSchema.js";import{getAnimatedTechniqueSprite as c,hasSizeVVUniform as l}from"./utils.js";function u(t,n){if(t&&n){let r=t.toLowerCase(),i=n.get(r);if(i!==void 0)return{name:r,index:i};e.getLogger(`esri.views.2d.layers.features.schema.processor.symbols/ComplexSymbolSchema`).warn(`Invalid symbol layer name: "${t}"`)}return null}function d(e,t){if(t?.enabled&&t.drawOrder){let n=t.drawOrder.map(e=>e.toLowerCase()).slice().reverse(),r=new Map;for(let t of e)if(t.groupName&&t.name){let e=t.name.toLowerCase(),i=t.groupName.toLowerCase(),a=n.indexOf(i);a!==-1&&(r.has(a)||r.set(a,[]),r.get(a).push(e))}let i=[];n.forEach((e,t)=>{r.has(t)?i.push(...r.get(t)):i.push(e)});let a=new Map;return i.forEach((e,t)=>{a.set(e,t)}),a}return null}function f(e){return e.minScale||e.maxScale?{minScale:e.minScale??0,maxScale:e.maxScale??0}:null}function p(e){if(e==null)return null;if(Array.isArray(e)){let[t,n,r,i]=e;return[t,n,r,i*255]}return typeof e==`string`?e:{...e,defaultValue:p(e?.defaultValue)}}async function m(e,t,n=!1){return g(e,t,n,!0)}async function h(e,t,n=!1){return g(e,t,n,!1)}async function g(e,t,r,i){let{cimResourceManager:o,cimAnalyzer:s,scaleExpression:c,symbolLayerDrawing:l}=t.schemaOptions,u=e.symbol;if(u==null)return[];await n.normalizeSymbolAndFetchResources(u,o);let p=s.analyzeSymbolReference(e,!1),m=f(e),h=d(p,l),g=_(u,p,r),v=u.type===`CIMPointSymbol`&&u.angleAlignment!==`Map`,b=v||g?t.schemaOptions.viewRotation:null,x={scaleInfo:m,scaleExpression:c,rotationVariable:t.rotationVariable??null,viewRotation:b,viewRotationForCalloutsOnly:g&&!v,layerOrderMap:h},S=[];for(let e of p)switch(e.type){case`marker`:S.push(...y(e,t,x));break;case`fill`:S.push(...D(e,t,x));break;case`outlineFill`:S.push(...w(e,t,x));break;case`gradientFill`:S.push(...k(e,t,x));break;case`line`:S.push(...j(e,t,x));break;case`gradientStroke`:S.push(...I(e,t,x));break;case`text`:S.push(...R(e,t,x))}if(r)for(let e of S)e.inputParams.collisionVisibility=!0;return i?a(S):S}function _(e,t,n){return!n&&e.type===`CIMLineSymbol`&&t.some(e=>(e.type===`marker`||e.type===`text`)&&e.alignment===0)&&t.some(v)}function v(e){return[...e.effects??[],...`outlineEffects`in e?e.outlineEffects??[]:[]].some(({effect:e})=>e.type===`CIMSimpleLineCallout`||e.type===`CIMBackgroundCallout`||e.type===`CIMBalloonCallout`||e.type===`CIMPointSymbolCallout`)}function y(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n,l=e.isOutline?{...s,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops}:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue,visualVariableRotation:r.visualVariableRotation};if(e.animationParams){let{hasShiftAnimation:t}=e.animationParams.params,r=t?i.animatedMarkerShift:i.animatedMarker;return b(o.ensureInstance(r,{uniforms:l,optionalAttributes:{zoomRange:!0,value1Position2Value2:e.animationParams.params.hasShiftAnimation,lineLength:t}},u(e.name,c)),e,s,n)}return S(o.ensureInstance(i.marker,{uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,c)),e,r,n)}function b(e,t,n,r){return t.animationParams?[e.createMeshInfo({pixelDimensions:t.pixelDimensions,texelDimensions:t.texelDimensions,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,sprite:c(t),animations:t.animationParams,scaleInfo:r.scaleInfo,scaleSymbolsProportionally:t.scaleSymbolsProportionally,strokeWidth:t.outlineWidth,isMapAligned:t.alignment===1,colorLocked:t.colorLocked,isStroke:t.isStroke,baseSize:t.baseSize,placement:t.markerPlacement,referenceSize:t.referenceSize,angleToLine:t.markerPlacement?t.markerPlacement.placement&&`angleToLine`in t.markerPlacement.placement&&t.markerPlacement.placement.angleToLine:!1,sizeRatio:t.sizeRatio,patternHeight:null})]:[]}function x(e,t,n,r){return t.animationParams?[e.createMeshInfo({effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,sprite:c(t),animations:t.animationParams,scaleInfo:r.scaleInfo,scaleSymbolsProportionally:!1,strokeWidth:1,isMapAligned:!0,colorLocked:t.colorLocked||!1,isStroke:!1,baseSize:`width`in t?t.width:-1,placement:null,referenceSize:2,angleToLine:!1,sizeRatio:1,patternHeight:t.type===`fill`&&t.spriteRasterizationParam?t.height:null,joinType:`join`in t?t.join:`round`,capType:`cap`in t?t.cap:`round`,miterLimit:`miterLimit`in t&&t.miterLimit||2,angle:`angle`in t?t.angle:0})]:[]}function S(e,t,n,{scaleInfo:i,scaleExpression:a}){let s=l(n);return[e.createMeshInfo({size:t.size,scaleX:t.scaleX,anchorX:t.anchorPoint.x,anchorY:t.anchorPoint.y,angle:t.rotation,color:p(t.color)??[0,0,0,0],colorLocked:t.colorLocked,frameHeight:t.frameHeight,widthRatio:t.widthRatio,scaleInfo:i,offsetX:t.offsetX,offsetY:t.offsetY,outlineColor:p(t.outlineColor)??[0,0,0,0],outlineSize:t.outlineWidth,referenceSize:t.referenceSize||r.CIMVectorMarker.size,rotateClockwise:t.rotateClockwise,scaleFactor:a??1,sizeRatio:t.sizeRatio,alignment:t.alignment,isAbsoluteAnchorPoint:t.isAbsoluteAnchorPoint,scaleSymbolsProportionally:t.scaleSymbolsProportionally,sprite:t.spriteRasterizationParam,hasSizeVV:s,placement:t.markerPlacement,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,transforms:t.transform,minPixelBuffer:o(n)})]}function C(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n,l={visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity};if(e.animationParams){let t=i.animatedFill;return x(o.ensureInstance(t,{uniforms:{...l,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null,visualVariableSizeScaleStops:null,visualVariableRotation:null},optionalAttributes:{zoomRange:!0,value1Position2Value2:!1,lineLength:!1}},u(e.name,c)),e,s,n)}return E(o.ensureInstance(i.fill,{uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,c)),e,n)}function w(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:s}=n;return T(o.ensureInstance(i.outlineFill,{uniforms:{visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:null,visualVariableSizeScaleStops:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,s)),e,n)}function T(e,n,r){let i=p(n.color)??[0,0,0,0],a=p(n.outlineColor)??[0,0,0,0];return[e.createMeshInfo({color:i,outlineColor:a,width:n.outlineWidth,referenceWidth:n.referenceWidth,minPixelBuffer:n.pixelBufferSize==null?0:t(n.pixelBufferSize)+1,capType:n.cap,joinType:n.join,miterLimit:n.miterLimit,outlineUsesColorVV:!n.outlineColorLocked,hasSizeVV:!1,scaleInfo:r.scaleInfo,...N(n,r),effects:n.effects?{type:`cim-effect-infos`,effectInfos:n.effects}:null,outlineEffects:n.outlineEffects?{type:`cim-effect-infos`,effectInfos:n.outlineEffects}:null})]}function E(e,t,n){let{scaleInfo:r}=n;return[e.createMeshInfo({color:p(t.color)??[0,0,0,0],scaleInfo:r,...N(t,n),effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function D(e,t,n){let{layerOrderMap:r}=n;if(!e.spriteRasterizationParam)return C(e,t,n);let{uniforms:a,schemaOptions:o}=t,{store:c}=o,l={visualVariableColor:e.colorLocked?null:a.visualVariableColor,visualVariableOpacity:a.visualVariableOpacity};if(e.animationParams){let t=i.animatedFill;return x(c.ensureInstance(t,{uniforms:{...l,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null,visualVariableSizeScaleStops:null,visualVariableRotation:null},optionalAttributes:{zoomRange:!0,value1Position2Value2:!1,lineLength:!1,angle:!!e.angle}},u(e.name,r)),e,s,n)}return O(c.ensureInstance(i.complexFill,{uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,r)),e,a.visualVariableColor!=null,n)}function O(e,t,n,r){let{scaleInfo:i}=r;if(!t.spriteRasterizationParam)throw Error(`InternalError: Sprite should always be defined`);let a=!!t.hasUnresolvedReplacementColor&&(!n||t.colorLocked),o=t.sampleAlphaOnly&&!a,s=t.spriteRasterizationParam;return[e.createMeshInfo({color:p(t.color)??[0,0,0,0],height:t.height,aspectRatio:t.scaleX,offsetX:t.offsetX,offsetY:t.offsetY,scaleX:1,scaleY:1,angle:t.angle,applyRandomOffset:t.applyRandomOffset,sampleAlphaOnly:o,scaleProportionally:s.resource.type===`CIMHatchFill`,sprite:s,scaleInfo:i,...N(t,r),effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function k(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:s}=n;return A(o.ensureInstance(i.gradientFill,{uniforms:{visualVariableColor:null,visualVariableOpacity:r.visualVariableOpacity},optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,s)),e,n)}function A(e,t,n){let{scaleInfo:r}=n;if(!t.spriteRasterizationParam)throw Error(`InternalError: Sprite should always be defined`);let i=t.spriteRasterizationParam;return[e.createMeshInfo({color:p(t.color)??[0,0,0,0],angle:t.angle,gradientMethod:t.gradientMethod,gradientSize:t.gradientSize,gradientSizeUnits:t.gradientSizeUnits,gradientType:t.gradientType,sprite:i,scaleInfo:r,...N(t,n),effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function j(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n,l=e.isOutline?{...s,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops}:{visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue};if(e.animationParams){let{hasShiftAnimation:t}=e.animationParams.params,r=i.animatedLine;return x(o.ensureInstance(r,{uniforms:{...l,visualVariableRotation:null},optionalAttributes:{zoomRange:!0,value1Position2Value2:!1,accumulatedDistance:!0,segmentDirection:!0,normal:!0,lineLength:t,angle:!1}},u(e.name,c)),e,s,n)}let d={uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},f=!!(l.visualVariableSizeMinMaxValue||l.visualVariableSizeScaleStops||l.visualVariableSizeStops||l.visualVariableSizeUnitValue);return e.spriteRasterizationParam?F(o.ensureInstance(i.texturedLine,d,u(e.name,c)),e,f,n):P(o.ensureInstance(i.line,d,u(e.name,c)),e,f,n)}function M(e,t,n){let{scaleInfo:r}=n;return{color:p(e.color)??[0,0,0,0],width:e.width,referenceWidth:e.referenceWidth,capType:e.cap,joinType:e.join,miterLimit:e.miterLimit,scaleInfo:r,hasSizeVV:t,...N(e,n),effects:e.effects?{type:`cim-effect-infos`,effectInfos:e.effects}:null}}function N(e,{rotationVariable:t,viewRotation:n,viewRotationForCalloutsOnly:r}){if(!e.effects?.length&&!e.outlineEffects?.length)return{};let i={};if(e.effectsChangeGeometryType&&(i.useEffectOrigin=!0),n!=null&&(!r||e.type!==`text`&&v(e))&&(i.viewRotation=n),!t)return i;let a=t.valueExpression??(t.field?`$feature[${JSON.stringify(t.field)}]`:null);return a?(i.effectRotation={valueExpressionInfo:{type:`CIMExpressionInfo`,expression:a},defaultValue:0},i.effectRotationType=t.rotationType,i):i}function P(e,t,n,r){if(t.spriteRasterizationParam)throw Error(`InternalError: Sprite should not be defined`);let i=M(t,n,r);return[e.createMeshInfo(i)]}function F(e,t,n,r){let{spriteRasterizationParam:i,scaleDash:a,sampleAlphaOnly:o}=t;if(!i)throw Error(`InternalError: Sprite should be defined`);return[e.createMeshInfo({...M(t,n,r),offsetAlongLine:t.offsetAlongLine??0,shouldScaleDash:a??!1,shouldSampleAlphaOnly:o,isSDF:i.resource.type!==`CIMPictureStroke`&&i.resource.type!==`CIMGradientStroke`,sprite:i})]}function I(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n;return L(o.ensureInstance(i.gradientStroke,{uniforms:e.isOutline?{...s,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops}:{visualVariableColor:null,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,c)),e,n)}function L(e,t,n){if(!t.spriteRasterizationParam)throw Error(`InternalError: Sprite should always be defined`);let r=t.spriteRasterizationParam;return[e.createMeshInfo({...M(t,!1,n),gradientMethod:t.gradientMethod,gradientSize:t.gradientSize,gradientSizeUnits:t.gradientSizeUnits,gradientType:t.gradientType,sprite:r,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function R(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:s}=n;return z(o.ensureInstance(i.text,{uniforms:{visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableRotation:r.visualVariableRotation,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!!n.scaleInfo,referenceSymbol:!1,clipAngle:!1}},u(e.name,s)),e,r,n)}function z(e,t,n,{scaleInfo:r,scaleExpression:i}){return[e.createMeshInfo({alignment:t.alignment,boxBackgroundColor:null,boxBorderLineColor:null,boxBorderLineSize:0,backgroundColor:p(t.backgroundColor),borderLineColor:p(t.borderLineColor),borderLineWidth:t.borderLineWidth??0,useBackgroundCallout:t.useBackgroundCallout,color:p(t.color)??[0,0,0,0],offsetX:t.offsetX,offsetY:t.offsetY,postAngle:t.angle,fontSize:t.size,referenceSize:t.referenceSize,decoration:t.decoration,haloColor:p(t.haloColor)??[0,0,0,0],haloSize:t.haloSize??0,outlineColor:p(t.outlineColor)??[0,0,0,0],outlineSize:t.outlineSize,lineWidth:t.lineWidth||512,lineHeightRatio:1,horizontalAlignment:t.horizontalAlignment??`center`,verticalAlignment:t.verticalAlignment??`baseline`,useCIMAngleBehavior:!1,glyphs:t.textRasterizationParam,scaleInfo:r,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,placement:t.markerPlacement,transforms:t.transform,scaleFactor:i??1,minPixelBuffer:o(n),repeatLabel:null,repeatLabelDistance:null,allowOverrun:null,labelPosition:null,layerId:null,labelClassId:null})]}export{b as createAnimatedMarkerMeshInfos,x as createAnimatedPolyMeshInfos,O as createComplexFillMeshInfos,S as createComplexMarkerMeshInfos,E as createComplexSimpleFillMeshInfos,P as createComplexSimpleLineMeshInfos,T as createComplexSimpleOutlineFillMeshInfos,m as createComplexSymbolInstances,h as createComplexSymbolPartSchemas,z as createComplexTextMeshInfos,F as createComplexTexturedLineMeshInfos,A as createGradientFillMeshInfos,L as createGradientStrokeMeshInfos,f as getScaleInfo};
|
|
2
|
+
import e from"../../../../../../../core/Logger.js";import{pt2px as t}from"../../../../../../../core/screenUtils.js";import{CIMSymbolHelper as n}from"../../../../../../../symbols/cim/CIMSymbolHelper.js";import{defaultCIMValues as r}from"../../../../../../../symbols/cim/defaultCIMValues.js";import{Techniques as i}from"../../../../../engine/webgl/shaderGraph/techniques/TechniqueRegistry.js";import{defineMeshWriterReferences as a}from"../../../../../engine/webgl/shaderGraph/techniques/mesh/MeshWriterReferences.js";import{getMaxSizeVVSize as o,noVisualVariables as s}from"../VisualVariablesSchema.js";import{getAnimatedTechniqueSprite as c,hasSizeVVUniform as l}from"./utils.js";function u(t,n){if(t&&n){let r=t.toLowerCase(),i=n.get(r);if(i!==void 0)return{name:r,index:i};e.getLogger(`esri.views.2d.layers.features.schema.processor.symbols/ComplexSymbolSchema`).warn(`Invalid symbol layer name: "${t}"`)}return null}function d(e,t){if(!t?.enabled||!t.drawOrder)return null;let n=t.drawOrder.map(e=>e.toLowerCase()).reverse(),r=new Map;for(let t of e){if(!t.name)continue;let e=f(t,n);if(e===-1)continue;let i=t.name.toLowerCase(),a=r.get(e);a?a.push(i):r.set(e,[i])}let i=new Map,a=0;for(let[e,t]of n.entries()){let n=r.get(e)??[t];for(let e of n)i.set(e,a++)}return i}function f(e,t){for(let n of[e.name,...e.groupNames??[]]){if(!n)continue;let e=t.indexOf(n.toLowerCase());if(e!==-1)return e}return-1}function p(e){return e.minScale||e.maxScale?{minScale:e.minScale??0,maxScale:e.maxScale??0}:null}function m(e){if(e==null)return null;if(Array.isArray(e)){let[t,n,r,i]=e;return[t,n,r,i*255]}return typeof e==`string`?e:{...e,defaultValue:m(e?.defaultValue)}}async function h(e,t,n=!1){return _(e,t,n,!0)}async function g(e,t,n=!1){return _(e,t,n,!1)}async function _(e,t,r,i){let{cimResourceManager:o,cimAnalyzer:s,scaleExpression:c,symbolLayerDrawing:l}=t.schemaOptions,u=e.symbol;if(u==null)return[];await n.normalizeSymbolAndFetchResources(u,o);let f=s.analyzeSymbolReference(e,!1),m=p(e),h=d(f,l),g=v(u,f,r),_=u.type===`CIMPointSymbol`&&u.angleAlignment!==`Map`,y=_||g?t.schemaOptions.viewRotation:null,x={scaleInfo:m,scaleExpression:c,rotationVariable:t.rotationVariable??null,viewRotation:y,viewRotationForCalloutsOnly:g&&!_,layerOrderMap:h},S=[];for(let e of f)switch(e.type){case`marker`:S.push(...b(e,t,x));break;case`fill`:S.push(...O(e,t,x));break;case`outlineFill`:S.push(...T(e,t,x));break;case`gradientFill`:S.push(...A(e,t,x));break;case`line`:S.push(...M(e,t,x));break;case`gradientStroke`:S.push(...L(e,t,x));break;case`text`:S.push(...z(e,t,x))}if(r)for(let e of S)e.inputParams.collisionVisibility=!0;return i?a(S):S}function v(e,t,n){return!n&&e.type===`CIMLineSymbol`&&t.some(e=>(e.type===`marker`||e.type===`text`)&&e.alignment===0)&&t.some(y)}function y(e){return[...e.effects??[],...`outlineEffects`in e?e.outlineEffects??[]:[]].some(({effect:e})=>e.type===`CIMSimpleLineCallout`||e.type===`CIMBackgroundCallout`||e.type===`CIMBalloonCallout`||e.type===`CIMPointSymbolCallout`)}function b(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n,l=e.isOutline?{...s,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops}:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue,visualVariableRotation:r.visualVariableRotation};if(e.animationParams){let{hasShiftAnimation:t}=e.animationParams.params,r=t?i.animatedMarkerShift:i.animatedMarker;return x(o.ensureInstance(r,{uniforms:l,optionalAttributes:{zoomRange:!0,value1Position2Value2:e.animationParams.params.hasShiftAnimation,lineLength:t}},u(e.name,c)),e,s,n)}return C(o.ensureInstance(i.marker,{uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,c)),e,r,n)}function x(e,t,n,r){return t.animationParams?[e.createMeshInfo({pixelDimensions:t.pixelDimensions,texelDimensions:t.texelDimensions,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,sprite:c(t),animations:t.animationParams,scaleInfo:r.scaleInfo,scaleSymbolsProportionally:t.scaleSymbolsProportionally,strokeWidth:t.outlineWidth,isMapAligned:t.alignment===1,colorLocked:t.colorLocked,isStroke:t.isStroke,baseSize:t.baseSize,placement:t.markerPlacement,referenceSize:t.referenceSize,angleToLine:t.markerPlacement?t.markerPlacement.placement&&`angleToLine`in t.markerPlacement.placement&&t.markerPlacement.placement.angleToLine:!1,sizeRatio:t.sizeRatio,patternHeight:null})]:[]}function S(e,t,n,r){return t.animationParams?[e.createMeshInfo({effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,sprite:c(t),animations:t.animationParams,scaleInfo:r.scaleInfo,scaleSymbolsProportionally:!1,strokeWidth:1,isMapAligned:!0,colorLocked:t.colorLocked||!1,isStroke:!1,baseSize:`width`in t?t.width:-1,placement:null,referenceSize:t.type===`line`?t.referenceWidth:2,angleToLine:!1,sizeRatio:1,patternHeight:t.type===`fill`&&t.spriteRasterizationParam?t.height:null,joinType:`join`in t?t.join:`round`,capType:`cap`in t?t.cap:`round`,miterLimit:`miterLimit`in t&&t.miterLimit||2,angle:`angle`in t?t.angle:0})]:[]}function C(e,t,n,{scaleInfo:i,scaleExpression:a}){let s=l(n);return[e.createMeshInfo({size:t.size,scaleX:t.scaleX,anchorX:t.anchorPoint.x,anchorY:t.anchorPoint.y,angle:t.rotation,color:m(t.color)??[0,0,0,0],colorLocked:t.colorLocked,frameHeight:t.frameHeight,widthRatio:t.widthRatio,scaleInfo:i,offsetX:t.offsetX,offsetY:t.offsetY,outlineColor:m(t.outlineColor)??[0,0,0,0],outlineSize:t.outlineWidth,referenceSize:t.referenceSize||r.CIMVectorMarker.size,rotateClockwise:t.rotateClockwise,scaleFactor:a??1,sizeRatio:t.sizeRatio,alignment:t.alignment,isAbsoluteAnchorPoint:t.isAbsoluteAnchorPoint,scaleSymbolsProportionally:t.scaleSymbolsProportionally,sprite:t.spriteRasterizationParam,hasSizeVV:s,placement:t.markerPlacement,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,transforms:t.transform,minPixelBuffer:o(n)})]}function w(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n,l={visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity};if(e.animationParams){let t=i.animatedFill;return S(o.ensureInstance(t,{uniforms:{...l,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null,visualVariableSizeScaleStops:null,visualVariableRotation:null},optionalAttributes:{zoomRange:!0,value1Position2Value2:!1,lineLength:!1}},u(e.name,c)),e,s,n)}return D(o.ensureInstance(i.fill,{uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,c)),e,n)}function T(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:s}=n;return E(o.ensureInstance(i.outlineFill,{uniforms:{visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:null,visualVariableSizeScaleStops:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,s)),e,n)}function E(e,n,r){let i=m(n.color)??[0,0,0,0],a=m(n.outlineColor)??[0,0,0,0];return[e.createMeshInfo({color:i,outlineColor:a,width:n.outlineWidth,referenceWidth:n.referenceWidth,minPixelBuffer:n.pixelBufferSize==null?0:t(n.pixelBufferSize)+1,capType:n.cap,joinType:n.join,miterLimit:n.miterLimit,outlineUsesColorVV:!n.outlineColorLocked,hasSizeVV:!1,scaleInfo:r.scaleInfo,...P(n,r),effects:n.effects?{type:`cim-effect-infos`,effectInfos:n.effects}:null,outlineEffects:n.outlineEffects?{type:`cim-effect-infos`,effectInfos:n.outlineEffects}:null})]}function D(e,t,n){let{scaleInfo:r}=n;return[e.createMeshInfo({color:m(t.color)??[0,0,0,0],scaleInfo:r,...P(t,n),effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function O(e,t,n){let{layerOrderMap:r}=n;if(!e.spriteRasterizationParam)return w(e,t,n);let{uniforms:a,schemaOptions:o}=t,{store:c}=o,l={visualVariableColor:e.colorLocked?null:a.visualVariableColor,visualVariableOpacity:a.visualVariableOpacity};if(e.animationParams){let t=i.animatedFill;return S(c.ensureInstance(t,{uniforms:{...l,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null,visualVariableSizeScaleStops:null,visualVariableRotation:null},optionalAttributes:{zoomRange:!0,value1Position2Value2:!1,lineLength:!1,angle:!!e.angle}},u(e.name,r)),e,s,n)}return k(c.ensureInstance(i.complexFill,{uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,r)),e,a.visualVariableColor!=null,n)}function k(e,t,n,r){let{scaleInfo:i}=r;if(!t.spriteRasterizationParam)throw Error(`InternalError: Sprite should always be defined`);let a=!!t.hasUnresolvedReplacementColor&&(!n||t.colorLocked),o=t.sampleAlphaOnly&&!a,s=t.spriteRasterizationParam;return[e.createMeshInfo({color:m(t.color)??[0,0,0,0],height:t.height,aspectRatio:t.scaleX,offsetX:t.offsetX,offsetY:t.offsetY,scaleX:1,scaleY:1,angle:t.angle,applyRandomOffset:t.applyRandomOffset,sampleAlphaOnly:o,scaleProportionally:s.resource.type===`CIMHatchFill`,sprite:s,scaleInfo:i,...P(t,r),effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function A(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:s}=n;return j(o.ensureInstance(i.gradientFill,{uniforms:{visualVariableColor:null,visualVariableOpacity:r.visualVariableOpacity},optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,s)),e,n)}function j(e,t,n){let{scaleInfo:r}=n;if(!t.spriteRasterizationParam)throw Error(`InternalError: Sprite should always be defined`);let i=t.spriteRasterizationParam;return[e.createMeshInfo({color:m(t.color)??[0,0,0,0],angle:t.angle,gradientMethod:t.gradientMethod,gradientSize:t.gradientSize,gradientSizeUnits:t.gradientSizeUnits,gradientType:t.gradientType,sprite:i,scaleInfo:r,...P(t,n),effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function M(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n,l=e.isOutline?{...s,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops}:{visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue};if(e.animationParams){let{hasShiftAnimation:t}=e.animationParams.params,r=i.animatedLine;return S(o.ensureInstance(r,{uniforms:{...l,visualVariableRotation:null},optionalAttributes:{zoomRange:!0,value1Position2Value2:!1,accumulatedDistance:!0,segmentDirection:!0,normal:!0,lineLength:t,angle:!1}},u(e.name,c)),e,s,n)}let d={uniforms:l,optionalAttributes:{zoomRange:!!n.scaleInfo}},f=!!(l.visualVariableSizeMinMaxValue||l.visualVariableSizeScaleStops||l.visualVariableSizeStops||l.visualVariableSizeUnitValue);return e.spriteRasterizationParam?I(o.ensureInstance(i.texturedLine,d,u(e.name,c)),e,f,n):F(o.ensureInstance(i.line,d,u(e.name,c)),e,f,n)}function N(e,t,n){let{scaleInfo:r}=n;return{color:m(e.color)??[0,0,0,0],width:e.width,referenceWidth:e.referenceWidth,capType:e.cap,joinType:e.join,miterLimit:e.miterLimit,scaleInfo:r,hasSizeVV:t,...P(e,n),effects:e.effects?{type:`cim-effect-infos`,effectInfos:e.effects}:null}}function P(e,{rotationVariable:t,viewRotation:n,viewRotationForCalloutsOnly:r}){if(!e.effects?.length&&!e.outlineEffects?.length)return{};let i={};if(e.effectsChangeGeometryType&&(i.useEffectOrigin=!0),n!=null&&(!r||e.type!==`text`&&y(e))&&(i.viewRotation=n),!t)return i;let a=t.valueExpression??(t.field?`$feature[${JSON.stringify(t.field)}]`:null);return a?(i.effectRotation={valueExpressionInfo:{type:`CIMExpressionInfo`,expression:a},defaultValue:0},i.effectRotationType=t.rotationType,i):i}function F(e,t,n,r){if(t.spriteRasterizationParam)throw Error(`InternalError: Sprite should not be defined`);let i=N(t,n,r);return[e.createMeshInfo(i)]}function I(e,t,n,r){let{spriteRasterizationParam:i,scaleDash:a,sampleAlphaOnly:o}=t;if(!i)throw Error(`InternalError: Sprite should be defined`);return[e.createMeshInfo({...N(t,n,r),offsetAlongLine:t.offsetAlongLine??0,shouldScaleDash:a??!1,shouldSampleAlphaOnly:o,isSDF:i.resource.type!==`CIMPictureStroke`&&i.resource.type!==`CIMGradientStroke`,sprite:i})]}function L(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:c}=n;return R(o.ensureInstance(i.gradientStroke,{uniforms:e.isOutline?{...s,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops}:{visualVariableColor:null,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!!n.scaleInfo}},u(e.name,c)),e,n)}function R(e,t,n){if(!t.spriteRasterizationParam)throw Error(`InternalError: Sprite should always be defined`);let r=t.spriteRasterizationParam;return[e.createMeshInfo({...N(t,!1,n),gradientMethod:t.gradientMethod,gradientSize:t.gradientSize,gradientSizeUnits:t.gradientSizeUnits,gradientType:t.gradientType,sprite:r,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null})]}function z(e,t,n){let{uniforms:r,schemaOptions:a}=t,{store:o}=a,{layerOrderMap:s}=n;return B(o.ensureInstance(i.text,{uniforms:{visualVariableColor:e.colorLocked?null:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableRotation:r.visualVariableRotation,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!!n.scaleInfo,referenceSymbol:!1,clipAngle:!1}},u(e.name,s)),e,r,n)}function B(e,t,n,{scaleInfo:r,scaleExpression:i}){return[e.createMeshInfo({alignment:t.alignment,boxBackgroundColor:null,boxBorderLineColor:null,boxBorderLineSize:0,backgroundColor:m(t.backgroundColor),borderLineColor:m(t.borderLineColor),borderLineWidth:t.borderLineWidth??0,useBackgroundCallout:t.useBackgroundCallout,color:m(t.color)??[0,0,0,0],offsetX:t.offsetX,offsetY:t.offsetY,postAngle:t.angle,fontSize:t.size,referenceSize:t.referenceSize,decoration:t.decoration,haloColor:m(t.haloColor)??[0,0,0,0],haloSize:t.haloSize??0,outlineColor:m(t.outlineColor)??[0,0,0,0],outlineSize:t.outlineSize,lineWidth:t.lineWidth||512,lineHeightRatio:1,horizontalAlignment:t.horizontalAlignment??`center`,verticalAlignment:t.verticalAlignment??`baseline`,useCIMAngleBehavior:!1,glyphs:t.textRasterizationParam,scaleInfo:r,effects:t.effects?{type:`cim-effect-infos`,effectInfos:t.effects}:null,placement:t.markerPlacement,transforms:t.transform,scaleFactor:i??1,minPixelBuffer:o(n),repeatLabel:null,repeatLabelDistance:null,allowOverrun:null,labelPosition:null,layerId:null,labelClassId:null})]}export{x as createAnimatedMarkerMeshInfos,S as createAnimatedPolyMeshInfos,k as createComplexFillMeshInfos,C as createComplexMarkerMeshInfos,D as createComplexSimpleFillMeshInfos,F as createComplexSimpleLineMeshInfos,E as createComplexSimpleOutlineFillMeshInfos,h as createComplexSymbolInstances,g as createComplexSymbolPartSchemas,B as createComplexTextMeshInfos,I as createComplexTexturedLineMeshInfos,j as createGradientFillMeshInfos,R as createGradientStrokeMeshInfos,p as getScaleInfo};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import"../../../core/has.js";import{abortMaybe as t,destroyMaybe as n}from"../../../core/maybe.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView3D.js";import{DirectLineMeasurementController as s}from"./DirectLineMeasurement/DirectLineMeasurementController.js";import{DirectLineMeasurementVisualization as c}from"./DirectLineMeasurement/DirectLineMeasurementVisualization.js";import l from"../interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js";import{connectAnalysisViewToTool as u,removeAnalysisViewTool as d,startPlaceOperation as f}from"../../analysis/analysisViewUtils.js";let p=class extends o{constructor(e){super(e),this.type=`direct-line-measurement-view-3d`,this.analysis=null,this.tool=null,this.result=null,this.measurementMode=0,this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this.userOperation=null}initialize(){let{analysis:e,view:t}=this;this._analysisVisualization=new c({view:t,analysis:e,analysisView:this}),this._analysisController=new s({view:t,analysis:e,viewData:this}),this.addHandles(u(this,l))}destroy(){d(this),this.userOperation=t(this.userOperation),this._analysisController=n(this._analysisController),this._analysisVisualization=n(this._analysisVisualization)}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get viewMode(){return this._analysisVisualization.viewMode}get actualVisualizedMeasurement(){return this._analysisVisualization.actualVisualizedMeasurement}get visualElementOrientation(){return this._analysisVisualization.visualElementOrientation}set visualElementOrientation(e){this._analysisVisualization.visualElementOrientation=e}get allowVisualElementsOrientationChange(){return this._analysisVisualization.allowVisualElementsOrientationChange}set allowVisualElementsOrientationChange(e){this._analysisVisualization.allowVisualElementsOrientationChange=e}get triangleCollapseRatioThreshold(){return this._analysisVisualization.triangleCollapseRatioThreshold}set triangleCollapseRatioThreshold(e){this._analysisVisualization.triangleCollapseRatioThreshold=e}get directLabelText(){return this._analysisVisualization.labels.direct?.text??``}get horizontalLabelText(){return this._analysisVisualization.labels.horizontal?.text??``}get verticalLabelText(){return this._analysisVisualization.labels.vertical?.text??``}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??a(this.view)}get testData(){}place(e){return f(this,{placementOptions:e})}};e([r()],p.prototype,`_analysisVisualization`,void 0),e([r()],p.prototype,`_analysisController`,void 0),e([r()],p.prototype,`updating`,null),e([r({readOnly:!0})],p.prototype,`type`,void 0),e([r({constructOnly:!0,nonNullable:!0})],p.prototype,`analysis`,void 0),e([r()],p.prototype,`tool`,void 0),e([r()],p.prototype,`result`,void 0),e([r()],p.prototype,`measurementMode`,void 0),e([r()],p.prototype,`elevationAlignedStartPoint`,void 0),e([r()],p.prototype,`elevationAlignedEndPoint`,void 0),e([r({readOnly:!0})],p.prototype,`viewMode`,null),e([r({readOnly:!0})],p.prototype,`actualVisualizedMeasurement`,null),e([r()],p.prototype,`visualElementOrientation`,null),e([r()],p.prototype,`allowVisualElementsOrientationChange`,null),e([r()],p.prototype,`triangleCollapseRatioThreshold`,null),e([r({readOnly:!0})],p.prototype,`directLabelText`,null),e([r({readOnly:!0})],p.prototype,`horizontalLabelText`,null),e([r({readOnly:!0})],p.prototype,`verticalLabelText`,null),e([r()],p.prototype,`unit`,null),e([r()],p.prototype,`userOperation`,void 0),p=e([i(`esri.views.3d.analysis.DirectLineMeasurementAnalysisView3D`)],p);const m=p;export{m as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import"../../../core/has.js";import{abortMaybe as t,destroyMaybe as n}from"../../../core/maybe.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView3D.js";import{DirectLineMeasurementController as s}from"./DirectLineMeasurement/DirectLineMeasurementController.js";import{DirectLineMeasurementVisualization as c}from"./DirectLineMeasurement/DirectLineMeasurementVisualization.js";import l from"../interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js";import{connectAnalysisViewToTool as u,removeAnalysisViewTool as d,startPlaceOperation as f}from"../../analysis/analysisViewUtils.js";let p=class extends o{constructor(e){super(e),this.type=`direct-line-measurement-view-3d`,this.analysis=null,this.tool=null,this.result=null,this.measurementMode=0,this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this.userOperation=null}initialize(){let{analysis:e,view:t}=this;this._analysisVisualization=new c({view:t,analysis:e,analysisView:this}),this._analysisController=new s({view:t,analysis:e,viewData:this}),this.addHandles(u(this,l))}destroy(){d(this),this.userOperation=t(this.userOperation),this._analysisController=n(this._analysisController),this._analysisVisualization=n(this._analysisVisualization)}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating||!!this.tool?.updating}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get viewMode(){return this._analysisVisualization.viewMode}get actualVisualizedMeasurement(){return this._analysisVisualization.actualVisualizedMeasurement}get visualElementOrientation(){return this._analysisVisualization.visualElementOrientation}set visualElementOrientation(e){this._analysisVisualization.visualElementOrientation=e}get allowVisualElementsOrientationChange(){return this._analysisVisualization.allowVisualElementsOrientationChange}set allowVisualElementsOrientationChange(e){this._analysisVisualization.allowVisualElementsOrientationChange=e}get triangleCollapseRatioThreshold(){return this._analysisVisualization.triangleCollapseRatioThreshold}set triangleCollapseRatioThreshold(e){this._analysisVisualization.triangleCollapseRatioThreshold=e}get directLabelText(){return this._analysisVisualization.labels.direct?.text??``}get horizontalLabelText(){return this._analysisVisualization.labels.horizontal?.text??``}get verticalLabelText(){return this._analysisVisualization.labels.vertical?.text??``}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??a(this.view)}get testData(){}place(e){return f(this,{placementOptions:e})}};e([r()],p.prototype,`_analysisVisualization`,void 0),e([r()],p.prototype,`_analysisController`,void 0),e([r()],p.prototype,`updating`,null),e([r({readOnly:!0})],p.prototype,`type`,void 0),e([r({constructOnly:!0,nonNullable:!0})],p.prototype,`analysis`,void 0),e([r()],p.prototype,`tool`,void 0),e([r()],p.prototype,`result`,void 0),e([r()],p.prototype,`measurementMode`,void 0),e([r()],p.prototype,`elevationAlignedStartPoint`,void 0),e([r()],p.prototype,`elevationAlignedEndPoint`,void 0),e([r({readOnly:!0})],p.prototype,`viewMode`,null),e([r({readOnly:!0})],p.prototype,`actualVisualizedMeasurement`,null),e([r()],p.prototype,`visualElementOrientation`,null),e([r()],p.prototype,`allowVisualElementsOrientationChange`,null),e([r()],p.prototype,`triangleCollapseRatioThreshold`,null),e([r({readOnly:!0})],p.prototype,`directLabelText`,null),e([r({readOnly:!0})],p.prototype,`horizontalLabelText`,null),e([r({readOnly:!0})],p.prototype,`verticalLabelText`,null),e([r()],p.prototype,`unit`,null),e([r()],p.prototype,`userOperation`,void 0),p=e([i(`esri.views.3d.analysis.DirectLineMeasurementAnalysisView3D`)],p);const m=p;export{m as default};
|