@arcgis/core 5.2.0-next.136 → 5.2.0-next.137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/468fa166608ffc9108d9.js +1 -0
- package/assets/esri/core/workers/chunks/{bb51cf52b8ea8283f4f8.js → 55ae00f33f5240a73a50.js} +1 -1
- package/assets/esri/core/workers/chunks/5fd099ca1024707387b2.js +1 -0
- package/assets/esri/core/workers/chunks/{5f4feca26102088ea565.js → 96c3900685cfb2a8ca12.js} +1 -1
- package/assets/esri/core/workers/chunks/{06da3409992bb1fa85b0.js → a8b7e6198c2d0c37c9a0.js} +37 -29
- package/assets/esri/core/workers/chunks/{152fe3d6ad7aebbd23d1.js → d4f55e2b1ace7867a3b8.js} +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.en.json +1 -1
- package/chunks/GlobalIllumination.glsl.js +3 -3
- package/chunks/RibbonLine.glsl.js +1 -1
- package/config.js +1 -1
- package/editing/sharedTemplates/templateDefinitions/TemplateDefinitionBase.js +1 -1
- package/geometry/support/ellipseUtils.js +2 -0
- package/kernel.js +1 -1
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/orientedImagery/queries.js +1 -1
- package/package.json +2 -2
- package/support/revision.js +1 -1
- package/support/tests/serviceMockDependencies.js +1 -1
- package/support/tests/setupServiceMocksMesh.js +1 -1
- package/symbols/cim/callouts/calloutAnalysisUtils.js +1 -1
- package/symbols/cim/callouts/effects/BackgroundCallout.js +1 -1
- package/symbols/cim/callouts/effects/BalloonCallout.js +1 -1
- package/symbols/cim/callouts/effects/PointSymbolCallout.js +1 -1
- package/symbols/cim/callouts/effects/calloutUtils.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/CollisionJob.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/SymbolFader.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/jobsUtil.js +1 -1
- package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/markers/ComputedMarkerParams.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/mesh/CalloutMeshWriterPolicy.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/layers/features/layerAdapters/labelingUtils.js +1 -1
- package/views/2d/layers/features/schema/processor/LabelMatcherSchema.js +1 -1
- package/views/2d/layers/features/schema/processor/MatcherSchema.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/SymbolSchema.js +1 -1
- package/views/2d/layers/support/vectorTileDebugUtils.js +1 -1
- package/views/2d/layers/support/visualVariableSimpleUtils.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedObserverManipulatedObject3D.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
- package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
- package/views/3d/interactive/editingTools/tooltipUtils3D.js +1 -1
- package/views/3d/state/controllers/GroundNavigationController.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +14 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +5 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/support/VideoFeatureCache.js +2 -0
- package/widgets/OrientedImageryViewer.js +2 -2
- package/widgets/PanoramicViewer/PanoramicVideoViewerViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/078dcd17f46403d44b24.js +0 -1
- package/assets/esri/core/workers/chunks/3ef367c9b7bf1588307d.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as n}from"../../core/lang.js";import r from"../../core/Logger.js";import{pt2px as i,px2pt as a}from"../../core/screenUtils.js";import{numericHash as o}from"../../core/string.js";import{isCurvedGeometry as s}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as c}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{checkForAnimations as l,globalRotation as u,getAnimationParams as d,handleAbsoluteAnchor as f,handleMarker as p,handleRelativeAnchor as m,getFrameTranslation as h,translate as g,getStaticParam as _,shouldUseAnimatedPath as v}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as y,CIMSymbolHelper as b,forEachSymbolLayer as x}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as C}from"./defaultCIMValues.js";import{fitVectorMarker as w}from"./fitVectorMarker.js";import{fromCIMFontStyle as T}from"./fromCIMFontStyle.js";import{OverrideHelper as E}from"./OverrideHelper.js";import{hasRichTextFormattingTags as D}from"./richTextUtils.js";import{getSDFInfo as O,getExtent as k,getSDFMetrics as A,getSDFDimensions as j}from"./SDFHelper.js";import{CIMSymbolUnits as M}from"./types.js";import{colorToArray as N,normalizeAlpha as P,getSize as F,isCIMMarkerStrokePlacement as I,hasStrokeLayer as L,getNumericValue as R,getMaxStrokeWidth as z,getTintColor as B,normalizePrimitiveOverrideProps as V,getDefaultCIMValue as H,getEnum as U,getFillColor as W,getStrokeColor as G,fromCIMFontDecoration as K,getStrokeWidth as q,fromCIMVerticalAlignment as ee,fromCIMHorizontalAlignment as te,getTextCasing as J,isValidCIMValue as ne,uncapitalize as re}from"./utils.js";import{isSupportedCallout as ie,getPointSymbolCalloutTransforms as ae,normalizePointSymbolCalloutScale as oe,normalizeLeaderLineStyle as Y,getPointSymbolCalloutFitProperties as se,normalizeBalloonCalloutStyle as ce}from"./callouts/calloutAnalysisUtils.js";import{EffectHelper as le}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as ue,randomInsidePolygonTextureSize as de}from"../../views/2d/engine/webgl/definitions.js";const X=()=>r.getLogger(`esri.symbols.cim.cimAnalyzer`);function fe(e){let t=e.markerPlacement;return t&&t.angleToLine?1:0}class pe{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,n,r){if(this._cimLayers=r??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(let t of this._primitiveOverrides){let n=t.valueExpressionInfo;if(n)this._setPoMap(t.primitiveName,t.propertyName,n);else if(t.value!=null){let n=t.value;t.propertyName.includes(`Color`)&&(e(n)&&(n=N(n)),n=P(n)),this._setPoMap(t.primitiveName,t.propertyName,n)}}}return this._analyzeSymbol(t.symbol,n),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){let n=e?.symbolLayers;if(!n)return;for(let e=0;e<n.length;e++){let t=n[e];t.type===`CIMVectorMarker`&&(n[e]=w(t))}let r=e.effects,i=0,a=F(e)??0;e.type===`CIMPointSymbol`&&e.angleAlignment===`Map`&&(i=1);let o={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};o=u(o),o=d(this._poMap,e,o);let s=null;e.type===`CIMPointSymbol`&&(s=this._analyzePointSymbolHalo(e,i,a,r,o),this._analyzeCallout(e,null,[],o,a,i,t));let c=s?n.filter(e=>e!==s):n;if(Ce(c,r))return this._analyzeCompositeOutlineFill(c,r,a);this._analyzeSymbolLayer(s?{...e,symbolLayers:c}:e,null,[],o,a,i,t)}_analyzeSymbolLayer(e,t,n,r,i,a,o){let s=e?.symbolLayers;if(!s)return;let c=e.type===`CIMPolygonSymbol`,l=e.effects,u=s.length;for(;u--;){let d=s[u];if(!d||d.enable===!1)continue;let f;l?.length&&(f=[...l]);let p=d.effects;p?.length&&(l?f.push(...p):f=[...p]);let m=t?[...t]:null;if(f){m??=[];for(let e of f){let t=E.findEffectOverrides(e,this._primitiveOverrides);t&&m.push(t)}}E.findApplicableOverrides(d,this._primitiveOverrides,[]);let h=this._cimLayers.length;switch(d.type){case`CIMSolidFill`:this._analyzeSolidFill(d,m,r,L(s));break;case`CIMPictureFill`:this._analyzePictureFill(d,m,r);break;case`CIMHatchFill`:this._analyzeHatchFill(d,m,r);break;case`CIMGradientFill`:this._analyzeGradientFill(d,m);break;case`CIMSolidStroke`:this._analyzeSolidStroke(d,m,c,i,r);break;case`CIMPictureStroke`:this._analyzePictureStroke(d,m,c,i,r);break;case`CIMGradientStroke`:this._analyzeGradientStroke(d,m,c,i);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:{(e.type===`CIMLineSymbol`||e.type===`CIMPolygonSymbol`)&&(a=fe(d));let t=[],s=d.primitiveName;s&&t.push(s);let l=c&&I(d.markerPlacement);this._analyzeMarker(d,m,null,t,a,i,o,n,r,!1,l);break}default:X().error(`Cannot analyze CIM layer`,d.type)}if(m?.some(({effect:e})=>Z(e)))for(let e=h;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,r,i,o){let{haloSymbol:s}=e,c=R(e.haloSize,0);if(c<=0||!s?.symbolLayers)return null;let u=s.symbolLayers.filter(e=>e.enable!==!1),f=u[0];if(!f)return null;let p=u.length===1&&f.type===`CIMSolidFill`;if(e.symbolLayers?.some(e=>l(e))===!0||l(s))return X().warnOnce(`CIM point symbol halos do not support independently animated symbol components`),null;let m=i?.map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null);if(m?.some(({effect:e})=>Z(e))){if(!p)return X().warnOnce(`Complex CIM point symbol halos are not supported with geometry-changing effects`),null;let t=e.symbolLayers?.filter(e=>e.enable!==!1)??[];if(!xe(t,m))return X().warnOnce(`CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and an unambiguous solid-fill effect chain`),null;let n=t.find(e=>e.type===`CIMSolidFill`);if(!n)return null;let i=[...m,...(n.effects??[]).map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],a=z(t),o=this._getValueOrOverrideExpression(f.type,f.primitiveName,`Color`,P(f.color));return this._cimLayers.push({type:`outlineFill`,name:n.name,colorLocked:!!n.colorLocked,color:this._getValueOrOverrideExpression(n.type,n.primitiveName,`Color`,P(n.color)),effects:i,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth: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});return}this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,i,`Color`,o),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:$(s)})}_analyzePictureFill(e,t,n){let{primitiveName:r,type:i}=e,a=B(e),o=R(e.height,C.CIMPictureFill.height),s=R(e.scaleX,1);if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height),s/=o/t*n}let c={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(r,i)},l=d(this._poMap,e,n);this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(i,r,`TintColor`,a),height:this._getValueOrOverrideExpression(i,r,`Height`,o),scaleX:this._getValueOrOverrideExpression(i,r,`ScaleX`,s),angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:$(l)})}_analyzeHatchFill(e,t,n){let{primitiveName:r,type:i}=e,a=d(this._poMap,e,n),o=this._analyzeMaterialOverrides(r,[`Rotation`,`OffsetX`,`OffsetY`]),s=V(o),c=[255,255,255,1],l=!1;if(e.lineSymbol?.symbolLayers)for(let t of e.lineSymbol.symbolLayers){if(t.type!==`CIMSolidStroke`)continue;let e=t.primitiveName??r;!l&&e&&!t.colorLocked&&(this._poMap[e]?.Color!=null||this._poMap[e]?.StrokeColor!=null)&&(c=P(t.color),c=this._maybeGetValueOrOverrideExpression(e,`StrokeColor`)??this._getValueOrOverrideExpression(i,e,`Color`,c),l=!0);let n=this._maybeGetValueOrOverrideExpression(e,`StrokeWidth`);if(n){let t=null,r=null;typeof n==`number`?t=n:r=n.valueExpressionInfo;let a=s.find(e=>e.propertyName===`strokeWidth`);a?a.propertyName=`width`:(a={type:`CIMPrimitiveOverride`,primitiveName:e,propertyName:`width`,valueExpressionInfo:r,value:t,defaultValue:H(i,`width`)},s.push(a))}}let u={type:`sprite-rasterization-param`,resource:e,overrides:s};this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:u,colorLocked:!!e.colorLocked,effects:t,color:c,height:this._getValueOrOverrideExpression(i,r,`Separation`,R(e.separation,C.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!l,animationParams:$(a)})}_analyzeGradientFill(e,t){let{angle:n,gradientMethod:r,gradientSize:i,gradientSizeUnits:a,gradientType:o,interval:s,primitiveName:c,type:l}=e,u=C.CIMGradientFill,d=e.colorRamp;this._cimLayers.push({type:`gradientFill`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(c,l)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(l,c,`GradientMethod`,r??`Linear`),angle:this._getValueOrOverrideExpression(l,c,`Angle`,R(n,u.angle)),gradientType:this._getValueOrOverrideExpression(l,c,`GradientType`,o??u.gradientType),interval:this._getValueOrOverrideExpression(l,c,`Interval`,R(s,d.type===`CIMFixedColorRamp`?d.colors.length:u.interval)),gradientSize:this._getValueOrOverrideExpression(l,c,`GradientSize`,R(i,u.gradientSize)),gradientSizeUnits:a===`Absolute`?M.Absolute:a===`Relative`?M.Relative:u.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,n,r=[]){let i=e.find(e=>e.type===`CIMSolidFill`),a=e.find(e=>e.type===`CIMSolidStroke`);if(i==null||a==null)return;let o=[...r,...[...t??[],...i.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],s=[...r,...[...t??[],...a.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],c=R(a.width,C.CIMSolidStroke.width),l=U(a.capStyle,C.CIMSolidStroke.capstyle),u=U(a.joinStyle,C.CIMSolidStroke.joinstyle),d=a.miterLimit;this._cimLayers.push({type:`outlineFill`,name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,`Color`,P(i.color)),effects:o,effectsChangeGeometryType:o.some(({effect:e})=>Z(e))||s.some(({effect:e})=>Z(e)),outlineColorLocked:!!a.colorLocked,outlineColor:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Color`,P(a.color)),outlineWidth:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Width`,c),cap:this._getValueOrOverrideExpression(a.type,a.primitiveName,`CapStyle`,l),join:this._getValueOrOverrideExpression(a.type,a.primitiveName,`JoinStyle`,u),miterLimit:d&&this._getValueOrOverrideExpression(a.type,a.primitiveName,`MiterLimit`,d),referenceWidth:n,outlineEffects:s})}_analyzeSolidStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=P(e.color),c=R(e.width,C.CIMSolidStroke.width),l=U(e.capStyle,C.CIMSolidStroke.capstyle),u=U(e.joinStyle,C.CIMSolidStroke.joinstyle),f=e.miterLimit,p=this._analyzePrimitiveOverrides(a,t,null,null),m=[];p&&(m=this._getPrimitiveMaterialOverrides(a,o));let h,g,_,v;if(t&&Array.isArray(t)&&t.length>0){let e=t[t.length-1].effect;e&&e.type===`CIMGeometricEffectDashes`&&e.lineDashEnding===`NoConstraint`&&(h=e.dashTemplate,g=e.scaleDash,_=e.offsetAlongLine,v=e.primitiveName,t=[...t],t.pop())}v!=null&&m.push(...this._getPrimitiveMaterialOverrides(v,o).filter(e=>e.propertyName===`dashTemplate`));let y=h===void 0?null:{type:`sprite-rasterization-param`,resource:{type:`dash`,dashTemplate:h,primitiveName:v},overrides:m},b=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:y,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`Color`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(v,`DashTemplate`)??h,offsetAlongLine:this._getValueOrOverrideExpression(o,v,`OffsetAlongLine`,_??0),scaleDash:g,sampleAlphaOnly:!0,animationParams:$(b)})}_analyzePictureStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=B(e),c=R(e.width,C.CIMPictureStroke.width),l=U(e.capStyle,C.CIMPictureStroke.capstyle),u=U(e.joinStyle,C.CIMPictureStroke.joinstyle),f=e.miterLimit,p={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(a,o)},m=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:p,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`TintColor`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:$(m)})}_analyzeGradientStroke(e,t,n,r){let{gradientMethod:i,gradientSize:a,gradientSizeUnits:o,gradientType:s,interval:c,primitiveName:l,type:u}=e,d=C.CIMGradientStroke,f=R(e.width,d.width),p=U(e.capStyle,d.capstyle),m=U(e.joinStyle,d.joinstyle),h=e.miterLimit,g=e.colorRamp;this._cimLayers.push({type:`gradientStroke`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(l,u)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(u,l,`Width`,f),cap:this._getValueOrOverrideExpression(u,l,`CapStyle`,p),join:this._getValueOrOverrideExpression(u,l,`JoinStyle`,m),miterLimit:h&&this._getValueOrOverrideExpression(u,l,`MiterLimit`,h),referenceWidth:r,isOutline:n,gradientMethod:this._getValueOrOverrideExpression(u,l,`GradientMethod`,i??d.gradientMethod),gradientType:this._getValueOrOverrideExpression(u,l,`GradientType`,s??d.gradientType),interval:this._getValueOrOverrideExpression(u,l,`Interval`,R(c,g.type===`CIMFixedColorRamp`?g.colors.length:d.interval)),gradientSize:this._getValueOrOverrideExpression(u,l,`GradientSize`,R(a,d.gradientSize)),gradientSizeUnits:o===`Absolute`?M.Absolute:o===`Relative`?M.Relative:d.gradientSizeUnits})}_analyzeMarker(e,t,n,r,i,a,o,s,c,l=!1,u=!1){l||=!!e.colorLocked;let h=c;if(h=f(e,h),h=p(this._poMap,e,h),h=m(e,h),h=d(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,l,h))return;let g=R(e.size,C.CIMVectorMarker.size),_=R(e.rotation),v=R(e.offsetX),y=R(e.offsetY),{primitiveName:b,type:x}=e,S=this._getValueOrOverrideExpression(x,b,`Size`,g),w=this._getValueOrOverrideExpression(x,b,`Rotation`,_),T=this._getValueOrOverrideExpression(x,b,`OffsetX`,v),E=this._getValueOrOverrideExpression(x,b,`OffsetY`,y);switch(e.type){case`CIMPictureMarker`:this._analyzePictureMarker(e,t,n,r,i,a,S,w,T,E,s,h,l,u);break;case`CIMVectorMarker`:this._analyzeVectorMarker(e,t,n,r,i,a,S,w,T,E,s,h,o,l,u)}}_analyzeMarkerInsidePolygon(e,t,n,r){let{markerPlacement:i,type:o}=e;if(!i||i.type!==`CIMMarkerPlacementInsidePolygon`||r.hasMotionAnimations)return!1;if(o===`CIMVectorMarker`||o===`CIMPictureMarker`){let n=e.primitiveName;if(n&&this._analyzePrimitiveOverrides([n],t,null,null))return!1;let r=i.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;if(o===`CIMVectorMarker`){let{markerGraphics:t}=e;if(t)for(let e of t){let{symbol:t}=e;if(t?.type===`CIMPolygonSymbol`&&t.symbolLayers){let{symbolLayers:e}=t;for(let t of e)if(t.type===`CIMSolidStroke`)return!1}}}else{let{animatedSymbolProperties:t}=e;if(t)return!1}}let s=Math.abs(i.stepX),c=Math.abs(i.stepY);if(s===0||c===0)return!0;let l,u;if(i.gridType===`Random`){let e=a(de),t=Math.max(Math.floor(e/s),1);l=c*Math.max(Math.floor(e/c),1),u=t*s/l}else i.shiftOddRows?(l=c*2,u=s/c*.5):(l=c,u=s/c);let d=B(e),f=e.type===`CIMCharacterMarker`?null:{type:`sprite-rasterization-param`,resource:{...e,effects:e.effects?.filter(e=>!ye(e))},overrides:[]};return this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:f,colorLocked:n,effects:t,color:d,height:l,scaleX:u,angle:i.gridAngle??0,offsetX:R(i.offsetX),offsetY:R(i.offsetY),applyRandomOffset:i.gridType===`Random`,sampleAlphaOnly:e.type!==`CIMPictureMarker`,hasUnresolvedReplacementColor:!0,animationParams:$(r)}),!0}_analyzePictureMarker(e,t,r,i,a,s,c,l,u,d,f,p,m,h){let{animatedSymbolProperties:g,primitiveName:_,type:v}=e,y=R(e.scaleX,1),b=B(e);r||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);let x=this._createGIFAnimatedSymbolPropertiesOverrideExpression(g),S=e.anchorPoint??{x:0,y:0};if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height);let i=R(e.size);y/=i/t*n}let C=[...i];e.primitiveName&&C.push(e.primitiveName);let w;g||x?w={type:`animated`,url:e.url,urlHash:`H`+o(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(w=n(e),w.markerPlacement=null);let T={type:`sprite-rasterization-param`,resource:w,overrides:this._getMaterialOverrides(C,v)};x&&T.overrides.push(...x.overrides);let E=c;this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:T,colorLocked:m,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:c,scaleX:this._getValueOrOverrideExpression(v,_,`ScaleX`,y),rotation:l,offsetX:u,offsetY:d,transform:{type:`cim-marker-transform-param`,params:f},color:this._getValueOrOverrideExpression(v,_,`TintColor`,b),anchorPoint:{x:S.x,y:S.y},isAbsoluteAnchorPoint:e.anchorPointUnits!==`Relative`,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:1,isOutline:h,markerPlacement:r,animationParams:$(p),baseSize:E})}_analyzeVectorMarker(e,t,n,r,i,a,o,l,u,d,f,p,m,v,y){let b=e.markerGraphics;if(!b)return;let x=e.frame,S=0;S=x?x.ymax-x.ymin:a;let C=!!e.scaleSymbolsProportionally;if(S){let t={offsetX:u,offsetY:d,rotation:l,size:o,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:C};f=[...f,t]}n||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);for(let o of b)if(o){let l=o.symbol;if(!l)continue;let u=o.primitiveName;u&&r.push(u);let d=p,b;if((l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&x){let t=0,n=0,r=o.geometry;`x`in r&&`y`in r&&(t+=r.x-(x.xmin+x.xmax)*.5,n+=r.y-(x.ymin+x.ymax)*.5);let i=e.anchorPoint,a=!1;i&&(e.anchorPointUnits===`Absolute`?(t-=i.x,n-=i.y,a=!0):x&&(t-=(x.xmax-x.xmin)*i.x,n-=(x.ymax-x.ymin)*i.y));let s={offsetX:t,offsetY:n,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:C};b=[...f,s]}(l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&this._analyzeCallout(l,t,b??f,d,a,i,m);let w=s(o.geometry)?{...o,geometry:c(o.geometry,{maxDeviation:.01})}:o,T=w.geometry,[E,D]=h(T,x);switch((E!==0||D!==0)&&(d=g(d,E,D)),l.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:m||ve(l)?(d={...d,transform:{type:`AnimatedTransform`,relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:_([0,0]),rotation:_(0),scale:_(S),parent:p.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,n,w,r,i,a,b??f,d,S,v,y)):this._analyzeMultiLayerGraphic(e,t,n,w,r,i,a,b??f,d,S,v,y);break;case`CIMTextSymbol`:this._analyzeTextGraphic(t,n,w,r,i,a,b??f,v)}u&&r.pop()}}_analyzeCallout(e,t,n,r,i,a,o){let s=e.callout;if(!s||!ie(s))return;let c=t??[],{leaderTolerance:l,leaderOffset:u}=s;switch(s.type){case`CIMSimpleLineCallout`:{let{lineSymbol:e,autoSnap:t}=s,d={type:`CIMSimpleLineCallout`,leaderTolerance:l,leaderOffset:u,autoSnap:t,inflateSize:500};this._analyzeSymbolLayer(e,[...c,{type:`cim-effect-param`,effect:d,overrides:[]}],n,r,i,a,o);break}case`CIMBackgroundCallout`:{let{accentBarSymbol:e,gap:t,backgroundSymbol:d,leaderLineSymbol:f,lineStyle:p,margin:m}=s,h=e=>({type:`CIMBackgroundCallout`,leaderTolerance:l,leaderOffset:u,lineStyle:Y(p),gap:t,margin:m,inflateSize:500,part:e}),g=[...c,{type:`cim-effect-param`,effect:h(`background`),overrides:[]}];f&&this._analyzeSymbolLayer(f,[...c,{type:`cim-effect-param`,effect:h(`leader`),overrides:[]}],n,r,i,a,o);let _=d.symbolLayers??[];Q(_)?this._analyzeCompositeOutlineFill(_,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,fixedDartWidth:d,margin:f,useFixedDartWidth:p}=s,m={type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:f,balloonStyle:ce(e),dartWidth:p?d:void 0,inflateSize:500,part:`background`},h=[...c,{type:`cim-effect-param`,effect:m,overrides:[]}],g=t.symbolLayers??[];Q(g)?this._analyzeCompositeOutlineFill(g,null,i,h):this._analyzeSymbolLayer(t,h,n,r,i,a,o);break}case`CIMPointSymbolCallout`:{let{backgroundScale:e,gap:t,leaderLineSymbol:d,lineStyle:f,pointSymbol:p}=s,m=oe(e),h=ae(p,n),g=e=>({type:`CIMPointSymbolCallout`,leaderTolerance:l,leaderOffset:u,backgroundScale:m,...se(p,e),lineStyle:Y(f),gap:t,inflateSize:500,part:e});d&&this._analyzeSymbolLayer(d,[...c,{type:`cim-effect-param`,effect:g(`leader`),overrides:[]}],n,r,i,a,o),this._analyzeSymbolLayer(p,[...c,{type:`cim-effect-param`,effect:g(`marker`),overrides:[]}],h,r,i,a,o||m!==0);break}case`CIMCompositeCallout`:{let{backgroundSymbol:e,margin:t,shadowSymbol:d}=s,f={type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:t,balloonStyle:1,inflateSize:500,part:`background`},p=[...c,{type:`cim-effect-param`,effect:f,overrides:[]}],m=e=>{let t=e.symbolLayers??[];Q(t)?this._analyzeCompositeOutlineFill(t,null,i,p):this._analyzeSymbolLayer(e,p,n,r,i,a,o)};d&&m(d),m(e);break}}}_analyzeMultiLayerGraphic(e,t,n,r,i,a,o,s,c,l,u,d){let f=r.symbol,p=f.symbolLayers;if(p){if(_e(p)&&!v(c)){this._analyzeCompositeMarkerGraphic(e,t,n,r,p,a,o,s,l,u,d);return}if(Se(p)){x(f,e=>{e.colorLocked&&(u=!0)}),this._analyzeMultiLayerGraphicNonSDF(e,t,n,r,i,a,o,s,c,l,u,d);return}this._analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,d)}}_analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,f){let p=r.symbol,m=p.symbolLayers;if(!m)return;let h=le.applyEffects(p.effects,r.geometry);if(!h)return;let g=m.length;for(;g--;){let p=m[g];if(!p||p.enable===!1)continue;let _=p.primitiveName;switch(_&&i.push(_),p.type){case`CIMSolidFill`:case`CIMSolidStroke`:{let i=le.applyEffects(p.effects,h),m=k(i);if(!m)continue;let g=e.anchorPointUnits!==`Relative`,v=p.type===`CIMSolidStroke`?p.width:0,{frameSizeRatio:y,anchorX:b,anchorY:x,widthRatio:S,sdfPaddingRatio:w,sdfTextureSize:T}=A(m,e.frame,e.size,e.anchorPoint,g,v,e.scaleSymbolsProportionally),E=p.type===`CIMSolidFill`,D={type:`sdf`,geometry:i,sdfPaddingRatio:w,asFill:E,sdfTextureSize:T},{path:O}=p,M=E?P(W(p)):O==null?P(G(p)):[0,0,0,0],N=E?[0,0,0,0]:P(G(p));if(!E&&!v)break;let F=r.primitiveName,I=null;E&&!p.colorLocked&&(I=this._maybeGetValueOrOverrideExpression(F,`FillColor`));let L=null;!E&&!p.colorLocked&&(L=this._maybeGetValueOrOverrideExpression(F,`StrokeColor`));let z=I??this._getValueOrOverrideExpression(p.type,_,`Color`,M),B=L??this._getValueOrOverrideExpression(p.type,_,`Color`,N),V=this._maybeGetValueOrOverrideExpression(F,`StrokeWidth`)??this._getValueOrOverrideExpression(p.type,_,`Width`,v),H=O?{type:`sprite-rasterization-param`,resource:{type:`path`,path:O,asFill:E},overrides:[]}:{type:`sprite-rasterization-param`,resource:D,overrides:[]},U=d(this._poMap,p,c),K=R(e.size,C.CIMVectorMarker.size),q=this._getValueOrOverrideExpression(e.type,e.primitiveName,`Size`,K);this._cimLayers.push({type:`marker`,name:p.name,groupName:e.name,spriteRasterizationParam:H,colorLocked:!!p.colorLocked||!!u,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:b,y:x},isAbsoluteAnchorPoint:g,size:l,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:l,widthRatio:S,rotateClockwise:!1,referenceSize:o,sizeRatio:y,color:z,outlineColor:B,outlineWidth:V,isOutline:f,markerPlacement:n,animationParams:$(U),isStroke:p.type!==`CIMSolidFill`,baseSize:q,...j(i,T,w)});break}case`CIMPictureMarker`:case`CIMVectorMarker`:if(p.markerPlacement){X().error(`Error analyzing CIM, got unexpected marker placement`);break}this._analyzeMarker(p,t,n,i,a,o,!1,s,c,u,f)}_&&i.pop()}}_analyzeTextGraphic(e,n,r,i,a,o,s,c){E.findApplicableOverrides(r,this._primitiveOverrides,[]);let l=r.geometry;if(!(`x`in l)||!(`y`in l))return;let u=r.symbol,d=K(u),f=T(u.fontStyleName),p=t(u.fontFamilyName);u.font={family:p,decoration:d,...f};let m=R(u.height,C.CIMTextSymbol.height),h=R(u.angle),g=R(u.offsetX),_=R(u.offsetY),{haloSymbol:v}=u,y=R(u.haloSize,0),b=[0,0,0,0];if(v?.symbolLayers?.length){let e=v.symbolLayers;for(let t of e)if(t.color){b=this._getValueOrOverrideExpression(u?.haloSymbol?.type??`CIMPolygonSymbol`,t.primitiveName,`Color`,P(t.color));break}}let x=r.primitiveName,S=[0,0,0,1],w=[0,0,0,0],O=0,k=!1;if(u.symbol?.symbolLayers)for(let e of u.symbol.symbolLayers){let t=e.primitiveName;if(e.type===`CIMSolidStroke`)w=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Color`,P(e.color)),O=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Width`,q(e)??0);else if(e.type===`CIMSolidFill`){let n=P(e.color);k??=!!e.colorLocked,S=this._getValueOrOverrideExpression(`CIMSolidFill`,t??x,`Color`,n)}}let A=null,j=null,M=null,N=null,F=null;x&&(A=this._maybeGetValueOrOverrideExpression(x,`TextSize`),j=this._maybeGetValueOrOverrideExpression(x,`TextAngle`),M=this._maybeGetValueOrOverrideExpression(x,`TextOffsetX`),N=this._maybeGetValueOrOverrideExpression(x,`TextOffsetY`),k||(F=this._maybeGetValueOrOverrideExpression(x,`FillColor`)));let I=F??S,L=null,z=null,B=0,V=u.callout?.type===`CIMBackgroundCallout`;if(u.callout?.type===`CIMBackgroundCallout`){let e=u.callout;if(e.backgroundSymbol){let t=e.backgroundSymbol.symbolLayers;if(t)for(let e of t)e.type===`CIMSolidFill`?L=P(e.color):e.type===`CIMSolidStroke`&&(z=P(e.color),B=R(e.width,C.CIMSolidStroke.width))}}let H=this._getValueOrOverrideExpression(u.type,r.primitiveName,`TextString`,r.textString??``);if(H==null)return;let{fontStyleName:U}=u,W=p+(U?`-`+U.toLowerCase():`-regular`),G=this._getMaterialOverrides(i,u.type);G.push(...this._getPrimitiveMaterialOverrides(r.primitiveName,u.type)),this._collectDictionaryTemplateOverrides(G,r);let J={type:`text-rasterization-param`,resource:{type:`text`,textString:r.textString??``,font:u.font,symbol:u,primitiveName:r.primitiveName,supportsRichText:D(r.textString??``)||G.some(e=>e.propertyName===`textString`)},overrides:G};this._cimLayers.push({type:`text`,lineWidth:u.lineWidth,textRasterizationParam:J,colorLocked:!!c||!!k,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:W,decoration:d,haloSize:y,haloColor:b,weight:f.weight,style:f.style,size:A??m,angle:j??h,offsetX:M??g,offsetY:N??_,transform:{type:`cim-marker-transform-param`,params:s},horizontalAlignment:te(u.horizontalAlignment),verticalAlignment:ee(u.verticalAlignment),text:H,color:I,outlineColor:w,outlineSize:O,backgroundColor:L,borderLineColor:z,borderLineWidth:B,useBackgroundCallout:V,referenceSize:o,sizeRatio:1,markerPlacement:n})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){let n=J(t.symbol);e.push({propertyName:`textString`,defaultValue:``,valueExpressionInfo:{type:`dictionary-template`,textCase:n,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,n,r,a,o,s,c,l,u,d,f){let p=me(e,r),m=e.primitiveName,h=this._analyzeMaterialOverrides(m,[`Rotation`,`OffsetX`,`OffsetY`]),g=V(h),[_,v,y]=b.getTextureAnchor(p,this._resourceManager,ue),x=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==m||![`rotation`,`offsetX`,`offsetY`].includes(e.propertyName));x.push(...g);let S={type:`sprite-rasterization-param`,resource:{...p,avoidSDFRasterization:!0},overrides:x},w=R(e.size,C.CIMVectorMarker.size),T=this._getValueOrOverrideExpression(e.type,m,`Size`,w);this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:S,colorLocked:d,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:o,anchorPoint:{x:_,y:v},isAbsoluteAnchorPoint:!1,size:u,rotation:0,offsetX:0,offsetY:0,transform:{type:`cim-marker-transform-param`,params:c},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:u,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:y/i(e.size),isOutline:f,markerPlacement:n,animationParams:$(l),baseSize:T})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-marker-placement-param`,placement:e,overrides:we(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-gif-animation-params`,animation:e,overrides:we(t)}}_analyzeCompositeMarkerGraphic(e,t,n,r,i,a,o,s,c,l,u){let d=r.geometry,f=i[0],p=i[1],m=k(d);if(!m)return;let h=e.anchorPointUnits!==`Relative`,g=R(f.width,C.CIMSolidStroke.width),{frameSizeRatio:_,anchorX:v,anchorY:y,widthRatio:b,sdfPaddingRatio:x,sdfTextureSize:S}=A(m,e.frame,e.size,e.anchorPoint,h,g,e.scaleSymbolsProportionally),{path:w}=p,T=p.primitiveName,E=f.primitiveName,D=r.primitiveName,O=null;!p.colorLocked&&!l&&(O=this._maybeGetValueOrOverrideExpression(D,`FillColor`));let j=O??this._getValueOrOverrideExpression(p.type,T,`Color`,P(p.color)),M=null;!f.colorLocked&&!l&&(M=this._maybeGetValueOrOverrideExpression(D,`StrokeColor`));let N=M??this._getValueOrOverrideExpression(f.type,E,`Color`,P(f.color)),F=this._maybeGetValueOrOverrideExpression(D,`StrokeWidth`)??this._getValueOrOverrideExpression(f.type,E,`Width`,g),I={type:`sprite-rasterization-param`,resource:w?{type:`path`,path:w,asFill:!0}:{type:`sdf`,geometry:d,sdfTextureSize:S,sdfPaddingRatio:x,asFill:!0},overrides:[]};this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:I,colorLocked:l,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:v,y},isAbsoluteAnchorPoint:h,size:c,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:c,widthRatio:b,rotateClockwise:!1,referenceSize:o,sizeRatio:_,color:j,outlineColor:N,outlineWidth:F,isOutline:u,markerPlacement:n})}_setPoMap(e,t,n){let r;this._poMap[e]?r=this._poMap[e]:(r={},this._poMap[e]=r),r[t]=n}_maybeGetValueOrOverrideExpression(e,t,n){return this._getValueOrOverrideExpression(``,e,t,n,!1)}_getValueOrOverrideExpression(e,t,n,r,i=!0){if(i&&!ne(r)&&(r=H(e,n.toLowerCase())),t==null)return r;let a=this._poMap[t];if(a==null)return r;let o=a[n];return typeof o==`string`||typeof o==`number`||Array.isArray(o)?o:o?{valueExpressionInfo:o,defaultValue:r}:r}_analyzePrimitiveOverrides(e,t,n,r){if(e==null)return!1;typeof e==`string`&&(e=[e]);for(let t of this._primitiveOverrides)if(e.includes(t.primitiveName)&&t.valueExpressionInfo)return!0;if(t!=null){for(let e of t)if(e?.overrides.length>0)return!0}if(n!=null){for(let e of n)if(e?.overrides.length>0)return!0}if(r!=null){for(let e of r)if(e?.overrides.length>0)return!0}return!1}_getMaterialOverrides(e,t){if(!e)return[];let n=[];for(let r of e)n.push(...this._getPrimitiveMaterialOverrides(r,t));return n}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];let n=V(this._primitiveOverrides.filter(t=>t.primitiveName===e));return n.forEach(e=>e.defaultValue=H(t,e.propertyName.toLowerCase())),n}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(n=>n.primitiveName!==e||!t.includes(n.propertyName))}}function me(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[{...t}],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function he(e){if(e?.startsWith(`Level_`)){let t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ge(e,t){if(!t||t.length===0)return e;let r=n(e);return E.applyOverrides(r,t),r}const _e=e=>e&&e.length===2&&e[0].enable&&e[1].enable&&e[0].type===`CIMSolidStroke`&&e[1].type===`CIMSolidFill`&&e[0].path==null&&e[1].path==null&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function ve(e){let t=e.symbolLayers;if(!t)return!1;let n=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectDashes`&&e.dashTemplate!=null)),r=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectAddControlPoints`));return!!n||!!r}function ye(e){return Z(e)}function Z(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectRadial`||e.type===`CIMGeometricEffectTaperedPolygon`||e.type===`PrivateDimensionEffect`||e.type===`PrivateMatcherGeometryOverrideEffect`}function be(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectTaperedPolygon`}function xe(e,t){let n=e.filter(e=>e.type===`CIMSolidFill`),r=e.every(e=>e.type===`CIMSolidFill`||e.type===`CIMSolidStroke`),i=e.filter(e=>e.effects?.length),a=i.length===0||i.length===1&&n.length===1&&i[0]===n[0];return n.length>0&&r&&a&&t.some(({effect:e})=>be(e))}function Se(e){return e.some(e=>e.type!==`CIMSolidFill`&&e.type!==`CIMSolidStroke`&&(e.type!==`CIMVectorMarker`&&e.type!==`CIMPictureMarker`||e.markerPlacement!=null))}function Ce(e,t){return!!(t?.some(e=>e.type===`CIMGeometricEffectRadial`)&&t?.some(e=>e.type===`CIMGeometricEffectTaperedPolygon`)||t?.some(e=>e.type===`CIMGeometricEffectCircularSector`))&&Q(e)}function Q(e){if(e?.length!==2)return!1;let t=e.find(e=>e.type===`CIMSolidFill`),n=e.find(e=>e.type===`CIMSolidStroke`),r=n?.effects?.some(e=>e.type===`CIMGeometricEffectDashes`);return t!=null&&n!=null&&!r}function we(e){return n(e).map(e=>({...e,propertyName:re(e.propertyName)}))}function $(e){return v(e)?{type:`animation-params`,params:e}:null}export{pe as CIMAnalyzer,ge as analyzeCIMResource};
|
|
2
|
+
import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as n}from"../../core/lang.js";import r from"../../core/Logger.js";import{pt2px as i,px2pt as a}from"../../core/screenUtils.js";import{numericHash as o}from"../../core/string.js";import{isCurvedGeometry as s}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as c}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{checkForAnimations as l,globalRotation as u,getAnimationParams as d,handleAbsoluteAnchor as f,handleMarker as p,handleRelativeAnchor as m,getFrameTranslation as h,translate as g,getStaticParam as _,shouldUseAnimatedPath as v}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as y,CIMSymbolHelper as b,forEachSymbolLayer as x}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as C}from"./defaultCIMValues.js";import{fitVectorMarker as w}from"./fitVectorMarker.js";import{fromCIMFontStyle as T}from"./fromCIMFontStyle.js";import{OverrideHelper as E}from"./OverrideHelper.js";import{hasRichTextFormattingTags as D}from"./richTextUtils.js";import{getSDFInfo as O,getExtent as k,getSDFMetrics as A,getSDFDimensions as j}from"./SDFHelper.js";import{CIMSymbolUnits as M}from"./types.js";import{colorToArray as N,normalizeAlpha as P,getSize as F,isCIMMarkerStrokePlacement as I,hasStrokeLayer as L,getNumericValue as R,getMaxStrokeWidth as z,getTintColor as B,normalizePrimitiveOverrideProps as V,getDefaultCIMValue as H,getEnum as U,getFillColor as W,getStrokeColor as G,fromCIMFontDecoration as K,getStrokeWidth as q,fromCIMVerticalAlignment as ee,fromCIMHorizontalAlignment as te,getTextCasing as J,isValidCIMValue as ne,uncapitalize as re}from"./utils.js";import{isSupportedCallout as ie,getPointSymbolCalloutTransforms as ae,normalizePointSymbolCalloutScale as oe,normalizeLeaderLineStyle as Y,getPointSymbolCalloutFitProperties as se,normalizeBalloonCalloutStyle as ce}from"./callouts/calloutAnalysisUtils.js";import{EffectHelper as le}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as ue,randomInsidePolygonTextureSize as de}from"../../views/2d/engine/webgl/definitions.js";const X=()=>r.getLogger(`esri.symbols.cim.cimAnalyzer`);function fe(e){let t=e.markerPlacement;return t&&t.angleToLine?1:0}class pe{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,n,r){if(this._cimLayers=r??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(let t of this._primitiveOverrides){let n=t.valueExpressionInfo;if(n)this._setPoMap(t.primitiveName,t.propertyName,n);else if(t.value!=null){let n=t.value;t.propertyName.includes(`Color`)&&(e(n)&&(n=N(n)),n=P(n)),this._setPoMap(t.primitiveName,t.propertyName,n)}}}return this._analyzeSymbol(t.symbol,n),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){let n=e?.symbolLayers;if(!n)return;for(let e=0;e<n.length;e++){let t=n[e];t.type===`CIMVectorMarker`&&(n[e]=w(t))}let r=e.effects,i=0,a=F(e)??0;e.type===`CIMPointSymbol`&&e.angleAlignment===`Map`&&(i=1);let o={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};o=u(o),o=d(this._poMap,e,o);let s=null;e.type===`CIMPointSymbol`&&(s=this._analyzePointSymbolHalo(e,i,a,r,o),this._analyzeCallout(e,null,[],o,a,i,t));let c=s?n.filter(e=>e!==s):n;if(Ce(c,r))return this._analyzeCompositeOutlineFill(c,r,a);this._analyzeSymbolLayer(s?{...e,symbolLayers:c}:e,null,[],o,a,i,t)}_analyzeSymbolLayer(e,t,n,r,i,a,o){let s=e?.symbolLayers;if(!s)return;let c=e.type===`CIMPolygonSymbol`,l=e.effects,u=s.length;for(;u--;){let d=s[u];if(!d||d.enable===!1)continue;let f;l?.length&&(f=[...l]);let p=d.effects;p?.length&&(l?f.push(...p):f=[...p]);let m=t?[...t]:null;if(f){m??=[];for(let e of f){let t=E.findEffectOverrides(e,this._primitiveOverrides);t&&m.push(t)}}E.findApplicableOverrides(d,this._primitiveOverrides,[]);let h=this._cimLayers.length;switch(d.type){case`CIMSolidFill`:this._analyzeSolidFill(d,m,r,L(s));break;case`CIMPictureFill`:this._analyzePictureFill(d,m,r);break;case`CIMHatchFill`:this._analyzeHatchFill(d,m,r);break;case`CIMGradientFill`:this._analyzeGradientFill(d,m);break;case`CIMSolidStroke`:this._analyzeSolidStroke(d,m,c,i,r);break;case`CIMPictureStroke`:this._analyzePictureStroke(d,m,c,i,r);break;case`CIMGradientStroke`:this._analyzeGradientStroke(d,m,c,i);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:{(e.type===`CIMLineSymbol`||e.type===`CIMPolygonSymbol`)&&(a=fe(d));let t=[],s=d.primitiveName;s&&t.push(s);let l=c&&I(d.markerPlacement);this._analyzeMarker(d,m,null,t,a,i,o,n,r,!1,l);break}default:X().error(`Cannot analyze CIM layer`,d.type)}if(m?.some(({effect:e})=>Z(e)))for(let e=h;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,r,i,o){let{haloSymbol:s}=e,c=R(e.haloSize,0);if(c<=0||!s?.symbolLayers)return null;let u=s.symbolLayers.filter(e=>e.enable!==!1),f=u[0];if(!f)return null;let p=u.length===1&&f.type===`CIMSolidFill`;if(e.symbolLayers?.some(e=>l(e))===!0||l(s))return X().warnOnce(`CIM point symbol halos do not support independently animated symbol components`),null;let m=i?.map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null);if(m?.some(({effect:e})=>Z(e))){if(!p)return X().warnOnce(`Complex CIM point symbol halos are not supported with geometry-changing effects`),null;let t=e.symbolLayers?.filter(e=>e.enable!==!1)??[];if(!xe(t,m))return X().warnOnce(`CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and an unambiguous solid-fill effect chain`),null;let n=t.find(e=>e.type===`CIMSolidFill`);if(!n)return null;let i=[...m,...(n.effects??[]).map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],a=z(t),o=this._getValueOrOverrideExpression(f.type,f.primitiveName,`Color`,P(f.color));return this._cimLayers.push({type:`outlineFill`,name:n.name,colorLocked:!!n.colorLocked,color:this._getValueOrOverrideExpression(n.type,n.primitiveName,`Color`,P(n.color)),effects:i,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth: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});return}this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,i,`Color`,o),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:$(s)})}_analyzePictureFill(e,t,n){let{primitiveName:r,type:i}=e,a=B(e),o=R(e.height,C.CIMPictureFill.height),s=R(e.scaleX,1);if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height),s/=o/t*n}let c={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(r,i)},l=d(this._poMap,e,n);this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(i,r,`TintColor`,a),height:this._getValueOrOverrideExpression(i,r,`Height`,o),scaleX:this._getValueOrOverrideExpression(i,r,`ScaleX`,s),angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:$(l)})}_analyzeHatchFill(e,t,n){let{primitiveName:r,type:i}=e,a=d(this._poMap,e,n),o=this._analyzeMaterialOverrides(r,[`Rotation`,`OffsetX`,`OffsetY`]),s=V(o),c=[255,255,255,1],l=!1;if(e.lineSymbol?.symbolLayers)for(let t of e.lineSymbol.symbolLayers){if(t.type!==`CIMSolidStroke`)continue;let e=t.primitiveName??r;!l&&e&&!t.colorLocked&&(this._poMap[e]?.Color!=null||this._poMap[e]?.StrokeColor!=null)&&(c=P(t.color),c=this._maybeGetValueOrOverrideExpression(e,`StrokeColor`)??this._getValueOrOverrideExpression(i,e,`Color`,c),l=!0);let n=this._maybeGetValueOrOverrideExpression(e,`StrokeWidth`);if(n){let t=null,r=null;typeof n==`number`?t=n:r=n.valueExpressionInfo;let a=s.find(e=>e.propertyName===`strokeWidth`);a?a.propertyName=`width`:(a={type:`CIMPrimitiveOverride`,primitiveName:e,propertyName:`width`,valueExpressionInfo:r,value:t,defaultValue:H(i,`width`)},s.push(a))}}let u={type:`sprite-rasterization-param`,resource:e,overrides:s};this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:u,colorLocked:!!e.colorLocked,effects:t,color:c,height:this._getValueOrOverrideExpression(i,r,`Separation`,R(e.separation,C.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(i,r,`Rotation`,R(e.rotation)),offsetX:this._getValueOrOverrideExpression(i,r,`OffsetX`,R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(i,r,`OffsetY`,R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!l,animationParams:$(a)})}_analyzeGradientFill(e,t){let{angle:n,gradientMethod:r,gradientSize:i,gradientSizeUnits:a,gradientType:o,interval:s,primitiveName:c,type:l}=e,u=C.CIMGradientFill,d=e.colorRamp;this._cimLayers.push({type:`gradientFill`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(c,l)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(l,c,`GradientMethod`,r??`Linear`),angle:this._getValueOrOverrideExpression(l,c,`Angle`,R(n,u.angle)),gradientType:this._getValueOrOverrideExpression(l,c,`GradientType`,o??u.gradientType),interval:this._getValueOrOverrideExpression(l,c,`Interval`,R(s,d.type===`CIMFixedColorRamp`?d.colors.length:u.interval)),gradientSize:this._getValueOrOverrideExpression(l,c,`GradientSize`,R(i,u.gradientSize)),gradientSizeUnits:a===`Absolute`?M.Absolute:a===`Relative`?M.Relative:u.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,n,r=[]){let i=e.find(e=>e.type===`CIMSolidFill`),a=e.find(e=>e.type===`CIMSolidStroke`);if(i==null||a==null)return;let o=[...r,...[...t??[],...i.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],s=[...r,...[...t??[],...a.effects??[]].map(e=>E.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>e!=null)],c=R(a.width,C.CIMSolidStroke.width),l=U(a.capStyle,C.CIMSolidStroke.capstyle),u=U(a.joinStyle,C.CIMSolidStroke.joinstyle),d=a.miterLimit;this._cimLayers.push({type:`outlineFill`,name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,`Color`,P(i.color)),effects:o,effectsChangeGeometryType:o.some(({effect:e})=>Z(e))||s.some(({effect:e})=>Z(e)),outlineColorLocked:!!a.colorLocked,outlineColor:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Color`,P(a.color)),outlineWidth:this._getValueOrOverrideExpression(a.type,a.primitiveName,`Width`,c),cap:this._getValueOrOverrideExpression(a.type,a.primitiveName,`CapStyle`,l),join:this._getValueOrOverrideExpression(a.type,a.primitiveName,`JoinStyle`,u),miterLimit:d&&this._getValueOrOverrideExpression(a.type,a.primitiveName,`MiterLimit`,d),referenceWidth:n,outlineEffects:s})}_analyzeSolidStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=P(e.color),c=R(e.width,C.CIMSolidStroke.width),l=U(e.capStyle,C.CIMSolidStroke.capstyle),u=U(e.joinStyle,C.CIMSolidStroke.joinstyle),f=e.miterLimit,p=this._analyzePrimitiveOverrides(a,t,null,null),m=[];p&&(m=this._getPrimitiveMaterialOverrides(a,o));let h,g,_,v;if(t&&Array.isArray(t)&&t.length>0){let e=t[t.length-1].effect;e&&e.type===`CIMGeometricEffectDashes`&&e.lineDashEnding===`NoConstraint`&&(h=e.dashTemplate,g=e.scaleDash,_=e.offsetAlongLine,v=e.primitiveName,t=[...t],t.pop())}v!=null&&m.push(...this._getPrimitiveMaterialOverrides(v,o).filter(e=>e.propertyName===`dashTemplate`));let y=h===void 0?null:{type:`sprite-rasterization-param`,resource:{type:`dash`,dashTemplate:h,primitiveName:v},overrides:m},b=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:y,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`Color`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(v,`DashTemplate`)??h,offsetAlongLine:this._getValueOrOverrideExpression(o,v,`OffsetAlongLine`,_??0),scaleDash:g,sampleAlphaOnly:!0,animationParams:$(b)})}_analyzePictureStroke(e,t,n,r,i){let{primitiveName:a,type:o}=e,s=B(e),c=R(e.width,C.CIMPictureStroke.width),l=U(e.capStyle,C.CIMPictureStroke.capstyle),u=U(e.joinStyle,C.CIMPictureStroke.joinstyle),f=e.miterLimit,p={type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(a,o)},m=d(this._poMap,e,i);this._cimLayers.push({type:`line`,name:e.name,spriteRasterizationParam:p,isOutline:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,a,`TintColor`,s),width:this._getValueOrOverrideExpression(o,a,`Width`,c),cap:this._getValueOrOverrideExpression(o,a,`CapStyle`,l),join:this._getValueOrOverrideExpression(o,a,`JoinStyle`,u),miterLimit:f&&this._getValueOrOverrideExpression(o,a,`MiterLimit`,f),referenceWidth:r,zOrder:he(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:$(m)})}_analyzeGradientStroke(e,t,n,r){let{gradientMethod:i,gradientSize:a,gradientSizeUnits:o,gradientType:s,interval:c,primitiveName:l,type:u}=e,d=C.CIMGradientStroke,f=R(e.width,d.width),p=U(e.capStyle,d.capstyle),m=U(e.joinStyle,d.joinstyle),h=e.miterLimit,g=e.colorRamp;this._cimLayers.push({type:`gradientStroke`,name:e.name,spriteRasterizationParam:{type:`sprite-rasterization-param`,resource:e,overrides:this._getPrimitiveMaterialOverrides(l,u)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(u,l,`Width`,f),cap:this._getValueOrOverrideExpression(u,l,`CapStyle`,p),join:this._getValueOrOverrideExpression(u,l,`JoinStyle`,m),miterLimit:h&&this._getValueOrOverrideExpression(u,l,`MiterLimit`,h),referenceWidth:r,isOutline:n,gradientMethod:this._getValueOrOverrideExpression(u,l,`GradientMethod`,i??d.gradientMethod),gradientType:this._getValueOrOverrideExpression(u,l,`GradientType`,s??d.gradientType),interval:this._getValueOrOverrideExpression(u,l,`Interval`,R(c,g.type===`CIMFixedColorRamp`?g.colors.length:d.interval)),gradientSize:this._getValueOrOverrideExpression(u,l,`GradientSize`,R(a,d.gradientSize)),gradientSizeUnits:o===`Absolute`?M.Absolute:o===`Relative`?M.Relative:d.gradientSizeUnits})}_analyzeMarker(e,t,n,r,i,a,o,s,c,l=!1,u=!1){l||=!!e.colorLocked;let h=c;if(h=f(e,h),h=p(this._poMap,e,h),h=m(e,h),h=d(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,l,h))return;let g=R(e.size,C.CIMVectorMarker.size),_=R(e.rotation),v=R(e.offsetX),y=R(e.offsetY),{primitiveName:b,type:x}=e,S=this._getValueOrOverrideExpression(x,b,`Size`,g),w=this._getValueOrOverrideExpression(x,b,`Rotation`,_),T=this._getValueOrOverrideExpression(x,b,`OffsetX`,v),E=this._getValueOrOverrideExpression(x,b,`OffsetY`,y);switch(e.type){case`CIMPictureMarker`:this._analyzePictureMarker(e,t,n,r,i,a,S,w,T,E,s,h,l,u);break;case`CIMVectorMarker`:this._analyzeVectorMarker(e,t,n,r,i,a,S,w,T,E,s,h,o,l,u)}}_analyzeMarkerInsidePolygon(e,t,n,r){let{markerPlacement:i,type:o}=e;if(!i||i.type!==`CIMMarkerPlacementInsidePolygon`||r.hasMotionAnimations)return!1;if(o===`CIMVectorMarker`||o===`CIMPictureMarker`){let n=e.primitiveName;if(n&&this._analyzePrimitiveOverrides([n],t,null,null))return!1;let r=i.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;if(o===`CIMVectorMarker`){let{markerGraphics:t}=e;if(t)for(let e of t){let{symbol:t}=e;if(t?.type===`CIMPolygonSymbol`&&t.symbolLayers){let{symbolLayers:e}=t;for(let t of e)if(t.type===`CIMSolidStroke`)return!1}}}else{let{animatedSymbolProperties:t}=e;if(t)return!1}}let s=Math.abs(i.stepX),c=Math.abs(i.stepY);if(s===0||c===0)return!0;let l,u;if(i.gridType===`Random`){let e=a(de),t=Math.max(Math.floor(e/s),1);l=c*Math.max(Math.floor(e/c),1),u=t*s/l}else i.shiftOddRows?(l=c*2,u=s/c*.5):(l=c,u=s/c);let d=B(e),f=e.type===`CIMCharacterMarker`?null:{type:`sprite-rasterization-param`,resource:{...e,effects:e.effects?.filter(e=>!ye(e))},overrides:[]};return this._cimLayers.push({type:`fill`,name:e.name,spriteRasterizationParam:f,colorLocked:n,effects:t,color:d,height:l,scaleX:u,angle:i.gridAngle??0,offsetX:R(i.offsetX),offsetY:R(i.offsetY),applyRandomOffset:i.gridType===`Random`,sampleAlphaOnly:e.type!==`CIMPictureMarker`,hasUnresolvedReplacementColor:!0,animationParams:$(r)}),!0}_analyzePictureMarker(e,t,r,i,a,s,c,l,u,d,f,p,m,h){let{animatedSymbolProperties:g,primitiveName:_,type:v}=e,y=R(e.scaleX,1),b=B(e);r||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);let x=this._createGIFAnimatedSymbolPropertiesOverrideExpression(g),S=e.anchorPoint??{x:0,y:0};if(`width`in e&&typeof e.width==`number`){let t=e.width,n=1,r=this._resourceManager.getResource(e.url);r!=null&&(n=r.width/r.height);let i=R(e.size);y/=i/t*n}let C=[...i];e.primitiveName&&C.push(e.primitiveName);let w;g||x?w={type:`animated`,url:e.url,urlHash:`H`+o(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(w=n(e),w.markerPlacement=null);let T={type:`sprite-rasterization-param`,resource:w,overrides:this._getMaterialOverrides(C,v)};x&&T.overrides.push(...x.overrides);let E=c;this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:T,colorLocked:m,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:c,scaleX:this._getValueOrOverrideExpression(v,_,`ScaleX`,y),rotation:l,offsetX:u,offsetY:d,transform:{type:`cim-marker-transform-param`,params:f},color:this._getValueOrOverrideExpression(v,_,`TintColor`,b),anchorPoint:{x:S.x,y:S.y},isAbsoluteAnchorPoint:e.anchorPointUnits!==`Relative`,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:1,isOutline:h,markerPlacement:r,animationParams:$(p),baseSize:E})}_analyzeVectorMarker(e,t,n,r,i,a,o,l,u,d,f,p,m,v,y){let b=e.markerGraphics;if(!b)return;let x=e.frame,S=0;S=x?x.ymax-x.ymin:a;let C=!!e.scaleSymbolsProportionally;if(S){let t={offsetX:u,offsetY:d,rotation:l,size:o,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:C};f=[...f,t]}n||=this._createMarkerPlacementOverrideExpression(e.markerPlacement);for(let o of b)if(o){let l=o.symbol;if(!l)continue;let u=o.primitiveName;u&&r.push(u);let d=p,b;if((l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&x){let t=0,n=0,r=o.geometry;`x`in r&&`y`in r&&(t+=r.x-(x.xmin+x.xmax)*.5,n+=r.y-(x.ymin+x.ymax)*.5);let i=e.anchorPoint,a=!1;i&&(e.anchorPointUnits===`Absolute`?(t-=i.x,n-=i.y,a=!0):x&&(t-=(x.xmax-x.xmin)*i.x,n-=(x.ymax-x.ymin)*i.y));let s={offsetX:t,offsetY:n,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:C};b=[...f,s]}(l.type===`CIMPointSymbol`||l.type===`CIMTextSymbol`)&&this._analyzeCallout(l,t,b??f,d,a,i,m);let w=s(o.geometry)?{...o,geometry:c(o.geometry,{maxDeviation:.01})}:o,T=w.geometry,[E,D]=h(T,x);switch((E!==0||D!==0)&&(d=g(d,E,D)),l.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:m||ve(l)?(d={...d,transform:{type:`AnimatedTransform`,relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:_([0,0]),rotation:_(0),scale:_(S),parent:p.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,n,w,r,i,a,b??f,d,S,v,y)):this._analyzeMultiLayerGraphic(e,t,n,w,r,i,a,b??f,d,S,v,y);break;case`CIMTextSymbol`:this._analyzeTextGraphic(t,n,w,r,i,a,b??f,v)}u&&r.pop()}}_analyzeCallout(e,t,n,r,i,a,o){let s=e.callout;if(!s||!ie(s))return;let c=t??[],{leaderTolerance:l,leaderOffset:u}=s;switch(s.type){case`CIMSimpleLineCallout`:{let{lineSymbol:e,autoSnap:t}=s,d={type:`CIMSimpleLineCallout`,leaderTolerance:l,leaderOffset:u,autoSnap:t,inflateSize:500};this._analyzeSymbolLayer(e,[...c,{type:`cim-effect-param`,effect:d,overrides:[]}],n,r,i,a,o);break}case`CIMBackgroundCallout`:{let{accentBarSymbol:e,gap:t,backgroundSymbol:d,leaderLineSymbol:f,lineStyle:p,margin:m}=s,h=n=>({type:`CIMBackgroundCallout`,leaderTolerance:l,leaderOffset:u,lineStyle:Y(p),gap:t,hasAccentBar:!!e,margin:m,inflateSize:500,part:n}),g=[...c,{type:`cim-effect-param`,effect:h(`background`),overrides:[]}];f&&this._analyzeSymbolLayer(f,[...c,{type:`cim-effect-param`,effect:h(`leader`),overrides:[]}],n,r,i,a,o);let _=d.symbolLayers??[];Q(_)?this._analyzeCompositeOutlineFill(_,null,i,g):this._analyzeSymbolLayer(d,g,n,r,i,a,o),e&&this._analyzeSymbolLayer(e,[...c,{type:`cim-effect-param`,effect:h(`accent-bar`),overrides:[]}],n,r,i,a,o);break}case`CIMBalloonCallout`:{let{balloonStyle:e,backgroundSymbol:t,dartSymbol:d,fixedDartWidth:f,margin:p,useDartSymbol:m,useFixedDartWidth:h}=s,g=m===!0&&d!=null,_=t=>({type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:p,balloonStyle:ce(e),dartWidth:h?f:void 0,inflateSize:500,part:t,separateDart:g}),v=(e,t)=>{let s=[...c,{type:`cim-effect-param`,effect:_(t),overrides:[]}],l=e.symbolLayers??[];Q(l)?this._analyzeCompositeOutlineFill(l,null,i,s):this._analyzeSymbolLayer(e,s,n,r,i,a,o)};g&&v(d,`dart`),v(t,`background`);break}case`CIMPointSymbolCallout`:{let{backgroundScale:e,gap:t,leaderLineSymbol:d,lineStyle:f,pointSymbol:p}=s,m=oe(e),h=ae(p,n),g=e=>({type:`CIMPointSymbolCallout`,leaderTolerance:l,leaderOffset:u,backgroundScale:m,...se(p,e),lineStyle:Y(f),gap:t,inflateSize:500,part:e});d&&this._analyzeSymbolLayer(d,[...c,{type:`cim-effect-param`,effect:g(`leader`),overrides:[]}],n,r,i,a,o),this._analyzeSymbolLayer(p,[...c,{type:`cim-effect-param`,effect:g(`marker`),overrides:[]}],h,r,i,a,o||m!==0);break}case`CIMCompositeCallout`:{let{backgroundSymbol:e,margin:t,shadowSymbol:d}=s,f={type:`CIMBalloonCallout`,leaderTolerance:l,leaderOffset:u,margin:t,balloonStyle:1,inflateSize:500,part:`background`},p=[...c,{type:`cim-effect-param`,effect:f,overrides:[]}],m=e=>{let t=e.symbolLayers??[];Q(t)?this._analyzeCompositeOutlineFill(t,null,i,p):this._analyzeSymbolLayer(e,p,n,r,i,a,o)};d&&m(d),m(e);break}}}_analyzeMultiLayerGraphic(e,t,n,r,i,a,o,s,c,l,u,d){let f=r.symbol,p=f.symbolLayers;if(p){if(_e(p)&&!v(c)){this._analyzeCompositeMarkerGraphic(e,t,n,r,p,a,o,s,l,u,d);return}if(Se(p)){x(f,e=>{e.colorLocked&&(u=!0)}),this._analyzeMultiLayerGraphicNonSDF(e,t,n,r,i,a,o,s,c,l,u,d);return}this._analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,d)}}_analyzeMarkerGraphicSymbolLayers(e,t,n,r,i,a,o,s,c,l,u,f){let p=r.symbol,m=p.symbolLayers;if(!m)return;let h=le.applyEffects(p.effects,r.geometry);if(!h)return;let g=m.length;for(;g--;){let p=m[g];if(!p||p.enable===!1)continue;let _=p.primitiveName;switch(_&&i.push(_),p.type){case`CIMSolidFill`:case`CIMSolidStroke`:{let i=le.applyEffects(p.effects,h),m=k(i);if(!m)continue;let g=e.anchorPointUnits!==`Relative`,v=p.type===`CIMSolidStroke`?p.width:0,{frameSizeRatio:y,anchorX:b,anchorY:x,widthRatio:S,sdfPaddingRatio:w,sdfTextureSize:T}=A(m,e.frame,e.size,e.anchorPoint,g,v,e.scaleSymbolsProportionally),E=p.type===`CIMSolidFill`,D={type:`sdf`,geometry:i,sdfPaddingRatio:w,asFill:E,sdfTextureSize:T},{path:O}=p,M=E?P(W(p)):O==null?P(G(p)):[0,0,0,0],N=E?[0,0,0,0]:P(G(p));if(!E&&!v)break;let F=r.primitiveName,I=null;E&&!p.colorLocked&&(I=this._maybeGetValueOrOverrideExpression(F,`FillColor`));let L=null;!E&&!p.colorLocked&&(L=this._maybeGetValueOrOverrideExpression(F,`StrokeColor`));let z=I??this._getValueOrOverrideExpression(p.type,_,`Color`,M),B=L??this._getValueOrOverrideExpression(p.type,_,`Color`,N),V=this._maybeGetValueOrOverrideExpression(F,`StrokeWidth`)??this._getValueOrOverrideExpression(p.type,_,`Width`,v),H=O?{type:`sprite-rasterization-param`,resource:{type:`path`,path:O,asFill:E},overrides:[]}:{type:`sprite-rasterization-param`,resource:D,overrides:[]},U=d(this._poMap,p,c),K=R(e.size,C.CIMVectorMarker.size),q=this._getValueOrOverrideExpression(e.type,e.primitiveName,`Size`,K);this._cimLayers.push({type:`marker`,name:p.name,groupName:e.name,spriteRasterizationParam:H,colorLocked:!!p.colorLocked||!!u,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:b,y:x},isAbsoluteAnchorPoint:g,size:l,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:l,widthRatio:S,rotateClockwise:!1,referenceSize:o,sizeRatio:y,color:z,outlineColor:B,outlineWidth:V,isOutline:f,markerPlacement:n,animationParams:$(U),isStroke:p.type!==`CIMSolidFill`,baseSize:q,...j(i,T,w)});break}case`CIMPictureMarker`:case`CIMVectorMarker`:if(p.markerPlacement){X().error(`Error analyzing CIM, got unexpected marker placement`);break}this._analyzeMarker(p,t,n,i,a,o,!1,s,c,u,f)}_&&i.pop()}}_analyzeTextGraphic(e,n,r,i,a,o,s,c){E.findApplicableOverrides(r,this._primitiveOverrides,[]);let l=r.geometry;if(!(`x`in l)||!(`y`in l))return;let u=r.symbol,d=K(u),f=T(u.fontStyleName),p=t(u.fontFamilyName);u.font={family:p,decoration:d,...f};let m=R(u.height,C.CIMTextSymbol.height),h=R(u.angle),g=R(u.offsetX),_=R(u.offsetY),{haloSymbol:v}=u,y=R(u.haloSize,0),b=[0,0,0,0];if(v?.symbolLayers?.length){let e=v.symbolLayers;for(let t of e)if(t.color){b=this._getValueOrOverrideExpression(u?.haloSymbol?.type??`CIMPolygonSymbol`,t.primitiveName,`Color`,P(t.color));break}}let x=r.primitiveName,S=[0,0,0,1],w=[0,0,0,0],O=0,k=!1;if(u.symbol?.symbolLayers)for(let e of u.symbol.symbolLayers){let t=e.primitiveName;if(e.type===`CIMSolidStroke`)w=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Color`,P(e.color)),O=this._getValueOrOverrideExpression(`CIMSolidStroke`,t,`Width`,q(e)??0);else if(e.type===`CIMSolidFill`){let n=P(e.color);k??=!!e.colorLocked,S=this._getValueOrOverrideExpression(`CIMSolidFill`,t??x,`Color`,n)}}let A=null,j=null,M=null,N=null,F=null;x&&(A=this._maybeGetValueOrOverrideExpression(x,`TextSize`),j=this._maybeGetValueOrOverrideExpression(x,`TextAngle`),M=this._maybeGetValueOrOverrideExpression(x,`TextOffsetX`),N=this._maybeGetValueOrOverrideExpression(x,`TextOffsetY`),k||(F=this._maybeGetValueOrOverrideExpression(x,`FillColor`)));let I=F??S,L=null,z=null,B=0,V=u.callout?.type===`CIMBackgroundCallout`;if(u.callout?.type===`CIMBackgroundCallout`){let e=u.callout;if(e.backgroundSymbol){let t=e.backgroundSymbol.symbolLayers;if(t)for(let e of t)e.type===`CIMSolidFill`?L=P(e.color):e.type===`CIMSolidStroke`&&(z=P(e.color),B=R(e.width,C.CIMSolidStroke.width))}}let H=this._getValueOrOverrideExpression(u.type,r.primitiveName,`TextString`,r.textString??``);if(H==null)return;let{fontStyleName:U}=u,W=p+(U?`-`+U.toLowerCase():`-regular`),G=this._getMaterialOverrides(i,u.type);G.push(...this._getPrimitiveMaterialOverrides(r.primitiveName,u.type)),this._collectDictionaryTemplateOverrides(G,r);let J={type:`text-rasterization-param`,resource:{type:`text`,textString:r.textString??``,font:u.font,symbol:u,primitiveName:r.primitiveName,supportsRichText:D(r.textString??``)||G.some(e=>e.propertyName===`textString`)},overrides:G};this._cimLayers.push({type:`text`,lineWidth:u.lineWidth,textRasterizationParam:J,colorLocked:!!c||!!k,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:W,decoration:d,haloSize:y,haloColor:b,weight:f.weight,style:f.style,size:A??m,angle:j??h,offsetX:M??g,offsetY:N??_,transform:{type:`cim-marker-transform-param`,params:s},horizontalAlignment:te(u.horizontalAlignment),verticalAlignment:ee(u.verticalAlignment),text:H,color:I,outlineColor:w,outlineSize:O,backgroundColor:L,borderLineColor:z,borderLineWidth:B,useBackgroundCallout:V,referenceSize:o,sizeRatio:1,markerPlacement:n})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){let n=J(t.symbol);e.push({propertyName:`textString`,defaultValue:``,valueExpressionInfo:{type:`dictionary-template`,textCase:n,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,n,r,a,o,s,c,l,u,d,f){let p=me(e,r),m=e.primitiveName,h=this._analyzeMaterialOverrides(m,[`Rotation`,`OffsetX`,`OffsetY`]),g=V(h),[_,v,y]=b.getTextureAnchor(p,this._resourceManager,ue),x=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==m||![`rotation`,`offsetX`,`offsetY`].includes(e.propertyName));x.push(...g);let S={type:`sprite-rasterization-param`,resource:{...p,avoidSDFRasterization:!0},overrides:x},w=R(e.size,C.CIMVectorMarker.size),T=this._getValueOrOverrideExpression(e.type,m,`Size`,w);this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:S,colorLocked:d,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:o,anchorPoint:{x:_,y:v},isAbsoluteAnchorPoint:!1,size:u,rotation:0,offsetX:0,offsetY:0,transform:{type:`cim-marker-transform-param`,params:c},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:u,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:s,sizeRatio:y/i(e.size),isOutline:f,markerPlacement:n,animationParams:$(l),baseSize:T})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-marker-placement-param`,placement:e,overrides:we(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;let t=[];return E.findApplicableOverrides(e,this._primitiveOverrides,t),{type:`cim-gif-animation-params`,animation:e,overrides:we(t)}}_analyzeCompositeMarkerGraphic(e,t,n,r,i,a,o,s,c,l,u){let d=r.geometry,f=i[0],p=i[1],m=k(d);if(!m)return;let h=e.anchorPointUnits!==`Relative`,g=R(f.width,C.CIMSolidStroke.width),{frameSizeRatio:_,anchorX:v,anchorY:y,widthRatio:b,sdfPaddingRatio:x,sdfTextureSize:S}=A(m,e.frame,e.size,e.anchorPoint,h,g,e.scaleSymbolsProportionally),{path:w}=p,T=p.primitiveName,E=f.primitiveName,D=r.primitiveName,O=null;!p.colorLocked&&!l&&(O=this._maybeGetValueOrOverrideExpression(D,`FillColor`));let j=O??this._getValueOrOverrideExpression(p.type,T,`Color`,P(p.color)),M=null;!f.colorLocked&&!l&&(M=this._maybeGetValueOrOverrideExpression(D,`StrokeColor`));let N=M??this._getValueOrOverrideExpression(f.type,E,`Color`,P(f.color)),F=this._maybeGetValueOrOverrideExpression(D,`StrokeWidth`)??this._getValueOrOverrideExpression(f.type,E,`Width`,g),I={type:`sprite-rasterization-param`,resource:w?{type:`path`,path:w,asFill:!0}:{type:`sdf`,geometry:d,sdfTextureSize:S,sdfPaddingRatio:x,asFill:!0},overrides:[]};this._cimLayers.push({type:`marker`,name:e.name,spriteRasterizationParam:I,colorLocked:l,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:v,y},isAbsoluteAnchorPoint:h,size:c,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:`cim-marker-transform-param`,params:s},frameHeight:c,widthRatio:b,rotateClockwise:!1,referenceSize:o,sizeRatio:_,color:j,outlineColor:N,outlineWidth:F,isOutline:u,markerPlacement:n})}_setPoMap(e,t,n){let r;this._poMap[e]?r=this._poMap[e]:(r={},this._poMap[e]=r),r[t]=n}_maybeGetValueOrOverrideExpression(e,t,n){return this._getValueOrOverrideExpression(``,e,t,n,!1)}_getValueOrOverrideExpression(e,t,n,r,i=!0){if(i&&!ne(r)&&(r=H(e,n.toLowerCase())),t==null)return r;let a=this._poMap[t];if(a==null)return r;let o=a[n];return typeof o==`string`||typeof o==`number`||Array.isArray(o)?o:o?{valueExpressionInfo:o,defaultValue:r}:r}_analyzePrimitiveOverrides(e,t,n,r){if(e==null)return!1;typeof e==`string`&&(e=[e]);for(let t of this._primitiveOverrides)if(e.includes(t.primitiveName)&&t.valueExpressionInfo)return!0;if(t!=null){for(let e of t)if(e?.overrides.length>0)return!0}if(n!=null){for(let e of n)if(e?.overrides.length>0)return!0}if(r!=null){for(let e of r)if(e?.overrides.length>0)return!0}return!1}_getMaterialOverrides(e,t){if(!e)return[];let n=[];for(let r of e)n.push(...this._getPrimitiveMaterialOverrides(r,t));return n}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];let n=V(this._primitiveOverrides.filter(t=>t.primitiveName===e));return n.forEach(e=>e.defaultValue=H(t,e.propertyName.toLowerCase())),n}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(n=>n.primitiveName!==e||!t.includes(n.propertyName))}}function me(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[{...t}],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function he(e){if(e?.startsWith(`Level_`)){let t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ge(e,t){if(!t||t.length===0)return e;let r=n(e);return E.applyOverrides(r,t),r}const _e=e=>e&&e.length===2&&e[0].enable&&e[1].enable&&e[0].type===`CIMSolidStroke`&&e[1].type===`CIMSolidFill`&&e[0].path==null&&e[1].path==null&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function ve(e){let t=e.symbolLayers;if(!t)return!1;let n=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectDashes`&&e.dashTemplate!=null)),r=t.find(e=>e.effects?.find(e=>e.type===`CIMGeometricEffectAddControlPoints`));return!!n||!!r}function ye(e){return Z(e)}function Z(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectRadial`||e.type===`CIMGeometricEffectTaperedPolygon`||e.type===`PrivateDimensionEffect`||e.type===`PrivateMatcherGeometryOverrideEffect`}function be(e){return e.type===`CIMGeometricEffectCircularSector`||e.type===`CIMGeometricEffectTaperedPolygon`}function xe(e,t){let n=e.filter(e=>e.type===`CIMSolidFill`),r=e.every(e=>e.type===`CIMSolidFill`||e.type===`CIMSolidStroke`),i=e.filter(e=>e.effects?.length),a=i.length===0||i.length===1&&n.length===1&&i[0]===n[0];return n.length>0&&r&&a&&t.some(({effect:e})=>be(e))}function Se(e){return e.some(e=>e.type!==`CIMSolidFill`&&e.type!==`CIMSolidStroke`&&(e.type!==`CIMVectorMarker`&&e.type!==`CIMPictureMarker`||e.markerPlacement!=null))}function Ce(e,t){return!!(t?.some(e=>e.type===`CIMGeometricEffectRadial`)&&t?.some(e=>e.type===`CIMGeometricEffectTaperedPolygon`)||t?.some(e=>e.type===`CIMGeometricEffectCircularSector`))&&Q(e)}function Q(e){if(e?.length!==2)return!1;let t=e.find(e=>e.type===`CIMSolidFill`),n=e.find(e=>e.type===`CIMSolidStroke`),r=n?.effects?.some(e=>e.type===`CIMGeometricEffectDashes`);return t!=null&&n!=null&&!r}function we(e){return n(e).map(e=>({...e,propertyName:re(e.propertyName)}))}function $(e){return v(e)?{type:`animation-params`,params:e}:null}export{pe as CIMAnalyzer,ge as analyzeCIMResource};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{clone as e}from"../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{collisionGridCellSize as t}from"./config.js";import{GridIndex as n}from"./util.js";class r{constructor(r,i,a,o,s,c){this._symbols=r,this._styleRepository=o,this._zoom=s,this._currentLayerCursor=0,this._currentSymbolCursor=0,this._styleProps=new Map,this._allNeededMatrices=new Map,this._gridIndex=new n(i,a,t),this._si=Math.sin(Math.PI*
|
|
2
|
+
import{clone as e}from"../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{collisionGridCellSize as t}from"./config.js";import{GridIndex as n}from"./util.js";class r{constructor(r,i,a,o,s,c,l){this._symbols=r,this._styleRepository=o,this._zoom=s,this._scale=c,this._currentLayerCursor=0,this._currentSymbolCursor=0,this._styleProps=new Map,this._allNeededMatrices=new Map,this._gridIndex=new n(i,a,t),this._si=Math.sin(Math.PI*l/180),this._co=Math.cos(Math.PI*l/180),o.cachedStyles&&(this._styleProps=o.cachedStyles);for(let t of r)for(let n of t.symbols)this._allNeededMatrices.has(n.tile)||this._allNeededMatrices.set(n.tile,e(n.tile.transforms.tileUnitsToPixels))}work(e){let t=performance.now();for(;this._currentLayerCursor<this._symbols.length;this._currentLayerCursor++,this._currentSymbolCursor=0){let n=this._symbols[this._currentLayerCursor],r=this._getProperties(n.styleLayerUID),i=this._styleRepository.layerContexts?.get(n.styleLayerUID);for(;this._currentSymbolCursor<n.symbols.length;this._currentSymbolCursor++){if(this._currentSymbolCursor%100==99&&performance.now()-t>e)return!1;let a=n.symbols[this._currentSymbolCursor];if(!a.uniqueSymbol?.show)continue;let o=this._computeCoordinates(a,r,i),s=a.uniqueSymbol;if(!s.show)continue;let{iconAllowOverlap:c,textAllowOverlap:l}=r;for(let e of o){if(!e.enabled)continue;let t=s.parts[e.partIndex];t.show&&!(e.partIndex?l:c)&&this._doesCollide(e)&&(e.hard?s.show=!1:t.show=!1)}s.show&&this._insertColliders(s.parts,o,r)}}return!0}_insertColliders(e,t,n){let{iconIgnorePlacement:r,textIgnorePlacement:i}=n;for(let n of t){if(!n.enabled||(n.partIndex?i:r)||!e[n.partIndex].show)continue;let t=n.xScreen+n.dxScreen,a=n.yScreen+n.dyScreen,o=t+n.width,s=a+n.height,[c,l,u,d]=this._gridIndex.getCellSpan(t,a,o,s);for(let e=l;e<=d;e++)for(let t=c;t<=u;t++)this._gridIndex.cells[e][t].push(n)}}_computeCoordinates(e,t,n){let{iconRotationAlignment:r,textRotationAlignment:i,iconTranslate:a,iconTranslateAnchor:o,textTranslate:s,textTranslateAnchor:c}=t,l=this._si,u=this._co,d=this._zoom,f=this._allNeededMatrices.get(e.tile),p=e.uniqueSymbol,m=e.colliders(n,this._scale),h=0;for(let e of m){let[t,n]=e.partIndex===0?a:s,p=e.partIndex===0?o:c,m=e.minLod<=d&&d<=e.maxLod;h+=+!m,e.enabled=m,e.xScreen=e.xTile*f[0]+e.yTile*f[3]+f[6],e.yScreen=e.xTile*f[1]+e.yTile*f[4]+f[7],p===0?(e.xScreen+=u*t-l*n,e.yScreen+=l*t+u*n):(e.xScreen+=t,e.yScreen+=n),(e.partIndex===0?r:i)===1?(e.dxScreen=e.dxPixels,e.dyScreen=e.dyPixels):(e.dxScreen=u*(e.dxPixels+e.width/2)-l*(e.dyPixels+e.height/2)-e.width/2,e.dyScreen=l*(e.dxPixels+e.width/2)+u*(e.dyPixels+e.height/2)-e.height/2)}return m.length>0&&h===m.length&&p&&(p.show=!1),m}_getProperties(e){let t=this._styleProps.get(e);if(t)return t;let n=this._styleRepository.getLayerStyleProperties?.(e,this._zoom);return this._styleProps.set(e,n),n}_doesCollide(e){let t=e.xScreen+e.dxScreen,n=e.yScreen+e.dyScreen,r=t+e.width,i=n+e.height,[a,o,s,c]=this._gridIndex.getCellSpan(t,n,r,i);for(let l=o;l<=c;l++)for(let o=a;o<=s;o++){let a=this._gridIndex.cells[l][o];for(let o of a){if(o.labelId!=null&&e.labelId!=null&&o.labelId===e.labelId)continue;let a=o.xScreen+o.dxScreen,s=o.yScreen+o.dyScreen,c=a+o.width,l=s+o.height;if(!(r<a||t>c||i<s||n>l))return!0}}return!1}}export{r as CollisionJob};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{signal as e}from"../../../../../core/signal.js";import{CollisionJob as t}from"./CollisionJob.js";import{declutterBudget as n,fadeDuration as r}from"./config.js";import{SymbolDeclutterer as i}from"./SymbolDeclutterer.js";import{SymbolRepository as a}from"./SymbolRepository.js";const o=1e-6;class s{constructor(t,r,s,c,l,u=n,d=()=>{}){this.styleRepository=r,this.tiles=c,this._declutterBudget=u,this._requestFeatureDeclutter=d,this._tileToHandle=new Map,this._viewState={scale:0,rotation:0,center:[0,0],size:[0,0]},this._declutterViewState={scale:0,rotation:0,center:[0,0],size:[0,0]},this._offsetFromScreenCenter=[0,0],this._completed=!1,this._fading=e(!1);let f=(e,t,n)=>this._createCollisionJob(e,t,n),p=e=>{let t=this.styleRepository.getStyleLayerByUID?.(e);if(t){if(this._zoom+o<t.minzoom||this._zoom-o>=t.maxzoom)return!1;let e=t.getLayoutProperty?.(`visibility`);if(e&&e.getValue()===1)return!1}return this.styleRepository.layerContexts?.get(e)?.effectiveVisible!==!1},m=(e,t)=>(this.styleRepository.getStyleLayerByUID?.(e.styleLayerUID)?.z??0)-(this.styleRepository.getStyleLayerByUID?.(t.styleLayerUID)?.z??0);this._symbolRepository=new a(l,c),this._symbolDeclutterer=new i(t,c,this._symbolRepository,this.styleRepository,f,s,m,p)}get symbolRepository(){return this._symbolRepository}_createCollisionJob(e,n,r){return this.updateDecluttererViewState(),new t(e,n,r,this.styleRepository,this._zoom,this._viewState.rotation)}get fading(){return this._fading.value}get decluttererOffset(){return this._offsetFromScreenCenter}registerFeatureTile(e){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this.symbolRepository.registerFeatureTile(e),this._requestFeatureDeclutter()}unregisterFeatureTile(e){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this._symbolRepository.unregisterFeatureTile(e),this._requestFeatureDeclutter()}insertFeatureTileMetrics(e,t){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this.symbolRepository.insertFeatureTileMetrics(e,t),this._requestFeatureDeclutter()}removeFeatureTileMetrics(e,t){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this.symbolRepository.removeFeatureTileMetrics(e,t),this._requestFeatureDeclutter()}addTile(e){e.decluttered=!1,this._tileToHandle.set(e,e.on(`symbols-changed`,()=>{this._symbolRepository.registerVectorTile(e),this.restartDeclutter()})),this._symbolRepository.registerVectorTile(e),this.restartDeclutter()}removeTile(e){let t=this._tileToHandle.get(e);t&&(this._symbolRepository.unregisterVectorTile(e),this.restartDeclutter(),t.remove(),this._tileToHandle.delete(e))}update(e,t){this._zoom=e,this._viewState={scale:t.scale,rotation:t.rotation,center:[t.center[0],t.center[1]],size:[t.size[0],t.size[1]]};let n=[0,0];t.toScreen(n,t.center);let r=[0,0];return t.toScreen(r,this._declutterViewState.center),this._offsetFromScreenCenter[0]=n[0]-r[0],this._offsetFromScreenCenter[1]=n[1]-r[1],this._continueDeclutter(),this._completed}restartDeclutter(){this._completed=!1,this._symbolDeclutterer.restart(),this._notifyUnstable()}clear(){this._completed=!1,this._symbolRepository=null,this._symbolDeclutterer.restart(),this._tileToHandle.forEach(e=>e.remove()),this._tileToHandle.clear()}get stale(){return this._zoom!==this._declutterZoom||this._viewState.size[0]!==this._declutterViewState.size[0]||this._viewState.size[1]!==this._declutterViewState.size[1]||this._viewState.scale!==this._declutterViewState.scale||this._viewState.rotation!==this._declutterViewState.rotation}deleteStyleLayers(e){this._symbolRepository.deleteStyleLayers(e)}_continueDeclutter(){(!this._completed||this.stale)&&(this._symbolDeclutterer.running||(this.updateDecluttererViewState(),this._symbolDeclutterer.restart()),this._symbolDeclutterer.setScreenSize(this._viewState.size[0],this._viewState.size[1]),this._completed=this._symbolDeclutterer.continue(this._declutterBudget),this._completed&&this._scheduleNotifyStable())}_scheduleNotifyStable(){this._stableNotificationHandle!=null&&clearTimeout(this._stableNotificationHandle),this._stableNotificationHandle=setTimeout(()=>{this._stableNotificationHandle=null,this._fading.value=!1},1.5*r)}_notifyUnstable(){this._stableNotificationHandle!=null&&(clearTimeout(this._stableNotificationHandle),this._stableNotificationHandle=null),this._fading.value=!0}updateDecluttererViewState(){this._declutterZoom=this._zoom,this._declutterViewState.center[0]=this._viewState.center[0],this._declutterViewState.center[1]=this._viewState.center[1],this._declutterViewState.rotation=this._viewState.rotation,this._declutterViewState.scale=this._viewState.scale,this._declutterViewState.size[0]=this._viewState.size[0],this._declutterViewState.size[1]=this._viewState.size[1],this._offsetFromScreenCenter[0]=0,this._offsetFromScreenCenter[1]=0}}export{s as SymbolFader};
|
|
2
|
+
import{signal as e}from"../../../../../core/signal.js";import{CollisionJob as t}from"./CollisionJob.js";import{declutterBudget as n,fadeDuration as r}from"./config.js";import{SymbolDeclutterer as i}from"./SymbolDeclutterer.js";import{SymbolRepository as a}from"./SymbolRepository.js";const o=1e-6;class s{constructor(t,r,s,c,l,u=n,d=()=>{}){this.styleRepository=r,this.tiles=c,this._declutterBudget=u,this._requestFeatureDeclutter=d,this._tileToHandle=new Map,this._viewState={scale:0,rotation:0,center:[0,0],size:[0,0]},this._declutterViewState={scale:0,rotation:0,center:[0,0],size:[0,0]},this._offsetFromScreenCenter=[0,0],this._completed=!1,this._fading=e(!1);let f=(e,t,n)=>this._createCollisionJob(e,t,n),p=e=>{let t=this.styleRepository.getStyleLayerByUID?.(e);if(t){if(this._zoom+o<t.minzoom||this._zoom-o>=t.maxzoom)return!1;let e=t.getLayoutProperty?.(`visibility`);if(e&&e.getValue()===1)return!1}return this.styleRepository.layerContexts?.get(e)?.effectiveVisible!==!1},m=(e,t)=>(this.styleRepository.getStyleLayerByUID?.(e.styleLayerUID)?.z??0)-(this.styleRepository.getStyleLayerByUID?.(t.styleLayerUID)?.z??0);this._symbolRepository=new a(l,c),this._symbolDeclutterer=new i(t,c,this._symbolRepository,this.styleRepository,f,s,m,p)}get symbolRepository(){return this._symbolRepository}_createCollisionJob(e,n,r){return this.updateDecluttererViewState(),new t(e,n,r,this.styleRepository,this._zoom,this._viewState.scale,this._viewState.rotation)}get fading(){return this._fading.value}get decluttererOffset(){return this._offsetFromScreenCenter}registerFeatureTile(e){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this.symbolRepository.registerFeatureTile(e),this._requestFeatureDeclutter()}unregisterFeatureTile(e){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this._symbolRepository.unregisterFeatureTile(e),this._requestFeatureDeclutter()}insertFeatureTileMetrics(e,t){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this.symbolRepository.insertFeatureTileMetrics(e,t),this._requestFeatureDeclutter()}removeFeatureTileMetrics(e,t){if(!this.symbolRepository){console.error(`InternalError: Symbol repository not yet initialized`);return}this.symbolRepository.removeFeatureTileMetrics(e,t),this._requestFeatureDeclutter()}addTile(e){e.decluttered=!1,this._tileToHandle.set(e,e.on(`symbols-changed`,()=>{this._symbolRepository.registerVectorTile(e),this.restartDeclutter()})),this._symbolRepository.registerVectorTile(e),this.restartDeclutter()}removeTile(e){let t=this._tileToHandle.get(e);t&&(this._symbolRepository.unregisterVectorTile(e),this.restartDeclutter(),t.remove(),this._tileToHandle.delete(e))}update(e,t){this._zoom=e,this._viewState={scale:t.scale,rotation:t.rotation,center:[t.center[0],t.center[1]],size:[t.size[0],t.size[1]]};let n=[0,0];t.toScreen(n,t.center);let r=[0,0];return t.toScreen(r,this._declutterViewState.center),this._offsetFromScreenCenter[0]=n[0]-r[0],this._offsetFromScreenCenter[1]=n[1]-r[1],this._continueDeclutter(),this._completed}restartDeclutter(){this._completed=!1,this._symbolDeclutterer.restart(),this._notifyUnstable()}clear(){this._completed=!1,this._symbolRepository=null,this._symbolDeclutterer.restart(),this._tileToHandle.forEach(e=>e.remove()),this._tileToHandle.clear()}get stale(){return this._zoom!==this._declutterZoom||this._viewState.size[0]!==this._declutterViewState.size[0]||this._viewState.size[1]!==this._declutterViewState.size[1]||this._viewState.scale!==this._declutterViewState.scale||this._viewState.rotation!==this._declutterViewState.rotation}deleteStyleLayers(e){this._symbolRepository.deleteStyleLayers(e)}_continueDeclutter(){(!this._completed||this.stale)&&(this._symbolDeclutterer.running||(this.updateDecluttererViewState(),this._symbolDeclutterer.restart()),this._symbolDeclutterer.setScreenSize(this._viewState.size[0],this._viewState.size[1]),this._completed=this._symbolDeclutterer.continue(this._declutterBudget),this._completed&&this._scheduleNotifyStable())}_scheduleNotifyStable(){this._stableNotificationHandle!=null&&clearTimeout(this._stableNotificationHandle),this._stableNotificationHandle=setTimeout(()=>{this._stableNotificationHandle=null,this._fading.value=!1},1.5*r)}_notifyUnstable(){this._stableNotificationHandle!=null&&(clearTimeout(this._stableNotificationHandle),this._stableNotificationHandle=null),this._fading.value=!0}updateDecluttererViewState(){this._declutterZoom=this._zoom,this._declutterViewState.center[0]=this._viewState.center[0],this._declutterViewState.center[1]=this._viewState.center[1],this._declutterViewState.rotation=this._viewState.rotation,this._declutterViewState.scale=this._viewState.scale,this._declutterViewState.size[0]=this._viewState.size[0],this._declutterViewState.size[1]=this._viewState.size[1],this._offsetFromScreenCenter[0]=0,this._offsetFromScreenCenter[1]=0}}export{s as SymbolFader};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{identity as e,translate as t,rotate as n,scale as r}from"../../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as i}from"../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{toRadian as a}from"../../../../../core/libs/gl-matrix-2/math/common.js";import{tileSizeInTileUnits as o}from"../constants.js";import{CollisionJob as s}from"./CollisionJob.js";import{SymbolDeclutterer as c}from"./SymbolDeclutterer.js";import{SymbolRepository as l}from"./SymbolRepository.js";import{writeOpacityToBuffers as u}from"./util.js";function d(i,d){let p=i.transforms.tileUnitsToPixels,m=a(d),h=Math.ceil(512*(Math.abs(Math.sin(m))+Math.abs(Math.cos(m))));e(f),t(f,f,[h/2,h/2]),n(f,f,m),t(f,f,[-256,-256]),r(f,f,[1/8,1/8,1]),i.transforms.tileUnitsToPixels=f;let g=[],_=new l(o,g),v=new c(`vector-tile`,g,_,null,(e,t,n)=>new s(e,t,n,i.styleRepository,i.key.level,d),(e,t)=>{u(e,t,!1)},()=>0,e=>{let t=i.styleRepository.getStyleLayerByUID(e).getLayoutProperty(`visibility`);return!(t&&t.getValue()===1)});g.push(i),_.registerVectorTile(i),v.setScreenSize(h,h),v.continue(1/0),_.unregisterVectorTile(i),i.transforms.tileUnitsToPixels=p}const f=i();export{d as declutterSingleTile};
|
|
2
|
+
import{identity as e,translate as t,rotate as n,scale as r}from"../../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as i}from"../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{toRadian as a}from"../../../../../core/libs/gl-matrix-2/math/common.js";import{tileSizeInTileUnits as o}from"../constants.js";import{CollisionJob as s}from"./CollisionJob.js";import{SymbolDeclutterer as c}from"./SymbolDeclutterer.js";import{SymbolRepository as l}from"./SymbolRepository.js";import{writeOpacityToBuffers as u}from"./util.js";function d(i,d){let p=i.transforms.tileUnitsToPixels,m=a(d),h=Math.ceil(512*(Math.abs(Math.sin(m))+Math.abs(Math.cos(m))));e(f),t(f,f,[h/2,h/2]),n(f,f,m),t(f,f,[-256,-256]),r(f,f,[1/8,1/8,1]),i.transforms.tileUnitsToPixels=f;let g=[],_=new l(o,g),v=new c(`vector-tile`,g,_,null,(e,t,n)=>new s(e,t,n,i.styleRepository,i.key.level,void 0,d),(e,t)=>{u(e,t,!1)},()=>0,e=>{let t=i.styleRepository.getStyleLayerByUID(e).getLayoutProperty(`visibility`);return!(t&&t.getValue()===1)});g.push(i),_.registerVectorTile(i),v.setScreenSize(h,h),v.continue(1/0),_.unregisterVectorTile(i),i.transforms.tileUnitsToPixels=p}const f=i();export{d as declutterSingleTile};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{pt2px as e}from"../../../../../core/screenUtils.js";import{labelPlacementOffsetPadding as t}from"../definitions.js";import n from"./BoundingBox.js";import{serializeList as r,deserializeList as i}from"../util/serializationUtils.js";class a{constructor(e,t,n,r,i,a,o,s,c,l,u,d=[],f=0,p=0,m=[]){this.displayId=e,this.labelClassId=t,this.labelIdHash=n,this.hash=r,this.anchorX=i,this.anchorY=a,this.directionX=o,this.directionY=s,this.maxScale=c,this.minScale=l,this.referenceBounds=u,this.bounds=d,this.recordStart=f,this.recordCount=p,this.additionalRecordRanges=m,this.priority=0,this._colliders=null,this.referenceSymbolVVOffset=[0,0],this.uniqueSymbol=null,this.labelStoreId=null,this.selectedForRendering=!1,this._calloutCollisionBounds=null}get xTile(){return this.anchorX}get yTile(){return this.anchorY}colliders(n){if(!this._colliders){if(!n)throw Error(`InternalError: Label collision context
|
|
2
|
+
import{pt2px as e}from"../../../../../core/screenUtils.js";import{labelPlacementOffsetPadding as t}from"../definitions.js";import n from"./BoundingBox.js";import{serializeList as r,deserializeList as i}from"../util/serializationUtils.js";class a{constructor(e,t,n,r,i,a,o,s,c,l,u,d=[],f=0,p=0,m=[]){this.displayId=e,this.labelClassId=t,this.labelIdHash=n,this.hash=r,this.anchorX=i,this.anchorY=a,this.directionX=o,this.directionY=s,this.maxScale=c,this.minScale=l,this.referenceBounds=u,this.bounds=d,this.recordStart=f,this.recordCount=p,this.additionalRecordRanges=m,this.priority=0,this._colliders=null,this.referenceSymbolVVOffset=[0,0],this.uniqueSymbol=null,this.labelStoreId=null,this.selectedForRendering=!1,this._calloutCollisionBounds=null}get xTile(){return this.anchorX}get yTile(){return this.anchorY}colliders(n,r){if(!this._colliders||r!=null&&r!==this._collidersScale){if(!n||r==null)throw Error(`InternalError: Label collision context and view scale are required to compute colliders`);let i=n.attributeView,a=t,o=this.referenceBounds?.size??0,s=Math.round(e(o)),c=n.labelingCollisionInfos[0].vvEvaluators[0];if(this.referenceSymbolVVOffset=[0,0],c!=null){let e=c(i.getVisualVariableData(this.displayId,0),r);if(!isNaN(e)&&e!=null&&e!==1/0){o=e;let t=(o-s)/2;this.referenceSymbolVVOffset=[this.directionX*t,this.directionY*t]}}let l=this.minScale?n.tilingScheme.scaleToZoom(this.minScale):0,u=this.maxScale?n.tilingScheme.scaleToZoom(this.maxScale):25,d=e(this.referenceBounds?.offsetX??0)+this.directionX*(a+o/2),f=-e(this.referenceBounds?.offsetY??0)+this.directionY*(a+o/2);this._colliders=this.bounds.map(e=>({labelId:this.labelIdHash,xTile:this.anchorX,yTile:this.anchorY,dxPixels:e.x-e.halfWidth+d,dyPixels:e.y-e.halfHeight+f,hard:!0,partIndex:1,width:e.width+2,height:e.height+2,angle:0,xScreen:0,yScreen:0,dxScreen:0,dyScreen:0,enabled:!0,minLod:l,maxLod:u})),this._collidersScale=r}return this._colliders}get id(){return this.displayId}includeRecordRange(e,t){if(t!==0){if(e===this.recordStart+this.recordCount){this.recordCount+=t;return}this.additionalRecordRanges.push({recordStart:e,recordCount:t})}}includeCalloutCollisionBounds(e){let t=o(e);t&&(this._calloutCollisionBounds?this._calloutCollisionBounds.extend(t):(this._calloutCollisionBounds=t,this.bounds.push(t)),this._colliders=null)}includeCalloutPartCollisionBounds(e){let t=o(e);t&&!this.bounds.some(e=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height)&&(this.bounds.push(t),this._colliders=null)}serialize(e){e.push(this.displayId),e.push(this.labelClassId),e.push(this.labelIdHash),e.push(this.hash),e.push(this.recordStart),e.push(this.recordCount),e.push(this.additionalRecordRanges.length);for(let t of this.additionalRecordRanges)e.push(t.recordStart),e.push(t.recordCount);e.writeF32(this.anchorX),e.writeF32(this.anchorY),e.writeF32(this.directionX),e.writeF32(this.directionY),e.writeF32(this.maxScale),e.writeF32(this.minScale),this.referenceBounds?(e.writeF32(this.referenceBounds.size),e.writeF32(this.referenceBounds.offsetX),e.writeF32(this.referenceBounds.offsetY)):(e.writeF32(0),e.writeF32(0),e.writeF32(0)),r(e,this.bounds)}static deserialize(e){let t=e.readInt32(),r=e.readInt32(),o=e.readInt32(),s=e.readInt32(),c=e.readInt32(),l=e.readInt32(),u=e.readInt32(),d=[];for(let t=0;t<u;t++)d.push({recordStart:e.readInt32(),recordCount:e.readInt32()});let f=e.readF32(),p=e.readF32(),m=e.readF32(),h=e.readF32(),g=e.readF32(),_=e.readF32(),v=e.readF32(),y=e.readF32(),b=e.readF32(),x=i(e,n)??[];return new a(t,r,o,s,f,p,m,h,g,_,{size:v,offsetX:y,offsetY:b},x,c,l,d)}}function o(e){let t=e.xmax-e.xmin,r=e.ymax-e.ymin;return e.xmin==null||isNaN(e.xmin)||e.ymin==null||isNaN(e.ymin)||e.xmax==null||isNaN(e.xmax)||e.ymax==null||isNaN(e.ymax)||t<=0||r<=0?null:new n(e.xmin+t/2,-(e.ymin+r/2),t,r)}export{a as LabelMetric};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{pt2px as e}from"../../../../../../../core/screenUtils.js";import{applyParentTransform as t}from"../../../../../../../symbols/cim/utils.js";import{spritePadding as n}from"../../../definitions.js";class
|
|
2
|
+
import{pt2px as e}from"../../../../../../../core/screenUtils.js";import{applyParentTransform as t}from"../../../../../../../symbols/cim/utils.js";import{spritePadding as n}from"../../../definitions.js";const r=1.25;class i{static from(e){return`width`in e?this.fromSimpleMeshParams(e):this.fromComplexMeshParams(e)}static fromSimpleMeshParams(t){let n=new i(t.sprite,t.color,t.outlineColor,t.minPixelBuffer,t.placement,t.scaleInfo,t.effects),{type:r,width:a,height:o,angle:s,alignment:c,outlineSize:l,referenceSize:u,sprite:d,overrideOutlineColor:f}=t;return n.rawWidth=e(a),n.rawHeight=e(o),n.angle=s,n.alignment=c,n.outlineSize=e(l),n.referenceSize=e(u),n.overrideOutlineColor=f,n.offsetX=e(t.offsetX),n.offsetY=e(t.offsetY),r===`simple`&&!d.sdf&&(n.rawWidth=d.width,n.rawHeight=d.height),n._initializeSizeComputation(!1,t.hasSizeVV),n._captureBaseSizeState(),n._computeSize(),n._captureBaseComputedSize(),n}static fromComplexMeshParams(n){let r=new i(n.sprite,n.color,n.outlineColor,n.minPixelBuffer,n.placement,n.scaleInfo,n.effects),{alignment:a,transforms:o,size:s,scaleX:c,anchorX:l,anchorY:u,angle:d,colorLocked:f,frameHeight:p,widthRatio:m,offsetX:h,offsetY:g,outlineSize:_,referenceSize:v,scaleFactor:y,sizeRatio:b,isAbsoluteAnchorPoint:x,rotateClockwise:S,scaleSymbolsProportionally:C,sprite:w}=n;if(o&&o.infos.length>0){let e=t(s,d,S,h,g,o);s=e.size,d=e.rotation,h=e.offsetX,g=e.offsetY,S=!1}y&&(s*=y,h*=y,g*=y);let T=c*(w.width/w.height);r.alignment=a,r.rawHeight=e(s),r.rawWidth=r.rawHeight*T,r.referenceSize=e(v),r.sizeRatio=b,r.sdfDecodeCoeff=(w.sdfDecodeCoeff??1)*b,r.angle=d,r.rotateClockwise=S,r.anchorX=l,r.anchorY=u,r.offsetX=e(h),r.offsetY=e(g),x&&s&&(r.anchorX=w.sdf?l/(s*m):l/(s*T),r.anchorY=u/s);let E=C&&p?s/p:1;return r.outlineSize=_!==0&&!isNaN(_)?e(_)*E:0,r.scaleSymbolsProportionally=C,r.colorLocked=f,r._initializeSizeComputation(!0,n.hasSizeVV),r._captureBaseSizeState(),r._computeSize(),r._captureBaseComputedSize(),r}constructor(e,t,n,r,i,a,o){this.sprite=e,this.color=t,this.outlineColor=n,this.minPixelBuffer=r,this.placement=i,this.scaleInfo=a,this.effects=o,this.rawWidth=0,this.rawHeight=0,this.angle=0,this.outlineSize=0,this.referenceSize=0,this.sizeRatio=1,this.sdfDecodeCoeff=1,this.alignment=0,this.scaleSymbolsProportionally=!1,this.overrideOutlineColor=!1,this.colorLocked=!1,this.anchorX=0,this.anchorY=0,this.computedWidth=0,this.computedHeight=0,this.texXmin=0,this.texYmin=0,this.texXmax=0,this.texYmax=0,this.offsetX=0,this.offsetY=0,this.rotateClockwise=!0,this._baseRawWidth=0,this._baseRawHeight=0,this._baseComputedWidth=0,this._baseComputedHeight=0,this._baseAnchorX=0,this._baseAnchorY=0,this._isCIM=!1,this._hasSizeVV=!1}applyPointSymbolCalloutBackgroundScale(e,t,n,i=0,a=1,o=1,s=!1){if(t+=2*i,n+=2*i,s&&(t+=i,n+=i),!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n<=0||a<=0||o<=0||this._baseComputedWidth<=0||this._baseComputedHeight<=0){this.resetSizeOverride();return}let c=this._baseComputedWidth,l=this._baseComputedHeight;switch(e){case 1:{let e=r*t/(this._baseComputedWidth*a),i=r*n/(this._baseComputedHeight*o),u=s?Math.sqrt(e*e+i*i):Math.max(e,i);c*=u,l*=u;break}case 3:{let e=Math.max(t-this._baseComputedWidth,n-this._baseComputedHeight);c+=e,l+=e;break}}this._applyComputedSizeTarget(c,l),e!==0&&(this.anchorX=0,this.anchorY=0)}getPointSymbolCalloutBounds(e){let t=this.computedWidth,n=this.computedHeight,r=(e.xmin+e.xmax)/2+this.offsetX-this.anchorX*t,i=(e.ymin+e.ymax)/2+this.offsetY-this.anchorY*n;return{xmin:r-t/2,ymin:i-n/2,xmax:r+t/2,ymax:i+n/2}}resetSizeOverride(){this._restoreBaseSize(),this._computeSize()}get boundsInfo(){return{size:Math.max(this.computedHeight,this.computedWidth),offsetX:this.offsetX,offsetY:this.offsetY}}_initializeSizeComputation(e,t){this._isCIM=e,this._hasSizeVV=t}_captureBaseSizeState(){this._baseRawWidth=this.rawWidth,this._baseRawHeight=this.rawHeight,this._baseAnchorX=this.anchorX,this._baseAnchorY=this.anchorY}_captureBaseComputedSize(){this._baseComputedWidth=this.computedWidth,this._baseComputedHeight=this.computedHeight}_restoreBaseSize(){this.rawWidth=this._baseRawWidth,this.rawHeight=this._baseRawHeight,this.anchorX=this._baseAnchorX,this.anchorY=this._baseAnchorY}_applyComputedSizeTarget(e,t){let n=this._baseComputedWidth,r=this._baseComputedHeight;if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0||n<=0||r<=0){this.resetSizeOverride();return}this._restoreBaseSize(),this.rawWidth*=e/n,this.rawHeight*=t/r,this._computeSize()}_computeSize(){let{sprite:e}=this,t=this._hasSizeVV,r=this._isCIM,i=!!e.sdf,s=e.sdfPaddingRatio??.5,{rawWidth:c,rawHeight:l,sizeRatio:u,outlineSize:d}=this,f=e.rect,p=c*u,m=l*u,h=0,g=0;if(i){let n=1/(1-s);if(p*=n,m*=n,t)this.computedWidth=p,this.computedHeight=m;else{let t=r&&c>l?p:c,n=l,i=d+2;this.computedWidth=Math.min(t+i,p),this.computedHeight=Math.min(n+i,m);let a=Math.max(e.width,e.height)/Math.max(p,m);h=(this.computedWidth-p)*a,g=(this.computedHeight-m)*a}}else this.computedWidth=p*(f.width/e.width),this.computedHeight=m*(f.height/e.height),h=2*n,g=2*n;let _=f.x+n-h/2,v=f.y+n-g/2,y=_+e.width+h,b=v+e.height+g;this.texXmin=a(_),this.texYmin=a(v),this.texXmax=o(y),this.texYmax=o(b),this.computedWidth*=(this.texXmax-this.texXmin)/(y-_),this.computedHeight*=(this.texYmax-this.texYmin)/(b-v),this.anchorX*=p/this.computedWidth,this.anchorY*=m/this.computedHeight}}function a(e,t=1e-7){let n=Math.ceil(e);return n-e<t?n:Math.floor(e)}function o(e,t=1e-7){let n=Math.floor(e);return e-n<t?n:Math.ceil(e)}export{i as ComputedMarkerParams};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{GeometryCursor as e}from"../../../../../../../geometry/GeometryCursor.js";import{getBalloonBodyBounds as t,getBalloonCornerRadius as n,inflateBounds as r,scaleMargins as i,autoSnap as a,contains as o,distance as s,
|
|
2
|
+
import{GeometryCursor as e}from"../../../../../../../geometry/GeometryCursor.js";import{getBalloonBodyBounds as t,getBalloonCornerRadius as n,inflateBounds as r,scaleMargins as i,autoSnap as a,contains as o,distance as s,createBalloonDartGeometry as c,createBalloonGeometry as l,createAccentBar as u,getLeaderConnectionPoint as d,createLeaderPath as f}from"../../../../../../../symbols/cim/callouts/effects/calloutUtils.js";const p=96/72;class m{constructor(e){this._properties=e}getEffectExecutionContextOverrides(e,t=!1){let n=this.getReferenceInfo(),r=g(e),i=n?.bodyBoundsUseReferenceScale?e.scaleFactor??1:1;return{scaleFactor:i,callout:{relativeAnchor:n?.anchor??void 0,relativeLayoutAnchor:n?.layoutAnchor??void 0,absoluteAnchor:r?{x:r.x,y:-r.y}:void 0,bodyBounds:n?h(n.bodyBounds,i):void 0,preserveInputGeometry:t}}}resolveEffectGeometry(t,n,r){let i=this._getReferencedEffectGeometry(t);return i?{geometry:i,preserveInputGeometry:!0}:{geometry:r?n:e.fromJSON({x:0,y:0}),preserveInputGeometry:!1}}getViewRotation(e){return this._properties.collisionVisibility?0:e}getCollisionBounds(e=1){let n=this.getReferenceInfo();if(!n)return;if(v(this._properties.writer))return this._properties.writer.getCalloutCollisionBounds(n,e);let r=n.bodyBoundsUseReferenceScale?e:1,i=h(n.collisionBodyBounds??n.bodyBounds,r);for(let e of this._properties.effects??[]){if(!N(e)||e.part!==`background`||e.type!==`CIMBackgroundCallout`&&e.type!==`CIMBalloonCallout`)continue;let n=e.margin,a=p*r,o={xmin:i.xmin-(n?.left??0)*a,ymin:i.ymin-(n?.bottom??0)*a,xmax:i.xmax+(n?.right??0)*a,ymax:i.ymax+(n?.top??0)*a};return e.type===`CIMBalloonCallout`?t(o,e.balloonStyle):o}}getCornerRadius(e=1){let t=this.getReferenceInfo();if(!t)return 0;let a=t.bodyBoundsUseReferenceScale?e:1,o=h(t.bodyBounds,a);for(let e of this._properties.effects??[])if(N(e)&&e.part===`background`&&e.type===`CIMBalloonCallout`)return n(r(o,i(e.margin,p*a)),e.balloonStyle);return 0}getPartCollisionBounds(e=1){let t=this.getReferenceInfo();if(!t)return[];if(y(this._properties.writer))return this._properties.writer.getCalloutPartCollisionBounds(e);let n=t.bodyBoundsUseReferenceScale?e:1,r=h(t.bodyBounds,n),i=h(t.collisionBodyBounds??t.bodyBounds,n),a=I(r),o=I(i),s=t.anchor??a,c=t.layoutAnchor??s,l={x:s.x-(a.x-o.x),y:s.y-(a.y-o.y)},u={x:c.x-(a.x-o.x),y:c.y-(a.y-o.y)},d=p*n,f=Math.max(1,_(this._properties.writer)),m=[];for(let e of this._properties.effects??[])N(e)&&m.push(...x(e,i,l,u,d,f));return m}getReferenceInfo(){return k(this._properties.reference)}getReferencedRotation(){let e=this._properties.reference;if(e&&M(e)){let t=e.getCalloutRotation();return t!=null&&Number.isFinite(t)?t:void 0}}_getReferencedEffectGeometry(e){let t=this._properties.reference;return t&&j(t)?t.getCalloutEffectGeometry(e)??void 0:void 0}}function h(e,t){return t===1?e:{xmin:e.xmin*t,ymin:e.ymin*t,xmax:e.xmax*t,ymax:e.ymax*t}}function g(e){let{matcher:t,target:n,tileKey:r}=e;return!t||!n||r==null||typeof n.getObjectId!=`function`||!(`getMatcherGeometryOverride`in t)||typeof t.getMatcherGeometryOverride!=`function`?null:t.getMatcherGeometryOverride(`${r}_${n.getObjectId()}`)?.absoluteCalloutAnchor??null}function _(e){return b(e)?e.getCalloutCollisionPadding():0}function v(e){return`getCalloutCollisionBounds`in e&&typeof e.getCalloutCollisionBounds==`function`}function y(e){return`getCalloutPartCollisionBounds`in e&&typeof e.getCalloutPartCollisionBounds==`function`}function b(e){return`getCalloutCollisionPadding`in e&&typeof e.getCalloutCollisionPadding==`function`}function x(e,t,n,r,i,a){switch(e.type){case`CIMBackgroundCallout`:return S(e,t,n,i,a);case`CIMBalloonCallout`:return C(e,t,n,r,i,a);case`CIMPointSymbolCallout`:return w(e,t,n,i,a);case`CIMSimpleLineCallout`:return E(e,t,n,r,i,a)}}function S(e,t,n,a,o){let s=r(t,i(e.margin,a));return e.part===`background`?[]:e.part===`accent-bar`?D(u(s,n,(e.gap??0)*a,1,e.lineStyle,t),o):T(s,n,e,a,o,e.hasAccentBar,t)}function C(e,t,n,a,o,s){let u=r(t,i(e.margin,o));if(e.part===`background`&&e.separateDart)return[];let d=e.dartWidth==null?null:e.dartWidth*o,f=e.part===`dart`?c(u,n,e.balloonStyle,(e.leaderTolerance??0)*o,1,d,a):l(u,n,e.balloonStyle,(e.leaderTolerance??0)*o,1,d,a);return f?D(f,s,(e,t)=>L(e,n)||L(t,n)):[]}function w(e,t,n,r,i){return e.part===`marker`?[]:T(t,n,e,r,i)}function T(e,t,n,r,i,a=!1,c=e){return o(e,t)||s(d(e,t,n.lineStyle,(n.gap??0)*r,a,c),t)<(n.leaderTolerance??0)*r?[]:D(f(e,t,n.lineStyle,(n.leaderOffset??0)*r,(n.gap??0)*r,1,r,a,c),i)}function E(e,t,n,r,i,c){let l=e.autoSnap===!1?{x:t.xmin,y:t.ymin}:a(t,r);return o(t,r)||s(l,r)<(e.leaderTolerance??0)*i?[]:O(l,n,c)}function D(e,t,n=()=>!0){let r=[];for(e.reset();e.nextPath();){let i=null;for(;e.nextPoint();){let a={x:e.x,y:e.y};i&&n(i,a)&&r.push(...O(i,a,t)),i=a}}return e.reset(),r}function O(e,t,n){let r=t.x-e.x,i=t.y-e.y,a=r!==0&&i!==0?Math.ceil(Math.max(Math.abs(r),Math.abs(i))/16):1,o=[];for(let t=0;t<a;t++){let s=t/a,c=(t+1)/a,l=e.x+r*s,u=e.y+i*s,d=e.x+r*c,f=e.y+i*c;o.push({xmin:Math.min(l,d)-n,ymin:Math.min(u,f)-n,xmax:Math.max(l,d)+n,ymax:Math.max(u,f)+n})}return o}function k(e){return A(e)?F(e.getLocalCalloutReferenceInfo()):P(e.getBoundsInfo())}function A(e){return`getLocalCalloutReferenceInfo`in e&&typeof e.getLocalCalloutReferenceInfo==`function`}function j(e){return`getCalloutEffectGeometry`in e&&typeof e.getCalloutEffectGeometry==`function`}function M(e){return`getCalloutRotation`in e&&typeof e.getCalloutRotation==`function`}function N(e){return e.type===`CIMBackgroundCallout`||e.type===`CIMBalloonCallout`||e.type===`CIMPointSymbolCallout`||e.type===`CIMSimpleLineCallout`}function P(e){if(!R(e))return;let t=e.size/2,n={xmin:e.offsetX-t,ymin:e.offsetY-t,xmax:e.offsetX+t,ymax:e.offsetY+t};return{anchor:I(n),bodyBounds:n}}function F(e){if(!e||!z(e.bodyBounds))return;let t=e.anchor??I(e.bodyBounds),n=e.layoutAnchor??t,r=e.collisionBodyBounds;if(B(t)&&B(n))return{anchor:t,...e.layoutAnchor?{layoutAnchor:n}:null,bodyBounds:e.bodyBounds,...r&&z(r)?{collisionBodyBounds:r}:null,...e.bodyBoundsUseReferenceScale?{bodyBoundsUseReferenceScale:!0}:null}}function I(e){return{x:(e.xmin+e.xmax)/2,y:(e.ymin+e.ymax)/2}}function L(e,t){return e.x===t.x&&e.y===t.y}function R(e){return e!=null&&e.offsetX!=null&&!isNaN(e.offsetX)&&e.offsetY!=null&&!isNaN(e.offsetY)&&e.size!=null&&!isNaN(e.size)}function z(e){return e.xmin!=null&&!isNaN(e.xmin)&&e.ymin!=null&&!isNaN(e.ymin)&&e.xmax!=null&&!isNaN(e.xmax)&&e.ymax!=null&&!isNaN(e.ymax)}function B(e){return e.x!=null&&!isNaN(e.x)&&e.y!=null&&!isNaN(e.y)}export{m as CalloutMeshWriterPolicy,k as getCalloutReferenceInfo,A as isLocalCalloutReferenceProvider};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{maxHighlightGroups as t}from"../../../definitions.js";import{location as n,define as r,option as i,uniform as a,texture as o,VertexInput as s,ComputeVertexInput as c,GraphShaderModule as l,FragmentOutput as u,FragmentInput as d}from"../../GraphShaderModule.js";import{Vec3 as f,Float as p,Vec2 as m,Sampler2D as h,float as g,step as _,Vec4 as v,equal as y,ifElse as b,or as x,texture2D as S,Mat3 as C,textureSize as w,Int as T,mod as E}from"../../graph/glsl.js";import{trueHit as D,candidateHit as O,noHit as k,bitsetGenericLabelInstance as A}from"./constants.js";import{EntityStorage as j,EntityStorageTextures as M}from"./EntityStorage.js";import{ShaderHighlight as N}from"./ShaderHighlight.js";import{ShaderHittest as P}from"./ShaderHittest.js";import{Tile as F}from"./Tile.js";import{TileInfo as I}from"./TileInfo.js";import{getFilterBit as L,getHighlightBit as R,getBit as z,uvToClip as B,unpackDisplayIdTexel as V}from"./utils.js";import{ViewInfo as H}from"./ViewInfo.js";class U extends s{}e([n(0,f)],U.prototype,`id`,void 0),e([n(1,p)],U.prototype,`bitset`,void 0),e([n(2,m)],U.prototype,`pos`,void 0);class W extends c{}e([n(14,m)],W.prototype,`nextPos1`,void 0),e([n(15,m)],W.prototype,`nextPos2`,void 0);class G extends d{}class K extends l{clip(e,t=new p(0),n){let r=new p(0),i=this.getFeatureId(e,t),a=this.getFilterFlags(i);if(r=r.add(g(2).multiply(g(1).subtract(L(a,0)))),this.inside?r=r.add(g(2).multiply(g(1).subtract(L(a,1)))):this.outside?r=r.add(g(2).multiply(L(a,1))):this.highlight&&(r=r.add(g(2).multiply(g(1).subtract(this._checkHighlight(a))))),n!=null){let e=new p(1).subtract(_(n.x,this.tileInfo.currentZoom)),t=_(n.y,this.tileInfo.currentZoom);r=r.add(new p(2).multiply(e.add(t)))}return r=r.add(new p(2).multiply(this.getLabelHidden(e,t))),r}getFragmentOutput(e,t,n=new p(1/255)){let r=new u;return r.fragColor=this._maybeWriteHittest(t)??this._maybeHighlight(e,n)??e,r}_maybeHighlight(e,t){return this.highlight?new v(e.rgb,_(t,e.a)):null}_checkHighlight(e){let n=this._checkHighlightBit(e,0);for(let r=1;r<t;r++)n=n.add(this._checkHighlightBit(e,r));return _(new p(.1),n.add(this.highlight.highlightAll))}_checkHighlightBit(e,t){return R(e,t).multiply(z(this.highlight.activeGroups,t))}computeHittestTriangle(e,t,n){let r=this.tile.getViewScreenMat3(this.view),{nextPos1:i,nextPos2:a}=t,o=this.getLabelPosition(e.pos,e.id,e.bitset),s=this.getLabelPosition(i,e.id,e.bitset),c=this.getLabelPosition(a,e.id,e.bitset);return{pos0:r.multiply(new f(o,1)).xy,pos1:r.multiply(new f(s,1)).xy,pos2:r.multiply(new f(c,1)).xy}}maybeRunHittest(e,t,n){if(this.hittestRequest==null)return null;let r=this.hittest(e,t,n),i=y(r,new p(D)),a=y(r,new p(O)),o=b(a,()=>new v(new p(1/255),0,0,0),b(i,()=>new v(new p(2/255),0,0,0),new v(k))),s=b(x(i,a),new p(0),new p(2)),c=this.getAttributeDataCoords(this.getFeatureId(e.id,e.bitset)),l=B(c);return s=s.add(this.clip(e.id,e.bitset,e.zoomRange)),{glPointSize:new p(1),glPosition:new v(l,s,1),color:o}}_maybeWriteHittest(e){return this.hittestRequest==null?null:e.color}getAttributeDataCoords(e){return this.storage.getAttributeDataCoords(e)}getFeatureId(e,t){let n=z(t,A);return b(y(n,new p(1)),()=>S(this.labelStoreTexture,this._getLabelStoreCoords(e)).rgb.multiply(255),e)}getLabelPosition(e,t,n){let r=z(n,A);return b(y(r,new p(1)),()=>{let n=S(this.labelAnchorStoreTexture,this._getLabelStoreCoords(t)),r=n.xy,i=y(e.x,r.x).and(y(e.y,r.y)),a=b(i,new m(0),n.zw),o=this.view.getRotation().divide(-180).multiply(Math.PI),s=C.fromRotation(o).multiply(new f(e.subtract(r).add(a),0)).xy.multiply(this.tile.getDisplayZoomFactor(this.tileInfo));return r.add(s)},e)}getLabelOffset(e,t){return b(y(z(t,A),new p(1)),()=>{let t=this.view.getRotation().divide(-180).multiply(Math.PI);return C.fromRotation(t).multiply(new f(e,0)).xy},e)}getLabelHidden(e,t){return b(y(z(t,A),new p(1)),()=>S(this.labelStoreTexture,this._getLabelStoreCoords(e)).a,new p(0))}getVVData(e){return this.storageTextures.getVVData(this.getAttributeDataCoords(e))}getFilterFlags(e){return this.storageTextures.getFilterFlags(this.getAttributeDataCoords(e))}getLocalTimeOrigin(e){return this.storageTextures.getLocalTimeOrigin(this.getAttributeDataCoords(e))}getSizeValue(e){return this.storageTextures.getSizeValue(this.getAttributeDataCoords(e))}getColorValue(e){return this.storageTextures.getColorValue(this.getAttributeDataCoords(e))}getOpacityValue(e){return this.storageTextures.getOpacityValue(this.getAttributeDataCoords(e))}getRotationValue(e){return this.storageTextures.getRotationValue(this.getAttributeDataCoords(e))}_getLabelStoreCoords(e){let t=V(e),n=t.x,r=t.y.multiply(256),i=t.z.multiply(65536),a=n.add(r).add(i),o=g(w(this.labelStoreTexture,new T(0)).x),s=E(a,o),c=a.subtract(s).divide(o);return new m(s,c).add(.5).divide(o)}}e([r],K.prototype,`inside`,void 0),e([r],K.prototype,`outside`,void 0),e([i(N)],K.prototype,`highlight`,void 0),e([a(j)],K.prototype,`storage`,void 0),e([o(M)],K.prototype,`storageTextures`,void 0),e([o(h)],K.prototype,`labelStoreTexture`,void 0),e([o(h)],K.prototype,`labelAnchorStoreTexture`,void 0),e([o(h)],K.prototype,`hittestMaskTexture`,void 0),e([a(H)],K.prototype,`view`,void 0),e([a(I)],K.prototype,`tileInfo`,void 0),e([a(F)],K.prototype,`tile`,void 0),e([i(P)],K.prototype,`hittestRequest`,void 0);export{K as AFeatureShader,W as BaseHittestVertexInput,G as FeatureFragmentInput,U as FeatureVertexInput};
|
|
2
|
+
import{__decorate as e}from"tslib";import{maxHighlightGroups as t}from"../../../definitions.js";import{location as n,define as r,option as i,uniform as a,texture as o,VertexInput as s,ComputeVertexInput as c,GraphShaderModule as l,FragmentOutput as u,FragmentInput as d}from"../../GraphShaderModule.js";import{Vec3 as f,Float as p,Vec2 as m,Sampler2D as h,float as g,step as _,Vec4 as v,equal as y,ifElse as b,or as x,texture2D as S,Mat3 as C,textureSize as w,Int as T,mod as E}from"../../graph/glsl.js";import{trueHit as D,candidateHit as O,noHit as k,bitsetGenericLabelInstance as A}from"./constants.js";import{EntityStorage as j,EntityStorageTextures as M}from"./EntityStorage.js";import{ShaderHighlight as N}from"./ShaderHighlight.js";import{ShaderHittest as P}from"./ShaderHittest.js";import{Tile as F}from"./Tile.js";import{TileInfo as I}from"./TileInfo.js";import{getFilterBit as L,getHighlightBit as R,getBit as z,uvToClip as B,unpackDisplayIdTexel as V}from"./utils.js";import{ViewInfo as H}from"./ViewInfo.js";class U extends s{}e([n(0,f)],U.prototype,`id`,void 0),e([n(1,p)],U.prototype,`bitset`,void 0),e([n(2,m)],U.prototype,`pos`,void 0);class W extends c{}e([n(14,m)],W.prototype,`nextPos1`,void 0),e([n(15,m)],W.prototype,`nextPos2`,void 0);class G extends d{}class K extends l{clip(e,t=new p(0),n){let r=new p(0),i=this.getFeatureId(e,t),a=this.getFilterFlags(i);if(r=r.add(g(2).multiply(g(1).subtract(L(a,0)))),this.inside?r=r.add(g(2).multiply(g(1).subtract(L(a,1)))):this.outside?r=r.add(g(2).multiply(L(a,1))):this.highlight&&(r=r.add(g(2).multiply(g(1).subtract(this._checkHighlight(a))))),n!=null){let e=new p(1).subtract(_(n.x,this.tileInfo.currentZoom)),t=_(n.y,this.tileInfo.currentZoom);r=r.add(new p(2).multiply(e.add(t)))}return r=r.add(new p(2).multiply(this.getLabelHidden(e,t))),r}getFragmentOutput(e,t,n=new p(1/255)){let r=new u;return r.fragColor=this._maybeWriteHittest(t)??this._maybeHighlight(e,n)??e,r}_maybeHighlight(e,t){return this.highlight?new v(e.rgb,_(t,e.a)):null}_checkHighlight(e){let n=this._checkHighlightBit(e,0);for(let r=1;r<t;r++)n=n.add(this._checkHighlightBit(e,r));return _(new p(.1),n.add(this.highlight.highlightAll))}_checkHighlightBit(e,t){return R(e,t).multiply(z(this.highlight.activeGroups,t))}computeHittestTriangle(e,t,n){let r=this.tile.getViewScreenMat3(this.view),{nextPos1:i,nextPos2:a}=t,o=this.getLabelPosition(e.pos,e.id,e.bitset),s=this.getLabelPosition(i,e.id,e.bitset),c=this.getLabelPosition(a,e.id,e.bitset);return{pos0:r.multiply(new f(o,1)).xy,pos1:r.multiply(new f(s,1)).xy,pos2:r.multiply(new f(c,1)).xy}}maybeRunHittest(e,t,n){if(this.hittestRequest==null)return null;let r=this.hittest(e,t,n),i=y(r,new p(D)),a=y(r,new p(O)),o=b(a,()=>new v(new p(1/255),0,0,0),b(i,()=>new v(new p(2/255),0,0,0),new v(k))),s=b(x(i,a),new p(0),new p(2)),c=this.getAttributeDataCoords(this.getFeatureId(e.id,e.bitset)),l=B(c);return s=s.add(this.clip(e.id,e.bitset,e.zoomRange)),{glPointSize:new p(1),glPosition:new v(l,s,1),color:o}}_maybeWriteHittest(e){return this.hittestRequest==null?null:e.color}getAttributeDataCoords(e){return this.storage.getAttributeDataCoords(e)}getLabelReferenceSymbolVVOffset(e){return S(this.labelAnchorStoreTexture,this._getLabelStoreCoords(e)).zw}getFeatureId(e,t){let n=z(t,A);return b(y(n,new p(1)),()=>S(this.labelStoreTexture,this._getLabelStoreCoords(e)).rgb.multiply(255),e)}getLabelPosition(e,t,n){let r=z(n,A);return b(y(r,new p(1)),()=>{let n=S(this.labelAnchorStoreTexture,this._getLabelStoreCoords(t)),r=n.xy,i=y(e.x,r.x).and(y(e.y,r.y)),a=b(i,new m(0),n.zw),o=this.view.getRotation().divide(-180).multiply(Math.PI),s=C.fromRotation(o).multiply(new f(e.subtract(r).add(a),0)).xy.multiply(this.tile.getDisplayZoomFactor(this.tileInfo));return r.add(s)},e)}getLabelOffset(e,t){return b(y(z(t,A),new p(1)),()=>{let t=this.view.getRotation().divide(-180).multiply(Math.PI);return C.fromRotation(t).multiply(new f(e,0)).xy},e)}getLabelHidden(e,t){return b(y(z(t,A),new p(1)),()=>S(this.labelStoreTexture,this._getLabelStoreCoords(e)).a,new p(0))}getVVData(e){return this.storageTextures.getVVData(this.getAttributeDataCoords(e))}getFilterFlags(e){return this.storageTextures.getFilterFlags(this.getAttributeDataCoords(e))}getLocalTimeOrigin(e){return this.storageTextures.getLocalTimeOrigin(this.getAttributeDataCoords(e))}getSizeValue(e){return this.storageTextures.getSizeValue(this.getAttributeDataCoords(e))}getColorValue(e){return this.storageTextures.getColorValue(this.getAttributeDataCoords(e))}getOpacityValue(e){return this.storageTextures.getOpacityValue(this.getAttributeDataCoords(e))}getRotationValue(e){return this.storageTextures.getRotationValue(this.getAttributeDataCoords(e))}_getLabelStoreCoords(e){let t=V(e),n=t.x,r=t.y.multiply(256),i=t.z.multiply(65536),a=n.add(r).add(i),o=g(w(this.labelStoreTexture,new T(0)).x),s=E(a,o),c=a.subtract(s).divide(o);return new m(s,c).add(.5).divide(o)}}e([r],K.prototype,`inside`,void 0),e([r],K.prototype,`outside`,void 0),e([i(N)],K.prototype,`highlight`,void 0),e([a(j)],K.prototype,`storage`,void 0),e([o(M)],K.prototype,`storageTextures`,void 0),e([o(h)],K.prototype,`labelStoreTexture`,void 0),e([o(h)],K.prototype,`labelAnchorStoreTexture`,void 0),e([o(h)],K.prototype,`hittestMaskTexture`,void 0),e([a(H)],K.prototype,`view`,void 0),e([a(I)],K.prototype,`tileInfo`,void 0),e([a(F)],K.prototype,`tile`,void 0),e([i(P)],K.prototype,`hittestRequest`,void 0);export{K as AFeatureShader,W as BaseHittestVertexInput,G as FeatureFragmentInput,U as FeatureVertexInput};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e,__param as t}from"tslib";import{labelU16ZoomPrecisionFactor as n,labelPlacementOffsetPadding as r,packDegreesU8 as i}from"../../../definitions.js";import{location as a,option as o,uniform as s,texture as c,define as l,input as u,ComputeVertexInput as d}from"../../GraphShaderModule.js";import{Vec4 as f,Vec2 as p,Float as m,Sampler2D as h,mod as g,floor as _,step as v,and as y,lessThan as b,greaterThanEqual as x,Vec3 as S,Mat3 as ee,
|
|
2
|
+
import{__decorate as e,__param as t}from"tslib";import{labelU16ZoomPrecisionFactor as n,labelPlacementOffsetPadding as r,packDegreesU8 as i}from"../../../definitions.js";import{location as a,option as o,uniform as s,texture as c,define as l,input as u,ComputeVertexInput as d}from"../../GraphShaderModule.js";import{Vec4 as f,Vec2 as p,Float as m,Sampler2D as h,mod as g,floor as _,step as v,and as y,lessThan as b,greaterThanEqual as x,Vec3 as S,Mat3 as ee,equal as C,ifElse as w,greaterThan as T,Bool as E,texture2D as D,smoothstep as O,Int as k,bitRShift as A,bitAnd as j}from"../../graph/glsl.js";import{FeatureVertexInput as M,AFeatureShader as te,FeatureFragmentInput as N}from"../shaders/AFeatureShader.js";import{bitsetTextIsBackground as P,bitsetTextIsMapAligned as F,noHit as I,trueHit as ne}from"../shaders/constants.js";import{isPointHittest as re,distPointTriangle as ie,isRectHittest as L,hittestRect as R,isPolygonHittest as z,hittestPolygon as B}from"../shaders/hittestUtils.js";import{MosaicInfo as V}from"../shaders/MosaicInfo.js";import{getBit as H}from"../shaders/utils.js";import{VisualVariableColor as U}from"../shaders/VisualVariableColor.js";import{VisualVariableOpacity as W}from"../shaders/VisualVariableOpacity.js";import{VisualVariableRotation as G}from"../shaders/VisualVariableRotation.js";import{VisualVariableSizeMinMaxValue as K}from"../shaders/VisualVariableSizeMinMaxValue.js";import{VisualVariableSizeScaleStops as q}from"../shaders/VisualVariableSizeScaleStops.js";import{VisualVariableSizeStops as J}from"../shaders/VisualVariableSizeStops.js";import{VisualVariableSizeUnitValue as ae}from"../shaders/VisualVariableSizeUnitValue.js";import{getVisualVariableSize as Y,getVisualVariableRotation as oe}from"../shaders/vvUtils.js";const se=1/i;class X extends M{}e([a(3,f)],X.prototype,`color`,void 0),e([a(4,p)],X.prototype,`offset`,void 0),e([a(5,p)],X.prototype,`textureUV`,void 0),e([a(6,f)],X.prototype,`fontAndReferenceSize`,void 0),e([a(7,f)],X.prototype,`outlineColor`,void 0),e([a(8,f)],X.prototype,`haloColor`,void 0),e([a(9,p)],X.prototype,`outlineAndHaloSize`,void 0),e([a(10,p)],X.prototype,`zoomRange`,void 0),e([a(11,m)],X.prototype,`clipAngle`,void 0),e([a(12,f)],X.prototype,`referenceSymbol`,void 0);class Z extends d{}e([a(13,p)],Z.prototype,`offsetNextVertex1`,void 0),e([a(14,p)],Z.prototype,`offsetNextVertex2`,void 0);class Q extends N{}class $ extends te{constructor(){super(...arguments),this.type=`TextShader`,this.computeAttributes={offset:[`offsetNextVertex1`,`offsetNextVertex2`]},this.textRenderPassType=0,this.isBackgroundPass=!1,this.isLabel=!1}clipLabel(e,t){let{clipAngle:r,zoomRange:i}=e,a=r.multiply(se),o=g(a.subtract(this.view.getRotation()),new m(360)),s=new m(0),c=n,l=_(this.tileInfo.currentZoom.multiply(c)).divide(c),u=i.x,d=i.y,f=new m(1).subtract(v(u,l)).multiply(2),p=new m(y(x(o,new m(90)),b(o,new m(270)))).multiply(2),h=new m(2).multiply(new m(1).subtract(v(l,d)));return s=s.add(t.multiply(f)),s=s.add(t.multiply(p)),s=s.add(h),s=s.add(new m(2).multiply(this.getLabelHidden(e.id,e.bitset))),s}vertex(e,t){let n=H(e.bitset,P),i=new m(1).subtract(n),a=this.getFeatureId(e.id,e.bitset),o=e.fontAndReferenceSize[0],s=e.fontAndReferenceSize[1],c=e.fontAndReferenceSize[2],l=e.fontAndReferenceSize[3],u=o.divide(c),d=this.textRenderPassType===1?e.outlineColor:this.textRenderPassType===2?e.haloColor:this._getVertexColor(e,a),h=this.tile.getDisplayViewScreenMat3(this.view).multiply(new S(e.pos,1)),g=e.offset,_=new m(1),v=ee.identity(),y=new p(0);if(this.isLabel){if(!e.referenceSymbol)throw Error(`InternalError: Optional attribute 'referenceSymbol' expected for labels`);let t=e.referenceSymbol,n=t.xy,i=t.z,o=this._unpackDirection(t.w),s=this.getLabelReferenceSymbolVVOffset(e.id),c=C(s.x,new m(0)).and(C(s.y,new m(0))),l=w(c,Y(this,a,i).divide(2),i.divide(2)),u=o.multiply(l.add(r)).add(s);y=n.add(u),g=g.add(y)}else _=Y(this,a,s).divide(s),o=o.multiply(_),u=u.multiply(_),g=g.multiply(_),v=oe(this,a),g=v.multiply(new S(g,0)).xy;let b=H(e.bitset,F),x=this._getViewRotationMatrix(b).multiply(new S(g,0)).multiply(this.tileInfo.scaleFactor),D=this.isLabel?this.clipLabel(e,b):this.clip(e.id,e.bitset,e.zoomRange);D=this.isBackgroundPass?D.add(i.multiply(2)):D.add(n.multiply(2));let O=new m(0);if(this.textRenderPassType===1&&(D=D.add(w(C(e.outlineAndHaloSize.x,new m(0)),new m(2),new m(0))),O=new m(e.outlineAndHaloSize.x).divide(u).divide(l)),this.textRenderPassType===2){let t=e.outlineAndHaloSize.x,n=new m(e.outlineAndHaloSize.y);D=D.add(w(C(n,new m(0)),new m(2),new m(0))),O=n.add(t).divide(u).divide(l)}let k=this.isLabel?T(D,new m(1)):new E(!1),A=new f(h.xy.add(x.xy),D,1),j=e.textureUV.divide(this.mosaicInfo.size),M=new m(.105).multiply(c).divide(o).divide(this.view.pixelRatio);return{glPosition:A,color:d,size:u,textureUV:j,antialiasingWidth:M,outlineDistanceOffset:O,...this.maybeRunHittest(e,t,{vvSizeAdjustment:_,vvRotation:v,labelOffset:y,labelClipped:k,scaleFactor:this.tileInfo.scaleFactor})}}_getViewRotationMatrix(e){let t=this.view.getDisplayViewMat3(),n=this.view.displayMat3,r=new m(1).subtract(e);return t.multiply(e).add(n.multiply(r))}_getHittestAlignmentMatrix(e){let t=this.tile.getTileMat3(this.view),n=this.view.viewMat3.multiply(t),r=t,i=new m(1).subtract(e);return n.multiply(e).add(r.multiply(i))}fragment(e){let t=new m(2/8),n=new m(1).subtract(t),r=D(this.mosaicTexture,e.textureUV).a,i=n.subtract(e.outlineDistanceOffset);this.highlight&&(i=i.divide(2));let a=e.antialiasingWidth,o=O(i.subtract(a),i.add(a),r);return this.getFragmentOutput(e.color.multiply(o),e)}computeHittestTriangle(e,t,{vvSizeAdjustment:n,vvRotation:r,labelOffset:i,scaleFactor:a}){let o,s,c;this.isLabel?(o=new S(e.offset.multiply(a).add(i),0),s=new S(t.offsetNextVertex1.multiply(a).add(i),0),c=new S(t.offsetNextVertex2.multiply(a).add(i),0)):(o=r.multiply(new S(e.offset.multiply(a).multiply(n),0)),s=r.multiply(new S(t.offsetNextVertex1.multiply(a).multiply(n),0)),c=r.multiply(new S(t.offsetNextVertex2.multiply(a).multiply(n),0)));let l=this.tile.getViewScreenMat3(this.view).multiply(new S(e.pos,1)),u=H(e.bitset,F),d=this._getHittestAlignmentMatrix(u);return{pos0:l.add(d.multiply(o)).xy,pos1:l.add(d.multiply(s)).xy,pos2:l.add(d.multiply(c)).xy}}hittest(e,t,n){let{vvSizeAdjustment:r,vvRotation:i,labelOffset:a,labelClipped:o,scaleFactor:s}=n,{pos0:c,pos1:l,pos2:u}=this.computeHittestTriangle(e,t,{vvSizeAdjustment:r,vvRotation:i,labelOffset:a,scaleFactor:s}),d={pos0:c,pos1:l,pos2:u},f=this.isLabel?o:new E(!1);return w(f,new m(I),()=>w(re(this.hittestRequest),()=>{let e=ie(this.hittestRequest.position,c,l,u);return w(T(e,this.hittestRequest.distance),new m(I),new m(ne))},()=>w(L(this.hittestRequest),R(d,this.hittestRequest.rect.xy,this.hittestRequest.rect.zw),w(z(this.hittestRequest),B(d,this.hittestRequest.viewSize,this.hittestMaskTexture),new m(I)))))}_unpackDirection(e){let t=new k(e),n=A(t,new k(2)),r=j(t,new k(3));return new p(new m(n).subtract(1),new m(r).subtract(1))}_getVertexColor(e,t){let n=e.color;if(this.visualVariableColor){let r=this.getColorValue(t);n=this.visualVariableColor.getColor(r,e.color,new E(!1))}if(this.visualVariableOpacity){let e=this.getOpacityValue(t),r=this.visualVariableOpacity.getOpacity(e);n=n.multiply(r)}return n}}e([o(U)],$.prototype,`visualVariableColor`,void 0),e([o(W)],$.prototype,`visualVariableOpacity`,void 0),e([o(G)],$.prototype,`visualVariableRotation`,void 0),e([o(K)],$.prototype,`visualVariableSizeMinMaxValue`,void 0),e([o(q)],$.prototype,`visualVariableSizeScaleStops`,void 0),e([o(J)],$.prototype,`visualVariableSizeStops`,void 0),e([o(ae)],$.prototype,`visualVariableSizeUnitValue`,void 0),e([s(V)],$.prototype,`mosaicInfo`,void 0),e([c(h)],$.prototype,`mosaicTexture`,void 0),e([l],$.prototype,`textRenderPassType`,void 0),e([l],$.prototype,`isBackgroundPass`,void 0),e([l],$.prototype,`isLabel`,void 0),e([t(0,u(X)),t(1,u(Z))],$.prototype,`vertex`,null),e([t(0,u(Q))],$.prototype,`fragment`,null);export{Q as TextFragmentInput,$ as TextShader,X as TextVertexInput};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{pt2px as e}from"../../../../../core/screenUtils.js";import{getSizeForValueSimple as t}from"../../support/visualVariableSimpleUtils.js";function n(n){return
|
|
2
|
+
import{pt2px as e}from"../../../../../core/screenUtils.js";import{getSizeForValueSimple as t}from"../../support/visualVariableSimpleUtils.js";function n(n){return(r,i)=>e(t(r,n,i))}function r(e){let t=e!=null&&`visualVariables`in e&&e.visualVariables;if(!t)return null;for(let e of t)if(e.type===`size`)return n(e);return null}export{r as createLabelVVEvaluator};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{numericHash as e}from"../../../../../../core/string.js";import{validateLabelingInfo as t}from"../../../../../../layers/support/labelingInfo.js";import{getServiceGeometryType as n}from"../../layerAdapters/geometryUtils.js";import{createSymbolMeshSchemas as r}from"./symbols/SymbolSchema.js";async function i(e,r,i){let o=r.labelsVisible&&r.labelingInfo||[],s=n(r),c=t(o,s);return{type:`label`,classes:await Promise.all(c.map((t,n)=>a(e,t,r.labelsVisible,r.labelingInfoSource,n,s,i)))}}async function a(t,n,i,a,o,s,c){let l=e(`${a} ${o}`),u=a,d=await r(n,{schemaOptions:t,uniforms:c,layerId:u,labelClassId:l});return{maxScale:n.maxScale,minScale:n.minScale,deconflictionEnabled:n.deconflictionStrategy!==`none`&&i,expression:n.labelExpressionInfo?.expression??n.labelExpression,where:n.where,meshes:d,layerId:u,labelClassId:l,geometryType:s}}export{i as createLabelMatcherSchema};
|
|
2
|
+
import{numericHash as e}from"../../../../../../core/string.js";import{validateLabelingInfo as t}from"../../../../../../layers/support/labelingInfo.js";import{getServiceGeometryType as n}from"../../layerAdapters/geometryUtils.js";import{createSymbolMeshSchemas as r}from"./symbols/SymbolSchema.js";async function i(e,r,i){let o=r.labelsVisible&&r.labelingInfo||[],s=n(r),c=t(o,s);return{type:`label`,classes:await Promise.all(c.map((t,n)=>a(e,t,r.labelsVisible,r.labelingInfoSource,n,s,i)))}}async function a(t,n,i,a,o,s,c){let l=e(`${a} ${o}`),u=a,d=await r(n,{path:`${o}`,schemaOptions:t,uniforms:c,layerId:u,labelClassId:l});return{maxScale:n.maxScale,minScale:n.minScale,deconflictionEnabled:n.deconflictionStrategy!==`none`&&i,expression:n.labelExpressionInfo?.expression??n.labelExpression,where:n.where,meshes:d,layerId:u,labelClassId:l,geometryType:s}}export{i as createLabelMatcherSchema};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{diff as e}from"../../../../../../core/accessorSupport/diffUtils.js";import{createVisualVariableUniforms as t,noVisualVariables as n}from"./VisualVariablesSchema.js";import{createPieChartMeshSchemas as r,createHeatmapMeshSchemas as i,createSymbolMeshSchemas as a,createDotDensityMeshSchemas as o}from"./symbols/SymbolSchema.js";async function s(e,t){return(await Promise.all((e??[]).map((e,n)=>a(e,{path:`${t.path}.alternateSymbols.${n}`,schemaOptions:t.schemaOptions,uniforms:t.uniforms,rotationVariable:t.rotationVariable})))).flat()}async function c(e,t){if(!t)return{type:`simple`,meshes:[]};switch(t.type){case`simple`:return d(e,t);case`dot-density`:return g(e,t);case`class-breaks`:if(t.defaultSymbol!=null){let n=await u(e,t);if(n)return n.symbology}return _(e,t);case`unique-value`:return v(e,t);case`dictionary`:return b(t);case`heatmap`:return x(e,t);case`pie-chart`:return S(e,t)}}async function l(e,t){return await u(e,t)??{symbology:await _(e,t),matcherFilter:null}}async function u(e,n){if(!f(n))return null;let r=t(n),i=y(n);return{symbology:{type:`simple`,meshes:await a(n.classBreakInfos[0].symbol,{schemaOptions:e,uniforms:r,rotationVariable:i})},matcherFilter:n.defaultSymbol==null?p(n):null}}async function d(e,n){let r=n.symbols,i=r.length?r[0]:null,o=t(n),s=y(n);return{type:`simple`,meshes:await a(i,{schemaOptions:e,uniforms:o,rotationVariable:s})}}function f(e){let t=e.classBreakInfos.length===1?e.classBreakInfos[0]:null;return!t?.symbol||t.alternateSymbols?.length||t.minValue!==-(2**53-1)||t.maxValue!==2**53-1||!e.isMaxInclusive||e.backgroundFillSymbol!=null?!1:e.defaultSymbol==null?!!(e.valueExpression||e.field):m(t.symbol,e.defaultSymbol,e)}function p(e){let t=e.normalizationType===`log`?`esriNormalizeByLog`:e.normalizationType===`percent-of-total`?`esriNormalizeByPercentOfTotal`:e.normalizationType===`field`?`esriNormalizeByField`:null;return{expression:e.valueExpression,field:e.field,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,normalizationType:t}}function m(t,n,r){if(t.type!==n.type)return!1;if(t.type===`picture-fill`&&n.type===`picture-fill`||t.type===`simple-fill`&&n.type===`simple-fill`){let i=e(t,n);if(i==null)return!0;if(h(r)&&i.type===`partial`){let e=i.diff.outline;return Object.keys(i.diff).length===1&&e?.type===`partial`&&e.diff!=null&&Object.keys(e.diff).length===1&&e.diff.width!=null}return!1}return e(t,n)==null}function h(e){return e.visualVariables?.some(e=>e.type===`size`&&e.target===`outline`)??!1}async function g(e,n){let r=t(n);return{type:`dot-density`,meshes:await o(n,{schemaOptions:e,uniforms:r})}}async function _(e,r){let i=t(r),o=y(r),c=r.backgroundFillSymbol,l=r.classBreakInfos.map(async t=>{let n=`renderer-stop-${t.minValue}-${t.maxValue}`;return{meshes:await a(t.symbol,{schemaOptions:e,uniforms:i,rotationVariable:o}),alternateMeshes:await s(t.alternateSymbols,{path:n,schemaOptions:e,uniforms:i,rotationVariable:o}),min:t.minValue,max:t.maxValue}}),u=(await Promise.all(l)).sort((e,t)=>e.min-t.min),d=await a(c,{schemaOptions:e,uniforms:{...n,visualVariableSizeOutlineScaleStops:i.visualVariableSizeOutlineScaleStops}}),f=await a(r.defaultSymbol,{schemaOptions:e,uniforms:i,rotationVariable:o});return{type:`interval`,...p(r),backgroundFill:d,defaultSymbol:f,intervals:u,isMaxInclusive:r.isMaxInclusive}}async function v(e,r){let i=t(r),o=y(r),c=await a(r.backgroundFillSymbol,{schemaOptions:e,uniforms:{...n,visualVariableSizeOutlineScaleStops:i.visualVariableSizeOutlineScaleStops}}),l=await a(r.defaultSymbol,{schemaOptions:e,uniforms:i,rotationVariable:o}),u=(r.uniqueValueInfos??[]).map(async t=>{let n=`renderer-unique-value-${t.value}`,r=await a(t.symbol,{schemaOptions:e,uniforms:i,rotationVariable:o}),c=await s(t.alternateSymbols,{path:n,schemaOptions:e,uniforms:i,rotationVariable:o});return{value:``+t.value,meshes:r,alternateMeshes:c}}),d=await Promise.all(u);return{type:`map`,field:r.field,expression:r.valueExpression,field2:r.field2,field3:r.field3,fieldDelimiter:r.fieldDelimiter,backgroundFill:c,defaultSymbol:l,map:d}}function y(e){if(!(`visualVariables`in e))return null;let t=e.visualVariables?.find(e=>e.type===`rotation`);return t?.type===`rotation`?t:null}async function b(e){let n=t(e),r=await e.getDictionaryInfo(),i=e.scaleExpression,a=i!=null&&i!==`1`?{valueExpressionInfo:{type:`CIMExpressionInfo`,expression:e.scaleExpression,returnType:`Numeric`},defaultValue:1}:void 0;return{type:`dictionary`,dictionaryInfo:r,userConfig:e.config??{},fieldMap:e.fieldMap??{},scaleExpression:a,visualVariableUniforms:n}}async function x(e,t){return{type:`heatmap`,meshes:await i(t,e)}}async function S(e,t){return{type:`pie-chart`,meshes:await r(t,e)}}export{l as createClassBreaksMatcherSchema,c as createMatcherSchema};
|
|
2
|
+
import{diff as e}from"../../../../../../core/accessorSupport/diffUtils.js";import{createVisualVariableUniforms as t,noVisualVariables as n}from"./VisualVariablesSchema.js";import{createPieChartMeshSchemas as r,createHeatmapMeshSchemas as i,createSymbolMeshSchemas as a,createDotDensityMeshSchemas as o}from"./symbols/SymbolSchema.js";async function s(e,t){return(await Promise.all((e??[]).map((e,n)=>a(e,{path:`${t.path}.alternateSymbols.${n}`,schemaOptions:t.schemaOptions,uniforms:t.uniforms,rotationVariable:t.rotationVariable})))).flat()}async function c(e,t){if(!t)return{type:`simple`,meshes:[]};switch(t.type){case`simple`:return d(e,t);case`dot-density`:return g(e,t);case`class-breaks`:if(t.defaultSymbol!=null){let n=await u(e,t);if(n)return n.symbology}return _(e,t);case`unique-value`:return v(e,t);case`dictionary`:return b(t);case`heatmap`:return x(e,t);case`pie-chart`:return S(e,t)}}async function l(e,t){return await u(e,t)??{symbology:await _(e,t),matcherFilter:null}}async function u(e,n){if(!f(n))return null;let r=t(n),i=y(n);return{symbology:{type:`simple`,meshes:await a(n.classBreakInfos[0].symbol,{schemaOptions:e,uniforms:r,rotationVariable:i,path:`renderer.classBreakInfos.0.symbol`})},matcherFilter:n.defaultSymbol==null?p(n):null}}async function d(e,n){let r=n.symbols,i=r.length?r[0]:null,o=t(n),s=y(n);return{type:`simple`,meshes:await a(i,{schemaOptions:e,uniforms:o,rotationVariable:s,path:`renderer.symbol`})}}function f(e){let t=e.classBreakInfos.length===1?e.classBreakInfos[0]:null;return!t?.symbol||t.alternateSymbols?.length||t.minValue!==-(2**53-1)||t.maxValue!==2**53-1||!e.isMaxInclusive||e.backgroundFillSymbol!=null?!1:e.defaultSymbol==null?!!(e.valueExpression||e.field):m(t.symbol,e.defaultSymbol,e)}function p(e){let t=e.normalizationType===`log`?`esriNormalizeByLog`:e.normalizationType===`percent-of-total`?`esriNormalizeByPercentOfTotal`:e.normalizationType===`field`?`esriNormalizeByField`:null;return{expression:e.valueExpression,field:e.field,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,normalizationType:t}}function m(t,n,r){if(t.type!==n.type)return!1;if(t.type===`picture-fill`&&n.type===`picture-fill`||t.type===`simple-fill`&&n.type===`simple-fill`){let i=e(t,n);if(i==null)return!0;if(h(r)&&i.type===`partial`){let e=i.diff.outline;return Object.keys(i.diff).length===1&&e?.type===`partial`&&e.diff!=null&&Object.keys(e.diff).length===1&&e.diff.width!=null}return!1}return e(t,n)==null}function h(e){return e.visualVariables?.some(e=>e.type===`size`&&e.target===`outline`)??!1}async function g(e,n){let r=t(n);return{type:`dot-density`,meshes:await o(n,{schemaOptions:e,uniforms:r,path:`renderer.symbol`})}}async function _(e,r){let i=t(r),o=y(r),c=r.backgroundFillSymbol,l=r.classBreakInfos.map(async t=>{let n=`renderer-stop-${t.minValue}-${t.maxValue}`;return{meshes:await a(t.symbol,{path:n,schemaOptions:e,uniforms:i,rotationVariable:o}),alternateMeshes:await s(t.alternateSymbols,{path:n,schemaOptions:e,uniforms:i,rotationVariable:o}),min:t.minValue,max:t.maxValue}}),u=(await Promise.all(l)).sort((e,t)=>e.min-t.min),d=await a(c,{schemaOptions:e,path:`renderer.backgroundFill`,uniforms:{...n,visualVariableSizeOutlineScaleStops:i.visualVariableSizeOutlineScaleStops}}),f=await a(r.defaultSymbol,{schemaOptions:e,path:`renderer.defaultSymbol`,uniforms:i,rotationVariable:o});return{type:`interval`,...p(r),backgroundFill:d,defaultSymbol:f,intervals:u,isMaxInclusive:r.isMaxInclusive}}async function v(e,r){let i=t(r),o=y(r),c=await a(r.backgroundFillSymbol,{schemaOptions:e,path:`renderer.backgroundFill`,uniforms:{...n,visualVariableSizeOutlineScaleStops:i.visualVariableSizeOutlineScaleStops}}),l=await a(r.defaultSymbol,{schemaOptions:e,path:`renderer.defaultSymbol`,uniforms:i,rotationVariable:o}),u=(r.uniqueValueInfos??[]).map(async t=>{let n=`renderer-unique-value-${t.value}`,r=await a(t.symbol,{path:n,schemaOptions:e,uniforms:i,rotationVariable:o}),c=await s(t.alternateSymbols,{path:n,schemaOptions:e,uniforms:i,rotationVariable:o});return{value:``+t.value,meshes:r,alternateMeshes:c}}),d=await Promise.all(u);return{type:`map`,field:r.field,expression:r.valueExpression,field2:r.field2,field3:r.field3,fieldDelimiter:r.fieldDelimiter,backgroundFill:c,defaultSymbol:l,map:d}}function y(e){if(!(`visualVariables`in e))return null;let t=e.visualVariables?.find(e=>e.type===`rotation`);return t?.type===`rotation`?t:null}async function b(e){let n=t(e),r=await e.getDictionaryInfo(),i=e.scaleExpression,a=i!=null&&i!==`1`?{valueExpressionInfo:{type:`CIMExpressionInfo`,expression:e.scaleExpression,returnType:`Numeric`},defaultValue:1}:void 0;return{type:`dictionary`,dictionaryInfo:r,userConfig:e.config??{},fieldMap:e.fieldMap??{},scaleExpression:a,visualVariableUniforms:n}}async function x(e,t){return{type:`heatmap`,meshes:await i(t,e)}}async function S(e,t){return{type:`pie-chart`,meshes:await r(t,e)}}export{l as createClassBreaksMatcherSchema,c as createMatcherSchema};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{getFontFamily as e}from"../../../../../../../core/fontUtils.js";import t from"../../../../../../../core/Logger.js";import{pt2px as n}from"../../../../../../../core/screenUtils.js";import{generateGradient as r}from"../../../../../../../renderers/support/heatmapUtils.js";import i from"../../../../../../../symbols/SimpleFillSymbol.js";import a from"../../../../../../../symbols/SimpleLineSymbol.js";import o from"../../../../../../../symbols/SimpleMarkerSymbol.js";import{CIMSymbolHelper as s,slsDashToTemplateArray as c}from"../../../../../../../symbols/cim/CIMSymbolHelper.js";import{fromCIMFontStyle as l}from"../../../../../../../symbols/cim/fromCIMFontStyle.js";import{hasRichTextFormattingTags as u}from"../../../../../../../symbols/cim/richTextUtils.js";import{getSDFInfo as d}from"../../../../../../../symbols/cim/SDFHelper.js";import{getFillColor as f,getStrokeColor as p,getStrokeWidth as m,fromCIMFontDecoration as h}from"../../../../../../../symbols/cim/utils.js";import{getAlignmentFromPlacement as g}from"../../../../../engine/webgl/alignmentUtils.js";import{writeColor as _}from"../../../../../engine/webgl/color.js";import{dotDensityMaxFields as v}from"../../../../../engine/webgl/definitions.js";import{Techniques as y}from"../../../../../engine/webgl/shaderGraph/techniques/TechniqueRegistry.js";import{defineMeshWriterReferences as b}from"../../../../../engine/webgl/shaderGraph/techniques/mesh/MeshWriterReferences.js";import{maxPieChartFields as x}from"../../../../../engine/webgl/shaderGraph/techniques/pieChart/PieChartShader.js";import{premultiplyColor as S}from"../schemaUtils.js";import{createVisualVariableUniforms as C,getMaxSizeVVSize as w,noVisualVariables as T}from"../VisualVariablesSchema.js";import{createComplexSymbolInstances as E,createComplexSymbolPartSchemas as D}from"./ComplexSymbolSchema.js";import{hasSizeVVUniform as O,hasRotationVVUniform as k}from"./utils.js";async function A(e,n){if(!e)return[];switch(e.type){case`simple-fill`:return b(await K(e,n));case`picture-fill`:return b(await q(e,n));case`simple-marker`:return b(await F(e,n));case`picture-marker`:return b(await I(e,n));case`simple-line`:return b(J(e,n,!1));case`text`:return b(R(e,n));case`label`:return z(e,n);case`cim`:return E(e.data,n);case`web-style`:return A(await e.fetchSymbol({acceptedFormats:[`cim`,`web`]}),n);case`line-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Defaulting to simple-line`),b(await J(new a,n,!1));case`point-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Defaulting to simple-marker`),b(await F(new o,n));case`polygon-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Defaulting to simple-fill`),b(await K(new i,n));case`mesh-3d`:case`label-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Ignoring`),[];case`CIMSymbolReference`:throw Error(`InternalError: CIMSymbolReference should already be resolved`)}}async function j(e,t){let{schemaOptions:n}=t,{store:r}=n,a=Array(v),o=Array(v/4);for(let t=0;t<v;t++){let n=t<e.attributes.length?e.attributes[t].color:null;a[t]=[0,0,0,0],_(a[t],n)}for(let t=0;t<v/4;t++)o[t]=[0,0,0,0],o[t][0]=+(4*t<e.attributes.length),o[t][1]=+(4*t+1<e.attributes.length),o[t][2]=+(4*t+2<e.attributes.length),o[t][3]=+(4*t+3<e.attributes.length);let s={uniforms:{isActive:o,colors:a,dotValue:e.dotValue,dotScale:e.referenceScale,blending:e.dotBlendingEnabled,dotSize:e.dotSize,seed:e.seed},optionalAttributes:{}},c=r.ensureInstance(y.dotDensity,s).createMeshInfo({effects:null}),l=[],u=await A(new i({color:e.backgroundColor??[0,0,0,0],outline:null}),t);if(l.push(...u),l.push(c),e.outline){let n=J(e.outline,t,!0);l.push(...n)}return l}async function M(e,t){let{store:i}=t,{radius:a,minDensity:o,maxDensity:s,referenceScale:c,field:l,valueExpression:u,colorStops:d}=e,f=r(d);return[i.ensureInstance(y.heatmap,{uniforms:{radius:n(a),minDensity:o,maxDensity:s,referenceScale:c,isFieldActive:!!(l||u),gradient:f,gradientHash:f.join(`,`)},optionalAttributes:{}}).createMeshInfo({effects:null})]}async function N(e,t){let{store:r}=t,i=e.outline?.width||0,a=C(e),o=Math.min(e.attributes.length,x),s=e.attributes.slice(0,o).map(e=>S(e.color));for(;s.length<x;)s.push([0,0,0,0]);let c=r.ensureInstance(y.pieChart,{uniforms:{shader:{chart:{outlineWidth:Math.round(n(i)),defaultColor:S(e.defaultColor),outlineColor:S(e.outline?.color),othersColor:S(e.othersCategory?.color),donutRatio:e.holePercentage,sectorThreshold:e.othersCategory?.threshold||0,colors:s,fieldCount:o},visualVariableOpacity:a.visualVariableOpacity,visualVariableSizeMinMaxValue:a.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:a.visualVariableSizeScaleStops,visualVariableSizeStops:a.visualVariableSizeStops,visualVariableSizeUnitValue:a.visualVariableSizeUnitValue}},optionalAttributes:{zoomRange:!0}}).createMeshInfo({size:e.size,outlineWidth:i,effects:null,scaleInfo:null,minPixelBuffer:w(a)});return[...e.backgroundFillSymbol?await K(e.backgroundFillSymbol,{schemaOptions:t,uniforms:T}):[],c]}function P(e){if(e.style===`path`){if(e.path==null)throw Error(`Symbol with a style of type path must define a path`);return{type:`sprite-rasterization-param`,overrides:[],resource:{type:`path`,path:e.path,asFill:!0}}}let t=s.fromSimpleMarker(e);if(`outline`in e&&e.outline&&e.outline.style!==`none`&&e.outline.style!==`solid`){if(!t||!t.symbolLayers)throw Error(`Error handling marker! `);return{type:`sprite-rasterization-param`,resource:t.symbolLayers[0],overrides:[]}}return{type:`sprite-rasterization-param`,resource:d(t),overrides:[]}}async function F(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r;if(e.style===`path`||e.outline&&e.outline.style!==`solid`&&e.outline.style!==`none`){let r=s.fromSimpleMarker(e);if(!r||!r.symbolLayers)throw Error(`Error handling marker! `);if(n.visualVariableRotation&&(r.angleAlignment=`Map`),e.style!==`path`){let e=r.symbolLayers[0];if(O(t.uniforms)){let n=w(t.uniforms,0,1);if(n>e.size){let t=n/e.size;e.size=n;let r=e.markerGraphics?.[0].symbol,i=r.symbolLayers&&r.symbolLayers[0];i.width*=t}}}return E({type:`CIMSymbolReference`,symbol:r},t)}let a=i.ensureInstance(y.marker,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeMinMaxValue:n.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:n.visualVariableSizeScaleStops,visualVariableSizeStops:n.visualVariableSizeStops,visualVariableSizeUnitValue:n.visualVariableSizeUnitValue,visualVariableRotation:n.visualVariableRotation},optionalAttributes:{zoomRange:!1}}),o=P(e),c=e.color?.toArray()??[0,0,0,0];o.resource.type===`CIMVectorMarker`&&(c=[255,255,255,255]);let l=e.style===`triangle`?124/116:1,u=e.size,d=u*l,f=n.visualVariableColor!=null&&(e.style===`cross`||e.style===`x`);return[a.createMeshInfo({type:`simple`,color:c,height:u,width:d,offsetX:e.xoffset,offsetY:e.yoffset,angle:e.angle,alignment:+!!k(n),outlineColor:e.outline?.color?.toArray()??[0,0,0,0],outlineSize:e.outline?.width??1,referenceSize:u,sprite:o,overrideOutlineColor:f,hasSizeVV:O(n),placement:null,effects:null,transforms:null,scaleInfo:null,minPixelBuffer:w(n)})]}function I(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r,a=i.ensureInstance(y.marker,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeMinMaxValue:n.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:n.visualVariableSizeScaleStops,visualVariableSizeStops:n.visualVariableSizeStops,visualVariableSizeUnitValue:n.visualVariableSizeUnitValue,visualVariableRotation:n.visualVariableRotation},optionalAttributes:{zoomRange:!1}}),o=s.createPictureMarkerRasterizationParam(e);return o?[a.createMeshInfo({type:`picture`,color:[255,255,255,255],height:e.height,width:e.width,offsetX:e.xoffset,offsetY:e.yoffset,angle:e.angle,alignment:+!!k(n),outlineColor:null,outlineSize:0,referenceSize:e.height,sprite:o,overrideOutlineColor:!1,hasSizeVV:O(n),placement:null,effects:null,transforms:null,scaleInfo:null,minPixelBuffer:w(n)})]:[]}function L(e,t,n){let{uniforms:r,schemaOptions:i}=n,{store:a}=i,o=a.ensureInstance(y.marker,{uniforms:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue,visualVariableRotation:r.visualVariableRotation},optionalAttributes:{zoomRange:!1}}),s=P(e),c=6*t.width,l=c,u=e.color?.toArray()??t.color?.toArray()??[0,0,0,0],d=e.style===`cross`||e.style===`x`,f;switch(e.placement){case`begin-end`:f=`Both`;break;case`begin`:f=`JustBegin`;break;case`end`:f=`JustEnd`;break;default:f=`None`}let p={type:`cim-marker-placement-param`,placement:{type:`CIMMarkerPlacementAtExtremities`,angleToLine:!0,offset:0,extremityPlacement:f,offsetAlongLine:0},overrides:[]};return[o.createMeshInfo({type:`simple`,color:u,height:l,width:c,offsetX:0,offsetY:0,angle:0,alignment:+!!k(r),outlineColor:u,outlineSize:d?t.width:0,referenceSize:l/6,sprite:s,overrideOutlineColor:d&&r.visualVariableColor!=null,hasSizeVV:O(r),placement:p,transforms:null,effects:null,scaleInfo:null,minPixelBuffer:w(r)})]}function R(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r;return[i.ensureInstance(y.text,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableRotation:n.visualVariableRotation,visualVariableSizeMinMaxValue:n.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:n.visualVariableSizeScaleStops,visualVariableSizeStops:n.visualVariableSizeStops,visualVariableSizeUnitValue:n.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!1,clipAngle:!1,referenceSymbol:!1}}).createMeshInfo({alignment:0,boxBackgroundColor:e.backgroundColor?.toArray(),boxBorderLineColor:e.borderLineColor?.toArray(),boxBorderLineSize:e.borderLineSize??0,color:e.color?.toArray()??[0,0,0,0],offsetX:e.xoffset,offsetY:e.yoffset,postAngle:e.angle,fontSize:e.font.size,decoration:e.font.decoration,haloColor:e.haloColor?.toArray()??[0,0,0,0],haloSize:e.haloSize??0,outlineColor:[0,0,0,0],outlineSize:0,lineWidth:e.lineWidth,lineHeightRatio:e.lineHeight,horizontalAlignment:e.horizontalAlignment,verticalAlignment:e.verticalAlignment,useCIMAngleBehavior:!1,glyphs:{type:`text-rasterization-param`,resource:{type:`text`,font:e.font.toJSON(),textString:e.text,symbol:s.createCIMTextSymbolfromTextSymbol(e),supportsRichText:u(e.text)},overrides:[]},referenceSize:null,effects:null,placement:null,scaleInfo:null,transforms:null,scaleFactor:1,minPixelBuffer:w(n),repeatLabel:null,repeatLabelDistance:null,allowOverrun:null,labelPosition:null,layerId:null,labelClassId:null})]}async function z(e,t){let{schemaOptions:r,uniforms:i}=t,{store:a}=r,o=e.symbol,c=o.type===`cim`?o:null,l=c?.data.symbol?.type===`CIMTextSymbol`?c.data.symbol:null;if(c&&!l)throw Error(`InternalError: CIM label symbols must contain a CIMTextSymbol`);let u=l?null:o,{allowOverrun:d,repeatLabel:h,repeatLabelDistance:_}=e,v={maxScale:e.maxScale??0,minScale:e.minScale??0},b=l?B(l):null,x=l??s.createCIMTextSymbolfromTextSymbol(u),S=V(l?.callout)?l.callout:null,C=S?await D({type:`CIMSymbolReference`,symbol:{type:`CIMPointSymbol`,symbolLayers:[],callout:S},primitiveOverrides:c.data.primitiveOverrides},t,!0):[],T=a.ensureInstance(y.label,{uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:i.visualVariableRotation,visualVariableSizeMinMaxValue:i.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:i.visualVariableSizeScaleStops,visualVariableSizeStops:i.visualVariableSizeStops,visualVariableSizeUnitValue:i.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!0,clipAngle:!0,referenceSymbol:!0}}),E=e.labelPlacement,[O,k]=g(E),A={...T.createMeshInfo({alignment:0,boxBackgroundColor:u?.backgroundColor?.toArray(),boxBorderLineColor:u?.borderLineColor?.toArray(),boxBorderLineSize:u?.borderLineSize??0,color:l?H(f(l),[0,0,0,255]):u?.color?.toArray()??[0,0,0,0],offsetX:l?l.offsetX??0:u.xoffset,offsetY:l?l.offsetY??0:u.yoffset,labelOffsetDistance:S?e.offsetDistance:0,postAngle:l?l.angle??0:u.angle,fontSize:l?l.height??10:u.font.size,decoration:b?.decoration??u.font.decoration,outlineColor:l?H(p(l),[0,0,0,0]):[0,0,0,0],outlineSize:l?m(l)??0:0,haloColor:l?H(f(l.haloSymbol)??p(l.haloSymbol),[0,0,0,0]):u?.haloColor?.toArray()??[0,0,0,0],haloSize:l?l.haloSize??0:u.haloSize??0,lineWidth:l?l.lineWidth??512:u.lineWidth,lineHeightRatio:u?.lineHeight??1,horizontalAlignment:O,verticalAlignment:k,repeatLabel:h,repeatLabelDistance:n(_),allowOverrun:d,labelPosition:e.labelPosition,scaleInfo:v,minPixelBuffer:w(i),useCIMAngleBehavior:!1,glyphs:{type:`text-rasterization-param`,resource:{type:`text`,font:b??u.font.toJSON(),textString:u?.text??``,symbol:x,primitiveName:`label-override`,supportsRichText:!0},useLegacyLabelEvaluationRules:e.labelExpressionInfo?.expression==null,overrides:[{valueExpressionInfo:{type:`CIMExpressionInfo`,expression:e.labelExpressionInfo?.expression??e.labelExpression,returnType:`String`},primitiveName:`label-override`,propertyName:`textString`,defaultValue:``}]},referenceSize:null,effects:null,placement:null,transforms:null,scaleFactor:1,layerId:t.layerId,labelClassId:t.labelClassId,collisionVisibility:!0}),references:{externalDependencies:[`label-reference-symbol`],...S?{exports:[`callout-body`]}:null}};return[...S?C.map(e=>({...e,id:a.ensureLabelPhaseInstanceId(e.id),references:{...e.references,dependencies:[`callout-body`]}})):C,A]}function B(t){return{family:e(t.fontFamilyName),decoration:h(t),...l(t.fontStyleName)}}function V(e){return e?.type===`CIMSimpleLineCallout`||e?.type===`CIMBackgroundCallout`||e?.type===`CIMBalloonCallout`||e?.type===`CIMPointSymbolCallout`}function H(e,t){return e?.length===4?[e[0],e[1],e[2],e[3]]:t}function U(e,t){let n=e.width;return{outlineColor:e.color?.toArray()||[0,0,0,1],width:n,referenceWidth:n,capType:e.cap??`round`,joinType:e.join??`round`,miterLimit:e.miterLimit,hasSizeVV:t,outlineUsesColorVV:!1}}function W(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r,a=e.color?.toArray()??[0,0,0,0],o={type:`sprite-rasterization-param`,resource:{type:`fill-style`,style:e.style},overrides:[]};if(e.outline?.style===`solid`)return[i.ensureInstance(y.patternOutlineFill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeScaleStops:n.visualVariableSizeOutlineScaleStops,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:a,...U(e.outline,!!n.visualVariableSizeOutlineScaleStops),sprite:o,scaleInfo:null,effects:null})];let s=[],c=i.ensureInstance(y.patternFill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:e.color?.toArray()??[0,0,0,0],sprite:o,scaleInfo:null,effects:null});return s.push(c),e.outline&&s.push(...J(e.outline,t,!0)),s}function G(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r,a=e.color?.toArray()??[0,0,0,0];if(e.style!==`none`&&e.outline?.style===`solid`)return[i.ensureInstance(y.outlineFill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeScaleStops:n.visualVariableSizeOutlineScaleStops,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:a,...U(e.outline,!!n.visualVariableSizeOutlineScaleStops),scaleInfo:null,effects:null})];let o=[];if(e.style!==`none`){let e=i.ensureInstance(y.fill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:a,scaleInfo:null,effects:null});o.push(e)}return e.outline&&o.push(...J(e.outline,t,!0)),o}async function K(e,t){if(e.type===`cim`)return E(e.data,t);let{style:n}=e;return n&&n!==`none`&&n!==`solid`?W(e,t):G(e,t)}function q(e,t){let{outline:n}=e,{uniforms:r,schemaOptions:i}=t,{store:a}=i,o=[],c=s.createPictureFillRasterizationParam(e);if(!c)return[];let{width:l,height:u,xoffset:d,yoffset:f,xscale:p,yscale:m}=e,h={color:[255,255,255,255],sprite:c,height:u,aspectRatio:l/u,offsetX:d,offsetY:f,scaleX:p,scaleY:m,angle:0,applyRandomOffset:!1,sampleAlphaOnly:!1,scaleProportionally:!1,effects:null,scaleInfo:null};if(n?.style===`solid`)return[a.ensureInstance(y.complexOutlineFill,{uniforms:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!1}}).createMeshInfo({...h,...U(n,!!r.visualVariableSizeOutlineScaleStops)})];let g=a.ensureInstance(y.complexFill,{uniforms:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity},optionalAttributes:{zoomRange:!1}});return o.push(g.createMeshInfo(h)),n&&o.push(...J(n,t,!0)),o}function J(e,t,n){let{color:r,style:i,width:a,cap:o,join:s}=e,{schemaOptions:l}=t,{store:u}=l,d=[],f=n?{...T,visualVariableSizeScaleStops:t.uniforms.visualVariableSizeOutlineScaleStops}:t.uniforms,p={uniforms:{visualVariableColor:f.visualVariableColor,visualVariableOpacity:f.visualVariableOpacity,visualVariableSizeMinMaxValue:f.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:f.visualVariableSizeScaleStops,visualVariableSizeStops:f.visualVariableSizeStops,visualVariableSizeUnitValue:f.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!1}},m={color:r?.toArray()??[0,0,0,0],width:a,referenceWidth:a,capType:o,joinType:s,miterLimit:e.miterLimit,hasSizeVV:O(f),effects:null,scaleInfo:null};if(i==null||i===`solid`){let e=u.ensureInstance(y.line,p).createMeshInfo(m);d.push(e)}else if(i!==`none`){let e=u.ensureInstance(y.texturedLine,p).createMeshInfo({...m,offsetAlongLine:0,shouldScaleDash:!0,shouldSampleAlphaOnly:!1,isSDF:!0,sprite:{type:`sprite-rasterization-param`,resource:{type:`dash`,dashTemplate:c(i,o)},overrides:[]}});d.push(e)}return e.marker!=null&&d.push(...L(e.marker,e,t)),d}export{j as createDotDensityMeshSchemas,M as createHeatmapMeshSchemas,J as createLineInstance,N as createPieChartMeshSchemas,A as createSymbolMeshSchemas};
|
|
2
|
+
import{getFontFamily as e}from"../../../../../../../core/fontUtils.js";import t from"../../../../../../../core/Logger.js";import{pt2px as n}from"../../../../../../../core/screenUtils.js";import{generateGradient as r}from"../../../../../../../renderers/support/heatmapUtils.js";import i from"../../../../../../../symbols/SimpleFillSymbol.js";import a from"../../../../../../../symbols/SimpleLineSymbol.js";import o from"../../../../../../../symbols/SimpleMarkerSymbol.js";import{CIMSymbolHelper as s,slsDashToTemplateArray as c}from"../../../../../../../symbols/cim/CIMSymbolHelper.js";import{fromCIMFontStyle as l}from"../../../../../../../symbols/cim/fromCIMFontStyle.js";import{hasRichTextFormattingTags as u}from"../../../../../../../symbols/cim/richTextUtils.js";import{getSDFInfo as d}from"../../../../../../../symbols/cim/SDFHelper.js";import{getFillColor as f,getStrokeColor as p,getStrokeWidth as m,fromCIMFontDecoration as h}from"../../../../../../../symbols/cim/utils.js";import{getAlignmentFromPlacement as g}from"../../../../../engine/webgl/alignmentUtils.js";import{writeColor as _}from"../../../../../engine/webgl/color.js";import{dotDensityMaxFields as v}from"../../../../../engine/webgl/definitions.js";import{Techniques as y}from"../../../../../engine/webgl/shaderGraph/techniques/TechniqueRegistry.js";import{defineMeshWriterReferences as b}from"../../../../../engine/webgl/shaderGraph/techniques/mesh/MeshWriterReferences.js";import{maxPieChartFields as x}from"../../../../../engine/webgl/shaderGraph/techniques/pieChart/PieChartShader.js";import{premultiplyColor as S}from"../schemaUtils.js";import{createVisualVariableUniforms as C,getMaxSizeVVSize as w,noVisualVariables as T}from"../VisualVariablesSchema.js";import{createComplexSymbolInstances as E,createComplexSymbolPartSchemas as D}from"./ComplexSymbolSchema.js";import{hasSizeVVUniform as O,hasRotationVVUniform as k}from"./utils.js";async function A(e,n){if(!e)return[];switch(e.type){case`simple-fill`:return b(await K(e,n));case`picture-fill`:return b(await q(e,n));case`simple-marker`:return b(await F(e,n));case`picture-marker`:return b(await I(e,n));case`simple-line`:return b(J(e,n,!1));case`text`:return b(R(e,n));case`label`:return z(e,n);case`cim`:return E(e.data,n);case`web-style`:return A(await e.fetchSymbol({acceptedFormats:[`cim`,`web`]}),n);case`line-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Defaulting to simple-line`),b(await J(new a,n,!1));case`point-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Defaulting to simple-marker`),b(await F(new o,n));case`polygon-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Defaulting to simple-fill`),b(await K(new i,n));case`mesh-3d`:case`label-3d`:return t.getLogger(`esri.views.layers.FeatureLayerView`).warn(`unsupported-symbol`,`Symbol of type "${e.type}" unsupported in MapView. Ignoring`),[];case`CIMSymbolReference`:throw Error(`InternalError: CIMSymbolReference should already be resolved`)}}async function j(e,t){let{schemaOptions:n}=t,{store:r}=n,a=Array(v),o=Array(v/4);for(let t=0;t<v;t++){let n=t<e.attributes.length?e.attributes[t].color:null;a[t]=[0,0,0,0],_(a[t],n)}for(let t=0;t<v/4;t++)o[t]=[0,0,0,0],o[t][0]=+(4*t<e.attributes.length),o[t][1]=+(4*t+1<e.attributes.length),o[t][2]=+(4*t+2<e.attributes.length),o[t][3]=+(4*t+3<e.attributes.length);let s={uniforms:{isActive:o,colors:a,dotValue:e.dotValue,dotScale:e.referenceScale,blending:e.dotBlendingEnabled,dotSize:e.dotSize,seed:e.seed},optionalAttributes:{}},c=r.ensureInstance(y.dotDensity,s).createMeshInfo({effects:null}),l=[],u=await A(new i({color:e.backgroundColor??[0,0,0,0],outline:null}),t);if(l.push(...u),l.push(c),e.outline){let n=J(e.outline,t,!0);l.push(...n)}return l}async function M(e,t){let{store:i}=t,{radius:a,minDensity:o,maxDensity:s,referenceScale:c,field:l,valueExpression:u,colorStops:d}=e,f=r(d);return[i.ensureInstance(y.heatmap,{uniforms:{radius:n(a),minDensity:o,maxDensity:s,referenceScale:c,isFieldActive:!!(l||u),gradient:f,gradientHash:f.join(`,`)},optionalAttributes:{}}).createMeshInfo({effects:null})]}async function N(e,t){let{store:r}=t,i=e.outline?.width||0,a=C(e),o=Math.min(e.attributes.length,x),s=e.attributes.slice(0,o).map(e=>S(e.color));for(;s.length<x;)s.push([0,0,0,0]);let c=r.ensureInstance(y.pieChart,{uniforms:{shader:{chart:{outlineWidth:Math.round(n(i)),defaultColor:S(e.defaultColor),outlineColor:S(e.outline?.color),othersColor:S(e.othersCategory?.color),donutRatio:e.holePercentage,sectorThreshold:e.othersCategory?.threshold||0,colors:s,fieldCount:o},visualVariableOpacity:a.visualVariableOpacity,visualVariableSizeMinMaxValue:a.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:a.visualVariableSizeScaleStops,visualVariableSizeStops:a.visualVariableSizeStops,visualVariableSizeUnitValue:a.visualVariableSizeUnitValue}},optionalAttributes:{zoomRange:!0}}).createMeshInfo({size:e.size,outlineWidth:i,effects:null,scaleInfo:null,minPixelBuffer:w(a)});return[...e.backgroundFillSymbol?await K(e.backgroundFillSymbol,{schemaOptions:t,uniforms:T}):[],c]}function P(e){if(e.style===`path`){if(e.path==null)throw Error(`Symbol with a style of type path must define a path`);return{type:`sprite-rasterization-param`,overrides:[],resource:{type:`path`,path:e.path,asFill:!0}}}let t=s.fromSimpleMarker(e);if(`outline`in e&&e.outline&&e.outline.style!==`none`&&e.outline.style!==`solid`){if(!t||!t.symbolLayers)throw Error(`Error handling marker! `);return{type:`sprite-rasterization-param`,resource:t.symbolLayers[0],overrides:[]}}return{type:`sprite-rasterization-param`,resource:d(t),overrides:[]}}async function F(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r;if(e.style===`path`||e.outline&&e.outline.style!==`solid`&&e.outline.style!==`none`){let r=s.fromSimpleMarker(e);if(!r||!r.symbolLayers)throw Error(`Error handling marker! `);if(n.visualVariableRotation&&(r.angleAlignment=`Map`),e.style!==`path`){let e=r.symbolLayers[0];if(O(t.uniforms)){let n=w(t.uniforms,0,1);if(n>e.size){let t=n/e.size;e.size=n;let r=e.markerGraphics?.[0].symbol,i=r.symbolLayers&&r.symbolLayers[0];i.width*=t}}}return E({type:`CIMSymbolReference`,symbol:r},t)}let a=i.ensureInstance(y.marker,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeMinMaxValue:n.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:n.visualVariableSizeScaleStops,visualVariableSizeStops:n.visualVariableSizeStops,visualVariableSizeUnitValue:n.visualVariableSizeUnitValue,visualVariableRotation:n.visualVariableRotation},optionalAttributes:{zoomRange:!1}}),o=P(e),c=e.color?.toArray()??[0,0,0,0];o.resource.type===`CIMVectorMarker`&&(c=[255,255,255,255]);let l=e.style===`triangle`?124/116:1,u=e.size,d=u*l,f=n.visualVariableColor!=null&&(e.style===`cross`||e.style===`x`);return[a.createMeshInfo({type:`simple`,color:c,height:u,width:d,offsetX:e.xoffset,offsetY:e.yoffset,angle:e.angle,alignment:+!!k(n),outlineColor:e.outline?.color?.toArray()??[0,0,0,0],outlineSize:e.outline?.width??1,referenceSize:u,sprite:o,overrideOutlineColor:f,hasSizeVV:O(n),placement:null,effects:null,transforms:null,scaleInfo:null,minPixelBuffer:w(n)})]}function I(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r,a=i.ensureInstance(y.marker,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeMinMaxValue:n.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:n.visualVariableSizeScaleStops,visualVariableSizeStops:n.visualVariableSizeStops,visualVariableSizeUnitValue:n.visualVariableSizeUnitValue,visualVariableRotation:n.visualVariableRotation},optionalAttributes:{zoomRange:!1}}),o=s.createPictureMarkerRasterizationParam(e);return o?[a.createMeshInfo({type:`picture`,color:[255,255,255,255],height:e.height,width:e.width,offsetX:e.xoffset,offsetY:e.yoffset,angle:e.angle,alignment:+!!k(n),outlineColor:null,outlineSize:0,referenceSize:e.height,sprite:o,overrideOutlineColor:!1,hasSizeVV:O(n),placement:null,effects:null,transforms:null,scaleInfo:null,minPixelBuffer:w(n)})]:[]}function L(e,t,n){let{uniforms:r,schemaOptions:i}=n,{store:a}=i,o=a.ensureInstance(y.marker,{uniforms:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeMinMaxValue:r.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:r.visualVariableSizeScaleStops,visualVariableSizeStops:r.visualVariableSizeStops,visualVariableSizeUnitValue:r.visualVariableSizeUnitValue,visualVariableRotation:r.visualVariableRotation},optionalAttributes:{zoomRange:!1}}),s=P(e),c=6*t.width,l=c,u=e.color?.toArray()??t.color?.toArray()??[0,0,0,0],d=e.style===`cross`||e.style===`x`,f;switch(e.placement){case`begin-end`:f=`Both`;break;case`begin`:f=`JustBegin`;break;case`end`:f=`JustEnd`;break;default:f=`None`}let p={type:`cim-marker-placement-param`,placement:{type:`CIMMarkerPlacementAtExtremities`,angleToLine:!0,offset:0,extremityPlacement:f,offsetAlongLine:0},overrides:[]};return[o.createMeshInfo({type:`simple`,color:u,height:l,width:c,offsetX:0,offsetY:0,angle:0,alignment:+!!k(r),outlineColor:u,outlineSize:d?t.width:0,referenceSize:l/6,sprite:s,overrideOutlineColor:d&&r.visualVariableColor!=null,hasSizeVV:O(r),placement:p,transforms:null,effects:null,scaleInfo:null,minPixelBuffer:w(r)})]}function R(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r;return[i.ensureInstance(y.text,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableRotation:n.visualVariableRotation,visualVariableSizeMinMaxValue:n.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:n.visualVariableSizeScaleStops,visualVariableSizeStops:n.visualVariableSizeStops,visualVariableSizeUnitValue:n.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!1,clipAngle:!1,referenceSymbol:!1}}).createMeshInfo({alignment:0,boxBackgroundColor:e.backgroundColor?.toArray(),boxBorderLineColor:e.borderLineColor?.toArray(),boxBorderLineSize:e.borderLineSize??0,color:e.color?.toArray()??[0,0,0,0],offsetX:e.xoffset,offsetY:e.yoffset,postAngle:e.angle,fontSize:e.font.size,decoration:e.font.decoration,haloColor:e.haloColor?.toArray()??[0,0,0,0],haloSize:e.haloSize??0,outlineColor:[0,0,0,0],outlineSize:0,lineWidth:e.lineWidth,lineHeightRatio:e.lineHeight,horizontalAlignment:e.horizontalAlignment,verticalAlignment:e.verticalAlignment,useCIMAngleBehavior:!1,glyphs:{type:`text-rasterization-param`,resource:{type:`text`,font:e.font.toJSON(),textString:e.text,symbol:s.createCIMTextSymbolfromTextSymbol(e),supportsRichText:u(e.text)},overrides:[]},referenceSize:null,effects:null,placement:null,scaleInfo:null,transforms:null,scaleFactor:1,minPixelBuffer:w(n),repeatLabel:null,repeatLabelDistance:null,allowOverrun:null,labelPosition:null,layerId:null,labelClassId:null})]}async function z(e,t){let{schemaOptions:r,uniforms:i}=t,{store:a}=r,o=e.symbol,c=o.type===`cim`?o:null,l=c?.data.symbol?.type===`CIMTextSymbol`?c.data.symbol:null;if(c&&!l)throw Error(`InternalError: CIM label symbols must contain a CIMTextSymbol`);let u=l?null:o,{allowOverrun:d,repeatLabel:h,repeatLabelDistance:_}=e,v={maxScale:e.maxScale??0,minScale:e.minScale??0},b=l?B(l):null,x=l??s.createCIMTextSymbolfromTextSymbol(u),S=V(l?.callout)?l.callout:null,C=S?await D({type:`CIMSymbolReference`,symbol:{type:`CIMPointSymbol`,symbolLayers:[],callout:S},primitiveOverrides:c.data.primitiveOverrides},{...t,uniforms:T},!0):[],E=a.ensureInstance(y.label,{uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:i.visualVariableRotation,visualVariableSizeMinMaxValue:i.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:i.visualVariableSizeScaleStops,visualVariableSizeStops:i.visualVariableSizeStops,visualVariableSizeUnitValue:i.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!0,clipAngle:!0,referenceSymbol:!0}}),O=e.labelPlacement,[k,A]=g(O),j={...E.createMeshInfo({alignment:0,boxBackgroundColor:u?.backgroundColor?.toArray(),boxBorderLineColor:u?.borderLineColor?.toArray(),boxBorderLineSize:u?.borderLineSize??0,color:l?H(f(l),[0,0,0,255]):u?.color?.toArray()??[0,0,0,0],offsetX:l?l.offsetX??0:u.xoffset,offsetY:l?l.offsetY??0:u.yoffset,labelOffsetDistance:S?e.offsetDistance:0,postAngle:l?l.angle??0:u.angle,fontSize:l?l.height??10:u.font.size,decoration:b?.decoration??u.font.decoration,outlineColor:l?H(p(l),[0,0,0,0]):[0,0,0,0],outlineSize:l?m(l)??0:0,haloColor:l?H(f(l.haloSymbol)??p(l.haloSymbol),[0,0,0,0]):u?.haloColor?.toArray()??[0,0,0,0],haloSize:l?l.haloSize??0:u.haloSize??0,lineWidth:l?l.lineWidth??512:u.lineWidth,lineHeightRatio:u?.lineHeight??1,horizontalAlignment:k,verticalAlignment:A,repeatLabel:h,repeatLabelDistance:n(_),allowOverrun:d,labelPosition:e.labelPosition,scaleInfo:v,minPixelBuffer:w(i),useCIMAngleBehavior:!1,glyphs:{type:`text-rasterization-param`,resource:{type:`text`,font:b??u.font.toJSON(),textString:u?.text??``,symbol:x,primitiveName:`label-override`,supportsRichText:!0},useLegacyLabelEvaluationRules:e.labelExpressionInfo?.expression==null,overrides:[{valueExpressionInfo:{type:`CIMExpressionInfo`,expression:e.labelExpressionInfo?.expression??e.labelExpression,returnType:`String`},primitiveName:`label-override`,propertyName:`textString`,defaultValue:``}]},referenceSize:null,effects:null,placement:null,transforms:null,scaleFactor:1,layerId:t.layerId,labelClassId:t.labelClassId,collisionVisibility:!0}),references:{externalDependencies:[`label-reference-symbol`],...S?{exports:[`callout-body`]}:null}};return[...S?C.map(e=>({...e,id:a.ensureLabelPhaseInstanceId(e.id),references:{...e.references,dependencies:[`callout-body`]}})):C,j]}function B(t){return{family:e(t.fontFamilyName),decoration:h(t),...l(t.fontStyleName)}}function V(e){return e?.type===`CIMSimpleLineCallout`||e?.type===`CIMBackgroundCallout`||e?.type===`CIMBalloonCallout`||e?.type===`CIMPointSymbolCallout`}function H(e,t){return e?.length===4?[e[0],e[1],e[2],e[3]]:t}function U(e,t){let n=e.width;return{outlineColor:e.color?.toArray()||[0,0,0,1],width:n,referenceWidth:n,capType:e.cap??`round`,joinType:e.join??`round`,miterLimit:e.miterLimit,hasSizeVV:t,outlineUsesColorVV:!1}}function W(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r,a=e.color?.toArray()??[0,0,0,0],o={type:`sprite-rasterization-param`,resource:{type:`fill-style`,style:e.style},overrides:[]};if(e.outline?.style===`solid`)return[i.ensureInstance(y.patternOutlineFill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeScaleStops:n.visualVariableSizeOutlineScaleStops,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:a,...U(e.outline,!!n.visualVariableSizeOutlineScaleStops),sprite:o,scaleInfo:null,effects:null})];let s=[],c=i.ensureInstance(y.patternFill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:e.color?.toArray()??[0,0,0,0],sprite:o,scaleInfo:null,effects:null});return s.push(c),e.outline&&s.push(...J(e.outline,t,!0)),s}function G(e,t){let{uniforms:n,schemaOptions:r}=t,{store:i}=r,a=e.color?.toArray()??[0,0,0,0];if(e.style!==`none`&&e.outline?.style===`solid`)return[i.ensureInstance(y.outlineFill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity,visualVariableSizeScaleStops:n.visualVariableSizeOutlineScaleStops,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:a,...U(e.outline,!!n.visualVariableSizeOutlineScaleStops),scaleInfo:null,effects:null})];let o=[];if(e.style!==`none`){let e=i.ensureInstance(y.fill,{uniforms:{visualVariableColor:n.visualVariableColor,visualVariableOpacity:n.visualVariableOpacity},optionalAttributes:{zoomRange:!1}}).createMeshInfo({color:a,scaleInfo:null,effects:null});o.push(e)}return e.outline&&o.push(...J(e.outline,t,!0)),o}async function K(e,t){if(e.type===`cim`)return E(e.data,t);let{style:n}=e;return n&&n!==`none`&&n!==`solid`?W(e,t):G(e,t)}function q(e,t){let{outline:n}=e,{uniforms:r,schemaOptions:i}=t,{store:a}=i,o=[],c=s.createPictureFillRasterizationParam(e);if(!c)return[];let{width:l,height:u,xoffset:d,yoffset:f,xscale:p,yscale:m}=e,h={color:[255,255,255,255],sprite:c,height:u,aspectRatio:l/u,offsetX:d,offsetY:f,scaleX:p,scaleY:m,angle:0,applyRandomOffset:!1,sampleAlphaOnly:!1,scaleProportionally:!1,effects:null,scaleInfo:null};if(n?.style===`solid`)return[a.ensureInstance(y.complexOutlineFill,{uniforms:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity,visualVariableSizeScaleStops:r.visualVariableSizeOutlineScaleStops,visualVariableSizeMinMaxValue:null,visualVariableSizeStops:null,visualVariableSizeUnitValue:null},optionalAttributes:{zoomRange:!1}}).createMeshInfo({...h,...U(n,!!r.visualVariableSizeOutlineScaleStops)})];let g=a.ensureInstance(y.complexFill,{uniforms:{visualVariableColor:r.visualVariableColor,visualVariableOpacity:r.visualVariableOpacity},optionalAttributes:{zoomRange:!1}});return o.push(g.createMeshInfo(h)),n&&o.push(...J(n,t,!0)),o}function J(e,t,n){let{color:r,style:i,width:a,cap:o,join:s}=e,{schemaOptions:l}=t,{store:u}=l,d=[],f=n?{...T,visualVariableSizeScaleStops:t.uniforms.visualVariableSizeOutlineScaleStops}:t.uniforms,p={uniforms:{visualVariableColor:f.visualVariableColor,visualVariableOpacity:f.visualVariableOpacity,visualVariableSizeMinMaxValue:f.visualVariableSizeMinMaxValue,visualVariableSizeScaleStops:f.visualVariableSizeScaleStops,visualVariableSizeStops:f.visualVariableSizeStops,visualVariableSizeUnitValue:f.visualVariableSizeUnitValue},optionalAttributes:{zoomRange:!1}},m={color:r?.toArray()??[0,0,0,0],width:a,referenceWidth:a,capType:o,joinType:s,miterLimit:e.miterLimit,hasSizeVV:O(f),effects:null,scaleInfo:null};if(i==null||i===`solid`){let e=u.ensureInstance(y.line,p).createMeshInfo(m);d.push(e)}else if(i!==`none`){let e=u.ensureInstance(y.texturedLine,p).createMeshInfo({...m,offsetAlongLine:0,shouldScaleDash:!0,shouldSampleAlphaOnly:!1,isSDF:!0,sprite:{type:`sprite-rasterization-param`,resource:{type:`dash`,dashTemplate:c(i,o)},overrides:[]}});d.push(e)}return e.marker!=null&&d.push(...L(e.marker,e,t)),d}export{j as createDotDensityMeshSchemas,M as createHeatmapMeshSchemas,J as createLineInstance,N as createPieChartMeshSchemas,A as createSymbolMeshSchemas};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"./DebugOverlay.js";function t(t,n){t.container.addChild(new e({getMesh:e=>t.layer.type===`vector-tile`?a(t,e,n):i(t,e,n),getColors:o,getOpacities:s}))}const n=(t,n,r)=>{let
|
|
2
|
+
import e from"./DebugOverlay.js";function t(t,n){t.container.addChild(new e({getMesh:e=>t.layer.type===`vector-tile`?a(t,e,n):i(t,e,n),getColors:o,getOpacities:s}))}const n=(t,n,r,i)=>{let a=0,o=[],s=[];for(let c of t.children)if(c.symbols)for(let l of c.symbols.values())for(let c of l)for(let l of c.colliders(t,r)){let t=(l.xScreen+l.dxScreen)*n,r=(l.yScreen+l.dyScreen)*n,u=l.width*n,d=l.height*n,f=c.uniqueSymbol?.parts[l.partIndex].targetOpacity>.5;if(!f&&i!==`all`)continue;let p=f?2:0,m=f?3:0,h=e.makeFlags(p,m);o.push(t,r,h,t+u,r,h,t,r+d,h,t+u,r+d,h),s.push(a,a+1,a+2,a+1,a+3,a+2),a+=4;let g=f?3:1,_=f?3:0,v=e.makeFlags(g,_);o.push(t,r,v,t+u,r,v,t,r+1,v,t+u,r+1,v),s.push(a,a+1,a+2,a+1,a+3,a+2),a+=4,o.push(t,r+d-1,v,t+u,r+d-1,v,t,r+d,v,t+u,r+d,v),s.push(a,a+1,a+2,a+1,a+3,a+2),a+=4,o.push(t,r,v,t+1,r,v,t,r+d,v,t+1,r+d,v),s.push(a,a+1,a+2,a+1,a+3,a+2),a+=4,o.push(t+u-1,r,v,t+u,r,v,t+u-1,r+d,v,t+u,r+d,v),s.push(a,a+1,a+2,a+1,a+3,a+2),a+=4}return{vertexData:o,indexData:s,vertexCount:a}},r=(t,n)=>{let{vertexData:r,indexData:i,vertexCount:a}=n,[o,s]=t.decluttererOffset,c=e.makeFlags(2,3),l=256+o,u=256+s;for(let e of[-3,3])for(let t of[-3,3])r.push(256,256,c,256+e,256+t,c,l,u,c,l+e,u+t,c),i.push(a,a+1,a+2,a+1,a+3,a+2),a+=4},i=(e,t,r)=>{let{pixelRatio:i,scale:a}=t.state,{vertexData:o,indexData:s}=n(e.featureContainer,i,a,r);return{vertexData:new Int16Array(o),indexData:new Uint32Array(s)}},a=(e,t,i)=>{let{pixelRatio:a,scale:o}=t.state,s=e._vectorTileContainer,{vertexData:c,indexData:l,vertexCount:u}=n(s,a,o,i),{symbolFader:d}=s;return d&&r(d,{vertexData:c,indexData:l,vertexCount:u}),{vertexData:new Int16Array(c),indexData:new Uint32Array(l)}},o=()=>[1,.5,0,1,1,0,0,1,0,1,.5,1,0,.5,0,1],s=()=>[.05,.01,.15,.2];export{t as showCollisionBoxes};
|