@arcgis/core 6.0.0-next.5 → 6.0.0-next.7
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/analysis/AreaMeasurementAnalysis.d.ts +11 -1
- package/analysis/DirectLineMeasurementAnalysis.d.ts +11 -1
- package/analysis/DistanceMeasurementAnalysis.d.ts +8 -0
- package/arcade/functions/knowledgegraph.js +1 -1
- package/arcade/geometry/unitConversion.js +1 -1
- package/arcgisGlobal.d.ts +5 -5
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{f09c9d9a554c33a753b4.js → 02253bdffbd580af22d8.js} +1 -1
- package/assets/esri/core/workers/chunks/{1ede8666d804c553803e.js → 0b6941781e35ce0f7274.js} +1 -1
- package/assets/esri/core/workers/chunks/0ccab50877b24f862d6e.js +1 -0
- package/assets/esri/core/workers/chunks/{a0d459bdb91ee892d4b6.js → 116293b1ee788a89ce1e.js} +1 -1
- package/assets/esri/core/workers/chunks/{8959a825f5e1ce6f38ac.js → 1c65ab9ed611c322ce27.js} +1 -1
- package/assets/esri/core/workers/chunks/257910cca66dc5df465e.js +1 -0
- package/assets/esri/core/workers/chunks/27da9ece2afaeec39f59.js +1 -0
- package/assets/esri/core/workers/chunks/{83589144eeeb08f45557.js → 2aeb5cc32284dd3e4d22.js} +1 -1
- package/assets/esri/core/workers/chunks/2c90f7a6432cd716db8b.js +1 -0
- package/assets/esri/core/workers/chunks/2e096537a3a5555a4a93.js +1 -0
- package/assets/esri/core/workers/chunks/{b612de42ee86c0d95247.js → 3d9d7d3a40b51eb7ee3d.js} +1 -1
- package/assets/esri/core/workers/chunks/3ffda5bf0b91700dc308.js +1 -0
- package/assets/esri/core/workers/chunks/{1317ecdfd0cfa683a493.js → 42323093827adffe56d3.js} +1 -1
- package/assets/esri/core/workers/chunks/4d3f97a48046021713a6.js +1 -0
- package/assets/esri/core/workers/chunks/505227797bcf2a1d908d.js +1 -0
- package/assets/esri/core/workers/chunks/518e8883b6ed613bf451.js +1 -0
- package/assets/esri/core/workers/chunks/{67ac6b326bf80fc3d33d.js → 53be85d04cd2da4f391d.js} +1 -1
- package/assets/esri/core/workers/chunks/54778dec1598818d93cb.js +1 -0
- package/assets/esri/core/workers/chunks/557671c897ca5563be6c.js +1 -0
- package/assets/esri/core/workers/chunks/56a24061589f4a968818.js +1 -0
- package/assets/esri/core/workers/chunks/{3ac9dcbb0571a2580236.js → 62c8c9ad09e0166207fd.js} +1 -1
- package/assets/esri/core/workers/chunks/6588725275c75fae0d9c.js +1 -0
- package/assets/esri/core/workers/chunks/{9232f57623e1fa3ccabc.js → 67e4b5651fd7ff7d8cf0.js} +1 -1
- package/assets/esri/core/workers/chunks/6ebe73f69ae822053b70.js +1 -0
- package/assets/esri/core/workers/chunks/{e521bb9ee2030245c3ce.js → 6f358116f79021ff9687.js} +1 -1
- package/assets/esri/core/workers/chunks/7038ead1fa1674416ab3.js +1 -0
- package/assets/esri/core/workers/chunks/70cc2d79653d66e85b58.js +1 -0
- package/assets/esri/core/workers/chunks/{8ba32d3a0df4a206ef1c.js → 7165d6f6a5078768bebb.js} +1 -1
- package/assets/esri/core/workers/chunks/76196c414e48834f7b92.js +1 -0
- package/assets/esri/core/workers/chunks/{cbe6c0f32608cb504695.js → 776ae25a34352d3468bc.js} +1 -1
- package/assets/esri/core/workers/chunks/801e9e66edb4961461eb.js +1 -0
- package/assets/esri/core/workers/chunks/{5078b66ba31b770b689f.js → 85908e6e9c50749cee60.js} +1 -1
- package/assets/esri/core/workers/chunks/943a0f140813ee4ab04a.js +1 -0
- package/assets/esri/core/workers/chunks/9ce91a909eccc4dfe388.js +1 -0
- package/assets/esri/core/workers/chunks/aba42885c5d6b2b5fe7f.js +1 -0
- package/assets/esri/core/workers/chunks/ad76f7ab2f3e6d5a5b3c.js +1 -0
- package/assets/esri/core/workers/chunks/ae40eac1eadd1a537bf4.js +1 -0
- package/assets/esri/core/workers/chunks/bbf993dba74850bbf9d7.js +1 -0
- package/assets/esri/core/workers/chunks/bfd85e8d54062a590f0e.js +1 -0
- package/assets/esri/core/workers/chunks/{ff3a53c3f00335552317.js → c29c474c4b1049352d3e.js} +1 -1
- package/assets/esri/core/workers/chunks/d21257d2e2a37266c0f7.js +1 -0
- package/assets/esri/core/workers/chunks/d90a3bfd45b5ed4092e0.js +1 -0
- package/assets/esri/core/workers/chunks/ddf0671976648f621269.js +1 -0
- package/assets/esri/core/workers/chunks/ecaac39dde7ec4213264.js +1 -0
- package/assets/esri/core/workers/chunks/f43a50d4bd9636e68ae5.js +1118 -0
- package/assets/esri/core/workers/chunks/fb444954be74c1962ced.js +1 -0
- package/assets/esri/core/workers/chunks/{fccbb902fe08448f91de.js → fd0a5c243f3426f2a0b5.js} +1 -1
- package/assets/esri/core/workers/chunks/fecaf0bc28aeea4d15db.js +1 -0
- package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationSettings.scss +1 -1
- package/assets/esri/themes/base/widgets/_Features.scss +1 -1
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +5 -9
- package/assets/esri/themes/base/widgets/_SelectionToolbar.scss +2 -4
- package/assets/esri/themes/base/widgets/_Tooltip.scss +1 -1
- 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/BatchAttributeForm/t9n/messages.en.json +1 -1
- package/{basemaps/BasemapCollection.d.ts → basemapGallery/BasemapGalleryModel.d.ts} +8 -8
- package/{basemaps/BasemapCollection.js → basemapGallery/BasemapGalleryModel.js} +1 -1
- package/{basemaps → basemapGallery}/BasemapsSource.d.ts +1 -1
- package/{basemaps → basemapGallery}/BasemapsSource.js +1 -1
- package/{basemaps → basemapGallery}/LocalBasemapsSource.d.ts +2 -2
- package/{basemaps → basemapGallery}/LocalBasemapsSource.js +1 -1
- package/{basemaps → basemapGallery}/PortalBasemapsSource.d.ts +2 -2
- package/{basemaps → basemapGallery}/PortalBasemapsSource.js +1 -1
- package/{basemaps → basemapGallery}/support/BasemapItem.d.ts +2 -2
- package/{basemaps → basemapGallery}/support/BasemapItem.js +1 -1
- package/{basemaps → basemapGallery}/types.d.ts +2 -2
- package/chunks/GlobalIllumination.glsl.js +4 -2
- package/chunks/GlobalIlluminationBlur.glsl.js +3 -5
- package/chunks/GlobalIlluminationUpscale.glsl.js +1 -1
- package/config.js +1 -1
- package/core/colorUtils.js +1 -1
- package/core/has.js +1 -1
- package/core/units.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/geometry/projectionUtils.js +1 -1
- package/geometry/support/wkt.js +2 -0
- package/kernel.js +1 -1
- package/layers/graphics/data/FeatureStore.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/data/geometryUtils.js +1 -1
- package/layers/graphics/data/projectionSupport.js +1 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/graphics/transferFeatures.js +1 -1
- package/layers/knowledgeGraph/layerUtils.js +1 -1
- package/layers/knowledgeGraph/nodeMovementUtils.js +1 -1
- package/layers/raster/datasets/TIFFRaster.js +1 -1
- package/package.json +2 -2
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/views/2d/analysis/AreaMeasurementAnalysisView2D.d.ts +4 -4
- package/views/2d/analysis/DistanceMeasurementAnalysisView2D.d.ts +4 -4
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureSourceEventLog.js +1 -1
- package/views/2d/layers/features/sources/strategies/AFeatureTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/sources/strategies/FeatureDrillDownTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderIndirect.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderJSON.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBFHeader.js +1 -1
- package/views/3d/analysis/ViewshedAnalysisView3D.d.ts +3 -0
- package/views/3d/analysis/VolumeMeasurementAnalysisView3D.d.ts +2 -1
- package/views/3d/layers/support/FeatureMemory.js +1 -1
- package/views/3d/layers/support/FeatureTile.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/layers/support/ImageHighlightHelper3D.js +1 -1
- package/views/3d/layers/support/featureTileQuery3D.js +1 -1
- package/views/3d/support/PBFDecoder.js +1 -1
- package/views/3d/support/elevationUpdateUtils.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadGlobalIllumination.glsl.js +16 -11
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js +2 -2
- package/views/SceneView.d.ts +4 -10
- package/views/View.d.ts +4 -12
- package/views/draw/Draw.d.ts +1 -1
- package/views/draw/support/InteractiveHandle.js +1 -1
- package/views/interactive/options/SnappingOptions.d.ts +29 -12
- package/views/interactive/options/TooltipOptions.d.ts +9 -1
- package/views/interactive/options/ValueOptions.d.ts +9 -2
- package/views/interactive/options/ViewOptions.d.ts +82 -6
- package/views/interactive/support/Units.d.ts +1 -0
- package/views/interactive/tooltip/components/DrawHeaderActions.js +1 -1
- package/views/interactive/tooltip/components/ElevationModeSelect.js +1 -1
- package/views/support/projectionUtils.js +1 -1
- package/widgets/BasemapGallery/BasemapGalleryViewModel.d.ts +2 -2
- package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
- package/widgets/BasemapGallery/support/BasemapGalleryItem.d.ts +3 -3
- package/widgets/BasemapGallery/support/LocalBasemapsSource.d.ts +2 -2
- package/widgets/BasemapGallery/support/PortalBasemapsSource.d.ts +2 -2
- package/widgets/BasemapGallery/types.d.ts +3 -3
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/DirectionalPad.js +1 -1
- package/widgets/Editor/EditorViewModel.d.ts +13 -8
- package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
- package/widgets/Editor.d.ts +9 -9
- package/widgets/Expand.js +1 -1
- package/widgets/FeatureForm.js +1 -1
- package/widgets/FeatureTable/FieldColumn.js +1 -1
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Features/FeaturesDrillIn.js +1 -1
- package/widgets/Features.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/components/SequentialNavigationUI.js +1 -1
- package/widgets/OrientedImageryViewer/components/SketchTools.js +1 -1
- package/widgets/PanoramicVideoViewer.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/ScaleRangeSlider.js +1 -1
- package/widgets/Search/SearchResultRenderer.js +1 -1
- package/widgets/Sketch/SketchViewModel.d.ts +14 -9
- package/widgets/Sketch/support/ResponsiveToolbar/ResponsiveToolbar.js +1 -1
- package/widgets/Sketch.d.ts +10 -10
- package/widgets/Track/TrackViewModel.d.ts +1 -1
- package/widgets/UtilityNetworkAssociations.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeature.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeaturesDrillIn.js +1 -1
- package/widgets/UtilityNetworkTrace/types.d.ts +2 -2
- package/widgets/UtilityNetworkTrace.js +1 -1
- package/widgets/UtilityNetworkValidateTopology.js +1 -1
- package/widgets/ValuePicker.js +1 -1
- package/widgets/VideoPlayer/components/PlayerActionsGroup.js +1 -1
- package/widgets/VideoPlayer/components/PlayerControlsGroup.js +1 -1
- package/widgets/support/GridControls.js +1 -1
- package/widgets/support/PluginSettingsControls.js +1 -1
- package/widgets/support/SelectionToolbar.js +1 -1
- package/widgets/support/SnappingControls.js +1 -1
- package/widgets/support/componentsUtils.js +1 -1
- package/arcade/geometry/wkt.js +0 -2
- package/assets/esri/core/workers/chunks/02d4f91652a79d2b637e.js +0 -1
- package/assets/esri/core/workers/chunks/05d865b2736f452ad2aa.js +0 -1
- package/assets/esri/core/workers/chunks/107b025dc5b09465a78f.js +0 -1
- package/assets/esri/core/workers/chunks/1b551ef3d84d9c1e93f9.js +0 -1
- package/assets/esri/core/workers/chunks/1f43e06dcfe56229bb0f.js +0 -1
- package/assets/esri/core/workers/chunks/260dcb79dfd0f981949f.js +0 -1
- package/assets/esri/core/workers/chunks/2a570ce6b99dac6ee996.js +0 -1
- package/assets/esri/core/workers/chunks/303676d1b10676c9cab4.js +0 -1
- package/assets/esri/core/workers/chunks/33956f12505e72e60293.js +0 -1
- package/assets/esri/core/workers/chunks/3880d2c7fb14955d7f93.js +0 -1
- package/assets/esri/core/workers/chunks/512628db534605a2a93e.js +0 -1742
- package/assets/esri/core/workers/chunks/57970d43cdcc5cf57a30.js +0 -1
- package/assets/esri/core/workers/chunks/5e184fd47e76eb976fa9.js +0 -1
- package/assets/esri/core/workers/chunks/5f3ab77a79c408423fde.js +0 -1
- package/assets/esri/core/workers/chunks/5fd099ca1024707387b2.js +0 -1
- package/assets/esri/core/workers/chunks/65654e481cce9ae40e54.js +0 -1
- package/assets/esri/core/workers/chunks/68e24fa3f564c2a5c9fd.js +0 -1
- package/assets/esri/core/workers/chunks/6aebf7cfd294e88bf926.js +0 -1
- package/assets/esri/core/workers/chunks/71103472c45928bd730c.js +0 -1
- package/assets/esri/core/workers/chunks/73a87fb270818aa75fc5.js +0 -1
- package/assets/esri/core/workers/chunks/776565dd9741ba2ba151.js +0 -1
- package/assets/esri/core/workers/chunks/8b54589f173259c1ba55.js +0 -1
- package/assets/esri/core/workers/chunks/8e7a33cc1f83063043f2.js +0 -1
- package/assets/esri/core/workers/chunks/a23272a7a47a95f6ddea.js +0 -1
- package/assets/esri/core/workers/chunks/aa5b42e44d2959fdacd3.js +0 -1
- package/assets/esri/core/workers/chunks/bff767ec5bb4c0d6b324.js +0 -1
- package/assets/esri/core/workers/chunks/c906f984b2b6e7578c06.js +0 -1
- package/assets/esri/core/workers/chunks/cbdebdfa5f2cded29d0d.js +0 -1
- package/assets/esri/core/workers/chunks/d56780290e0218d3e9de.js +0 -1
- package/assets/esri/core/workers/chunks/d89fe41c71c9621c41ae.js +0 -1
- package/assets/esri/core/workers/chunks/de02a6a1f4810f99e9bb.js +0 -1
- package/assets/esri/core/workers/chunks/e22d45aeef293a5ffb78.js +0 -1
- package/assets/esri/core/workers/chunks/e5943f3a4bbc12c06c4d.js +0 -1
- package/assets/esri/core/workers/chunks/edf3be87a997f4f05b96.js +0 -1
- package/assets/esri/core/workers/chunks/f0aaa646b17ffdbdcefa.js +0 -1
- package/assets/esri/core/workers/chunks/f0c0c02730fe0d948fc1.js +0 -1
- /package/{basemaps → basemapGallery}/support/basemapCompatibilityUtils.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/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:2*c+a,cap:`Round`,join:`Round`,referenceWidth:r,pixelBufferSize:2*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})}else 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;p&&(_e(p)&&!v(c)?this._analyzeCompositeMarkerGraphic(e,t,n,r,p,a,o,s,l,u,d):Se(p)?(x(f,e=>{e.colorLocked&&(u=!0)}),this._analyzeMultiLayerGraphicNonSDF(e,t,n,r,i,a,o,s,c,l,u,d)):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})}else 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;p&&(_e(p)&&!v(c)?this._analyzeCompositeMarkerGraphic(e,t,n,r,p,a,o,s,l,u,d):Se(p)?(x(f,e=>{e.colorLocked&&(u=!0)}),this._analyzeMultiLayerGraphicNonSDF(e,t,n,r,i,a,o,s,c,l,u,d)):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};
|
|
@@ -53,17 +53,17 @@ export default abstract class AreaMeasurementAnalysisView2D extends AnalysisView
|
|
|
53
53
|
*/
|
|
54
54
|
get result(): AreaMeasurementResult | null | undefined;
|
|
55
55
|
/**
|
|
56
|
-
* The [SnappingOptions](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/
|
|
57
|
-
* It supports [self](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/
|
|
58
|
-
* [feature](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/
|
|
56
|
+
* The [SnappingOptions](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/SnappingOptions/) for measuring.
|
|
57
|
+
* It supports [self](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/SnappingOptions/#selfEnabled) and
|
|
58
|
+
* [feature](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/SnappingOptions/#featureEnabled) snapping.
|
|
59
59
|
*
|
|
60
60
|
* > [!WARNING]
|
|
61
61
|
* >
|
|
62
62
|
* > **Known Limitations**
|
|
63
63
|
* >
|
|
64
64
|
* > This analysis currently uses its `snappingOptions` rather than [ViewOptions.snapping](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/#snapping).
|
|
65
|
-
* > Tooltips and units configured through `view.options` still apply.
|
|
66
65
|
* > Support for `view.options.snapping` in this analysis is planned for a future release.
|
|
66
|
+
* > Tooltips and units configured through `view.options` still apply.
|
|
67
67
|
*
|
|
68
68
|
* @since 5.0
|
|
69
69
|
*/
|
|
@@ -52,17 +52,17 @@ export default abstract class DistanceMeasurementAnalysisView2D extends Analysis
|
|
|
52
52
|
*/
|
|
53
53
|
get result(): DistanceMeasurementResult | null | undefined;
|
|
54
54
|
/**
|
|
55
|
-
* The [SnappingOptions](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/
|
|
56
|
-
* It supports [self](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/
|
|
57
|
-
* [feature](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/
|
|
55
|
+
* The [SnappingOptions](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/SnappingOptions/) for measuring.
|
|
56
|
+
* It supports [self](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/SnappingOptions/#selfEnabled) and
|
|
57
|
+
* [feature](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/SnappingOptions/#featureEnabled) snapping.
|
|
58
58
|
*
|
|
59
59
|
* > [!WARNING]
|
|
60
60
|
* >
|
|
61
61
|
* > **Known Limitations**
|
|
62
62
|
* >
|
|
63
63
|
* > This analysis currently uses its `snappingOptions` rather than [ViewOptions.snapping](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/#snapping).
|
|
64
|
-
* > Tooltips and units configured through `view.options` still apply.
|
|
65
64
|
* > Support for `view.options.snapping` in this analysis is planned for a future release.
|
|
65
|
+
* > Tooltips and units configured through `view.options` still apply.
|
|
66
66
|
*
|
|
67
67
|
* @since 5.0
|
|
68
68
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as ee}from"../../../geometry/support/jsonUtils.js";import w from"../../../geometry/support/rotate.js";import{isCurvedGeometry as T}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import te from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as D}from"../../../layers/graphics/featureConversionUtils.js";import O from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as k}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import A from"../../../rest/support/FeatureSet.js";import j from"../../../rest/support/Query.js";import{HittestDrawHelper as M}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{symbolToCIM as N}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as P}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as F}from"./LayerView2D.js";import{FeatureContainer as I}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as L}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as R}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as z}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as B}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as V}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as H}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as U}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as W}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as G}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as K}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as ce}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as le}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as ue}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as de}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as fe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as pe}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as me,getHittestType as he}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function Z(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function ye(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!T(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:E(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const be=c=>{let _=_e(F(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new fe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this.eventLog=new R,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new te}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await L(t)}async _attachProxy(){let e=w(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new z(this.layer);case`dimension-feature`:return new V(this.layer);case`feature`:return this.layer.source.type===`memory`?new W(this.layer):new H(this.layer);case`geojson`:case`csv`:case`wfs`:return new W(this.layer);case`parquet`:return new le(this.layer);case`subtype-group`:return new de(this.layer);case`ogc-feature`:return new K(this.layer);case`stream`:return new ue(this.layer);case`oriented-imagery`:return new ce(this.layer);case`knowledge-graph-sublayer`:return new G(this.layer);case`catalog-footprint`:return new B(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof O)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new O({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=he(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:g}=d,{features:_,aggregates:v,tracks:y}=f,b=[];if(!s&&this.hasRenderer()){let e=new Map,t=new n;for(let n of p){t.attributes=n.attributes,t.geometry=ee(n.geometry),t.symbol=null;let r=this.layerAdapter.getRenderer(t);if(!r){b.push(n);continue}let i=await P(t,{renderer:r,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!i)continue;let a=null,o=N(i);if(o.type===`web-style`)try{let e=N(await o.fetchSymbol({acceptedFormats:[`cim`,`web`]}));a=e.type===`web-style`?null:e}catch(e){h(e);continue}else a=o;let s=a?.symbol;if(!s)continue;let c=this.view.stage.cimAnalyzer.analyzeSymbolReference(a,!1).some(e=>`alignment`in e&&e.alignment===0);e.set(n,{cimSymbol:s,isScreenAligned:c})}e.size>0&&!this._hittestDrawHelper&&(this._hittestDrawHelper=new M(this.view.stage.painter.textureManager.resourceManager));let{resolution:r,rotation:a}=this.view.state,s=me(this.view,i);for(let[t,{cimSymbol:n,isScreenAligned:i}]of e){if(!t)continue;let e={hittestType:o,textInfo:null,mapRotation:a,resolution:r,searchDist:0,isScreenAligned:i};this._hittestDrawHelper.hitTest(s,n,t.geometry,e)&&b.push(t)}}else b.push(...p);let x=[..._,...b],S=[...v,...m],C=[...y,...g],w=this.featureContainer.getSortKeys(x.map(e=>e.displayId)),T=({displayId:e},{displayId:t})=>w.has(e)&&w.has(t)?w.get(e)-w.get(t):e-t;return x.sort(T).reverse(),S.sort(T).reverse(),[...S.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...C.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...x.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=A.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=A.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new I(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([ye([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=w(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=j.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=j.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(!this.updateSuspended||!e)&&(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion())}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=U(this.layer),r=[];for(let i of e.added){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),k(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=Z(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=T(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=pe({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function T(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new O,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new O,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new O().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{be as FeatureLikeLayerView2D};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as ee}from"../../../geometry/support/jsonUtils.js";import w from"../../../geometry/support/rotate.js";import{isCurvedGeometry as T}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import te from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as D}from"../../../layers/graphics/featureConversionUtils.js";import O from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as k}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import A from"../../../rest/support/FeatureSet.js";import j from"../../../rest/support/Query.js";import{HittestDrawHelper as M}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{symbolToCIM as N}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as P}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as F}from"./LayerView2D.js";import{FeatureContainer as I}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as L}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as R}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as z}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as B}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as V}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as H}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as U}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as W}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as G}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as K}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as ce}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as le}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as ue}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as de}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as fe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as pe}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as me,getHittestType as he}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function Z(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function ye(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!T(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:E(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const be=c=>{let _=_e(F(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new fe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this._lastSnappingComplexityExceeded=!0,this.eventLog=new R,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new te}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await L(t)}async _attachProxy(){let e=w(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get snappingComplexityExceeded(){if(this.eventLog.willQueryAllFeatures)return!1;let e=this.view.featuresTilingScheme.getClosestInfoForScale(this.view.scale).level,t=this.eventLog.getGeometryDensity(e),n=t?.sampleCount??0;return this.updating&&(this._lastSnappingComplexityExceeded||n<100)||(this._lastSnappingComplexityExceeded=t!=null&&n>0&&t.densePairCount/n>.95),this._lastSnappingComplexityExceeded}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new z(this.layer);case`dimension-feature`:return new V(this.layer);case`feature`:return this.layer.source.type===`memory`?new W(this.layer):new H(this.layer);case`geojson`:case`csv`:case`wfs`:return new W(this.layer);case`parquet`:return new le(this.layer);case`subtype-group`:return new de(this.layer);case`ogc-feature`:return new K(this.layer);case`stream`:return new ue(this.layer);case`oriented-imagery`:return new ce(this.layer);case`knowledge-graph-sublayer`:return new G(this.layer);case`catalog-footprint`:return new B(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof O)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new O({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=he(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:g}=d,{features:_,aggregates:v,tracks:y}=f,b=[];if(!s&&this.hasRenderer()){let e=new Map,t=new n;for(let n of p){t.attributes=n.attributes,t.geometry=ee(n.geometry),t.symbol=null;let r=this.layerAdapter.getRenderer(t);if(!r){b.push(n);continue}let i=await P(t,{renderer:r,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!i)continue;let a=null,o=N(i);if(o.type===`web-style`)try{let e=N(await o.fetchSymbol({acceptedFormats:[`cim`,`web`]}));a=e.type===`web-style`?null:e}catch(e){h(e);continue}else a=o;let s=a?.symbol;if(!s)continue;let c=this.view.stage.cimAnalyzer.analyzeSymbolReference(a,!1).some(e=>`alignment`in e&&e.alignment===0);e.set(n,{cimSymbol:s,isScreenAligned:c})}e.size>0&&!this._hittestDrawHelper&&(this._hittestDrawHelper=new M(this.view.stage.painter.textureManager.resourceManager));let{resolution:r,rotation:a}=this.view.state,s=me(this.view,i);for(let[t,{cimSymbol:n,isScreenAligned:i}]of e){if(!t)continue;let e={hittestType:o,textInfo:null,mapRotation:a,resolution:r,searchDist:0,isScreenAligned:i};this._hittestDrawHelper.hitTest(s,n,t.geometry,e)&&b.push(t)}}else b.push(...p);let x=[..._,...b],S=[...v,...m],C=[...y,...g],w=this.featureContainer.getSortKeys(x.map(e=>e.displayId)),T=({displayId:e},{displayId:t})=>w.has(e)&&w.has(t)?w.get(e)-w.get(t):e-t;return x.sort(T).reverse(),S.sort(T).reverse(),[...S.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...C.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...x.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=A.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=A.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new I(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([ye([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=w(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=j.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=j.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(!this.updateSuspended||!e)&&(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion())}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=U(this.layer),r=[];for(let i of e.added){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=D($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),k(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=Z(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=T(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=pe({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b({readOnly:!0})],y.prototype,`snappingComplexityExceeded`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function T(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new O,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new O,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new O().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{be as FeatureLikeLayerView2D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import n from"../../../../core/CircularArray.js";import{EventEmitter as r}from"../../../../core/Evented.js";import i from"../../../../core/Logger.js";import a from"../../../../core/ReactiveMap.js";import{property as o,subclass as s}from"../../../../core/accessorSupport/decorators.js";let c=class extends t{constructor(){super(...arguments),this.events=new r,this._updatingStrategy=!0,this._tileToEvent=new a,this._fetchStatus={outstanding:0,done:0},this._pipelineStatistics={type:`performance`,usedMemory:0}}get hasAllData(){return!this._updatingStrategy&&this._hasAllTileData()}get pipelineStatistics(){return this._pipelineStatistics}get willQueryAllFeatures(){return this._strategyInfo?.willQueryAllFeatures??!1}get willQueryFullResolutionGeometry(){return this._strategyInfo?.willQueryAllFeatures??!1}onEvent(e){switch(e.type){case`subscribe`:case`unsubscribe`:case`loaded`:case`error`:this._handleTileEvent(e);break;case`updateStrategyStart`:this._updatingStrategy=!0,this._fetchStatus={done:0,outstanding:0},this._strategyInfo=e.about;break;case`updateStrategyEnd`:this._updatingStrategy=!1;break;case`updateFieldsStart`:this._fetchStatus={done:0,outstanding:0};break;case`updateFieldsEnd`:break;case`updateFieldsError`:this.events.emit(`error`,e);break;case`fetchStart`:this._fetchStatus.outstanding+=1,this.events.emit(`status`,this._fetchStatus);break;case`fetchEnd`:this._fetchStatus.done+=1,this.events.emit(`status`,this._fetchStatus),e.done&&(this._fetchStatus={done:0,outstanding:0});break;case`performance`:this._pipelineStatistics=e}}_hasAllTileData(){for(let e of this._tileToEvent.values())if(e.peekLast()?.type!==`loaded`)return!1;return!0}_handleTileEvent(e){switch(e.type){case`subscribe`:{let t=new n(10);t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`unsubscribe`:this._tileToEvent.delete(e.tile);break;case`loaded`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`error`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t),this.events.emit(`error`,e),i.getLogger(this).error(`Failed to load tile ${e.tile}.`,{error:e.error});break}}}};e([o({readOnly:!0})],c.prototype,`hasAllData`,null),e([o()],c.prototype,`pipelineStatistics`,null),e([o()],c.prototype,`willQueryAllFeatures`,null),e([o()],c.prototype,`willQueryFullResolutionGeometry`,null),e([o()],c.prototype,`_updatingStrategy`,void 0),e([o()],c.prototype,`_strategyInfo`,void 0),e([o()],c.prototype,`_tileToEvent`,void 0),e([o()],c.prototype,`_pipelineStatistics`,void 0),c=e([s(`esri.views.2d.layers.features.FeatureSourceEventLog`)],c);export{c as FeatureSourceEventLog};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import n from"../../../../core/CircularArray.js";import{EventEmitter as r}from"../../../../core/Evented.js";import i from"../../../../core/Logger.js";import a from"../../../../core/ReactiveMap.js";import{property as o,subclass as s}from"../../../../core/accessorSupport/decorators.js";let c=class extends t{constructor(){super(...arguments),this.events=new r,this._updatingStrategy=!0,this._tileToEvent=new a,this._fetchStatus={outstanding:0,done:0},this._pipelineStatistics={type:`performance`,usedMemory:0},this._densityByLevel=new a}get hasAllData(){return!this._updatingStrategy&&this._hasAllTileData()}get pipelineStatistics(){return this._pipelineStatistics}get willQueryAllFeatures(){return this._strategyInfo?.willQueryAllFeatures??!1}get willQueryFullResolutionGeometry(){return this._strategyInfo?.willQueryAllFeatures??!1}getGeometryDensity(e){return this._densityByLevel.get(e)}onEvent(e){switch(e.type){case`subscribe`:case`unsubscribe`:case`loaded`:case`error`:this._handleTileEvent(e);break;case`updateStrategyStart`:this._updatingStrategy=!0,this._fetchStatus={done:0,outstanding:0},this._strategyInfo=e.about,this._densityByLevel.clear();break;case`updateStrategyEnd`:this._updatingStrategy=!1;break;case`updateFieldsStart`:this._fetchStatus={done:0,outstanding:0};break;case`updateFieldsEnd`:break;case`updateFieldsError`:this.events.emit(`error`,e);break;case`fetchStart`:this._fetchStatus.outstanding+=1,this.events.emit(`status`,this._fetchStatus);break;case`fetchEnd`:this._fetchStatus.done+=1,this.events.emit(`status`,this._fetchStatus),e.done&&(this._fetchStatus={done:0,outstanding:0});break;case`performance`:this._pipelineStatistics=e;break;case`chunk`:{let t=this._densityByLevel.get(e.level);this._densityByLevel.set(e.level,{sampleCount:(t?.sampleCount??0)+e.density.sampleCount,densePairCount:(t?.densePairCount??0)+e.density.densePairCount});break}}}_hasAllTileData(){for(let e of this._tileToEvent.values())if(e.peekLast()?.type!==`loaded`)return!1;return!0}_handleTileEvent(e){switch(e.type){case`subscribe`:{let t=new n(10);t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`unsubscribe`:this._tileToEvent.delete(e.tile);break;case`loaded`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t);break}case`error`:{let t=this._tileToEvent.get(e.tile);if(!t)return;t.enqueue(e),this._tileToEvent.set(e.tile,t),this.events.emit(`error`,e),i.getLogger(this).error(`Failed to load tile ${e.tile}.`,{error:e.error});break}}}};e([o({readOnly:!0})],c.prototype,`hasAllData`,null),e([o()],c.prototype,`pipelineStatistics`,null),e([o()],c.prototype,`willQueryAllFeatures`,null),e([o()],c.prototype,`willQueryFullResolutionGeometry`,null),e([o()],c.prototype,`_updatingStrategy`,void 0),e([o()],c.prototype,`_strategyInfo`,void 0),e([o()],c.prototype,`_tileToEvent`,void 0),e([o()],c.prototype,`_pipelineStatistics`,void 0),c=e([s(`esri.views.2d.layers.features.FeatureSourceEventLog`)],c);export{c as FeatureSourceEventLog};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import has from"../../../../../../core/has.js";import{FeatureCache as e}from"../FeatureCache.js";import{AFeatureLoadStrategy as t}from"./AFeatureLoadStrategy.js";class n extends t{constructor(t,n,r){super(t,n,r),this._chunksById=new Map,this._featureCache=new e(this.store,this._queryInfo,this._options,this._fetch.bind(this))}prepareCacheUpdate(e,t){return this._featureCache.prepareCacheUpdate(e,t)}applyCacheUpdate(){return this._featureCache.applyCacheUpdate()}unload(e){this._removeChunks(e.tile)}_onRemoveTileChunk(e){}_addChunk(e){let t=e.tile.id;this._chunksById.has(t)||this._chunksById.set(t,[]);let n=e.size();(n||e.first||e.end)&&(has(`esri-2d-update-debug`)&&console.debug(`Chunk[${e.chunkId}] ATileLoadStrategy.addChunk [count=${n}]`),this._chunksById.get(t).push(e),this.store.insert(e))}_removeChunks(e){let t=this._chunksById.get(e.key.id)??[];for(let n of t)has(`esri-2d-update-debug`)&&console.debug(`Tile[${e.key.id}] Chunk[${n.chunkId}] ATileLoadStrategy.removeChunk`),this._onRemoveTileChunk(n),this.store.remove(n);this._chunksById.delete(e.key.id)}}export{n as AFeatureTileLoadStrategy};
|
|
2
|
+
import has from"../../../../../../core/has.js";import{FeatureCache as e}from"../FeatureCache.js";import{AFeatureLoadStrategy as t}from"./AFeatureLoadStrategy.js";class n extends t{constructor(t,n,r){super(t,n,r),this._chunksById=new Map,this._featureCache=new e(this.store,this._queryInfo,this._options,this._fetch.bind(this))}prepareCacheUpdate(e,t){return this._featureCache.prepareCacheUpdate(e,t)}applyCacheUpdate(){return this._featureCache.applyCacheUpdate()}unload(e){this._removeChunks(e.tile)}_onRemoveTileChunk(e){}_addChunk(e){let t=e.tile.id;this._chunksById.has(t)||this._chunksById.set(t,[]);let n=e.size();(n||e.first||e.end)&&(has(`esri-2d-update-debug`)&&console.debug(`Chunk[${e.chunkId}] ATileLoadStrategy.addChunk [count=${n}]`),this._chunksById.get(t).push(e),this.store.insert(e),this._connection.onEvent({type:`chunk`,tile:t,level:e.tile.level,density:e.reader.geometryDensity}))}_removeChunks(e){let t=this._chunksById.get(e.key.id)??[];for(let n of t)has(`esri-2d-update-debug`)&&console.debug(`Tile[${e.key.id}] Chunk[${n.chunkId}] ATileLoadStrategy.removeChunk`),this._onRemoveTileChunk(n),this.store.remove(n);this._chunksById.delete(e.key.id)}}export{n as AFeatureTileLoadStrategy};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import has from"../../../../../../core/has.js";import{throwIfAborted as t,onAbort as n}from"../../../../../../core/promiseUtils.js";import{AFeatureTileLoadStrategy as r}from"./AFeatureTileLoadStrategy.js";import{DrillDownTileSourceChunk as i}from"./chunks/DrillDownTileSourceChunk.js";import{FeatureSetReaderJSON as a}from"../../support/FeatureSetReaderJSON.js";const o=has(`featurelayer-query-max-depth`);class s{constructor(t,r){this.subscription=t,this._tileIdToResult=new Map,this._controller=new AbortController,this._handles=e([n(t.signal,()=>this._controller.abort()),n(r,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get(e){return this._tileIdToResult.get(e)}set(e,t){this._tileIdToResult.set(e,t)}get options(){return{signal:this._controller.signal}}}class c extends r{constructor(){super(...arguments),this._loadStates=new Map}destroy(){super.destroy();for(let e of this._loadStates.values())e.destroy();this._loadStates.clear()}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}async load(e){this._loadStates.has(e.key.id)||this._loadStates.set(e.key.id,new s(e,this._options));let n=this._loadStates.get(e.key.id),r;try{for await(let r of this._fetchChunkInfos(n,e.tile,0)){let{queryJSON:e,reader:a,sourceTile:o,sourceTileDepth:s,tile:c}=r,l=new i(a,e,c,o,s,!1);t(n.options),this._addChunk(l)}}catch(e){r=e}t(n.options);let o=new i(a.empty(this.metadata),null,e.tile,null,-1,!0);if(this._addChunk(o),r)throw r}unload(e){super.unload(e),this._loadStates.get(e.key.id)?.destroy(),this._loadStates.delete(e.key.id)}async*_fetchChunkInfos(e,t,n){let r=e.get(t.id),i=!!r;if(r||(r=await this._fetchChunkInfo(e,t,n),e.set(t.id,r)),r.reader.exceededTransferLimit&&n<has(`featurelayer-query-max-depth`))for(let r of t.createChildTiles())yield*this._fetchChunkInfos(e,r,n+1);else i||(yield r)}async _fetchChunkInfo(e,t,n){let r=e.subscription.tile.getQuantizationParameters(),i=this._queryInfo.createTileQuery(t,{returnExceededLimitFeatures:n===o,quantizationParameters:r});return i?{reader:await this._fetch(i,e.options,{chunkId:t.id}),queryJSON:i.inner.toJSON(),tile:e.subscription.tile,sourceTile:t,sourceTileDepth:n}:{reader:a.empty(this.metadata),queryJSON:null,tile:e.subscription.tile,sourceTile:t,sourceTileDepth:n}}}export{c as FeatureDrillDownTileLoadStrategy};
|
|
2
|
+
import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import has from"../../../../../../core/has.js";import{throwIfAborted as t,onAbort as n}from"../../../../../../core/promiseUtils.js";import{AFeatureTileLoadStrategy as r}from"./AFeatureTileLoadStrategy.js";import{DrillDownTileSourceChunk as i}from"./chunks/DrillDownTileSourceChunk.js";import{FeatureSetReaderJSON as a}from"../../support/FeatureSetReaderJSON.js";const o=has(`featurelayer-query-max-depth`);class s{constructor(t,r){this.subscription=t,this._tileIdToResult=new Map,this._controller=new AbortController,this._emittedObjectIds=new Set,this._handles=e([n(t.signal,()=>this._controller.abort()),n(r,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get(e){return this._tileIdToResult.get(e)}set(e,t){this._tileIdToResult.set(e,t)}deduplicate(e){let t=e.getCursor();for(;t.next();){let e=t.getObjectId();this._emittedObjectIds.has(e)?t.delete():this._emittedObjectIds.add(e)}}get options(){return{signal:this._controller.signal}}}class c extends r{constructor(){super(...arguments),this._loadStates=new Map}destroy(){super.destroy();for(let e of this._loadStates.values())e.destroy();this._loadStates.clear()}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}async load(e){this._loadStates.has(e.key.id)||this._loadStates.set(e.key.id,new s(e,this._options));let n=this._loadStates.get(e.key.id),r;try{for await(let r of this._fetchChunkInfos(n,e.tile,0)){let{queryJSON:e,reader:a,sourceTile:o,sourceTileDepth:s,tile:c}=r,l=new i(a,e,c,o,s,!1);t(n.options),this._addChunk(l)}}catch(e){r=e}t(n.options);let o=new i(a.empty(this.metadata),null,e.tile,null,-1,!0);if(this._addChunk(o),r)throw r}unload(e){super.unload(e),this._loadStates.get(e.key.id)?.destroy(),this._loadStates.delete(e.key.id)}async*_fetchChunkInfos(e,t,n){let r=e.get(t.id),i=!!r;if(r||(r=await this._fetchChunkInfo(e,t,n),e.set(t.id,r)),r.reader.exceededTransferLimit&&n<has(`featurelayer-query-max-depth`))for(let r of t.createChildTiles())yield*this._fetchChunkInfos(e,r,n+1);else i||(e.deduplicate(r.reader),yield r)}async _fetchChunkInfo(e,t,n){let r=e.subscription.tile.getQuantizationParameters(),i=this._queryInfo.createTileQuery(t,{returnExceededLimitFeatures:n===o,quantizationParameters:r});return i?{reader:await this._fetch(i,e.options,{chunkId:t.id}),queryJSON:i.inner.toJSON(),tile:e.subscription.tile,sourceTile:t,sourceTileDepth:n}:{reader:a.empty(this.metadata),queryJSON:null,tile:e.subscription.tile,sourceTile:t,sourceTileDepth:n}}}export{c as FeatureDrillDownTileLoadStrategy};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{ArcadeDate as e}from"../../../../../arcade/ArcadeDate.js";import{createArcadeGeometryFromOptimizedGeometry as t}from"../../../../../arcade/geometry/adapters/optimized.js";import has from"../../../../../core/has.js";import{estimateNumberArrayMemory as n}from"../../../../../core/memoryEstimations.js";import{DateOnly as r}from"../../../../../core/sql/DateOnly.js";import{TimeOnly as i}from"../../../../../core/sql/TimeOnly.js";import{GeometryCursor as a}from"../../../../../geometry/GeometryCursor.js";import{fromRectValues as o}from"../../../../../geometry/support/aaBoundingBox.js";import{getLabelPoint as s}from"../../../../../geometry/support/labelPoint.js";import{quantizeX as c,quantizeY as l}from"../../../../../geometry/support/quantizationUtils.js";import{zScale as u}from"../../../../../geometry/support/zscale.js";import{getCentroidOptimizedGeometry as d}from"../../../../../layers/graphics/centroid.js";import{convertToGeometry as f,generalizeOptimizedGeometry as p,quantizeOptimizedGeometry as m,unquantizeOptimizedGeometryInPlace as h}from"../../../../../layers/graphics/featureConversionUtils.js";import{OptimizedFeature as g}from"../../../../../layers/graphics/OptimizedFeature.js";import _ from"../../../../../layers/graphics/OptimizedGeometry.js";import{system as v,unknown as y}from"../../../../../time/constants.js";import{FeatureSetCache as b}from"./FeatureSetCache.js";const x=has(`featurelayer-simplify-thresholds`)??[.5,.5,.5,.5],S=x[0],C=x[1],w=x[2],T=x[3],E=has(`featurelayer-simplify-payload-size-factors`)??[1,2,4],D=E[0],O=E[1],k=E[2],A=has(`featurelayer-simplify-mobile-factor`)??2,j=has(`esri-mobile`),M=4294967295;function N(e,t,n){if(!(e.length>t))for(;e.length<=t;)e.push(n)}class P{constructor(e){this.metadata=e,this.type=`FeatureSetReader`,this._overrides=null,this._postQueryFilteredIds=new Set,this._joined=[],this._objectIdToIndex=null,this._boundsBuffer=[],this._deleted=new Set,this._caches=new Map,this.arcadeDeclaredClass=`esri.arcade.Feature`,this._contextTimeZone=null}destroy(){}[Symbol.dispose](){this.destroy()}getAreaSimplificationThreshold(e,t){let n=1,r=j?A:1;t>4e6?n=k*r:t>1e6?n=O*r:t>5e5?n=D*r:t>1e5&&(n=r);let i=0;return e>4e3?i=T*n:e>2e3?i=w*n:e>100?i=C:e>15&&(i=S),i}getBounds(e){N(this._boundsBuffer,this.getIndex()*4+4,0);let t=this.getBoundsXMin();if(t===M||!isFinite(t))return!1;if(this.getBoundsXMin()===0){let t=this.readGeometryWorldSpace();if(t?.isPoint&&t.coords[0]===0&&t.coords[1]===0)return o(e,0,0,0,0),!0;if(!t)return this.setBoundsXMin(M),!1;let n=1/0,r=1/0,i=-1/0,a=-1/0;return t.forEachVertex((e,t)=>{n=Math.min(n,e),r=Math.min(r,t),i=Math.max(i,e),a=Math.max(a,t)}),this.setBoundsXMin(n),this.setBoundsYMin(r),this.setBoundsXMax(i),this.setBoundsYMax(a),o(e,n,r,i,a),!0}let n=this.getBoundsXMin(),r=this.getBoundsYMin(),i=this.getBoundsXMax(),a=this.getBoundsYMax();return o(e,n,r,i,a),!0}getBoundsXMin(){return this._boundsBuffer[this.getIndex()*4]}setBoundsXMin(e){this._boundsBuffer[this.getIndex()*4]=e}getBoundsYMin(){return this._boundsBuffer[this.getIndex()*4+1]}setBoundsYMin(e){this._boundsBuffer[this.getIndex()*4+1]=e}getBoundsXMax(){return this._boundsBuffer[this.getIndex()*4+2]}setBoundsXMax(e){this._boundsBuffer[this.getIndex()*4+2]=e}getBoundsYMax(){return this._boundsBuffer[this.getIndex()*4+3]}setBoundsYMax(e){this._boundsBuffer[this.getIndex()*4+3]=e}readAttributeAsTimestamp(e){let t=this.readAttribute(e);return typeof t==`string`?new Date(t).getTime():typeof t==`number`||t==null?t:null}readAttribute(e,t=!1){let n=this._readAttribute(e,t);if(n!==void 0)return n;for(let n of this._joined){n.setIndex(this.getIndex());let r=n._readAttribute(e,t);if(r!==void 0)return r}}readAttributes(){let e=this._readAttributes();for(let t of this._joined){t.setIndex(this.getIndex());let n=t._readAttributes();for(let t of Object.keys(n))e[t]=n[t]}return e}joinAttributes(e){this._joined.push(e)}registerOverrides(e){this._overrides=e}withoutOverrides(){let e=this.copy();return e._overrides=null,e}readOptimizedFeatureWorldSpace(){let e=this.readGeometryWorldSpace(),t=this.readAttributes(),n=this.readCentroidWorldSpace();return new g(e,t,n,this.getObjectId(),this.getDisplayId())}readLegacyFeatureForDisplay(){let e=this.readCentroidForDisplay();return{attributes:this.readAttributes(),geometry:this.readLegacyGeometryForDisplay(),centroid:(e&&{x:e.coords[0],y:e.coords[1]})??null}}readLegacyFeatureWorldSpace(){let e=this.readCentroidWorldSpace();return{attributes:this.readAttributes(),geometry:this._readLegacyGeometryWorldSpace(),centroid:(e&&{x:e.coords[0],y:e.coords[1]})??null}}readLegacyGeometryForDisplay(){let e=this.readGeometryForDisplay();return f(e,this.geometryType,!1,!1)}readXForDisplay(){return this._readX()}readYForDisplay(){return this._readY()}readXWorldSpace(){let e=this._readX(),t=this.getInTransform();return t==null?e:e*t.scale[0]+t.translate[0]}readYWorldSpace(){let e=this._readY(),t=this.getInTransform();return t==null?e:t.translate[1]-e*t.scale[1]}readGeometryForDisplay(){let e=this._readGeometryDeltaDecoded(!0);if(!e){let e=this._createDeltaQuantizedGeometryFromServerCentroid();return e?e.deltaDecode():null}return e}readGeometryForDisplayTransformed(e){let t=this.readGeometryForDisplay();if(t&&this.metadata.geometryType===`esriGeometryPolyline`&&(t=p(t,this.metadata.geometryType,e.scale[0])),t&&=m(t,this.metadata.geometryType,e,t.hasZ,t.hasM,!0),!t){let t=this.readCentroidForDisplay();if(!t)return null;let n=c(e,t.coords[0]),r=l(e,t.coords[1]);return this._createDeltaQuantizedExtrudedGeometry(n,r).deltaDecode()}return t}_transformToWorldSpace(e){if(!e)return null;e=e.clone();let t=this.getInTransform();t&&h(e,t);let n=u(this.metadata.spatialReference,this.metadata.outSpatialReference);if(e.hasZ&&n!==1){let{stride:t,coords:r}=e;for(let e=2;e<r.length;e+=t)r[e]*=n}return e}readGeometryWorldSpace(){let e=this._readGeometry();return e||=this._createDeltaQuantizedGeometryFromServerCentroid(),this._transformToWorldSpace(e)}readCentroidForDisplay(){let e=this.readGeometryForDisplay();return e?this._computeDisplayCentroid(e):this._readServerCentroid()}readCentroidWorldSpace(){let e=this.readGeometryForDisplay(),t=e?this._computeDisplayCentroid(e):this._readServerCentroid();return this._transformToWorldSpace(t)}setCache(e){let t=this._caches.get(e);t??(t=new b(this.getSize()),this._caches.set(e,t)),this._activeCache=t}setCachedValue(e){this._activeCache.set(this.getIndex(),e)}hasCachedValue(){return this._activeCache.has(this.getIndex())}getCachedValue(){return this._activeCache.get(this.getIndex())}delete(){this._deleted.add(this.getObjectId())}getByReferenceVertexCount(){return null}get underlyingMemory(){let e=0;e+=n(this._boundsBuffer);for(let t of this._caches.values())e+=t.usedMemory;return e}getDisplayTransform(){return null}_readGeometryDeltaDecoded(e){let t=this._readGeometry(e);if(this.geometryType===`esriGeometryPoint`||!t)return t;let n=this.getInTransform();if(!t||!n)return t;let r=n.scale[2]??1,i=n.translate[2]??0,a=n.scale[3]??1,o=n.translate[3]??0,{hasZ:s,hasM:c,stride:l,size:u,coords:d}=t,f=s&&(r!==1||i!==0),p=c&&(a!==1||o!==0);if(f||p){let e=s?3:2;for(let t=0,n=l*u;t<n;t+=l)f&&(d[t+2]=r*d[t+2]+i),p&&(d[t+e]=a*d[t+e]+o)}return t.deltaDecode()}get contextTimeZone(){return this._contextTimeZone}set contextTimeZone(e){this._contextTimeZone=e}readArcadeFeature(){return this}hasField(e){return this.fields.has(e)||this._joined.some(t=>t.hasField(e))}geometry(){let e=this.readGeometryWorldSpace();if(e==null)return null;let n;switch(this.geometryType){case`esriGeometryPoint`:n=`point`;break;case`esriGeometryMultipoint`:n=`multipoint`;break;case`esriGeometryPolyline`:n=`polyline`;break;case`esriGeometryPolygon`:n=`polygon`;break;default:throw Error(`Unexpected geometry type: ${this.geometryType}`)}return t(n,{lengths:e.lengths,coords:e.coords,hasZ:this.hasZ,hasM:this.hasM},this.metadata.outSpatialReference)}autocastArcadeDate(t,n){return n&&n instanceof Date?this.isUnknownDateTimeField(t)?e.unknownDateJSToArcadeDate(n):e.dateJSAndZoneToArcadeDate(n,this.contextTimeZone??v):n}isUnknownDateTimeField(e){return this.metadata.fieldsIndex.getTimeZone(e)===y}field(t){let n=this.fields.get(t);if(n)switch(n.type){case`date-only`:case`esriFieldTypeDateOnly`:return r.fromReader(this.readAttribute(t,!1));case`time-only`:case`esriFieldTypeTimeOnly`:return i.fromReader(this.readAttribute(t,!1));case`esriFieldTypeTimestampOffset`:case`timestamp-offset`:return e.fromReaderAsTimeStampOffset(this.readAttribute(t,!1));case`date`:case`esriFieldTypeDate`:return this.autocastArcadeDate(t,this.readAttribute(t,!0));default:return this.readAttribute(t,!1)}for(let a of this._joined)if(a.setIndex(this.getIndex()),n=a.fields.get(t),n)switch(n.type){case`date-only`:case`esriFieldTypeDateOnly`:return r.fromReader(a._readAttribute(t,!1));case`time-only`:case`esriFieldTypeTimeOnly`:return i.fromReader(a._readAttribute(t,!1));case`esriFieldTypeTimestampOffset`:case`timestamp-offset`:return e.fromReaderAsTimeStampOffset(a._readAttribute(t,!1));case`date`:case`esriFieldTypeDate`:return this.autocastArcadeDate(t,a._readAttribute(t,!0));default:return this.readAttribute(t,!1)}throw Error(`Field ${t} does not exist`)}setField(e,t){throw Error(`Unable to update feature attribute values, feature is readonly`)}keys(){return this.fields.fields.map(e=>e.name)}isEmpty(){return this.fields.fields.length<=0&&this.geometry()==null}castToText(e=!1){if(!e)return JSON.stringify(this.readLegacyFeatureForDisplay());let t=this.readLegacyFeatureForDisplay();if(!t)return JSON.stringify(null);let n={geometry:t.geometry,attributes:{...t.attributes}};for(let e in n.attributes){let t=n.attributes[e];t instanceof Date&&(n.attributes[e]=t.getTime())}return JSON.stringify(n)}gdbVersion(){return null}fullSchema(){return this.metadata.arcadeSchema}castAsJson(){return{attributes:this._readAttributes(),geometry:this.geometry()?.castAsJson()??null}}castAsJsonAsync(){return Promise.resolve(this.castAsJson())}applyPostQueryFilter(e){if(this._postQueryFilteredIds.clear(),!e)return;let t=this.getCursor();for(;t.next();)e.check(t,{currentUser:null})||this._postQueryFilteredIds.add(t.getObjectId())}_getExists(){if(this._overrides){let e=this.getObjectId();return!this._overrides.hasOverride(e)}let e=this.getObjectId();return this._deleted.has(e)||!this._postQueryFilteredIds.has(e)}_computeDisplayCentroid(e){if(this.getInTransform()==null)return d(e);let t=a.fromOptimized(e,this.geometryType);t.yFactor*=-1;let n=s(t);return n?isNaN(n[0])||isNaN(n[1])?d(e):(n[1]*=-1,new _([],n)):null}copyInto(e){e._joined=this._joined,e._overrides=this._overrides,e._objectIdToIndex=this._objectIdToIndex,e._boundsBuffer=this._boundsBuffer,e._activeCache=this._activeCache,e._caches=this._caches,e._contextTimeZone=this._contextTimeZone,e._postQueryFilteredIds=this._postQueryFilteredIds,e._deleted=this._deleted}_readLegacyGeometryWorldSpace(){let e=this.readGeometryWorldSpace();return f(e,this.geometryType,!1,!1)}_createDeltaQuantizedGeometryFromServerCentroid(){let e=this._readServerCentroid();if(!e)return null;let[t,n]=e.coords;return this._createDeltaQuantizedExtrudedGeometry(t,n)}_createDeltaQuantizedExtrudedGeometry(e,t){return this.geometryType===`esriGeometryPolyline`?this._createDeltaQuantizedExtrudedLine(e,t):this._createDeltaQuantizedExtrudedQuad(e,t)}_createDeltaQuantizedExtrudedQuad(e,t){return new _([5],[e-1,t,1,-1,1,1,-1,1,-1,-1])}_createDeltaQuantizedExtrudedLine(e,t){return new _([2],[e-1,t+1,1,-1])}}export{P as FeatureSetReader};
|
|
2
|
+
import{ArcadeDate as e}from"../../../../../arcade/ArcadeDate.js";import{createArcadeGeometryFromOptimizedGeometry as t}from"../../../../../arcade/geometry/adapters/optimized.js";import has from"../../../../../core/has.js";import{estimateNumberArrayMemory as n}from"../../../../../core/memoryEstimations.js";import{DateOnly as r}from"../../../../../core/sql/DateOnly.js";import{TimeOnly as i}from"../../../../../core/sql/TimeOnly.js";import{GeometryCursor as a}from"../../../../../geometry/GeometryCursor.js";import{fromRectValues as o}from"../../../../../geometry/support/aaBoundingBox.js";import{getLabelPoint as s}from"../../../../../geometry/support/labelPoint.js";import{quantizeX as c,quantizeY as l}from"../../../../../geometry/support/quantizationUtils.js";import{zScale as u}from"../../../../../geometry/support/zscale.js";import{getCentroidOptimizedGeometry as d}from"../../../../../layers/graphics/centroid.js";import{convertToGeometry as f,generalizeOptimizedGeometry as p,quantizeOptimizedGeometry as m,unquantizeOptimizedGeometryInPlace as h}from"../../../../../layers/graphics/featureConversionUtils.js";import{OptimizedFeature as g}from"../../../../../layers/graphics/OptimizedFeature.js";import _ from"../../../../../layers/graphics/OptimizedGeometry.js";import{system as v,unknown as y}from"../../../../../time/constants.js";import{FeatureSetCache as b}from"./FeatureSetCache.js";const x=has(`featurelayer-simplify-thresholds`)??[.5,.5,.5,.5],S=x[0],C=x[1],w=x[2],T=x[3],E=has(`featurelayer-simplify-payload-size-factors`)??[1,2,4],D=E[0],O=E[1],k=E[2],A=has(`featurelayer-simplify-mobile-factor`)??2,j=has(`esri-mobile`),M=4294967295;function N(e,t,n){if(!(e.length>t))for(;e.length<=t;)e.push(n)}class P{constructor(e){this.metadata=e,this.type=`FeatureSetReader`,this._overrides=null,this._postQueryFilteredIds=new Set,this._joined=[],this._objectIdToIndex=null,this._boundsBuffer=[],this._deleted=new Set,this._caches=new Map,this.arcadeDeclaredClass=`esri.arcade.Feature`,this._contextTimeZone=null}destroy(){}[Symbol.dispose](){this.destroy()}get geometryDensity(){return{sampleCount:0,densePairCount:0}}getAreaSimplificationThreshold(e,t){let n=1,r=j?A:1;t>4e6?n=k*r:t>1e6?n=O*r:t>5e5?n=D*r:t>1e5&&(n=r);let i=0;return e>4e3?i=T*n:e>2e3?i=w*n:e>100?i=C:e>15&&(i=S),i}getBounds(e){N(this._boundsBuffer,this.getIndex()*4+4,0);let t=this.getBoundsXMin();if(t===M||!isFinite(t))return!1;if(this.getBoundsXMin()===0){let t=this.readGeometryWorldSpace();if(t?.isPoint&&t.coords[0]===0&&t.coords[1]===0)return o(e,0,0,0,0),!0;if(!t)return this.setBoundsXMin(M),!1;let n=1/0,r=1/0,i=-1/0,a=-1/0;return t.forEachVertex((e,t)=>{n=Math.min(n,e),r=Math.min(r,t),i=Math.max(i,e),a=Math.max(a,t)}),this.setBoundsXMin(n),this.setBoundsYMin(r),this.setBoundsXMax(i),this.setBoundsYMax(a),o(e,n,r,i,a),!0}let n=this.getBoundsXMin(),r=this.getBoundsYMin(),i=this.getBoundsXMax(),a=this.getBoundsYMax();return o(e,n,r,i,a),!0}getBoundsXMin(){return this._boundsBuffer[this.getIndex()*4]}setBoundsXMin(e){this._boundsBuffer[this.getIndex()*4]=e}getBoundsYMin(){return this._boundsBuffer[this.getIndex()*4+1]}setBoundsYMin(e){this._boundsBuffer[this.getIndex()*4+1]=e}getBoundsXMax(){return this._boundsBuffer[this.getIndex()*4+2]}setBoundsXMax(e){this._boundsBuffer[this.getIndex()*4+2]=e}getBoundsYMax(){return this._boundsBuffer[this.getIndex()*4+3]}setBoundsYMax(e){this._boundsBuffer[this.getIndex()*4+3]=e}readAttributeAsTimestamp(e){let t=this.readAttribute(e);return typeof t==`string`?new Date(t).getTime():typeof t==`number`||t==null?t:null}readAttribute(e,t=!1){let n=this._readAttribute(e,t);if(n!==void 0)return n;for(let n of this._joined){n.setIndex(this.getIndex());let r=n._readAttribute(e,t);if(r!==void 0)return r}}readAttributes(){let e=this._readAttributes();for(let t of this._joined){t.setIndex(this.getIndex());let n=t._readAttributes();for(let t of Object.keys(n))e[t]=n[t]}return e}joinAttributes(e){this._joined.push(e)}registerOverrides(e){this._overrides=e}withoutOverrides(){let e=this.copy();return e._overrides=null,e}readOptimizedFeatureWorldSpace(){let e=this.readGeometryWorldSpace(),t=this.readAttributes(),n=this.readCentroidWorldSpace();return new g(e,t,n,this.getObjectId(),this.getDisplayId())}readLegacyFeatureForDisplay(){let e=this.readCentroidForDisplay();return{attributes:this.readAttributes(),geometry:this.readLegacyGeometryForDisplay(),centroid:(e&&{x:e.coords[0],y:e.coords[1]})??null}}readLegacyFeatureWorldSpace(){let e=this.readCentroidWorldSpace();return{attributes:this.readAttributes(),geometry:this._readLegacyGeometryWorldSpace(),centroid:(e&&{x:e.coords[0],y:e.coords[1]})??null}}readLegacyGeometryForDisplay(){let e=this.readGeometryForDisplay();return f(e,this.geometryType,!1,!1)}readXForDisplay(){return this._readX()}readYForDisplay(){return this._readY()}readXWorldSpace(){let e=this._readX(),t=this.getInTransform();return t==null?e:e*t.scale[0]+t.translate[0]}readYWorldSpace(){let e=this._readY(),t=this.getInTransform();return t==null?e:t.translate[1]-e*t.scale[1]}readGeometryForDisplay(){let e=this._readGeometryDeltaDecoded(!0);if(!e){let e=this._createDeltaQuantizedGeometryFromServerCentroid();return e?e.deltaDecode():null}return e}readGeometryForDisplayTransformed(e){let t=this.readGeometryForDisplay();if(t&&this.metadata.geometryType===`esriGeometryPolyline`&&(t=p(t,this.metadata.geometryType,e.scale[0])),t&&=m(t,this.metadata.geometryType,e,t.hasZ,t.hasM,!0),!t){let t=this.readCentroidForDisplay();if(!t)return null;let n=c(e,t.coords[0]),r=l(e,t.coords[1]);return this._createDeltaQuantizedExtrudedGeometry(n,r).deltaDecode()}return t}_transformToWorldSpace(e){if(!e)return null;e=e.clone();let t=this.getInTransform();t&&h(e,t);let n=u(this.metadata.spatialReference,this.metadata.outSpatialReference);if(e.hasZ&&n!==1){let{stride:t,coords:r}=e;for(let e=2;e<r.length;e+=t)r[e]*=n}return e}readGeometryWorldSpace(){let e=this._readGeometry();return e||=this._createDeltaQuantizedGeometryFromServerCentroid(),this._transformToWorldSpace(e)}readCentroidForDisplay(){let e=this.readGeometryForDisplay();return e?this._computeDisplayCentroid(e):this._readServerCentroid()}readCentroidWorldSpace(){let e=this.readGeometryForDisplay(),t=e?this._computeDisplayCentroid(e):this._readServerCentroid();return this._transformToWorldSpace(t)}setCache(e){let t=this._caches.get(e);t??(t=new b(this.getSize()),this._caches.set(e,t)),this._activeCache=t}setCachedValue(e){this._activeCache.set(this.getIndex(),e)}hasCachedValue(){return this._activeCache.has(this.getIndex())}getCachedValue(){return this._activeCache.get(this.getIndex())}delete(){this._deleted.add(this.getObjectId())}getByReferenceVertexCount(){return null}get underlyingMemory(){let e=0;e+=n(this._boundsBuffer);for(let t of this._caches.values())e+=t.usedMemory;return e}getDisplayTransform(){return null}_readGeometryDeltaDecoded(e){let t=this._readGeometry(e);if(this.geometryType===`esriGeometryPoint`||!t)return t;let n=this.getInTransform();if(!t||!n)return t;let r=n.scale[2]??1,i=n.translate[2]??0,a=n.scale[3]??1,o=n.translate[3]??0,{hasZ:s,hasM:c,stride:l,size:u,coords:d}=t,f=s&&(r!==1||i!==0),p=c&&(a!==1||o!==0);if(f||p){let e=s?3:2;for(let t=0,n=l*u;t<n;t+=l)f&&(d[t+2]=r*d[t+2]+i),p&&(d[t+e]=a*d[t+e]+o)}return t.deltaDecode()}get contextTimeZone(){return this._contextTimeZone}set contextTimeZone(e){this._contextTimeZone=e}readArcadeFeature(){return this}hasField(e){return this.fields.has(e)||this._joined.some(t=>t.hasField(e))}geometry(){let e=this.readGeometryWorldSpace();if(e==null)return null;let n;switch(this.geometryType){case`esriGeometryPoint`:n=`point`;break;case`esriGeometryMultipoint`:n=`multipoint`;break;case`esriGeometryPolyline`:n=`polyline`;break;case`esriGeometryPolygon`:n=`polygon`;break;default:throw Error(`Unexpected geometry type: ${this.geometryType}`)}return t(n,{lengths:e.lengths,coords:e.coords,hasZ:this.hasZ,hasM:this.hasM},this.metadata.outSpatialReference)}autocastArcadeDate(t,n){return n&&n instanceof Date?this.isUnknownDateTimeField(t)?e.unknownDateJSToArcadeDate(n):e.dateJSAndZoneToArcadeDate(n,this.contextTimeZone??v):n}isUnknownDateTimeField(e){return this.metadata.fieldsIndex.getTimeZone(e)===y}field(t){let n=this.fields.get(t);if(n)switch(n.type){case`date-only`:case`esriFieldTypeDateOnly`:return r.fromReader(this.readAttribute(t,!1));case`time-only`:case`esriFieldTypeTimeOnly`:return i.fromReader(this.readAttribute(t,!1));case`esriFieldTypeTimestampOffset`:case`timestamp-offset`:return e.fromReaderAsTimeStampOffset(this.readAttribute(t,!1));case`date`:case`esriFieldTypeDate`:return this.autocastArcadeDate(t,this.readAttribute(t,!0));default:return this.readAttribute(t,!1)}for(let a of this._joined)if(a.setIndex(this.getIndex()),n=a.fields.get(t),n)switch(n.type){case`date-only`:case`esriFieldTypeDateOnly`:return r.fromReader(a._readAttribute(t,!1));case`time-only`:case`esriFieldTypeTimeOnly`:return i.fromReader(a._readAttribute(t,!1));case`esriFieldTypeTimestampOffset`:case`timestamp-offset`:return e.fromReaderAsTimeStampOffset(a._readAttribute(t,!1));case`date`:case`esriFieldTypeDate`:return this.autocastArcadeDate(t,a._readAttribute(t,!0));default:return this.readAttribute(t,!1)}throw Error(`Field ${t} does not exist`)}setField(e,t){throw Error(`Unable to update feature attribute values, feature is readonly`)}keys(){return this.fields.fields.map(e=>e.name)}isEmpty(){return this.fields.fields.length<=0&&this.geometry()==null}castToText(e=!1){if(!e)return JSON.stringify(this.readLegacyFeatureForDisplay());let t=this.readLegacyFeatureForDisplay();if(!t)return JSON.stringify(null);let n={geometry:t.geometry,attributes:{...t.attributes}};for(let e in n.attributes){let t=n.attributes[e];t instanceof Date&&(n.attributes[e]=t.getTime())}return JSON.stringify(n)}gdbVersion(){return null}fullSchema(){return this.metadata.arcadeSchema}castAsJson(){return{attributes:this._readAttributes(),geometry:this.geometry()?.castAsJson()??null}}castAsJsonAsync(){return Promise.resolve(this.castAsJson())}applyPostQueryFilter(e){if(this._postQueryFilteredIds.clear(),!e)return;let t=this.getCursor();for(;t.next();)e.check(t,{currentUser:null})||this._postQueryFilteredIds.add(t.getObjectId())}_getExists(){let e=this.getObjectId();return this._deleted.has(e)?!1:this._overrides?!this._overrides.hasOverride(e):!this._postQueryFilteredIds.has(e)}_computeDisplayCentroid(e){if(this.getInTransform()==null)return d(e);let t=a.fromOptimized(e,this.geometryType);t.yFactor*=-1;let n=s(t);return n?isNaN(n[0])||isNaN(n[1])?d(e):(n[1]*=-1,new _([],n)):null}copyInto(e){e._joined=this._joined,e._overrides=this._overrides,e._objectIdToIndex=this._objectIdToIndex,e._boundsBuffer=this._boundsBuffer,e._activeCache=this._activeCache,e._caches=this._caches,e._contextTimeZone=this._contextTimeZone,e._postQueryFilteredIds=this._postQueryFilteredIds,e._deleted=this._deleted}_readLegacyGeometryWorldSpace(){let e=this.readGeometryWorldSpace();return f(e,this.geometryType,!1,!1)}_createDeltaQuantizedGeometryFromServerCentroid(){let e=this._readServerCentroid();if(!e)return null;let[t,n]=e.coords;return this._createDeltaQuantizedExtrudedGeometry(t,n)}_createDeltaQuantizedExtrudedGeometry(e,t){return this.geometryType===`esriGeometryPolyline`?this._createDeltaQuantizedExtrudedLine(e,t):this._createDeltaQuantizedExtrudedQuad(e,t)}_createDeltaQuantizedExtrudedQuad(e,t){return new _([5],[e-1,t,1,-1,1,1,-1,1,-1,-1])}_createDeltaQuantizedExtrudedLine(e,t){return new _([2],[e-1,t+1,1,-1])}}export{P as FeatureSetReader};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{baseObjectMemory as e}from"../../../../../core/memoryEstimations.js";import{normalizeTransform as t,quantizeX as n,quantizeY as r}from"../../../../../geometry/support/quantizationUtils.js";import{convertToGeometry as i}from"../../../../../layers/graphics/featureConversionUtils.js";import{FeatureSetReader as a}from"./FeatureSetReader.js";class o extends a{static from(e,t){if(e instanceof this){let n=new Set(t),r=e._indices.filter(e=>n.has(e)),i=e.copy();return i._indices=r,i._currentIndex=-1,i}return new o(e.copy(),t)}constructor(e,t){super(e.metadata),this._currentIndex=-1,this._displayTransform=null,this._reader=e,this._indices=t}setTransformForDisplay(e){let n=this._reader.getInTransform();if(n==null){this._displayTransform=t(e);return}let r=t(n),i=t(e),[a,o]=r.scale,[s,c]=r.translate,[l,u]=i.scale,[d,f]=i.translate,p=a/l,m=o/u,h=(s-d)/l,g=(c-f)/u;this._displayTransform={originPosition:`lowerLeft`,scale:[1/p,1/m,1,1],translate:[-h/p,-g/m,0,0]}}getInTransform(){return this._reader.getInTransform()}getDisplayTransform(){return this._displayTransform}get fields(){return this._reader.fields}get hasNext(){return this._currentIndex+1<this._indices.length}getSize(){return this._indices.length}getCursor(){return this.copy()}copy(){let e=new o(this._reader.copy(),this._indices);return e._currentIndex=this._currentIndex,e._displayTransform=this._displayTransform,e._processorAttributes=this._processorAttributes,e}get contextTimeZone(){return this._reader.contextTimeZone}set contextTimeZone(e){this._reader.contextTimeZone=e}get usedMemory(){return e+this._reader.usedMemory}setProcessorAttributes(e){this._processorAttributes=Object.assign(this._processorAttributes??{},e)}_nextIndex(){return++this._currentIndex<this._indices.length&&(this._reader.setIndex(this._indices[this._currentIndex]),!0)}next(){for(;this._nextIndex()&&!this._reader._getExists(););return this._currentIndex<this._indices.length}readXForDisplay(){return this._displayTransform?n(this._displayTransform,this._reader.readXForDisplay()):this._reader.readXForDisplay()}readYForDisplay(){return this._displayTransform?r(this._displayTransform,this._reader.readYForDisplay()):this._reader.readYForDisplay()}readGeometryForDisplay(){return this._displayTransform?this._reader.readGeometryForDisplayTransformed(this._displayTransform):this._reader.readGeometryForDisplay()}readCentroidForDisplay(){let e=this._reader.readCentroidForDisplay()?.clone();if(e){let[t,i]=e.coords;this._displayTransform&&(e.coords[0]=n(this._displayTransform,t),e.coords[1]=r(this._displayTransform,i))}return e}get geometryType(){return this._reader.geometryType}get hasFeatures(){return this._reader.hasFeatures}get exceededTransferLimit(){return this._reader.exceededTransferLimit}get hasZ(){return this._reader.hasZ}get hasM(){return this._reader.hasM}readAttribute(e,t=!1){let n=this._reader.readAttribute(e,t);return n!=null||!this._processorAttributes?n:this._processorAttributes[e]}readAttributes(){return{...this._processorAttributes,...this._reader.readAttributes()}}joinAttributes(e){return this._reader.joinAttributes(e)}getBounds(e){return this._reader.getBounds(e)}getAttributeHash(){return this._reader.getAttributeHash()}getObjectId(){return this._reader.getObjectId()}getDisplayId(){return this._reader.getDisplayId()}setDisplayId(e){return this._reader.setDisplayId(e)}setIndex(e){return this._reader.setIndex(e)}getIndex(){return this._reader.getIndex()}readXWorldSpace(){return this._reader.readXWorldSpace()}readYWorldSpace(){return this._reader.readYWorldSpace()}_readX(){return this._reader.readXForDisplay()}_readY(){return this._reader.readYForDisplay()}_readServerCentroid(){return this._reader._readServerCentroid()}readLegacyFeatureForDisplay(){let e=this.readCentroidForDisplay();return{attributes:this.readAttributes(),geometry:this.readLegacyGeometryForDisplay(),centroid:(e&&{x:e.coords[0],y:e.coords[1]})??null}}readLegacyGeometryForDisplay(){let e=this.readGeometryForDisplay();return i(e,this.geometryType,!1,!1)}readGeometryArea(){return this._displayTransform?this._reader.readGeometryForDisplayTransformed(this._displayTransform)?.area()??0:this._reader.readGeometryArea()}readGeometryWorldSpace(){return this._reader.readGeometryWorldSpace()}_readGeometry(){return this._reader._readGeometry()}_readAttribute(e,t){throw Error(`Error: Should not be called. Underlying _reader should be used instead`)}_readAttributes(){throw Error(`Error: Should not be called. Underlying _reader should be used instead`)}readArcadeFeature(){return this._reader.readArcadeFeature()}geometry(){return this._reader.geometry()}field(e){return this._reader.field(e)}hasField(e){return this._reader.hasField(e)}setField(e,t){return this._reader.setField(e,t)}keys(){return this._reader.keys()}castToText(e=!1){return this._reader.castToText(e)}}export{o as FeatureSetReaderIndirect};
|
|
2
|
+
import{baseObjectMemory as e}from"../../../../../core/memoryEstimations.js";import{normalizeTransform as t,quantizeX as n,quantizeY as r}from"../../../../../geometry/support/quantizationUtils.js";import{convertToGeometry as i}from"../../../../../layers/graphics/featureConversionUtils.js";import{FeatureSetReader as a}from"./FeatureSetReader.js";class o extends a{static from(e,t){if(e instanceof this){let n=new Set(t),r=e._indices.filter(e=>n.has(e)),i=e.copy();return i._indices=r,i._currentIndex=-1,i}return new o(e.copy(),t)}constructor(e,t){super(e.metadata),this._currentIndex=-1,this._displayTransform=null,this._reader=e,this._indices=t}setTransformForDisplay(e){let n=this._reader.getInTransform();if(n==null){this._displayTransform=t(e);return}let r=t(n),i=t(e),[a,o]=r.scale,[s,c]=r.translate,[l,u]=i.scale,[d,f]=i.translate,p=a/l,m=o/u,h=(s-d)/l,g=(c-f)/u;this._displayTransform={originPosition:`lowerLeft`,scale:[1/p,1/m,1,1],translate:[-h/p,-g/m,0,0]}}getInTransform(){return this._reader.getInTransform()}getDisplayTransform(){return this._displayTransform}get fields(){return this._reader.fields}get hasNext(){return this._currentIndex+1<this._indices.length}getSize(){return this._indices.length}getCursor(){return this.copy()}copy(){let e=new o(this._reader.copy(),this._indices);return e._currentIndex=this._currentIndex,e._displayTransform=this._displayTransform,e._processorAttributes=this._processorAttributes,e}get contextTimeZone(){return this._reader.contextTimeZone}set contextTimeZone(e){this._reader.contextTimeZone=e}get usedMemory(){return e+this._reader.usedMemory}setProcessorAttributes(e){this._processorAttributes=Object.assign(this._processorAttributes??{},e)}_nextIndex(){return++this._currentIndex<this._indices.length&&(this._reader.setIndex(this._indices[this._currentIndex]),!0)}next(){for(;this._nextIndex()&&!this._reader._getExists(););return this._currentIndex<this._indices.length}readXForDisplay(){return this._displayTransform?n(this._displayTransform,this._reader.readXForDisplay()):this._reader.readXForDisplay()}readYForDisplay(){return this._displayTransform?r(this._displayTransform,this._reader.readYForDisplay()):this._reader.readYForDisplay()}readGeometryForDisplay(){return this._displayTransform?this._reader.readGeometryForDisplayTransformed(this._displayTransform):this._reader.readGeometryForDisplay()}readCentroidForDisplay(){let e=this._reader.readCentroidForDisplay()?.clone();if(e){let[t,i]=e.coords;this._displayTransform&&(e.coords[0]=n(this._displayTransform,t),e.coords[1]=r(this._displayTransform,i))}return e}get geometryType(){return this._reader.geometryType}get hasFeatures(){return this._reader.hasFeatures}get exceededTransferLimit(){return this._reader.exceededTransferLimit}get hasZ(){return this._reader.hasZ}get hasM(){return this._reader.hasM}readAttribute(e,t=!1){let n=this._reader.readAttribute(e,t);return n!=null||!this._processorAttributes?n:this._processorAttributes[e]}readAttributes(){return{...this._processorAttributes,...this._reader.readAttributes()}}joinAttributes(e){return this._reader.joinAttributes(e)}getBounds(e){return this._reader.getBounds(e)}getAttributeHash(){return this._reader.getAttributeHash()}getObjectId(){return this._reader.getObjectId()}getDisplayId(){return this._reader.getDisplayId()}setDisplayId(e){return this._reader.setDisplayId(e)}setIndex(e){return this._reader.setIndex(e)}getIndex(){return this._reader.getIndex()}readXWorldSpace(){return this._reader.readXWorldSpace()}readYWorldSpace(){return this._reader.readYWorldSpace()}_readX(){return this._reader.readXForDisplay()}_readY(){return this._reader.readYForDisplay()}_readServerCentroid(){return this._reader._readServerCentroid()}readLegacyFeatureForDisplay(){let e=this.readCentroidForDisplay();return{attributes:this.readAttributes(),geometry:this.readLegacyGeometryForDisplay(),centroid:(e&&{x:e.coords[0],y:e.coords[1]})??null}}readLegacyGeometryForDisplay(){let e=this.readGeometryForDisplay();return i(e,this.geometryType,!1,!1)}readGeometryArea(){return this._displayTransform?this._reader.readGeometryForDisplayTransformed(this._displayTransform)?.area()??0:this._reader.readGeometryArea()}readGeometryWorldSpace(){return this._reader.readGeometryWorldSpace()}_readGeometry(){return this._reader._readGeometry()}get geometryDensity(){return this._reader.geometryDensity}_readAttribute(e,t){throw Error(`Error: Should not be called. Underlying _reader should be used instead`)}_readAttributes(){throw Error(`Error: Should not be called. Underlying _reader should be used instead`)}readArcadeFeature(){return this._reader.readArcadeFeature()}geometry(){return this._reader.geometry()}field(e){return this._reader.field(e)}hasField(e){return this._reader.hasField(e)}setField(e,t){return this._reader.setField(e,t)}keys(){return this._reader.keys()}castToText(e=!1){return this._reader.castToText(e)}}export{o as FeatureSetReaderIndirect};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{convertFromFeatures as e,convertFromFeatureSet as t,getQuantizedArea as n}from"../../../../../layers/graphics/featureConversionUtils.js";import{hasGeometry as r}from"../../../../../layers/graphics/OptimizedFeature.js";import i from"../../../../../layers/support/FieldsIndex.js";import{FeatureSetReader as a}from"./FeatureSetReader.js";
|
|
2
|
+
import has from"../../../../../core/has.js";import{convertFromFeatures as e,convertFromFeatureSet as t,getQuantizedArea as n}from"../../../../../layers/graphics/featureConversionUtils.js";import{hasGeometry as r}from"../../../../../layers/graphics/OptimizedFeature.js";import i from"../../../../../layers/support/FieldsIndex.js";import{FeatureSetReader as a}from"./FeatureSetReader.js";const o=has(`featurelayer-snapping-density-sample-interval`),s=has(`featurelayer-snapping-density-max-vertices-per-feature`),c=has(`featurelayer-snapping-density-max-distance`)**2;class l extends a{static fromFeatures(t,n){let{geometryType:r,hasZ:i,hasM:a,featureIdInfo:o}=n,s=e([],t,r,i,a,o);for(let e=0;e<s.length;e++)s[e].displayId=t[e].displayId;return l.fromOptimizedFeatures(s,n)}static fromFeatureSet(e,n){let r=t(e,n.featureIdInfo);return l.fromOptimizedFeatureSet(r,n)}static fromOptimizedFeatureSet(e,t){let n=l.fromOptimizedFeatures(e.features,t,e.transform);return n._exceededTransferLimit=e.exceededTransferLimit,n._fieldsIndex=new i(e.fields),n}static fromOptimizedFeatures(e,t,n){let r=new l(e,t);return r._fieldsIndex=t.fieldsIndex,r._transform=n,n&&(r.geometryType===`esriGeometryPolyline`||r.geometryType===`esriGeometryPolygon`)&&(r._geometryDensity=u(e)),r}static empty(e){return new l([],e)}constructor(e,t){super(t),this._geometryDensity={sampleCount:0,densePairCount:0},this._featureIndex=-1,this._exceededTransferLimit=!1,this._fieldsIndex=null,this._hasZ=!1,this._hasM=!1,this._geometryType=t.geometryType,this._hasZ=t.hasZ,this._hasM=t.hasM,this._features=e}get fields(){return this._fieldsIndex}get geometryType(){return this._geometryType}get hasFeatures(){return!!this._features.length}get hasNext(){return this._featureIndex+1<this._features.length}get exceededTransferLimit(){return this._exceededTransferLimit}get hasZ(){return this._hasZ}get hasM(){return this._hasM}get geometryDensity(){return this._geometryDensity}get _current(){return this._features[this._featureIndex]}get usedMemory(){return this._current.usedMemory}getSize(){return this._features.length}getCursor(){return this.copy()}getInTransform(){return this._transform}getAttributeHash(){let e=``;for(let t in this._current.attributes)e+=this._current.attributes[t];return e}getIndex(){return this._featureIndex}setIndex(e){this._featureIndex=e}getObjectId(){return this._current?.objectId}getDisplayId(){return this._current.displayId}setDisplayId(e){this._current.displayId=e}getByReferenceVertexCount(){return this._current.vertexCount}copy(){let e=new l(this._features,this.metadata);return this.copyInto(e),e}next(){for(;++this._featureIndex<this._features.length&&!this._getExists(););return this._featureIndex<this._features.length}readGeometryArea(){return r(this._current)?n(this._current.geometry,2):0}_readX(){return r(this._current)?this._current.geometry.coords[0]:0}_readY(){return r(this._current)?this._current.geometry.coords[1]:0}_readGeometry(){return r(this._current)?this._current.geometry??null:null}_readServerCentroid(){return this._current.centroid}_readAttribute(e,t){if(!this._fieldsIndex){let t=this._current.attributes[e];if(t!==void 0)return t;let n=e.toLowerCase();for(let e in this._current.attributes)if(e.toLowerCase()===n)return this._current.attributes[e];return}let n=this._fieldsIndex.get(e);if(!n)return;let r=this._current.attributes[n.name];return r==null?r:t&&this.fields.isDateField(e)?new Date(r):r}_readAttributes(){return this._current.attributes}copyInto(e){super.copyInto(e),e._featureIndex=this._featureIndex,e._transform=this._transform,e._fieldsIndex=this._fieldsIndex,e._geometryDensity=this._geometryDensity}}function u(e){let t={sampleCount:0,densePairCount:0};for(let n=0;n<e.length;n+=o){let r=e[n].geometry;if(!r)continue;let{coords:i,lengths:a,stride:o}=r,l=Math.min(a[0]??0,s);for(let e=1;e<l;e++){let n=e*o;t.sampleCount++;let r=i[n],a=i[n+1];r*r+a*a<=c&&t.densePairCount++}}return t}export{l as FeatureSetReaderJSON};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../../../core/Error.js";import"../../../../../core/has.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{baseObjectMemory as n}from"../../../../../core/memoryEstimations.js";import r from"../../../../../core/pbf.js";import i from"../../../../../layers/graphics/OptimizedGeometry.js";import{FeatureSetCache as a}from"./FeatureSetCache.js";import{FeatureSetReader as o}from"./FeatureSetReader.js";import{parseHeader as s}from"./FeatureSetReaderPBFHeader.js";const c=128e3,l={small:{delta:new Int32Array(128),decoded:new Int32Array(128)},small64:{delta:new Float64Array,decoded:new Float64Array},large:{delta:new Int32Array(c),decoded:new Int32Array(c)},large64:{delta:new Float64Array,decoded:new Float64Array}};function u(e,t){return t?e<=l.small64.delta.length?l.small64:(e<=l.large64.delta.length||(l.large64.delta=new Float64Array(Math.round(e*1.25)),l.large64.decoded=new Float64Array(Math.round(e*1.25))),l.large64):e<=l.small.delta.length?l.small:(e<=l.large.delta.length||(l.large.delta=new Int32Array(Math.round(e*1.25)),l.large.decoded=new Int32Array(Math.round(e*1.25))),l.large)}function d(t){try{let e=new r(new Uint8Array(t),new DataView(t));for(;e.next();)switch(e.tag()){case 2:return f(e.getMessage());default:e.skip()}}catch(t){throw new e(`query:parsing-pbf`,`Error while parsing FeatureSet PBF payload`,{error:t})}return null}function f(e){for(;e.next();)switch(e.tag()){case 1:return e.getMessage();default:e.skip()}return null}function p(e){let t=e.getLength(),n=e.pos()+t;for(;e.pos()<n&&e.next();)switch(e.tag()){case 1:return e.getString();case 2:return e.getFloat();case 3:return e.getDouble();case 4:return e.getSInt32();case 5:return e.getUInt32();case 6:return e.getInt64();case 7:return e.getUInt64();case 8:return e.getSInt64();case 9:return e.getBool();default:return e.skip(),null}return null}function m(e,t,n,r,i){return e?t*i-r*n===0&&t*r+n*i>0:!1}class h extends o{static fromBuffer(e,t,n=!1){let r=t.geometryType,i=d(e),a=s(i,r===`esriGeometryPoint`,t.featureIdInfo);return new h(i,
|
|
2
|
+
import e from"../../../../../core/Error.js";import"../../../../../core/has.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{baseObjectMemory as n}from"../../../../../core/memoryEstimations.js";import r from"../../../../../core/pbf.js";import i from"../../../../../layers/graphics/OptimizedGeometry.js";import{FeatureSetCache as a}from"./FeatureSetCache.js";import{FeatureSetReader as o}from"./FeatureSetReader.js";import{parseHeader as s}from"./FeatureSetReaderPBFHeader.js";const c=128e3,l={small:{delta:new Int32Array(128),decoded:new Int32Array(128)},small64:{delta:new Float64Array,decoded:new Float64Array},large:{delta:new Int32Array(c),decoded:new Int32Array(c)},large64:{delta:new Float64Array,decoded:new Float64Array}};function u(e,t){return t?e<=l.small64.delta.length?l.small64:(e<=l.large64.delta.length||(l.large64.delta=new Float64Array(Math.round(e*1.25)),l.large64.decoded=new Float64Array(Math.round(e*1.25))),l.large64):e<=l.small.delta.length?l.small:(e<=l.large.delta.length||(l.large.delta=new Int32Array(Math.round(e*1.25)),l.large.decoded=new Int32Array(Math.round(e*1.25))),l.large)}function d(t){try{let e=new r(new Uint8Array(t),new DataView(t));for(;e.next();)switch(e.tag()){case 2:return f(e.getMessage());default:e.skip()}}catch(t){throw new e(`query:parsing-pbf`,`Error while parsing FeatureSet PBF payload`,{error:t})}return null}function f(e){for(;e.next();)switch(e.tag()){case 1:return e.getMessage();default:e.skip()}return null}function p(e){let t=e.getLength(),n=e.pos()+t;for(;e.pos()<n&&e.next();)switch(e.tag()){case 1:return e.getString();case 2:return e.getFloat();case 3:return e.getDouble();case 4:return e.getSInt32();case 5:return e.getUInt32();case 6:return e.getInt64();case 7:return e.getUInt64();case 8:return e.getSInt64();case 9:return e.getBool();default:return e.skip(),null}return null}function m(e,t,n,r,i){return e?t*i-r*n===0&&t*r+n*i>0:!1}class h extends o{static fromBuffer(e,t,n=!1){let r=t.geometryType,i=d(e),a=r===`esriGeometryPolyline`||r===`esriGeometryPolygon`,o=s(i,r===`esriGeometryPoint`,t.featureIdInfo,a);return new h(i,o,t,n)}constructor(e,t,n,r){super(n),this._use64Bit=r,this._hasNext=!1,this._isPoints=!1,this._featureIndex=-1,this._featureOffset=0,this._cache={area:0,unquantGeometry:void 0,geometry:void 0},this._parseCaches=[],this._geometryType=n.geometryType,this._reader=e,this._header=t,this._hasNext=t.hasFeatures,this._isPoints=n.geometryType===`esriGeometryPoint`}get _size(){return this._header.featureCount}get fields(){return this._header.fields}get geometryType(){return this._geometryType}get hasZ(){return this._header.hasZ}get hasM(){return this._header.hasM}get hasFeatures(){return this._header.hasFeatures}get hasNext(){return this._hasNext}get exceededTransferLimit(){return this._header.exceededTransferLimit}getByReferenceVertexCount(){return this._header.byReferenceVertexCounts.get(this._featureIndex)}getSize(){return this._size}getInTransform(){return this._header.transform}getCursor(){return this.copy()}getIndex(){return this._featureIndex}setIndex(e){this._cache.area=0,this._cache.unquantGeometry=void 0,this._cache.geometry=void 0,this._featureIndex=e}getAttributeHash(){let e=``;for(let t of this._header.fields.fields)e+=this._readAttributeAtIndex(t.index)+`.`;return e}getObjectId(){if(this._header.idFieldIndices.length===1)return this._readAttributeAtIndex(this._header.idFieldIndices[0]);let e=this._header.idFieldIndices.map(e=>this._readAttributeAtIndex(e));return JSON.stringify(e)}getDisplayId(){return this._header.displayIds[this._featureIndex]}setDisplayId(e){this._header.displayIds[this._featureIndex]=e}readGeometryArea(){return this._cache.area||this._readGeometry(!0),this._cache.area}copy(){let e=this._reader.clone(),t=new h(e,this._header,this.metadata,this._use64Bit);return this.copyInto(t),t}next(){for(this._cache.area=0,this._cache.unquantGeometry=void 0,this._cache.geometry=void 0;++this._featureIndex<this._size&&!this._getExists(););return this._featureIndex<this._size}get usedMemory(){return n+(this._cache.geometry?.usedMemory??0)}get underlyingMemory(){return super.underlyingMemory+this._reader.usedMemory+this._header.usedMemory}_readX(){return this._header.centroid[this._featureIndex*this._header.stride]}_readY(){return this._header.centroid[this._featureIndex*this._header.stride+1]}_readServerCentroid(){let e=new i([],[],this.hasZ,this.hasM),{coords:t,stride:n}=e;for(let e=this._featureIndex*n,r=e+n;e<r;++e)t.push(this._header.centroid[e]);return t[0]===268435455?null:e}_readGeometry(e=!1){if((this.hasZ||this.hasM)&&(e=!1),this._cache.geometry===void 0){let t=null;if(this._isPoints)t=this._readServerCentroid();else{let n=this._header.offsets.geometry[this._featureIndex],r=this._reader;if(n===0)return null;r.move(n);try{t=e?this._parseGeometryForDisplay(r):this._parseGeometry(r)}catch{return null}}return t?.coords.length===0&&(t=null),this._cache.geometry=t,t}return this._cache.geometry}get geometryDensity(){return this._header.geometryDensity}_readAttribute(e,t){let n=this._header.fields.get(e);if(n==null)return;let r=this._readAttributeAtIndex(n.index),i=this._header.fields.isDateField(n.name);return!t||r==null?r:i?new Date(r):r}_readAttributes(){let e={};for(let t of this._header.fields.fields)e[t.name]=this._readAttributeAtIndex(t.index);return e}copyInto(e){super.copyInto(e),e._featureIndex=this._featureIndex,e._featureOffset=this._featureOffset,e._hasNext=this._hasNext,e._parseCaches=this._parseCaches}_readAttributeAtIndex(e){let t=this._parseCaches[e];if(t||(t=new a(this.getSize()),this._parseCaches[e]=t),t.has(this._featureIndex))return t.get(this._featureIndex);let n=this._header.offsets.attributes[this._featureIndex*this._header.fieldCount+e],r=this._reader;r.move(n);let i=p(r);return t.set(this._featureIndex,i),i}_readGeometryDeltaDecoded(e){if(this._cache.unquantGeometry===void 0){let t=this._readGeometry(e);if(!t)return this._cache.unquantGeometry=void 0,null;let n=this.getInTransform();if(!n)return this._cache.unquantGeometry=t,t;let r=n.scale[2]??1,i=n.translate[2]??1,a=n.scale[3]??1,o=n.translate[3]??1,s=t.coords.length,c=u(s,this._use64Bit).decoded,l=t.clone(c);this._cache.unquantGeometry=l;let{lengths:d,coords:f,hasZ:p,hasM:m}=l,h=p&&(r!==1||i!==0),g=m&&(a!==1||o!==0),_=0;for(let e of d){let t=f[_++],n=f[_++];if(h){let e=f[_];f[_++]=r*e+i}if(g){let e=f[_];f[_++]=a*e+o}for(let s=1;s<e;++s){if(t=f[_++]+=t,n=f[_++]+=n,h){let e=f[_];f[_++]=r*e+i}if(g){let e=f[_];f[_++]=a*e+o}}}return l}return this._cache.unquantGeometry}_parseGeometry(e){let t=e.asUnsafe(),n=t.getPackedEnd(),r=[],a=[];for(;t.pos()<n&&t.next();)switch(t.tag()){case 2:{let e=t.getPackedEnd();for(;t.pos()<e;)a.push(t.getUInt32());break}case 3:{let e=t.getPackedEnd();for(;t.pos()<e;)r.push(t.getSInt64());break}default:t.skip()}return new i(a,r,this.hasZ,this.hasM)}_parseGeometryForDisplay(e){let n=e.asUnsafe(),r=n.getLength(),a=n.pos()+r,o=[],s=[],c=0,l=0,d=null,f=0,p=this.geometryType===`esriGeometryPolygon`,h=this.geometryType===`esriGeometryPolyline`,g=p?3:h?2:1,_=p||h;for(;n.pos()<a&&n.next();)switch(n.tag()){case 2:{let e=n.getUInt32(),t=n.pos()+e;for(;n.pos()<t;){let e=n.getUInt32();o.push(e),c+=e}d=u(c*2,this._use64Bit).delta;break}case 3:{n.getUInt32();let e=2+ +!!this.hasZ+ +!!this.hasM;t(d);for(let t of o){if(l+e*t>d.length){for(let e=0;e<t;e++)n.getSInt64(),n.getSInt64(),this.hasZ&&n.getSInt64(),this.hasM&&n.getSInt64();continue}let r=n.getSInt64(),i=n.getSInt64();this.hasZ&&n.getSInt64(),this.hasM&&n.getSInt64(),d[l++]=r,d[l++]=i;let a=1;for(let e=1;e<t;e++){let e=n.getSInt64(),t=n.getSInt64();this.hasZ&&n.getSInt64(),this.hasM&&n.getSInt64();let o=r+e,s=i+t;f+=-.5*(o-r)*(s+i),r=o,i=s,e===0&&t===0||m(_,d[l-2],d[l-1],e,t)?(d[l-2]+=e,d[l-1]+=t):(d[l++]=e,d[l++]=t,a+=1)}a>=g?s.push(a):l-=a*e}break}default:n.skip()}return this._cache.area=f,s.length?new i(s,d):d==null?null:this._createDeltaQuantizedExtrudedGeometry(d[0],d[1])}}export{h as FeatureSetReaderPBF};
|