@arcgis/core 5.1.0-next.118 → 5.1.0-next.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analysis/SliceAnalysis.d.ts +1 -1
- package/assets/components/assets/icon/orientedImageryFullSuperimpose16.json +1 -0
- package/assets/components/assets/icon/orientedImageryFullSuperimpose24.json +1 -0
- package/assets/components/assets/icon/orientedImageryFullSuperimpose32.json +1 -0
- package/assets/components/assets/icon/orientedImageryHalfSuperimpose16.json +1 -0
- package/assets/components/assets/icon/orientedImageryHalfSuperimpose24.json +1 -0
- package/assets/components/assets/icon/orientedImageryHalfSuperimpose32.json +1 -0
- package/assets/components/assets/icon/orientedImagerySceneOnly16.json +1 -0
- package/assets/components/assets/icon/orientedImagerySceneOnly24.json +1 -0
- package/assets/components/assets/icon/orientedImagerySceneOnly32.json +1 -0
- package/assets/components/assets/icon/parquetFeatureLayer16.json +1 -0
- package/assets/components/assets/icon/parquetFeatureLayer24.json +1 -0
- package/assets/components/assets/icon/parquetFeatureLayer32.json +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{1dd1af5978e40295fb62.js → 017f50aae082d6664cfe.js} +1 -1
- package/assets/esri/core/workers/chunks/{325bfac7cfa28a6d568f.js → 0e774f14ba274832f390.js} +1 -1
- package/assets/esri/core/workers/chunks/{66eea3f203c3ce98ec67.js → 13940660fe88cfc0d9f3.js} +1 -1
- package/assets/esri/core/workers/chunks/14c6419568d8a7a15cd6.js +1 -0
- package/assets/esri/core/workers/chunks/153dc2a0b08a0e44a881.js +1 -0
- package/assets/esri/core/workers/chunks/1bebf7202d5f94b15674.js +1 -0
- package/assets/esri/core/workers/chunks/{46ca0d8573450095fcca.js → 290163964ec7f05f96d6.js} +1 -1
- package/assets/esri/core/workers/chunks/{9250615c78f8570a9cda.js → 29615df388a0df022d8c.js} +1 -1
- package/assets/esri/core/workers/chunks/2a2981f0987dd1eaa75a.js +1 -0
- package/assets/esri/core/workers/chunks/{8b8b63be961eb73250a0.js → 32323b0e0fcecd8f640e.js} +1 -1
- package/assets/esri/core/workers/chunks/3a6678ee9990d7e83e15.js +1 -0
- package/assets/esri/core/workers/chunks/3eabc8af82512dc12355.js +1 -0
- package/assets/esri/core/workers/chunks/428561df7ba6f02e2d80.js +1 -0
- package/assets/esri/core/workers/chunks/{299b4eecd0288348c971.js → 45323491f9005629c602.js} +1 -1
- package/assets/esri/core/workers/chunks/{557e39e5156b313597f9.js → 4e314e7cf477ad54541d.js} +1 -1
- package/assets/esri/core/workers/chunks/{7c292f7b181f3b93352b.js → 4ef53455c8bc6efee80e.js} +1 -1
- package/assets/esri/core/workers/chunks/{86443e47ad99e555753a.js → 53246ce4d2c7d2d2fc62.js} +1 -1
- package/assets/esri/core/workers/chunks/5500dc39e11a0057ae16.js +1 -0
- package/assets/esri/core/workers/chunks/578ab400e1998d0bcd62.js +1 -0
- package/assets/esri/core/workers/chunks/{69a1cbf0af059548f96a.js → 64daa2a714e59d22bbd4.js} +1 -1
- package/assets/esri/core/workers/chunks/{06ab868cced9c607840c.js → 65a9a94162985b54571e.js} +1 -1
- package/assets/esri/core/workers/chunks/6af77529c977d034d287.js +1 -0
- package/assets/esri/core/workers/chunks/{1f3a676e7a4eae5ad566.js → 767ea5b455b3823afd09.js} +1 -1
- package/assets/esri/core/workers/chunks/{466c250537415f12eb59.js → 798e8bf3a7ad83d810e3.js} +1 -1
- package/assets/esri/core/workers/chunks/{ed939fd5d3827a3f70e0.js → 81e3bd1a0634ddc2b833.js} +1 -1
- package/assets/esri/core/workers/chunks/8244b74e9c3a30d8d2f6.js +2 -0
- package/assets/esri/core/workers/chunks/{caf80facb0322be054ab.js → 8cc6a00c2991ce3fde67.js} +1 -1
- package/assets/esri/core/workers/chunks/a806ac351ef5da04c250.js +1 -0
- package/assets/esri/core/workers/chunks/{558606a1af22e4a0d536.js → aca6ff64495580d873d1.js} +1 -1
- package/assets/esri/core/workers/chunks/ad488985824fbb830ed6.js +1 -0
- package/assets/esri/core/workers/chunks/adac8583750783b9c599.js +2 -0
- package/assets/esri/core/workers/chunks/{74bdf678a4fb6befdac7.js → bfc2b75e4f7531dbd37f.js} +1 -1
- package/assets/esri/core/workers/chunks/c216cd5d6b5d4fe4bab3.js +2 -0
- package/assets/esri/core/workers/chunks/{d5e6ae5fd004bed33578.js → c528b04d42dffbb491da.js} +31 -21
- package/assets/esri/core/workers/chunks/ca4245414d8ecd217f9d.js +1 -0
- package/assets/esri/core/workers/chunks/{7a3b05e25de2ff150f38.js → cc479daacd2cf715baa8.js} +1 -1
- package/assets/esri/core/workers/chunks/{1252da05832e576d4def.js → d1ccc5f2d8892328ab01.js} +2 -2
- package/assets/esri/core/workers/chunks/{3aebbed6d4fd1b993a35.js → d2dd6e252d5fecfc0f83.js} +1 -1
- package/assets/esri/core/workers/chunks/{107550695896806c2306.js → d41fe5a248221c0a1714.js} +1 -1
- package/assets/esri/core/workers/chunks/d561dc933d8fe1672d85.js +1 -0
- package/assets/esri/core/workers/chunks/daec09750a5a70cdb0f0.js +2 -0
- package/assets/esri/core/workers/chunks/de41c3f5b34c49175833.js +1 -0
- package/assets/esri/core/workers/chunks/e9dcc3e9dbafe9bbed84.js +1 -0
- package/assets/esri/core/workers/chunks/{ce77a0e074c17dfd02bd.js → f142f892e9e896052ddc.js} +1 -1
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/GlobalIllumination.glsl.js +20 -19
- package/chunks/GlobalIlluminationBlur.glsl.js +15 -12
- package/chunks/GlobalIlluminationUpscale.glsl.js +4 -3
- package/config.js +1 -1
- package/kernel.js +1 -1
- package/layers/FeatureLayer.d.ts +1 -1
- package/layers/FeatureLayer.js +1 -1
- package/layers/MediaLayer.d.ts +1 -1
- package/layers/SceneLayer.d.ts +2 -2
- package/layers/VectorTileLayer.d.ts +2 -2
- package/layers/mixins/BlendLayer.d.ts +1 -1
- package/layers/save/featureLayerUtils.js +1 -1
- package/layers/support/FeatureFilter.d.ts +1 -1
- package/layers/support/FeatureReductionSelection.d.ts +1 -1
- package/layers/support/arcgisLayers.js +1 -1
- package/layers/support/fetchService.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/layers/support/layersLoader.js +1 -1
- package/package.json +2 -2
- package/renderers/FlowRenderer.d.ts +2 -2
- package/smartMapping/raster/renderers/flow.d.ts +2 -2
- package/smartMapping/symbology/flow.d.ts +2 -2
- package/smartMapping/symbology/types.d.ts +2 -2
- package/support/revision.js +1 -1
- package/symbols/support/Symbol3DVerticalOffset.d.ts +2 -2
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/features/FeaturePipelineWorker.js +1 -1
- package/views/2d/layers/features/Processor.js +1 -1
- package/views/2d/layers/features/processor/AProcessorStrategy.js +1 -1
- package/views/2d/layers/features/processor/ClusterStrategy.js +1 -1
- package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderParquet.js +1 -1
- package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationBlur.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js +7 -0
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationUpscale.glsl.js +1 -1
- package/views/SceneView.d.ts +1 -1
- package/views/interactive/sketch/SketchTooltipOptions.d.ts +1 -1
- package/views/interactive/snapping/SnappingOptions.d.ts +3 -3
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.d.ts +29 -1
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
- package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +0 -5
- package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/inputUtils.js +1 -1
- package/widgets/BatchAttributeForm/types.d.ts +67 -0
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/Daylight.d.ts +1 -1
- package/widgets/Editor.d.ts +8 -8
- package/widgets/ElevationProfile.d.ts +1 -1
- package/widgets/FeatureTable/ActionColumn.d.ts +1 -1
- package/widgets/Sketch/SketchViewModel.d.ts +38 -38
- package/widgets/Sketch.d.ts +39 -39
- package/widgets/Slice.d.ts +1 -1
- package/widgets/UtilityNetworkTrace.d.ts +1 -1
- package/widgets/UtilityNetworkValidateTopology.d.ts +1 -1
- package/assets/esri/core/workers/chunks/18ebf1d3ed05c8057f7d.js +0 -1
- package/assets/esri/core/workers/chunks/2e8db0f05df2e38a14e1.js +0 -2
- package/assets/esri/core/workers/chunks/2f2cb40378399d7f5575.js +0 -1
- package/assets/esri/core/workers/chunks/413d2fa54508e6f42c74.js +0 -1
- package/assets/esri/core/workers/chunks/55b765c72d13b3b911f9.js +0 -1
- package/assets/esri/core/workers/chunks/70d8f5bdb452cee41536.js +0 -2
- package/assets/esri/core/workers/chunks/74fd31d5404a061bfaed.js +0 -1
- package/assets/esri/core/workers/chunks/7623778e065bc78ccbba.js +0 -1
- package/assets/esri/core/workers/chunks/7e4571162b86dad86d23.js +0 -2
- package/assets/esri/core/workers/chunks/9dd3ecee6c1c9c06edc4.js +0 -1
- package/assets/esri/core/workers/chunks/aea439d4c2308f88b295.js +0 -1
- package/assets/esri/core/workers/chunks/b8dda9e55caba0e2b4c2.js +0 -1
- package/assets/esri/core/workers/chunks/be70809bc6c718ade7df.js +0 -1
- package/assets/esri/core/workers/chunks/bfc988edc63ca28e5397.js +0 -2
- package/assets/esri/core/workers/chunks/d598d08dbf2796742e8c.js +0 -1
- package/assets/esri/core/workers/chunks/e078ff1f79d82d27497e.js +0 -1
- package/assets/esri/core/workers/chunks/f3f685c937e9d7f5d4db.js +0 -1
- package/assets/esri/core/workers/chunks/fa3138dd8139008b430d.js +0 -1
- /package/assets/esri/core/workers/chunks/{2e8db0f05df2e38a14e1.js.LICENSE.txt → 8244b74e9c3a30d8d2f6.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{7e4571162b86dad86d23.js.LICENSE.txt → adac8583750783b9c599.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{70d8f5bdb452cee41536.js.LICENSE.txt → c216cd5d6b5d4fe4bab3.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{1252da05832e576d4def.js.LICENSE.txt → d1ccc5f2d8892328ab01.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{bfc988edc63ca28e5397.js.LICENSE.txt → daec09750a5a70cdb0f0.js.LICENSE.txt} +0 -0
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{Gamma as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{addMainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as i}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as n,If as
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{Gamma as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{addMainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as i}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as n,If as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as u}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{ColorAttachment1 as d}from"../views/webgl/enums.js";import{NoParameters as p}from"../views/webgl/NoParameters.js";import{ShaderBuilder as g}from"../views/webgl/ShaderBuilder.js";const f=.01,x=.008,v=.002,M=.5,y=.02,b=.1,w=.008,W=.012,D=.008,S=40,R=.095,F=.008,j=60,I=2,B=.0039,C=.25,z=.15,G=25,P=.15,T=.5,E=1,$=1,L=16;class O extends p{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.temporalSampleFrame=0,this.rayMarchMinReach=P,this.rayMarchMaxReach=T,this.rayMarchWorldReach=G,this.rayMarchMinReachEmissionWeight=E,this.rayMarchMaxReachEmissionWeight=$,this.rayMarchMaxSteps=L,this.colorBleedWeight=z}}function V(p){const z=new g,G=z.fragment;return z.include(e),z.include(i),r(G),G.include(a),G.include(t),G.include(u),z.include(o,p),G.uniforms.add(new h("normalMap",e=>e.normalTexture),new h("depthMap",e=>e.depthTexture),new h("lastFrameColorTexture",(e,a)=>a.reprojection.lastFrameColor?.getTexture()),new h("lastFrameDepthTexture",(e,a)=>a.reprojection.lastFrameDepth?.attachment),new m("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new m("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(d)),new c("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new c("view",e=>e.camera.viewMatrix),new l("accumulatedFrames",e=>e.accumulatedFrames),new l("temporalSampleFrame",e=>e.temporalSampleFrame),new l("scaleGlobalIllumination",e=>e.scaleGlobalIllumination)),G.uniforms.add(new l("rayMarchMinReach",e=>e.rayMarchMinReach),new l("rayMarchMaxReach",e=>e.rayMarchMaxReach),new l("rayMarchWorldReach",e=>e.rayMarchWorldReach),new l("rayMarchMinReachEmissionWeight",e=>e.rayMarchMinReachEmissionWeight),new l("rayMarchMaxReachEmissionWeight",e=>e.rayMarchMaxReachEmissionWeight),new l("rayMarchMaxSteps",e=>e.rayMarchMaxSteps),new l("colorBleedWeight",e=>e.colorBleedWeight)),p.hasEmission&&G.uniforms.add(new h("lastFrameEmissionTexture",(e,a)=>a.reprojection.lastFrameEmission?.attachment)),G.code.add(n`
|
|
3
3
|
float computeIdleColorBlendWeight(float accumulatedFrames) {
|
|
4
4
|
float idleColorBlendProgress = clamp(
|
|
5
|
-
accumulatedFrames / ${n.float(
|
|
5
|
+
accumulatedFrames / ${n.float(S)},
|
|
6
6
|
0.0,
|
|
7
7
|
1.0
|
|
8
8
|
);
|
|
9
9
|
return mix(
|
|
10
|
-
${n.float(w)},
|
|
11
10
|
${n.float(W)},
|
|
11
|
+
${n.float(D)},
|
|
12
12
|
idleColorBlendProgress
|
|
13
13
|
);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
float computeIdleOcclusionBlendWeight(float accumulatedFrames) {
|
|
17
17
|
float idleOcclusionBlendProgress = clamp(
|
|
18
|
-
accumulatedFrames / ${n.float(
|
|
18
|
+
accumulatedFrames / ${n.float(j)},
|
|
19
19
|
0.0,
|
|
20
20
|
1.0
|
|
21
21
|
);
|
|
22
22
|
return mix(
|
|
23
|
-
${n.float(S)},
|
|
24
23
|
${n.float(R)},
|
|
25
|
-
|
|
24
|
+
${n.float(F)},
|
|
25
|
+
pow(idleOcclusionBlendProgress, ${n.float(I)})
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -77,7 +77,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
77
77
|
|
|
78
78
|
return value * 2.0 - 1.0;
|
|
79
79
|
}
|
|
80
|
-
`),
|
|
80
|
+
`),z.outputs.add("fragGlobalIllumination","vec4",0),z.outputs.add("fragWeight","float",1),G.main.add(n`
|
|
81
81
|
float depth = depthFromTexture(depthMap, uv);
|
|
82
82
|
|
|
83
83
|
// Early out if depth is out of range, such as in the sky
|
|
@@ -126,7 +126,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
126
126
|
if (hasReprojectionMismatch) {
|
|
127
127
|
if (isLowQualityEdgePixel) {
|
|
128
128
|
steps = 1;
|
|
129
|
-
occlusionBlendWeight = ${n.float(
|
|
129
|
+
occlusionBlendWeight = ${n.float(x)};
|
|
130
130
|
resetColorHistory = true;
|
|
131
131
|
} else {
|
|
132
132
|
steps = 6;
|
|
@@ -135,15 +135,15 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
135
135
|
}
|
|
136
136
|
} else {
|
|
137
137
|
steps = 1;
|
|
138
|
-
if (historyOcclusionBlendWeight > ${n.float(
|
|
139
|
-
occlusionBlendWeight = ${n.float(
|
|
140
|
-
colorBlendWeight = ${n.float(
|
|
141
|
-
} else if (historyOcclusionBlendWeight > ${n.float(
|
|
138
|
+
if (historyOcclusionBlendWeight > ${n.float(M)}) {
|
|
139
|
+
occlusionBlendWeight = ${n.float(b)};
|
|
140
|
+
colorBlendWeight = ${n.float(w)};
|
|
141
|
+
} else if (historyOcclusionBlendWeight > ${n.float(y)}) {
|
|
142
142
|
occlusionBlendWeight = historyOcclusionBlendWeight - 0.05;
|
|
143
|
-
colorBlendWeight = ${n.float(
|
|
143
|
+
colorBlendWeight = ${n.float(w)};
|
|
144
144
|
} else {
|
|
145
|
-
occlusionBlendWeight = isScaledGlobalIllumination ? ${n.float(
|
|
146
|
-
colorBlendWeight = isScaledGlobalIllumination ? ${n.float(
|
|
145
|
+
occlusionBlendWeight = isScaledGlobalIllumination ? ${n.float(x)} : idleOcclusionBlendWeight;
|
|
146
|
+
colorBlendWeight = isScaledGlobalIllumination ? ${n.float(v)} : idleColorBlendWeight;
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -173,14 +173,14 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
173
173
|
);
|
|
174
174
|
|
|
175
175
|
if (hit.z > 0.0) {
|
|
176
|
-
${
|
|
176
|
+
${s(p.hasColor,n`
|
|
177
177
|
// Emission and color bleed - Reproject the current receiver and sampled hit to estimate bounced color
|
|
178
178
|
vec3 receiverColor = texture(lastFrameColorTexture, reprojectedCoordinate.xy).rgb;
|
|
179
179
|
|
|
180
180
|
vec2 hitReprojectedCoordinate = reprojectionCoordinate(hit);
|
|
181
181
|
vec3 sourceColor = texture(lastFrameColorTexture, hitReprojectedCoordinate).rgb;
|
|
182
182
|
vec3 sourceColorLinear = linearizeGamma(sourceColor);
|
|
183
|
-
vec3 sourceEmission = ${
|
|
183
|
+
vec3 sourceEmission = ${s(p.hasEmission,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz","vec3(0.0)")};
|
|
184
184
|
|
|
185
185
|
float emissionWeight = mix(
|
|
186
186
|
rayMarchMinReachEmissionWeight,
|
|
@@ -204,7 +204,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
204
204
|
? randomDirectionSample.b * ${n.float(B)}
|
|
205
205
|
: 0.0;
|
|
206
206
|
|
|
207
|
-
${
|
|
207
|
+
${s(p.hasColor,n`
|
|
208
208
|
// Accumulate color
|
|
209
209
|
vec3 lastFrameColor = lastFrameGlobalIllumination.rgb;
|
|
210
210
|
float colorDitherScale = isScaledGlobalIllumination ? ${n.float(C)} : 1.0;
|
|
@@ -214,9 +214,10 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
214
214
|
`,n`
|
|
215
215
|
fragGlobalIllumination.rgb = vec3(0.0);
|
|
216
216
|
`)}
|
|
217
|
+
fragGlobalIllumination.rgb = quantizeGlobalIlluminationColor(fragGlobalIllumination.rgb);
|
|
217
218
|
|
|
218
219
|
// Accumulate occlusion
|
|
219
220
|
fragGlobalIllumination.a = mix(lastFrameGlobalIllumination.a + accumulationDither, fragGlobalIllumination.a, occlusionBlendWeight);
|
|
220
221
|
|
|
221
222
|
fragWeight = occlusionBlendWeight;
|
|
222
|
-
`),
|
|
223
|
+
`),z}const U=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationPassParameters:O,build:V,defaultColorBleedWeight:z,defaultRayMarchMaxReach:T,defaultRayMarchMaxReachEmissionWeight:$,defaultRayMarchMaxSteps:L,defaultRayMarchMinReach:P,defaultRayMarchMinReachEmissionWeight:E,defaultRayMarchWorldReach:G},Symbol.toStringTag,{value:"Module"}));export{U as G,O as a,V as b,T as c,z as d,$ as e,L as f,P as g,E as h,G as i};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as l}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{BooleanBindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/BooleanBindUniform.js";import{Float2DrawUniform as
|
|
2
|
+
import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as l}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{BooleanBindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/BooleanBindUniform.js";import{Float2DrawUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as c}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{ditherNoise as p}from"../views/3d/webgl-engine/shaders/ditherNoise.glsl.js";import{NoParameters as h}from"../views/webgl/NoParameters.js";import{ShaderBuilder as d}from"../views/webgl/ShaderBuilder.js";const f=4;class g extends h{constructor(){super(...arguments),this.blurSize=e()}}function b(){const e=new d,h=e.fragment;e.include(l),e.include(t),e.include(i);const g=(f+3)/2,b=1/(2*g*g);h.include(o),h.include(p,{useFloatBlend:!1}),h.include(c);const S=5e4;h.uniforms.add(new a("hasEmission",e=>e.hasEmission),new u("depthMap",e=>e.depthTexture),new u("normalMap",e=>e.normalTexture),new m("globalIlluminationTexture",e=>e.texture),new m("globalIlluminationWeightTexture",e=>e.weightTexture),new n("blurSize",e=>e.blurSize),new s("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new s("projScale",(e,l)=>{const o=l.camera.distance;return o>S?Math.max(0,e.projScale-(o-S)):e.projScale}));const v=.1,w=400,W=.03,I=.08,O=1.5;return h.code.add(r`
|
|
3
3
|
void accumulateBlurSample(
|
|
4
4
|
vec2 sampleUv,
|
|
5
5
|
float sampleOffset,
|
|
@@ -22,10 +22,10 @@ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{Sc
|
|
|
22
22
|
float normalSimilarityWeight = globalIlluminationNormalSimilarityWeight(sampleNormal, centerNormal);
|
|
23
23
|
float depthNormalCorrection = globalIlluminationDepthNormalCorrection(sampleNormal);
|
|
24
24
|
vec3 emission = sampleGlobalIllumination.rgb;
|
|
25
|
-
float emissionSpatialWeightMultiplier = isScaledGlobalIllumination ? ${r.float(
|
|
25
|
+
float emissionSpatialWeightMultiplier = isScaledGlobalIllumination ? ${r.float(w)} : 1.0;
|
|
26
26
|
|
|
27
27
|
float emissionWeight = exp(
|
|
28
|
-
-sampleOffset * sampleOffset * ${r.float(
|
|
28
|
+
-sampleOffset * sampleOffset * ${r.float(b)} * ${r.float(v)} * emissionSpatialWeightMultiplier
|
|
29
29
|
- depthDelta * depthDelta * depthSharpness * depthNormalCorrection
|
|
30
30
|
);
|
|
31
31
|
emissionWeight *= normalSimilarityWeight;
|
|
@@ -36,25 +36,28 @@ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{Sc
|
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
float occlusionSpatialKernelScale = centerOcclusionBlendWeight > ${r.float(
|
|
40
|
-
? ${r.float(
|
|
41
|
-
: ${r.float(
|
|
39
|
+
float occlusionSpatialKernelScale = centerOcclusionBlendWeight > ${r.float(W)}
|
|
40
|
+
? ${r.float(I)}
|
|
41
|
+
: ${r.float(O)};
|
|
42
42
|
float occlusionWeight = exp(-sampleOffset * sampleOffset * occlusionSpatialKernelScale - depthDelta * depthDelta * depthSharpness);
|
|
43
43
|
occlusionWeight *= normalSimilarityWeight;
|
|
44
44
|
occlusionWeightSum += occlusionWeight;
|
|
45
45
|
occlusionSum += occlusionWeight * sampleGlobalIllumination.a;
|
|
46
46
|
}
|
|
47
|
-
`),
|
|
47
|
+
`),h.main.add(r`
|
|
48
48
|
vec3 emissionSum = vec3(0.0);
|
|
49
49
|
float emissionWeightSum = 0.0;
|
|
50
50
|
|
|
51
51
|
vec4 centerGlobalIllumination = texture(globalIlluminationTexture, uv);
|
|
52
52
|
float centerOcclusionBlendWeight = texture(globalIlluminationWeightTexture, uv).r;
|
|
53
53
|
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
54
|
-
bool shouldReuseCenterOcclusion = isScaledGlobalIllumination && centerOcclusionBlendWeight <= ${r.float(
|
|
54
|
+
bool shouldReuseCenterOcclusion = isScaledGlobalIllumination && centerOcclusionBlendWeight <= ${r.float(W)};
|
|
55
55
|
bool shouldSkipLowQualityBlur = !hasEmission && shouldReuseCenterOcclusion;
|
|
56
56
|
if (shouldSkipLowQualityBlur) {
|
|
57
|
-
fragColor =
|
|
57
|
+
fragColor = vec4(
|
|
58
|
+
quantizeGlobalIlluminationColor(centerGlobalIllumination.rgb),
|
|
59
|
+
centerGlobalIllumination.a
|
|
60
|
+
);
|
|
58
61
|
return;
|
|
59
62
|
}
|
|
60
63
|
|
|
@@ -64,7 +67,7 @@ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{Sc
|
|
|
64
67
|
float occlusionWeightSum = 0.0;
|
|
65
68
|
|
|
66
69
|
float depthSharpness = globalIlluminationDepthSharpness(projScale, centerDepth);
|
|
67
|
-
for (int sampleOffset = -${r.int(
|
|
70
|
+
for (int sampleOffset = -${r.int(f)}; sampleOffset <= ${r.int(f)}; ++sampleOffset) {
|
|
68
71
|
float sampleOffsetFloat = float(sampleOffset);
|
|
69
72
|
vec2 sampleUv = uv + sampleOffsetFloat * blurSize;
|
|
70
73
|
accumulateBlurSample(
|
|
@@ -89,5 +92,5 @@ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{Sc
|
|
|
89
92
|
float dither = ditherNoise(vec4(blurredEmission, occlusion)) - 1./32768.0;
|
|
90
93
|
blurredEmission += isScaledGlobalIllumination ? 0.85 * dither : dither;
|
|
91
94
|
|
|
92
|
-
fragColor = vec4(blurredEmission, occlusion);
|
|
93
|
-
`),e}const
|
|
95
|
+
fragColor = vec4(quantizeGlobalIlluminationColor(blurredEmission), occlusion);
|
|
96
|
+
`),e}const S=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationBlurDrawParameters:g,build:b},Symbol.toStringTag,{value:"Module"}));export{S as G,g as a,b};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as o}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as o}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as h}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{NoParameters as u}from"../views/webgl/NoParameters.js";import{ShaderBuilder as s}from"../views/webgl/ShaderBuilder.js";const m=5e4,c=100;class g extends u{}function p(){const u=new s,g=u.fragment;return u.include(e),u.include(r),u.include(l),g.include(t),g.include(h),g.uniforms.add(new n("depthMap",e=>e.depthTexture),new n("normalMap",e=>e.normalTexture),new o("tex",e=>e.colorTexture),new o("globalIlluminationWeightTexture",e=>e.weightTexture),new a("projScale",(e,t)=>{const l=t.camera.distance;return l>m?Math.max(0,e.projScale-(l-m)):e.projScale})),g.code.add(i`
|
|
3
3
|
float computeDepthWeight(float sampleDepth, float centerDepth, float depthSharpness) {
|
|
4
4
|
float depthDelta = abs(sampleDepth - centerDepth);
|
|
5
5
|
return exp(-0.08 - depthDelta * depthDelta * depthSharpness);
|
|
@@ -14,7 +14,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
14
14
|
void sampleJointBilateralUpscale(vec2 sampleUv, out vec4 upscaledColor, out float upscaledWeight) {
|
|
15
15
|
float centerDepth = linearDepthFromTexture(depthMap, sampleUv);
|
|
16
16
|
vec3 centerNormal = normalFromTexture(normalMap, sampleUv);
|
|
17
|
-
float depthSharpness = ${i.float(
|
|
17
|
+
float depthSharpness = ${i.float(c)} * globalIlluminationDepthSharpness(projScale, centerDepth, centerNormal);
|
|
18
18
|
|
|
19
19
|
vec2 lowResTextureSize = vec2(textureSize(tex, 0));
|
|
20
20
|
vec2 texelPosition = sampleUv * lowResTextureSize - 0.5;
|
|
@@ -78,4 +78,5 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
78
78
|
weight11 * jointBilateralWeight11
|
|
79
79
|
) / jointBilateralWeightSum;
|
|
80
80
|
}
|
|
81
|
-
`),
|
|
81
|
+
`),u.outputs.add("fragColor","vec4",0),u.outputs.add("fragWeight","float",1),g.main.add(i`sampleJointBilateralUpscale(uv, fragColor, fragWeight);
|
|
82
|
+
fragColor.rgb = quantizeGlobalIlluminationColor(fragColor.rgb);`),u}const d=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationUpscaleDrawParameters:g,build:p},Symbol.toStringTag,{value:"Module"}));export{d as G,g as a,p as b};
|
package/config.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.1.0-next.
|
|
2
|
+
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.1.0-next.119";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
|
package/kernel.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.
|
|
2
|
+
import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.119",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
|
package/layers/FeatureLayer.d.ts
CHANGED
|
@@ -1189,7 +1189,7 @@ export abstract class __FeatureLayerSansType extends FeatureLayerSuperclass {
|
|
|
1189
1189
|
* // Wait for a stable state.
|
|
1190
1190
|
* await whenOnce(() => !layer.reloading);
|
|
1191
1191
|
*/
|
|
1192
|
-
|
|
1192
|
+
get reloading(): boolean;
|
|
1193
1193
|
/**
|
|
1194
1194
|
* The renderer assigned to the layer. The renderer defines how to
|
|
1195
1195
|
* visualize each feature in the layer. Depending on the renderer type,
|
package/layers/FeatureLayer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{__addDisposableResource as e,__disposeResources as t,__decorate as r}from"tslib";import i from"../PopupTemplate.js";import o from"../request.js";import{ClonableMixin as s}from"../core/Clonable.js";import a from"../core/Collection.js";import n from"../core/Error.js";import{disposable as l,makeHandle as p,abortHandle as u}from"../core/handleUtils.js";import{clone as d}from"../core/lang.js";import y from"../core/Logger.js";import{destroyMaybe as c}from"../core/maybe.js";import{MultiOriginJSONSupportMixin as m}from"../core/MultiOriginJSONSupport.js";import{setDeepValue as h}from"../core/object.js";import{debounce as f,throwIfAbortError as b,whenOrAbort as g,onAbort as w}from"../core/promiseUtils.js";import{sqlAnd as v}from"../core/sql.js";import{property as F,subclass as T}from"../core/accessorSupport/decorators.js";import{excludeTables as j}from"../core/accessorSupport/layerContainerType.js";import S from"../form/FormTemplate.js";import I from"../geometry/SpatialReference.js";import E from"../graphic/FeatureGraphicOrigin.js";import L from"./Layer.js";import{MemorySource as D}from"./graphics/sources/MemorySource.js";import{APIKeyMixin as _}from"./mixins/APIKeyMixin.js";import{ArcGISService as C}from"./mixins/ArcGISService.js";import{BlendLayer as P}from"./mixins/BlendLayer.js";import{CustomParametersMixin as O}from"./mixins/CustomParametersMixin.js";import{DisplayFilteredLayer as x}from"./mixins/DisplayFilteredLayer.js";import{EditBusLayer as q}from"./mixins/EditBusLayer.js";import{FeatureEffectLayer as M}from"./mixins/FeatureEffectLayer.js";import{FeatureLayerBase as A}from"./mixins/FeatureLayerBase.js";import{FeatureReductionLayer as R}from"./mixins/FeatureReductionLayer.js";import{OperationalLayer as Q}from"./mixins/OperationalLayer.js";import{OrderedLayer as U}from"./mixins/OrderedLayer.js";import{PortalLayer as V}from"./mixins/PortalLayer.js";import{PublishableLayer as N}from"./mixins/PublishableLayer.js";import{RefreshableLayer as G}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as J}from"./mixins/ScaleRangeLayer.js";import{TemporalLayer as B}from"./mixins/TemporalLayer.js";import{TrackableLayer as W}from"./mixins/TrackableLayer.js";import{titleFromUrlAndName as H,parse as Z,cleanTitle as $}from"./support/arcgisLayerUrl.js";import{attributeTableTemplate as k,id as z,labelsVisible as K,opacityDrawingInfo as X,legendEnabled as Y,listMode as ee,popupEnabled as te,screenSizePerspectiveEnabled as re}from"./support/commonProperties.js";import{ensureLayerCredential as ie,computeEffectiveEditingEnabled as oe,readGlobalIdField as se,readObjectIdField as ae,createDefaultRenderer as ne,addAttachment as le,updateAttachment as pe,applyEdits as ue,uploadAssets as de,createQuery as ye,deleteAttachments as ce,fetchRecomputedExtents as me,getFeatureType as he,getFieldDomain as fe,queryAttachments as be,queryObjectIds as ge,queryFeatureCount as we,queryExtent as ve,queryRelatedFeatures as Fe,queryRelatedFeaturesCount as Te,validateBinsQuery as je,hasDataChanged as Se,geometryTypeKebabDict as Ie}from"./support/featureLayerUtils.js";import Ee from"./support/FeatureTemplate.js";import Le from"./support/FeatureType.js";import De from"./support/FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as _e,fieldConfigurationsFromPopupTemplate as Ce,fieldConfigurationsFromFields as Pe}from"./support/fieldConfigUtils.js";import{defineFieldProperties as Oe}from"./support/fieldProperties.js";import{fixRendererFields as xe,fixTimeInfoFields as qe}from"./support/fieldUtils.js";import Me from"./support/LabelClass.js";import{reader as Ae}from"./support/labelingInfo.js";import{getFeatureLayerCapabilities as Re}from"./support/serviceCapabilitiesUtils.js";import Qe from"./support/SymbolLayerDrawing.js";import Ue from"./support/TimeInfo.js";import Ve from"./support/TitleCreator.js";import{serviceSupportsSpatialReference as Ne}from"./support/versionUtils.js";import{read as Ge}from"../renderers/support/jsonUtils.js";import{loadStyleRenderer as Je}from"../renderers/support/styleUtils.js";import{webSceneRendererTypes as Be,rendererTypes as We}from"../renderers/support/typeUtils.js";import He from"../rest/layerSources/DynamicDataLayer.js";import Ze from"../rest/support/FeatureSet.js";import $e from"../rest/support/Query.js";import{isNumber as ke}from"../support/guards.js";import{createPopupTemplate as ze}from"../support/popupUtils.js";import{symbolTypes as Ke}from"../symbols/support/typeUtils.js";import{opacityToTransparency as Xe}from"../webdoc/support/opacityUtils.js";import{addLayerUnsupportedError as Ye}from"../webdoc/support/unsupportedErrors.js";import{reader as et}from"../core/accessorSupport/decorators/reader.js";import{writer as tt}from"../core/accessorSupport/decorators/writer.js";const rt="FeatureLayer";function it(e){return e&&e instanceof a}const ot=Oe();function st(e,t,r){const i=!!r?.writeLayerSchema;return{enabled:i,ignoreOrigin:i}}let at=class extends(A(R(M(N(q(x(P(U(B(W(J(G(C(Q(V(m(O(_(s(L)))))))))))))))))))){constructor(...e){super(...e),this._debounceReload=f(async()=>{if(this.destroyed||!this.loaded||this._hasMemorySource())return!1;const e=new AbortController,t=u(e);this.addHandles(t,"reload"),this._set("reloading",!0);try{const t=await this.reloadFromPortal({supportedTypes:["Feature Service","Feature Collection","Scene Service"]});return t&&(this.sourceJSON=null,await this.initLayerProperties(await this.createGraphicsSource(e.signal))),e.signal.throwIfAborted(),t}finally{this.removeHandles("reload"),this._set("reloading",!1)}}),this.attributeTableTemplate=null,this.charts=null,this.copyright=null,this.displayField=null,this.dynamicDataSource=null,this.fields=null,this.fieldsIndex=null,this.formTemplate=null,this.fullExtent=null,this.geometryType=null,this.graphicOrigin=new E(this),this.hasM=void 0,this.hasZ=void 0,this.infoFor3D=null,this.isTable=!1,this.labelsVisible=!0,this.labelingInfo=null,this.symbolLayerDrawing=null,this.legendEnabled=!0,this.objectIdField=null,this.operationalLayerType="ArcGISFeatureLayer",this.outFields=null,this.path=null,this.popupEnabled=!0,this.popupTemplate=null,this.reloading=!1,this.resourceInfo=null,this.screenSizePerspectiveEnabled=!0,this.spatialReference=I.WGS84,this.subtypeCode=null,this.subtypeField=null,this.subtypes=null,this.supportedSourceTypes=new Set(["Feature Layer","Oriented Imagery Layer","Table","Catalog Layer"]),this.templates=null,this.timeInfo=null,this.title=null,this.sublayerTitleMode="item-title",this.type="feature",this.typeIdField=null,this.types=null,this.visible=!0,this._debouncedSaveOperations=f(async(e,t,r)=>{const{save:i,saveAs:o}=await import("./save/featureLayerUtils.js");switch(e){case 0:return i(this,t);case 1:return o(this,r,t)}})}destroy(){this.source?.destroy()}normalizeCtorArgs(e,t){return"string"==typeof e?{url:e,...t}:e}load(e){const t=null!=e?e.signal:null;if(this.portalItem?.loaded&&this.source)return this.addResolvingPromise(this.createGraphicsSource(t).then(e=>this.initLayerProperties(e))),Promise.resolve(this);const r=this.loadFromPortal({supportedTypes:["Feature Service","Feature Collection","Scene Service"]},e).catch(b).then(async()=>{if(this.url&&null==this.layerId&&/FeatureServer|MapServer\/*$/i.test(this.url)){const e=await this._fetchFirstValidLayerId(t);null!=e&&(this.layerId=e)}if(!this.url&&!this._hasMemorySource())throw new n("feature-layer:missing-url-or-source","Feature layer must be created with either a url or a source");return this.initLayerProperties(await this.createGraphicsSource(t))}).then(()=>ie(this,"load",e));return this.addResolvingPromise(r),Promise.resolve(this)}reload(){return this._debounceReload()}get _titleCreator(){const e=this._get("_titleCreator");return c(e),new Ve({fieldsIndex:this.fieldsIndex,objectIdField:this.objectIdField,fields:this.fields,displayField:this.displayField,effectivePopupTemplate:this.popupTemplate??this.defaultPopupTemplate})}readCapabilities(e,t){return t=t.layerDefinition||t,Re(t,this.url)}get createQueryVersion(){return this.commitProperty("definitionExpression"),this.commitProperty("dynamicDataSource"),this.commitProperty("timeExtent"),this.commitProperty("timeOffset"),this.commitProperty("geometryType"),this.commitProperty("gdbVersion"),this.commitProperty("historicMoment"),this.commitProperty("returnZ"),this.commitProperty("capabilities"),this.commitProperty("returnM"),(this._get("createQueryVersion")??0)+1}get editingEnabled(){return!(this.loaded&&!this.capabilities?.operations.supportsEditing)&&(this._isOverridden("editingEnabled")?this._get("editingEnabled"):this._hasMemorySource()||this.userHasEditingPrivileges)}set editingEnabled(e){this._overrideIfSome("editingEnabled",e)}readEditingEnabled(e,t){return this._readEditingEnabled(t,!1)}readEditingEnabledFromWebMap(e,t,r){return this._readEditingEnabled(t,!0,r)}writeEditingEnabled(e,t){this._writeEditingEnabled(e,t,!1)}writeEditingEnabledToWebMap(e,t,r,i){this._writeEditingEnabled(e,t,!0,i)}get effectiveEditingEnabled(){return oe(this)}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._hasMemorySource())return;if(this._override("fieldConfigurations",e),!this.loaded)return;const t=_e(this,e);t&&this._set("popupTemplate",t)}get fieldConfigurations(){if(!this._hasMemorySource())return this._isOverridden("fieldConfigurations")?this._get("fieldConfigurations"):Ce(this)||null}readIsTable(e,t){return"Table"===(t=t?.layerDefinition??t).type||!t.geometryType}writeIsTable(e,t,r,i){i?.writeLayerSchema&&h(r,e?"Table":"Feature Layer",t)}readGlobalIdField(e,t){return se(t.layerDefinition||t)}readObjectIdField(e,t){return ae(t.layerDefinition||t)}writePopupTemplate(e,t,r,i){e&&(t[r]=e.toJSON({...i,writeFieldFormat:!i?.writeLayerSchema}))}get defaultPopupTemplate(){return this.createPopupTemplate()}set renderer(e){xe(e,this.fieldsIndex),this._set("renderer",e)}readRenderer(e,t,r){t=t.layerDefinition||t;const i=t.drawingInfo?.renderer;if(i){const e=Ge(i,t,r)??void 0;return e||y.getLogger(this).error("Failed to create renderer",{rendererDefinition:t.drawingInfo.renderer,layer:this,context:r}),e}return ne(t,r)}get source(){return this._get("source")}set source(e){e||(e=null);const t=this._get("source");t!==e&&((Array.isArray(e)||e instanceof a)&&(e=new D({layer:this,items:e})),it(t)&&this._resetMemorySource(t),it(e)&&this._initMemorySource(e),this._set("source",e))}readSource(e,t){const r=Ze.fromJSON(t.featureSet);return new D({layer:this,items:r?.features??[]})}readTemplates(e,t){const r=t.editFieldsInfo,i=r?.creatorField,o=r?.editorField;return e=e?.map(e=>Ee.fromJSON(e)),this._fixTemplates(e,i),this._fixTemplates(e,o),e}readTitle(e,t){const r=t.layerDefinition?.name??t.name,i=t.title||t.layerDefinition?.title;if(r){if("item-title"===this.sublayerTitleMode)return this.url?H(this.url,r):r;let e=r;if(!e&&this.url){const t=Z(this.url);null!=t&&(e=t.title)}if(!e)return;const t=this.portalItem?.title;return"item-title-and-service-name"===this.sublayerTitleMode&&t&&t!==e&&(e=t+" - "+e),$(e)}if("item-title"===this.sublayerTitleMode&&i)return i}readTitleFromWebMap(e,t){return t.title||t.layerDefinition?.name}readTypeIdField(e,t){let r=(t=t.layerDefinition||t).typeIdField;if(r&&t.fields){r=r.toLowerCase();const e=t.fields.find(e=>e.name.toLowerCase()===r);e&&(r=e.name)}return r}readTypes(e,t){e=(t=t.layerDefinition||t).types;const r=t.editFieldsInfo,i=r?.creatorField,o=r?.editorField;return e?.map(e=>(e=Le.fromJSON(e),this._fixTemplates(e.templates,i),this._fixTemplates(e.templates,o),e))}readVisible(e,t){return null!=t.layerDefinition?.defaultVisibility?!!t.layerDefinition.defaultVisibility:null!=t.visibility?!!t.visibility:void 0}async addAttachment(e,t){const r=await le(this,e,t,rt);return this.lastEditsEventDate=new Date,r}async updateAttachment(e,t,r){const i=await pe(this,e,t,r,rt);return this.lastEditsEventDate=new Date,i}async applyEdits(e,t){return ue(this,e,t)}async uploadAssets(e,t){return de(this,e,t)}createFieldConfigurations(){return Pe(this)}createPopupTemplate(e){return ze(this,e)}async createGraphicsSource(r){const i={stack:[],error:void 0,hasError:!1};try{if(this._hasMemorySource()&&this.source)return this.source.load({signal:r});const{default:t}=await g(import("./graphics/sources/FeatureLayerSource.js"),r),o=new t({layer:this,supportedSourceTypes:this.supportedSourceTypes});e(i,l(w(r,()=>o.cancelLoad())??p()),!1);return await o.load({signal:r}),o}catch(o){i.error=o,i.hasError=!0}finally{t(i)}}createQuery(){const e=ye(this);e.dynamicDataSource=this.dynamicDataSource;const t=null!=this.subtypeCode?`${this.subtypeField} = ${this.subtypeCode}`:null,r=v(this.definitionExpression,t);return e.where=r||"1=1",e}async deleteAttachments(e,t){const r=await ce(this,e,t,rt);return this.lastEditsEventDate=new Date,r}async fetchRecomputedExtents(e){return me(this,e,rt)}async getFeatureTitle(e,t){return this._titleCreator.getTitle(this,e,t)}async getFeatureTitles(e,t){return this._titleCreator.getTitles(this,e,t)}getFeatureType(e){return he(this.types,this.typeIdField,e)}getFieldAlias(e){const t=this.getField(e);if(t)return this.getFieldConfiguration(t.name)?.alias||t.alias}getFieldConfiguration(e){return e=e.toLowerCase(),this.fieldConfigurations?.find(t=>t.name.toLowerCase()===e)}getFieldDomain(e,t){return fe(this,e,t,this.getField(e)?.domain??null)}async queryAttachments(e,t){return be(this,e,t,rt)}async queryFeatures(e,t){const r=await this.load(),i=await r.source.queryFeatures($e.from(e)??r.createQuery(),t),o=this.graphicOrigin;if(i?.features)for(const s of i.features)s.layer=s.sourceLayer=r,s.origin=o;return i}async queryObjectIds(e,t){return await ge(this,e,t,rt)}async queryFeatureCount(e,t){return we(this,e,t,rt)}async queryExtent(e,t){return ve(this,e,t,rt)}async queryRelatedFeatures(e,t){return Fe(this,e,t,rt)}async queryRelatedFeaturesCount(e,t){return Te(this,e,t,rt)}async queryPivot(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryPivot||!i?.operations?.supportsQueryPivot)throw new n(rt,"Layer source does not support queryPivot capability");const o=await import("../rest/support/PivotQuery.js"),s=await r.queryPivot(o.default.from(e),t),a=this.graphicOrigin;if(s?.features)for(const n of s.features)n.layer=n.sourceLayer=this,n.origin=a;return s}async queryTopFeatures(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopFeatures||!i?.query?.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryTopFeatures capability");const o=await import("../rest/support/TopFeaturesQuery.js"),s=await r.queryTopFeatures(o.default.from(e),t),a=this.graphicOrigin;if(s?.features)for(const n of s.features)n.layer=n.sourceLayer=this,n.origin=a;return s}async queryAttributeBins(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryAttributeBins)throw new n(rt,"Layer source does not support queryAttributeBins capability");je(e,i,rt);const o=await import("../rest/support/AttributeBinsQuery.js"),s=await r.queryAttributeBins(o.default.from(e),t),a=this.graphicOrigin;if(s.features)for(const n of s.features)n.layer=n.sourceLayer=this,n.origin=a;return s}async queryTopObjectIds(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopObjectIds||!i?.query.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryTopObjectIds capability");const o=await import("../rest/support/TopFeaturesQuery.js");return(await r.queryTopObjectIds(o.default.from(e),t)).filter(ke)}async queryTopFeaturesExtent(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopExtents||!i?.query?.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryTopExtents capability");const o=await import("../rest/support/TopFeaturesQuery.js");return r.queryTopExtents(o.default.from(e),t)}async queryTopFeatureCount(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopCount||!i?.query?.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryFeatureCount capability");const o=await import("../rest/support/TopFeaturesQuery.js");return r.queryTopCount(o.default.from(e),t)}read(e,t){const r=e.featureCollection;if((r||"Feature Collection"===e.type)&&(this.resourceInfo=e),r){const{layers:e,showLegend:i}=r;1===e?.length&&(super.read(e[0],t),null!=i&&super.read({showLegend:i},t))}super.read(e,t),"service"===t?.origin&&(["objectIdField","fields","timeInfo","dateFieldsTimeZone","uniqueIdFields"].forEach(e=>this.revertToOrigin(e,"service")),this.spatialReference||this.revertToOrigin("spatialReference","service"))}write(e,t){t={...t,origin:t?.origin??void 0,writeLayerSchema:t?.writeLayerSchema??this._hasMemorySource()};const{origin:r,layerContainerType:i}=t;if(this.dynamicDataSource)return Ye(t,this,"a dynamic data source cannot be written to web scenes, web maps and feature service items"),null;if(this.isTable){if(("web-map"===r||"web-scene"===r)&&"tables"!==i)return Ye(t,this,"a table source can only be written to tables"),null;if(this._hasMemorySource())return Ye(t,this,"an in-memory table source cannot be written to web scenes and web maps"),null}else if(this.loaded&&("web-map"===r||"web-scene"===r)&&"tables"===i)return Ye(t,this,"a non-table source cannot be written to tables in web maps or web scenes"),null;return super.write(e,t)}clone(){if(this._hasMemorySource())throw new n(rt,`FeatureLayer (title: ${this.title}, id: ${this.id}) created using in-memory source cannot be cloned`);return super.clone()}serviceSupportsSpatialReference(e){return!!this.loaded&&("memory"===this.source?.type||Ne(this,e))}async save(e){return this._debouncedSaveOperations(0,e)}async saveAs(e,t){return this._debouncedSaveOperations(1,t,e)}_readEditingEnabled(e,t,r){let i=e.layerDefinition?.capabilities;return i?this._hasEditingCapability(i):(i=e.capabilities,t&&"web-map"===r?.origin&&!this._hasMemorySource()&&i?this._hasEditingCapability(i):void 0)}_hasEditingCapability(e){return e.toLowerCase().split(",").map(e=>e.trim()).includes("editing")}_writeEditingEnabled(e,t,r,i){if(!e){const e=this.capabilities?.operations?.supportsSync?"Query,Sync":"Query";h("layerDefinition.capabilities",e,t),r&&!i?.writeLayerSchema&&(t.capabilities=e)}}_fetchFirstValidLayerId(e){return o(this.url??"",{query:{f:"json",...this.customParameters,token:this.apiKey},responseType:"json",signal:e}).then(e=>{const t=e.data;if(t)return this.applyPreferredHost(t),this.findFirstValidLayerId(t)})}async initLayerProperties(e){return this._set("source",e),e.sourceJSON&&(this.sourceJSON=e.sourceJSON,this.read(e.sourceJSON,{origin:"service",portalItem:this.portalItem,portal:this.portalItem?.portal,url:this.parsedUrl})),this._verifySource(),this._verifyFields(),xe(this.renderer,this.fieldsIndex),qe(this.timeInfo,this.fieldsIndex),this._hasMemorySource()&&"mesh"===this.geometryType&&(this.capabilities.query.supportsReturnMesh=!0),Je(this,{origin:"service"})}async hasDataChanged(){return Se(this)}async fetchPublishingStatus(){const e=this.source;return e?.fetchPublishingStatus?e.fetchPublishingStatus():"unavailable"}_verifyFields(){const e=this.parsedUrl?.path??"undefined";this.objectIdField||console.log("FeatureLayer: 'objectIdField' property is not defined (url: "+e+")"),this.isTable||this._hasMemorySource()||-1!==e.search(/\/FeatureServer\//i)||this.fields?.some(e=>"geometry"===e.type)||console.log("FeatureLayer: unable to find field of type 'geometry' in the layer 'fields' list. If you are using a map service layer, features will not have geometry (url: "+e+")")}_fixTemplates(e,t){e&&e.forEach(e=>{const r=e.prototype?.attributes;r&&t&&delete r[t]})}_verifySource(){if(this._hasMemorySource()){if(this.url)throw new n("feature-layer:mixed-source-and-url","FeatureLayer cannot be created with both an in-memory source and a url")}else if(!this.url)throw new n("feature-layer:source-or-url-required","FeatureLayer requires either a url, a valid portal item or a source")}_initMemorySource(e){e.forEach(e=>{e.layer=this,e.sourceLayer=this}),this.addHandles([e.on("after-add",e=>{e.item.layer=this,e.item.sourceLayer=this}),e.on("after-remove",e=>{e.item.layer=null,e.item.sourceLayer=null})],"fl-source")}_resetMemorySource(e){e.forEach(e=>{e.layer=null,e.sourceLayer=null}),this.removeHandles("fl-source")}_hasMemorySource(){return!(this.url||!this.source)}findFirstValidLayerId(e){const t=[...e.layers||[],...e.tables||[]];return t.find(({type:e})=>!e||this.supportedSourceTypes.has(e))?.id}};r([F({clonable:!1,readOnly:!0})],at.prototype,"_titleCreator",null),r([F(k)],at.prototype,"attributeTableTemplate",void 0),r([et("service","capabilities")],at.prototype,"readCapabilities",null),r([F({json:{origins:{"web-scene":{write:!1}},write:!0}})],at.prototype,"charts",void 0),r([F({readOnly:!0})],at.prototype,"createQueryVersion",null),r([F({json:{read:{source:"layerDefinition.copyrightText"}}})],at.prototype,"copyright",void 0),r([F({json:{read:{source:"layerDefinition.displayField"}}})],at.prototype,"displayField",void 0),r([F({types:Ke,readOnly:!0})],at.prototype,"defaultSymbol",void 0),r([F({type:He})],at.prototype,"dynamicDataSource",void 0),r([F({type:Boolean})],at.prototype,"editingEnabled",null),r([et(["portal-item","web-scene"],"editingEnabled",["layerDefinition.capabilities"])],at.prototype,"readEditingEnabled",null),r([et("web-map","editingEnabled",["capabilities","layerDefinition.capabilities"])],at.prototype,"readEditingEnabledFromWebMap",null),r([tt(["portal-item","web-scene"],"editingEnabled",{"layerDefinition.capabilities":{type:String}})],at.prototype,"writeEditingEnabled",null),r([tt("web-map","editingEnabled",{capabilities:{type:String},"layerDefinition.capabilities":{type:String}})],at.prototype,"writeEditingEnabledToWebMap",null),r([F({readOnly:!0})],at.prototype,"effectiveEditingEnabled",null),r([F({clonable:!1,readOnly:!0})],at.prototype,"featureTitleFields",null),r([F({type:[De],json:{name:"layerDefinition.fieldConfigurations",write:{overridePolicy(e,t,r){return{enabled:!r?.writeLayerSchema,ignoreOrigin:1===this.originIdOf(t)}}}}})],at.prototype,"fieldConfigurations",null),r([F({...ot.fields,json:{read:{source:"layerDefinition.fields"},origins:{service:{name:"fields"},"web-map":{write:{target:"layerDefinition.fields",overridePolicy:st}}}}})],at.prototype,"fields",void 0),r([F(ot.fieldsIndex)],at.prototype,"fieldsIndex",void 0),r([F({type:S,json:{name:"formInfo",write:!0,origins:{"web-scene":{read:!1,write:!1}}}})],at.prototype,"formTemplate",void 0),r([F({json:{read:{source:"layerDefinition.extent"}}})],at.prototype,"fullExtent",void 0),r([F({json:{origins:{"web-map":{write:{target:"layerDefinition.geometryType",overridePolicy:st,writer(e,t,r){const i=e?Ie.toJSON(e):null;i&&h(r,i,t)}}}},read:{source:"layerDefinition.geometryType",reader:Ie.read}}})],at.prototype,"geometryType",void 0),r([F({readOnly:!0,clonable:!1})],at.prototype,"graphicOrigin",void 0),r([F({json:{read:{source:"layerDefinition.hasM"}}})],at.prototype,"hasM",void 0),r([F({json:{read:{source:"layerDefinition.hasZ"}}})],at.prototype,"hasZ",void 0),r([F(z)],at.prototype,"id",void 0),r([F({readOnly:!0,json:{origins:{service:{read:!0}},read:!1}})],at.prototype,"infoFor3D",void 0),r([F({json:{origins:{"web-map":{write:{target:"layerDefinition.type"}}}}})],at.prototype,"isTable",void 0),r([et("service","isTable",["type","geometryType"]),et("isTable",["layerDefinition.type","layerDefinition.geometryType"])],at.prototype,"readIsTable",null),r([tt("web-map","isTable")],at.prototype,"writeIsTable",null),r([F(K)],at.prototype,"labelsVisible",void 0),r([F({type:[Me],json:{origins:{service:{name:"drawingInfo.labelingInfo",read:Ae,write:!1}},name:"layerDefinition.drawingInfo.labelingInfo",read:Ae,write:{layerContainerTypes:j}}})],at.prototype,"labelingInfo",void 0),r([F({type:Qe,json:{name:"layerDefinition.drawingInfo.symbolLayerDrawing",write:!0,origins:{"web-scene":{write:!1}}}})],at.prototype,"symbolLayerDrawing",void 0),r([F((()=>{const e=d(X);return e.json.origins["portal-item"]={write:{target:"layerDefinition.drawingInfo.transparency",writer(e,t,r){h(r,Xe(e),t)}}},e})())],at.prototype,"opacity",void 0),r([F(Y)],at.prototype,"legendEnabled",void 0),r([F({type:["show","hide"],json:(()=>{const e=d(ee.json);return e.origins["portal-item"]={read:!1,write:!1},e})()})],at.prototype,"listMode",void 0),r([et("globalIdField",["layerDefinition.globalIdField","layerDefinition.fields"])],at.prototype,"readGlobalIdField",null),r([F({json:{origins:{"web-map":{write:{target:"layerDefinition.objectIdField",overridePolicy:st}}}}})],at.prototype,"objectIdField",void 0),r([et("objectIdField",["layerDefinition.objectIdField","layerDefinition.fields"])],at.prototype,"readObjectIdField",null),r([F({type:["ArcGISFeatureLayer"],json:{write:{target:"layerType",ignoreOrigin:!0,layerContainerTypes:j}}})],at.prototype,"operationalLayerType",void 0),r([F(ot.outFields)],at.prototype,"outFields",void 0),r([F({type:String,json:{origins:{"web-scene":{read:!0,write:!0}},read:!1}})],at.prototype,"path",void 0),r([F(te)],at.prototype,"popupEnabled",void 0),r([F({type:i,json:{name:"popupInfo",write:!0}})],at.prototype,"popupTemplate",void 0),r([tt("popupTemplate")],at.prototype,"writePopupTemplate",null),r([F({readOnly:!0})],at.prototype,"defaultPopupTemplate",null),r([F({types:We,json:{origins:{service:{write:{target:"drawingInfo.renderer",enabled:!1}},"web-scene":{types:Be,name:"layerDefinition.drawingInfo.renderer",write:{layerContainerTypes:j,overridePolicy:(e,t,r)=>({ignoreOrigin:r?.writeLayerSchema,layerContainerTypes:j})}}},write:{target:"layerDefinition.drawingInfo.renderer",overridePolicy:(e,t,r)=>({ignoreOrigin:r?.writeLayerSchema,layerContainerTypes:j})}}})],at.prototype,"renderer",null),r([et("service","renderer",["drawingInfo.renderer","defaultSymbol"]),et("renderer",["layerDefinition.drawingInfo.renderer","layerDefinition.defaultSymbol"])],at.prototype,"readRenderer",null),r([F()],at.prototype,"resourceInfo",void 0),r([F((()=>{const e=d(re);return e.json.origins["portal-item"]={read:!1,write:!1},e})())],at.prototype,"screenSizePerspectiveEnabled",void 0),r([F({clonable:!1})],at.prototype,"source",null),r([et("portal-item","source",["featureSet"]),et("web-map","source",["featureSet"])],at.prototype,"readSource",null),r([F({json:{read:{source:"layerDefinition.extent.spatialReference"}}})],at.prototype,"spatialReference",void 0),r([F({type:Number})],at.prototype,"subtypeCode",void 0),r([F({readOnly:!1})],at.prototype,"subtypeField",void 0),r([F({readOnly:!1})],at.prototype,"subtypes",void 0),r([F({type:[Ee]})],at.prototype,"templates",void 0),r([et("templates",["editFieldsInfo","creatorField","editorField","templates"])],at.prototype,"readTemplates",null),r([F({type:Ue})],at.prototype,"timeInfo",void 0),r([F()],at.prototype,"title",void 0),r([et("service","title",["name"]),et("portal-item","title",["layerDefinition.title","layerDefinition.name","title"])],at.prototype,"readTitle",null),r([et("web-map","title",["layerDefinition.name","title"])],at.prototype,"readTitleFromWebMap",null),r([F({type:String})],at.prototype,"sublayerTitleMode",void 0),r([F({json:{read:!1}})],at.prototype,"type",void 0),r([F({type:String})],at.prototype,"typeIdField",void 0),r([et("service","typeIdField"),et("typeIdField",["layerDefinition.typeIdField"])],at.prototype,"readTypeIdField",null),r([F({type:[Le]})],at.prototype,"types",void 0),r([et("service","types",["types"]),et("types",["layerDefinition.types"])],at.prototype,"readTypes",null),r([F({type:Boolean,json:{origins:{"portal-item":{write:{target:"layerDefinition.defaultVisibility",layerContainerTypes:j}}}}})],at.prototype,"visible",void 0),r([et("portal-item","visible",["visibility","layerDefinition.defaultVisibility"])],at.prototype,"readVisible",null),at=r([T("esri.layers.FeatureLayer")],at);export{at as default};
|
|
2
|
+
import{__addDisposableResource as e,__disposeResources as t,__decorate as r}from"tslib";import i from"../PopupTemplate.js";import o from"../request.js";import{ClonableMixin as s}from"../core/Clonable.js";import a from"../core/Collection.js";import n from"../core/Error.js";import{disposable as l,makeHandle as p,abortHandle as u}from"../core/handleUtils.js";import{clone as d}from"../core/lang.js";import y from"../core/Logger.js";import{destroyMaybe as c}from"../core/maybe.js";import{MultiOriginJSONSupportMixin as m}from"../core/MultiOriginJSONSupport.js";import{setDeepValue as h}from"../core/object.js";import{debounce as f,throwIfAbortError as b,whenOrAbort as g,onAbort as w}from"../core/promiseUtils.js";import{sqlAnd as v}from"../core/sql.js";import{property as F,subclass as T}from"../core/accessorSupport/decorators.js";import{excludeTables as j}from"../core/accessorSupport/layerContainerType.js";import S from"../form/FormTemplate.js";import I from"../geometry/SpatialReference.js";import E from"../graphic/FeatureGraphicOrigin.js";import L from"./Layer.js";import{MemorySource as D}from"./graphics/sources/MemorySource.js";import{APIKeyMixin as _}from"./mixins/APIKeyMixin.js";import{ArcGISService as C}from"./mixins/ArcGISService.js";import{BlendLayer as P}from"./mixins/BlendLayer.js";import{CustomParametersMixin as O}from"./mixins/CustomParametersMixin.js";import{DisplayFilteredLayer as x}from"./mixins/DisplayFilteredLayer.js";import{EditBusLayer as q}from"./mixins/EditBusLayer.js";import{FeatureEffectLayer as M}from"./mixins/FeatureEffectLayer.js";import{FeatureLayerBase as A}from"./mixins/FeatureLayerBase.js";import{FeatureReductionLayer as R}from"./mixins/FeatureReductionLayer.js";import{OperationalLayer as Q}from"./mixins/OperationalLayer.js";import{OrderedLayer as U}from"./mixins/OrderedLayer.js";import{PortalLayer as V}from"./mixins/PortalLayer.js";import{PublishableLayer as N}from"./mixins/PublishableLayer.js";import{RefreshableLayer as G}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as J}from"./mixins/ScaleRangeLayer.js";import{TemporalLayer as B}from"./mixins/TemporalLayer.js";import{TrackableLayer as W}from"./mixins/TrackableLayer.js";import{titleFromUrlAndName as H,parse as Z,cleanTitle as $}from"./support/arcgisLayerUrl.js";import{attributeTableTemplate as k,id as z,labelsVisible as K,opacityDrawingInfo as X,legendEnabled as Y,listMode as ee,popupEnabled as te,screenSizePerspectiveEnabled as re}from"./support/commonProperties.js";import{ensureLayerCredential as ie,computeEffectiveEditingEnabled as oe,readGlobalIdField as se,readObjectIdField as ae,createDefaultRenderer as ne,addAttachment as le,updateAttachment as pe,applyEdits as ue,uploadAssets as de,createQuery as ye,deleteAttachments as ce,fetchRecomputedExtents as me,getFeatureType as he,getFieldDomain as fe,queryAttachments as be,queryObjectIds as ge,queryFeatureCount as we,queryExtent as ve,queryRelatedFeatures as Fe,queryRelatedFeaturesCount as Te,validateBinsQuery as je,hasDataChanged as Se,geometryTypeKebabDict as Ie}from"./support/featureLayerUtils.js";import Ee from"./support/FeatureTemplate.js";import Le from"./support/FeatureType.js";import De from"./support/FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as _e,fieldConfigurationsFromPopupTemplate as Ce,fieldConfigurationsFromFields as Pe}from"./support/fieldConfigUtils.js";import{defineFieldProperties as Oe}from"./support/fieldProperties.js";import{fixRendererFields as xe,fixTimeInfoFields as qe}from"./support/fieldUtils.js";import Me from"./support/LabelClass.js";import{reader as Ae}from"./support/labelingInfo.js";import{getFeatureLayerCapabilities as Re}from"./support/serviceCapabilitiesUtils.js";import Qe from"./support/SymbolLayerDrawing.js";import Ue from"./support/TimeInfo.js";import Ve from"./support/TitleCreator.js";import{serviceSupportsSpatialReference as Ne}from"./support/versionUtils.js";import{read as Ge}from"../renderers/support/jsonUtils.js";import{loadStyleRenderer as Je}from"../renderers/support/styleUtils.js";import{webSceneRendererTypes as Be,rendererTypes as We}from"../renderers/support/typeUtils.js";import He from"../rest/layerSources/DynamicDataLayer.js";import Ze from"../rest/support/FeatureSet.js";import $e from"../rest/support/Query.js";import{isNumber as ke}from"../support/guards.js";import{createPopupTemplate as ze}from"../support/popupUtils.js";import{symbolTypes as Ke}from"../symbols/support/typeUtils.js";import{opacityToTransparency as Xe}from"../webdoc/support/opacityUtils.js";import{addLayerUnsupportedError as Ye}from"../webdoc/support/unsupportedErrors.js";import{reader as et}from"../core/accessorSupport/decorators/reader.js";import{writer as tt}from"../core/accessorSupport/decorators/writer.js";const rt="FeatureLayer";function it(e){return e&&e instanceof a}const ot=Oe();function st(e,t,r){const i=!!r?.writeLayerSchema;return{enabled:i,ignoreOrigin:i}}let at=class extends(A(R(M(N(q(x(P(U(B(W(J(G(C(Q(V(m(O(_(s(L)))))))))))))))))))){constructor(...e){super(...e),this._debounceReload=f(async()=>{if(this.destroyed||!this.loaded||this._hasMemorySource())return!1;const e=new AbortController,t=u(e);this.addHandles(t,"reload"),this._set("reloading",!0);try{const t=await this.reloadFromPortal({supportedTypes:["Feature Service","Feature Collection","Scene Service"]});return t&&(this.sourceJSON=null,await this.initLayerProperties(await this.createGraphicsSource(e.signal))),e.signal.throwIfAborted(),t}finally{this.removeHandles("reload"),this._set("reloading",!1)}}),this.attributeTableTemplate=null,this.charts=null,this.copyright=null,this.displayField=null,this.dynamicDataSource=null,this.fields=null,this.fieldsIndex=null,this.formTemplate=null,this.fullExtent=null,this.geometryType=null,this.graphicOrigin=new E(this),this.hasM=void 0,this.hasZ=void 0,this.infoFor3D=null,this.isTable=!1,this.labelsVisible=!0,this.labelingInfo=null,this.symbolLayerDrawing=null,this.legendEnabled=!0,this.objectIdField=null,this.operationalLayerType="ArcGISFeatureLayer",this.outFields=null,this.path=null,this.popupEnabled=!0,this.popupTemplate=null,this.reloading=!1,this.resourceInfo=null,this.screenSizePerspectiveEnabled=!0,this.spatialReference=I.WGS84,this.subtypeCode=null,this.subtypeField=null,this.subtypes=null,this.supportedSourceTypes=new Set(["Feature Layer","Oriented Imagery Layer","Table","Catalog Layer"]),this.templates=null,this.timeInfo=null,this.title=null,this.sublayerTitleMode="item-title",this.type="feature",this.typeIdField=null,this.types=null,this.visible=!0,this._debouncedSaveOperations=f(async(e,t,r)=>{const{save:i,saveAs:o}=await import("./save/featureLayerUtils.js");switch(e){case 0:return i(this,t);case 1:return o(this,r,t)}})}destroy(){this.source?.destroy()}normalizeCtorArgs(e,t){return"string"==typeof e?{url:e,...t}:e}load(e){const t=null!=e?e.signal:null;if(this.portalItem?.loaded&&this.source)return this.addResolvingPromise(this.createGraphicsSource(t).then(e=>this.initLayerProperties(e))),Promise.resolve(this);const r=this.loadFromPortal({supportedTypes:["Feature Service","Feature Collection","Scene Service"]},e).catch(b).then(async()=>{if(this.url&&null==this.layerId&&/FeatureServer|MapServer\/*$/i.test(this.url)){const e=await this._fetchFirstValidLayerId(t);null!=e&&(this.layerId=e)}if(!this.url&&!this._hasMemorySource())throw new n("feature-layer:missing-url-or-source","Feature layer must be created with either a url or a source");return this.initLayerProperties(await this.createGraphicsSource(t))}).then(()=>ie(this,"load",e));return this.addResolvingPromise(r),Promise.resolve(this)}reload(){return this._debounceReload()}get _titleCreator(){const e=this._get("_titleCreator");return c(e),new Ve({fieldsIndex:this.fieldsIndex,objectIdField:this.objectIdField,fields:this.fields,displayField:this.displayField,effectivePopupTemplate:this.popupTemplate??this.defaultPopupTemplate})}readCapabilities(e,t){return t=t.layerDefinition||t,Re(t,this.url)}get createQueryVersion(){return this.commitProperty("definitionExpression"),this.commitProperty("dynamicDataSource"),this.commitProperty("timeExtent"),this.commitProperty("timeOffset"),this.commitProperty("geometryType"),this.commitProperty("gdbVersion"),this.commitProperty("historicMoment"),this.commitProperty("returnZ"),this.commitProperty("capabilities"),this.commitProperty("returnM"),(this._get("createQueryVersion")??0)+1}get editingEnabled(){return!(this.loaded&&!this.capabilities?.operations.supportsEditing)&&(this._isOverridden("editingEnabled")?this._get("editingEnabled"):this._hasMemorySource()||this.userHasEditingPrivileges)}set editingEnabled(e){this._overrideIfSome("editingEnabled",e)}readEditingEnabled(e,t){return this._readEditingEnabled(t,!1)}readEditingEnabledFromWebMap(e,t,r){return this._readEditingEnabled(t,!0,r)}writeEditingEnabled(e,t){this._writeEditingEnabled(e,t,!1)}writeEditingEnabledToWebMap(e,t,r,i){this._writeEditingEnabled(e,t,!0,i)}get effectiveEditingEnabled(){return oe(this)}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._hasMemorySource())return;if(this._override("fieldConfigurations",e),!this.loaded)return;const t=_e(this,e);t&&this._set("popupTemplate",t)}get fieldConfigurations(){if(!this._hasMemorySource())return this._isOverridden("fieldConfigurations")?this._get("fieldConfigurations"):Ce(this)||null}readIsTable(e,t){return"Table"===(t=t?.layerDefinition??t).type||!t.geometryType}writeIsTable(e,t,r,i){i?.writeLayerSchema&&h(r,e?"Table":"Feature Layer",t)}readGlobalIdField(e,t){return se(t.layerDefinition||t)}readObjectIdField(e,t){return ae(t.layerDefinition||t)}writePopupTemplate(e,t,r,i){e&&(t[r]=e.toJSON({...i,writeFieldFormat:!i?.writeLayerSchema}))}get defaultPopupTemplate(){return this.createPopupTemplate()}set renderer(e){xe(e,this.fieldsIndex),this._set("renderer",e)}readRenderer(e,t,r){t=t.layerDefinition||t;const i=t.drawingInfo?.renderer;if(i){const e=Ge(i,t,r)??void 0;return e||y.getLogger(this).error("Failed to create renderer",{rendererDefinition:t.drawingInfo.renderer,layer:this,context:r}),e}return ne(t,r)}get source(){return this._get("source")}set source(e){e||(e=null);const t=this._get("source");t!==e&&((Array.isArray(e)||e instanceof a)&&(e=new D({layer:this,items:e})),it(t)&&this._resetMemorySource(t),it(e)&&this._initMemorySource(e),this._set("source",e))}readSource(e,t){const r=Ze.fromJSON(t.featureSet);return new D({layer:this,items:r?.features??[]})}readTemplates(e,t){const r=t.editFieldsInfo,i=r?.creatorField,o=r?.editorField;return e=e?.map(e=>Ee.fromJSON(e)),this._fixTemplates(e,i),this._fixTemplates(e,o),e}readTitle(e,t){const r=t.layerDefinition?.name??t.name,i=t.title||t.layerDefinition?.title;if(r){if("item-title"===this.sublayerTitleMode)return this.url?H(this.url,r):r;let e=r;if(!e&&this.url){const t=Z(this.url);null!=t&&(e=t.title)}if(!e)return;const t=this.portalItem?.title;return"item-title-and-service-name"===this.sublayerTitleMode&&t&&t!==e&&(e=t+" - "+e),$(e)}if("item-title"===this.sublayerTitleMode&&i)return i}readTitleFromWebMap(e,t){return t.title||t.layerDefinition?.name}readTypeIdField(e,t){let r=(t=t.layerDefinition||t).typeIdField;if(r&&t.fields){r=r.toLowerCase();const e=t.fields.find(e=>e.name.toLowerCase()===r);e&&(r=e.name)}return r}readTypes(e,t){e=(t=t.layerDefinition||t).types;const r=t.editFieldsInfo,i=r?.creatorField,o=r?.editorField;return e?.map(e=>(e=Le.fromJSON(e),this._fixTemplates(e.templates,i),this._fixTemplates(e.templates,o),e))}readVisible(e,t){return null!=t.layerDefinition?.defaultVisibility?!!t.layerDefinition.defaultVisibility:null!=t.visibility?!!t.visibility:void 0}async addAttachment(e,t){const r=await le(this,e,t,rt);return this.lastEditsEventDate=new Date,r}async updateAttachment(e,t,r){const i=await pe(this,e,t,r,rt);return this.lastEditsEventDate=new Date,i}async applyEdits(e,t){return ue(this,e,t)}async uploadAssets(e,t){return de(this,e,t)}createFieldConfigurations(){return Pe(this)}createPopupTemplate(e){return ze(this,e)}async createGraphicsSource(r){const i={stack:[],error:void 0,hasError:!1};try{if(this._hasMemorySource()&&this.source)return this.source.load({signal:r});const{default:t}=await g(import("./graphics/sources/FeatureLayerSource.js"),r),o=new t({layer:this,supportedSourceTypes:this.supportedSourceTypes});e(i,l(w(r,()=>o.cancelLoad())??p()),!1);return await o.load({signal:r}),o}catch(o){i.error=o,i.hasError=!0}finally{t(i)}}createQuery(){const e=ye(this);e.dynamicDataSource=this.dynamicDataSource;const t=null!=this.subtypeCode?`${this.subtypeField} = ${this.subtypeCode}`:null,r=v(this.definitionExpression,t);return e.where=r||"1=1",e}async deleteAttachments(e,t){const r=await ce(this,e,t,rt);return this.lastEditsEventDate=new Date,r}async fetchRecomputedExtents(e){return me(this,e,rt)}async getFeatureTitle(e,t){return this._titleCreator.getTitle(this,e,t)}async getFeatureTitles(e,t){return this._titleCreator.getTitles(this,e,t)}getFeatureType(e){return he(this.types,this.typeIdField,e)}getFieldAlias(e){const t=this.getField(e);if(t)return this.getFieldConfiguration(t.name)?.alias||t.alias}getFieldConfiguration(e){return e=e.toLowerCase(),this.fieldConfigurations?.find(t=>t.name.toLowerCase()===e)}getFieldDomain(e,t){return fe(this,e,t,this.getField(e)?.domain??null)}async queryAttachments(e,t){return be(this,e,t,rt)}async queryFeatures(e,t){const r=await this.load(),i=await r.source.queryFeatures($e.from(e)??r.createQuery(),t),o=this.graphicOrigin;if(i?.features)for(const s of i.features)s.layer=s.sourceLayer=r,s.origin=o;return i}async queryObjectIds(e,t){return await ge(this,e,t,rt)}async queryFeatureCount(e,t){return we(this,e,t,rt)}async queryExtent(e,t){return ve(this,e,t,rt)}async queryRelatedFeatures(e,t){return Fe(this,e,t,rt)}async queryRelatedFeaturesCount(e,t){return Te(this,e,t,rt)}async queryPivot(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryPivot||!i?.operations?.supportsQueryPivot)throw new n(rt,"Layer source does not support queryPivot capability");const o=await import("../rest/support/PivotQuery.js"),s=await r.queryPivot(o.default.from(e),t),a=this.graphicOrigin;if(s?.features)for(const n of s.features)n.layer=n.sourceLayer=this,n.origin=a;return s}async queryTopFeatures(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopFeatures||!i?.query?.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryTopFeatures capability");const o=await import("../rest/support/TopFeaturesQuery.js"),s=await r.queryTopFeatures(o.default.from(e),t),a=this.graphicOrigin;if(s?.features)for(const n of s.features)n.layer=n.sourceLayer=this,n.origin=a;return s}async queryAttributeBins(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryAttributeBins)throw new n(rt,"Layer source does not support queryAttributeBins capability");je(e,i,rt);const o=await import("../rest/support/AttributeBinsQuery.js"),s=await r.queryAttributeBins(o.default.from(e),t),a=this.graphicOrigin;if(s.features)for(const n of s.features)n.layer=n.sourceLayer=this,n.origin=a;return s}async queryTopObjectIds(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopObjectIds||!i?.query.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryTopObjectIds capability");const o=await import("../rest/support/TopFeaturesQuery.js");return(await r.queryTopObjectIds(o.default.from(e),t)).filter(ke)}async queryTopFeaturesExtent(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopExtents||!i?.query?.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryTopExtents capability");const o=await import("../rest/support/TopFeaturesQuery.js");return r.queryTopExtents(o.default.from(e),t)}async queryTopFeatureCount(e,t){const{source:r,capabilities:i}=await this.load();if(!r.queryTopCount||!i?.query?.supportsTopFeaturesQuery)throw new n(rt,"Layer source does not support queryFeatureCount capability");const o=await import("../rest/support/TopFeaturesQuery.js");return r.queryTopCount(o.default.from(e),t)}read(e,t){const r=e.featureCollection;if((r||"Feature Collection"===e.type)&&(this.resourceInfo=e),r){const{layers:e,showLegend:i}=r;1===e?.length&&(super.read(e[0],t),null!=i&&super.read({showLegend:i},t))}super.read(e,t),"service"===t?.origin&&(["objectIdField","fields","timeInfo","dateFieldsTimeZone","uniqueIdFields"].forEach(e=>this.revertToOrigin(e,"service")),this.spatialReference||this.revertToOrigin("spatialReference","service"))}write(e,t){t={...t,origin:t?.origin??void 0,writeLayerSchema:t?.writeLayerSchema??this._hasMemorySource()};const{origin:r,layerContainerType:i}=t;if(this.dynamicDataSource)return Ye(t,this,"a dynamic data source cannot be written to web scenes, web maps and feature service items"),null;if(this.isTable){if(("web-map"===r||"web-scene"===r)&&"tables"!==i)return Ye(t,this,"a table source can only be written to tables"),null;if(this._hasMemorySource())return Ye(t,this,"an in-memory table source cannot be written to web scenes and web maps"),null}else if(this.loaded&&("web-map"===r||"web-scene"===r)&&"tables"===i)return Ye(t,this,"a non-table source cannot be written to tables in web maps or web scenes"),null;return super.write(e,t)}clone(){if(this._hasMemorySource())throw new n(rt,`FeatureLayer (title: ${this.title}, id: ${this.id}) created using in-memory source cannot be cloned`);return super.clone()}serviceSupportsSpatialReference(e){return!!this.loaded&&("memory"===this.source?.type||Ne(this,e))}async save(e){return this._debouncedSaveOperations(0,e)}async saveAs(e,t){return this._debouncedSaveOperations(1,t,e)}_readEditingEnabled(e,t,r){let i=e.layerDefinition?.capabilities;return i?this._hasEditingCapability(i):(i=e.capabilities,t&&"web-map"===r?.origin&&!this._hasMemorySource()&&i?this._hasEditingCapability(i):void 0)}_hasEditingCapability(e){return e.toLowerCase().split(",").map(e=>e.trim()).includes("editing")}_writeEditingEnabled(e,t,r,i){if(!e){const e=this.capabilities?.operations?.supportsSync?"Query,Sync":"Query";h("layerDefinition.capabilities",e,t),r&&!i?.writeLayerSchema&&(t.capabilities=e)}}_fetchFirstValidLayerId(e){return o(this.url??"",{query:{f:"json",...this.customParameters,token:this.apiKey},responseType:"json",signal:e}).then(e=>{const t=e.data;if(t)return this.applyPreferredHost(t),this.findFirstValidLayerId(t)})}async initLayerProperties(e){return this._set("source",e),e.sourceJSON&&(this.sourceJSON=e.sourceJSON,this.read(e.sourceJSON,{origin:"service",portalItem:this.portalItem,portal:this.portalItem?.portal,url:this.parsedUrl})),this._verifySource(),this._verifyFields(),xe(this.renderer,this.fieldsIndex),qe(this.timeInfo,this.fieldsIndex),this._hasMemorySource()&&"mesh"===this.geometryType&&(this.capabilities.query.supportsReturnMesh=!0),Je(this,{origin:"service"})}async hasDataChanged(){return Se(this)}async fetchPublishingStatus(){const e=this.source;return e?.fetchPublishingStatus?e.fetchPublishingStatus():"unavailable"}_verifyFields(){const e=this.parsedUrl?.path??"undefined";this.objectIdField||console.log("FeatureLayer: 'objectIdField' property is not defined (url: "+e+")"),this.isTable||this._hasMemorySource()||-1!==e.search(/\/FeatureServer\//i)||this.fields?.some(e=>"geometry"===e.type)||console.log("FeatureLayer: unable to find field of type 'geometry' in the layer 'fields' list. If you are using a map service layer, features will not have geometry (url: "+e+")")}_fixTemplates(e,t){e&&e.forEach(e=>{const r=e.prototype?.attributes;r&&t&&delete r[t]})}_verifySource(){if(this._hasMemorySource()){if(this.url)throw new n("feature-layer:mixed-source-and-url","FeatureLayer cannot be created with both an in-memory source and a url")}else if(!this.url)throw new n("feature-layer:source-or-url-required","FeatureLayer requires either a url, a valid portal item or a source")}_initMemorySource(e){e.forEach(e=>{e.layer=this,e.sourceLayer=this}),this.addHandles([e.on("after-add",e=>{e.item.layer=this,e.item.sourceLayer=this}),e.on("after-remove",e=>{e.item.layer=null,e.item.sourceLayer=null})],"fl-source")}_resetMemorySource(e){e.forEach(e=>{e.layer=null,e.sourceLayer=null}),this.removeHandles("fl-source")}_hasMemorySource(){return!(this.url||!this.source)}findFirstValidLayerId(e){const t=[...e.layers||[],...e.tables||[]];return t.find(({type:e})=>!e||this.supportedSourceTypes.has(e))?.id}};r([F({clonable:!1,readOnly:!0})],at.prototype,"_titleCreator",null),r([F(k)],at.prototype,"attributeTableTemplate",void 0),r([et("service","capabilities")],at.prototype,"readCapabilities",null),r([F({json:{origins:{"web-scene":{write:!1}},write:!0}})],at.prototype,"charts",void 0),r([F({readOnly:!0})],at.prototype,"createQueryVersion",null),r([F({json:{read:{source:"layerDefinition.copyrightText"}}})],at.prototype,"copyright",void 0),r([F({json:{read:{source:"layerDefinition.displayField"}}})],at.prototype,"displayField",void 0),r([F({types:Ke,readOnly:!0})],at.prototype,"defaultSymbol",void 0),r([F({type:He})],at.prototype,"dynamicDataSource",void 0),r([F({type:Boolean})],at.prototype,"editingEnabled",null),r([et(["portal-item","web-scene"],"editingEnabled",["layerDefinition.capabilities"])],at.prototype,"readEditingEnabled",null),r([et("web-map","editingEnabled",["capabilities","layerDefinition.capabilities"])],at.prototype,"readEditingEnabledFromWebMap",null),r([tt(["portal-item","web-scene"],"editingEnabled",{"layerDefinition.capabilities":{type:String}})],at.prototype,"writeEditingEnabled",null),r([tt("web-map","editingEnabled",{capabilities:{type:String},"layerDefinition.capabilities":{type:String}})],at.prototype,"writeEditingEnabledToWebMap",null),r([F({readOnly:!0})],at.prototype,"effectiveEditingEnabled",null),r([F({clonable:!1,readOnly:!0})],at.prototype,"featureTitleFields",null),r([F({type:[De],json:{name:"layerDefinition.fieldConfigurations",write:{overridePolicy(e,t,r){return{enabled:!r?.writeLayerSchema,ignoreOrigin:1===this.originIdOf(t)}}}}})],at.prototype,"fieldConfigurations",null),r([F({...ot.fields,json:{read:{source:"layerDefinition.fields"},origins:{service:{name:"fields"},"web-map":{write:{target:"layerDefinition.fields",overridePolicy:st}}}}})],at.prototype,"fields",void 0),r([F(ot.fieldsIndex)],at.prototype,"fieldsIndex",void 0),r([F({type:S,json:{name:"formInfo",write:!0,origins:{"web-scene":{read:!1,write:!1}}}})],at.prototype,"formTemplate",void 0),r([F({json:{read:{source:"layerDefinition.extent"}}})],at.prototype,"fullExtent",void 0),r([F({json:{origins:{"web-map":{write:{target:"layerDefinition.geometryType",overridePolicy:st,writer(e,t,r){const i=e?Ie.toJSON(e):null;i&&h(r,i,t)}}}},read:{source:"layerDefinition.geometryType",reader:Ie.read}}})],at.prototype,"geometryType",void 0),r([F({readOnly:!0,clonable:!1})],at.prototype,"graphicOrigin",void 0),r([F({json:{read:{source:"layerDefinition.hasM"}}})],at.prototype,"hasM",void 0),r([F({json:{read:{source:"layerDefinition.hasZ"}}})],at.prototype,"hasZ",void 0),r([F(z)],at.prototype,"id",void 0),r([F({readOnly:!0,json:{origins:{service:{read:!0}},read:!1}})],at.prototype,"infoFor3D",void 0),r([F({json:{origins:{"web-map":{write:{target:"layerDefinition.type"}}}}})],at.prototype,"isTable",void 0),r([et("service","isTable",["type","geometryType"]),et("isTable",["layerDefinition.type","layerDefinition.geometryType"])],at.prototype,"readIsTable",null),r([tt("web-map","isTable")],at.prototype,"writeIsTable",null),r([F(K)],at.prototype,"labelsVisible",void 0),r([F({type:[Me],json:{origins:{service:{name:"drawingInfo.labelingInfo",read:Ae,write:!1}},name:"layerDefinition.drawingInfo.labelingInfo",read:Ae,write:{layerContainerTypes:j}}})],at.prototype,"labelingInfo",void 0),r([F({type:Qe,json:{name:"layerDefinition.drawingInfo.symbolLayerDrawing",write:!0,origins:{"web-scene":{write:!1}}}})],at.prototype,"symbolLayerDrawing",void 0),r([F((()=>{const e=d(X);return e.json.origins["portal-item"]={write:{target:"layerDefinition.drawingInfo.transparency",writer(e,t,r){h(r,Xe(e),t)}}},e})())],at.prototype,"opacity",void 0),r([F(Y)],at.prototype,"legendEnabled",void 0),r([F({type:["show","hide"],json:(()=>{const e=d(ee.json);return e.origins["portal-item"]={read:!1,write:!1},e})()})],at.prototype,"listMode",void 0),r([et("globalIdField",["layerDefinition.globalIdField","layerDefinition.fields"])],at.prototype,"readGlobalIdField",null),r([F({json:{origins:{"web-map":{write:{target:"layerDefinition.objectIdField",overridePolicy:st}}}}})],at.prototype,"objectIdField",void 0),r([et("objectIdField",["layerDefinition.objectIdField","layerDefinition.fields"])],at.prototype,"readObjectIdField",null),r([F({type:["ArcGISFeatureLayer"],json:{write:{target:"layerType",ignoreOrigin:!0,layerContainerTypes:j}}})],at.prototype,"operationalLayerType",void 0),r([F(ot.outFields)],at.prototype,"outFields",void 0),r([F({type:String,json:{origins:{"web-scene":{read:!0,write:!0}},read:!1}})],at.prototype,"path",void 0),r([F(te)],at.prototype,"popupEnabled",void 0),r([F({type:i,json:{name:"popupInfo",write:!0}})],at.prototype,"popupTemplate",void 0),r([tt("popupTemplate")],at.prototype,"writePopupTemplate",null),r([F({readOnly:!0})],at.prototype,"defaultPopupTemplate",null),r([F({readOnly:!0})],at.prototype,"reloading",void 0),r([F({types:We,json:{origins:{service:{write:{target:"drawingInfo.renderer",enabled:!1}},"web-scene":{types:Be,name:"layerDefinition.drawingInfo.renderer",write:{layerContainerTypes:j,overridePolicy:(e,t,r)=>({ignoreOrigin:r?.writeLayerSchema,layerContainerTypes:j})}}},write:{target:"layerDefinition.drawingInfo.renderer",overridePolicy:(e,t,r)=>({ignoreOrigin:r?.writeLayerSchema,layerContainerTypes:j})}}})],at.prototype,"renderer",null),r([et("service","renderer",["drawingInfo.renderer","defaultSymbol"]),et("renderer",["layerDefinition.drawingInfo.renderer","layerDefinition.defaultSymbol"])],at.prototype,"readRenderer",null),r([F()],at.prototype,"resourceInfo",void 0),r([F((()=>{const e=d(re);return e.json.origins["portal-item"]={read:!1,write:!1},e})())],at.prototype,"screenSizePerspectiveEnabled",void 0),r([F({clonable:!1})],at.prototype,"source",null),r([et("portal-item","source",["featureSet"]),et("web-map","source",["featureSet"])],at.prototype,"readSource",null),r([F({json:{read:{source:"layerDefinition.extent.spatialReference"}}})],at.prototype,"spatialReference",void 0),r([F({type:Number})],at.prototype,"subtypeCode",void 0),r([F({readOnly:!1})],at.prototype,"subtypeField",void 0),r([F({readOnly:!1})],at.prototype,"subtypes",void 0),r([F({type:[Ee]})],at.prototype,"templates",void 0),r([et("templates",["editFieldsInfo","creatorField","editorField","templates"])],at.prototype,"readTemplates",null),r([F({type:Ue})],at.prototype,"timeInfo",void 0),r([F()],at.prototype,"title",void 0),r([et("service","title",["name"]),et("portal-item","title",["layerDefinition.title","layerDefinition.name","title"])],at.prototype,"readTitle",null),r([et("web-map","title",["layerDefinition.name","title"])],at.prototype,"readTitleFromWebMap",null),r([F({type:String})],at.prototype,"sublayerTitleMode",void 0),r([F({json:{read:!1}})],at.prototype,"type",void 0),r([F({type:String})],at.prototype,"typeIdField",void 0),r([et("service","typeIdField"),et("typeIdField",["layerDefinition.typeIdField"])],at.prototype,"readTypeIdField",null),r([F({type:[Le]})],at.prototype,"types",void 0),r([et("service","types",["types"]),et("types",["layerDefinition.types"])],at.prototype,"readTypes",null),r([F({type:Boolean,json:{origins:{"portal-item":{write:{target:"layerDefinition.defaultVisibility",layerContainerTypes:j}}}}})],at.prototype,"visible",void 0),r([et("portal-item","visible",["visibility","layerDefinition.defaultVisibility"])],at.prototype,"readVisible",null),at=r([T("esri.layers.FeatureLayer")],at);export{at as default};
|
package/layers/MediaLayer.d.ts
CHANGED
|
@@ -104,7 +104,7 @@ export interface MediaLayerProperties extends LayerProperties, PortalLayerProper
|
|
|
104
104
|
* });
|
|
105
105
|
* ```
|
|
106
106
|
*
|
|
107
|
-
*
|
|
107
|
+
* <video src="https://developers.arcgis.com/javascript/latest/assets/references/core/layers/media-layer.webm" aria-label="screen-size-perspective" autoplay muted playsinline loop></video>
|
|
108
108
|
*
|
|
109
109
|
* @since 4.24
|
|
110
110
|
* @see [Sample - MediaLayer with images](https://developers.arcgis.com/javascript/latest/sample-code/layers-medialayer-images/)
|
package/layers/SceneLayer.d.ts
CHANGED
|
@@ -102,7 +102,7 @@ export interface SceneLayerProperties extends LayerProperties, APIKeyMixinProper
|
|
|
102
102
|
* This property is only supported for point scene layers with non-draped [Icon](https://developers.arcgis.com/javascript/latest/references/core/symbols/IconSymbol3DLayer/)
|
|
103
103
|
* or [Text](https://developers.arcgis.com/javascript/latest/references/core/symbols/TextSymbol3DLayer/) symbol layers.
|
|
104
104
|
*
|
|
105
|
-
* [
|
|
105
|
+
* [<video src="https://developers.arcgis.com/javascript/latest/assets/images/samples/city-points-declutter.webm" aria-label="declutter" autoplay muted playsinline loop></video>](https://developers.arcgis.com/javascript/latest/sample-code/visualization-point-styles/)
|
|
106
106
|
*
|
|
107
107
|
* > [!WARNING]
|
|
108
108
|
* >
|
|
@@ -732,7 +732,7 @@ export default class SceneLayer extends SceneLayerSuperclass {
|
|
|
732
732
|
* This property is only supported for point scene layers with non-draped [Icon](https://developers.arcgis.com/javascript/latest/references/core/symbols/IconSymbol3DLayer/)
|
|
733
733
|
* or [Text](https://developers.arcgis.com/javascript/latest/references/core/symbols/TextSymbol3DLayer/) symbol layers.
|
|
734
734
|
*
|
|
735
|
-
* [
|
|
735
|
+
* [<video src="https://developers.arcgis.com/javascript/latest/assets/images/samples/city-points-declutter.webm" aria-label="declutter" autoplay muted playsinline loop></video>](https://developers.arcgis.com/javascript/latest/sample-code/visualization-point-styles/)
|
|
736
736
|
*
|
|
737
737
|
* > [!WARNING]
|
|
738
738
|
* >
|
|
@@ -297,7 +297,7 @@ export interface VectorTileLayerEvents extends RefreshableLayerEvents, LayerEven
|
|
|
297
297
|
* "https://www.arcgis.com/sharing/rest/content/items/effe3475f05a4d608e66fd6eeb2113c0/resources/styles/root.json"
|
|
298
298
|
* );
|
|
299
299
|
* ```
|
|
300
|
-
*
|
|
300
|
+
* <video src="https://developers.arcgis.com/javascript/latest/assets/references/core/layers/layers-vectortiles-loadstyle.webm" aria-label="vectortiles-loadstyle" autoplay muted playsinline loop></video>
|
|
301
301
|
*
|
|
302
302
|
* ### Updating various properties of style layers
|
|
303
303
|
* Properties of [style layers](https://maplibre.org/maplibre-style-spec/layers/) in the VectorTileLayer's [current style](https://developers.arcgis.com/javascript/latest/references/core/layers/VectorTileLayer/#currentStyleInfo) can be changed
|
|
@@ -348,7 +348,7 @@ export interface VectorTileLayerEvents extends RefreshableLayerEvents, LayerEven
|
|
|
348
348
|
* const styleLayer = { style layer json object}
|
|
349
349
|
* layer.setStyleLayer(styleLayer, 0)
|
|
350
350
|
* ```
|
|
351
|
-
* [
|
|
351
|
+
* [<video src="https://developers.arcgis.com/javascript/latest/assets/references/core/layers/layers-vectortiles-setstylelayer.webm" aria-label="vectortiles-setstylelayer" autoplay muted playsinline loop></video>](https://developers.arcgis.com/javascript/latest/sample-code/layers-vectortilelayer-style/)
|
|
352
352
|
*
|
|
353
353
|
* </details>
|
|
354
354
|
*
|
|
@@ -110,7 +110,7 @@ export abstract class BlendLayer {
|
|
|
110
110
|
*
|
|
111
111
|
* Normal blend mode | Overlay blend mode |
|
|
112
112
|
* ----------------- | ------------------ |
|
|
113
|
-
* <
|
|
113
|
+
* <video src="https://developers.arcgis.com/javascript/latest/assets/references/core/layers/blendMode/noblendMode.webm" aria-label="no-blendmode" style="width:400px;" autoplay muted playsinline loop></video>|<video src="https://developers.arcgis.com/javascript/latest/assets/references/core/layers/blendMode/overlay-blendMode.webm" aria-label="overlay-blend" style="width:400px;" autoplay muted playsinline loop></video>
|
|
114
114
|
*
|
|
115
115
|
* Blend mode | Description |
|
|
116
116
|
* ---------- | ----------- |
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{isSome as e,equals as r,difference as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{updateOrigins as n}from"../../core/accessorSupport/originUtils.js";import{saveAs as s,save as o,getLayerJSON as l,getPortalItem as i,addItem as c,ensureLayerConfig as u,ensureItemConfig as y,setCommonItemProperties as p,createErrorMessage as f}from"./utils.js";import{parse as m}from"../support/arcgisLayerUrl.js";import{fetchFeatureService as d,getLayerModuleType as h}from"../support/fetchService.js";import{isLayerWithFeatureLayerSource as b}from"../support/layerUtils.js";import{createForItemWrite as w}from"../../portal/support/jsonContext.js";import{getWGS84ExtentForItem as T,toggleTypeKeyword as v,typeKeyword as
|
|
2
|
+
import{isSome as e,equals as r,difference as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{updateOrigins as n}from"../../core/accessorSupport/originUtils.js";import{saveAs as s,save as o,getLayerJSON as l,getPortalItem as i,addItem as c,ensureLayerConfig as u,ensureItemConfig as y,setCommonItemProperties as p,createErrorMessage as f}from"./utils.js";import{parse as m}from"../support/arcgisLayerUrl.js";import{fetchFeatureService as d,getLayerModuleType as h}from"../support/fetchService.js";import{isLayerWithFeatureLayerSource as b}from"../support/layerUtils.js";import{createForItemWrite as w}from"../../portal/support/jsonContext.js";import{getWGS84ExtentForItem as T,toggleTypeKeyword as v,typeKeyword as L,removeTypeKeyword as S,hasTypeKeyword as I}from"../../portal/support/portalItemUtils.js";const g="Feature Service",E="feature-layer-utils",P=`${E}-save`,O=`${E}-save-as`,A=`${E}-saveall`,x=`${E}-saveall-as`;function j(e){return{isValid:b(e)&&(!("dynamicDataSource"in e)||!e.dynamicDataSource),errorMessage:"Feature layer should be a layer or table in a map or feature service"}}function N(e,r){const a=w(e,"portal-item");return r?.isTable&&(a.layerContainerType="tables"),a}function $(e){const r=N(e),a=N(e);return a.layerContainerType="tables",{forLayers:r,forTables:a}}function U(e){const r=[],a=[];for(const{layer:t,layerJSON:n}of e)R(t)?a.push(n):r.push(n);return{layers:r,tables:a}}function R(e,r){return e.isTable}function C(e){return U([e])}async function D(e,r){return/\/\d+\/?$/.test(e.url)?C(r[0]):F(r,e)}async function F(e,r){if(e.reverse(),!r)return U(e);const a=await J(r,e);for(const t of e)V(t.layer,t.layerJSON,a);return M(a,e),a}async function J(e,r){let a=await e.fetchData("json");if(G(a)&&!I(e,L.HOSTED_SERVICE))return a;a||={},_(a);const{layer:{url:t,customParameters:n,apiKey:s}}=r[0];return await B(a,{url:t??"",customParameters:n,apiKey:s},r.map(e=>e.layer.layerId)),a}function G(e){return!!(e&&Array.isArray(e.layers)&&Array.isArray(e.tables))}function _(e){e.layers||=[],e.tables||=[]}function M(e,r){const a=[],t=[];for(const{layer:n}of r){const{isTable:e,layerId:r}=n;e?t.push(r):a.push(r)}Y(e.layers,a),Y(e.tables,t)}function Y(e,a){if(e.length<2)return;const t=[];for(const{id:r}of e)t.push(r);r(t.sort(k),a.slice().sort(k))&&e.sort((e,r)=>{const t=a.indexOf(e.id),n=a.indexOf(r.id);return t<n?-1:t>n?1:0})}function k(e,r){return e<r?-1:e>r?1:0}async function B(e,r,a){const{url:t,customParameters:n,apiKey:s}=r,{serviceJSON:o,layersJSON:l}=await d(t,{customParameters:n,apiKey:s}),i=K(e.layers,o.layers,a),c=K(e.tables,o.tables,a);e.layers=i.itemResources,e.tables=c.itemResources;const u=[...i.added,...c.added],y=l?[...l.layers,...l.tables]:[];await z(e,u,t,y)}function K(e,r,t){const n=a(e,r,(e,r)=>e.id===r.id);e=e.filter(e=>!n.removed.some(r=>r.id===e.id));const s=n.added;return s.forEach(({id:r})=>{e.push({id:r})}),{itemResources:e,added:s.filter(({id:e})=>!t.includes(e))}}async function z(e,r,a,t){const n=await H(r),s=r.map(({id:e,type:r})=>new(n.get(r))({url:a,layerId:e,sourceJSON:t.find(({id:r})=>r===e)}));await Promise.allSettled(s.map(e=>e.load())),s.forEach(r=>{const{layerId:a,loaded:t,defaultPopupTemplate:n}=r;if(!t||null==n)return;const s={id:a,popupInfo:n.toJSON()};V(r,"ArcGISFeatureLayer"===r.operationalLayerType?s:{...s,layerType:r.operationalLayerType},e)})}async function H(e){const r=[];e.forEach(({type:e})=>{switch(h(e)){case"AnnotationLayer":r.push(import("../AnnotationLayer.js").then(e=>e.default));break;case"CatalogLayer":r.push(import("../CatalogLayer.js").then(e=>e.default));break;case"DimensionFeatureLayer":r.push(import("../DimensionFeatureLayer.js").then(e=>e.default));break;case"FeatureLayer":r.push(import("../FeatureLayer.js").then(e=>e.default));break;case"OrientedImageryLayer":r.push(import("../OrientedImageryLayer.js").then(e=>e.default))}});const a=await Promise.all(r),t=new Map;return e.forEach(({type:e},r)=>{t.set(e,a[r])}),t}function V(e,r,a){e.isTable?q(a.tables,r):q(a.layers,r)}function q(e,r){const a=e.findIndex(({id:e})=>e===r.id);-1===a?e.push(r):e[a]=r}function Q(e,r){if(!e.length)throw new t(`${r}:missing-parameters`,"'layers' array should contain at least one feature layer")}function W(e,r){const a=e.map(e=>e.portalItem.id);if(new Set(a).size>1)throw new t(`${r}:invalid-parameters`,"All layers in the 'layers' array should be loaded from the same portal item")}function X(e,r){const a=e.map(e=>e.layerId);if(new Set(a).size!==a.length)throw new t(`${r}:invalid-parameters`,"'layers' array should contain only one instance each of layer or table in a feature service")}async function Z(e){Q(e,A),await Promise.all(e.map(e=>e.load()));for(const r of e)u(r,A,j),y({layer:r,itemType:g,errorNamePrefix:A});W(e,A),X(e,A)}function ee(e){if(!("layerType"in e))return!!e.charts?.length;switch(e.layerType){case"OrientedImageryLayer":return!!e.charts?.length;case"SubtypeGroupLayer":return!!e.layers.some(e=>!!e.charts?.length);case"SubtypeGroupTable":return!!e.tables.some(e=>!!e.charts?.length);case"CatalogLayer":return!!e.footprintLayer?.charts?.length}}function re(e,r){let a=0,t=0,n=0,s=0;for(const o of[...r.layers,...r.tables])if(ee(o)&&s++,"layerType"in o)switch(o.layerType){case"OrientedImageryLayer":a++;break;case"SubtypeGroupLayer":t++;break;case"SubtypeGroupTable":n++}v(e,L.ORIENTED_IMAGERY_LAYER,a>0),v(e,L.SUBTYPE_GROUP_LAYER,t>0),v(e,L.SUBTYPE_GROUP_TABLE,n>0),v(e,L.CHARTS,s>0)}function ae(e,r,a){S(r,L.METADATA),v(r,L.MULTI_LAYER,e.length>1),v(r,L.SINGLE_LAYER,1===e.length),v(r,L.TABLE,a.tables.length>0&&0===a.layers.length),re(r,a)}function te(e,r,a){re(r,a)}async function ne(e,r,a){const{url:t,layerId:n,title:s,fullExtent:o,isTable:l}=e,i=m(t);r.url=("FeatureServer"===i?.serverType?t:`${t}/${n}`)??null,r.title||=s,r.extent=null,l||null==o||(r.extent=await T(o)),ae([e],r,a)}function se(e,r){for(const o of e){const a=o.parsedUrl.path,n=m(a),s=n?.url.path;if(!s)throw new t(`${r}:invalid-parameters`,f(o,`has unsupported url pattern: ${a}`),{layer:o});const l=n?.serverType;if("FeatureServer"!==l&&"MapServer"!==l)throw new t(`${r}:invalid-parameters`,f(o,`has unsupported server type: ${l}`),{layer:o});if("MapServer"===l&&e.length>1)throw new t(`${r}:invalid-parameters`,"Only one layer or table in a map service can be saved")}const a=m(e[0].parsedUrl.path),n=a?.url.path,s=e.every(e=>{const r=m(e.parsedUrl.path);return r?.url.path===n});if(!s)throw new t(`${r}:invalid-parameters`,"'layers' array should only contain layers or tables that belong to the same feature service")}async function oe(e){Q(e,x),await Promise.all(e.map(e=>e.load()));for(const r of e)u(r,x,j);se(e,x),X(e,x)}function le(e,r){re(e,r),p(e)}async function ie(r,a,t){let n=0;for(const{isTable:e}of r)e||n++;const s=r[0].parsedUrl.path,o=m(s);if(a.url="FeatureServer"===o?.serverType?o.url.path:s,a.title||=o.title,a.extent=null,n>0){const t=r.map(e=>e.fullExtent).filter(e).reduce((e,r)=>e.clone().union(r));t&&(a.extent=await T(t))}ae(r,a,t),p(a)}async function ce(e,r){return o({layer:e,itemType:g,validateLayer:j,createJSONContext:r=>N(r,e),createItemData:(e,r)=>D(r,[e]),errorNamePrefix:P,setItemProperties:te},r)}async function ue(e,r){await Z(e);const a=e[0].portalItem,t=$(a),s=await Promise.all(e.map(e=>l(e,e.isTable?t.forTables:t.forLayers,r))),o=await D(a,e.map((e,r)=>({layer:e,layerJSON:s[r]})));return le(a,o),await a.update({data:o}),await Promise.all(e.slice(1).map(e=>e.portalItem.reload())),n(t.forLayers),n(t.forTables),a.clone()}async function ye(e,r,a){return s({layer:e,itemType:g,validateLayer:j,createJSONContext:r=>N(r,e),createItemData:(e,r)=>Promise.resolve(C(e)),errorNamePrefix:O,newItem:r,setItemProperties:ne},a)}async function pe(e,r,a){await oe(e);const t=i({itemType:g,errorNamePrefix:x,newItem:r}),s=$(t),o=await Promise.all(e.map(e=>l(e,e.isTable?s.forTables:s.forLayers,a))),u=await F(e.map((e,r)=>({layer:e,layerJSON:o[r]})));await ie(e,t,u),await c(t,u,a);for(const n of e)n.portalItem=t.clone();return n(s.forLayers),n(s.forTables),t}export{ce as save,ue as saveAll,pe as saveAllAs,ye as saveAs};
|
|
@@ -155,7 +155,7 @@ export interface FeatureFilterProperties extends Partial<Pick<FeatureFilter, "ob
|
|
|
155
155
|
* units: "miles"
|
|
156
156
|
* });
|
|
157
157
|
* ```
|
|
158
|
-
*
|
|
158
|
+
* <video src="https://developers.arcgis.com/javascript/latest/assets/references/core/layers/filter-attributes.webm" aria-label="screen-size-perspective" autoplay muted playsinline loop></video>
|
|
159
159
|
*
|
|
160
160
|
* @since 4.22
|
|
161
161
|
* @see [FeatureLayerView.filter](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLayerView/#filter)
|
|
@@ -7,7 +7,7 @@ export interface FeatureReductionSelectionProperties {}
|
|
|
7
7
|
* intersect on screen. Labeling also respects this option and hides labels
|
|
8
8
|
* that would otherwise overlap with the features of this layer.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* <video src="https://developers.arcgis.com/javascript/latest/assets/images/samples/city-points-declutter.webm" aria-label="declutter" autoplay muted playsinline loop></video>
|
|
11
11
|
*
|
|
12
12
|
* > [!WARNING]
|
|
13
13
|
* >
|