@arcgis/core 6.0.0-next.29 → 6.0.0-next.30
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/WebDocument2D.js +1 -1
- package/WebMap.d.ts +3 -19
- package/WebMap.js +1 -1
- package/WebScene.js +1 -1
- package/arcgisGlobal.d.ts +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/039d9bc5b5015012f811.js +1 -0
- package/assets/esri/core/workers/chunks/{b01688ccc29d33bfc82d.js → 28a821de9dbf10324033.js} +1 -1
- package/assets/esri/core/workers/chunks/{d3c3fb079ad97970f834.js → 4fb2fcc95f852bf8f86c.js} +1 -1
- package/assets/esri/core/workers/chunks/{84940d8e14caf5a27e04.js → 64b360625c68cb863a08.js} +1 -1
- package/assets/esri/core/workers/chunks/71f792a20077aa739f87.js +1 -0
- package/assets/esri/core/workers/chunks/{e480e7d5f40049a2053b.js → 7af4edc6e87d27b9d467.js} +1 -1
- package/assets/esri/core/workers/chunks/90c1d10eae7ae71889b0.js +1 -0
- package/assets/esri/core/workers/chunks/{8a485130781b49dbf608.js → 9d40786c5ceface786ba.js} +1 -1
- package/assets/esri/core/workers/chunks/aba259a70bee68d2edb7.js +1 -0
- package/assets/esri/core/workers/chunks/c33a9635c294c8774977.js +1 -0
- package/assets/esri/views/3d/environment/resources/milkyway-band.avif +0 -0
- package/chunks/GlobalIllumination.glsl.js +16 -10
- package/chunks/GlobalIlluminationBlur.glsl.js +14 -14
- package/chunks/GlobalIlluminationUpscale.glsl.js +4 -4
- package/chunks/RibbonLine.glsl.js +78 -75
- package/config.js +1 -1
- package/core/workers/WorkerHandle.js +1 -1
- package/kernel.js +1 -1
- package/layers/WMTSLayer.d.ts +1 -1
- package/layers/WMTSLayer.js +1 -1
- package/layers/mixins/TiledImagery.d.ts +7 -0
- package/layers/support/WMTSSublayer.d.ts +5 -5
- package/networks/Network.js +1 -1
- package/networks/support/TopologyValidationJobInfo.js +1 -1
- package/package.json +2 -2
- package/rest/networks/support/ValidateNetworkTopologyResult.js +1 -1
- package/support/timeUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
- package/views/2d/layers/GeospatialPDFLayerView2D.js +1 -1
- package/views/2d/layers/SketchLayerView2D.js +1 -1
- package/views/2d/layers/WMTSLayerView2D.js +1 -1
- package/views/2d/types.d.ts +2 -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/visualElements/Object3DVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/StageObjectVisualElement.js +2 -0
- package/views/3d/layers/WMTSLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/Graphics3DBufferGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineCalloutSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayerConstants.js +1 -1
- package/views/3d/layers/graphics/Graphics3DStageObjectGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/elevationAlignmentUtils.js +1 -1
- package/views/3d/layers/graphics/pointUtils.js +1 -1
- package/views/3d/terrain/ExtentHelper.js +1 -1
- package/views/3d/terrain/PatchGeometryFactory.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/SphericalPatch.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/tileUtils.js +1 -1
- package/views/3d/types.d.ts +2 -1
- package/views/3d/webgl-engine/Stage.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexInfo.glsl.js +10 -11
- package/views/3d/webgl-engine/core/shaderLibrary/util/PackedUint32.glsl.js +2 -0
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationBlur.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationUpscale.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/globalIlluminationUniforms.js +2 -0
- package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/PackedUint32.js +2 -0
- package/views/3d/webgl-engine/lib/PathGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/PathVertexInfo.js +1 -1
- package/views/3d/webgl-engine/lib/RibbonLineVertexInfo.js +2 -0
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterialBaseInstance.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterialBaseInstance.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
- package/views/3d/webgl-engine/parts/Model.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineLayouts.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js +1 -1
- package/views/SelectionManager.d.ts +5 -5
- package/views/SelectionManager.js +1 -1
- package/views/input/InputManager.js +1 -1
- package/views/layers/WMTSLayerView.d.ts +16 -0
- package/views/layers/WMTSLayerView.js +2 -0
- package/views/layers/support/highlightUtils.js +1 -1
- package/views/selection/SelectionOperation.js +1 -1
- package/views/selection/types.d.ts +3 -3
- package/views/support/GeometryWorker.js +1 -1
- package/views/support/GeometryWorkerHandle.js +1 -1
- package/views/support/selectionUtils.js +1 -1
- package/webdoc/support/webdocLoadUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/RelationshipElementInput.js +1 -1
- package/widgets/FeatureTable/AttachmentsColumn.js +1 -1
- package/widgets/FeatureTable/RelationshipColumn.js +1 -1
- package/widgets/OrientedImageryViewer/imageMeasurementWorkerUtils.js +1 -1
- package/widgets/support/SelectionList/GroupLayerItem.d.ts +5 -5
- package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
- package/widgets/support/SelectionList/ItemBase.d.ts +3 -3
- package/widgets/support/SelectionList/LayerItem.js +1 -1
- package/widgets/support/SelectionList/SelectionListViewModel.d.ts +5 -6
- package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
- package/widgets/support/SelectionList/types.d.ts +3 -1
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
- package/widgets/support/Selector2D/selectorUtils.js +1 -1
- package/widgets/support/symbolPreviewUtils.js +1 -1
- package/assets/esri/core/workers/chunks/2de4296590bf9f9e9add.js +0 -1
- package/assets/esri/core/workers/chunks/4976f5567fc7f1b63d10.js +0 -1
- package/assets/esri/core/workers/chunks/53c7510df09b71ab5646.js +0 -1
- package/assets/esri/core/workers/chunks/66c2a28a851130b87c04.js +0 -1
- package/assets/esri/core/workers/chunks/e7aaf7579592b79d6dd7.js +0 -1
- package/layers/geospatialPDF/CIM2DLayerview.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/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{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting 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{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as ee}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{forwardLocalUp as te}from"../views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js";import{mainLightIntensity as ne}from"../views/3d/webgl-engine/core/shaderLibrary/shading/lightingUniforms.js";import{LineStipple as re,computePixelSize as ie}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as ae}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{readFragmentShadow as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js";import{metersPerRenderUnit as o,screenPixelSizePerDistance as s,inverseProjectionMatrix as c,nearFar as l,viewport as u,pixelRatio as oe}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as f,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{getPackedUint32Field as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/PackedUint32.glsl.js";import{addProjViewLocalOrigin as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as _}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as v,If as y}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{ribbonLineVertexInfoPacking as b,ribbonVertexTypeSignBit as se,ribbonSubdivisionScale as ce,ribbonInsideJoinOffset as x}from"../views/3d/webgl-engine/lib/RibbonLineVertexInfo.js";import{alphaCutoff as S}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as C}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{groundMetersToScreenRatio as w,planarDistanceToScreenRatio as T}from"../views/3d/webgl-engine/shaders/lineUniforms.js";import{outputColorHighlightOLID as E}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as D}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as O}from"../views/webgl/ShaderBuilder.js";const k=1;function A(k){let A=new O,{attributes:j,varyings:M,vertex:N,fragment:P}=A,{applyMarkerOffset:F,draped:I,shadingEnabled:L,output:R,capType:z,stippleEnabled:B,falloffEnabled:V,wireframe:H,innerColorEnabled:U,hasAnimation:W,hasScreenSizePerspective:G,worldSized:K,imagePattern:le,useFlatJoinVarying:q}=k,J=z===2,Y=B&&J,X=V||Y,ue=B||J,Z=B&&k.usePerspectiveCorrectStipple,Q=D(k).createBuilder(A,k);N.inputs.add(`position`,()=>Q.getTextureAttribute(`position`)),k.hasVVSize?N.inputs.add(`sizeFeatureAttribute`,()=>Q.getTextureAttribute(`sizeFeatureAttribute`)):N.inputs.add(`size`,()=>k.hasVertexSize?Q.getTextureAttribute(`size`):v`1.0`),k.hasVVOpacity&&N.inputs.add(`opacityFeatureAttribute`,()=>Q.getTextureAttribute(`opacityFeatureAttribute`)),k.hasVVColor?N.inputs.add(`colorFeatureAttribute`,()=>Q.getTextureAttribute(`colorFeatureAttribute`)):N.inputs.add(`color`,()=>k.hasVertexColor?Q.getTextureAttribute(`color`):v`vec4(1.0)`),P.include(r),A.include(t,k),A.include(re,k),R===11?(A.varyings.add(`objectAndLayerIdColorVarying`,`vec4`),N.code.add(v`
|
|
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
|
+
`),P.code.add(v`void outputObjectAndLayerIdColor() {
|
|
11
11
|
fragColor = objectAndLayerIdColorVarying;
|
|
12
|
-
}`)):(
|
|
12
|
+
}`)):(N.code.add(v`void forwardObjectAndLayerIdColor() {}`),P.code.add(v`void outputObjectAndLayerIdColor() {}`));let $=F&&!I;$&&A.include(ae,k),h(N,k),I&&(K||B)&&N.uniforms.add(K?w:T),K&&!I&&N.uniforms.add(o,s),N.uniforms.add(c,l,u,new _(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),N.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),N.constants.add(`EPS`,`float`,.001),N.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,k.numJoinSubdivisions),j.add(`ribbonLineVertexInfo`,`uint`),M.add(`vColor`,`vec4`),M.add(`vpos`,`vec3`,{invariant:!0}),M.add(`vLineDistance`,`float`),M.add(`vLineWidth`,`float`),q?M.add(`vIsInsideJoin`,`int`,{flat:!0}):M.add(`vIsInsideJoin`,`float`),M.add(`vStretchFactor`,`float`),M.add(`vJoinCenterLineSDFs`,`vec2`),M.add(`vSubdivisionFactor`,`float`),B&&M.add(`vLineSizeInv`,`float`),X&&M.add(`vLineDistanceNorm`,`float`),J&&(M.add(`vSegmentSDF`,`float`),M.add(`vReverseSegmentSDF`,`float`)),N.code.add(v`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
|
+
}`),N.code.add(v`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
|
+
}`),N.code.add(v`
|
|
29
29
|
void clip(
|
|
30
30
|
inout vec4 pos,
|
|
31
31
|
inout vec4 prev,
|
|
32
32
|
inout vec4 next,
|
|
33
|
-
${
|
|
33
|
+
${y(Z,v`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
|
+
${y(Z,v`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
|
+
${y(Z,v`u0 = mix(u0, nextU0, clipFactor); prevU0 = u0;`)}
|
|
55
55
|
pos = mix(pos, next, clipFactor);
|
|
56
56
|
prev = pos;
|
|
57
57
|
} else {
|
|
@@ -63,58 +63,61 @@ 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
|
+
${y(Z,v`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
|
+
${y(Z,v`nextU0 = mix(nextU0, u0, clipFactor);`)}
|
|
74
74
|
next = mix(next, pos, clipFactor);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
`),
|
|
78
|
+
`),N.uniforms.add(oe),N.constants.add(`aaWidth`,`float`,1),P.constants.add(`aaWidth`,`float`,1);let de=b.getField(1);return N.main.add(v`
|
|
79
|
+
uint vertexTypeBits = ${m(b,1,v`ribbonLineVertexInfo`)};
|
|
80
|
+
// Sign-extend the packed type; casting its unsigned field to int does not extend the field's sign bit.
|
|
81
|
+
uint signExtendedVertexTypeBits = (vertexTypeBits & ${v.hexuint(se)}) != 0u ? (vertexTypeBits | ~${v.hexuint(de.max)}) : vertexTypeBits;
|
|
82
|
+
int signedVertexType = int(signExtendedVertexTypeBits);
|
|
83
|
+
float subdivisionFactor = float(${m(b,2,v`ribbonLineVertexInfo`)}) / ${v.float(ce)};
|
|
79
84
|
vec3 position = ${Q.getTextureAttribute(`position`)};
|
|
80
|
-
float u0 = ${Q.getTextureAttribute(`u0`)}
|
|
81
|
-
${
|
|
85
|
+
${B?v`float u0 = ${Q.getTextureAttribute(`u0`)};`:``}
|
|
86
|
+
${B&&K?v`
|
|
82
87
|
float prevU0 = ${Q.getTextureAttribute(`u0`,-1)};
|
|
83
88
|
float nextU0 = ${Q.getTextureAttribute(`u0`,1)};
|
|
84
|
-
${
|
|
89
|
+
${y(!I,v`
|
|
85
90
|
u0 *= metersPerRenderUnit;
|
|
86
91
|
prevU0 *= metersPerRenderUnit;
|
|
87
92
|
nextU0 *= metersPerRenderUnit;
|
|
88
93
|
`)}
|
|
89
|
-
|
|
90
|
-
|
|
94
|
+
`:``}
|
|
91
95
|
// unpack values from vertex type
|
|
92
|
-
|
|
93
|
-
${
|
|
94
|
-
bool isInsideJoin = vertexType >
|
|
95
|
-
vertexType -= isInsideJoin ?
|
|
96
|
+
int vertexType = abs(signedVertexType);
|
|
97
|
+
${y(!q,v`
|
|
98
|
+
bool isInsideJoin = vertexType > ${v.int(x)};
|
|
99
|
+
vertexType -= isInsideJoin ? ${v.int(x)} : 0;
|
|
96
100
|
`)}
|
|
97
|
-
float lineSide = sign(
|
|
98
|
-
bool isStartVertex = vertexType == 2
|
|
101
|
+
float lineSide = float(sign(signedVertexType));
|
|
102
|
+
bool isStartVertex = vertexType == 2 || vertexType == 3;
|
|
99
103
|
vec3 prevPosition = ${Q.getTextureAttribute(`position`,-1)};
|
|
100
104
|
vec3 nextPosition = ${Q.getTextureAttribute(`position`,1)};
|
|
101
105
|
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
gl_Position = ${u};
|
|
106
|
+
// Cleared geometry has a zero descriptor; a zero vertex type marks geometry to hide.
|
|
107
|
+
if (signedVertexType == 0) {
|
|
108
|
+
gl_Position = ${i};
|
|
106
109
|
}
|
|
107
110
|
else {
|
|
108
111
|
vec4 pos = view * vec4(position, 1.0);
|
|
109
112
|
vec4 prev = view * vec4(prevPosition, 1.0);
|
|
110
113
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
111
114
|
|
|
112
|
-
bool isJoin = vertexType < 3
|
|
113
|
-
`),$&&
|
|
115
|
+
bool isJoin = vertexType < 3;
|
|
116
|
+
`),$&&N.main.add(v`vec4 other = isStartVertex ? next : prev;
|
|
114
117
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
115
118
|
if (!isJoin && !markersHidden) {
|
|
116
119
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
117
|
-
}`),
|
|
120
|
+
}`),A.include(f),N.code.add(v`
|
|
118
121
|
vec2 computeJoinAndCapDisplacement(
|
|
119
122
|
bool isJoin,
|
|
120
123
|
bool isStartVertex,
|
|
@@ -160,7 +163,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
160
163
|
}
|
|
161
164
|
|
|
162
165
|
// Compute stretch compensation for feathering.
|
|
163
|
-
${
|
|
166
|
+
${y(q,v`
|
|
164
167
|
if (subdivisionFactor > 0.0) {
|
|
165
168
|
vIsInsideJoin = 1;
|
|
166
169
|
}
|
|
@@ -194,14 +197,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
194
197
|
}
|
|
195
198
|
|
|
196
199
|
if (isOutside && displacementLen > miterLimit * lineWidth) {
|
|
197
|
-
${
|
|
200
|
+
${y(k.roundJoins,v`
|
|
198
201
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
199
202
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
200
|
-
float factor = ${
|
|
203
|
+
float factor = ${B?v`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:v`subdivisionFactor`};
|
|
201
204
|
|
|
202
205
|
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
203
206
|
joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
|
|
204
|
-
`,
|
|
207
|
+
`,v`
|
|
205
208
|
/**
|
|
206
209
|
* Convert to bevel join if miterLimit is exceeded.
|
|
207
210
|
* Here vertices with a subdivisionFactor > 0 are either START vertices or
|
|
@@ -213,19 +216,19 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
213
216
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
214
217
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
215
218
|
|
|
216
|
-
${
|
|
219
|
+
${y(B,v`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,v`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
|
|
217
220
|
`)}
|
|
218
221
|
displacementLen = lineWidth;
|
|
219
222
|
}
|
|
220
223
|
} else {
|
|
221
224
|
joinDisplacementDir = perpendicular(isStartVertex ? right : left);
|
|
222
|
-
${
|
|
225
|
+
${z===0?``:v`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`}
|
|
223
226
|
}
|
|
224
227
|
|
|
225
228
|
return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
|
|
226
229
|
}
|
|
227
|
-
`),
|
|
228
|
-
clip(pos, prev, next, ${
|
|
230
|
+
`),N.main.add(v`
|
|
231
|
+
clip(pos, prev, next, ${y(Z,v`u0, prevU0, nextU0,`)} isStartVertex);
|
|
229
232
|
|
|
230
233
|
vec3 clippedPos = pos.xyz;
|
|
231
234
|
vec3 clippedCenter = mix(pos.xyz, isStartVertex ? next.xyz : prev.xyz, 0.5);
|
|
@@ -237,29 +240,29 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
237
240
|
vec3 left = (pos.xyz - prev.xyz);
|
|
238
241
|
vec3 right = (next.xyz - pos.xyz);
|
|
239
242
|
|
|
240
|
-
float lineSize = getSize(${
|
|
241
|
-
${
|
|
242
|
-
${
|
|
243
|
+
float lineSize = getSize(${y(G,`clippedPos`)});
|
|
244
|
+
${y(B&&G,`float patternLineSize = getSize(clippedCenter);`)}
|
|
245
|
+
${y(B&&!G,`float patternLineSize = lineSize;`)}
|
|
243
246
|
|
|
244
|
-
${
|
|
245
|
-
${
|
|
247
|
+
${y(K,v`
|
|
248
|
+
${y(I,v`float lineSizeScreen = lineSize * groundMetersToScreenRatio;`,v`
|
|
246
249
|
float metersPerScreenPixel = max(-clippedPos.z, nearFar[0]) * metersPerRenderUnit * screenPixelSizePerDistance;
|
|
247
250
|
float lineSizeScreen = lineSize / metersPerScreenPixel;
|
|
248
251
|
`)}
|
|
249
252
|
float lineWidth = lineSizeScreen * pixelRatio + aaWidth;
|
|
250
|
-
`,
|
|
253
|
+
`,v`
|
|
251
254
|
float lineWidth = lineSize * pixelRatio + aaWidth;
|
|
252
255
|
`)}
|
|
253
256
|
|
|
254
257
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
255
|
-
${
|
|
256
|
-
`),
|
|
258
|
+
${B?`vLineSizeInv = noPerspectiveWrite(1.0 / ${K?`lineSize`:`max(lineSize, 1.0)`}, pos.w);`:``}
|
|
259
|
+
`),ue&&N.main.add(v`
|
|
257
260
|
float isEndVertex = float(!isStartVertex);
|
|
258
261
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
259
262
|
vec3 segment = mix(right, left, isEndVertex);
|
|
260
263
|
${J?`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:``}
|
|
261
|
-
`),
|
|
262
|
-
vIsInsideJoin = ${q?
|
|
264
|
+
`),N.main.add(v`
|
|
265
|
+
vIsInsideJoin = ${q?v`0`:v`float(isInsideJoin)`};
|
|
263
266
|
vStretchFactor = 1.0;
|
|
264
267
|
vSubdivisionFactor = 0.0;
|
|
265
268
|
vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);
|
|
@@ -271,7 +274,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
271
274
|
right,
|
|
272
275
|
lineSide,
|
|
273
276
|
lineWidth,
|
|
274
|
-
|
|
277
|
+
subdivisionFactor,
|
|
275
278
|
pos.w
|
|
276
279
|
);
|
|
277
280
|
vec3 segmentDirection = isStartVertex ? right : left;
|
|
@@ -288,10 +291,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
288
291
|
float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
|
|
289
292
|
|
|
290
293
|
vLineDistance = lineWidth * lineDistNorm;
|
|
291
|
-
${X?
|
|
294
|
+
${X?v`vLineDistanceNorm = lineDistNorm;`:``}
|
|
292
295
|
|
|
293
296
|
pos.xyz += displacement;
|
|
294
|
-
`),
|
|
297
|
+
`),N.main.add(v`if (isJoin) {
|
|
295
298
|
vec2 joinCenterToVertex = displacementXY;
|
|
296
299
|
vec2 leftCenterlineDir = left.xy;
|
|
297
300
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -306,36 +309,36 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
|
306
309
|
),
|
|
307
310
|
pos.w
|
|
308
311
|
);
|
|
309
|
-
}`),J&&
|
|
312
|
+
}`),J&&N.main.add(v`vec2 segmentDir = normalize(segment.xy);
|
|
310
313
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
311
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),
|
|
312
|
-
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),
|
|
314
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),B&&(I?N.main.add(`float stippleDistanceToScreenRatio = ${K?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`};`):N.main.add(v`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
315
|
+
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),N.main.add(v`
|
|
313
316
|
float segmentLengthScreenDouble = length(segment.xy);
|
|
314
317
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
315
318
|
float discreteStippleDistanceToScreenRatio = discretizeStippleDistanceToScreenRatio(stippleDistanceToScreenRatio);
|
|
316
|
-
float segmentLengthRender = ${
|
|
319
|
+
float segmentLengthRender = ${y(K,v`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,v`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
|
|
317
320
|
|
|
318
|
-
${
|
|
319
|
-
float segmentStartRender = ${
|
|
321
|
+
${y(!I||K,v`
|
|
322
|
+
float segmentStartRender = ${y(K,v`mix(u0, prevU0, isEndVertex)`,v`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
|
|
320
323
|
`)}
|
|
321
324
|
|
|
322
325
|
vStipplePatternStretch = stippleDistanceToScreenRatio / discreteStippleDistanceToScreenRatio;
|
|
323
|
-
`),
|
|
324
|
-
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):
|
|
325
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),
|
|
326
|
+
`),I?N.main.add(v`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
|
|
327
|
+
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):N.main.add(v`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
|
|
328
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),N.uniforms.add(new _(`stipplePatternPixelSize`,e=>ie(e))),N.main.add(v`
|
|
326
329
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
327
330
|
vec2 stippleDistanceLimits;
|
|
328
331
|
|
|
329
|
-
${
|
|
332
|
+
${y(K,v`
|
|
330
333
|
stippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
|
|
331
334
|
vStipplePatternStretch = 1.0;
|
|
332
335
|
|
|
333
|
-
${
|
|
336
|
+
${y(le,v`
|
|
334
337
|
// The v-coordinate used in case of an image pattern.
|
|
335
338
|
bool isLeft = lineSide < 0.0;
|
|
336
339
|
vStippleV = isLeft ? 0.0 : 1.0;
|
|
337
340
|
`)}
|
|
338
|
-
`,
|
|
341
|
+
`,v`
|
|
339
342
|
// Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
|
|
340
343
|
// fragment shader
|
|
341
344
|
stippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
@@ -355,7 +358,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
355
358
|
vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (stippleDistanceLimits.y - stippleDistanceLimits.x);
|
|
356
359
|
}
|
|
357
360
|
|
|
358
|
-
${
|
|
361
|
+
${y(Z,v`
|
|
359
362
|
float segmentStartInverseW = 1.0 / mix(pos.w, prev.w, isEndVertex);
|
|
360
363
|
float segmentEndInverseW = 1.0 / mix(next.w, pos.w, isEndVertex);
|
|
361
364
|
vStipplePerspective = noPerspectiveWrite(
|
|
@@ -371,7 +374,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
371
374
|
// Disable stipple distance limits on caps
|
|
372
375
|
vStippleLimitsAndCaps.zw = isJoin ? vec2(0.0) :
|
|
373
376
|
isStartVertex ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
374
|
-
`)),
|
|
377
|
+
`)),N.main.add(v`
|
|
375
378
|
// Convert back into NDC
|
|
376
379
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
377
380
|
pos.z = pos.z * pos.w;
|
|
@@ -379,13 +382,13 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
379
382
|
vColor = getColor();
|
|
380
383
|
vColor.a = noPerspectiveWrite(vColor.a, pos.w);
|
|
381
384
|
|
|
382
|
-
${
|
|
385
|
+
${H&&!I?`pos.z -= EPS * pos.w;`:``}
|
|
383
386
|
|
|
384
387
|
// transform final position to camera space for slicing
|
|
385
388
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
386
389
|
gl_Position = pos;
|
|
387
390
|
forwardObjectAndLayerIdColor();
|
|
388
|
-
}`),
|
|
391
|
+
}`),A.include(E,k),A.include(p),P.include(d),P.include(S),P.include(e,k),P.main.add(`discardBySlice(vpos);`),P.code.add(v`float lineFeatheringFactor(float lineWidth, float lineDistance) {
|
|
389
392
|
float stretchFactor = float(vIsInsideJoin) > 0.5 ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
390
393
|
float featherWidth = 2.0;
|
|
391
394
|
float featherStartDistance = lineWidth - featherWidth / stretchFactor;
|
|
@@ -398,12 +401,12 @@ float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (l
|
|
|
398
401
|
feather = float(vIsInsideJoin) > 0.5 ? max(feather, straightFeather) : feather;
|
|
399
402
|
float coverage = min(lineWidth - aaWidth, 1.0);
|
|
400
403
|
return clamp(1.0 - feather, 0.0, coverage);
|
|
401
|
-
}`),
|
|
404
|
+
}`),P.main.add(v`
|
|
402
405
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
403
406
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
404
|
-
${
|
|
405
|
-
`),Y&&
|
|
406
|
-
vec4 finalColor = albedo;`):(J&&
|
|
407
|
+
${y(X,v`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
408
|
+
`),Y&&P.main.add(v`float nominalLineWidth = lineWidth - aaWidth;`),H?P.main.add(v`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
|
|
409
|
+
vec4 finalColor = albedo;`):(J&&P.main.add(v`
|
|
407
410
|
float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
408
411
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
409
412
|
|
|
@@ -414,7 +417,7 @@ vec4 finalColor = albedo;`):(J&&N.main.add(x`
|
|
|
414
417
|
if (capCoverage < alphaCutoff) {
|
|
415
418
|
discard;
|
|
416
419
|
}
|
|
417
|
-
`),Y?
|
|
420
|
+
`),Y?P.main.add(v`vec2 stipplePosition = vec2(
|
|
418
421
|
min(getStippleCapDistance(), 0.0) * nominalLineWidth,
|
|
419
422
|
lineDistance
|
|
420
423
|
);
|
|
@@ -422,11 +425,11 @@ float stippleRadius = length(stipplePosition);
|
|
|
422
425
|
float stippleCapSDF = (stippleRadius - nominalLineWidth) * 0.5;
|
|
423
426
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
424
427
|
float lineCoverage = min(lineFeatheringFactor(lineWidth, lineDistance), capCoverage);
|
|
425
|
-
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):
|
|
426
|
-
color.a = noPerspectiveRead(color.a);`),
|
|
428
|
+
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):P.main.add(v`float stippleAlpha = getStippleAlpha(lineWidth);`),R!==11&&P.main.add(v`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),P.uniforms.add(new g(`intrinsicColor`,e=>e.color)).main.add(v`vec4 color = intrinsicColor * vColor;
|
|
429
|
+
color.a = noPerspectiveRead(color.a);`),U&&P.uniforms.add(new g(`innerColor`,e=>e.innerColor??e.color),new _(`innerWidth`,(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(v`float distToInner = abs(lineDistance) - innerWidth;
|
|
427
430
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
428
431
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
429
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),
|
|
432
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),P.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),V&&(P.uniforms.add(new _(`falloff`,e=>e.falloff)),P.main.add(v`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),P.main.add(v`albedo.a *= ${Y?`lineCoverage`:`lineFeatheringFactor(lineWidth, lineDistance)`};`),W&&(N.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),A.include(C,k),P.main.add(`albedo.a *= animatedAlpha();`)),L?(A.include(te,k),N.main.add(v`forwardLocalUp(position, localOrigin);`),N.main.add(`forwardLinearDepthToReadShadow();`),A.include(a,k),P.include(ee,k),P.include(n,k),P.uniforms.add(ne).main.add(v`vec3 normal = normalize(upNormal);
|
|
430
433
|
float additionalAmbientScale = additionalDirectedAmbientLight(normal);
|
|
431
434
|
float shadow = readFragmentShadow(additionalAmbientScale);
|
|
432
435
|
float ssao = evaluateAmbientOcclusionInverse();
|
|
@@ -435,4 +438,4 @@ vec3 viewDirection = normalize((inverseViewMatrix * vec4(vpos, 0.0)).xyz);
|
|
|
435
438
|
vec4 finalColor = vec4(
|
|
436
439
|
evaluateSceneLighting(normal, albedo.rgb, shadow, 1.0 - ssao, additionalLight,viewDirection, normal),
|
|
437
440
|
albedo.a
|
|
438
|
-
);`)):
|
|
441
|
+
);`)):P.main.add(`vec4 finalColor = albedo;`)),P.main.add(v`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),A}const j=Object.freeze(Object.defineProperty({__proto__:null,build:A,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{j as R,A as b,k as n};
|
package/config.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/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@6.0.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@6.0.0-next.30/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{remove as e}from"../arrayUtils.js";import t from"../Handles.js";import{makeHandle as n}from"../handleUtils.js";import r from"../Logger.js";import{removeMaybe as i}from"../maybe.js";import{throwIfAborted as a,createAbortError as o}from"../promiseUtils.js";import{open as s}from"../workers.js";class c{constructor(e,t,n,i,a={}){this._mainMethod=t,this._transferLists=n,this._listeners=[],this._onClientConnectedHandle=null,this._destroyed=!1,this._promise=s(e,{...a,schedule:i}).then(e=>{this._thread==null&&!this._destroyed?(this._thread=e,this._promise=null,this._onClientConnectedHandle=this._thread.onClientConnected(e=>{a.hasInitialize&&e.invoke(`initialize`,{}).catch(()=>{});for(let t of this._listeners)this._connectListenerToClient(t,e);this._onClientConnected(e)})):e.close()}),this._promise.catch(t=>r.getLogger(`esri.core.workers.WorkerHandle`).error(`Failed to initialize ${e} worker: ${t}`))}on(t,r){let i=new l(t,r);return this._listeners.push(i),this._connectListener(i),n(()=>{e(this._listeners,i),i.destroy()})}[Symbol.dispose](){this.destroy()}destroy(){this._onClientConnectedHandle=i(this._onClientConnectedHandle),this._thread&&=(this._thread.close(),null),this._promise=null;for(let e of this._listeners)e.destroy();this._listeners.length=0,this._transferLists={},this._destroyed=!0}invoke(e,t,n){return this.invokeMethod(this._mainMethod,e,t,n)}invokeMethod(e,t,n,r){if(this._thread){let i=this._transferLists[e],a=i?i(t):[];return this._thread.
|
|
2
|
+
import{remove as e}from"../arrayUtils.js";import t from"../Handles.js";import{makeHandle as n}from"../handleUtils.js";import r from"../Logger.js";import{removeMaybe as i}from"../maybe.js";import{throwIfAborted as a,createAbortError as o}from"../promiseUtils.js";import{open as s}from"../workers.js";class c{constructor(e,t,n,i,a={}){this._mainMethod=t,this._transferLists=n,this._listeners=[],this._onClientConnectedHandle=null,this._destroyed=!1,this._promise=s(e,{...a,schedule:i}).then(e=>{this._thread==null&&!this._destroyed?(this._thread=e,this._promise=null,this._onClientConnectedHandle=this._thread.onClientConnected(e=>{a.hasInitialize&&e.invoke(`initialize`,{}).catch(()=>{});for(let t of this._listeners)this._connectListenerToClient(t,e);this._onClientConnected(e)})):e.close()}),this._promise.catch(t=>r.getLogger(`esri.core.workers.WorkerHandle`).error(`Failed to initialize ${e} worker: ${t}`))}on(t,r){let i=new l(t,r);return this._listeners.push(i),this._connectListener(i),n(()=>{e(this._listeners,i),i.destroy()})}[Symbol.dispose](){this.destroy()}destroy(){this._onClientConnectedHandle=i(this._onClientConnectedHandle),this._thread&&=(this._thread.close(),null),this._promise=null;for(let e of this._listeners)e.destroy();this._listeners.length=0,this._transferLists={},this._destroyed=!0}invoke(e,t,n){return this.invokeMethod(this._mainMethod,e,t,n)}invokeMethod(e,t,n,r){return this._invokeMethod(e,[t],n,r)}invokeMethodWithArgs(e,t,n,r){return this._invokeMethod(e,t,n,r)}_invokeMethod(e,t,n,r){if(this._thread){let i=this._transferLists[e],a=i?i(...t):[];return this._thread.apply(e,t,{transferList:a,signal:n,jobPriority:r})}return this._promise?this._promise.then(()=>(a(n),this._invokeMethod(e,t,n,r))):Promise.reject(o())}broadcast(e,t){return this._thread?Promise.all(this._thread.broadcast(t,e)).then(u):this._promise?this._promise.then(()=>this.broadcast(e,t)):Promise.reject(o())}get promise(){return this._promise}_onClientConnected(e){}_connectListener(e){this._thread&&e.add(this._thread.on(e.eventName,e.callback))}_connectListenerToClient(e,t){e.add(t.on(e.eventName,e.callback))}}class l{constructor(e,n){this.eventName=e,this.callback=n,this._handles=new t}add(e){this._handles.add(e)}destroy(){this._handles.destroy()}}function u(){}export{c as WorkerHandle};
|
package/kernel.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/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=`6.0.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=`6.0.0-next.30`;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/WMTSLayer.d.ts
CHANGED
|
@@ -97,7 +97,7 @@ export default class WMTSLayer extends WMTSLayerSuperclass {
|
|
|
97
97
|
* @returns Resolves to an image element with the tile data.
|
|
98
98
|
* @since 4.27
|
|
99
99
|
*/
|
|
100
|
-
fetchTile(level: number, row: number, col: number, options?: AbortOptions): Promise<HTMLImageElement>;
|
|
100
|
+
fetchTile(level: number, row: number, col: number, options?: AbortOptions & { tileMatrixSetId?: string; }): Promise<HTMLImageElement>;
|
|
101
101
|
/**
|
|
102
102
|
* Returns a [WMTSSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/WMTSSublayer/) based on the given sublayer id.
|
|
103
103
|
*
|
package/layers/WMTSLayer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../request.js";import{isSome as n}from"../core/arrayUtils.js";import r from"../core/Collection.js";import i from"../core/Error.js";import{clone as a}from"../core/lang.js";import{MultiOriginJSONSupportMixin as o}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as s}from"../core/promiseUtils.js";import{watch as c,sync as l,on as u}from"../core/reactiveUtils.js";import{urlToObject as d,objectToQuery as f}from"../core/urlUtils.js";import{property as p,subclass as m}from"../core/accessorSupport/decorators.js";import h from"../geometry/Extent.js";import g from"./Layer.js";import _ from"./WebTileLayer.js";import{BlendLayer as v}from"./mixins/BlendLayer.js";import{OperationalLayer as y}from"./mixins/OperationalLayer.js";import{PortalLayer as b}from"./mixins/PortalLayer.js";import{RefreshableLayer as x}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as S}from"./mixins/ScaleRangeLayer.js";import{createTileBitmap as C}from"./support/imageBitmapUtils.js";import w from"./support/TileInfo.js";import T from"./support/TileInfoTilemapCache.js";import{WMTSLayerInfo as E}from"./support/WMTSLayerInfo.js";import D from"./support/WMTSSublayer.js";import{getTileUrlFromResourceUrls as O,getTileUrlTemplateFromResourceUrls as k,parseResourceInfo as A,parseText as j,validateCapabilities as M,parseCapabilities as N}from"./support/wmtsUtils.js";import{reader as P}from"../core/accessorSupport/decorators/reader.js";import{writer as F}from"../core/accessorSupport/decorators/writer.js";var I;const L={"image/png":`.png`,"image/png8":`.png`,"image/png24":`.png`,"image/png32":`.png`,"image/jpg":`.jpg`,"image/jpeg":`.jpeg`,"image/gif":`.gif`,"image/bmp":`.bmp`,"image/tiff":`.tif`,"image/jpgpng":``,"image/jpegpng":``,"image/unknown":``},R=new Set([`version`,`service`,`request`,`layer`,`style`,`format`,`tilematrixset`,`tilematrix`,`tilerow`,`tilecol`]);let z=I=class extends v(x(S(y(b(o(g)))))){constructor(...e){super(...e),this.activeLayer=null,this.copyright=``,this.customParameters=null,this.customLayerParameters=null,this.fullExtent=null,this.operationalLayerType=`WebTiledLayer`,this.resourceInfo=null,this.serviceMode=`RESTful`,this.sublayers=null,this.type=`wmts`,this.version=`1.0.0`,this.addHandles([c(()=>this.activeLayer,(e,t)=>{t&&!this.sublayers?.includes(t)&&(t.layer=null,t.parent=null),e&&(e.layer=this,e.parent=this)},l),u(()=>this.sublayers,`after-add`,({item:e})=>{e.layer=this,e.parent=this},l),u(()=>this.sublayers,`after-remove`,({item:e})=>{e.layer=null,e.parent=null},l),c(()=>this.sublayers,(e,t)=>{if(t)for(let e of t)e.layer=null,e.parent=null;if(e)for(let t of e)t.layer=this,t.parent=this},l)])}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}load(e){return this.addResolvingPromise(this.loadFromPortal({supportedTypes:[`WMTS`]},e).catch(s).then(()=>this._fetchService(e)).catch(e=>{throw s(e),new i(`wmtslayer:unsupported-service-data`,`Invalid response from the WMTS service.`,{error:e})})),Promise.resolve(this)}readActiveLayerFromService(e,t,n){this.activeLayer||=new D;let r=t.layers.find(e=>e.id===this.activeLayer.id);return r||=t.layers[0],this.activeLayer.read(r,n),this.activeLayer}readActiveLayerFromItemOrWebDoc(e,t){let{templateUrl:n,wmtsInfo:r}=t,i=n?this._getLowerCasedUrlParams(n):null,a=r?.layerIdentifier,o=null,s=r?.tileMatrixSet;s&&(Array.isArray(s)?s.length&&(o=s[0]):o=s);let c=i?.format,l=i?.style;return new D({id:a,imageFormat:c,styleId:l,tileMatrixSetId:o})}writeActiveLayer(e,t,n,r){let{activeLayer:i,loaded:a}=this,{id:o,tileMatrixSet:s,tileMatrixSetId:c,imageFormat:l,styleId:u}=i;t.templateUrl=a?this.getUrlTemplate(o,c,l,u):void 0,t.tileInfo=a?s?.tileInfo?.toJSON(r)??null:void 0,t.wmtsInfo={...t.wmtsInfo,layerIdentifier:o,tileMatrixSet:c}}readCustomParameters(e,t){let n=t.wmtsInfo;return n?this._mergeParams(n.customParameters,n.url):null}get fullExtents(){return this.activeLayer.fullExtents}readServiceMode(e,t){return t.templateUrl.includes(`?`)?`KVP`:`RESTful`}readSublayersFromService(e,t,n){return B(t.layers,n)}get supportedSpatialReferences(){return this.activeLayer.tileMatrixSets?.map(e=>e.tileInfo?.spatialReference).toArray().filter(n)??[]}get tilemapCache(){let e=this.activeLayer?.tileMatrixSet?.tileInfo;return e?new T(e):void 0}get title(){return this.activeLayer?.title??`Layer`}set title(e){this._overrideIfSome(`title`,e)}get url(){return this._get(`url`)}set url(e){e&&e.endsWith(`/`)?this._set(`url`,e.slice(0,-1)):this._set(`url`,e)}createWebTileLayer(e){let t=this.getUrlTemplate(this.activeLayer.id,this.activeLayer.tileMatrixSetId,this.activeLayer.imageFormat,this.activeLayer.styleId),n=this._getTileMatrixSetById(e.tileMatrixSetId)?.tileInfo,r=e.fullExtent,i=new E({layerIdentifier:e.id,tileMatrixSet:e.tileMatrixSetId,url:this.url});return this.customLayerParameters&&(i.customLayerParameters=this.customLayerParameters),this.customParameters&&(i.customParameters=this.customParameters),new _({fullExtent:r,urlTemplate:t,tileInfo:n,wmtsInfo:i})}async fetchTile(e,n,r,i={}){let{signal:a}=i,o=this.getTileUrl(e,n,r),{data:s}=await t(o,{responseType:`image`,signal:a});return s}async fetchImageBitmapTile(e,n,r,i={}){let{signal:a}=i;if(this.fetchTile!==I.prototype.fetchTile){let t=await this.fetchTile(e,n,r,i);return C(t,e,n,r,i)}let o=this.getTileUrl(e,n,r),{data:s}=await t(o,{responseType:`blob`,signal:a});return C(s,e,n,r,i)}findSublayerById(e){return this.sublayers?.find(t=>t.id===e)}getTileUrl(e,t,n){let r=this._getTileMatrixSetById(this.activeLayer.tileMatrixSetId)?.tileInfo?.lods[e],i=r?r.levelValue||`${r.level}`:`${e}`,a=this.resourceInfo?``:O({dimensionMap:this.dimensionMap,layerMap:this.layerMap},this.activeLayer.id,this.activeLayer.tileMatrixSetId,this.activeLayer.imageFormat,this.activeLayer.styleId,i,t,n);return a||=this.getUrlTemplate(this.activeLayer.id,this.activeLayer.tileMatrixSetId,this.activeLayer.imageFormat,this.activeLayer.styleId).replaceAll(/\{level\}/gi,i).replaceAll(/\{row\}/gi,`${t}`).replaceAll(/\{col\}/gi,`${n}`),a=this._appendCustomLayerParameters(a),a}getUrlTemplate(e,t,n,r){if(!this.resourceInfo){let n=k({dimensionMap:this.dimensionMap,layerMap:this.layerMap},e,t,r);if(n)return n}if(this.serviceMode===`KVP`)return this.url+`?SERVICE=WMTS&VERSION=`+this.version+`&REQUEST=GetTile&LAYER=`+e+`&STYLE=`+r+`&FORMAT=`+n+`&TILEMATRIXSET=`+t+`&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}`;if(this.serviceMode===`RESTful`){let i=``,a=n.toLowerCase();return L[a]&&(i=L[a]),this.url+e+`/`+r+`/`+t+`/{level}/{row}/{col}`+i}return``}async _fetchService(e){if(this.resourceInfo){this.resourceInfo.serviceMode===`KVP`&&!this.url.includes(`?`)&&(this.url+=`?`),A(this.resourceInfo),this.read(this.resourceInfo,{origin:`service`});return}let t=null;try{let{data:n}=await this._getCapabilities(this.serviceMode,e);t=j(n),M(t)}catch{let n=this.serviceMode===`KVP`?`RESTful`:`KVP`;try{let{data:r}=await this._getCapabilities(n,e);t=j(r),M(t),this.serviceMode=n}catch(e){throw new i(`wmtslayer:unsupported-service-data`,`Services does not support RESTful or KVP service modes.`,{error:e})}}let{serviceMode:n,url:r}=this,a=N(t,{serviceMode:n,url:r});this.read(a,{origin:`service`})}async _getCapabilities(e,n){let r=this._getCapabilitiesUrl(e);return await t(r,{...n,responseType:`text`})}_getTileMatrixSetById(e){return this.findSublayerById(this.activeLayer.id)?.tileMatrixSets?.find(({id:t})=>t===e)}_appendCustomParameters(e){return this._appendParameters(e,this.customParameters)}_appendCustomLayerParameters(e){return this._appendParameters(e,{...a(this.customParameters),...this.customLayerParameters})}_appendParameters(e,t){let n=d(e),r={...n.query,...t},i=f(r);return i===``?n.path:`${n.path}?${i}`}_getCapabilitiesUrl(e){this.url=d(this.url).path;let t=this.url;switch(e){case`KVP`:t+=`?request=GetCapabilities&service=WMTS&version=${this.version}`;break;case`RESTful`:{let e=`/${this.version}/WMTSCapabilities.xml`,n=new RegExp(e,`i`);t=t.replace(n,``),t+=e;break}}return this._appendCustomParameters(t)}_getLowerCasedUrlParams(e){if(!e)return null;let t=d(e).query;if(!t)return null;let n={};return Object.keys(t).forEach(e=>{n[e.toLowerCase()]=t[e]}),n}_mergeParams(e,t){let n=this._getLowerCasedUrlParams(t);if(n){let t=Object.keys(n);t.length&&(e=e?a(e):{},t.forEach(t=>{!e.hasOwnProperty(t)&&!R.has(t)&&(e[t]=n[t])}))}return e}};e([p()],z.prototype,`dimensionMap`,void 0),e([p()],z.prototype,`layerMap`,void 0),e([p({type:D,json:{origins:{"web-document":{write:{ignoreOrigin:!0}}}}})],z.prototype,`activeLayer`,void 0),e([P(`service`,`activeLayer`,[`layers`])],z.prototype,`readActiveLayerFromService`,null),e([P([`web-document`,`portal-item`],`activeLayer`,[`wmtsInfo`])],z.prototype,`readActiveLayerFromItemOrWebDoc`,null),e([F([`web-document`,`portal-item`],`activeLayer`,{templateUrl:{type:String},tileInfo:{type:w},"wmtsInfo.layerIdentifier":{type:String},"wmtsInfo.tileMatrixSet":{type:String}})],z.prototype,`writeActiveLayer`,null),e([p({type:String,value:``,json:{write:!0}})],z.prototype,`copyright`,void 0),e([p({type:[`show`,`hide`]})],z.prototype,`listMode`,void 0),e([p({json:{read:!0,write:!0}})],z.prototype,`blendMode`,void 0),e([p({json:{origins:{"web-document":{read:{source:[`wmtsInfo.customParameters`,`wmtsInfo.url`]},write:{target:`wmtsInfo.customParameters`}},"portal-item":{read:{source:[`wmtsInfo.customParameters`,`wmtsInfo.url`]},write:{target:`wmtsInfo.customParameters`}}}}})],z.prototype,`customParameters`,void 0),e([P([`portal-item`,`web-document`],`customParameters`)],z.prototype,`readCustomParameters`,null),e([p({json:{origins:{"web-document":{read:{source:`wmtsInfo.customLayerParameters`},write:{target:`wmtsInfo.customLayerParameters`}},"portal-item":{read:{source:`wmtsInfo.customLayerParameters`},write:{target:`wmtsInfo.customLayerParameters`}}}}})],z.prototype,`customLayerParameters`,void 0),e([p({type:h,json:{write:{ignoreOrigin:!0},origins:{"web-document":{read:{source:`fullExtent`}},"portal-item":{read:{source:`fullExtent`}}}}})],z.prototype,`fullExtent`,void 0),e([p({readOnly:!0})],z.prototype,`fullExtents`,null),e([p({type:[`WebTiledLayer`]})],z.prototype,`operationalLayerType`,void 0),e([p()],z.prototype,`resourceInfo`,void 0),e([p()],z.prototype,`serviceMode`,void 0),e([P([`portal-item`,`web-document`],`serviceMode`,[`templateUrl`])],z.prototype,`readServiceMode`,null),e([p({type:r.ofType(D)})],z.prototype,`sublayers`,void 0),e([P(`service`,`sublayers`,[`layers`])],z.prototype,`readSublayersFromService`,null),e([p({readOnly:!0})],z.prototype,`supportedSpatialReferences`,null),e([p({readOnly:!0})],z.prototype,`tilemapCache`,null),e([p({json:{read:{source:`title`}}})],z.prototype,`title`,null),e([p({json:{read:!1},readOnly:!0,value:`wmts`})],z.prototype,`type`,void 0),e([p({json:{origins:{service:{read:{source:`tileUrl`}},"web-document":{read:{source:`wmtsInfo.url`},write:{target:`wmtsInfo.url`}},"portal-item":{read:{source:`wmtsInfo.url`},write:{target:`wmtsInfo.url`}}}}})],z.prototype,`url`,null),e([p()],z.prototype,`version`,void 0),z=I=e([m(`esri.layers.WMTSLayer`)],z);function B(e,t){return e.map(e=>{let n=new D;return n.read(e,t),n})}const V=z;export{V as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../request.js";import{isSome as n}from"../core/arrayUtils.js";import r from"../core/Collection.js";import i from"../core/Error.js";import{clone as a}from"../core/lang.js";import{MultiOriginJSONSupportMixin as o}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as s}from"../core/promiseUtils.js";import{watch as c,sync as l,on as u}from"../core/reactiveUtils.js";import{urlToObject as d,objectToQuery as f}from"../core/urlUtils.js";import{property as p,subclass as m}from"../core/accessorSupport/decorators.js";import h from"../geometry/Extent.js";import g from"./Layer.js";import _ from"./WebTileLayer.js";import{BlendLayer as v}from"./mixins/BlendLayer.js";import{OperationalLayer as y}from"./mixins/OperationalLayer.js";import{PortalLayer as b}from"./mixins/PortalLayer.js";import{RefreshableLayer as x}from"./mixins/RefreshableLayer.js";import{ScaleRangeLayer as S}from"./mixins/ScaleRangeLayer.js";import{createTileBitmap as C}from"./support/imageBitmapUtils.js";import w from"./support/TileInfo.js";import T from"./support/TileInfoTilemapCache.js";import{WMTSLayerInfo as E}from"./support/WMTSLayerInfo.js";import D from"./support/WMTSSublayer.js";import{getTileUrlFromResourceUrls as O,getTileUrlTemplateFromResourceUrls as k,parseResourceInfo as A,parseText as j,validateCapabilities as M,parseCapabilities as N}from"./support/wmtsUtils.js";import{reader as P}from"../core/accessorSupport/decorators/reader.js";import{writer as F}from"../core/accessorSupport/decorators/writer.js";var I;const L={"image/png":`.png`,"image/png8":`.png`,"image/png24":`.png`,"image/png32":`.png`,"image/jpg":`.jpg`,"image/jpeg":`.jpeg`,"image/gif":`.gif`,"image/bmp":`.bmp`,"image/tiff":`.tif`,"image/jpgpng":``,"image/jpegpng":``,"image/unknown":``},R=new Set([`version`,`service`,`request`,`layer`,`style`,`format`,`tilematrixset`,`tilematrix`,`tilerow`,`tilecol`]);let z=I=class extends v(x(S(y(b(o(g)))))){constructor(...e){super(...e),this.activeLayer=null,this.copyright=``,this.customParameters=null,this.customLayerParameters=null,this.operationalLayerType=`WebTiledLayer`,this.resourceInfo=null,this.serviceMode=`RESTful`,this.sublayers=null,this.type=`wmts`,this.version=`1.0.0`,this.addHandles([c(()=>this.activeLayer,(e,t)=>{t&&!this.sublayers?.includes(t)&&(t.layer=null,t.parent=null),e&&(e.layer=this,e.parent=this)},l),u(()=>this.sublayers,`after-add`,({item:e})=>{e.layer=this,e.parent=this},l),u(()=>this.sublayers,`after-remove`,({item:e})=>{e.layer=null,e.parent=null},l),c(()=>this.sublayers,(e,t)=>{if(t)for(let e of t)e.layer=null,e.parent=null;if(e)for(let t of e)t.layer=this,t.parent=this},l)])}normalizeCtorArgs(e,t){return typeof e==`string`?{url:e,...t}:e}load(e){return this.addResolvingPromise(this.loadFromPortal({supportedTypes:[`WMTS`]},e).catch(s).then(()=>this._fetchService(e)).catch(e=>{throw s(e),new i(`wmtslayer:unsupported-service-data`,`Invalid response from the WMTS service.`,{error:e})})),Promise.resolve(this)}readActiveLayerFromService(e,t,n){this.activeLayer||=new D;let r=t.layers.find(e=>e.id===this.activeLayer.id);return r||=t.layers[0],this.activeLayer.read(r,n),this.activeLayer}readActiveLayerFromItemOrWebDoc(e,t){let{templateUrl:n,wmtsInfo:r}=t,i=n?this._getLowerCasedUrlParams(n):null,a=r?.layerIdentifier,o=null,s=r?.tileMatrixSet;s&&(Array.isArray(s)?s.length&&(o=s[0]):o=s);let c=i?.format,l=i?.style;return new D({id:a,imageFormat:c,styleId:l,tileMatrixSetId:o})}writeActiveLayer(e,t,n,r){let{activeLayer:i,loaded:a}=this,{id:o,tileMatrixSet:s,tileMatrixSetId:c,imageFormat:l,styleId:u}=i;t.templateUrl=a?this.getUrlTemplate(o,c,l,u):void 0,t.tileInfo=a?s?.tileInfo?.toJSON(r)??null:void 0,t.wmtsInfo={...t.wmtsInfo,layerIdentifier:o,tileMatrixSet:c}}readCustomParameters(e,t){let n=t.wmtsInfo;return n?this._mergeParams(n.customParameters,n.url):null}get fullExtent(){return this.fullExtents?.[0]}set fullExtent(e){this._override(`fullExtent`,e)}get fullExtents(){return this.activeLayer?.fullExtents}readServiceMode(e,t){return t.templateUrl.includes(`?`)?`KVP`:`RESTful`}readSublayersFromService(e,t,n){return B(t.layers,n)}get supportedSpatialReferences(){return this.activeLayer.tileMatrixSets?.map(e=>e.tileInfo?.spatialReference).toArray().filter(n)??[]}get tilemapCache(){let e=this.activeLayer?.tileMatrixSet?.tileInfo;return e?new T(e):void 0}get title(){return this.activeLayer?.title??`Layer`}set title(e){this._overrideIfSome(`title`,e)}get url(){return this._get(`url`)}set url(e){e&&e.endsWith(`/`)?this._set(`url`,e.slice(0,-1)):this._set(`url`,e)}createWebTileLayer(e){let t=this.getUrlTemplate(this.activeLayer.id,this.activeLayer.tileMatrixSetId,this.activeLayer.imageFormat,this.activeLayer.styleId),n=this._getTileMatrixSetById(e.tileMatrixSetId)?.tileInfo,r=e.fullExtent,i=new E({layerIdentifier:e.id,tileMatrixSet:e.tileMatrixSetId,url:this.url});return this.customLayerParameters&&(i.customLayerParameters=this.customLayerParameters),this.customParameters&&(i.customParameters=this.customParameters),new _({fullExtent:r,urlTemplate:t,tileInfo:n,wmtsInfo:i})}async fetchTile(e,n,r,i={}){let{signal:a}=i,o=this.getTileUrl(e,n,r,i.tileMatrixSetId),{data:s}=await t(o,{responseType:`image`,signal:a});return s}async fetchImageBitmapTile(e,n,r,i={}){let{signal:a}=i;if(this.fetchTile!==I.prototype.fetchTile){let t=await this.fetchTile(e,n,r,i);return C(t,e,n,r,i)}let o=this.getTileUrl(e,n,r,i.tileMatrixSetId),{data:s}=await t(o,{responseType:`blob`,signal:a});return C(s,e,n,r,i)}findSublayerById(e){return this.sublayers?.find(t=>t.id===e)}getTileUrl(e,t,n,r=this.activeLayer.tileMatrixSetId){let i=this._getTileMatrixSetById(r)?.tileInfo?.lods[e],a=i?i.levelValue||`${i.level}`:`${e}`,o=this.resourceInfo?``:O({dimensionMap:this.dimensionMap,layerMap:this.layerMap},this.activeLayer.id,r,this.activeLayer.imageFormat,this.activeLayer.styleId,a,t,n);return o||=this.getUrlTemplate(this.activeLayer.id,r,this.activeLayer.imageFormat,this.activeLayer.styleId).replaceAll(/\{level\}/gi,a).replaceAll(/\{row\}/gi,`${t}`).replaceAll(/\{col\}/gi,`${n}`),o=this._appendCustomLayerParameters(o),o}updateFrom(e){let{tileMatrixSet:t}=e;t&&(this.activeLayer.tileMatrixSetId=t.id,this.fullExtent=t.fullExtent?.clone()??null)}getUrlTemplate(e,t,n,r){if(!this.resourceInfo){let n=k({dimensionMap:this.dimensionMap,layerMap:this.layerMap},e,t,r);if(n)return n}if(this.serviceMode===`KVP`)return this.url+`?SERVICE=WMTS&VERSION=`+this.version+`&REQUEST=GetTile&LAYER=`+e+`&STYLE=`+r+`&FORMAT=`+n+`&TILEMATRIXSET=`+t+`&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}`;if(this.serviceMode===`RESTful`){let i=``,a=n.toLowerCase();return L[a]&&(i=L[a]),this.url+e+`/`+r+`/`+t+`/{level}/{row}/{col}`+i}return``}async _fetchService(e){if(this.resourceInfo){this.resourceInfo.serviceMode===`KVP`&&!this.url.includes(`?`)&&(this.url+=`?`),A(this.resourceInfo),this.read(this.resourceInfo,{origin:`service`});return}let t=null;try{let{data:n}=await this._getCapabilities(this.serviceMode,e);t=j(n),M(t)}catch{let n=this.serviceMode===`KVP`?`RESTful`:`KVP`;try{let{data:r}=await this._getCapabilities(n,e);t=j(r),M(t),this.serviceMode=n}catch(e){throw new i(`wmtslayer:unsupported-service-data`,`Services does not support RESTful or KVP service modes.`,{error:e})}}let{serviceMode:n,url:r}=this,a=N(t,{serviceMode:n,url:r});this.read(a,{origin:`service`})}async _getCapabilities(e,n){let r=this._getCapabilitiesUrl(e);return await t(r,{...n,responseType:`text`})}_getTileMatrixSetById(e){return this.findSublayerById(this.activeLayer.id)?.tileMatrixSets?.find(({id:t})=>t===e)}_appendCustomParameters(e){return this._appendParameters(e,this.customParameters)}_appendCustomLayerParameters(e){return this._appendParameters(e,{...a(this.customParameters),...this.customLayerParameters})}_appendParameters(e,t){let n=d(e),r={...n.query,...t},i=f(r);return i===``?n.path:`${n.path}?${i}`}_getCapabilitiesUrl(e){this.url=d(this.url).path;let t=this.url;switch(e){case`KVP`:t+=`?request=GetCapabilities&service=WMTS&version=${this.version}`;break;case`RESTful`:{let e=`/${this.version}/WMTSCapabilities.xml`,n=new RegExp(e,`i`);t=t.replace(n,``),t+=e;break}}return this._appendCustomParameters(t)}_getLowerCasedUrlParams(e){if(!e)return null;let t=d(e).query;if(!t)return null;let n={};return Object.keys(t).forEach(e=>{n[e.toLowerCase()]=t[e]}),n}_mergeParams(e,t){let n=this._getLowerCasedUrlParams(t);if(n){let t=Object.keys(n);t.length&&(e=e?a(e):{},t.forEach(t=>{!e.hasOwnProperty(t)&&!R.has(t)&&(e[t]=n[t])}))}return e}};e([p()],z.prototype,`dimensionMap`,void 0),e([p()],z.prototype,`layerMap`,void 0),e([p({type:D,json:{origins:{"web-document":{write:{ignoreOrigin:!0}}}}})],z.prototype,`activeLayer`,void 0),e([P(`service`,`activeLayer`,[`layers`])],z.prototype,`readActiveLayerFromService`,null),e([P([`web-document`,`portal-item`],`activeLayer`,[`wmtsInfo`])],z.prototype,`readActiveLayerFromItemOrWebDoc`,null),e([F([`web-document`,`portal-item`],`activeLayer`,{templateUrl:{type:String},tileInfo:{type:w},"wmtsInfo.layerIdentifier":{type:String},"wmtsInfo.tileMatrixSet":{type:String}})],z.prototype,`writeActiveLayer`,null),e([p({type:String,value:``,json:{write:!0}})],z.prototype,`copyright`,void 0),e([p({type:[`show`,`hide`]})],z.prototype,`listMode`,void 0),e([p({json:{read:!0,write:!0}})],z.prototype,`blendMode`,void 0),e([p({json:{origins:{"web-document":{read:{source:[`wmtsInfo.customParameters`,`wmtsInfo.url`]},write:{target:`wmtsInfo.customParameters`}},"portal-item":{read:{source:[`wmtsInfo.customParameters`,`wmtsInfo.url`]},write:{target:`wmtsInfo.customParameters`}}}}})],z.prototype,`customParameters`,void 0),e([P([`portal-item`,`web-document`],`customParameters`)],z.prototype,`readCustomParameters`,null),e([p({json:{origins:{"web-document":{read:{source:`wmtsInfo.customLayerParameters`},write:{target:`wmtsInfo.customLayerParameters`}},"portal-item":{read:{source:`wmtsInfo.customLayerParameters`},write:{target:`wmtsInfo.customLayerParameters`}}}}})],z.prototype,`customLayerParameters`,void 0),e([p({type:h,json:{write:{ignoreOrigin:!0},origins:{"web-document":{read:{source:`fullExtent`}},"portal-item":{read:{source:`fullExtent`}}}}})],z.prototype,`fullExtent`,null),e([p({readOnly:!0})],z.prototype,`fullExtents`,null),e([p({type:[`WebTiledLayer`]})],z.prototype,`operationalLayerType`,void 0),e([p()],z.prototype,`resourceInfo`,void 0),e([p()],z.prototype,`serviceMode`,void 0),e([P([`portal-item`,`web-document`],`serviceMode`,[`templateUrl`])],z.prototype,`readServiceMode`,null),e([p({type:r.ofType(D)})],z.prototype,`sublayers`,void 0),e([P(`service`,`sublayers`,[`layers`])],z.prototype,`readSublayersFromService`,null),e([p({readOnly:!0})],z.prototype,`supportedSpatialReferences`,null),e([p({readOnly:!0})],z.prototype,`tilemapCache`,null),e([p({json:{read:{source:`title`}}})],z.prototype,`title`,null),e([p({json:{read:!1},readOnly:!0,value:`wmts`})],z.prototype,`type`,void 0),e([p({json:{origins:{service:{read:{source:`tileUrl`}},"web-document":{read:{source:`wmtsInfo.url`},write:{target:`wmtsInfo.url`}},"portal-item":{read:{source:`wmtsInfo.url`},write:{target:`wmtsInfo.url`}}}}})],z.prototype,`url`,null),e([p()],z.prototype,`version`,void 0),z=I=e([m(`esri.layers.WMTSLayer`)],z);function B(e,t){return e.map(e=>{let n=new D;return n.read(e,t),n})}const V=z;export{V as default};
|
|
@@ -4,6 +4,7 @@ import type SpatialReference from "../../geometry/SpatialReference.js";
|
|
|
4
4
|
import type DimensionalDefinition from "../support/DimensionalDefinition.js";
|
|
5
5
|
import type MultidimensionalSubset from "../support/MultidimensionalSubset.js";
|
|
6
6
|
import type RasterInfo from "../support/RasterInfo.js";
|
|
7
|
+
import type TimeInfo from "../support/TimeInfo.js";
|
|
7
8
|
import type ImageSampleParameters from "../../rest/support/ImageSampleParameters.js";
|
|
8
9
|
import type ImageSampleResult from "../../rest/support/ImageSampleResult.js";
|
|
9
10
|
import type TimeExtent from "../../time/TimeExtent.js";
|
|
@@ -272,6 +273,12 @@ export abstract class TiledImagery {
|
|
|
272
273
|
* });
|
|
273
274
|
*/
|
|
274
275
|
abstract accessor timeExtent: TimeExtent | null | undefined;
|
|
276
|
+
/**
|
|
277
|
+
* TimeInfo provides information such as date fields that store [start](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TimeInfo/#startField)
|
|
278
|
+
* and [end](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TimeInfo/#endField) time for each feature and the [TimeInfo.fullTimeExtent](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TimeInfo/#fullTimeExtent)
|
|
279
|
+
* for the layer.
|
|
280
|
+
*/
|
|
281
|
+
abstract accessor timeInfo: TimeInfo | null | undefined;
|
|
275
282
|
/**
|
|
276
283
|
* A temporary offset of the time data based on a certain [TimeInterval](https://developers.arcgis.com/javascript/latest/references/core/time/TimeInterval/). This allows
|
|
277
284
|
* users to overlay features from two or more time-aware layers with different time extents.
|
|
@@ -64,15 +64,15 @@ export default class WMTSSublayer extends JSONSupport {
|
|
|
64
64
|
get styles(): Collection<WMTSStyle> | null | undefined;
|
|
65
65
|
set styles(value: ReadonlyArrayOrCollection<WMTSStyleProperties> | null | undefined);
|
|
66
66
|
/**
|
|
67
|
-
* The [TileMatrixSet](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TileMatrixSet/)
|
|
68
|
-
*
|
|
69
|
-
* Must be one of the supported [tileMatrixSets](https://developers.arcgis.com/javascript/latest/references/core/layers/support/WMTSSublayer/#tileMatrixSet).
|
|
67
|
+
* The [TileMatrixSet](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TileMatrixSet/) identified by [tileMatrixSetId](https://developers.arcgis.com/javascript/latest/references/core/layers/support/WMTSSublayer/#tileMatrixSetId).
|
|
68
|
+
* A layer view may select a compatible tile matrix set without modifying this property.
|
|
70
69
|
*/
|
|
71
70
|
get tileMatrixSet(): TileMatrixSet | null | undefined;
|
|
72
71
|
/**
|
|
73
72
|
* The id of the [TileMatrixSet](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TileMatrixSet/) to request.
|
|
74
|
-
*
|
|
75
|
-
*
|
|
73
|
+
* Must be one of the supported [tileMatrixSets](https://developers.arcgis.com/javascript/latest/references/core/layers/support/WMTSSublayer/#tileMatrixSets).
|
|
74
|
+
* If not specified, each view selects a compatible tile matrix set without modifying this property.
|
|
75
|
+
* Use [WebMap.updateFrom()](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#updateFrom) or [WebScene.updateFrom()](https://developers.arcgis.com/javascript/latest/references/core/WebScene/#updateFrom) to persist the view's selection.
|
|
76
76
|
*/
|
|
77
77
|
accessor tileMatrixSetId: string;
|
|
78
78
|
/** A collection of supported [TileMatrixSets](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TileMatrixSet/). */
|