@arcgis/core 5.2.0-next.160 → 5.2.0-next.161

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.
Files changed (63) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{15bcf7cfe603f2ee1a24.js → 28104681ba161967039f.js} +1 -1
  3. package/assets/esri/core/workers/chunks/{842893e75696428d536f.js → 3b0808ee3c4facfaca3d.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{eebbde81e56d69dc602f.js → 44f90e75c1dc3d726a95.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{4eae066673484986d4c1.js → 4ed76fb5f6096a089f5b.js} +1 -1
  6. package/assets/esri/core/workers/chunks/5daa9429808ca31279f2.js +1 -0
  7. package/assets/esri/core/workers/chunks/83f29a159b8b5197e76a.js +1 -0
  8. package/assets/esri/core/workers/chunks/{77ebacfdf8e57f2e03f1.js → 8480fe6b4372dbbfa7cc.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{1d77c8c59b0118c7e77b.js → 85bba551057366cd00ae.js} +1 -1
  10. package/assets/esri/core/workers/chunks/a2fcbc494333376192aa.js +1 -0
  11. package/assets/esri/core/workers/chunks/{f1df76f098a3cc924832.js → b5df193c93e9c19f9700.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{02f8654852d389583891.js → e04fb83ab2634bc15cc7.js} +1 -1
  13. package/assets/esri/core/workers/chunks/f74ae0eff3f08978e607.js +1 -0
  14. package/chunks/RibbonLine.glsl.js +69 -83
  15. package/config.d.ts +62 -34
  16. package/config.js +1 -1
  17. package/core/has.js +1 -1
  18. package/core/mapCollectionUtils.js +1 -1
  19. package/core/workers/Connection.d.ts +58 -89
  20. package/core/workers.d.ts +45 -54
  21. package/geometry/support/Indices.js +1 -1
  22. package/geometry/support/aaBoundingRect.js +1 -1
  23. package/geometry/support/ray.js +1 -1
  24. package/kernel.js +1 -1
  25. package/layers/GeospatialPDFLayer.js +1 -1
  26. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +1 -1
  27. package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
  28. package/layers/support/commonProperties.js +1 -1
  29. package/package.json +2 -2
  30. package/rest/print.js +1 -1
  31. package/views/3d/analysis/LineOfSight/LineOfSightIntersectionResult.js +1 -1
  32. package/views/3d/input/SceneInputManager.js +1 -1
  33. package/views/3d/input/handlers/DragZoom.js +1 -1
  34. package/views/3d/input/handlers/MouseWheelFov.js +1 -1
  35. package/views/3d/layers/I3SMeshView3D.js +1 -1
  36. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  37. package/views/3d/layers/graphics/extrudePolygon.js +1 -1
  38. package/views/3d/layers/graphics/tessellationUtils.js +1 -1
  39. package/views/3d/state/controllers/FovController.js +1 -1
  40. package/views/3d/state/controllers/GroundNavigationController.js +1 -1
  41. package/views/3d/state/controllers/momentum/GroundNavigationMomentumController.js +1 -1
  42. package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
  43. package/views/3d/terrain/PatchRenderData.js +1 -1
  44. package/views/3d/terrain/TextureReference.js +1 -1
  45. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  46. package/views/SceneView.js +1 -1
  47. package/views/interactive/editGeometry/EditGeometry.js +1 -1
  48. package/views/interactive/editGeometry/operations/RotateVertex.js +1 -1
  49. package/views/interactive/editGeometry/operations/ScaleVertex.js +1 -1
  50. package/views/interactive/editGeometry/operations/SetAllVertexPositions.js +1 -1
  51. package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
  52. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  53. package/widgets/Search/LocatorSearchSource.d.ts +22 -1
  54. package/widgets/support/SelectionList/GroupLayerItem.d.ts +2 -0
  55. package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
  56. package/widgets/support/SelectionList/ItemBase.d.ts +2 -0
  57. package/widgets/support/SelectionList/ItemBase.js +1 -1
  58. package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
  59. package/widgets/support/SelectionList.js +1 -1
  60. package/assets/esri/core/workers/chunks/7d212c415f2709037408.js +0 -1
  61. package/assets/esri/core/workers/chunks/abb9e820d2871fa7acae.js +0 -1
  62. package/assets/esri/core/workers/chunks/ade5fdcd08dcbac74740.js +0 -1
  63. package/assets/esri/core/workers/chunks/b390b9cde2884755e8be.js +0 -1
@@ -9,7 +9,7 @@ import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.gls
9
9
  }
10
10
  `),N.code.add(S`void outputObjectAndLayerIdColor() {
11
11
  fragColor = objectAndLayerIdColorVarying;
12
- }`)):(M.code.add(S`void forwardObjectAndLayerIdColor() {}`),N.code.add(S`void outputObjectAndLayerIdColor() {}`));let $=P&&!F;if($&&k.include(a,O),_(M,O),F&&(G||z)){let e=G?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`;M.uniforms.add(new b(e,e=>1/(e.screenToPlanarDistanceRatio*(G?e.planarDistanceToGroundRatio:1))))}return G&&!F&&M.uniforms.add(l,u),M.uniforms.add(d,f,p,new x(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),M.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),M.constants.add(`EPS`,`float`,.001),M.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,O.numJoinSubdivisions),A.add(`textureElementIndex`,`uint`),A.add(`lineParameters`,`vec2`),j.add(`vColor`,`vec4`),j.add(`vpos`,`vec3`,{invariant:!0}),j.add(`vLineDistance`,`float`),j.add(`vLineWidth`,`float`),z||(j.add(`vIsInsideJoin`,`int`),j.add(`vStretchFactor`,`float`),j.add(`vJoinCenterLineSDFs`,`vec2`),j.add(`vSubdivisionFactor`,`float`)),z&&j.add(`vLineSizeInv`,`float`),Y&&j.add(`vLineDistanceNorm`,`float`),q&&(j.add(`vSegmentSDF`,`float`),j.add(`vReverseSegmentSDF`,`float`)),M.code.add(S`vec3 perpendicular(vec3 v) {
12
+ }`)):(M.code.add(S`void forwardObjectAndLayerIdColor() {}`),N.code.add(S`void outputObjectAndLayerIdColor() {}`));let $=P&&!F;if($&&k.include(a,O),_(M,O),F&&(G||z)){let e=G?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`;M.uniforms.add(new b(e,e=>1/(e.screenToPlanarDistanceRatio*(G?e.planarDistanceToGroundRatio:1))))}return G&&!F&&M.uniforms.add(l,u),M.uniforms.add(d,f,p,new x(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),M.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),M.constants.add(`EPS`,`float`,.001),M.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,O.numJoinSubdivisions),A.add(`textureElementIndex`,`uint`),A.add(`lineParameters`,`vec2`),j.add(`vColor`,`vec4`),j.add(`vpos`,`vec3`,{invariant:!0}),j.add(`vLineDistance`,`float`),j.add(`vLineWidth`,`float`),j.add(`vIsInsideJoin`,`int`),j.add(`vStretchFactor`,`float`),j.add(`vJoinCenterLineSDFs`,`vec2`),j.add(`vSubdivisionFactor`,`float`),z&&j.add(`vLineSizeInv`,`float`),Y&&j.add(`vLineDistanceNorm`,`float`),q&&(j.add(`vSegmentSDF`,`float`),j.add(`vReverseSegmentSDF`,`float`)),M.code.add(S`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) {
@@ -75,7 +75,7 @@ return posNdc;
75
75
  }
