@arcgis/core 5.2.0-next.161 → 5.2.0-next.162
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/arcgisGlobal.d.ts +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0a5a9885ee6f5b5f99f0.js → 167b057ad50e6aef54de.js} +1 -1
- package/assets/esri/core/workers/chunks/17c6d66b47aa690df0d4.js +1 -0
- package/assets/esri/core/workers/chunks/{8480fe6b4372dbbfa7cc.js → 46c5371c7a627537098c.js} +10 -10
- package/assets/esri/core/workers/chunks/{60737732ce495bbdd0fc.js → 5f4feca26102088ea565.js} +1 -1
- package/assets/esri/core/workers/chunks/6da7229433105a69eb3f.js +1 -0
- package/assets/esri/core/workers/chunks/849879c8aed16315194c.js +1 -0
- package/assets/esri/core/workers/chunks/{9401cc22373566e1171e.js → 8a7b02037151767542f1.js} +1 -1
- package/assets/esri/core/workers/chunks/{4ed76fb5f6096a089f5b.js → 8e4a7027d171fb60e51e.js} +1 -1
- package/assets/esri/core/workers/chunks/{32b351b047ce1eb58146.js → 9ce8b9b80da146a5bbf5.js} +1 -1
- package/assets/esri/core/workers/chunks/a6f969851d4278865cc5.js +1 -0
- package/assets/esri/core/workers/chunks/{28b74bc77f7c13080074.js → be97a629e2ae4d13ceb3.js} +1 -1
- package/assets/esri/core/workers/chunks/{d33360c4f85203edafff.js → bf4d913e523eae2fda28.js} +1 -1
- package/assets/esri/core/workers/chunks/{172cfeb5f415e4662432.js → d7429b58c90e015263ad.js} +1 -1
- package/assets/esri/core/workers/chunks/{612104dff305ff062dfa.js → dfc81e66196c402f39b4.js} +2 -2
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +2 -5
- 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/DefaultMaterial.glsl.js +1 -1
- package/chunks/RealisticTree.glsl.js +1 -1
- package/chunks/RibbonLine.glsl.js +70 -64
- package/config.js +1 -1
- package/kernel.js +1 -1
- package/layers/FeatureLayer.d.ts +7 -5
- package/layers/FeatureLayer.js +1 -1
- package/layers/MapImageLayer.d.ts +9 -3
- package/layers/MapNotesLayer.d.ts +2 -2
- package/layers/SubtypeGroupLayer.d.ts +1 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/graphics/sources/support/QueryTask.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +16 -16
- package/layers/mixins/ArcGISMapService.js +1 -1
- package/layers/ogc/ogcFeatureUtils.js +1 -1
- package/layers/support/Sublayer.d.ts +29 -15
- package/layers/support/Sublayer.js +1 -1
- package/package.json +2 -2
- package/rest/layerSources/DynamicDataLayer.d.ts +4 -2
- package/rest/layerSources/DynamicDataLayer.js +1 -1
- package/rest/layerSources/DynamicMapLayer.d.ts +1 -1
- package/rest/layerSources/DynamicWorkspaceLayer.d.ts +45 -0
- package/rest/layerSources/DynamicWorkspaceLayer.js +2 -0
- package/rest/layerSources/typeUtils.js +2 -0
- package/rest/query/operations/queryRelatedRecords.js +1 -1
- package/rest/query/operations/queryUtils.js +1 -1
- package/rest/support/Query.js +1 -1
- package/rest/support/RelationshipQuery.js +1 -1
- package/symbols/LineSymbol3D.d.ts +5 -3
- package/views/2d/analysis/ElevationProfileAnalysisView2D.d.ts +6 -0
- package/views/2d/analysis/ElevationProfileAnalysisView2D.js +1 -1
- package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
- package/views/3d/analysis/Dimension/DimensionVisualization.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
- package/views/3d/analysis/ElevationProfileAnalysisView3D.d.ts +6 -0
- package/views/3d/analysis/ElevationProfileAnalysisView3D.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightObserverPlugin.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTargetPlugin.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedFieldOfViewManipulation.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementPointPlugin.js +1 -1
- package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
- package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
- package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
- package/views/3d/interactive/manipulators/ResizeManipulator.js +1 -1
- package/views/3d/interactive/manipulators/RotateManipulator.js +1 -1
- package/views/3d/interactive/manipulators/ShiftManipulator.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
- package/views/3d/layers/FlowSubView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/support/elevationUpdateUtils.js +1 -1
- package/views/3d/terrain/TerrainData.js +1 -1
- package/views/3d/terrain/terrainUtils.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentData.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/SymbolColor.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js +2 -2
- package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
- package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/BreakpointsOwner.d.ts +6 -0
- package/views/analysis/ElevationProfile/ElevationProfileTool.js +1 -1
- package/views/types.d.ts +3 -0
- package/views/webgl/ShaderBuilder.js +1 -1
- package/assets/esri/core/workers/chunks/3e3e076fa5e8d5d5f33f.js +0 -1
- package/assets/esri/core/workers/chunks/510502a4c9a2ba8d3f7b.js +0 -1
- package/assets/esri/core/workers/chunks/e8bf653376a607f00897.js +0 -1
- package/assets/esri/core/workers/chunks/f4a7aa3cdbc0c429c359.js +0 -1
|
@@ -43,7 +43,7 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
|
|
|
43
43
|
${M(X,`vColor.rgb *`)} matColor,
|
|
44
44
|
texColor.rgb,
|
|
45
45
|
vExternalColor.rgb,
|
|
46
|
-
colorMixMode
|
|
46
|
+
int(colorMixMode)
|
|
47
47
|
);
|
|
48
48
|
float opacity_ = getDefaultMaterialOpacity(texColor.a);
|
|
49
49
|
|
|
@@ -34,7 +34,7 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
|
|
|
34
34
|
${O(P.hasVertexColors,`vColor.rgb * `)} matColor,
|
|
35
35
|
texColor.rgb,
|
|
36
36
|
vExternalColor.rgb,
|
|
37
|
-
colorMixMode
|
|
37
|
+
int(colorMixMode)
|
|
38
38
|
);
|
|
39
39
|
float opacity_ = getDefaultMaterialOpacity(texColor.a);
|
|
40
40
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{evaluateSceneLightingFragment as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js";import{LineStipple as r,computePixelSize as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{metersPerRenderUnit as l,screenPixelSizePerDistance as u,inverseProjectionMatrix as d,nearFar as f,viewport as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as
|
|
2
|
+
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{evaluateSceneLightingFragment as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js";import{LineStipple as r,computePixelSize as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{metersPerRenderUnit as l,screenPixelSizePerDistance as u,inverseProjectionMatrix as d,nearFar as f,viewport as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as ee}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as m,NoPerspectiveRead as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as g,addPixelRatio as _}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as y}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as b}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as x,If as S}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{alphaCutoff as C}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as w}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{outputColorHighlightOLID as T}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as E}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as te}from"../views/webgl/ShaderBuilder.js";const D=1;function O(D){let O=new te,{attributes:k,varyings:A,vertex:j,fragment:M}=O,{applyMarkerOffset:N,draped:P,shadingEnabled:F,output:I,capType:L,stippleEnabled:R,falloffEnabled:z,wireframe:B,innerColorEnabled:V,hasAnimation:H,hasScreenSizePerspective:U,worldSized:W,imagePattern:G,useFlatJoinVarying:K}=D,q=L===2,J=R&&q,Y=z||J,X=R||q,Z=D.usePerspectiveCorrectStipple,Q=E(D).createBuilder(O,D);j.inputs.add(`position`,()=>Q.getTextureAttribute(`position`)),D.hasVVSize?j.inputs.add(`sizeFeatureAttribute`,()=>Q.getTextureAttribute(`sizeFeatureAttribute`)):j.inputs.add(`size`,()=>Q.getTextureAttribute(`size`)),D.hasVVOpacity&&j.inputs.add(`opacityFeatureAttribute`,()=>Q.getTextureAttribute(`opacityFeatureAttribute`)),D.hasVVColor?j.inputs.add(`colorFeatureAttribute`,()=>Q.getTextureAttribute(`colorFeatureAttribute`)):j.inputs.add(`color`,()=>Q.getTextureAttribute(`color`)),M.include(s),O.include(t,D),O.include(r,D),I===11?(O.varyings.add(`objectAndLayerIdColorVarying`,`vec4`),j.code.add(x`
|
|
3
3
|
vec4 getOlidColor() {
|
|
4
4
|
return ${Q.getTextureAttribute(`olidColor`)};
|
|
5
5
|
}
|
|
@@ -7,9 +7,9 @@ import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.gls
|
|
|
7
7
|
void forwardObjectAndLayerIdColor() {
|
|
8
8
|
objectAndLayerIdColorVarying = getOlidColor();
|
|
9
9
|
}
|
|
10
|
-
`),
|
|
10
|
+
`),M.code.add(x`void outputObjectAndLayerIdColor() {
|
|
11
11
|
fragColor = objectAndLayerIdColorVarying;
|
|
12
|
-
}`)):(
|
|
12
|
+
}`)):(j.code.add(x`void forwardObjectAndLayerIdColor() {}`),M.code.add(x`void outputObjectAndLayerIdColor() {}`));let $=N&&!P;if($&&O.include(a,D),g(j,D),P&&(W||R)){let e=W?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`;j.uniforms.add(new y(e,e=>1/(e.screenToPlanarDistanceRatio*(W?e.planarDistanceToGroundRatio:1))))}return W&&!P&&j.uniforms.add(l,u),j.uniforms.add(d,f,p,new b(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),j.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),j.constants.add(`EPS`,`float`,.001),j.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,D.numJoinSubdivisions),k.add(`textureElementIndex`,`uint`),k.add(`lineParameters`,`vec2`),A.add(`vColor`,`vec4`),A.add(`vpos`,`vec3`,{invariant:!0}),A.add(`vLineDistance`,`float`),A.add(`vLineWidth`,`float`),K?A.add(`vIsInsideJoin`,`int`,{flat:!0}):A.add(`vIsInsideJoin`,`float`),A.add(`vStretchFactor`,`float`),A.add(`vJoinCenterLineSDFs`,`vec2`),A.add(`vSubdivisionFactor`,`float`),R&&A.add(`vLineSizeInv`,`float`),Y&&A.add(`vLineDistanceNorm`,`float`),q&&(A.add(`vSegmentSDF`,`float`),A.add(`vReverseSegmentSDF`,`float`)),j.code.add(x`vec3 perpendicular(vec3 v) {
|
|
13
13
|
return vec3(v.y, -v.x, 0.0);
|
|
14
14
|
}
|
|
15
15
|
float nearPlaneInterpolationFactor(float nearPlaneDistance, vec4 start, vec4 end) {
|
|
@@ -20,17 +20,17 @@ float s = sin(a);
|
|
|
20
20
|
float c = cos(a);
|
|
21
21
|
mat2 m = mat2(c, -s, s, c);
|
|
22
22
|
return vec3(m * v.xy, v.z);
|
|
23
|
-
}`),
|
|
23
|
+
}`),j.code.add(x`vec4 projectAndScale(vec4 pos) {
|
|
24
24
|
vec4 posNdc = proj * pos;
|
|
25
25
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
26
26
|
posNdc.z /= posNdc.w;
|
|
27
27
|
return posNdc;
|
|
28
|
-
}`),
|
|
28
|
+
}`),j.code.add(x`
|
|
29
29
|
void clip(
|
|
30
30
|
inout vec4 pos,
|
|
31
31
|
inout vec4 prev,
|
|
32
32
|
inout vec4 next,
|
|
33
|
-
${
|
|
33
|
+
${S(Z,x`inout float u0, inout float prevU0, inout float nextU0,`)}
|
|
34
34
|
bool isStartVertex
|
|
35
35
|
) {
|
|
36
36
|
float adjustedNearPlaneDistance = nearFar[0] * 0.99;
|
|
@@ -41,7 +41,7 @@ return posNdc;
|
|
|
41
41
|
if (prev.z < -nearFar[0]) {
|
|
42
42
|
// Previous position in front of near plane
|
|
43
43
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, prev, pos);
|
|
44
|
-
${
|
|
44
|
+
${S(Z,x`u0 = mix(prevU0, u0, clipFactor); nextU0 = u0;`)}
|
|
45
45
|
pos = mix(prev, pos, clipFactor);
|
|
46
46
|
next = pos;
|
|
47
47
|
} else {
|
|
@@ -51,7 +51,7 @@ return posNdc;
|
|
|
51
51
|
if (next.z < -nearFar[0]) {
|
|
52
52
|
// Next position in front of near plane
|
|
53
53
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, next);
|
|
54
|
-
${
|
|
54
|
+
${S(Z,x`u0 = mix(u0, nextU0, clipFactor); prevU0 = u0;`)}
|
|
55
55
|
pos = mix(pos, next, clipFactor);
|
|
56
56
|
prev = pos;
|
|
57
57
|
} else {
|
|
@@ -63,25 +63,25 @@ return posNdc;
|
|
|
63
63
|
if (prev.z > -nearFar[0]) {
|
|
64
64
|
// Previous position behind near plane
|
|
65
65
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, prev);
|
|
66
|
-
${
|
|
66
|
+
${S(Z,x`prevU0 = mix(u0, prevU0, clipFactor);`)}
|
|
67
67
|
prev = mix(pos, prev, clipFactor);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
if (next.z > -nearFar[0]) {
|
|
71
71
|
// Next position behind near plane
|
|
72
72
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos);
|
|
73
|
-
${
|
|
73
|
+
${S(Z,x`nextU0 = mix(nextU0, u0, clipFactor);`)}
|
|
74
74
|
next = mix(next, pos, clipFactor);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
`),
|
|
78
|
+
`),_(j),j.constants.add(`aaWidth`,`float`,1),M.constants.add(`aaWidth`,`float`,1),j.main.add(x`
|
|
79
79
|
vec3 position = ${Q.getTextureAttribute(`position`)};
|
|
80
80
|
float u0 = ${Q.getTextureAttribute(`u0`)};
|
|
81
|
-
${
|
|
81
|
+
${S(W,x`
|
|
82
82
|
float prevU0 = ${Q.getTextureAttribute(`u0`,-1)};
|
|
83
83
|
float nextU0 = ${Q.getTextureAttribute(`u0`,1)};
|
|
84
|
-
${
|
|
84
|
+
${S(!P,x`
|
|
85
85
|
u0 *= metersPerRenderUnit;
|
|
86
86
|
prevU0 *= metersPerRenderUnit;
|
|
87
87
|
nextU0 *= metersPerRenderUnit;
|
|
@@ -90,6 +90,10 @@ return posNdc;
|
|
|
90
90
|
|
|
91
91
|
// unpack values from vertex type
|
|
92
92
|
float vertexType = abs(lineParameters.y);
|
|
93
|
+
${S(!K,x`
|
|
94
|
+
bool isInsideJoin = vertexType > 8.0;
|
|
95
|
+
vertexType -= isInsideJoin ? 8.0 : 0.0;
|
|
96
|
+
`)}
|
|
93
97
|
float lineSide = sign(lineParameters.y);
|
|
94
98
|
bool isStartVertex = vertexType == 2.0 || vertexType == 4.0;
|
|
95
99
|
vec3 prevPosition = ${Q.getTextureAttribute(`position`,-1)};
|
|
@@ -106,11 +110,11 @@ return posNdc;
|
|
|
106
110
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
107
111
|
|
|
108
112
|
bool isJoin = vertexType < 3.0;
|
|
109
|
-
`),$&&
|
|
113
|
+
`),$&&j.main.add(x`vec4 other = isStartVertex ? next : prev;
|
|
110
114
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
111
115
|
if (!isJoin && !markersHidden) {
|
|
112
116
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
113
|
-
}`),
|
|
117
|
+
}`),O.include(m),j.code.add(x`
|
|
114
118
|
vec2 computeJoinAndCapDisplacement(
|
|
115
119
|
bool isJoin,
|
|
116
120
|
bool isStartVertex,
|
|
@@ -156,9 +160,11 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
156
160
|
}
|
|
157
161
|
|
|
158
162
|
// Compute stretch compensation for feathering.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
163
|
+
${S(K,x`
|
|
164
|
+
if (subdivisionFactor > 0.0) {
|
|
165
|
+
vIsInsideJoin = 1;
|
|
166
|
+
}
|
|
167
|
+
`)}
|
|
162
168
|
vSubdivisionFactor = isOutside ? subdivisionFactor : 0.5;
|
|
163
169
|
|
|
164
170
|
if (miterDisplacementLen > miterLimit * lineWidth) {
|
|
@@ -188,14 +194,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
188
194
|
}
|
|
189
195
|
|
|
190
196
|
if (isOutside && displacementLen > miterLimit * lineWidth) {
|
|
191
|
-
${
|
|
197
|
+
${S(D.roundJoins,x`
|
|
192
198
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
193
199
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
194
|
-
float factor = ${
|
|
200
|
+
float factor = ${R?x`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:x`subdivisionFactor`};
|
|
195
201
|
|
|
196
202
|
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
197
203
|
joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
|
|
198
|
-
`,
|
|
204
|
+
`,x`
|
|
199
205
|
/**
|
|
200
206
|
* Convert to bevel join if miterLimit is exceeded.
|
|
201
207
|
* Here vertices with a subdivisionFactor > 0 are either START vertices or
|
|
@@ -207,19 +213,19 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
207
213
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
208
214
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
209
215
|
|
|
210
|
-
${
|
|
216
|
+
${S(R,x`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,x`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
|
|
211
217
|
`)}
|
|
212
218
|
displacementLen = lineWidth;
|
|
213
219
|
}
|
|
214
220
|
} else {
|
|
215
221
|
joinDisplacementDir = perpendicular(isStartVertex ? right : left);
|
|
216
|
-
${
|
|
222
|
+
${L===0?``:x`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`}
|
|
217
223
|
}
|
|
218
224
|
|
|
219
225
|
return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
|
|
220
226
|
}
|
|
221
|
-
`),
|
|
222
|
-
clip(pos, prev, next, ${
|
|
227
|
+
`),j.main.add(x`
|
|
228
|
+
clip(pos, prev, next, ${S(Z,x`u0, prevU0, nextU0,`)} isStartVertex);
|
|
223
229
|
|
|
224
230
|
vec3 clippedPos = pos.xyz;
|
|
225
231
|
vec3 clippedCenter = mix(pos.xyz, isStartVertex ? next.xyz : prev.xyz, 0.5);
|
|
@@ -231,29 +237,29 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
231
237
|
vec3 left = (pos.xyz - prev.xyz);
|
|
232
238
|
vec3 right = (next.xyz - pos.xyz);
|
|
233
239
|
|
|
234
|
-
float lineSize = getSize(${
|
|
235
|
-
${
|
|
236
|
-
${
|
|
240
|
+
float lineSize = getSize(${S(U,`clippedPos`)});
|
|
241
|
+
${S(R&&U,`float patternLineSize = getSize(clippedCenter);`)}
|
|
242
|
+
${S(R&&!U,`float patternLineSize = lineSize;`)}
|
|
237
243
|
|
|
238
|
-
${
|
|
239
|
-
${
|
|
244
|
+
${S(W,x`
|
|
245
|
+
${S(P,x`float lineSizeScreen = lineSize * groundMetersToScreenRatio;`,x`
|
|
240
246
|
float metersPerScreenPixel = max(-clippedPos.z, nearFar[0]) * metersPerRenderUnit * screenPixelSizePerDistance;
|
|
241
247
|
float lineSizeScreen = lineSize / metersPerScreenPixel;
|
|
242
248
|
`)}
|
|
243
249
|
float lineWidth = lineSizeScreen * pixelRatio + aaWidth;
|
|
244
|
-
`,
|
|
250
|
+
`,x`
|
|
245
251
|
float lineWidth = lineSize * pixelRatio + aaWidth;
|
|
246
252
|
`)}
|
|
247
253
|
|
|
248
254
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
249
|
-
${
|
|
250
|
-
`),X&&
|
|
255
|
+
${R?x`vLineSizeInv = noPerspectiveWrite(1.0 / ${W?`lineSize`:`max(lineSize, 1.0)`}, pos.w);`:``}
|
|
256
|
+
`),X&&j.main.add(x`
|
|
251
257
|
float isEndVertex = float(!isStartVertex);
|
|
252
258
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
253
259
|
vec3 segment = mix(right, left, isEndVertex);
|
|
254
|
-
${q?
|
|
255
|
-
`),
|
|
256
|
-
vIsInsideJoin = 0;
|
|
260
|
+
${q?x`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:``}
|
|
261
|
+
`),j.main.add(x`
|
|
262
|
+
vIsInsideJoin = ${K?x`0`:x`float(isInsideJoin)`};
|
|
257
263
|
vStretchFactor = 1.0;
|
|
258
264
|
vSubdivisionFactor = 0.0;
|
|
259
265
|
vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);
|
|
@@ -282,10 +288,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
282
288
|
float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
|
|
283
289
|
|
|
284
290
|
vLineDistance = lineWidth * lineDistNorm;
|
|
285
|
-
${Y?
|
|
291
|
+
${Y?x`vLineDistanceNorm = lineDistNorm;`:``}
|
|
286
292
|
|
|
287
293
|
pos.xyz += displacement;
|
|
288
|
-
`),
|
|
294
|
+
`),j.main.add(x`if (isJoin) {
|
|
289
295
|
vec2 joinCenterToVertex = displacementXY;
|
|
290
296
|
vec2 leftCenterlineDir = left.xy;
|
|
291
297
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -300,36 +306,36 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
|
300
306
|
),
|
|
301
307
|
pos.w
|
|
302
308
|
);
|
|
303
|
-
}`),q&&
|
|
309
|
+
}`),q&&j.main.add(x`vec2 segmentDir = normalize(segment.xy);
|
|
304
310
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
305
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),
|
|
306
|
-
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),
|
|
311
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),R&&(P?j.main.add(x`float stippleDistanceToScreenRatio = ${W?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`};`):j.main.add(x`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
312
|
+
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),j.main.add(x`
|
|
307
313
|
float segmentLengthScreenDouble = length(segment.xy);
|
|
308
314
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
309
315
|
float discreteStippleDistanceToScreenRatio = discretizeStippleDistanceToScreenRatio(stippleDistanceToScreenRatio);
|
|
310
|
-
float segmentLengthRender = ${
|
|
316
|
+
float segmentLengthRender = ${S(W,x`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,x`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
|
|
311
317
|
|
|
312
|
-
${
|
|
313
|
-
float segmentStartRender = ${
|
|
318
|
+
${S(!P||W,x`
|
|
319
|
+
float segmentStartRender = ${S(W,x`mix(u0, prevU0, isEndVertex)`,x`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
|
|
314
320
|
`)}
|
|
315
321
|
|
|
316
322
|
vStipplePatternStretch = stippleDistanceToScreenRatio / discreteStippleDistanceToScreenRatio;
|
|
317
|
-
`),
|
|
318
|
-
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):
|
|
319
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),
|
|
323
|
+
`),P?j.main.add(x`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
|
|
324
|
+
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):j.main.add(x`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
|
|
325
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),j.uniforms.add(new b(`stipplePatternPixelSize`,e=>i(e))),j.main.add(x`
|
|
320
326
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
321
327
|
vec2 stippleDistanceLimits;
|
|
322
328
|
|
|
323
|
-
${
|
|
329
|
+
${S(W,x`
|
|
324
330
|
stippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
|
|
325
331
|
vStipplePatternStretch = 1.0;
|
|
326
332
|
|
|
327
|
-
${
|
|
333
|
+
${S(G,x`
|
|
328
334
|
// The v-coordinate used in case of an image pattern.
|
|
329
335
|
bool isLeft = lineSide < 0.0;
|
|
330
336
|
vStippleV = isLeft ? 0.0 : 1.0;
|
|
331
337
|
`)}
|
|
332
|
-
`,
|
|
338
|
+
`,x`
|
|
333
339
|
// Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
|
|
334
340
|
// fragment shader
|
|
335
341
|
stippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
@@ -349,7 +355,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
349
355
|
vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (stippleDistanceLimits.y - stippleDistanceLimits.x);
|
|
350
356
|
}
|
|
351
357
|
|
|
352
|
-
${
|
|
358
|
+
${S(Z,x`
|
|
353
359
|
float segmentStartInverseW = 1.0 / mix(pos.w, prev.w, isEndVertex);
|
|
354
360
|
float segmentEndInverseW = 1.0 / mix(next.w, pos.w, isEndVertex);
|
|
355
361
|
vStipplePerspective = noPerspectiveWrite(
|
|
@@ -365,7 +371,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
365
371
|
// Disable stipple distance limits on caps
|
|
366
372
|
vStippleLimitsAndCaps.zw = isJoin ? vec2(0.0) :
|
|
367
373
|
isStartVertex ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
368
|
-
`)),
|
|
374
|
+
`)),j.main.add(x`
|
|
369
375
|
// Convert back into NDC
|
|
370
376
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
371
377
|
pos.z = pos.z * pos.w;
|
|
@@ -373,14 +379,14 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
373
379
|
vColor = getColor();
|
|
374
380
|
vColor.a = noPerspectiveWrite(vColor.a, pos.w);
|
|
375
381
|
|
|
376
|
-
${
|
|
382
|
+
${B&&!P?`pos.z -= EPS * pos.w;`:``}
|
|
377
383
|
|
|
378
384
|
// transform final position to camera space for slicing
|
|
379
385
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
380
386
|
gl_Position = pos;
|
|
381
387
|
forwardObjectAndLayerIdColor();
|
|
382
|
-
}`),
|
|
383
|
-
float stretchFactor = vIsInsideJoin
|
|
388
|
+
}`),O.include(T,D),O.include(h),M.include(ee),M.include(C),M.include(e,D),M.main.add(`discardBySlice(vpos);`),M.code.add(x`float lineFeatheringFactor(float lineWidth, float lineDistance) {
|
|
389
|
+
float stretchFactor = float(vIsInsideJoin) > 0.5 ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
384
390
|
float featherWidth = 2.0;
|
|
385
391
|
float featherStartDistance = lineWidth - featherWidth / stretchFactor;
|
|
386
392
|
float straightFeatherStartDistance = lineWidth - featherWidth;
|
|
@@ -389,15 +395,15 @@ float feather = (value - featherStartDistance) / (lineWidth - featherStartDistan
|
|
|
389
395
|
vec2 joinCenterSDFs = noPerspectiveRead(vJoinCenterLineSDFs);
|
|
390
396
|
float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joinCenterSDFs.y);
|
|
391
397
|
float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
|
|
392
|
-
feather = vIsInsideJoin
|
|
398
|
+
feather = float(vIsInsideJoin) > 0.5 ? max(feather, straightFeather) : feather;
|
|
393
399
|
float coverage = min(lineWidth - aaWidth, 1.0);
|
|
394
400
|
return clamp(1.0 - feather, 0.0, coverage);
|
|
395
|
-
}`),
|
|
401
|
+
}`),M.main.add(x`
|
|
396
402
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
397
403
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
398
|
-
${
|
|
399
|
-
`),J&&
|
|
400
|
-
vec4 finalColor = albedo;`):(q&&
|
|
404
|
+
${S(Y,x`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
405
|
+
`),J&&M.main.add(x`float nominalLineWidth = lineWidth - aaWidth;`),B?M.main.add(x`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
|
|
406
|
+
vec4 finalColor = albedo;`):(q&&M.main.add(x`
|
|
401
407
|
float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
402
408
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
403
409
|
|
|
@@ -408,7 +414,7 @@ vec4 finalColor = albedo;`):(q&&N.main.add(S`
|
|
|
408
414
|
if (capCoverage < alphaCutoff) {
|
|
409
415
|
discard;
|
|
410
416
|
}
|
|
411
|
-
`),J?
|
|
417
|
+
`),J?M.main.add(x`vec2 stipplePosition = vec2(
|
|
412
418
|
min(getStippleCapDistance(), 0.0) * nominalLineWidth,
|
|
413
419
|
lineDistance
|
|
414
420
|
);
|
|
@@ -416,8 +422,8 @@ float stippleRadius = length(stipplePosition);
|
|
|
416
422
|
float stippleCapSDF = (stippleRadius - nominalLineWidth) * 0.5;
|
|
417
423
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
418
424
|
float lineCoverage = min(lineFeatheringFactor(lineWidth, lineDistance), capCoverage);
|
|
419
|
-
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):
|
|
420
|
-
color.a = noPerspectiveRead(color.a);`),
|
|
425
|
+
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):M.main.add(x`float stippleAlpha = getStippleAlpha(lineWidth);`),I!==11&&M.main.add(x`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),M.uniforms.add(new v(`intrinsicColor`,e=>e.color)).main.add(x`vec4 color = intrinsicColor * vColor;
|
|
426
|
+
color.a = noPerspectiveRead(color.a);`),V&&M.uniforms.add(new v(`innerColor`,e=>e.innerColor??e.color),new b(`innerWidth`,(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(x`float distToInner = abs(lineDistance) - innerWidth;
|
|
421
427
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
422
428
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
423
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),
|
|
429
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),M.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),z&&(M.uniforms.add(new b(`falloff`,e=>e.falloff)),M.main.add(x`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),M.main.add(x`albedo.a *= ${J?`lineCoverage`:`lineFeatheringFactor(lineWidth, lineDistance)`};`),H&&(j.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),O.include(w,D),M.main.add(`albedo.a *= animatedAlpha();`)),F?(A.add(`vnormal`,`vec3`),j.include(o,D),j.main.add(`vnormal = getLocalUp(vpos, localOrigin);`),O.include(n,D),M.main.add(`vec4 finalColor = evaluateSceneLightingFragment(vpos, vnormal, albedo);`)):M.main.add(`vec4 finalColor = albedo;`)),M.main.add(x`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),O}const k=Object.freeze(Object.defineProperty({__proto__:null,build:O,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{k as R,O as b,D as n};
|
package/config.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={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}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath&&(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@5.2.0-next.
|
|
2
|
+
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={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}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath&&(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@5.2.0-next.162/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
|
package/kernel.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import"./core/has.js";import{addQueryParameter as e}from"./core/urlUtils.js";Symbol.dispose??=Symbol(`Symbol.dispose`),Symbol.asyncDispose??=Symbol(`Symbol.asyncDispose`);const t=`5.2`;let n=`5.2`;n=`5.2.0-next.
|
|
2
|
+
import"./core/has.js";import{addQueryParameter as e}from"./core/urlUtils.js";Symbol.dispose??=Symbol(`Symbol.dispose`),Symbol.asyncDispose??=Symbol(`Symbol.asyncDispose`);const t=`5.2`;let n=`5.2`;n=`5.2.0-next.162`;let r;function i(e){r=e}function a(t){let n=r?.findCredential(t);return n?.token?e(t,`token`,n.token):t}globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}});export{a as addTokenParameter,n as fullVersion,r as id,i as setId,t as version};
|
package/layers/FeatureLayer.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type Subtype from "./support/Subtype.js";
|
|
|
13
13
|
import type SymbolLayerDrawing from "./support/SymbolLayerDrawing.js";
|
|
14
14
|
import type PortalItem from "../portal/PortalItem.js";
|
|
15
15
|
import type DynamicDataLayer from "../rest/layerSources/DynamicDataLayer.js";
|
|
16
|
+
import type DynamicWorkspaceLayer from "../rest/layerSources/DynamicWorkspaceLayer.js";
|
|
16
17
|
import type AttachmentInfo from "../rest/query/support/AttachmentInfo.js";
|
|
17
18
|
import type AttributeBinsFeatureSet from "../rest/support/AttributeBinsFeatureSet.js";
|
|
18
19
|
import type FeatureSet from "../rest/support/FeatureSet.js";
|
|
@@ -23,13 +24,13 @@ import type { ReadonlyArrayOrCollection } from "../core/Collection.js";
|
|
|
23
24
|
import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js";
|
|
24
25
|
import type { AddAttachmentOptions, AttachmentEditOptions, EditOptions, Edits, EditsResult, FeatureEditResult } from "../editing/types.js";
|
|
25
26
|
import type { LayerEvents, LayerProperties } from "./Layer.js";
|
|
26
|
-
import type { LayerSaveAsOptions, LayerSaveOptions
|
|
27
|
+
import type { FeatureTitleOptions, LayerSaveAsOptions, LayerSaveOptions } from "./types.js";
|
|
27
28
|
import type { APIKeyMixin, APIKeyMixinProperties } from "./mixins/APIKeyMixin.js";
|
|
28
29
|
import type { BlendLayer, BlendLayerProperties } from "./mixins/BlendLayer.js";
|
|
29
30
|
import type { CustomParametersMixin, CustomParametersMixinProperties } from "./mixins/CustomParametersMixin.js";
|
|
30
31
|
import type { DataSeriesLayer, DataSeriesLayerProperties } from "./mixins/DataSeriesLayer.js";
|
|
31
32
|
import type { DisplayFilteredLayer, DisplayFilteredLayerProperties } from "./mixins/DisplayFilteredLayer.js";
|
|
32
|
-
import type {
|
|
33
|
+
import type { EditBusLayerEvents, EditBusLayer } from "./mixins/EditBusLayer.js";
|
|
33
34
|
import type { FeatureEffectLayer, FeatureEffectLayerProperties } from "./mixins/FeatureEffectLayer.js";
|
|
34
35
|
import type { FeatureLayerBase, FeatureLayerBaseProperties } from "./mixins/FeatureLayerBase.js";
|
|
35
36
|
import type { FeatureReductionLayer, FeatureReductionLayerProperties } from "./mixins/FeatureReductionLayer.js";
|
|
@@ -53,6 +54,7 @@ import type { TopFeaturesQueryProperties } from "../rest/support/TopFeaturesQuer
|
|
|
53
54
|
import type { CreatePopupTemplateOptions } from "../support/popupUtils.js";
|
|
54
55
|
import type { ObjectId } from "../views/types.js";
|
|
55
56
|
import type { AttributeTableTemplateProperties } from "../tables/AttributeTableTemplate.js";
|
|
57
|
+
import type { DynamicWorkspaceLayerProperties } from "../rest/layerSources/DynamicWorkspaceLayer.js";
|
|
56
58
|
import type { DynamicDataLayerProperties } from "../rest/layerSources/DynamicDataLayer.js";
|
|
57
59
|
import type { FieldConfigurationProperties } from "./support/FieldConfiguration.js";
|
|
58
60
|
import type { FieldProperties } from "./support/Field.js";
|
|
@@ -151,7 +153,7 @@ export interface FeatureLayerProperties extends LayerProperties, APIKeyMixinProp
|
|
|
151
153
|
* }
|
|
152
154
|
* });
|
|
153
155
|
*/
|
|
154
|
-
dynamicDataSource?: DynamicDataLayerProperties | null;
|
|
156
|
+
dynamicDataSource?: (DynamicDataLayerProperties & { type: "data-layer" }) | (DynamicWorkspaceLayerProperties & { type: "workspace-layer" }) | null;
|
|
155
157
|
/**
|
|
156
158
|
* An array of [FieldConfiguration](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FieldConfiguration/) objects that control how fields are displayed in popups and other UI elements. Each object specifies options for an individual field, such as its display name, via `alias`, and formatting rules, via `fieldFormat`. Assign this property before the layer loads to ensure the configurations take effect. For more information, see the [FieldConfiguration](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FieldConfiguration/) documentation.
|
|
157
159
|
* If no field configurations are provided, they are automatically created when a [popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#popupTemplate) is assigned to the layer. If no [popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#popupTemplate) is set, you can manually define field configurations to customize how fields are shown.
|
|
@@ -909,8 +911,8 @@ export abstract class __FeatureLayerSansType extends FeatureLayerSuperclass {
|
|
|
909
911
|
* }
|
|
910
912
|
* });
|
|
911
913
|
*/
|
|
912
|
-
get dynamicDataSource(): DynamicDataLayer |
|
|
913
|
-
set dynamicDataSource(value: DynamicDataLayerProperties |
|
|
914
|
+
get dynamicDataSource(): DynamicDataLayer | DynamicWorkspaceLayer | null;
|
|
915
|
+
set dynamicDataSource(value: (DynamicDataLayerProperties & { type: "data-layer" }) | (DynamicWorkspaceLayerProperties & { type: "workspace-layer" }) | null);
|
|
914
916
|
/**
|
|
915
917
|
* Determines if the layer is editable.
|
|
916
918
|
*
|
package/layers/FeatureLayer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import r from"../PopupTemplate.js";import i from"../request.js";import{ClonableMixin as a}from"../core/Clonable.js";import o from"../core/Collection.js";import s from"../core/Error.js";import{disposable as ee,makeHandle as te}from"../core/handleUtils.js";import{clone as c}from"../core/lang.js";import ne from"../core/Logger.js";import{destroyMaybe as re}from"../core/maybe.js";import{MultiOriginJSONSupportMixin as ie}from"../core/MultiOriginJSONSupport.js";import{setDeepValue as l}from"../core/object.js";import{debounce as ae,throwIfAbortError as oe,whenOrAbort as se,onAbort as ce}from"../core/promiseUtils.js";import{sqlAnd as le}from"../core/sql.js";import{property as u,subclass as ue}from"../core/accessorSupport/decorators.js";import{excludeTables as d}from"../core/accessorSupport/layerContainerType.js";import de from"../form/FormTemplate.js";import fe from"../geometry/SpatialReference.js";import pe from"../graphic/FeatureGraphicOrigin.js";import me from"./Layer.js";import{MemorySource as f}from"./graphics/sources/MemorySource.js";import{APIKeyMixin as he}from"./mixins/APIKeyMixin.js";import{ArcGISService as p}from"./mixins/ArcGISService.js";import{BlendLayer as m}from"./mixins/BlendLayer.js";import{CustomParametersMixin as h}from"./mixins/CustomParametersMixin.js";import{DataSeriesLayer as g}from"./mixins/DataSeriesLayer.js";import{DisplayFilteredLayer as _}from"./mixins/DisplayFilteredLayer.js";import{EditBusLayer as v}from"./mixins/EditBusLayer.js";import{FeatureEffectLayer as y}from"./mixins/FeatureEffectLayer.js";import{FeatureLayerBase as b}from"./mixins/FeatureLayerBase.js";import{FeatureReductionLayer as x}from"./mixins/FeatureReductionLayer.js";import{OperationalLayer as S}from"./mixins/OperationalLayer.js";import{OrderedLayer as C}from"./mixins/OrderedLayer.js";import{PortalLayer as w}from"./mixins/PortalLayer.js";import{PublishableLayer as T}from"./mixins/PublishableLayer.js";import{RefreshableLayer as E}from"./mixins/RefreshableLayer.js";import{ReloadableLayer as D}from"./mixins/ReloadableLayer.js";import{ScaleRangeLayer as O}from"./mixins/ScaleRangeLayer.js";import{TemporalLayer as k}from"./mixins/TemporalLayer.js";import{TrackableLayer as A}from"./mixins/TrackableLayer.js";import{titleFromUrlAndName as j,parse as M,cleanTitle as N}from"./support/arcgisLayerUrl.js";import{attributeTableTemplate as P,id as F,labelsVisible as I,opacityDrawingInfo as L,legendEnabled as R,listMode as ge,popupEnabled as _e,screenSizePerspectiveEnabled as ve}from"./support/commonProperties.js";import{ensureLayerCredential as ye,computeEffectiveEditingEnabled as be,readGlobalIdField as xe,readObjectIdField as Se,createDefaultRenderer as Ce,addAttachment as we,updateAttachment as Te,applyEdits as Ee,uploadAssets as De,createQuery as Oe,deleteAttachments as ke,fetchRecomputedExtents as Ae,getFeatureType as je,getFieldDomain as Me,queryAttachments as Ne,queryObjectIds as Pe,queryFeatureCount as Fe,queryExtent as Ie,queryRelatedFeatures as Le,queryRelatedFeaturesCount as Re,validateBinsQuery as ze,hasDataChanged as Be,geometryTypeKebabDict as z}from"./support/featureLayerUtils.js";import B from"./support/FeatureTemplate.js";import V from"./support/FeatureType.js";import Ve from"./support/FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as He,fieldConfigurationsFromPopupTemplate as Ue,fieldConfigurationsFromFields as We}from"./support/fieldConfigUtils.js";import{defineFieldProperties as Ge}from"./support/fieldProperties.js";import{fixRendererFields as H,fixTimeInfoFields as Ke}from"./support/fieldUtils.js";import qe from"./support/LabelClass.js";import{reader as U}from"./support/labelingInfo.js";import{getFeatureLayerCapabilities as Je}from"./support/serviceCapabilitiesUtils.js";import W from"./support/SymbolLayerDrawing.js";import Ye from"./support/TitleCreator.js";import{serviceSupportsSpatialReference as Xe}from"./support/versionUtils.js";import{read as Ze}from"../renderers/support/jsonUtils.js";import{loadStyleRenderer as Qe}from"../renderers/support/styleUtils.js";import{webSceneRendererTypes as $e,rendererTypes as et}from"../renderers/support/typeUtils.js";import tt from"../rest/layerSources/DynamicDataLayer.js";import nt from"../rest/support/FeatureSet.js";import G from"../rest/support/Query.js";import{isNumber as rt}from"../support/guards.js";import{createPopupTemplate as it}from"../support/popupUtils.js";import{symbolTypes as at}from"../symbols/support/typeUtils.js";import{opacityToTransparency as ot}from"../webdoc/support/opacityUtils.js";import{addLayerUnsupportedError as K}from"../webdoc/support/unsupportedErrors.js";import{reader as q}from"../core/accessorSupport/decorators/reader.js";import{writer as J}from"../core/accessorSupport/decorators/writer.js";const Y=`FeatureLayer`;function X(e){return e&&e instanceof o}const Z=Ge();function Q(e,t,n){let r=!!n?.writeLayerSchema;return{enabled:r,ignoreOrigin:r}}let $=class extends D(b(x(y(T(v(_(m(C(k(g(A(O(E(p(S(w(ie(h(he(a(me))))))))))))))))))))){constructor(...e){super(...e),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 pe(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.resourceInfo=null,this.screenSizePerspectiveEnabled=!0,this.spatialReference=fe.WGS84,this.subtypeCode=null,this.subtypeField=null,this.subtypes=null,this.supportedPortalItemTypes=[`Feature Service`,`Feature Collection`,`Scene Service`],this.supportedSourceTypes=new Set([`Feature Layer`,`Oriented Imagery Layer`,`Table`,`Catalog Layer`]),this.templates=null,this.title=null,this.sublayerTitleMode=`item-title`,this.type=`feature`,this.typeIdField=null,this.types=null,this.visible=!0,this._debouncedSaveOperations=ae(async(e,t,n)=>{let{save:r,saveAs:i}=await import(`./save/featureLayerUtils.js`);switch(e){case 0:return r(this,t);case 1:return i(this,n,t)}})}destroy(){this.source?.destroy()}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}load(e){let t=e==null?null:e.signal;if(this.portalItem?.loaded&&this.source)return this.addResolvingPromise(this.createGraphicsSource(t).then(e=>this.initLayerProperties(e))),Promise.resolve(this);let n=this.loadFromPortal({supportedTypes:this.supportedPortalItemTypes},e).catch(oe).then(async()=>{if(this.url&&this.layerId==null&&/FeatureServer|MapServer\/*$/i.test(this.url)){let e=await this._fetchFirstValidLayerId(t);e!=null&&(this.layerId=e)}if(!this.url&&!this._hasMemorySource())throw new s(`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(()=>ye(this,`load`,e));return this.addResolvingPromise(n),Promise.resolve(this)}get _titleCreator(){let e=this._get(`_titleCreator`);return re(e),new Ye({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,Je(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?!1: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,n){return this._readEditingEnabled(t,!0,n)}writeEditingEnabled(e,t){this._writeEditingEnabled(e,t,!1)}writeEditingEnabledToWebMap(e,t,n,r){this._writeEditingEnabled(e,t,!0,r)}get effectiveEditingEnabled(){return be(this)}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._hasMemorySource()||(this._override(`fieldConfigurations`,e),!this.loaded))return;let t=He(this,e);t&&this._set(`popupTemplate`,t)}get fieldConfigurations(){if(!this._hasMemorySource())return this._isOverridden(`fieldConfigurations`)?this._get(`fieldConfigurations`):Ue(this)||null}readIsTable(e,t){return t=t?.layerDefinition??t,t.type===`Table`||!t.geometryType}writeIsTable(e,t,n,r){r?.writeLayerSchema&&l(n,e?`Table`:`Feature Layer`,t)}readSymbolLayerDrawing(e,t){let n=t.layerDefinition?.drawingInfo,r=n?.renderer,i=n?.symbolLayerDrawing;return r&&i?new W(i):null}readGlobalIdField(e,t){return xe(t.layerDefinition||t)}readObjectIdField(e,t){return Se(t.layerDefinition||t)}writePopupTemplate(e,t,n,r){e&&(t[n]=e.toJSON({...r,writeFieldFormat:!r?.writeLayerSchema}))}get defaultPopupTemplate(){return this.createPopupTemplate()}set renderer(e){H(e,this.fieldsIndex),this._set(`renderer`,e)}readRenderer(e,t,n){t=t.layerDefinition||t;let r=t.drawingInfo?.renderer;if(r){let e=Ze(r,t,n)??void 0;return e||ne.getLogger(this).error(`Failed to create renderer`,{rendererDefinition:t.drawingInfo.renderer,layer:this,context:n}),e}return Ce(t,n)}get source(){return this._get(`source`)}set source(e){e||=null;let t=this._get(`source`);t!==e&&((Array.isArray(e)||e instanceof o)&&(e=new f({layer:this,items:e})),X(t)&&this._resetMemorySource(t),X(e)&&this._initMemorySource(e),this._set(`source`,e))}readSource(e,t){let n=nt.fromJSON(t.featureSet);return new f({layer:this,items:n?.features??[]})}readTemplates(e,t){let n=t.editFieldsInfo,r=n?.creatorField,i=n?.editorField;return e=e?.map(e=>B.fromJSON(e)),this._fixTemplates(e,r),this._fixTemplates(e,i),e}readTitle(e,t){let n=t.layerDefinition?.name??t.name,r=t.title||t.layerDefinition?.title;if(n){if(this.sublayerTitleMode===`item-title`)return this.url?j(this.url,n):n;let e=n;if(!e&&this.url){let t=M(this.url);t!=null&&(e=t.title)}if(!e)return;let t=this.portalItem?.title;return this.sublayerTitleMode===`item-title-and-service-name`&&t&&t!==e&&(e=t+` - `+e),N(e)}if(this.sublayerTitleMode===`item-title`&&r)return r}readTitleFromWebMap(e,t){return t.title||t.layerDefinition?.name}readTypeIdField(e,t){t=t.layerDefinition||t;let n=t.typeIdField;if(n&&t.fields){n=n.toLowerCase();let e=t.fields.find(e=>e.name.toLowerCase()===n);e&&(n=e.name)}return n}readTypes(e,t){t=t.layerDefinition||t,e=t.types;let n=t.editFieldsInfo,r=n?.creatorField,i=n?.editorField;return e?.map(e=>(e=V.fromJSON(e),this._fixTemplates(e.templates,r),this._fixTemplates(e.templates,i),e))}readVisible(e,t){if(t.layerDefinition?.defaultVisibility!=null)return!!t.layerDefinition.defaultVisibility;if(t.visibility!=null)return!!t.visibility}async addAttachment(e,t,n){let r=await we(this,e,t,Y,n);return this.lastEditsEventDate=new Date,r}async updateAttachment(e,t,n,r){let i=await Te(this,e,t,n,Y,r);return this.lastEditsEventDate=new Date,i}async applyEdits(e,t){return Ee(this,e,t)}async uploadAssets(e,t){return De(this,e,t)}createFieldConfigurations(){return We(this)}createPopupTemplate(e){return it(this,e)}async createGraphicsSource(n){let r={stack:[],error:void 0,hasError:!1};try{if(this._hasMemorySource()&&this.source)return this.source.load({signal:n});let{default:t}=await se(import(`./graphics/sources/FeatureLayerSource.js`),n),i=new t({layer:this,supportedSourceTypes:this.supportedSourceTypes});return e(r,ee(ce(n,()=>i.cancelLoad())??te()),!1),await i.load({signal:n}),i}catch(e){r.error=e,r.hasError=!0}finally{t(r)}}createQuery(){let e=Oe(this);e.dynamicDataSource=this.dynamicDataSource;let t=this.subtypeCode==null?null:`${this.subtypeField} = ${this.subtypeCode}`;return e.where=le(this.definitionExpression,t)||`1=1`,e}async deleteAttachments(e,t,n){let r=await ke(this,e,t,Y,n);return this.lastEditsEventDate=new Date,r}async fetchRecomputedExtents(e){return Ae(this,e,Y)}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 je(this.types,this.typeIdField,e)}getFieldAlias(e){let 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 Me(this,e,t,this.getField(e)?.domain??null)}async queryAttachments(e,t){return Ne(this,e,t,Y)}async queryFeatures(e,t){let n=await this.load(),r=await n.source.queryFeatures(G.from(e)??n.createQuery(),t),i=this.graphicOrigin;if(r?.features)for(let e of r.features)e.layer=e.sourceLayer=n,e.origin=i;return r}async queryObjectIds(e,t){return await Pe(this,e,t,Y)}async queryFeatureCount(e,t){return Fe(this,e,t,Y)}async queryExtent(e,t){return Ie(this,e,t,Y)}async queryRelatedFeatures(e,t){return Le(this,e,t,Y)}async queryRelatedFeaturesCount(e,t){return Re(this,e,t,Y)}async queryPivot(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryPivot||!r?.operations?.supportsQueryPivot)throw new s(Y,`Layer source does not support queryPivot capability`);let i=await import(`../rest/support/PivotQuery.js`),a=await n.queryPivot(i.default.from(e),t),o=this.graphicOrigin;if(a?.features)for(let e of a.features)e.layer=e.sourceLayer=this,e.origin=o;return a}async queryTopFeatures(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopFeatures||!r?.query?.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryTopFeatures capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`),a=await n.queryTopFeatures(i.default.from(e),t),o=this.graphicOrigin;if(a?.features)for(let e of a.features)e.layer=e.sourceLayer=this,e.origin=o;return a}async queryAttributeBins(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryAttributeBins)throw new s(Y,`Layer source does not support queryAttributeBins capability`);ze(e,r,Y);let i=await import(`../rest/support/AttributeBinsQuery.js`),a=await n.queryAttributeBins(i.default.from(e),t),o=this.graphicOrigin;if(a.features)for(let e of a.features)e.layer=e.sourceLayer=this,e.origin=o;return a}async queryTopObjectIds(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopObjectIds||!r?.query.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryTopObjectIds capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`);return(await n.queryTopObjectIds(i.default.from(e),t)).filter(rt)}async queryTopFeaturesExtent(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopExtents||!r?.query?.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryTopExtents capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`);return n.queryTopExtents(i.default.from(e),t)}async queryTopFeatureCount(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopCount||!r?.query?.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryFeatureCount capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`);return n.queryTopCount(i.default.from(e),t)}read(e,t){let n=e.featureCollection;if((n||e.type===`Feature Collection`)&&(this.resourceInfo=e),n){let{layers:e,showLegend:r}=n;e?.length===1&&(super.read(e[0],t),r!=null&&super.read({showLegend:r},t))}super.read(e,t),X(this.source)&&t?.origin===`service`&&([`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()};let{origin:n,layerContainerType:r}=t;if(this.dynamicDataSource)return K(t,this,`a dynamic data source cannot be written to web scenes, web maps and feature service items`),null;if(this.isTable){if((n===`web-map`||n===`web-scene`)&&r!==`tables`)return K(t,this,`a table source can only be written to tables`),null;if(this._hasMemorySource())return K(t,this,`an in-memory table source cannot be written to web scenes and web maps`),null}else if(this.loaded&&(n===`web-map`||n===`web-scene`)&&r===`tables`)return K(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 s(Y,`FeatureLayer (title: ${this.title}, id: ${this.id}) created using in-memory source cannot be cloned`);return super.clone()}serviceSupportsSpatialReference(e){return this.loaded?this.source?.type===`memory`||Xe(this,e):!1}async save(e){return this._debouncedSaveOperations(0,e)}async saveAs(e,t){return this._debouncedSaveOperations(1,t,e)}_readEditingEnabled(e,t,n){let r=e.layerDefinition?.capabilities;if(r||(r=e.capabilities,t&&n?.origin===`web-map`&&!this._hasMemorySource()&&r))return this._hasEditingCapability(r)}_hasEditingCapability(e){return e.toLowerCase().split(`,`).map(e=>e.trim()).includes(`editing`)}_writeEditingEnabled(e,t,n,r){if(!e){let e=this.capabilities?.operations?.supportsSync?`Query,Sync`:`Query`;l(`layerDefinition.capabilities`,e,t),n&&!r?.writeLayerSchema&&(t.capabilities=e)}}_fetchFirstValidLayerId(e){return i(this.url??``,{query:{f:`json`,...this.customParameters,token:this.apiKey},responseType:`json`,signal:e}).then(e=>{let 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(),H(this.renderer,this.fieldsIndex),Ke(this.timeInfo,this.fieldsIndex),this._hasMemorySource()&&this.geometryType===`mesh`&&(this.capabilities.query.supportsReturnMesh=!0),Qe(this,{origin:`service`})}canReload(){return super.canReload()&&!this._hasMemorySource()}async reloadFromService(e){let t=this.source;await t.reload({signal:e}),await this.initLayerProperties(t)}async hasDataChanged(){return Be(this)}async fetchPublishingStatus(){let e=this.source;return e?.fetchPublishingStatus?e.fetchPublishingStatus():`unavailable`}_verifyFields(){let e=this.parsedUrl?.path??`undefined`;this.objectIdField||console.log(`FeatureLayer: 'objectIdField' property is not defined (url: `+e+`)`),!this.isTable&&!this._hasMemorySource()&&e.search(/\/FeatureServer\//i)===-1&&!this.fields?.some(e=>e.type===`geometry`)&&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=>{let n=e.prototype?.attributes;n&&t&&delete n[t]})}_verifySource(){if(this._hasMemorySource()){if(this.url)throw new s(`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 s(`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){return[...e.layers||[],...e.tables||[]].find(({type:e})=>!e||this.supportedSourceTypes.has(e))?.id}};n([u({clonable:!1,readOnly:!0})],$.prototype,`_titleCreator`,null),n([u(P)],$.prototype,`attributeTableTemplate`,void 0),n([q(`service`,`capabilities`)],$.prototype,`readCapabilities`,null),n([u({json:{origins:{"web-scene":{write:!1}},write:!0}})],$.prototype,`charts`,void 0),n([u({readOnly:!0})],$.prototype,`createQueryVersion`,null),n([u({json:{read:{source:`layerDefinition.copyrightText`}}})],$.prototype,`copyright`,void 0),n([u({json:{read:{source:`layerDefinition.displayField`}}})],$.prototype,`displayField`,void 0),n([u({types:at,readOnly:!0})],$.prototype,`defaultSymbol`,void 0),n([u({type:tt})],$.prototype,`dynamicDataSource`,void 0),n([u({type:Boolean})],$.prototype,`editingEnabled`,null),n([q([`portal-item`,`web-scene`],`editingEnabled`,[`layerDefinition.capabilities`])],$.prototype,`readEditingEnabled`,null),n([q(`web-map`,`editingEnabled`,[`capabilities`,`layerDefinition.capabilities`])],$.prototype,`readEditingEnabledFromWebMap`,null),n([J([`portal-item`,`web-scene`],`editingEnabled`,{"layerDefinition.capabilities":{type:String}})],$.prototype,`writeEditingEnabled`,null),n([J(`web-map`,`editingEnabled`,{capabilities:{type:String},"layerDefinition.capabilities":{type:String}})],$.prototype,`writeEditingEnabledToWebMap`,null),n([u({readOnly:!0})],$.prototype,`effectiveEditingEnabled`,null),n([u({clonable:!1,readOnly:!0})],$.prototype,`featureTitleFields`,null),n([u({type:[Ve],json:{name:`layerDefinition.fieldConfigurations`,write:{overridePolicy(e,t,n){return{enabled:!n?.writeLayerSchema,ignoreOrigin:this.originIdOf(t)===1}}}}})],$.prototype,`fieldConfigurations`,null),n([u({...Z.fields,json:{read:{source:`layerDefinition.fields`},origins:{service:{name:`fields`},"web-map":{write:{target:`layerDefinition.fields`,overridePolicy:Q}}}}})],$.prototype,`fields`,void 0),n([u(Z.fieldsIndex)],$.prototype,`fieldsIndex`,void 0),n([u({type:de,json:{name:`formInfo`,write:!0,origins:{"web-scene":{read:!1,write:!1}}}})],$.prototype,`formTemplate`,void 0),n([u({json:{read:{source:`layerDefinition.extent`}}})],$.prototype,`fullExtent`,void 0),n([u({json:{origins:{"web-map":{write:{target:`layerDefinition.geometryType`,overridePolicy:Q,writer(e,t,n){let r=e?z.toJSON(e):null;r&&l(n,r,t)}}}},read:{source:`layerDefinition.geometryType`,reader:z.read}}})],$.prototype,`geometryType`,void 0),n([u({readOnly:!0,clonable:!1})],$.prototype,`graphicOrigin`,void 0),n([u({json:{read:{source:`layerDefinition.hasM`}}})],$.prototype,`hasM`,void 0),n([u({json:{read:{source:`layerDefinition.hasZ`}}})],$.prototype,`hasZ`,void 0),n([u(F)],$.prototype,`id`,void 0),n([u({readOnly:!0,json:{origins:{service:{read:!0}},read:!1}})],$.prototype,`infoFor3D`,void 0),n([u({json:{origins:{"web-map":{write:{target:`layerDefinition.type`}}}}})],$.prototype,`isTable`,void 0),n([q(`service`,`isTable`,[`type`,`geometryType`]),q(`isTable`,[`layerDefinition.type`,`layerDefinition.geometryType`])],$.prototype,`readIsTable`,null),n([J(`web-map`,`isTable`)],$.prototype,`writeIsTable`,null),n([u(I)],$.prototype,`labelsVisible`,void 0),n([u({type:[qe],json:{origins:{service:{name:`drawingInfo.labelingInfo`,read:U,write:!1}},name:`layerDefinition.drawingInfo.labelingInfo`,read:U,write:{layerContainerTypes:d}}})],$.prototype,`labelingInfo`,void 0),n([u({type:W,json:{name:`layerDefinition.drawingInfo.symbolLayerDrawing`,write:!0,origins:{"web-scene":{write:!1}}}})],$.prototype,`symbolLayerDrawing`,void 0),n([q([`portal-item`,`web-map`],`symbolLayerDrawing`,[`layerDefinition.drawingInfo.renderer`,`layerDefinition.drawingInfo.symbolLayerDrawing`])],$.prototype,`readSymbolLayerDrawing`,null),n([u((()=>{let e=c(L);return e.json.origins[`portal-item`]={write:{target:`layerDefinition.drawingInfo.transparency`,writer(e,t,n){l(n,ot(e),t)}}},e})())],$.prototype,`opacity`,void 0),n([u(R)],$.prototype,`legendEnabled`,void 0),n([u({type:[`show`,`hide`],json:(()=>{let e=c(ge.json);return e.origins[`portal-item`]={read:!1,write:!1},e})()})],$.prototype,`listMode`,void 0),n([q(`globalIdField`,[`layerDefinition.globalIdField`,`layerDefinition.fields`])],$.prototype,`readGlobalIdField`,null),n([u({json:{origins:{"web-map":{write:{target:`layerDefinition.objectIdField`,overridePolicy:Q}}}}})],$.prototype,`objectIdField`,void 0),n([q(`objectIdField`,[`layerDefinition.objectIdField`,`layerDefinition.fields`])],$.prototype,`readObjectIdField`,null),n([u({type:[`ArcGISFeatureLayer`],json:{write:{target:`layerType`,ignoreOrigin:!0,layerContainerTypes:d}}})],$.prototype,`operationalLayerType`,void 0),n([u(Z.outFields)],$.prototype,`outFields`,void 0),n([u({type:String,json:{origins:{"web-scene":{read:!0,write:!0}},read:!1}})],$.prototype,`path`,void 0),n([u(_e)],$.prototype,`popupEnabled`,void 0),n([u({type:r,json:{name:`popupInfo`,write:!0}})],$.prototype,`popupTemplate`,void 0),n([J(`popupTemplate`)],$.prototype,`writePopupTemplate`,null),n([u({readOnly:!0})],$.prototype,`defaultPopupTemplate`,null),n([u({types:et,json:{origins:{service:{write:{target:`drawingInfo.renderer`,enabled:!1}},"web-scene":{types:$e,name:`layerDefinition.drawingInfo.renderer`,write:{layerContainerTypes:d,overridePolicy(e,t,n){return{ignoreOrigin:n?.writeLayerSchema,layerContainerTypes:d}}}}},write:{target:`layerDefinition.drawingInfo.renderer`,overridePolicy(e,t,n){return{ignoreOrigin:n?.writeLayerSchema,layerContainerTypes:d}}}}})],$.prototype,`renderer`,null),n([q(`service`,`renderer`,[`drawingInfo.renderer`,`defaultSymbol`]),q(`renderer`,[`layerDefinition.drawingInfo.renderer`,`layerDefinition.defaultSymbol`])],$.prototype,`readRenderer`,null),n([u()],$.prototype,`resourceInfo`,void 0),n([u((()=>{let e=c(ve);return e.json.origins[`portal-item`]={read:!1,write:!1},e})())],$.prototype,`screenSizePerspectiveEnabled`,void 0),n([u({clonable:!1})],$.prototype,`source`,null),n([q(`portal-item`,`source`,[`featureSet`]),q(`web-map`,`source`,[`featureSet`])],$.prototype,`readSource`,null),n([u({json:{read:{source:`layerDefinition.extent.spatialReference`}}})],$.prototype,`spatialReference`,void 0),n([u({type:Number})],$.prototype,`subtypeCode`,void 0),n([u({readOnly:!1})],$.prototype,`subtypeField`,void 0),n([u({readOnly:!1})],$.prototype,`subtypes`,void 0),n([u({type:[B]})],$.prototype,`templates`,void 0),n([q(`templates`,[`editFieldsInfo`,`creatorField`,`editorField`,`templates`])],$.prototype,`readTemplates`,null),n([u()],$.prototype,`title`,void 0),n([q(`service`,`title`,[`name`]),q(`portal-item`,`title`,[`layerDefinition.title`,`layerDefinition.name`,`title`])],$.prototype,`readTitle`,null),n([q(`web-map`,`title`,[`layerDefinition.name`,`title`])],$.prototype,`readTitleFromWebMap`,null),n([u({type:String})],$.prototype,`sublayerTitleMode`,void 0),n([u({json:{read:!1}})],$.prototype,`type`,void 0),n([u({type:String})],$.prototype,`typeIdField`,void 0),n([q(`service`,`typeIdField`),q(`typeIdField`,[`layerDefinition.typeIdField`])],$.prototype,`readTypeIdField`,null),n([u({type:[V]})],$.prototype,`types`,void 0),n([q(`service`,`types`,[`types`]),q(`types`,[`layerDefinition.types`])],$.prototype,`readTypes`,null),n([u({type:Boolean,json:{origins:{"portal-item":{write:{target:`layerDefinition.defaultVisibility`,layerContainerTypes:d}}}}})],$.prototype,`visible`,void 0),n([q(`portal-item`,`visible`,[`visibility`,`layerDefinition.defaultVisibility`])],$.prototype,`readVisible`,null),$=n([ue(`esri.layers.FeatureLayer`)],$);export{$ as default};
|
|
2
|
+
import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import r from"../PopupTemplate.js";import i from"../request.js";import{ClonableMixin as a}from"../core/Clonable.js";import o from"../core/Collection.js";import s from"../core/Error.js";import{disposable as ee,makeHandle as te}from"../core/handleUtils.js";import{clone as c}from"../core/lang.js";import ne from"../core/Logger.js";import{destroyMaybe as re}from"../core/maybe.js";import{MultiOriginJSONSupportMixin as ie}from"../core/MultiOriginJSONSupport.js";import{setDeepValue as l}from"../core/object.js";import{debounce as ae,throwIfAbortError as oe,whenOrAbort as se,onAbort as ce}from"../core/promiseUtils.js";import{sqlAnd as le}from"../core/sql.js";import{property as u,subclass as ue}from"../core/accessorSupport/decorators.js";import{excludeTables as d}from"../core/accessorSupport/layerContainerType.js";import de from"../form/FormTemplate.js";import fe from"../geometry/SpatialReference.js";import pe from"../graphic/FeatureGraphicOrigin.js";import me from"./Layer.js";import{MemorySource as f}from"./graphics/sources/MemorySource.js";import{APIKeyMixin as he}from"./mixins/APIKeyMixin.js";import{ArcGISService as p}from"./mixins/ArcGISService.js";import{BlendLayer as m}from"./mixins/BlendLayer.js";import{CustomParametersMixin as h}from"./mixins/CustomParametersMixin.js";import{DataSeriesLayer as g}from"./mixins/DataSeriesLayer.js";import{DisplayFilteredLayer as _}from"./mixins/DisplayFilteredLayer.js";import{EditBusLayer as v}from"./mixins/EditBusLayer.js";import{FeatureEffectLayer as y}from"./mixins/FeatureEffectLayer.js";import{FeatureLayerBase as b}from"./mixins/FeatureLayerBase.js";import{FeatureReductionLayer as x}from"./mixins/FeatureReductionLayer.js";import{OperationalLayer as S}from"./mixins/OperationalLayer.js";import{OrderedLayer as C}from"./mixins/OrderedLayer.js";import{PortalLayer as w}from"./mixins/PortalLayer.js";import{PublishableLayer as T}from"./mixins/PublishableLayer.js";import{RefreshableLayer as E}from"./mixins/RefreshableLayer.js";import{ReloadableLayer as D}from"./mixins/ReloadableLayer.js";import{ScaleRangeLayer as O}from"./mixins/ScaleRangeLayer.js";import{TemporalLayer as k}from"./mixins/TemporalLayer.js";import{TrackableLayer as A}from"./mixins/TrackableLayer.js";import{titleFromUrlAndName as j,parse as M,cleanTitle as N}from"./support/arcgisLayerUrl.js";import{attributeTableTemplate as P,id as F,labelsVisible as I,opacityDrawingInfo as L,legendEnabled as R,listMode as ge,popupEnabled as _e,screenSizePerspectiveEnabled as ve}from"./support/commonProperties.js";import{ensureLayerCredential as ye,computeEffectiveEditingEnabled as be,readGlobalIdField as xe,readObjectIdField as Se,createDefaultRenderer as Ce,addAttachment as we,updateAttachment as Te,applyEdits as Ee,uploadAssets as De,createQuery as Oe,deleteAttachments as ke,fetchRecomputedExtents as Ae,getFeatureType as je,getFieldDomain as Me,queryAttachments as Ne,queryObjectIds as Pe,queryFeatureCount as Fe,queryExtent as Ie,queryRelatedFeatures as Le,queryRelatedFeaturesCount as Re,validateBinsQuery as ze,hasDataChanged as Be,geometryTypeKebabDict as z}from"./support/featureLayerUtils.js";import B from"./support/FeatureTemplate.js";import V from"./support/FeatureType.js";import Ve from"./support/FieldConfiguration.js";import{popupTemplateWithFieldConfigurations as He,fieldConfigurationsFromPopupTemplate as Ue,fieldConfigurationsFromFields as We}from"./support/fieldConfigUtils.js";import{defineFieldProperties as Ge}from"./support/fieldProperties.js";import{fixRendererFields as H,fixTimeInfoFields as Ke}from"./support/fieldUtils.js";import qe from"./support/LabelClass.js";import{reader as U}from"./support/labelingInfo.js";import{getFeatureLayerCapabilities as Je}from"./support/serviceCapabilitiesUtils.js";import W from"./support/SymbolLayerDrawing.js";import Ye from"./support/TitleCreator.js";import{serviceSupportsSpatialReference as Xe}from"./support/versionUtils.js";import{read as Ze}from"../renderers/support/jsonUtils.js";import{loadStyleRenderer as Qe}from"../renderers/support/styleUtils.js";import{webSceneRendererTypes as $e,rendererTypes as et}from"../renderers/support/typeUtils.js";import{dynamicDataSourceTypes as tt}from"../rest/layerSources/typeUtils.js";import nt from"../rest/support/FeatureSet.js";import G from"../rest/support/Query.js";import{isNumber as rt}from"../support/guards.js";import{createPopupTemplate as it}from"../support/popupUtils.js";import{symbolTypes as at}from"../symbols/support/typeUtils.js";import{opacityToTransparency as ot}from"../webdoc/support/opacityUtils.js";import{addLayerUnsupportedError as K}from"../webdoc/support/unsupportedErrors.js";import{reader as q}from"../core/accessorSupport/decorators/reader.js";import{writer as J}from"../core/accessorSupport/decorators/writer.js";const Y=`FeatureLayer`;function X(e){return e&&e instanceof o}const Z=Ge();function Q(e,t,n){let r=!!n?.writeLayerSchema;return{enabled:r,ignoreOrigin:r}}let $=class extends D(b(x(y(T(v(_(m(C(k(g(A(O(E(p(S(w(ie(h(he(a(me))))))))))))))))))))){constructor(...e){super(...e),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 pe(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.resourceInfo=null,this.screenSizePerspectiveEnabled=!0,this.spatialReference=fe.WGS84,this.subtypeCode=null,this.subtypeField=null,this.subtypes=null,this.supportedPortalItemTypes=[`Feature Service`,`Feature Collection`,`Scene Service`],this.supportedSourceTypes=new Set([`Feature Layer`,`Oriented Imagery Layer`,`Table`,`Catalog Layer`]),this.templates=null,this.title=null,this.sublayerTitleMode=`item-title`,this.type=`feature`,this.typeIdField=null,this.types=null,this.visible=!0,this._debouncedSaveOperations=ae(async(e,t,n)=>{let{save:r,saveAs:i}=await import(`./save/featureLayerUtils.js`);switch(e){case 0:return r(this,t);case 1:return i(this,n,t)}})}destroy(){this.source?.destroy()}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}load(e){let t=e==null?null:e.signal;if(this.portalItem?.loaded&&this.source)return this.addResolvingPromise(this.createGraphicsSource(t).then(e=>this.initLayerProperties(e))),Promise.resolve(this);let n=this.loadFromPortal({supportedTypes:this.supportedPortalItemTypes},e).catch(oe).then(async()=>{if(this.url&&this.layerId==null&&/FeatureServer|MapServer\/*$/i.test(this.url)){let e=await this._fetchFirstValidLayerId(t);e!=null&&(this.layerId=e)}if(!this.url&&!this._hasMemorySource())throw new s(`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(()=>ye(this,`load`,e));return this.addResolvingPromise(n),Promise.resolve(this)}get _titleCreator(){let e=this._get(`_titleCreator`);return re(e),new Ye({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,Je(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?!1: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,n){return this._readEditingEnabled(t,!0,n)}writeEditingEnabled(e,t){this._writeEditingEnabled(e,t,!1)}writeEditingEnabledToWebMap(e,t,n,r){this._writeEditingEnabled(e,t,!0,r)}get effectiveEditingEnabled(){return be(this)}get featureTitleFields(){return[...this._titleCreator.requiredFields]}set fieldConfigurations(e){if(this._hasMemorySource()||(this._override(`fieldConfigurations`,e),!this.loaded))return;let t=He(this,e);t&&this._set(`popupTemplate`,t)}get fieldConfigurations(){if(!this._hasMemorySource())return this._isOverridden(`fieldConfigurations`)?this._get(`fieldConfigurations`):Ue(this)||null}readIsTable(e,t){return t=t?.layerDefinition??t,t.type===`Table`||!t.geometryType}writeIsTable(e,t,n,r){r?.writeLayerSchema&&l(n,e?`Table`:`Feature Layer`,t)}readSymbolLayerDrawing(e,t){let n=t.layerDefinition?.drawingInfo,r=n?.renderer,i=n?.symbolLayerDrawing;return r&&i?new W(i):null}readGlobalIdField(e,t){return xe(t.layerDefinition||t)}readObjectIdField(e,t){return Se(t.layerDefinition||t)}writePopupTemplate(e,t,n,r){e&&(t[n]=e.toJSON({...r,writeFieldFormat:!r?.writeLayerSchema}))}get defaultPopupTemplate(){return this.createPopupTemplate()}set renderer(e){H(e,this.fieldsIndex),this._set(`renderer`,e)}readRenderer(e,t,n){t=t.layerDefinition||t;let r=t.drawingInfo?.renderer;if(r){let e=Ze(r,t,n)??void 0;return e||ne.getLogger(this).error(`Failed to create renderer`,{rendererDefinition:t.drawingInfo.renderer,layer:this,context:n}),e}return Ce(t,n)}get source(){return this._get(`source`)}set source(e){e||=null;let t=this._get(`source`);t!==e&&((Array.isArray(e)||e instanceof o)&&(e=new f({layer:this,items:e})),X(t)&&this._resetMemorySource(t),X(e)&&this._initMemorySource(e),this._set(`source`,e))}readSource(e,t){let n=nt.fromJSON(t.featureSet);return new f({layer:this,items:n?.features??[]})}readTemplates(e,t){let n=t.editFieldsInfo,r=n?.creatorField,i=n?.editorField;return e=e?.map(e=>B.fromJSON(e)),this._fixTemplates(e,r),this._fixTemplates(e,i),e}readTitle(e,t){let n=t.layerDefinition?.name??t.name,r=t.title||t.layerDefinition?.title;if(n){if(this.sublayerTitleMode===`item-title`)return this.url?j(this.url,n):n;let e=n;if(!e&&this.url){let t=M(this.url);t!=null&&(e=t.title)}if(!e)return;let t=this.portalItem?.title;return this.sublayerTitleMode===`item-title-and-service-name`&&t&&t!==e&&(e=t+` - `+e),N(e)}if(this.sublayerTitleMode===`item-title`&&r)return r}readTitleFromWebMap(e,t){return t.title||t.layerDefinition?.name}readTypeIdField(e,t){t=t.layerDefinition||t;let n=t.typeIdField;if(n&&t.fields){n=n.toLowerCase();let e=t.fields.find(e=>e.name.toLowerCase()===n);e&&(n=e.name)}return n}readTypes(e,t){t=t.layerDefinition||t,e=t.types;let n=t.editFieldsInfo,r=n?.creatorField,i=n?.editorField;return e?.map(e=>(e=V.fromJSON(e),this._fixTemplates(e.templates,r),this._fixTemplates(e.templates,i),e))}readVisible(e,t){if(t.layerDefinition?.defaultVisibility!=null)return!!t.layerDefinition.defaultVisibility;if(t.visibility!=null)return!!t.visibility}async addAttachment(e,t,n){let r=await we(this,e,t,Y,n);return this.lastEditsEventDate=new Date,r}async updateAttachment(e,t,n,r){let i=await Te(this,e,t,n,Y,r);return this.lastEditsEventDate=new Date,i}async applyEdits(e,t){return Ee(this,e,t)}async uploadAssets(e,t){return De(this,e,t)}createFieldConfigurations(){return We(this)}createPopupTemplate(e){return it(this,e)}async createGraphicsSource(n){let r={stack:[],error:void 0,hasError:!1};try{if(this._hasMemorySource()&&this.source)return this.source.load({signal:n});let{default:t}=await se(import(`./graphics/sources/FeatureLayerSource.js`),n),i=new t({layer:this,supportedSourceTypes:this.supportedSourceTypes});return e(r,ee(ce(n,()=>i.cancelLoad())??te()),!1),await i.load({signal:n}),i}catch(e){r.error=e,r.hasError=!0}finally{t(r)}}createQuery(){let e=Oe(this);e.dynamicDataSource=this.dynamicDataSource;let t=this.subtypeCode==null?null:`${this.subtypeField} = ${this.subtypeCode}`;return e.where=le(this.definitionExpression,t)||`1=1`,e}async deleteAttachments(e,t,n){let r=await ke(this,e,t,Y,n);return this.lastEditsEventDate=new Date,r}async fetchRecomputedExtents(e){return Ae(this,e,Y)}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 je(this.types,this.typeIdField,e)}getFieldAlias(e){let 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 Me(this,e,t,this.getField(e)?.domain??null)}async queryAttachments(e,t){return Ne(this,e,t,Y)}async queryFeatures(e,t){let n=await this.load(),r=await n.source.queryFeatures(G.from(e)??n.createQuery(),t),i=this.graphicOrigin;if(r?.features)for(let e of r.features)e.layer=e.sourceLayer=n,e.origin=i;return r}async queryObjectIds(e,t){return await Pe(this,e,t,Y)}async queryFeatureCount(e,t){return Fe(this,e,t,Y)}async queryExtent(e,t){return Ie(this,e,t,Y)}async queryRelatedFeatures(e,t){return Le(this,e,t,Y)}async queryRelatedFeaturesCount(e,t){return Re(this,e,t,Y)}async queryPivot(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryPivot||!r?.operations?.supportsQueryPivot)throw new s(Y,`Layer source does not support queryPivot capability`);let i=await import(`../rest/support/PivotQuery.js`),a=await n.queryPivot(i.default.from(e),t),o=this.graphicOrigin;if(a?.features)for(let e of a.features)e.layer=e.sourceLayer=this,e.origin=o;return a}async queryTopFeatures(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopFeatures||!r?.query?.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryTopFeatures capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`),a=await n.queryTopFeatures(i.default.from(e),t),o=this.graphicOrigin;if(a?.features)for(let e of a.features)e.layer=e.sourceLayer=this,e.origin=o;return a}async queryAttributeBins(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryAttributeBins)throw new s(Y,`Layer source does not support queryAttributeBins capability`);ze(e,r,Y);let i=await import(`../rest/support/AttributeBinsQuery.js`),a=await n.queryAttributeBins(i.default.from(e),t),o=this.graphicOrigin;if(a.features)for(let e of a.features)e.layer=e.sourceLayer=this,e.origin=o;return a}async queryTopObjectIds(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopObjectIds||!r?.query.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryTopObjectIds capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`);return(await n.queryTopObjectIds(i.default.from(e),t)).filter(rt)}async queryTopFeaturesExtent(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopExtents||!r?.query?.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryTopExtents capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`);return n.queryTopExtents(i.default.from(e),t)}async queryTopFeatureCount(e,t){let{source:n,capabilities:r}=await this.load();if(!n.queryTopCount||!r?.query?.supportsTopFeaturesQuery)throw new s(Y,`Layer source does not support queryFeatureCount capability`);let i=await import(`../rest/support/TopFeaturesQuery.js`);return n.queryTopCount(i.default.from(e),t)}read(e,t){let n=e.featureCollection;if((n||e.type===`Feature Collection`)&&(this.resourceInfo=e),n){let{layers:e,showLegend:r}=n;e?.length===1&&(super.read(e[0],t),r!=null&&super.read({showLegend:r},t))}super.read(e,t),X(this.source)&&t?.origin===`service`&&([`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()};let{origin:n,layerContainerType:r}=t;if(this.dynamicDataSource)return K(t,this,`a dynamic data source cannot be written to web scenes, web maps and feature service items`),null;if(this.isTable){if((n===`web-map`||n===`web-scene`)&&r!==`tables`)return K(t,this,`a table source can only be written to tables`),null;if(this._hasMemorySource())return K(t,this,`an in-memory table source cannot be written to web scenes and web maps`),null}else if(this.loaded&&(n===`web-map`||n===`web-scene`)&&r===`tables`)return K(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 s(Y,`FeatureLayer (title: ${this.title}, id: ${this.id}) created using in-memory source cannot be cloned`);return super.clone()}serviceSupportsSpatialReference(e){return this.loaded?this.source?.type===`memory`||Xe(this,e):!1}async save(e){return this._debouncedSaveOperations(0,e)}async saveAs(e,t){return this._debouncedSaveOperations(1,t,e)}_readEditingEnabled(e,t,n){let r=e.layerDefinition?.capabilities;if(r||(r=e.capabilities,t&&n?.origin===`web-map`&&!this._hasMemorySource()&&r))return this._hasEditingCapability(r)}_hasEditingCapability(e){return e.toLowerCase().split(`,`).map(e=>e.trim()).includes(`editing`)}_writeEditingEnabled(e,t,n,r){if(!e){let e=this.capabilities?.operations?.supportsSync?`Query,Sync`:`Query`;l(`layerDefinition.capabilities`,e,t),n&&!r?.writeLayerSchema&&(t.capabilities=e)}}_fetchFirstValidLayerId(e){return i(this.url??``,{query:{f:`json`,...this.customParameters,token:this.apiKey},responseType:`json`,signal:e}).then(e=>{let 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(),H(this.renderer,this.fieldsIndex),Ke(this.timeInfo,this.fieldsIndex),this._hasMemorySource()&&this.geometryType===`mesh`&&(this.capabilities.query.supportsReturnMesh=!0),Qe(this,{origin:`service`})}canReload(){return super.canReload()&&!this._hasMemorySource()}async reloadFromService(e){let t=this.source;await t.reload({signal:e}),await this.initLayerProperties(t)}async hasDataChanged(){return Be(this)}async fetchPublishingStatus(){let e=this.source;return e?.fetchPublishingStatus?e.fetchPublishingStatus():`unavailable`}_verifyFields(){let e=this.parsedUrl?.path??`undefined`;this.objectIdField||console.log(`FeatureLayer: 'objectIdField' property is not defined (url: `+e+`)`),!this.isTable&&!this._hasMemorySource()&&e.search(/\/FeatureServer\//i)===-1&&!this.fields?.some(e=>e.type===`geometry`)&&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=>{let n=e.prototype?.attributes;n&&t&&delete n[t]})}_verifySource(){if(this._hasMemorySource()){if(this.url)throw new s(`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 s(`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){return[...e.layers||[],...e.tables||[]].find(({type:e})=>!e||this.supportedSourceTypes.has(e))?.id}};n([u({clonable:!1,readOnly:!0})],$.prototype,`_titleCreator`,null),n([u(P)],$.prototype,`attributeTableTemplate`,void 0),n([q(`service`,`capabilities`)],$.prototype,`readCapabilities`,null),n([u({json:{origins:{"web-scene":{write:!1}},write:!0}})],$.prototype,`charts`,void 0),n([u({readOnly:!0})],$.prototype,`createQueryVersion`,null),n([u({json:{read:{source:`layerDefinition.copyrightText`}}})],$.prototype,`copyright`,void 0),n([u({json:{read:{source:`layerDefinition.displayField`}}})],$.prototype,`displayField`,void 0),n([u({types:at,readOnly:!0})],$.prototype,`defaultSymbol`,void 0),n([u({types:tt})],$.prototype,`dynamicDataSource`,void 0),n([u({type:Boolean})],$.prototype,`editingEnabled`,null),n([q([`portal-item`,`web-scene`],`editingEnabled`,[`layerDefinition.capabilities`])],$.prototype,`readEditingEnabled`,null),n([q(`web-map`,`editingEnabled`,[`capabilities`,`layerDefinition.capabilities`])],$.prototype,`readEditingEnabledFromWebMap`,null),n([J([`portal-item`,`web-scene`],`editingEnabled`,{"layerDefinition.capabilities":{type:String}})],$.prototype,`writeEditingEnabled`,null),n([J(`web-map`,`editingEnabled`,{capabilities:{type:String},"layerDefinition.capabilities":{type:String}})],$.prototype,`writeEditingEnabledToWebMap`,null),n([u({readOnly:!0})],$.prototype,`effectiveEditingEnabled`,null),n([u({clonable:!1,readOnly:!0})],$.prototype,`featureTitleFields`,null),n([u({type:[Ve],json:{name:`layerDefinition.fieldConfigurations`,write:{overridePolicy(e,t,n){return{enabled:!n?.writeLayerSchema,ignoreOrigin:this.originIdOf(t)===1}}}}})],$.prototype,`fieldConfigurations`,null),n([u({...Z.fields,json:{read:{source:`layerDefinition.fields`},origins:{service:{name:`fields`},"web-map":{write:{target:`layerDefinition.fields`,overridePolicy:Q}}}}})],$.prototype,`fields`,void 0),n([u(Z.fieldsIndex)],$.prototype,`fieldsIndex`,void 0),n([u({type:de,json:{name:`formInfo`,write:!0,origins:{"web-scene":{read:!1,write:!1}}}})],$.prototype,`formTemplate`,void 0),n([u({json:{read:{source:`layerDefinition.extent`}}})],$.prototype,`fullExtent`,void 0),n([u({json:{origins:{"web-map":{write:{target:`layerDefinition.geometryType`,overridePolicy:Q,writer(e,t,n){let r=e?z.toJSON(e):null;r&&l(n,r,t)}}}},read:{source:`layerDefinition.geometryType`,reader:z.read}}})],$.prototype,`geometryType`,void 0),n([u({readOnly:!0,clonable:!1})],$.prototype,`graphicOrigin`,void 0),n([u({json:{read:{source:`layerDefinition.hasM`}}})],$.prototype,`hasM`,void 0),n([u({json:{read:{source:`layerDefinition.hasZ`}}})],$.prototype,`hasZ`,void 0),n([u(F)],$.prototype,`id`,void 0),n([u({readOnly:!0,json:{origins:{service:{read:!0}},read:!1}})],$.prototype,`infoFor3D`,void 0),n([u({json:{origins:{"web-map":{write:{target:`layerDefinition.type`}}}}})],$.prototype,`isTable`,void 0),n([q(`service`,`isTable`,[`type`,`geometryType`]),q(`isTable`,[`layerDefinition.type`,`layerDefinition.geometryType`])],$.prototype,`readIsTable`,null),n([J(`web-map`,`isTable`)],$.prototype,`writeIsTable`,null),n([u(I)],$.prototype,`labelsVisible`,void 0),n([u({type:[qe],json:{origins:{service:{name:`drawingInfo.labelingInfo`,read:U,write:!1}},name:`layerDefinition.drawingInfo.labelingInfo`,read:U,write:{layerContainerTypes:d}}})],$.prototype,`labelingInfo`,void 0),n([u({type:W,json:{name:`layerDefinition.drawingInfo.symbolLayerDrawing`,write:!0,origins:{"web-scene":{write:!1}}}})],$.prototype,`symbolLayerDrawing`,void 0),n([q([`portal-item`,`web-map`],`symbolLayerDrawing`,[`layerDefinition.drawingInfo.renderer`,`layerDefinition.drawingInfo.symbolLayerDrawing`])],$.prototype,`readSymbolLayerDrawing`,null),n([u((()=>{let e=c(L);return e.json.origins[`portal-item`]={write:{target:`layerDefinition.drawingInfo.transparency`,writer(e,t,n){l(n,ot(e),t)}}},e})())],$.prototype,`opacity`,void 0),n([u(R)],$.prototype,`legendEnabled`,void 0),n([u({type:[`show`,`hide`],json:(()=>{let e=c(ge.json);return e.origins[`portal-item`]={read:!1,write:!1},e})()})],$.prototype,`listMode`,void 0),n([q(`globalIdField`,[`layerDefinition.globalIdField`,`layerDefinition.fields`])],$.prototype,`readGlobalIdField`,null),n([u({json:{origins:{"web-map":{write:{target:`layerDefinition.objectIdField`,overridePolicy:Q}}}}})],$.prototype,`objectIdField`,void 0),n([q(`objectIdField`,[`layerDefinition.objectIdField`,`layerDefinition.fields`])],$.prototype,`readObjectIdField`,null),n([u({type:[`ArcGISFeatureLayer`],json:{write:{target:`layerType`,ignoreOrigin:!0,layerContainerTypes:d}}})],$.prototype,`operationalLayerType`,void 0),n([u(Z.outFields)],$.prototype,`outFields`,void 0),n([u({type:String,json:{origins:{"web-scene":{read:!0,write:!0}},read:!1}})],$.prototype,`path`,void 0),n([u(_e)],$.prototype,`popupEnabled`,void 0),n([u({type:r,json:{name:`popupInfo`,write:!0}})],$.prototype,`popupTemplate`,void 0),n([J(`popupTemplate`)],$.prototype,`writePopupTemplate`,null),n([u({readOnly:!0})],$.prototype,`defaultPopupTemplate`,null),n([u({types:et,json:{origins:{service:{write:{target:`drawingInfo.renderer`,enabled:!1}},"web-scene":{types:$e,name:`layerDefinition.drawingInfo.renderer`,write:{layerContainerTypes:d,overridePolicy(e,t,n){return{ignoreOrigin:n?.writeLayerSchema,layerContainerTypes:d}}}}},write:{target:`layerDefinition.drawingInfo.renderer`,overridePolicy(e,t,n){return{ignoreOrigin:n?.writeLayerSchema,layerContainerTypes:d}}}}})],$.prototype,`renderer`,null),n([q(`service`,`renderer`,[`drawingInfo.renderer`,`defaultSymbol`]),q(`renderer`,[`layerDefinition.drawingInfo.renderer`,`layerDefinition.defaultSymbol`])],$.prototype,`readRenderer`,null),n([u()],$.prototype,`resourceInfo`,void 0),n([u((()=>{let e=c(ve);return e.json.origins[`portal-item`]={read:!1,write:!1},e})())],$.prototype,`screenSizePerspectiveEnabled`,void 0),n([u({clonable:!1})],$.prototype,`source`,null),n([q(`portal-item`,`source`,[`featureSet`]),q(`web-map`,`source`,[`featureSet`])],$.prototype,`readSource`,null),n([u({json:{read:{source:`layerDefinition.extent.spatialReference`}}})],$.prototype,`spatialReference`,void 0),n([u({type:Number})],$.prototype,`subtypeCode`,void 0),n([u({readOnly:!1})],$.prototype,`subtypeField`,void 0),n([u({readOnly:!1})],$.prototype,`subtypes`,void 0),n([u({type:[B]})],$.prototype,`templates`,void 0),n([q(`templates`,[`editFieldsInfo`,`creatorField`,`editorField`,`templates`])],$.prototype,`readTemplates`,null),n([u()],$.prototype,`title`,void 0),n([q(`service`,`title`,[`name`]),q(`portal-item`,`title`,[`layerDefinition.title`,`layerDefinition.name`,`title`])],$.prototype,`readTitle`,null),n([q(`web-map`,`title`,[`layerDefinition.name`,`title`])],$.prototype,`readTitleFromWebMap`,null),n([u({type:String})],$.prototype,`sublayerTitleMode`,void 0),n([u({json:{read:!1}})],$.prototype,`type`,void 0),n([u({type:String})],$.prototype,`typeIdField`,void 0),n([q(`service`,`typeIdField`),q(`typeIdField`,[`layerDefinition.typeIdField`])],$.prototype,`readTypeIdField`,null),n([u({type:[V]})],$.prototype,`types`,void 0),n([q(`service`,`types`,[`types`]),q(`types`,[`layerDefinition.types`])],$.prototype,`readTypes`,null),n([u({type:Boolean,json:{origins:{"portal-item":{write:{target:`layerDefinition.defaultVisibility`,layerContainerTypes:d}}}}})],$.prototype,`visible`,void 0),n([q(`portal-item`,`visible`,[`visibility`,`layerDefinition.defaultVisibility`])],$.prototype,`readVisible`,null),$=n([ue(`esri.layers.FeatureLayer`)],$);export{$ as default};
|