76
76
  }
77
77
  }
78
- `),v(M),M.constants.add(`aaWidth`,`float`,+!z),M.main.add(S`
78
+ `),v(M),M.constants.add(`aaWidth`,`float`,1),N.constants.add(`aaWidth`,`float`,1),M.main.add(S`
79
79
  vec3 position = ${Q.getTextureAttribute(`position`)};
80
80
  float u0 = ${Q.getTextureAttribute(`u0`)};
81
81
  ${C(G,S`
@@ -95,8 +95,6 @@ return posNdc;
95
95
  vec3 prevPosition = ${Q.getTextureAttribute(`position`,-1)};
96
96
  vec3 nextPosition = ${Q.getTextureAttribute(`position`,1)};
97
97
 
98
- float coverage = 1.0;
99
-
100
98
  // Check for special value of lineParameters.y which is used by the Renderer when graphics are removed before the
101
99
  // VBO is recompacted. If this is the case, then we just project outside of clip space.
102
100
  if (lineParameters.y == 0.0) {
@@ -157,39 +155,37 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
157
155
  }
158
156
  }
159
157
 
160
- ${C(!z,S`
161
- // Compute stretch compensation for feathering.
162
- if (subdivisionFactor > 0.0) {
163
- vIsInsideJoin = 1;
164
- }
165
- vSubdivisionFactor = isOutside ? subdivisionFactor : 0.5;
166
-
167
- if (miterDisplacementLen > miterLimit * lineWidth) {
168
- vec2 leftScreenDir = left.xy;
169
- vec2 rightScreenDir = right.xy;
170
- float leftScreenLen = length(leftScreenDir);
171
- float rightScreenLen = length(rightScreenDir);
172
-
173
- if (leftScreenLen > EPS && rightScreenLen > EPS) {
174
- leftScreenDir /= leftScreenLen;
175
- rightScreenDir /= rightScreenLen;
176
-
177
- /**
178
- * Feathering AA needs special considerations on join triangles because these can get stretched a lot at acute angles.
179
- * We use the triangle height to determine by how much they get stretched.
180
- */
181
- float theta = acos(clamp(dot(leftScreenDir, rightScreenDir), -1.0, 1.0));
182
- /**
183
- * The argument of cos here is half the angle of a join triangle.
184
- * We start with one triangle, and every subdivision adds another triangle.
185
- */
186
- float subdividedTriangleHeight = (innerDisplacementLen + lineWidth) * cos(theta / (2.0 + 2.0 * NUM_JOIN_SUBDIVISIONS));
187
- float bevelTriangleHeight = innerDisplacementLen + lineWidth * cos(theta * 0.5);
188
- float triangleHeight = NUM_JOIN_SUBDIVISIONS > 0.0 ? subdividedTriangleHeight : bevelTriangleHeight;
189
- vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0), perspectiveDivisor);
190
- }
191
- }
192
- `)}
158
+ // Compute stretch compensation for feathering.
159
+ if (subdivisionFactor > 0.0) {
160
+ vIsInsideJoin = 1;
161
+ }
162
+ vSubdivisionFactor = isOutside ? subdivisionFactor : 0.5;
163
+
164
+ if (miterDisplacementLen > miterLimit * lineWidth) {
165
+ vec2 leftScreenDir = left.xy;
166
+ vec2 rightScreenDir = right.xy;
167
+ float leftScreenLen = length(leftScreenDir);
168
+ float rightScreenLen = length(rightScreenDir);
169
+
170
+ if (leftScreenLen > EPS && rightScreenLen > EPS) {
171
+ leftScreenDir /= leftScreenLen;
172
+ rightScreenDir /= rightScreenLen;
173
+
174
+ /**
175
+ * Feathering AA needs special considerations on join triangles because these can get stretched a lot at acute angles.
176
+ * We use the triangle height to determine by how much they get stretched.
177
+ */
178
+ float theta = acos(clamp(dot(leftScreenDir, rightScreenDir), -1.0, 1.0));
179
+ /**
180
+ * The argument of cos here is half the angle of a join triangle.
181
+ * We start with one triangle, and every subdivision adds another triangle.
182
+ */
183
+ float subdividedTriangleHeight = (innerDisplacementLen + lineWidth) * cos(theta / (2.0 + 2.0 * NUM_JOIN_SUBDIVISIONS));
184
+ float bevelTriangleHeight = innerDisplacementLen + lineWidth * cos(theta * 0.5);
185
+ float triangleHeight = NUM_JOIN_SUBDIVISIONS > 0.0 ? subdividedTriangleHeight : bevelTriangleHeight;
186
+ vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0), perspectiveDivisor);
187
+ }
188
+ }
193
189
 
194
190
  if (isOutside && displacementLen > miterLimit * lineWidth) {
195
191
  ${C(O.roundJoins,S`
@@ -244,37 +240,23 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
244
240
  float metersPerScreenPixel = max(-clippedPos.z, nearFar[0]) * metersPerRenderUnit * screenPixelSizePerDistance;
245
241
  float lineSizeScreen = lineSize / metersPerScreenPixel;
246
242
  `)}
247
- if (lineSizeScreen < 1.0) {
248
- coverage = lineSizeScreen;
249
- lineSizeScreen = 1.0;
250
- }
251
-
252
- lineSizeScreen += aaWidth;
253
- float lineWidth = lineSizeScreen * pixelRatio;
243
+ float lineWidth = lineSizeScreen * pixelRatio + aaWidth;
254
244
  `,S`
255
- if (lineSize < 1.0) {
256
- coverage = lineSize; // convert sub-pixel coverage to alpha
257
- lineSize = 1.0;
258
- }
259
-
260
- lineSize += aaWidth;
261
- float lineWidth = lineSize * pixelRatio;
245
+ float lineWidth = lineSize * pixelRatio + aaWidth;
262
246
  `)}
263
247
 
264
248
  vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
265
- ${z?S`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:``}
249
+ ${z?S`vLineSizeInv = noPerspectiveWrite(1.0 / ${G?`lineSize`:`max(lineSize, 1.0)`}, pos.w);`:``}
266
250
  `),X&&M.main.add(S`
267
251
  float isEndVertex = float(!isStartVertex);
268
252
  vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
269
253
  vec3 segment = mix(right, left, isEndVertex);
270
254
  ${q?S`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:``}
271
255
  `),M.main.add(S`
272
- ${C(!z,S`
273
- vIsInsideJoin = 0;
274
- vStretchFactor = 1.0;
275
- vSubdivisionFactor = 0.0;
276
- vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);
277
- `)}
256
+ vIsInsideJoin = 0;
257
+ vStretchFactor = 1.0;
258
+ vSubdivisionFactor = 0.0;
259
+ vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);
278
260
 
279
261
  vec2 displacementXY = computeJoinAndCapDisplacement(
280
262
  isJoin,
@@ -303,7 +285,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
303
285
  ${Y?S`vLineDistanceNorm = lineDistNorm;`:``}
304
286
 
305
287
  pos.xyz += displacement;
306
- `),z||M.main.add(S`if (isJoin) {
288
+ `),M.main.add(S`if (isJoin) {
307
289
  vec2 joinCenterToVertex = displacementXY;
308
290
  vec2 leftCenterlineDir = left.xy;
309
291
  vec2 rightCenterlineDir = right.xy;
@@ -389,7 +371,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
389
371
  pos.z = pos.z * pos.w;
390
372
 
391
373
  vColor = getColor();
392
- vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
374
+ vColor.a = noPerspectiveWrite(vColor.a, pos.w);
393
375
 
394
376
  ${V&&!F?`pos.z -= EPS * pos.w;`:``}
395
377
 
@@ -397,41 +379,45 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
397
379
  vpos = (inverseProjectionMatrix * pos).xyz;
398
380
  gl_Position = pos;
399
381
  forwardObjectAndLayerIdColor();
400
- }`),k.include(E,O),k.include(g),N.include(m),N.include(w),N.include(e,O),N.main.add(`discardBySlice(vpos);`),z||N.code.add(S`float lineFeatheringFactor(float lineWidth, float lineDistance) {
382
+ }`),k.include(E,O),k.include(g),N.include(m),N.include(w),N.include(e,O),N.main.add(`discardBySlice(vpos);`),N.code.add(S`float lineFeatheringFactor(float lineWidth, float lineDistance) {
401
383
  float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
402
384
  float featherWidth = 2.0;
403
- float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
404
- float straightFeatherStartDistance = max(lineWidth - featherWidth, 0.0);
385
+ float featherStartDistance = lineWidth - featherWidth / stretchFactor;
386
+ float straightFeatherStartDistance = lineWidth - featherWidth;
405
387
  float value = abs(lineDistance);
406
388
  float feather = (value - featherStartDistance) / (lineWidth - featherStartDistance);
407
389
  vec2 joinCenterSDFs = noPerspectiveRead(vJoinCenterLineSDFs);
408
390
  float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joinCenterSDFs.y);
409
391
  float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
410
392
  feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
411
- return 1.0 - clamp(feather, 0.0, 1.0);
393
+ float coverage = min(lineWidth - aaWidth, 1.0);
394
+ return clamp(1.0 - feather, 0.0, coverage);
412
395
  }`),N.main.add(S`
413
396
  float lineWidth = noPerspectiveRead(vLineWidth);
414
397
  float lineDistance = noPerspectiveRead(vLineDistance);
415
398
  ${C(Y,S`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
416
- `),V?N.main.add(S`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
417
- vec4 finalColor = albedo;`):(q&&N.main.add(S`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
418
- vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
419
- float fragmentRadius = length(fragmentPosition);
420
- float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
421
- float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
422
- if (capCoverage < alphaCutoff) {
423
- discard;
424
- }`),J?N.main.add(S`
425
- vec2 stipplePosition = vec2(
426
- min(getStippleCapDistance(), 0.0),
427
- ${Z?S`lineDistance / lineWidth`:S`lineDistanceNorm`}
428
- );
429
- float stippleRadius = length(stipplePosition * lineWidth);
430
- float stippleCapSDF = (stippleRadius - lineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
431
- float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
432
- float stippleAlpha = step(alphaCutoff, stippleCoverage);
433
- `):N.main.add(S`float stippleAlpha = getStippleAlpha(lineWidth);`),L!==11&&N.main.add(S`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),N.uniforms.add(new y(`intrinsicColor`,e=>e.color)).main.add(S`vec4 color = intrinsicColor * vColor;
399
+ `),J&&N.main.add(S`float nominalLineWidth = lineWidth - aaWidth;`),V?N.main.add(S`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
400
+ vec4 finalColor = albedo;`):(q&&N.main.add(S`
401
+ float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
402
+ vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
403
+
404
+ float fragmentRadius = length(fragmentPosition);
405
+ float fragmentCapSDF = (fragmentRadius - ${J?`nominalLineWidth`:`lineWidth`}) * 0.5; // Divide by 2 to transform from double pixel scale
406
+ float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
407
+
408
+ if (capCoverage < alphaCutoff) {
409
+ discard;
410
+ }
411
+ `),J?N.main.add(S`vec2 stipplePosition = vec2(
412
+ min(getStippleCapDistance(), 0.0) * nominalLineWidth,
413
+ lineDistance
414
+ );
415
+ float stippleRadius = length(stipplePosition);
416
+ float stippleCapSDF = (stippleRadius - nominalLineWidth) * 0.5;
417
+ float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
418
+ float lineCoverage = min(lineFeatheringFactor(lineWidth, lineDistance), capCoverage);
419
+ float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):N.main.add(S`float stippleAlpha = getStippleAlpha(lineWidth);`),L!==11&&N.main.add(S`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),N.uniforms.add(new y(`intrinsicColor`,e=>e.color)).main.add(S`vec4 color = intrinsicColor * vColor;
434
420
  color.a = noPerspectiveRead(color.a);`),H&&N.uniforms.add(new y(`innerColor`,e=>e.innerColor??e.color),new x(`innerWidth`,(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(S`float distToInner = abs(lineDistance) - innerWidth;
435
421
  float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
436
422
  float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
437
- color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),N.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),B&&(N.uniforms.add(new x(`falloff`,e=>e.falloff)),N.main.add(S`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),z||N.main.add(S`albedo.a *= lineFeatheringFactor(lineWidth, lineDistance);`),U&&(M.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),k.include(T,O),N.main.add(`albedo.a *= animatedAlpha();`)),I?(j.add(`vnormal`,`vec3`),M.include(o,O),M.main.add(`vnormal = getLocalUp(vpos, localOrigin);`),k.include(n,O),N.main.add(`vec4 finalColor = evaluateSceneLightingFragment(vpos, vnormal, albedo);`)):N.main.add(`vec4 finalColor = albedo;`)),N.main.add(S`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),k}const A=Object.freeze(Object.defineProperty({__proto__:null,build:k,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{A as R,k as b,O as n};
423
+ color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),N.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),B&&(N.uniforms.add(new x(`falloff`,e=>e.falloff)),N.main.add(S`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),N.main.add(S`albedo.a *= ${J?`lineCoverage`:`lineFeatheringFactor(lineWidth, lineDistance)`};`),U&&(M.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),k.include(T,O),N.main.add(`albedo.a *= animatedAlpha();`)),I?(j.add(`vnormal`,`vec3`),M.include(o,O),M.main.add(`vnormal = getLocalUp(vpos, localOrigin);`),k.include(n,O),N.main.add(`vec4 finalColor = evaluateSceneLightingFragment(vpos, vnormal, albedo);`)):N.main.add(`vec4 finalColor = albedo;`)),N.main.add(S`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),k}const A=Object.freeze(Object.defineProperty({__proto__:null,build:k,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{A as R,k as b,O as n};
package/config.d.ts CHANGED
@@ -236,35 +236,26 @@ export interface Config {
236
236
  * An object with properties that control various aspects of [the workers framework](https://developers.arcgis.com/javascript/latest/references/core/core/workers/).
237
237
  *
238
238
  * @example
239
- * // Set the path for the worker's AMD loader configuration
240
- * // to a folder called workersFolder.
241
- * config.workers.loaderConfig = {
242
- * paths: {
243
- * myWorkers: new URL("./workersFolder", document.baseURI).href
244
- * }
245
- * };
246
- *
247
- * // load myWorkers/Calculator.js in the workers framework
248
- * // and invoke its "getMaxNumber" method
249
- * workers.open(this, "myWorkers/Calculator")
250
- * .then((connection) => {
251
- * return connection.invoke("getMaxNumber", [0, 1, 2, 3, 4]);
252
- * })
253
- * .then((result) => {
254
- * console.log(result);
255
- * });
239
+ * // Load an ESM worker module and invoke its "getMaxNumber" function.
240
+ *
241
+ * const connection = await workers.open(new URL("./workersFolder/Calculator.js", import.meta.url).href, {
242
+ * isESM: true
243
+ * });
244
+ *
245
+ * try {
246
+ * // Invoke the worker function and receive its result on the main thread.
247
+ * const result = await connection.invoke("getMaxNumber", [0, 1, 2, 3, 4]);
248
+ * console.log(result);
249
+ * } finally {
250
+ * connection.close();
251
+ * }
256
252
  *
257
253
  * //*********************************************************
258
- * // module: workerFolder/Calculator.js
254
+ * // module: workersFolder/Calculator.js
259
255
  * //*********************************************************
260
- * define([], () => {
261
- * return {
262
- * // this function can be invoked from the main thread
263
- * getMaxNumber: function (number) {
264
- * return Math.max.apply(null, numbers);
265
- * }
266
- * };
267
- * });
256
+ * export function getMaxNumber(numbers) {
257
+ * return Math.max(...numbers);
258
+ * }
268
259
  */
269
260
  workers: WorkersConfig;
270
261
  }
@@ -294,27 +285,64 @@ export interface ApiKeysScopeConfig {
294
285
  }
295
286
 
296
287
  export interface WorkersConfig {
297
- /** The absolute url to the AMD or SystemJS loader used in the worker. The AMD CDN build has a default value for when this property isn't set. This is required when using custom workers. See this [ESM sample](https://github.com/Esri/jsapi-resources/tree/main/templates/geometry-operator-worker). */
288
+ /**
289
+ * The absolute URL to the AMD or SystemJS loader used in the worker. The AMD CDN build has a default value for when this property isn't set. This is required when using custom workers.
290
+ *
291
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead. See this [ESM sample](https://github.com/Esri/jsapi-resources/tree/main/templates/geometry-operator-worker).
292
+ */
298
293
  loaderUrl?: string;
299
294
  /**
300
295
  * This is used by the `@arcgis/core` npm package to control where to load a custom build of the `RemoteClient` from.
301
- * By default, `RemoteClient` is loaded from the API's [assets](https://developers.arcgis.com/javascript/latest/working-with-assets/). See this [ESM sample](https://github.com/Esri/jsapi-resources/tree/main/templates/geometry-operator-worker).
296
+ * By default, `RemoteClient` is loaded from the API's [assets](https://developers.arcgis.com/javascript/latest/working-with-assets/).
297
+ *
298
+ * `RemoteClient` is the SDK’s internal worker-side runtime. It loads and instantiates the worker module, then manages communication with the main thread through the worker connection.
299
+ *
300
+ * @deprecated since version 5.2. Custom worker runtime paths are deprecated. Use the default worker runtime with ESM worker modules opened via [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open).
302
301
  */
303
302
  workerPath?: string;
304
- /** The AMD configuration object that is set in each worker. */
303
+ /**
304
+ * The AMD configuration object that is set in each worker.
305
+ *
306
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
307
+ */
305
308
  loaderConfig?: WorkersLoaderConfig;
306
309
  }
307
310
 
311
+ /**
312
+ * Configuration for the legacy AMD worker loader.
313
+ *
314
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
315
+ */
308
316
  export interface WorkersLoaderConfig {
309
- /** The AMD loader loads all code relative to the baseUrl. */
317
+ /**
318
+ * The AMD loader loads all code relative to the baseUrl.
319
+ *
320
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
321
+ */
310
322
  baseUrl?: string;
311
- /** Determines if the specified feature capabilities are supported. */
323
+ /**
324
+ * Determines if the specified feature capabilities are supported.
325
+ *
326
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
327
+ */
312
328
  has?: Record<string, any>;
313
- /** Map paths in module identifiers to different paths. */
329
+ /**
330
+ * Map paths in module identifiers to different paths.
331
+ *
332
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
333
+ */
314
334
  map?: Record<string, Record<string, string>>;
315
- /** An array of objects which provide the package name and its location. */
335
+ /**
336
+ * An array of objects which provide the package name and its location.
337
+ *
338
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
339
+ */
316
340
  packages?: object[];
317
- /** Map of module id fragments to file paths. */
341
+ /**
342
+ * Map of module id fragments to file paths.
343
+ *
344
+ * @deprecated since version 5.2. AMD/SystemJS worker loading is deprecated. Use ESM worker modules with [workers.open()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/#open) instead.
345
+ */
318
346
  paths?: Record<string, string>;
319
347
  }
320
348
 
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.160/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
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.161/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
package/core/has.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const e=globalThis,t={...e.esriConfig?.has};function has(n){return typeof t[n]==`function`?t[n]=t[n](e):t[n]}has.add=(e,n,r,i)=>{(i||t[e]===void 0)&&(t[e]=n),r&&has(e)},has.cache=t,has.add(`big-integer-warning-enabled`,!0),has.add(`esri-deprecation-warnings`,!0),has.add(`esri-tests-disable-screenshots`,!1),has.add(`esri-tests-use-full-window`,!1),has.add(`esri-tests-post-to-influx`,!0),has.add(`esri-cim-animations-enable-status`,`enabled`),has.add(`esri-cim-animations-spotlight`,!1),has.add(`esri-cim-animations-freeze-time`,!1),(()=>{has.add(`host-webworker`,e.WorkerGlobalScope!==void 0&&self instanceof e.WorkerGlobalScope);let t=typeof window<`u`&&typeof location<`u`&&typeof document<`u`&&window.location===location&&window.document===document;if(has.add(`host-browser`,t),has.add(`host-node`,!!(typeof e.process==`object`&&e.process.versions?.node&&e.process.versions.v8)),has.add(`dom`,t),has(`host-browser`)){let e=navigator,t=e.userAgent,n=e.appVersion,r=parseFloat(n);if(has.add(`wp`,parseFloat(t.split(`Windows Phone`)[1])||void 0),has.add(`msapp`,parseFloat(t.split(`MSAppHost/`)[1])||void 0),has.add(`khtml`,n.includes(`Konqueror`)?r:void 0),has.add(`edge`,parseFloat(t.split(`Edge/`)[1])||void 0),has.add(`opr`,parseFloat(t.split(`OPR/`)[1])||void 0),has.add(`webkit`,!has(`wp`)&&!has(`edge`)&&parseFloat(t.split(`WebKit/`)[1])||void 0),has.add(`chrome`,!has(`edge`)&&!has(`opr`)&&parseFloat(t.split(`Chrome/`)[1])||void 0),has.add(`android`,!has(`wp`)&&parseFloat(t.split(`Android `)[1])||void 0),has.add(`safari`,n.includes(`Safari`)&&!has(`wp`)&&!has(`chrome`)&&!has(`android`)&&!has(`edge`)&&!has(`opr`)?parseFloat(n.split(`Version/`)[1]):void 0),has.add(`mac`,n.includes(`Macintosh`)),!has(`wp`)&&/(iPhone|iPod|iPad)/.test(t)){let e=RegExp.$1.replace(/P/,`p`),n=/OS ([\d_]+)/.test(t)?RegExp.$1:`1`,r=parseFloat(n.replace(/_/,`.`).replaceAll(`_`,``));has.add(e,r),has.add(`ios`,r)}has(`webkit`)||(t.includes(`Gecko`)&&!has(`wp`)&&!has(`khtml`)&&!has(`edge`)&&has.add(`mozilla`,r),has(`mozilla`)&&has.add(`ff`,parseFloat(t.split(`Firefox/`)[1]||t.split(`Minefield/`)[1])||void 0))}})(),(()=>{if(e.navigator){let e=navigator.userAgent,t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),n=/iPhone/i.test(e);t&&has.add(`esri-mobile`,t),n&&has.add(`esri-iPhone`,n),has.add(`esri-geolocation`,!!navigator.geolocation)}has.add(`esri-wasm`,`WebAssembly`in e),has.add(`esri-temporal`,`Temporal`in e),has.add(`esri-performance-mode-frames-between-render`,20),has.add(`esri-force-performance-mode`,!1),has.add(`esri-shared-array-buffer`,()=>{let t=`SharedArrayBuffer`in e,n=e.crossOriginIsolated===!1;return t&&!n}),has.add(`wasm-simd`,()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))),has.add(`esri-atomics`,`Atomics`in e),has.add(`esri-workers`,`Worker`in e),has.add(`web-feat:cache`,`caches`in e),has.add(`esri-workers-arraybuffer-transfer`,!has(`safari`)||Number(has(`safari`))>=12),has.add(`min-workers-pool-size`,2),has.add(`max-workers-pool-size`,has(`esri-mobile`)?3:8),has.add(`featurelayer-simplify-thresholds`,[.5,.5,.5,.5]),has.add(`featurelayer-simplify-payload-size-factors`,[1,1,4]),has.add(`featurelayer-animation-enabled`,!0),has.add(`featurelayer-hybrid-tile-enabled`,!0),has.add(`featurelayer-snapshot-enabled`,!0),has.add(`featurelayer-snapshot-initial-tolerance`,0),has.add(`featurelayer-snapshot-point-min-threshold`,8e4),has.add(`featurelayer-snapshot-point-max-threshold`,4e5),has.add(`featurelayer-snapshot-multipoint-min-threshold`,2e4),has.add(`featurelayer-snapshot-multipoint-max-threshold`,1e5),has.add(`featurelayer-snapshot-polygon-min-threshold`,2e3),has.add(`featurelayer-snapshot-polygon-max-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-min-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-max-threshold`,2e3),has.add(`featurelayer-snapshot-max-vertex-count`,25e4),has.add(`featurelayer-snapshot-non-hosted-exceedslimit-enabled`,!0),has.add(`featurelayer-snapshot-concurrency`,4),has.add(`featurelayer-snapshot-allow-editable`,!1),has.add(`featurelayer-snapshot-coverage`,.1),has.add(`featurelayer-pixel-buffering-enabled`,!0),has.add(`featurelayer-query-max-depth`,4),has.add(`featurelayer-query-max-page-size`,8e3),has.add(`featurelayer-query-pausing-enabled`,!1),has.add(`featurelayer-query-tile-concurrency`,4),has.add(`featurelayer-query-tile-max-features`,6e5),has.add(`featurelayer-advanced-symbols`,!1),has.add(`featurelayer-pbf`,!0),has.add(`featurelayer-pbf-statistics`,!1),has.add(`featurelayer-pbf-true-curves`,!0),has.add(`feature-layers-workers`,!0),has.add(`feature-polyline-generalization-factor`,1),has.add(`featurelayer-relative-time-queries-enabled`,!0),has.add(`featurelayer-relative-time-queries-bin-window-public`,1),has.add(`featurelayer-relative-time-queries-bin-window-private`,60),has.add(`parquetlayer-full-query-feature-count`,5e5),has.add(`parquetlayer-persistence-enabled`,!0),has.add(`parquetlayer-cache-enabled`,!0),has.add(`parquetlayer-legacy-field-overrides-enabled`,!1),has.add(`sketch-layer-enabled`,!1),has.add(`mapview-transitions-duration`,200),has.add(`mapview-essential-goto-duration`,200),has.add(`mapview-srswitch-adjust-rotation-scale-threshold`,24e6),has.add(`mapserver-pbf-version-support`,10.81),has.add(`mapservice-popup-identify-max-tolerance`,20),has.add(`request-queue-concurrency-global`,64),has.add(`request-queue-concurrency-hosted`,16),has.add(`request-queue-concurrency-non-hosted`,16),has.add(`curve-densification-coarse-segments`,128),has.add(`curve-densification-max-segments`,2e3),has.add(`curve-densification-min-segments`,3),has.add(`curve-densification-pixel-deviation`,.5),has.add(`view-readyState-waiting-delay`,1e3),has.add(`gradient-depth-bias`,.01),has.add(`gradient-depth-epsilon`,1e-8),has.add(`enable-feature:esri-compress-textures`,!0),has.add(`enable-feature:im-shading`,!0),has.add(`enable-feature:im-vertex-normals`,!0),!has(`host-webworker`)&&has(`host-browser`)&&(has.add(`esri-csp-restrictions`,()=>{try{Function()}catch{return!0}return!1}),has.add(`esri-url-encodes-apostrophe`,()=>{let e=window.document.createElement(`a`);return e.href=`?'`,e.href.includes(`?%27`)}))})();export{has as default};
2
+ const e=globalThis,t={...e.esriConfig?.has};function has(n){return typeof t[n]==`function`?t[n]=t[n](e):t[n]}has.add=(e,n,r,i)=>{(i||t[e]===void 0)&&(t[e]=n),r&&has(e)},has.cache=t,has.add(`big-integer-warning-enabled`,!0),has.add(`esri-deprecation-warnings`,!0),has.add(`esri-tests-disable-screenshots`,!1),has.add(`esri-tests-use-full-window`,!1),has.add(`esri-tests-post-to-influx`,!0),has.add(`esri-cim-animations-enable-status`,`enabled`),has.add(`esri-cim-animations-spotlight`,!1),has.add(`esri-cim-animations-freeze-time`,!1),(()=>{has.add(`host-webworker`,e.WorkerGlobalScope!==void 0&&self instanceof e.WorkerGlobalScope);let t=typeof window<`u`&&typeof location<`u`&&typeof document<`u`&&window.location===location&&window.document===document;if(has.add(`host-browser`,t),has.add(`host-node`,!!(typeof e.process==`object`&&e.process.versions?.node&&e.process.versions.v8)),has.add(`dom`,t),has(`host-browser`)){let e=navigator,t=e.userAgent,n=e.appVersion,r=parseFloat(n);if(has.add(`wp`,parseFloat(t.split(`Windows Phone`)[1])||void 0),has.add(`msapp`,parseFloat(t.split(`MSAppHost/`)[1])||void 0),has.add(`khtml`,n.includes(`Konqueror`)?r:void 0),has.add(`edge`,parseFloat(t.split(`Edge/`)[1])||void 0),has.add(`opr`,parseFloat(t.split(`OPR/`)[1])||void 0),has.add(`webkit`,!has(`wp`)&&!has(`edge`)&&parseFloat(t.split(`WebKit/`)[1])||void 0),has.add(`chrome`,!has(`edge`)&&!has(`opr`)&&parseFloat(t.split(`Chrome/`)[1])||void 0),has.add(`android`,!has(`wp`)&&parseFloat(t.split(`Android `)[1])||void 0),has.add(`safari`,n.includes(`Safari`)&&!has(`wp`)&&!has(`chrome`)&&!has(`android`)&&!has(`edge`)&&!has(`opr`)?parseFloat(n.split(`Version/`)[1]):void 0),has.add(`mac`,n.includes(`Macintosh`)),!has(`wp`)&&/(iPhone|iPod|iPad)/.test(t)){let e=RegExp.$1.replace(/P/,`p`),n=/OS ([\d_]+)/.test(t)?RegExp.$1:`1`,r=parseFloat(n.replace(/_/,`.`).replaceAll(`_`,``));has.add(e,r),has.add(`ios`,r)}has(`webkit`)||(t.includes(`Gecko`)&&!has(`wp`)&&!has(`khtml`)&&!has(`edge`)&&has.add(`mozilla`,r),has(`mozilla`)&&has.add(`ff`,parseFloat(t.split(`Firefox/`)[1]||t.split(`Minefield/`)[1])||void 0))}})(),(()=>{if(e.navigator){let e=navigator.userAgent,t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),n=/iPhone/i.test(e);t&&has.add(`esri-mobile`,t),n&&has.add(`esri-iPhone`,n),has.add(`esri-geolocation`,!!navigator.geolocation)}has.add(`esri-wasm`,`WebAssembly`in e),has.add(`esri-temporal`,`Temporal`in e),has.add(`esri-performance-mode-frames-between-render`,20),has.add(`esri-force-performance-mode`,!1),has.add(`esri-shared-array-buffer`,()=>{let t=`SharedArrayBuffer`in e,n=e.crossOriginIsolated===!1;return t&&!n}),has.add(`wasm-simd`,()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))),has.add(`esri-atomics`,`Atomics`in e),has.add(`esri-workers`,`Worker`in e),has.add(`web-feat:cache`,`caches`in e),has.add(`esri-workers-arraybuffer-transfer`,!has(`safari`)||Number(has(`safari`))>=12),has.add(`min-workers-pool-size`,2),has.add(`max-workers-pool-size`,has(`esri-mobile`)?3:8),has.add(`featurelayer-simplify-thresholds`,[.5,.5,.5,.5]),has.add(`featurelayer-simplify-payload-size-factors`,[1,1,4]),has.add(`featurelayer-animation-enabled`,!0),has.add(`featurelayer-hybrid-tile-enabled`,!0),has.add(`featurelayer-snapshot-enabled`,!0),has.add(`featurelayer-snapshot-initial-tolerance`,0),has.add(`featurelayer-snapshot-point-min-threshold`,8e4),has.add(`featurelayer-snapshot-point-max-threshold`,4e5),has.add(`featurelayer-snapshot-multipoint-min-threshold`,2e4),has.add(`featurelayer-snapshot-multipoint-max-threshold`,1e5),has.add(`featurelayer-snapshot-polygon-min-threshold`,2e3),has.add(`featurelayer-snapshot-polygon-max-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-min-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-max-threshold`,2e3),has.add(`featurelayer-snapshot-max-vertex-count`,25e4),has.add(`featurelayer-snapshot-non-hosted-exceedslimit-enabled`,!0),has.add(`featurelayer-snapshot-concurrency`,4),has.add(`featurelayer-snapshot-allow-editable`,!1),has.add(`featurelayer-snapshot-coverage`,.1),has.add(`featurelayer-pixel-buffering-enabled`,!0),has.add(`featurelayer-query-max-depth`,4),has.add(`featurelayer-query-max-page-size`,8e3),has.add(`featurelayer-query-pausing-enabled`,!1),has.add(`featurelayer-query-tile-concurrency`,4),has.add(`featurelayer-query-tile-max-features`,6e5),has.add(`featurelayer-advanced-symbols`,!1),has.add(`featurelayer-pbf`,!0),has.add(`featurelayer-pbf-statistics`,!1),has.add(`featurelayer-pbf-true-curves`,!0),has.add(`feature-layers-workers`,!0),has.add(`feature-polyline-generalization-factor`,1),has.add(`featurelayer-relative-time-queries-enabled`,!0),has.add(`featurelayer-relative-time-queries-bin-window-public`,1),has.add(`featurelayer-relative-time-queries-bin-window-private`,60),has.add(`parquetlayer-full-query-feature-count`,5e5),has.add(`parquetlayer-persistence-enabled`,!0),has.add(`parquetlayer-cache-enabled`,!0),has.add(`parquetlayer-legacy-field-overrides-enabled`,!1),has.add(`sketch-layer-enabled`,!1),has.add(`mapview-transitions-duration`,200),has.add(`mapview-essential-goto-duration`,200),has.add(`mapview-srswitch-adjust-rotation-scale-threshold`,24e6),has.add(`mapserver-pbf-version-support`,10.81),has.add(`mapservice-popup-identify-max-tolerance`,20),has.add(`request-queue-concurrency-global`,64),has.add(`request-queue-concurrency-hosted`,16),has.add(`request-queue-concurrency-non-hosted`,16),has.add(`curve-densification-coarse-segments`,128),has.add(`curve-densification-max-segments`,2e3),has.add(`curve-densification-min-segments`,3),has.add(`curve-densification-pixel-deviation`,.5),has.add(`view-readyState-waiting-delay`,1e3),has.add(`gradient-depth-bias`,.01),has.add(`gradient-depth-epsilon`,1e-8),!has(`host-webworker`)&&has(`host-browser`)&&(has.add(`esri-csp-restrictions`,()=>{try{Function()}catch{return!0}return!1}),has.add(`esri-url-encodes-apostrophe`,()=>{let e=window.document.createElement(`a`);return e.href=`?'`,e.href.includes(`?%27`)}))})();export{has as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{createTask as e}from"./asyncUtils.js";import t from"./Collection.js";import{destroyHandle as n,removeIfHandle as r}from"./handleUtils.js";import{ignoreAbortErrors as i,isAborted as a,createAbortError as o}from"./promiseUtils.js";import{on as s}from"./reactiveUtils.js";function c(e,n,r){let i=r?.createCollection?.()??new t,a=r?.recycleItems?new l:null,o=(e,t=0)=>{if(!e?.length)return;let n=i.splice(t,e.length);a?a.processRemoved(e):n.forEach(d)},c=(e,t=0)=>{if(!e?.length)return;let r=[];for(let t of e){let e=a?.use(t);if(e)r.push(e);else{let e=n(t);a?.register(t,e),r.push(e)}}i.addMany(r,t)},u=s(e,`after-splice`,({added:e,start:t,removed:n})=>{o(n,t),c(e,t)},{sync:!0,onListenerRemove:e=>o(e.items),onListenerAdd:e=>c(e.items)});return i.addHandles(u),i}class l{constructor(){this._originalToMapped=new Map,this._removedItemCandidates=new Set,this._garbageCollectionQueued=!1}processRemoved(e){if(!e?.length)return;let{_removedItemCandidates:t}=this;for(let n of e)this._getItem(n)?.markRemoved()&&(t.add(n),this._queueGarbageCollection())}use(e){let t=this._getItem(e);return t&&(t.removed=!1),t?.item}register(e,t){this._originalToMapped.set(e,new u(t))}_getItem(e){return this._originalToMapped.get(e)}_queueGarbageCollection(){this._garbageCollectionQueued||(this._garbageCollectionQueued=!0,queueMicrotask(()=>this._garbageCollectCandidates()))}_garbageCollectCandidates(){this._garbageCollectionQueued=!1;let{_removedItemCandidates:e}=this,t=Array.from(e);e.clear(),t.forEach(e=>this._garbageCollectIfRemoved(e))}_garbageCollectIfRemoved(e){let{_originalToMapped:t}=this,n=this._getItem(e);n?.removed&&(d(n.item),t.delete(e))}}class u{constructor(e){this.item=e,this.removed=!1}markRemoved(){return this.removed=!0,!0}}function d(e){typeof e==`object`&&e&&(`destroy`in e&&typeof e.destroy==`function`?e.destroy():r(e))}function f(r,s,l){let u=new t,f=c(r,t=>e(async e=>{let n=await s(t,e);if(a(e))throw d(n),o();return n}),l),p=()=>null,m=async e=>{let t=await e.promise,n=f.indexOf(e);n<0||u.splice(n,1,t)};u.addMany(f.items.map(p));for(let e of f)i(m(e));let h=f.on(`after-splice`,({added:e,start:t,deleteCount:n})=>{let r=u.splice(t,n);for(let e of r)d(e);if(e?.length){u.addMany(e.map(p),t);for(let t of e)i(m(t))}});return u.addHandles([n(f),h]),u}export{c as mapCollection,f as mapCollectionAsync};
2
+ import{createTask as e}from"./asyncUtils.js";import t from"./Collection.js";import{destroyHandle as n,removeIfHandle as r}from"./handleUtils.js";import{ignoreAbortErrors as i,isAborted as a,createAbortError as o}from"./promiseUtils.js";import{on as s}from"./reactiveUtils.js";function c(e,n,r){let i=r?.createCollection?.()??new t,a=r?.recycleItems?new l:null,o=(e,t=0)=>{if(!e?.length)return;let n=i.splice(t,e.length);a?a.processRemoved(e):n.forEach(d)},c=(e,t=0)=>{if(!e?.length)return;let r=[];for(let t of e){let e=a?.use(t);if(e)r.push(e);else{let e=n(t);a?.register(t,e),r.push(e)}}i.addMany(r,t)},u=s(e,`after-splice`,({added:e,start:t,removed:n})=>{o(n,t),c(e,t)},{sync:!0,onListenerRemove:e=>o(e.items),onListenerAdd:e=>c(e.items)});return i.addHandles(u),i}class l{constructor(){this._originalToMapped=new Map,this._removedItemCandidates=new Set,this._garbageCollectionQueued=!1}processRemoved(e){if(!e?.length)return;let{_removedItemCandidates:t}=this;for(let n of e)this._getItem(n)?.markRemoved()&&(t.add(n),this._queueGarbageCollection())}use(e){let t=this._getItem(e);return t&&(t.removed=!1),t?.item}register(e,t){this._originalToMapped.set(e,new u(t))}_getItem(e){return this._originalToMapped.get(e)}_queueGarbageCollection(){this._garbageCollectionQueued||(this._garbageCollectionQueued=!0,queueMicrotask(()=>this._garbageCollectCandidates()))}_garbageCollectCandidates(){this._garbageCollectionQueued=!1;let{_removedItemCandidates:e}=this,t=Array.from(e);e.clear(),t.forEach(e=>this._garbageCollectIfRemoved(e))}_garbageCollectIfRemoved(e){let{_originalToMapped:t}=this,n=this._getItem(e);n?.removed&&(d(n.item),t.delete(e))}}class u{constructor(e){this.item=e,this.removed=!1}markRemoved(){return this.removed=!0,!0}}function d(e){typeof e==`object`&&e&&(`destroy`in e&&typeof e.destroy==`function`?e.destroy():r(e))}function f(r,s,l){let u=new t,f=c(r,t=>e(async e=>{let n=await s(t,e);if(a(e))throw d(n),o();return n}),l),p=()=>null,m=async e=>{let t=await e.promise,n=f.indexOf(e);if(n<0){d(t);return}u.splice(n,1,t)};u.addMany(f.items.map(p));for(let e of f)i(m(e));let h=f.on(`after-splice`,({added:e,start:t,deleteCount:n})=>{let r=u.splice(t,n);for(let e of r)d(e);if(e?.length){u.addMany(e.map(p),t);for(let t of e)i(m(t))}});return u.addHandles([n(f),h]),u}export{c as mapCollection,f as mapCollectionAsync};
@@ -49,30 +49,23 @@ export interface InvokeOptions extends AbortOptions {
49
49
  *
50
50
  * ```js
51
51
  * // Module loaded in main thread
52
- * export function getSumAsync(numbers) {
53
- * let connection = null;
54
- *
55
- * return workers.open("./calculator.js")
56
- * .then(function(conn) {
57
- * // Keep the connection reference to later close it.
58
- * connection = conn;
59
- *
60
- * return connection.invoke("getSum", numbers);
61
- * })
62
- * .then(function(result) {
63
- * // close the connection
64
- * connection.close();
65
- * connection = null;
66
- *
67
- * return result;
68
- * });
52
+ * import { open } from "@arcgis/core/core/workers.js";
53
+ *
54
+ * export async function getSumAsync(numbers) {
55
+ * const connection = await open(new URL("./calculator.js", import.meta.url).href, {
56
+ * isESM: true
57
+ * });
58
+ *
59
+ * try {
60
+ * return await connection.invoke("getSum", numbers);
61
+ * } finally {
62
+ * connection.close();
63
+ * }
69
64
  * }
70
65
  *
71
66
  * // Invoke our method.
72
- * getSumAsync([0, 2, 4, 6, 8])
73
- * .then(function(result) {
74
- * console.log("Result:", result);
75
- * });
67
+ * const result = await getSumAsync([0, 2, 4, 6, 8]);
68
+ * console.log("Result:", result);
76
69
  * ```
77
70
  *
78
71
  * <span id="multiple-parameters"></span>
@@ -102,55 +95,37 @@ export interface InvokeOptions extends AbortOptions {
102
95
  *
103
96
  * ```js
104
97
  * // Module loaded in main thread
105
- * export function mapMultiplyAsync(numbers, factor) {
106
- * let connection = null;
107
- *
108
- * return workers.open("./calculator.js")
109
- * .then(function(conn) {
110
- * // Keep the connection reference to later close it.
111
- * connection = conn;
112
- *
113
- * // invoke mapMultiply and pass in object with two key-value pairs.
114
- * return connection.invoke("mapMultiply", {
115
- * numbers: numbers,
116
- * factor: factor
117
- * });
118
- * })
119
- * .then(function(result) {
120
- * // close the connection after we are done.
121
- * connection.close();
122
- * connection = null;
123
- *
124
- * return result;
98
+ * export async function mapMultiplyAsync(numbers, factor) {
99
+ * const connection = await open(new URL("./calculator.js", import.meta.url).href, {
100
+ * isESM: true
101
+ * });
102
+ *
103
+ * try {
104
+ * // Invoke mapMultiply and pass an object with two key-value pairs.
105
+ * return await connection.invoke("mapMultiply", {
106
+ * numbers: numbers,
107
+ * factor: factor
125
108
  * });
109
+ * } finally {
110
+ * connection.close();
111
+ * }
126
112
  * }
127
113
  *
128
114
  * // Invoke the method.
129
- * mapMultiplyAsync([0, 2, 4, 6, 8], 2)
130
- * .then(function(result) {
131
- * console.log("Result:", result);
132
- * });
115
+ * const result = await mapMultiplyAsync([0, 2, 4, 6, 8], 2);
116
+ * console.log("Result:", result);
133
117
  * ```
134
118
  *
135
119
  * <span id="using-transferables"></span>
136
120
  * ## Using transferables
137
121
  *
138
- * `Transferable` objects can be used
122
+ * [Transferable objects](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Transferable_objects) can be used
139
123
  * to transfer data between main and worker thread to avoid copying the data. With this approach,
140
124
  * the ownership of the object is transferred to the other context. Use this technique to transfer large
141
125
  * chuck of memory with [ArrayBuffers](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer),
142
126
  * a [MessagePort](https://developer.mozilla.org/docs/Web/API/MessagePort),
143
127
  * or an [ImageBitmap](https://developer.mozilla.org/docs/Web/API/ImageBitmap).
144
128
  *
145
- * > [!CAUTION]
146
- * >
147
- * > **Note**
148
- * >
149
- * > The `Transferable` interface technically no longer exists. The functionality of `Transferable` objects still exists,
150
- * > however, but is implemented at a more fundamental level
151
- * > (technically speaking, using the `[Transferable]` [WebIDL](https://developer.mozilla.org/docs/Glossary/WebIDL)
152
- * > extended attribute). See also [Transferable objects](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Transferable_objects).
153
- *
154
129
  * To transfer an object to the worker, use the `transferList` parameter of the [invoke()](https://developers.arcgis.com/javascript/latest/references/core/core/workers/Connection/#invoke) method.
155
130
  * For the remote method to return or resolve with a transferable object, the result returned must have
156
131
  * two properties: `result` and `transferList`, `result` being an object and `transferList` the array
@@ -184,26 +159,19 @@ export interface InvokeOptions extends AbortOptions {
184
159
  *
185
160
  * ```js
186
161
  * // Module loaded in main thread
187
- * export function mapMultiplyFloat64Async(numbers, factor) {
188
- * let connection = null;
189
- *
190
- * return workers.open("./calculator.js")
191
- * .then(function(conn) {
192
- * // Keep the connection reference to later close it.
193
- * connection = conn;
194
- *
195
- * return connection.invoke("mapMultiplyFloat64", {
196
- * numbers: numbers,
197
- * factor: factor
198
- * });
199
- * })
200
- * .then(function(result) {
201
- * // close the connection after we are done.
202
- * connection.close();
203
- * connection = null;
204
- *
205
- * return result;
162
+ * export async function mapMultiplyFloat64Async(numbers, factor) {
163
+ * const connection = await open(new URL("./calculator.js", import.meta.url).href, {
164
+ * isESM: true
165
+ * });
166
+ *
167
+ * try {
168
+ * return await connection.invoke("mapMultiplyFloat64", {
169
+ * numbers: numbers,
170
+ * factor: factor
206
171
  * });
172
+ * } finally {
173
+ * connection.close();
174
+ * }
207
175
  * }
208
176
  *
209
177
  * // Invoke our method.
@@ -213,11 +181,9 @@ export interface InvokeOptions extends AbortOptions {
213
181
  * floats[2] = 4;
214
182
  * floats[3] = 6;
215
183
  * floats[4] = 8;
216
- * mapMultiplyFloat64Async(floats, 2)
217
- * .then(function(result) {
218
- * let resultFloats = new Float64Array(result);
219
- * console.log("Result:", resultFloats);
220
- * });
184
+ * const result = await mapMultiplyFloat64Async(floats, 2);
185
+ * const resultFloats = new Float64Array(result);
186
+ * console.log("Result:", resultFloats);
221
187
  * ```
222
188
  *
223
189
  * @since 4.2
@@ -250,16 +216,19 @@ export default abstract class Connection {
250
216
  * const controller = new AbortController();
251
217
  * const signal = controller.signal;
252
218
  *
253
- * // invoke a function on a worker thread
254
- * connection.invoke("myLongRunningRemoteFunction", { someParameter: 10 }, {
255
- * signal
256
- * })
257
- * .then((result) => {
258
- * console.log(result);
259
- * })
260
- * .catch((error) => {
261
- * console.error(error);
262
- * });
219
+ * // Invoke a function on a worker thread.
220
+ * async function invokeWithTimeout() {
221
+ * try {
222
+ * const result = await connection.invoke("myLongRunningRemoteFunction", { someParameter: 10 }, {
223
+ * signal
224
+ * });
225
+ * console.log(result);
226
+ * } catch (error) {
227
+ * console.error(error);
228
+ * }
229
+ * }
230
+ *
231
+ * invokeWithTimeout();
263
232
  *
264
233
  * // if the call it takes more than 10 secs, abort:
265
234
  * setTimeout(() => {