@arcgis/core 4.31.0 → 4.31.2

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 (133) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/02a41ff83a28a574da3b.js +1 -0
  3. package/assets/esri/core/workers/chunks/034b842fd1e57a663e63.js +1 -0
  4. package/assets/esri/core/workers/chunks/11fa84fa7fa78e61c4cb.js +1 -0
  5. package/assets/esri/core/workers/chunks/2ddd67ec7b364e20135c.js +1 -0
  6. package/assets/esri/core/workers/chunks/{e298b561933737eda0ad.js → 388dc6d50e16930aa66f.js} +1 -1
  7. package/assets/esri/core/workers/chunks/3f8ea858575bab03d3aa.js +1 -0
  8. package/assets/esri/core/workers/chunks/48db492f15074a799d28.js +1 -0
  9. package/assets/esri/core/workers/chunks/49cf9642f3827384127f.js +1 -0
  10. package/assets/esri/core/workers/chunks/50781ca6c2526b0dd73f.js +1 -0
  11. package/assets/esri/core/workers/chunks/511cc9f1b61318385915.js +1 -0
  12. package/assets/esri/core/workers/chunks/650047df195a8ac3e41e.js +1 -0
  13. package/assets/esri/core/workers/chunks/666663e1257ceea08f75.js +1 -0
  14. package/assets/esri/core/workers/chunks/{188371b682afa56bed28.js → 69c5caef30d08a5086a3.js} +1 -1
  15. package/assets/esri/core/workers/chunks/6e37f4ec5a5c606efacb.js +1 -0
  16. package/assets/esri/core/workers/chunks/6ebd25845c4c3b65f612.js +1 -0
  17. package/assets/esri/core/workers/chunks/{72c5fd68179af3ab163f.js → 79e95e979108e2550961.js} +1 -1
  18. package/assets/esri/core/workers/chunks/7bbe8df83ecac2546af7.js +1 -0
  19. package/assets/esri/core/workers/chunks/7e6f5f04ac11e5ec9101.js +1 -0
  20. package/assets/esri/core/workers/chunks/8a3787ba111d669f2955.js +1 -0
  21. package/assets/esri/core/workers/chunks/8c5acb0a8c0a216fa9a8.js +1 -0
  22. package/assets/esri/core/workers/chunks/8e0e857e59e9fbc4a4b1.js +1 -0
  23. package/assets/esri/core/workers/chunks/{871312317726e9776953.js → 8eec36cb9c9bdb40eab2.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{cfa12f6d165e1b06abfb.js → 973560d8883c77f35f79.js} +1 -1
  25. package/assets/esri/core/workers/chunks/9857b195487aa6ff6b16.js +1 -0
  26. package/assets/esri/core/workers/chunks/a84212e50fb7e1a82bb4.js +1 -0
  27. package/assets/esri/core/workers/chunks/ac9681ebbae83b6d8c8a.js +1 -0
  28. package/assets/esri/core/workers/chunks/{0efcf69bc0ed843f1c20.js → af2f48911f984a911d3d.js} +1 -1
  29. package/assets/esri/core/workers/chunks/c1315c5610326a98811b.js +1 -0
  30. package/assets/esri/core/workers/chunks/c5ddaa5d8ac5eec949cf.js +1 -0
  31. package/assets/esri/core/workers/chunks/ce49d6c0becb9c39ceec.js +1 -0
  32. package/assets/esri/core/workers/chunks/d0093ec96d21ee7fcb27.js +1 -0
  33. package/assets/esri/core/workers/chunks/ed2f3f32f21960305cd9.js +1 -0
  34. package/assets/esri/core/workers/chunks/ed3fb3ea29a2be226322.js +1 -0
  35. package/assets/esri/core/workers/chunks/f3550d82fd8328953ca6.js +1 -0
  36. package/assets/esri/core/workers/chunks/f717ca7c2581c31de7a6.js +1 -0
  37. package/assets/esri/core/workers/chunks/fe684aaa9dfddf1c5b22.js +1 -0
  38. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_en.json +1 -1
  39. package/chunks/Viewshed.glsl.js +2 -1
  40. package/core/uuid.js +1 -1
  41. package/geometry/operators/containsOperator.js +1 -1
  42. package/geometry/operators/crossesOperator.js +1 -1
  43. package/geometry/operators/disjointOperator.js +1 -1
  44. package/geometry/operators/equalsOperator.js +1 -1
  45. package/geometry/operators/gx/operatorIntersection.js +1 -1
  46. package/geometry/operators/intersectsOperator.js +1 -1
  47. package/geometry/operators/overlapsOperator.js +1 -1
  48. package/geometry/operators/relateOperator.js +1 -1
  49. package/geometry/operators/touchesOperator.js +1 -1
  50. package/geometry/operators/withinOperator.js +1 -1
  51. package/interfaces.d.ts +2 -2
  52. package/kernel.js +1 -1
  53. package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
  54. package/layers/save/featureLayerUtils.js +1 -1
  55. package/layers/save/mediaLayerUtils.js +1 -1
  56. package/layers/save/utils.js +1 -1
  57. package/layers/support/featureLayerUtils.js +1 -1
  58. package/package.json +1 -1
  59. package/smartMapping/raster/renderers/classBreaks.js +1 -1
  60. package/smartMapping/renderers/color.js +1 -1
  61. package/smartMapping/renderers/dotDensity.js +1 -1
  62. package/smartMapping/renderers/pieChart.js +1 -1
  63. package/smartMapping/renderers/predominance.js +1 -1
  64. package/smartMapping/renderers/relationship.js +1 -1
  65. package/smartMapping/renderers/size.js +1 -1
  66. package/smartMapping/renderers/support/regenerateUtils.js +1 -1
  67. package/smartMapping/renderers/support/rendererUtils.js +1 -1
  68. package/smartMapping/renderers/type.js +1 -1
  69. package/smartMapping/renderers/univariateColorSize.js +1 -1
  70. package/support/revision.js +1 -1
  71. package/symbols/cim/animationUtils.js +1 -1
  72. package/symbols/cim/cimAnalyzer.js +1 -1
  73. package/views/2d/engine/imagery/processor/bandArithmeticProcessor.js +1 -1
  74. package/views/2d/engine/webgl/Painter.js +1 -1
  75. package/views/2d/engine/webgl/effects/BlendEffect.js +1 -1
  76. package/views/2d/engine/webgl/shaderGraph/techniques/blend/BlendTechnique.js +1 -1
  77. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  78. package/views/2d/layers/MediaLayerView2D.js +1 -1
  79. package/views/2d/layers/TileLayerView2D.js +1 -1
  80. package/views/2d/layers/features/FeatureContainer.js +1 -1
  81. package/views/2d/layers/features/RenderState.js +1 -1
  82. package/views/2d/layers/features/processor/FeatureUpdateStrategy.js +1 -1
  83. package/views/2d/layers/features/support/AttributeStore.js +1 -1
  84. package/views/2d/layers/features/support/DisplayIdGenerator.js +1 -1
  85. package/views/3d/layers/i3s/featureEditing.js +1 -1
  86. package/views/3d/layers/support/FeatureTileMeasurements3D.js +1 -1
  87. package/views/3d/layers/support/FeatureTileTree3D.js +1 -1
  88. package/views/3d/state/ViewStateManager.js +1 -1
  89. package/views/3d/support/cameraUtils.js +1 -1
  90. package/views/3d/support/viewpointUtils.js +1 -1
  91. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiledFetcher.js +1 -1
  92. package/views/webgl/FramebufferObject.js +1 -1
  93. package/views/webgl/TextureDescriptor.js +1 -1
  94. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  95. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  96. package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
  97. package/widgets/FeatureTable.js +1 -1
  98. package/widgets/Print/PrintViewModel.js +1 -1
  99. package/widgets/Print.js +1 -1
  100. package/widgets/support/GridControls/GridControlsViewModel.js +1 -1
  101. package/widgets/support/GridControls.js +1 -1
  102. package/widgets/support/SnappingControls.js +1 -1
  103. package/assets/esri/core/workers/chunks/0e292550c6e214dd160b.js +0 -1
  104. package/assets/esri/core/workers/chunks/125433d1c1c31f29cb62.js +0 -1
  105. package/assets/esri/core/workers/chunks/1ab8dff1ffd2cfc606a3.js +0 -1
  106. package/assets/esri/core/workers/chunks/1d6c66dfeb646b2d38d0.js +0 -1
  107. package/assets/esri/core/workers/chunks/1f7fe71d80378b5d2acc.js +0 -1
  108. package/assets/esri/core/workers/chunks/214b0b234c46f1c163a2.js +0 -1
  109. package/assets/esri/core/workers/chunks/3645401eaceae7ca194f.js +0 -1
  110. package/assets/esri/core/workers/chunks/38216a3288fa3af5fa32.js +0 -1
  111. package/assets/esri/core/workers/chunks/4cd3c861e33366f15af8.js +0 -1
  112. package/assets/esri/core/workers/chunks/5af2ea57ac8c62258128.js +0 -1
  113. package/assets/esri/core/workers/chunks/6417fc06bbff9852426f.js +0 -1
  114. package/assets/esri/core/workers/chunks/6c94ce65a5399de9a0cd.js +0 -1
  115. package/assets/esri/core/workers/chunks/7114bcb1de727ba596be.js +0 -1
  116. package/assets/esri/core/workers/chunks/787e8fad19dcc5d84dd9.js +0 -1
  117. package/assets/esri/core/workers/chunks/837471fcf383a0f4b6ff.js +0 -1
  118. package/assets/esri/core/workers/chunks/877e9181a3ec40b1231a.js +0 -1
  119. package/assets/esri/core/workers/chunks/8a232508b7fe011154ab.js +0 -1
  120. package/assets/esri/core/workers/chunks/8d2aa1e054cee14df379.js +0 -1
  121. package/assets/esri/core/workers/chunks/9189d24f71e2e706821e.js +0 -1
  122. package/assets/esri/core/workers/chunks/94451bca86ccdf05974c.js +0 -1
  123. package/assets/esri/core/workers/chunks/9cfaf1cbbb1d6453e939.js +0 -1
  124. package/assets/esri/core/workers/chunks/a3767791456281861b49.js +0 -1
  125. package/assets/esri/core/workers/chunks/a68a141bec952373ab6f.js +0 -1
  126. package/assets/esri/core/workers/chunks/ab6eaa3ae2e233f91a5e.js +0 -1
  127. package/assets/esri/core/workers/chunks/aedb2e7cd5b3300da5fa.js +0 -1
  128. package/assets/esri/core/workers/chunks/b045413c44239f597cc3.js +0 -1
  129. package/assets/esri/core/workers/chunks/b6044b20fb38524a268f.js +0 -1
  130. package/assets/esri/core/workers/chunks/cca72ca3a4f90b45c2ce.js +0 -1
  131. package/assets/esri/core/workers/chunks/d497b6443353efc80417.js +0 -1
  132. package/assets/esri/core/workers/chunks/da1687d68cfe20e4f069.js +0 -1
  133. package/assets/esri/core/workers/chunks/f1313389eeb7a2350db3.js +0 -1
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import{aK as e,aL as r}from"../../chunks/QuadraticBezier.js";import{getSpatialReference as t,fromGeometry as n,fromSpatialReference as u}from"./support/converterAPI.js";class o extends e{getOperatorType(){return 7}execute(e,t,n,u){return r(e,t,n,2,u)}}const s=new o;function c(e){const r=t(e);return s.accelerateGeometry(n(e),u(r),0)}function a(e,r){return s.execute(n(e),n(r),u(e.spatialReference),null)}function p(){return s.supportsCurves()}export{c as accelerateGeometry,a as execute,p as supportsCurves};
5
+ import{aK as e,aL as r}from"../../chunks/QuadraticBezier.js";import{getSpatialReference as t,fromGeometry as n,fromSpatialReference as u}from"./support/converterAPI.js";class o extends e{getOperatorType(){return 7}execute(e,t,n,u){return r(e,t,n,2,u)}}const s=new o;function c(e){const r=t(e);return s.accelerateGeometry(n(e),u(r),1)}function a(e,r){return s.execute(n(e),n(r),u(e.spatialReference),null)}function p(){return s.supportsCurves()}export{c as accelerateGeometry,a as execute,p as supportsCurves};
package/interfaces.d.ts CHANGED
@@ -45073,7 +45073,7 @@ declare namespace __esri {
45073
45073
  *
45074
45074
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-networks-UtilityNetwork.html#submitTraceJob)
45075
45075
  */
45076
- traceTypes?: string;
45076
+ traceType?: string;
45077
45077
  }
45078
45078
 
45079
45079
  export interface UtilityNetworkTraceProps {
@@ -45118,7 +45118,7 @@ declare namespace __esri {
45118
45118
  *
45119
45119
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-networks-UtilityNetwork.html#trace)
45120
45120
  */
45121
- traceTypes?: string;
45121
+ traceType?: string;
45122
45122
  }
45123
45123
 
45124
45124
  export interface ServiceEditsIdentifierFields {
package/kernel.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";import{buildDate as e,commitHash as r}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const s="4.31";let i,t=s;t="4.31.0";function n(o){i=o}function l(e){const r=i?.findCredential(e);return r?.token?o(e,"token",r.token):e}has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{l as addTokenParameter,e as buildDate,t as fullVersion,i as id,r as revision,n as setId,s as version};
5
+ import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";import{buildDate as e,commitHash as r}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const s="4.31";let i,t=s;t="4.31.2";function n(o){i=o}function l(e){const r=i?.findCredential(e);return r?.token?o(e,"token",r.token):e}has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{l as addTokenParameter,e as buildDate,t as fullVersion,i as id,r as revision,n as setId,s as version};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import"../../../geometry.js";import{deepClone as e}from"../../../arcade/deepClone.js";import"../../../core/Error.js";import"../../../core/has.js";import"../../../core/Logger.js";import{create as t}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromPoints as r,intersectLine as a}from"../../../geometry/support/plane.js";import n from"./updateElevation.js";import{pointToArray as o,or as i}from"./utils.js";import{worldToImage as c,worldToImagePanoramic as s}from"./worldToImage.js";import p from"../../../geometry/Point.js";import f from"../../../geometry/Polygon.js";async function m(e,n,c,s=h){const{cameraLocation:f,farPlaneVertices:m}=c,l=o(f),w=new Array;await u(m,c,w);let j=r(w[0],w[1],w[2]),b=e.clone();for(let h=0;h<s;h++){const e=t();if(!a(j,l,o(b),e))break;let s=0,m=null;if(({error:s,imagePoint:m,pointWithZ:b}=await y(n,new p(e,f.spatialReference),c)),s<=1)break;const[h,u]=g(f.spatialReference,w);if(i(h<=1,u<=1))break;w.splice(0,w.length,...await x(h,u,new p(e,f.spatialReference),c)),j=r(w[0],w[1],w[2])}return o(b)}async function l(e,n,c,s=h){const{cameraLocation:f,farPlaneVertices:m}=c,l=o(f),w=new Array;await u(m,c,w);let y=r(w[0],w[1],w[2]),b=e.clone();for(let h=0;h<s;h++){const e=t();if(!a(y,l,o(b),e))break;let s,m=0;if(({error:m,imagePoint:s,pointWithZ:b}=await j(n,new p(e,f.spatialReference),c)),m<=1)break;const[h,u]=g(f.spatialReference,w);if(i(h<=1,u<=1))break;w.splice(0,w.length,...await x(h,u,new p(e,f.spatialReference),c)),y=r(w[0],w[1],w[2])}return o(b)}const h=10,w=10;function g(e,t){const r=new f({spatialReference:e});r.addRing(t);return[r.extent?.width?r.extent.width/w:1,r.extent?.height?r.extent.width/w:1]}async function u(t,r,a){const i=e(t),c=await n(i,r);a.push(...c.map(o))}async function y(e,t,r){const a=await n(t,r),o=c(a,r);return{error:b(o,e),imagePoint:o,pointWithZ:a}}async function j(e,t,r){const a=await n(t,r),o=s(a,r);return{error:d(o,e),imagePoint:o,pointWithZ:a}}const b=(e,t)=>Math.abs(e.x-t.x)+Math.abs(e.y-t.y),d=(e,t)=>Math.abs(e.heading-t.heading)+Math.abs(e.pitch-t.pitch);async function x(e,t,r,a){const o=[[-e,-t],[e,-t],[e,t],[-e,t]].map((([e,t])=>new p([r.x+e,r.y+t],r.spatialReference)));return n(o,a).then((e=>e.map((e=>e.toArray()))))}export{m as rectifyMapPoint,l as rectifyMapPointPanoramic};
5
+ import"../../../geometry.js";import{deepClone as e}from"../../../arcade/deepClone.js";import"../../../core/Error.js";import"../../../core/has.js";import"../../../core/Logger.js";import{create as t}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromPoints as r,intersectLine as a}from"../../../geometry/support/plane.js";import n from"./updateElevation.js";import{pointToArray as o,or as i}from"./utils.js";import{worldToImage as c,worldToImagePanoramic as s}from"./worldToImage.js";import p from"../../../geometry/Point.js";import f from"../../../geometry/Polygon.js";async function m(e,n,c,s=h){const{cameraLocation:f,farPlaneVertices:m}=c,l=o(f),g=new Array;await u(m,c,g);let j=r(g[0],g[1],g[2]),b=e.clone();for(let h=0;h<s;h++){const e=t();if(!a(j,l,o(b),e))break;let s=0,m=null;if(({error:s,imagePoint:m,pointWithZ:b}=await y(n,new p(e,f.spatialReference),c)),s<=1)break;const[h,u]=w(f.spatialReference,g);if(i(h<=1,u<=1))break;g.splice(0,g.length,...await x(h,u,new p(e,f.spatialReference),c)),j=r(g[0],g[1],g[2])}return o(b)}async function l(e,n,c,s=h){const{cameraLocation:f,farPlaneVertices:m}=c,l=o(f),g=new Array;await u(m,c,g);let y=r(g[0],g[1],g[2]),b=e.clone();for(let h=0;h<s;h++){const e=t();if(!a(y,l,o(b),e))break;let s,m=0;if(({error:m,imagePoint:s,pointWithZ:b}=await j(n,new p(e,f.spatialReference),c)),m<=1)break;const[h,u]=w(f.spatialReference,g);if(i(h<=1,u<=1))break;g.splice(0,g.length,...await x(h,u,new p(e,f.spatialReference),c)),y=r(g[0],g[1],g[2])}return o(b)}const h=10,g=10;function w(e,t){const r=new f({spatialReference:e});r.addRing(t);return[r.extent?.width?r.extent.width/g:1,r.extent?.height?r.extent.height/g:1]}async function u(t,r,a){const i=e(t),c=await n(i,r);a.push(...c.map(o))}async function y(e,t,r){const a=await n(t,r),o=c(a,r);return{error:b(o,e),imagePoint:o,pointWithZ:a}}async function j(e,t,r){const a=await n(t,r),o=s(a,r);return{error:d(o,e),imagePoint:o,pointWithZ:a}}const b=(e,t)=>Math.abs(e.x-t.x)+Math.abs(e.y-t.y),d=(e,t)=>Math.abs(e.heading-t.heading)+Math.abs(e.pitch-t.pitch);async function x(e,t,r,a){const o=[[-e,-t],[e,-t],[e,t],[-e,t]].map((([e,t])=>new p([r.x+e,r.y+t],r.spatialReference)));return n(o,a).then((e=>e.map((e=>e.toArray()))))}export{m as rectifyMapPoint,l as rectifyMapPointPanoramic};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import{equals as e,difference as r,isSome as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{updateOrigins as n}from"../../core/accessorSupport/originUtils.js";import{save as o,createJSONContextForWrite as s,getLayerJSON as i,saveAs as l,getPortalItem as c,addItem as u,ensureLayerConfig as p,ensureItemConfig as y,setCommonItemProperties as f,createErrorMessage as m}from"./utils.js";import{parse as d}from"../support/arcgisLayerUrl.js";import{fetchFeatureService as h,getLayerModuleType as w}from"../support/fetchService.js";import{isLayerWithFeatureLayerSource as v}from"../support/layerUtils.js";import{layerLookupMap as I}from"../support/lazyLayerLoader.js";import{getWGS84ExtentForItem as T,removeTypeKeyword as S,typeKeyword as b,toggleTypeKeyword as A,addTypeKeyword as E}from"../../portal/support/portalItemUtils.js";const L="Feature Service",P="feature-layer-utils",$=`${P}-save`,N=`${P}-save-as`,x=`${P}-saveall`,g=`${P}-saveall-as`;function O(e){return{isValid:v(e)&&(!("dynamicDataSource"in e)||!e.dynamicDataSource),errorMessage:"Feature layer should be a layer or table in a map or feature service"}}function U(e){const r=[],a=[];for(const{layer:t,layerJSON:n}of e)t.isTable?a.push(n):r.push(n);return{layers:r,tables:a}}function j(e){return U([e])}async function R(e,r){return/\/\d+\/?$/.test(e.url)?j(r[0]):M(r,e)}async function M(e,r){if(e.reverse(),!r)return U(e);const a=await D(r,e);for(const t of e)k(t.layer,t.layerJSON,a);return Y(a,e),a}async function D(e,r){let a=await e.fetchData("json");if(J(a))return a;a||={},F(a);const{layer:{url:t,customParameters:n,apiKey:o}}=r[0];return await K(a,{url:t??"",customParameters:n,apiKey:o},r.map((e=>e.layer.layerId))),a}function J(e){return!!(e&&Array.isArray(e.layers)&&Array.isArray(e.tables))}function F(e){e.layers||=[],e.tables||=[]}function Y(e,r){const a=[],t=[];for(const{layer:n}of r){const{isTable:e,layerId:r}=n;e?t.push(r):a.push(r)}_(e.layers,a),_(e.tables,t)}function _(r,a){if(r.length<2)return;const t=[];for(const{id:e}of r)t.push(e);e(t.sort(G),a.slice().sort(G))&&r.sort(((e,r)=>{const t=a.indexOf(e.id),n=a.indexOf(r.id);return t<n?-1:t>n?1:0}))}function G(e,r){return e<r?-1:e>r?1:0}async function K(e,r,a){const{url:t,customParameters:n,apiKey:o}=r,{serviceJSON:s,layersJSON:i}=await h(t,{customParameters:n,apiKey:o}),l=z(e.layers,s.layers,a),c=z(e.tables,s.tables,a);e.layers=l.itemResources,e.tables=c.itemResources;const u=[...l.added,...c.added],p=i?[...i.layers,...i.tables]:[];await B(e,u,t,p)}function z(e,a,t){const n=r(e,a,((e,r)=>e.id===r.id));e=e.filter((e=>!n.removed.some((r=>r.id===e.id))));const o=n.added;return o.forEach((({id:r})=>{e.push({id:r})})),{itemResources:e,added:o.filter((({id:e})=>!t.includes(e)))}}async function B(e,r,a,t){const n=await V(r),o=r.map((({id:e,type:r})=>new(n.get(r))({url:a,layerId:e,sourceJSON:t.find((({id:r})=>r===e))})));await Promise.allSettled(o.map((e=>e.load()))),o.forEach((r=>{const{layerId:a,loaded:t,defaultPopupTemplate:n}=r;if(!t||null==n)return;const o={id:a,popupInfo:n.toJSON()};"ArcGISFeatureLayer"!==r.operationalLayerType&&(o.layerType=r.operationalLayerType),k(r,o,e)}))}async function V(e){const r=[];e.forEach((({type:e})=>{const a=w(e),t=I[a];r.push(t())}));const a=await Promise.all(r),t=new Map;return e.forEach((({type:e},r)=>{t.set(e,a[r])})),t}function k(e,r,a){e.isTable?q(a.tables,r):q(a.layers,r)}function q(e,r){const a=e.findIndex((({id:e})=>e===r.id));-1===a?e.push(r):e[a]=r}function C(e,r){if(!e.length)throw new t(`${r}:missing-parameters`,"'layers' array should contain at least one feature layer")}function H(e,r){const a=e.map((e=>e.portalItem.id));if(new Set(a).size>1)throw new t(`${r}:invalid-parameters`,"All layers in the 'layers' array should be loaded from the same portal item")}function Q(e,r){const a=e.map((e=>e.layerId));if(new Set(a).size!==a.length)throw new t(`${r}:invalid-parameters`,"'layers' array should contain only one instance each of layer or table in a feature service")}async function W(e){C(e,x),await Promise.all(e.map((e=>e.load())));for(const r of e)p(r,x,O),y({layer:r,itemType:L,errorNamePrefix:x});H(e,x),Q(e,x)}function X(e,r){const a=e.some((e=>"oriented-imagery"===e.type));A(r,b.ORIENTED_IMAGERY_LAYER,a)}async function Z(e,r){X([e],r)}async function ee(e,r){const{url:a,layerId:t,title:n,fullExtent:o,isTable:s}=e,i=d(a);r.url=("FeatureServer"===i?.serverType?a:`${a}/${t}`)??null,r.title||=n,r.extent=null,s||null==o||(r.extent=await T(o)),S(r,b.METADATA),S(r,b.MULTI_LAYER),E(r,b.SINGLE_LAYER),A(r,b.TABLE,s),X([e],r)}function re(e,r){for(const s of e){const a=s.parsedUrl.path,n=d(a),o=n?.url.path;if(!o)throw new t(`${r}:invalid-parameters`,m(s,`has unsupported url pattern: ${a}`),{layer:s});const i=n?.serverType;if("FeatureServer"!==i&&"MapServer"!==i)throw new t(`${r}:invalid-parameters`,m(s,`has unsupported server type: ${i}`),{layer:s});if("MapServer"===i&&e.length>1)throw new t(`${r}:invalid-parameters`,"Only one layer or table in a map service can be saved")}const a=d(e[0].parsedUrl.path),n=a?.url.path,o=e.every((e=>{const r=d(e.parsedUrl.path);return r?.url.path===n}));if(!o)throw new t(`${r}:invalid-parameters`,"'layers' array should only contain layers or tables that belong to the same feature service")}async function ae(e){C(e,g),await Promise.all(e.map((e=>e.load())));for(const r of e)p(r,g,O);re(e,g),Q(e,g)}function te(e,r){X(r,e),f(e)}async function ne(e,r){let t=0,n=0;for(const{isTable:a}of r)a?n++:t++;const o=r[0].parsedUrl.path,s=d(o);if(e.url="FeatureServer"===s?.serverType?s.url.path:o,e.title||=s.title,e.extent=null,t>0){const t=r.map((e=>e.fullExtent)).filter(a).reduce(((e,r)=>e.clone().union(r)));t&&(e.extent=await T(t))}S(e,b.METADATA),A(e,b.MULTI_LAYER,r.length>1),A(e,b.SINGLE_LAYER,1===r.length),A(e,b.TABLE,n>0&&0===t),X(r,e),f(e)}async function oe(e,r){return o({layer:e,itemType:L,validateLayer:O,createItemData:(e,r)=>R(r,[e]),errorNamePrefix:$,setItemProperties:Z},r)}async function se(e,r){await W(e);const a=e[0].portalItem,t=s(a),o=await Promise.all(e.map((e=>i(e,t,r)))),l=await R(a,e.map(((e,r)=>({layer:e,layerJSON:o[r]}))));return te(a,e),await a.update({data:l}),await Promise.all(e.slice(1).map((e=>e.portalItem.reload()))),n(t),a.clone()}async function ie(e,r,a){return l({layer:e,itemType:L,validateLayer:O,createItemData:(e,r)=>Promise.resolve(j(e)),errorNamePrefix:N,newItem:r,setItemProperties:ee},a)}async function le(e,r,a){await ae(e);const t=c({itemType:L,errorNamePrefix:g,newItem:r}),o=s(t),l=await Promise.all(e.map((e=>i(e,o,a)))),p=await M(e.map(((e,r)=>({layer:e,layerJSON:l[r]}))));await ne(t,e),await u(t,p,a);for(const n of e)n.portalItem=t.clone();return n(o),t}export{oe as save,se as saveAll,le as saveAllAs,ie as saveAs};
5
+ import{equals as e,difference as r,isSome as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{updateOrigins as n}from"../../core/accessorSupport/originUtils.js";import{save as o,createJSONContextForWrite as s,getLayerJSON as i,saveAs as l,getPortalItem as c,addItem as u,ensureLayerConfig as p,ensureItemConfig as y,setCommonItemProperties as f,createErrorMessage as m}from"./utils.js";import{parse as d}from"../support/arcgisLayerUrl.js";import{fetchFeatureService as h,getLayerModuleType as w}from"../support/fetchService.js";import{isLayerWithFeatureLayerSource as v}from"../support/layerUtils.js";import{layerLookupMap as I}from"../support/lazyLayerLoader.js";import{getWGS84ExtentForItem as T,removeTypeKeyword as E,typeKeyword as S,toggleTypeKeyword as A,addTypeKeyword as b}from"../../portal/support/portalItemUtils.js";const L="Feature Service",P="feature-layer-utils",N=`${P}-save`,$=`${P}-save-as`,g=`${P}-saveall`,x=`${P}-saveall-as`;function O(e){return{isValid:v(e)&&(!("dynamicDataSource"in e)||!e.dynamicDataSource),errorMessage:"Feature layer should be a layer or table in a map or feature service"}}function R(e){const r=[],a=[];for(const{layer:t,layerJSON:n}of e)t.isTable?a.push(n):r.push(n);return{layers:r,tables:a}}function U(e){return R([e])}async function j(e,r){return/\/\d+\/?$/.test(e.url)?U(r[0]):M(r,e)}async function M(e,r){if(e.reverse(),!r)return R(e);const a=await D(r,e);for(const t of e)k(t.layer,t.layerJSON,a);return _(a,e),a}async function D(e,r){let a=await e.fetchData("json");if(J(a))return a;a||={},Y(a);const{layer:{url:t,customParameters:n,apiKey:o}}=r[0];return await K(a,{url:t??"",customParameters:n,apiKey:o},r.map((e=>e.layer.layerId))),a}function J(e){return!!(e&&Array.isArray(e.layers)&&Array.isArray(e.tables))}function Y(e){e.layers||=[],e.tables||=[]}function _(e,r){const a=[],t=[];for(const{layer:n}of r){const{isTable:e,layerId:r}=n;e?t.push(r):a.push(r)}F(e.layers,a),F(e.tables,t)}function F(r,a){if(r.length<2)return;const t=[];for(const{id:e}of r)t.push(e);e(t.sort(G),a.slice().sort(G))&&r.sort(((e,r)=>{const t=a.indexOf(e.id),n=a.indexOf(r.id);return t<n?-1:t>n?1:0}))}function G(e,r){return e<r?-1:e>r?1:0}async function K(e,r,a){const{url:t,customParameters:n,apiKey:o}=r,{serviceJSON:s,layersJSON:i}=await h(t,{customParameters:n,apiKey:o}),l=z(e.layers,s.layers,a),c=z(e.tables,s.tables,a);e.layers=l.itemResources,e.tables=c.itemResources;const u=[...l.added,...c.added],p=i?[...i.layers,...i.tables]:[];await B(e,u,t,p)}function z(e,a,t){const n=r(e,a,((e,r)=>e.id===r.id));e=e.filter((e=>!n.removed.some((r=>r.id===e.id))));const o=n.added;return o.forEach((({id:r})=>{e.push({id:r})})),{itemResources:e,added:o.filter((({id:e})=>!t.includes(e)))}}async function B(e,r,a,t){const n=await V(r),o=r.map((({id:e,type:r})=>new(n.get(r))({url:a,layerId:e,sourceJSON:t.find((({id:r})=>r===e))})));await Promise.allSettled(o.map((e=>e.load()))),o.forEach((r=>{const{layerId:a,loaded:t,defaultPopupTemplate:n}=r;if(!t||null==n)return;const o={id:a,popupInfo:n.toJSON()};"ArcGISFeatureLayer"!==r.operationalLayerType&&(o.layerType=r.operationalLayerType),k(r,o,e)}))}async function V(e){const r=[];e.forEach((({type:e})=>{const a=w(e),t=I[a];r.push(t())}));const a=await Promise.all(r),t=new Map;return e.forEach((({type:e},r)=>{t.set(e,a[r])})),t}function k(e,r,a){e.isTable?q(a.tables,r):q(a.layers,r)}function q(e,r){const a=e.findIndex((({id:e})=>e===r.id));-1===a?e.push(r):e[a]=r}function C(e,r){if(!e.length)throw new t(`${r}:missing-parameters`,"'layers' array should contain at least one feature layer")}function H(e,r){const a=e.map((e=>e.portalItem.id));if(new Set(a).size>1)throw new t(`${r}:invalid-parameters`,"All layers in the 'layers' array should be loaded from the same portal item")}function Q(e,r){const a=e.map((e=>e.layerId));if(new Set(a).size!==a.length)throw new t(`${r}:invalid-parameters`,"'layers' array should contain only one instance each of layer or table in a feature service")}async function W(e){C(e,g),await Promise.all(e.map((e=>e.load())));for(const r of e)p(r,g,O),y({layer:r,itemType:L,errorNamePrefix:g});H(e,g),Q(e,g)}function X(e,r){const a=e.layers.some((e=>"OrientedImageryLayer"===e.layerType));A(r,S.ORIENTED_IMAGERY_LAYER,a)}function Z(e,r){const a=e.some((e=>"oriented-imagery"===e.type));A(r,S.ORIENTED_IMAGERY_LAYER,a)}async function ee(e,r,a){X(a,r)}async function re(e,r){const{url:a,layerId:t,title:n,fullExtent:o,isTable:s}=e,i=d(a);r.url=("FeatureServer"===i?.serverType?a:`${a}/${t}`)??null,r.title||=n,r.extent=null,s||null==o||(r.extent=await T(o)),E(r,S.METADATA),E(r,S.MULTI_LAYER),b(r,S.SINGLE_LAYER),A(r,S.TABLE,s),Z([e],r)}function ae(e,r){for(const s of e){const a=s.parsedUrl.path,n=d(a),o=n?.url.path;if(!o)throw new t(`${r}:invalid-parameters`,m(s,`has unsupported url pattern: ${a}`),{layer:s});const i=n?.serverType;if("FeatureServer"!==i&&"MapServer"!==i)throw new t(`${r}:invalid-parameters`,m(s,`has unsupported server type: ${i}`),{layer:s});if("MapServer"===i&&e.length>1)throw new t(`${r}:invalid-parameters`,"Only one layer or table in a map service can be saved")}const a=d(e[0].parsedUrl.path),n=a?.url.path,o=e.every((e=>{const r=d(e.parsedUrl.path);return r?.url.path===n}));if(!o)throw new t(`${r}:invalid-parameters`,"'layers' array should only contain layers or tables that belong to the same feature service")}async function te(e){C(e,x),await Promise.all(e.map((e=>e.load())));for(const r of e)p(r,x,O);ae(e,x),Q(e,x)}function ne(e,r){X(r,e),f(e)}async function oe(e,r){let t=0,n=0;for(const{isTable:a}of r)a?n++:t++;const o=r[0].parsedUrl.path,s=d(o);if(e.url="FeatureServer"===s?.serverType?s.url.path:o,e.title||=s.title,e.extent=null,t>0){const t=r.map((e=>e.fullExtent)).filter(a).reduce(((e,r)=>e.clone().union(r)));t&&(e.extent=await T(t))}E(e,S.METADATA),A(e,S.MULTI_LAYER,r.length>1),A(e,S.SINGLE_LAYER,1===r.length),A(e,S.TABLE,n>0&&0===t),Z(r,e),f(e)}async function se(e,r){return o({layer:e,itemType:L,validateLayer:O,createItemData:(e,r)=>j(r,[e]),errorNamePrefix:N,setItemProperties:ee},r)}async function ie(e,r){await W(e);const a=e[0].portalItem,t=s(a),o=await Promise.all(e.map((e=>i(e,t,r)))),l=await j(a,e.map(((e,r)=>({layer:e,layerJSON:o[r]}))));return ne(a,l),await a.update({data:l}),await Promise.all(e.slice(1).map((e=>e.portalItem.reload()))),n(t),a.clone()}async function le(e,r,a){return l({layer:e,itemType:L,validateLayer:O,createItemData:(e,r)=>Promise.resolve(U(e)),errorNamePrefix:$,newItem:r,setItemProperties:re},a)}async function ce(e,r,a){await te(e);const t=c({itemType:L,errorNamePrefix:x,newItem:r}),o=s(t),l=await Promise.all(e.map((e=>i(e,o,a)))),p=await M(e.map(((e,r)=>({layer:e,layerJSON:l[r]}))));await oe(t,e),await u(t,p,a);for(const n of e)n.portalItem=t.clone();return n(o),t}export{se as save,ie as saveAll,ce as saveAllAs,le as saveAs};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import{save as e,saveAs as r}from"./utils.js";import{createForItemWrite as t}from"../../portal/support/jsonContext.js";import{getWGS84ExtentForItem as a,removeTypeKeyword as s,typeKeyword as o}from"../../portal/support/portalItemUtils.js";import{saveResources as n}from"../../webdoc/support/resourceUtils.js";const i="Media Layer",u="media-layer-save",p="media-layer-save-as",l=["media-layer:unsupported-source"];function m(e){return{isValid:"media"===e.type,errorMessage:"Layer.type should be 'media'"}}function c(e){return t(e,"portal-item",!0)}function y(e){return e.layerJSON}async function f(e,r){r.extent=e.fullExtent?await a(e.fullExtent):null}async function d(e,r){r.title||=e.title,await f(e,r),s(r,o.METADATA)}async function x(r,t){return e({layer:r,itemType:i,validateLayer:m,createJSONContext:e=>c(e),createItemData:y,errorNamePrefix:u,supplementalUnsupportedErrors:l,setItemProperties:f,saveResources:(e,t)=>n(r.resourceReferences,t)},t)}async function v(e,t,a){return r({layer:e,itemType:i,validateLayer:m,createJSONContext:e=>c(e),createItemData:y,errorNamePrefix:p,supplementalUnsupportedErrors:l,newItem:t,setItemProperties:d,saveResources:(r,t)=>n(e.resourceReferences,t)},a)}export{x as save,v as saveAs};
5
+ import{save as e,saveAs as r}from"./utils.js";import{createForItemWrite as t}from"../../portal/support/jsonContext.js";import{getWGS84ExtentForItem as a,removeTypeKeyword as s,typeKeyword as o}from"../../portal/support/portalItemUtils.js";import{saveResources as n}from"../../webdoc/support/resourceUtils.js";const i="Media Layer",u="media-layer-save",p="media-layer-save-as",l=["media-layer:unsupported-source"];function m(e){return{isValid:"media"===e.type,errorMessage:"Layer.type should be 'media'"}}function c(e){return t(e,"portal-item",!0)}function y(e){return Promise.resolve(e.layerJSON)}async function f(e,r){r.extent=e.fullExtent?await a(e.fullExtent):null}async function d(e,r){r.title||=e.title,await f(e,r),s(r,o.METADATA)}async function v(r,t){return e({layer:r,itemType:i,validateLayer:m,createJSONContext:e=>c(e),createItemData:y,errorNamePrefix:u,supplementalUnsupportedErrors:l,setItemProperties:f,saveResources:(e,t)=>n(r.resourceReferences,t)},t)}async function x(e,t,a){return r({layer:e,itemType:i,validateLayer:m,createJSONContext:e=>c(e),createItemData:y,errorNamePrefix:p,supplementalUnsupportedErrors:l,newItem:t,setItemProperties:d,saveResources:(r,t)=>n(e.resourceReferences,t)},a)}export{v as save,x as saveAs};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../core/Error.js";import{updateOrigins as t}from"../../core/accessorSupport/originUtils.js";import r from"../../portal/Portal.js";import a from"../../portal/PortalItem.js";import{createForItemWrite as o}from"../../portal/support/jsonContext.js";import{addTypeKeyword as i,typeKeyword as n}from"../../portal/support/portalItemUtils.js";import{evaluateWriteErrors as s}from"../../webdoc/support/saveUtils.js";function p(t,r,a){const o=a(t);if(!o.isValid)throw new e(`${r}:invalid-parameters`,o.errorMessage,{layer:t})}async function l(e){const{layer:t,errorNamePrefix:r,validateLayer:a}=e;await t.load(),p(t,r,a)}function m(e,t){return`Layer (title: ${e.title}, id: ${e.id}) of type '${e.declaredClass}' ${t}`}function c(t){const{item:r,errorNamePrefix:a,layer:o,validateItem:i}=t;if(u(t),i){const t=i(r);if(!t.isValid)throw new e(`${a}:invalid-parameters`,t.errorMessage,{layer:o})}}function u(t){const{item:r,itemType:a,additionalItemType:o,errorNamePrefix:i,layer:n}=t,s=[a];if(o&&s.push(o),!s.includes(r.type)){const t=s.map((e=>`'${e}'`)).join(", ");throw new e(`${i}:portal-item-wrong-type`,`Portal item type should be one of: "${t}"`,{item:r,layer:n})}}function f(t){const{layer:r,errorNamePrefix:a}=t,{portalItem:o}=r;if(!o)throw new e(`${a}:portal-item-not-set`,m(r,"requires the portalItem property to be set"));if(!o.loaded)throw new e(`${a}:portal-item-not-loaded`,m(r,"cannot be saved to a portal item that does not exist or is inaccessible"));c({...t,item:o})}function d(e){const{newItem:t,itemType:o}=e;let i=a.from(t);return i.id&&(i=i.clone(),i.id=null),i.type??=o,i.portal??=r.getDefault(),c({...e,item:i}),i}function y(e){return o(e,"portal-item")}async function w(e,t,r){"beforeSave"in e&&"function"==typeof e.beforeSave&&await e.beforeSave();const a=e.write({},t);return await Promise.all(t.resources?.pendingOperations??[]),s(t,{errorName:"layer-write:unsupported"},r),a}function I(e){i(e,n.JSAPI),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}async function v(e,t,r){const a=e.portal;await a.signIn(),await a.user.addItem({item:e,data:t,folder:r?.folder})}async function P(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e),f(e);const m=a.portalItem,c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),d=await o({layer:a,layerJSON:u},m);return await(n?.(a,m)),I(m),await m.update({data:d}),t(c),await(s?.(m,c)),m}async function $(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e);const m=d(e),c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),f=await o({layer:a,layerJSON:u},m);return await n(a,m),I(m),await v(m,f,r),a.portalItem=m,t(c),await(s?.(m,c)),m}export{v as addItem,m as createErrorMessage,y as createJSONContextForWrite,f as ensureItemConfig,p as ensureLayerConfig,w as getLayerJSON,d as getPortalItem,P as save,$ as saveAs,I as setCommonItemProperties};
5
+ import e from"../../core/Error.js";import{updateOrigins as t}from"../../core/accessorSupport/originUtils.js";import r from"../../portal/Portal.js";import a from"../../portal/PortalItem.js";import{createForItemWrite as o}from"../../portal/support/jsonContext.js";import{addTypeKeyword as i,typeKeyword as n}from"../../portal/support/portalItemUtils.js";import{evaluateWriteErrors as s}from"../../webdoc/support/saveUtils.js";function p(t,r,a){const o=a(t);if(!o.isValid)throw new e(`${r}:invalid-parameters`,o.errorMessage,{layer:t})}async function l(e){const{layer:t,errorNamePrefix:r,validateLayer:a}=e;await t.load(),p(t,r,a)}function m(e,t){return`Layer (title: ${e.title}, id: ${e.id}) of type '${e.declaredClass}' ${t}`}function c(t){const{item:r,errorNamePrefix:a,layer:o,validateItem:i}=t;if(u(t),i){const t=i(r);if(!t.isValid)throw new e(`${a}:invalid-parameters`,t.errorMessage,{layer:o})}}function u(t){const{item:r,itemType:a,additionalItemType:o,errorNamePrefix:i,layer:n}=t,s=[a];if(o&&s.push(o),!s.includes(r.type)){const t=s.map((e=>`'${e}'`)).join(", ");throw new e(`${i}:portal-item-wrong-type`,`Portal item type should be one of: "${t}"`,{item:r,layer:n})}}function f(t){const{layer:r,errorNamePrefix:a}=t,{portalItem:o}=r;if(!o)throw new e(`${a}:portal-item-not-set`,m(r,"requires the portalItem property to be set"));if(!o.loaded)throw new e(`${a}:portal-item-not-loaded`,m(r,"cannot be saved to a portal item that does not exist or is inaccessible"));c({...t,item:o})}function d(e){const{newItem:t,itemType:o}=e;let i=a.from(t);return i.id&&(i=i.clone(),i.id=null),i.type??=o,i.portal??=r.getDefault(),c({...e,item:i}),i}function y(e){return o(e,"portal-item")}async function w(e,t,r){"beforeSave"in e&&"function"==typeof e.beforeSave&&await e.beforeSave();const a=e.write({},t);return await Promise.all(t.resources?.pendingOperations??[]),s(t,{errorName:"layer-write:unsupported"},r),a}function I(e){i(e,n.JSAPI),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}async function v(e,t,r){const a=e.portal;await a.signIn(),await a.user.addItem({item:e,data:t,folder:r?.folder})}async function P(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e),f(e);const m=a.portalItem,c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),d=await o({layer:a,layerJSON:u},m);return await(n?.(a,m,d)),I(m),await m.update({data:d}),t(c),await(s?.(m,c)),m}async function $(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e);const m=d(e),c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),f=await o({layer:a,layerJSON:u},m);return await n(a,m,f),I(m),await v(m,f,r),a.portalItem=m,t(c),await(s?.(m,c)),m}export{v as addItem,m as createErrorMessage,y as createJSONContextForWrite,f as ensureItemConfig,p as ensureLayerConfig,w as getLayerJSON,d as getPortalItem,P as save,$ as saveAs,I as setCommonItemProperties};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import{id as e}from"../../kernel.js";import{symbolTypesRenderer as t}from"../../symbols.js";import{resultOrAbort as r}from"../../core/asyncUtils.js";import n from"../../core/Error.js";import{JSONMap as o}from"../../core/jsonMap.js";import{parseWhereClause as s}from"../../core/sql.js";import{createTypeReader as i}from"../../core/accessorSupport/extensions/serializableProperty/reader.js";import{CodedValue as a}from"./CodedValue.js";import u from"./CodedValueDomain.js";import{queryAllJSON as c}from"./featureQueryAll.js";import{getOwningPortalUrl as l}from"./layerUtils.js";import p from"../../renderers/SimpleRenderer.js";import d from"../../renderers/UniqueValueRenderer.js";import f from"../../rest/support/AttachmentQuery.js";import y from"../../rest/support/Query.js";import m from"../../rest/support/RelationshipQuery.js";const h=new o({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"});async function w(e,t,r,o){const s=await Q(e);if(await b(e,t,o),!s.addAttachment)throw new n(o,"Layer source does not support addAttachment capability");return s.addAttachment(t,r)}function b(e,t,r){const{attributes:o}=t,{objectIdField:s}=e;return e.capabilities?.data?.supportsAttachment?t?o?s&&o[s]?Promise.resolve():Promise.reject(new n(r,`feature is missing the identifying attribute ${s}`)):Promise.reject(new n(r,"'attributes' are required on a feature to query attachments")):Promise.reject(new n(r,"A feature is required to add/delete/update attachments")):Promise.reject(new n(r,"this layer doesn't support attachments"))}async function g(e,t,r,o,s){const i=await Q(e);if(await b(e,t,s),!i.updateAttachment)throw new n(s,"Layer source does not support updateAttachment capability");return i.updateAttachment(t,r,o)}async function I(e,t,r){const{applyEdits:n}=await import("../graphics/editingSupport.js"),o=await e.load();let s=r;return"feature"===o.type&&o.infoFor3D&&null!=t.deleteFeatures&&null!=o.globalIdField&&(s={...s,globalIdToObjectId:await Z(o,t.deleteFeatures,o.globalIdField)}),n(o,o.source,t,r)}async function j(e,t,r){const{uploadAssets:n}=await import("../graphics/editingSupport.js"),o=await e.load();return n(o,o.source,t,r)}async function F(e,t,r,o){const s=await Q(e);if(await b(e,t,o),!s.deleteAttachments)throw new n(o,"Layer source does not support deleteAttachments capability");return s.deleteAttachments(t,r)}async function q(e,t,r){const o=(await e.load({signal:t?.signal})).source;if(!o.fetchRecomputedExtents)throw new n(r,"Layer source does not support fetchUpdates capability");return o.fetchRecomputedExtents(t)}async function x(e,t,r,o){t=f.from(t),await e.load();const s=e.source,i=e.capabilities;if(!i?.data?.supportsAttachment)throw new n(o,"this layer doesn't support attachments");const{attachmentTypes:a,objectIds:u,globalIds:c,num:l,size:p,start:d,where:y}=t;if(!i?.operations?.supportsQueryAttachments){if(a?.length>0||c?.length>0||p?.length>0||l||d||y)throw new n(o,"when 'capabilities.operations.supportsQueryAttachments' is false, only objectIds is supported",t)}if(!(u?.length||c?.length||y))throw new n(o,"'objectIds', 'globalIds', or 'where' are required to perform attachment query",t);if(!s.queryAttachments)throw new n(o,"Layer source does not support queryAttachments capability",t);return s.queryAttachments(t)}async function A(e,t,r,o){const s=await Q(e);if(!s.queryObjectIds)throw new n(o,"Layer source does not support queryObjectIds capability");return s.queryObjectIds(y.from(t)??e.createQuery(),r)}async function v(e,t,r,o){const s=await Q(e);if(!s.queryFeatureCount)throw new n(o,"Layer source does not support queryFeatureCount capability");return s.queryFeatureCount(y.from(t)??e.createQuery(),r)}async function S(e,t,r,o){const s=await Q(e);if(!s.queryExtent)throw new n(o,"Layer source does not support queryExtent capability");return s.queryExtent(y.from(t)??e.createQuery(),r)}async function O(e,t,r,o){const s=await Q(e);if(!s.queryRelatedFeatures)throw new n(o,"Layer source does not support queryRelatedFeatures capability");return s.queryRelatedFeatures(m.from(t),r)}async function P(e,t,r,o){const s=await Q(e);if(!s.queryRelatedFeaturesCount)throw new n(o,"Layer source does not support queryRelatedFeaturesCount capability");return s.queryRelatedFeaturesCount(m.from(t),r)}async function E(e){const t=e.source;if(t?.refresh)try{const{dataChanged:r,updates:n}=await t.refresh();if(null!=n&&(e.sourceJSON={...e.sourceJSON,...n},e.read(n,{origin:"service",url:e.parsedUrl})),r)return!0}catch{}if(e.definitionExpression)try{return(await s(e.definitionExpression,e.fieldsIndex)).hasDateFunctions}catch{}return!1}function L(e){const t=new y,r=e.capabilities?.data,n=e.capabilities?.query;t.historicMoment=e.historicMoment,t.gdbVersion=e.gdbVersion,t.returnGeometry=!0,n&&(t.compactGeometryEnabled=n.supportsCompactGeometry,t.defaultSpatialReferenceEnabled=n.supportsDefaultSpatialReference),r&&(r.supportsZ&&null!=e.returnZ&&(t.returnZ=e.returnZ),r.supportsM&&null!=e.returnM&&(t.returnM=e.returnM)),t.outFields=["*"];const{timeOffset:o,timeExtent:s}=e;return t.timeExtent=null!=o&&null!=s?s.offset(-o.value,o.unit):s||null,t.multipatchOption="multipatch"===e.geometryType?"xyFootprint":null,t}function C(e){const{globalIdField:t,fields:r}=e;if(t)return t;if(r)for(const n of r)if("esriFieldTypeGlobalID"===n.type)return n.name}function R(e){const{objectIdField:t,fields:r}=e;if(t)return t;if(r)for(const n of r)if("esriFieldTypeOID"===n.type)return n.name}function M(e){return e.currentVersion?e.currentVersion:e.hasOwnProperty("capabilities")||e.hasOwnProperty("drawingInfo")||e.hasOwnProperty("hasAttachments")||e.hasOwnProperty("htmlPopupType")||e.hasOwnProperty("relationships")||e.hasOwnProperty("timeInfo")||e.hasOwnProperty("typeIdField")||e.hasOwnProperty("types")?10:9.3}function V(e,t){const{subtypes:r,subtypeField:n}=e;if(!t?.attributes||!r?.length||!n)return null;const o=t.attributes[n];return null==o?null:r.find((e=>e.code===o))}function D(e,t){const{fieldsIndex:r,subtypeField:n}=e,{name:o}=r.get(t)??{};if(!o)return null;if((n&&r.get(n)?.name)===o&&e.subtypes?.length){const t=e.subtypes.map((e=>new a({code:e.code,name:e.name})));if(t?.length)return new u({codedValues:t})}return null}function G(e,t){const{fieldsIndex:r}=e,{name:n}=r.get(t)??{};if(!n)return null;if(("typeIdField"in e?r.get(e.typeIdField)?.name:null)===n&&"types"in e&&e.types?.length){const t=e.types.map((e=>new a({code:e.id,name:e.name})));return new u({codedValues:t})}return null}async function Q(e){return(await e.load()).source}async function T(t,r){if(!e)return;if(e.findCredential(t))return;let n;try{const o=await l(t,r);o&&(n=await e.checkSignInStatus(`${o}/sharing`))}catch(o){}if(n)try{const n=null!=r?r.signal:null;await e.getCredential(t,{signal:n})}catch(o){}}async function U(e,t,r){const n=e.parsedUrl?.path;n&&e.authenticationTriggerEvent===t&&await T(n,r)}function k(e){return!z(e)&&(e.userHasUpdateItemPrivileges||e.editingEnabled)}const J=i({types:t});function N(e,t){if(e.defaultSymbol)return e.types?.length?new d({defaultSymbol:J(e.defaultSymbol,e,t),field:e.typeIdField,uniqueValueInfos:e.types.map((e=>({id:e.id,symbol:J(e.symbol,e,t)})))}):new p({symbol:J(e.defaultSymbol,e,t)})}function $(e){let t=e.sourceJSON?.cacheMaxAge;if(!t)return!1;const r=e.editingInfo?.lastEditDate?.getTime();return null==r||(t*=1e3,Date.now()-r<t)}async function Z(e,t,n){if(null==t)return null;const o=[],{objectIdField:s}=e;if(t.forEach((e=>{let t=null;if("attributes"in e){const{attributes:r}=e;t={globalId:r[n],objectId:null!=r[s]&&-1!==r[s]?r[s]:null}}else t={globalId:e.globalId,objectId:null!=e.objectId&&-1!==e.objectId?e.objectId:null};null!=t.globalId&&(null!=t.objectId&&-1!==t.objectId||o.push(t.globalId))})),0===o.length)return null;const i=e.createQuery();i.where=o.map((e=>`${n}='${e}'`)).join(" OR "),i.returnGeometry=!1,i.outFields=[s,n],i.cacheHint=!1;const a=await r(c(e,i));if(!a.ok)return null;const u=new Map,l=a.value.features;for(const r of l){const e=r.attributes[n],t=r.attributes[s];null!=e&&null!=t&&-1!==t&&u.set(e,t)}return u}function H(e,t,r){if(!t||!r||!e)return null;const n=r.getAttribute(t);return null==n?null:e.find((e=>{const{id:t}=e;return null!=t&&t.toString()===n.toString()}))??null}function z(e){return e.sourceJSON?.isMultiServicesView||B(e)}function B(e){return!!e.sourceJSON?.capabilities?.toLowerCase().split(",").map((e=>e.trim())).includes("map")}function K(e,t,r){const o=t?.queryBins;if(!o)throw new n(r,"Layer source does not support binning");switch(e.binParameters.type){case"auto-interval":if(!o.supportsAutoInterval)throw new n(r,"Layer source does not support auto-interval binning");break;case"date":if(!o.supportsDate)throw new n(r,"Layer source does not support date binning");break;case"fixed-boundaries":if(!o.supportsFixedBoundaries)throw new n(r,"Layer source does not support fixed-boundaries binning");break;case"fixed-interval":if(!o.supportsFixedInterval)throw new n(r,"Layer source does not support fixed-interval binning")}const s=o?.supportedStatistics;if(e.outStatistics&&s){const t=new Map([["count","count"],["sum","sum"],["min","min"],["max","max"],["avg","avg"],["stddev","stddev"],["var","var"],["percentile-continuous","percentileContinuous"],["percentile-discrete","percentileDiscrete"],["centroid-aggregate","centroid"],["convex-hull-aggregate","convexHull"],["envelope-aggregate","envelope"]]);for(const{statisticType:o}of e.outStatistics){const e=t.get(o);if(e&&!s[e])throw new n(r,`Layer source does not support ${o} statistic type`)}}}export{w as addAttachment,I as applyEdits,D as computeDomainFromSubtypes,G as computeDomainFromTypes,k as computeEffectiveEditingEnabled,N as createDefaultRenderer,L as createQuery,F as deleteAttachments,T as ensureCredentialIfSignedIn,U as ensureLayerCredential,q as fetchRecomputedExtents,h as geometryTypeKebabDict,V as getFeatureSubtype,H as getFeatureType,Z as getGlobalIdToObjectIdMap,E as hasDataChanged,$ as isLayerCacheStale,x as queryAttachments,S as queryExtent,v as queryFeatureCount,A as queryObjectIds,O as queryRelatedFeatures,P as queryRelatedFeaturesCount,C as readGlobalIdField,R as readObjectIdField,M as readVersion,z as supportsQueryOnly,g as updateAttachment,j as uploadAssets,K as validateBinsQuery};
5
+ import{id as e}from"../../kernel.js";import{symbolTypesRenderer as t}from"../../symbols.js";import{resultOrAbort as r}from"../../core/asyncUtils.js";import n from"../../core/Error.js";import{JSONMap as o}from"../../core/jsonMap.js";import{parseWhereClause as s}from"../../core/sql.js";import{normalizeGlobalID as i}from"../../core/uuid.js";import{createTypeReader as a}from"../../core/accessorSupport/extensions/serializableProperty/reader.js";import{CodedValue as u}from"./CodedValue.js";import c from"./CodedValueDomain.js";import{queryAllJSON as l}from"./featureQueryAll.js";import{getOwningPortalUrl as p}from"./layerUtils.js";import d from"../../renderers/SimpleRenderer.js";import f from"../../renderers/UniqueValueRenderer.js";import y from"../../rest/support/AttachmentQuery.js";import m from"../../rest/support/Query.js";import h from"../../rest/support/RelationshipQuery.js";const w=new o({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"});async function b(e,t,r,o){const s=await T(e);if(await g(e,t,o),!s.addAttachment)throw new n(o,"Layer source does not support addAttachment capability");return s.addAttachment(t,r)}function g(e,t,r){const{attributes:o}=t,{objectIdField:s}=e;return e.capabilities?.data?.supportsAttachment?t?o?s&&o[s]?Promise.resolve():Promise.reject(new n(r,`feature is missing the identifying attribute ${s}`)):Promise.reject(new n(r,"'attributes' are required on a feature to query attachments")):Promise.reject(new n(r,"A feature is required to add/delete/update attachments")):Promise.reject(new n(r,"this layer doesn't support attachments"))}async function I(e,t,r,o,s){const i=await T(e);if(await g(e,t,s),!i.updateAttachment)throw new n(s,"Layer source does not support updateAttachment capability");return i.updateAttachment(t,r,o)}async function j(e,t,r){const{applyEdits:n}=await import("../graphics/editingSupport.js"),o=await e.load();let s=r;return"feature"===o.type&&o.infoFor3D&&null!=t.deleteFeatures&&null!=o.globalIdField&&(s={...s,globalIdToObjectId:await H(o,t.deleteFeatures,o.globalIdField)}),n(o,o.source,t,r)}async function F(e,t,r){const{uploadAssets:n}=await import("../graphics/editingSupport.js"),o=await e.load();return n(o,o.source,t,r)}async function q(e,t,r,o){const s=await T(e);if(await g(e,t,o),!s.deleteAttachments)throw new n(o,"Layer source does not support deleteAttachments capability");return s.deleteAttachments(t,r)}async function x(e,t,r){const o=(await e.load({signal:t?.signal})).source;if(!o.fetchRecomputedExtents)throw new n(r,"Layer source does not support fetchUpdates capability");return o.fetchRecomputedExtents(t)}async function A(e,t,r,o){t=y.from(t),await e.load();const s=e.source,i=e.capabilities;if(!i?.data?.supportsAttachment)throw new n(o,"this layer doesn't support attachments");const{attachmentTypes:a,objectIds:u,globalIds:c,num:l,size:p,start:d,where:f}=t;if(!i?.operations?.supportsQueryAttachments){if(a?.length>0||c?.length>0||p?.length>0||l||d||f)throw new n(o,"when 'capabilities.operations.supportsQueryAttachments' is false, only objectIds is supported",t)}if(!(u?.length||c?.length||f))throw new n(o,"'objectIds', 'globalIds', or 'where' are required to perform attachment query",t);if(!s.queryAttachments)throw new n(o,"Layer source does not support queryAttachments capability",t);return s.queryAttachments(t)}async function v(e,t,r,o){const s=await T(e);if(!s.queryObjectIds)throw new n(o,"Layer source does not support queryObjectIds capability");return s.queryObjectIds(m.from(t)??e.createQuery(),r)}async function S(e,t,r,o){const s=await T(e);if(!s.queryFeatureCount)throw new n(o,"Layer source does not support queryFeatureCount capability");return s.queryFeatureCount(m.from(t)??e.createQuery(),r)}async function O(e,t,r,o){const s=await T(e);if(!s.queryExtent)throw new n(o,"Layer source does not support queryExtent capability");return s.queryExtent(m.from(t)??e.createQuery(),r)}async function P(e,t,r,o){const s=await T(e);if(!s.queryRelatedFeatures)throw new n(o,"Layer source does not support queryRelatedFeatures capability");return s.queryRelatedFeatures(h.from(t),r)}async function E(e,t,r,o){const s=await T(e);if(!s.queryRelatedFeaturesCount)throw new n(o,"Layer source does not support queryRelatedFeaturesCount capability");return s.queryRelatedFeaturesCount(h.from(t),r)}async function L(e){const t=e.source;if(t?.refresh)try{const{dataChanged:r,updates:n}=await t.refresh();if(null!=n&&(e.sourceJSON={...e.sourceJSON,...n},e.read(n,{origin:"service",url:e.parsedUrl})),r)return!0}catch{}if(e.definitionExpression)try{return(await s(e.definitionExpression,e.fieldsIndex)).hasDateFunctions}catch{}return!1}function C(e){const t=new m,r=e.capabilities?.data,n=e.capabilities?.query;t.historicMoment=e.historicMoment,t.gdbVersion=e.gdbVersion,t.returnGeometry=!0,n&&(t.compactGeometryEnabled=n.supportsCompactGeometry,t.defaultSpatialReferenceEnabled=n.supportsDefaultSpatialReference),r&&(r.supportsZ&&null!=e.returnZ&&(t.returnZ=e.returnZ),r.supportsM&&null!=e.returnM&&(t.returnM=e.returnM)),t.outFields=["*"];const{timeOffset:o,timeExtent:s}=e;return t.timeExtent=null!=o&&null!=s?s.offset(-o.value,o.unit):s||null,t.multipatchOption="multipatch"===e.geometryType?"xyFootprint":null,t}function R(e){const{globalIdField:t,fields:r}=e;if(t)return t;if(r)for(const n of r)if("esriFieldTypeGlobalID"===n.type)return n.name}function M(e){const{objectIdField:t,fields:r}=e;if(t)return t;if(r)for(const n of r)if("esriFieldTypeOID"===n.type)return n.name}function V(e){return e.currentVersion?e.currentVersion:e.hasOwnProperty("capabilities")||e.hasOwnProperty("drawingInfo")||e.hasOwnProperty("hasAttachments")||e.hasOwnProperty("htmlPopupType")||e.hasOwnProperty("relationships")||e.hasOwnProperty("timeInfo")||e.hasOwnProperty("typeIdField")||e.hasOwnProperty("types")?10:9.3}function D(e,t){const{subtypes:r,subtypeField:n}=e;if(!t?.attributes||!r?.length||!n)return null;const o=t.attributes[n];return null==o?null:r.find((e=>e.code===o))}function G(e,t){const{fieldsIndex:r,subtypeField:n}=e,{name:o}=r.get(t)??{};if(!o)return null;if((n&&r.get(n)?.name)===o&&e.subtypes?.length){const t=e.subtypes.map((e=>new u({code:e.code,name:e.name})));if(t?.length)return new c({codedValues:t})}return null}function Q(e,t){const{fieldsIndex:r}=e,{name:n}=r.get(t)??{};if(!n)return null;if(("typeIdField"in e?r.get(e.typeIdField)?.name:null)===n&&"types"in e&&e.types?.length){const t=e.types.map((e=>new u({code:e.id,name:e.name})));return new c({codedValues:t})}return null}async function T(e){return(await e.load()).source}async function U(t,r){if(!e)return;if(e.findCredential(t))return;let n;try{const o=await p(t,r);o&&(n=await e.checkSignInStatus(`${o}/sharing`))}catch(o){}if(n)try{const n=null!=r?r.signal:null;await e.getCredential(t,{signal:n})}catch(o){}}async function k(e,t,r){const n=e.parsedUrl?.path;n&&e.authenticationTriggerEvent===t&&await U(n,r)}function J(e){return!B(e)&&(e.userHasUpdateItemPrivileges||e.editingEnabled)}const N=a({types:t});function $(e,t){if(e.defaultSymbol)return e.types?.length?new f({defaultSymbol:N(e.defaultSymbol,e,t),field:e.typeIdField,uniqueValueInfos:e.types.map((e=>({id:e.id,symbol:N(e.symbol,e,t)})))}):new d({symbol:N(e.defaultSymbol,e,t)})}function Z(e){let t=e.sourceJSON?.cacheMaxAge;if(!t)return!1;const r=e.editingInfo?.lastEditDate?.getTime();return null==r||(t*=1e3,Date.now()-r<t)}async function H(e,t,n){if(null==t)return null;const o=[],{objectIdField:s}=e;if(t.forEach((e=>{let t=null;if("attributes"in e){const{attributes:r}=e;t={globalId:r[n],objectId:null!=r[s]&&-1!==r[s]?r[s]:null}}else t={globalId:e.globalId,objectId:null!=e.objectId&&-1!==e.objectId?e.objectId:null};null!=t.globalId&&(null!=t.objectId&&-1!==t.objectId||o.push(t.globalId))})),0===o.length)return null;const a=e.createQuery();a.where=o.map((e=>`${n}='${e}'`)).join(" OR "),a.returnGeometry=!1,a.outFields=[s,n],a.cacheHint=!1;const u=await r(l(e,a));if(!u.ok)return null;const c=new Map,p=u.value.features;for(const r of p){const e=r.attributes[n],t=r.attributes[s];null!=e&&null!=t&&-1!==t&&c.set(i(e),t)}return c}function z(e,t,r){if(!t||!r||!e)return null;const n=r.getAttribute(t);return null==n?null:e.find((e=>{const{id:t}=e;return null!=t&&t.toString()===n.toString()}))??null}function B(e){return e.sourceJSON?.isMultiServicesView||K(e)}function K(e){return!!e.sourceJSON?.capabilities?.toLowerCase().split(",").map((e=>e.trim())).includes("map")}function W(e,t,r){const o=t?.queryBins;if(!o)throw new n(r,"Layer source does not support binning");switch(e.binParameters.type){case"auto-interval":if(!o.supportsAutoInterval)throw new n(r,"Layer source does not support auto-interval binning");break;case"date":if(!o.supportsDate)throw new n(r,"Layer source does not support date binning");break;case"fixed-boundaries":if(!o.supportsFixedBoundaries)throw new n(r,"Layer source does not support fixed-boundaries binning");break;case"fixed-interval":if(!o.supportsFixedInterval)throw new n(r,"Layer source does not support fixed-interval binning")}const s=o?.supportedStatistics;if(e.outStatistics&&s){const t=new Map([["count","count"],["sum","sum"],["min","min"],["max","max"],["avg","avg"],["stddev","stddev"],["var","var"],["percentile-continuous","percentileContinuous"],["percentile-discrete","percentileDiscrete"],["centroid-aggregate","centroid"],["convex-hull-aggregate","convexHull"],["envelope-aggregate","envelope"]]);for(const{statisticType:o}of e.outStatistics){const e=t.get(o);if(e&&!s[e])throw new n(r,`Layer source does not support ${o} statistic type`)}}}export{b as addAttachment,j as applyEdits,G as computeDomainFromSubtypes,Q as computeDomainFromTypes,J as computeEffectiveEditingEnabled,$ as createDefaultRenderer,C as createQuery,q as deleteAttachments,U as ensureCredentialIfSignedIn,k as ensureLayerCredential,x as fetchRecomputedExtents,w as geometryTypeKebabDict,D as getFeatureSubtype,z as getFeatureType,H as getGlobalIdToObjectIdMap,L as hasDataChanged,Z as isLayerCacheStale,A as queryAttachments,O as queryExtent,S as queryFeatureCount,v as queryObjectIds,P as queryRelatedFeatures,E as queryRelatedFeaturesCount,R as readGlobalIdField,M as readObjectIdField,V as readVersion,B as supportsQueryOnly,I as updateAttachment,F as uploadAssets,W as validateBinsQuery};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "4.31.0",
3
+ "version": "4.31.2",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../core/Error.js";import{formatNumber as r}from"../../../intl/number.js";import{createClassBreaksRenderer as a,getVariableRasterInfo as t,getField as s}from"../../../renderers/support/rasterRendererHelper.js";import{processRasterRendererParameters as n}from"../support/utils.js";function o(e){const{rasterInfo:r,layer:a}=e,s=r.multidimensionalInfo?"imagery"===a.type?a.mosaicRule?.multidimensionalDefinition?.[0]?.variableName:a.multidimensionalDefinition?.[0]?.variableName:"";return t(r,s)}async function i(r){const a=o((r=await n(r)).layer);if(a.bandCount>1)throw new e("raster-class-breaks-renderer:not-supported","Multiband raster is not supported");const{attributeTable:t}=a;r.field||(r.field=s(t,"value")?.name??"value");const{colors:i,numClasses:l}=r;if(i&&l&&i.length!==l)throw new e("raster-class-breaks-renderer:not-supported","The size of the `colors` parameter does not match 'numClasses'");return r.classificationMethod||(r.classificationMethod="natural-breaks"),r}async function l(r){const t=o((r=await i(r)).layer).clone(),s=t.attributeTable?.fields.find((e=>e.name.toLowerCase()===r.field?.toLowerCase()));if(s||t.histograms||await r.layer.updateRasterInfoWithEstimatedStats(t,{rasterFunction:r.rasterFunction,signal:r.signal}),null==t.histograms)throw new e("raster-class-breaks-renderer:not-supported","Histograms or raster attribute table is required on the source raster. Unable to estimate histograms");const n=a(t,r);if(null==n)throw new e("raster-class-breaks-renderer:not-supported","Class breaks renderer is not supported on this data");const l={minValue:n.minValue,maxValue:n.classBreakInfos[n.classBreakInfos.length-1].maxValue,normalizationTotal:null,classBreakInfos:n.classBreakInfos.map((e=>{const r=u(e.minValue,e.maxValue);return e.label=r,{minValue:e.minValue,maxValue:e.maxValue,label:r}}))};return{renderer:n,classBreaksResult:l}}function u(e,a){return r(e,{maximumFractionDigits:3})+" - "+r(a,{maximumFractionDigits:3})}export{l as createRenderer};
5
+ import e from"../../../core/Error.js";import{formatNumber as r}from"../../../intl/number.js";import{createClassBreaksRenderer as a,getVariableRasterInfo as t,getField as s}from"../../../renderers/support/rasterRendererHelper.js";import{processRasterRendererParameters as n}from"../support/utils.js";function o(e){const{rasterInfo:r,layer:a}=e,s=r.multidimensionalInfo?"imagery"===a.type?a.mosaicRule?.multidimensionalDefinition?.[0]?.variableName:a.multidimensionalDefinition?.[0]?.variableName:"";return t(r,s)}async function i(r){const a=o((r=await n(r)).layer);if(a.bandCount>1)throw new e("raster-class-breaks-renderer:not-supported","Multiband raster is not supported");const{attributeTable:t}=a;r.field||(r.field=s(t,"value")?.name??"value");const{colors:i,numClasses:l}=r;if(i&&l&&i.length!==l)throw new e("raster-class-breaks-renderer:not-supported","The size of the `colors` parameter does not match 'numClasses'");return r.classificationMethod||(r.classificationMethod="natural-breaks"),r}async function l(r){const t=o((r=await i(r)).layer).clone(),s=t.attributeTable?.fields.find((e=>e.name.toLowerCase()===r.field?.toLowerCase()));if(!s&&!t.histograms?.length&&(await r.layer.updateRasterInfoWithEstimatedStats(t,{rasterFunction:r.rasterFunction,signal:r.signal}),!t.histograms?.length))throw new e("raster-class-breaks-renderer:not-supported","Histograms or raster attribute table is required on the source raster. Unable to estimate histograms");const n=a(t,r);if(null==n)throw new e("raster-class-breaks-renderer:not-supported","Class breaks renderer is not supported on this data");const l={minValue:n.minValue,maxValue:n.classBreakInfos[n.classBreakInfos.length-1].maxValue,normalizationTotal:null,classBreakInfos:n.classBreakInfos.map((e=>{const r=u(e.minValue,e.maxValue);return e.label=r,{minValue:e.minValue,maxValue:e.maxValue,label:r}}))};return{renderer:n,classBreaksResult:l}}function u(e,a){return r(e,{maximumFractionDigits:3})+" - "+r(a,{maximumFractionDigits:3})}export{l as createRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import e from"../../renderers/PointCloudRGBRenderer.js";import i from"../../renderers/PointCloudStretchRenderer.js";import"../../renderers/PointCloudUniqueValueRenderer.js";import r from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import{createUniqueColors as a}from"../../core/colorUtils.js";import o from"../../core/Error.js";import{clone as n}from"../../core/lang.js";import{ensureClass as l}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as s}from"../../intl/messages.js";import t from"../../renderers/support/AuthoringInfo.js";import u from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as d,createColorStops as m}from"../../renderers/support/utils.js";import c from"../../renderers/visualVariables/ColorVariable.js";import p from"../../renderers/visualVariables/support/ColorStop.js";import f from"../../renderers/visualVariables/support/VisualVariableLegendOptions.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import h from"../heuristics/sizeRange.js";import{spliceVisualVariables as w,findColorVVIndex as b,findOutlineVVIndex as g,findScaleDependentSizeVVIndex as T,processRegenerateParams as x,getRendererToUpdate as E,getStyleType as z,hasOutlineVV as V,hasScaleDependentSizeVV as I}from"./support/regenerateUtils.js";import{getSummaryStatistics as S,errorCallback as M,getClassBreaks as j,getPointSizeAlgorithm as B,getTitleAndExpressionForAgeRenderer as O,updateAgeRendererAuthoringInfoVV as k,verifyBasicFieldValidity as R,isValidPointSize as C,getDefaultDataRange as F,createDefaultStopValues as q,createStopValues as U,getDataRange as P,createDataValues as D,createSymbol as L,getSymbolSizeFromScheme as $,getSymbolOutlineFromScheme as A,getBasemapInfo as G}from"./support/utils.js";import{verifyDates as W,supportedAgeUnits as H}from"../statistics/support/ageUtils.js";import{verifyBinningParams as J}from"../support/binningUtils.js";import{isAnyDateField as K,getFieldsList as N,getNormalizationType as Q}from"../support/utils.js";import{binningCapableLayerTypes as X,featureCapableLayerTypes as Y,createLayerAdapter as Z,getLayerTypeLabels as _,LayerType as ee}from"../support/adapters/support/layerUtils.js";import{cloneScheme as ie,getSchemes as re,getSchemeById as ae}from"../symbology/color.js";const oe="high-to-low",ne=2**53-1,le=5;async function se(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new o("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new o("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&J(e,"color-visual-variable");const i={...e},r=e.forBinning?X:Y,a=Z(i.layer,r,e.forBinning);if(!a)throw new o("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));const n=null!=i.signal?{signal:i.signal}:null;await a.load(n);if("mesh"!==a.geometryType&&i.worldScale&&(!i.view||"3d"!==i.view.type))throw new o("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const l=await N({field:i.field,normalizationField:i.normalizationField,valueExpression:i.valueExpression}),s=R(a,l,"color-visual-variable:invalid-parameters");if(s)throw s;return{...i,layer:a}}async function te(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new o("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new o("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&J(e,"color-continuous-renderer");const i={...e};i.symbolType=i.symbolType||"2d",i.defaultSymbolEnabled??=!0;const r=e.forBinning?X:Y,a=Z(i.layer,r,e.forBinning);if(!a)throw new o("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));const n=null!=i.signal?{signal:i.signal}:null;await a.load(n);const l=a.geometryType;if(i.outlineOptimizationEnabled="polygon"===l&&i.outlineOptimizationEnabled,i.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&i.sizeOptimizationEnabled,"mesh"===l)i.symbolType="3d-volumetric",i.colorMixMode=i.colorMixMode||"replace",i.edgesType=i.edgesType||"none";else{if("3d-volumetric-uniform"===i.symbolType&&"point"!==l)throw new o("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(i.symbolType.includes("3d-volumetric")&&(!i.view||"3d"!==i.view.type))throw new o("color-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await N({field:i.field,normalizationField:i.normalizationField,valueExpression:i.valueExpression}),t=R(a,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return{...i,layer:a}}async function ue(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new o("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new o("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&J(e,"color-class-breaks-renderer");const i={...e};i.symbolType=i.symbolType||"2d",i.defaultSymbolEnabled??=!0,i.classificationMethod??="equal-interval",i.normalizationType=Q(i);const r=e.forBinning?X:Y,a=Z(i.layer,r,e.forBinning);if(!a)throw new o("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));if(!(null!=i.minValue&&null!=i.maxValue)&&(null!=i.minValue||null!=i.maxValue))throw new o("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=null!=i.signal?{signal:i.signal}:null;await a.load(n);const l=a.geometryType;if(i.outlineOptimizationEnabled="polygon"===l&&i.outlineOptimizationEnabled,"mesh"===l)i.symbolType="3d-volumetric",i.colorMixMode=i.colorMixMode||"replace",i.edgesType=i.edgesType||"none";else{if("3d-volumetric-uniform"===i.symbolType&&"point"!==l)throw new o("color-class-breaks-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(i.symbolType.includes("3d-volumetric")&&(!i.view||"3d"!==i.view.type))throw new o("color-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await N({field:i.field,normalizationField:i.normalizationField}),t=R(a,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return{...i,layer:a}}function de(e){const i={...e};delete i.basemap,delete i.colorScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}async function me(e){if(!e?.layer)throw new o("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const i={...e,layer:e.layer},r=[ee.PointCloudLayer],a=Z(i.layer,r);if(!a)throw new o("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));if(i.layer=a,i.density=i.density||25,i.size=i.size||"100%",!C(i.size))throw new o("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=i.signal?{signal:i.signal}:null;return await a.load(n),i}async function ce(e){if(!e?.layer||!e.field)throw new o("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const i=e.field.toLowerCase();if("intensity"!==i&&"elevation"!==i)throw new o("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const r={...e,layer:e.layer,field:e.field},a=[ee.PointCloudLayer],n=Z(r.layer,a);if(!n)throw new o("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+_(a).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!C(r.size))throw new o("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const l=null!=r.signal?{signal:r.signal}:null;return await n.load(l),r}function pe(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const a=i;return a.worldScale=r,a}async function fe(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new o("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const i={...e};i.symbolType=i.symbolType||"2d",i.defaultSymbolEnabled??=!0;const r=Z(i.layer,Y);if(!r)throw new o("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+_(Y).join(", "));const a=null!=i.signal?{signal:i.signal}:null;await r.load(a);const n=r.geometryType;if(i.outlineOptimizationEnabled="polygon"===n&&i.outlineOptimizationEnabled,i.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&i.sizeOptimizationEnabled,"mesh"===n)i.symbolType="3d-volumetric",i.colorMixMode=i.colorMixMode||"replace",i.edgesType=i.edgesType||"none";else if("3d-volumetric-uniform"===i.symbolType&&"point"!==n)throw new o("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(i.symbolType.includes("3d-volumetric")&&(!i.view||"3d"!==i.view.type))throw new o("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const l=W(r,i.startTime,i.endTime,"color-age-renderer:invalid-parameters");if(l)throw l;if(i.unit&&!H.includes(i.unit))throw new o("color-age-renderer:invalid-unit",`Supported units are: ${H.join(", ")}`);return{...i,layer:r}}async function ye(e){const i="regenerate-color-visual-variable";await x(e,i);const r=await E(e);if("class-breaks"!==r?.type)throw new o(`${i}:invalid-parameters`,"Renderer must be a ClassBreaksRenderer to regenerate a color visual variable");const a=r.authoringInfo?.visualVariables.find((e=>"color"===e.type));if(!a)throw new o(`${i}:invalid-parameters`,"Renderer does not have a color visual variable in authoringInfo");const n=r.visualVariables?.find((e=>"color"===e.type));if(!n)throw new o(`${i}:invalid-parameters`,"Renderer does not have a color visual variable");const{field:l,normalizationField:s,valueExpression:t,valueExpressionTitle:u}=n,d=a.theme,{layer:m,forBinning:c,filter:p,view:f,signal:y}=e,v=await se({layer:m,field:l,valueExpression:t,valueExpressionTitle:u,normalizationField:s,theme:d,forBinning:c,filter:p,view:f,signal:y});return{...e,creatorParameters:v,renderer:r}}async function ve(e){const i="regenerate-color-continuous-renderer";await x(e,i);const r=await E(e);if("color-continuous"!==z(r))throw new o(`${i}:invalid-renderer`,"Renderer is invalid");const{authoringInfo:a,field:n,normalizationField:l,valueExpression:s,valueExpressionTitle:t}=r,u=a?.visualVariables.find((e=>"color"===e.type)),d=u?.theme,{layer:m,forBinning:c,filter:p,view:f,signal:y}=e,v=V(r),h=I(r),w=await te({layer:m,field:n,valueExpression:s,valueExpressionTitle:t,normalizationField:l,theme:d,outlineOptimizationEnabled:v,sizeOptimizationEnabled:h,forBinning:c,filter:p,view:f,signal:y});return{...e,creatorParameters:w,renderer:r}}async function he(e){const i="regenerate-color-class-breaks-renderer";await x(e,i);const r=await E(e);if("color-class-breaks"!==z(r))throw new o(`${i}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:a,field:n,normalizationField:l,normalizationType:s,normalizationTotal:t,valueExpression:u,valueExpressionTitle:d}=r,{classificationMethod:m,standardDeviationInterval:c}=a,p=r.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:h,signal:w}=e,b=V(r),g=await ue({layer:f,field:n,valueExpression:u,valueExpressionTitle:d,normalizationType:s,normalizationField:l,normalizationTotal:t,classificationMethod:m,standardDeviationInterval:c,numClasses:p,outlineOptimizationEnabled:b,forBinning:y,filter:v,view:h,signal:w});return{...e,creatorParameters:g,renderer:r}}async function we(e){const i="regenerate-color-age-renderer";await x(e,i);const r=await E(e);if("color-age"!==z(r))throw new o(`${i}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:a}=r,n=a?.visualVariables.find((e=>"color"===e.type)),l=n.startTime,s=n.endTime,t=n.units,u=n.theme,{layer:d,filter:m,view:c,signal:p}=e,f=V(r),y=I(r),v=await fe({layer:d,startTime:l,endTime:s,unit:t,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:m,view:c,signal:p});return{...e,creatorParameters:v,renderer:r}}async function be(e,i){let r=e.colorScheme,a=null,o=null;const{view:n}=e,l=await G(e.basemap,n);if(a=null!=l.basemapId?l.basemapId:null,o=null!=l.basemapTheme?l.basemapTheme:null,r)return{scheme:ie(r),basemapId:a,basemapTheme:o};const s=e.theme||oe,t=re({theme:s,basemapTheme:o,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(a=t.basemapId,o=t.basemapTheme,e.schemeId){const i=s+"/"+a+"/"+e.schemeId;r=ae({id:i,geometryType:e.geometryType})}else r=t.primaryScheme;return{scheme:r,basemapId:a,basemapTheme:o}}async function ge(e,i){const r=i.layer,n=await be({basemap:i.basemap,colorScheme:i.colorScheme,geometryType:r.geometryType,schemeId:"elevation"===i.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),l=n.scheme;if(!l)throw new o("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const s=a(l.colors,le);if(s.length<le)throw new o("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=F(e,!1,!0),u=t?q(t[0],t[1],5):U(e);return{stops:m({values:u,isDate:!1,colors:s,labelIndexes:[0,2,4]}),basemapId:n.basemapId,basemapTheme:n.basemapTheme,statistics:e,defaultValuesUsed:!!t,colorScheme:ie(l)}}function Te(e,i,r,a){const o=P(e,i,r,!0);return{values:D(o,e,i,a),defaultValuesUsed:o.defaultValuesUsed}}async function xe(e,i,r,n){const{field:s,theme:d}=e,m=await be({basemap:e.basemap,theme:e.theme,geometryType:r,colorScheme:e.colorScheme,worldScale:e.worldScale,view:e.view}),y=m.scheme;if(!y)throw new o("color-visual-variable:insufficient-info","Unable to find color scheme");const v=a(y.colors,le);if(v.length<le)throw new o("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const h=y.id.includes("seq-"),{values:w,defaultValuesUsed:b}=Te(i,d,n,h),g=a(v,le),T=new c({field:s??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationField:e.normalizationField,stops:w.map(((e,i)=>new p({value:e,color:g[i]}))),legendOptions:l(f,e.legendOptions)}),x=new u({type:"color",minSliderValue:null!=e.minValue?e.minValue:i.min,maxSliderValue:null!=e.maxValue?e.maxValue:i.max,theme:y.theme}),E=new t({visualVariables:[x]});return{basemapId:m.basemapId,basemapTheme:m.basemapTheme,visualVariable:T,statistics:i,defaultValuesUsed:b,colorScheme:ie(y),authoringInfo:E}}async function Ee(e,i,a,o,n,l,t){const u=await s("esri/smartMapping/t9n/smartMapping"),{field:d,defaultSymbolEnabled:m}=t,c=ie(e.colorScheme),p=i?.opacity,f=[e.visualVariable.clone()];i?.visualVariables?.length&&f.push(...i.visualVariables.map((e=>e.clone()))),a?.minSize&&f.push(a.minSize);return{renderer:new r({classBreakInfos:[{minValue:-ne,maxValue:ne,symbol:L(l,{type:t.symbolType,color:c.noDataColor,size:$(c,l),outline:A(c,l,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:m?u.other:null,defaultSymbol:m?L(l,{type:t.symbolType,color:c.noDataColor,size:$(c,l),outline:A(c,l,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:d,normalizationType:o,normalizationField:n,valueExpression:t.valueExpression,valueExpressionTitle:t.valueExpressionTitle,visualVariables:f,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:ie(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function ze(e){const i=await se(e),{view:r,field:a,valueExpression:o,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:u,filter:d,statistics:m}=i,c=t?"field":void 0,p=await(m??S({layer:s,field:a,valueExpression:o,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:c,normalizationField:t,minValue:n,maxValue:l,filter:d,view:r,signal:u})),f=s,y=a&&"function"!=typeof a?f.getField(a):null;return xe(i,p,f.geometryType,K(y))}async function Ve(e){const{view:i,filter:r,creatorParameters:a,renderer:n,signal:l}=await ye(e),s=n.authoringInfo.clone(),t=s.visualVariables.find((e=>"color"===e.type)),u=n.visualVariables.find((e=>"color"===e.type)),{field:d,normalizationField:m,valueExpression:c,theme:p,layer:f}=a,y=await S({layer:f,field:d,valueExpression:c,normalizationField:m,filter:r,view:i,signal:l}),v=d&&"function"!=typeof d?f.getField(d):null,{values:h}=Te(y,p,K(v),"high-to-low"===p);if(h.length!==u.stops.length)throw new o("regenerate-color-visual-variable:invalid-parameters","Visual variable is invalid");return u.stops.forEach(((e,i)=>e.value=h[i])),t.minSliderValue=y.min,t.maxSliderValue=y.max,{visualVariable:u,authoringInfo:s}}function Ie(e,i){const r=e.colorsForClassBreaks;if(r?.length)for(const a of r)if(a.numClasses===i)return n(a.colors);return a(e.colors,i)}async function Se(e,i){const a=await s("esri/smartMapping/t9n/smartMapping"),n=e.layer,l=e.defaultSymbolEnabled,u=n.geometryType,m=e.classificationMethod,c="standard-deviation"===m,p=await be({basemap:e.basemap,geometryType:u,theme:c?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),f=p.scheme,{result:y,outlineResult:v}=i,h=y.classBreakInfos,w=e.normalizationType;if(!f)throw new o("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const b=Ie(f,h.length);if(!b||b.length!==h.length)throw new o("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=v?.opacity,T=new r({classBreakInfos:h.map(((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:L(u,{type:e.symbolType,color:b[r],size:$(f,u),outline:A(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label}))),defaultLabel:l?a.other:null,defaultSymbol:l?L(u,{type:e.symbolType,color:f.noDataColor,size:$(f,u),outline:A(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?y.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new t({type:"class-breaks-color",classificationMethod:m,standardDeviationInterval:e.standardDeviationInterval})});return c||d({classBreakInfos:T.classBreakInfos,classificationMethod:m,normalizationType:w,round:!0}),v?.visualVariables?.length&&(T.visualVariables=v.visualVariables.map((e=>e.clone()))),{renderer:T,colorScheme:ie(f),classBreaksResult:y,defaultValuesUsed:i.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function Me(e){const i=await te(e),{layer:r,view:a,signal:o,filter:n}=i,[l,s,t]=await Promise.all([ze(pe(i)),i.outlineOptimizationEnabled?v({layer:r,view:a,signal:o,filter:n}).catch(M):null,i.sizeOptimizationEnabled?h({layer:r,view:a,signal:o,filter:n}).catch(M):null]),u=i.normalizationField;return Ee(l,s,t,u?"field":void 0,u,r.geometryType,i)}async function je(e){const{renderer:i,view:r,signal:a,filter:o,creatorParameters:n}=await ve(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t}=n,[u,d,m]=await Promise.all([Ve(e),s?v({layer:l,view:r,signal:a,filter:o}).catch(M):null,t?h({layer:l,view:r,signal:a,filter:o}).catch(M):null]);return w(i,u.visualVariable,b),w(i,d?.visualVariables,g),w(i,m?.minSize,T),i.authoringInfo=u.authoringInfo.clone(),{renderer:i}}async function Be(e){const i=await ue(e);return Se(i,await j(de(i),i.outlineOptimizationEnabled))}async function Oe(e){const{renderer:i,creatorParameters:r}=await he(e),{normalizationType:a,outlineOptimizationEnabled:n,classificationMethod:l}=r,{result:s,outlineResult:t}=await j(de(r),n),u=s.classBreakInfos;if(r.numClasses!==u.length)throw new o("regenerate-color-class-breaks-renderer:insufficient-info","The number of class breaks generated does not match the number of class breaks in the renderer.");return i.classBreakInfos.forEach(((e,i)=>{e.minValue=u[i].minValue,e.maxValue=u[i].maxValue,e.label=u[i].label})),i.normalizationTotal="percent-of-total"===a?s.normalizationTotal:void 0,"standard-deviation"!==l&&d({classBreakInfos:i.classBreakInfos,classificationMethod:l,normalizationType:a,round:!0}),w(i,t?.visualVariables,g),{renderer:i}}function ke(i){return me(i).then((i=>({renderer:new e({field:"RGB",pointsPerInch:i.density??void 0,pointSizeAlgorithm:B(i.size)})})))}async function Re(e){const r=await ce(e),a=r.statistics??await S({layer:r.layer,field:r.field,signal:r.signal}),o=await ge(a,r);return{renderer:new i({field:r.field,pointsPerInch:r.density??void 0,pointSizeAlgorithm:B(r.size),stops:o.stops}),basemapId:o.basemapId,basemapTheme:o.basemapTheme,statistics:o.statistics,defaultValuesUsed:o.defaultValuesUsed,colorScheme:o.colorScheme}}async function Ce(e){const i=await fe(e),{defaultSymbolEnabled:r,view:a,startTime:o,endTime:n,symbolType:l,colorMixMode:s,edgesType:t,minValue:u,maxValue:d,signal:m,filter:c}=i,p=i.layer,[f,w,b]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:y({view:a,layer:p,startTime:o,endTime:n,minValue:u,maxValue:d,signal:m,filter:c}),i.outlineOptimizationEnabled?v({layer:p,view:a,signal:m,filter:c}).catch(M):null,i.sizeOptimizationEnabled?h({layer:p,view:a,signal:m,filter:c}).catch(M):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:E}=await O(i,g),z=await ze(pe({layer:p,basemap:i.basemap,valueExpression:x,symbolType:l,statistics:T,legendOptions:{title:E},colorScheme:i.colorScheme,theme:i.theme,view:a,minValue:i.minValue,maxValue:i.maxValue,filter:c,signal:m})),V={layer:p,valueExpression:x,defaultSymbolEnabled:r,symbolType:l,colorMixMode:s,edgesType:t},I=await Ee(z,w,b,null,null,p.geometryType,V),S=I.renderer.authoringInfo?.visualVariables;return S?.forEach((e=>k(e,o,n,g))),{...I,unit:g}}async function Fe(e){const{renderer:i,creatorParameters:r}=await we(e),{layer:a,outlineOptimizationEnabled:o,sizeOptimizationEnabled:n,startTime:l,endTime:s,theme:t,view:u,signal:d,filter:m}=r,[c,p,f]=await Promise.all([y({view:u,layer:a,startTime:l,endTime:s,signal:d,filter:m}),o?v({layer:a,view:u,signal:d,filter:m}).catch(M):null,n?h({layer:a,view:u,signal:d,filter:m}).catch(M):null]),{unit:x,statistics:E}=c,{valueExpression:z,title:V}=await O(r,x),I=await ze(pe({layer:a,valueExpression:z,statistics:E,legendOptions:{title:V},theme:t,view:u,filter:m,signal:d}));w(i,I.visualVariable,b),w(i,p?.visualVariables,g),w(i,f?.minSize,T),i.authoringInfo=I.authoringInfo.clone();const S=i.authoringInfo?.visualVariables;return S?.forEach((e=>k(e,l,s,x))),{renderer:i}}export{Ce as createAgeRenderer,Be as createClassBreaksRenderer,Me as createContinuousRenderer,Re as createPCContinuousRenderer,ke as createPCTrueColorRenderer,ze as createVisualVariable,Fe as regenerateAgeRenderer,Oe as regenerateClassBreaksRenderer,je as regenerateContinuousRenderer,Ve as regenerateVisualVariable};
5
+ import"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import e from"../../renderers/PointCloudRGBRenderer.js";import i from"../../renderers/PointCloudStretchRenderer.js";import"../../renderers/PointCloudUniqueValueRenderer.js";import r from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import{createUniqueColors as a}from"../../core/colorUtils.js";import o from"../../core/Error.js";import{clone as n}from"../../core/lang.js";import{ensureClass as l}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as s}from"../../intl/messages.js";import t from"../../renderers/support/AuthoringInfo.js";import u from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as d,createColorStops as m}from"../../renderers/support/utils.js";import c from"../../renderers/visualVariables/ColorVariable.js";import p from"../../renderers/visualVariables/support/ColorStop.js";import f from"../../renderers/visualVariables/support/VisualVariableLegendOptions.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import h from"../heuristics/sizeRange.js";import{spliceVisualVariables as w,findColorVVIndex as b,findOutlineVVIndex as g,findScaleDependentSizeVVIndex as T,updateAuthoringInfoVisualVariable as x,processRegenerateParams as z,getRendererToUpdate as E,getStyleType as V,hasOutlineVV as I,hasScaleDependentSizeVV as S}from"./support/regenerateUtils.js";import{getSummaryStatistics as M,errorCallback as j,getClassBreaks as B,getPointSizeAlgorithm as O,getTitleAndExpressionForAgeRenderer as k,updateAgeRendererAuthoringInfoVV as C,verifyBasicFieldValidity as F,isValidPointSize as R,getDefaultDataRange as q,createDefaultStopValues as U,createStopValues as P,getDataRange as D,createDataValues as L,createSymbol as $,getSymbolSizeFromScheme as A,getSymbolOutlineFromScheme as G,getBasemapInfo as W}from"./support/utils.js";import{verifyDates as H,supportedAgeUnits as J}from"../statistics/support/ageUtils.js";import{verifyBinningParams as K}from"../support/binningUtils.js";import{isAnyDateField as N,getFieldsList as Q,getNormalizationType as X}from"../support/utils.js";import{binningCapableLayerTypes as Y,featureCapableLayerTypes as Z,createLayerAdapter as _,getLayerTypeLabels as ee,LayerType as ie}from"../support/adapters/support/layerUtils.js";import{cloneScheme as re,getSchemes as ae,getSchemeById as oe}from"../symbology/color.js";const ne="high-to-low",le=2**53-1,se=5;async function te(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new o("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new o("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-visual-variable");const i={...e},r=e.forBinning?Y:Z,a=_(i.layer,r,e.forBinning);if(!a)throw new o("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=i.signal?{signal:i.signal}:null;await a.load(n);if("mesh"!==a.geometryType&&i.worldScale&&(!i.view||"3d"!==i.view.type))throw new o("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const l=await Q({field:i.field,normalizationField:i.normalizationField,valueExpression:i.valueExpression}),s=F(a,l,"color-visual-variable:invalid-parameters");if(s)throw s;return{...i,layer:a}}async function ue(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new o("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new o("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-continuous-renderer");const i={...e};i.symbolType=i.symbolType||"2d",i.defaultSymbolEnabled??=!0;const r=e.forBinning?Y:Z,a=_(i.layer,r,e.forBinning);if(!a)throw new o("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=i.signal?{signal:i.signal}:null;await a.load(n);const l=a.geometryType;if(i.outlineOptimizationEnabled="polygon"===l&&i.outlineOptimizationEnabled,i.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&i.sizeOptimizationEnabled,"mesh"===l)i.symbolType="3d-volumetric",i.colorMixMode=i.colorMixMode||"replace",i.edgesType=i.edgesType||"none";else{if("3d-volumetric-uniform"===i.symbolType&&"point"!==l)throw new o("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(i.symbolType.includes("3d-volumetric")&&(!i.view||"3d"!==i.view.type))throw new o("color-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await Q({field:i.field,normalizationField:i.normalizationField,valueExpression:i.valueExpression}),t=F(a,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return{...i,layer:a}}async function de(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new o("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new o("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-class-breaks-renderer");const i={...e};i.symbolType=i.symbolType||"2d",i.defaultSymbolEnabled??=!0,i.classificationMethod??="equal-interval",i.normalizationType=X(i);const r=e.forBinning?Y:Z,a=_(i.layer,r,e.forBinning);if(!a)throw new o("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(!(null!=i.minValue&&null!=i.maxValue)&&(null!=i.minValue||null!=i.maxValue))throw new o("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=null!=i.signal?{signal:i.signal}:null;await a.load(n);const l=a.geometryType;if(i.outlineOptimizationEnabled="polygon"===l&&i.outlineOptimizationEnabled,"mesh"===l)i.symbolType="3d-volumetric",i.colorMixMode=i.colorMixMode||"replace",i.edgesType=i.edgesType||"none";else{if("3d-volumetric-uniform"===i.symbolType&&"point"!==l)throw new o("color-class-breaks-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(i.symbolType.includes("3d-volumetric")&&(!i.view||"3d"!==i.view.type))throw new o("color-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await Q({field:i.field,normalizationField:i.normalizationField}),t=F(a,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return{...i,layer:a}}function me(e){const i={...e};delete i.basemap,delete i.colorScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}async function ce(e){if(!e?.layer)throw new o("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const i={...e,layer:e.layer},r=[ie.PointCloudLayer],a=_(i.layer,r);if(!a)throw new o("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(i.layer=a,i.density=i.density||25,i.size=i.size||"100%",!R(i.size))throw new o("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=i.signal?{signal:i.signal}:null;return await a.load(n),i}async function pe(e){if(!e?.layer||!e.field)throw new o("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const i=e.field.toLowerCase();if("intensity"!==i&&"elevation"!==i)throw new o("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const r={...e,layer:e.layer,field:e.field},a=[ie.PointCloudLayer],n=_(r.layer,a);if(!n)throw new o("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(a).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!R(r.size))throw new o("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const l=null!=r.signal?{signal:r.signal}:null;return await n.load(l),r}function fe(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const a=i;return a.worldScale=r,a}async function ye(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new o("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const i={...e};i.symbolType=i.symbolType||"2d",i.defaultSymbolEnabled??=!0;const r=_(i.layer,Z);if(!r)throw new o("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+ee(Z).join(", "));const a=null!=i.signal?{signal:i.signal}:null;await r.load(a);const n=r.geometryType;if(i.outlineOptimizationEnabled="polygon"===n&&i.outlineOptimizationEnabled,i.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&i.sizeOptimizationEnabled,"mesh"===n)i.symbolType="3d-volumetric",i.colorMixMode=i.colorMixMode||"replace",i.edgesType=i.edgesType||"none";else if("3d-volumetric-uniform"===i.symbolType&&"point"!==n)throw new o("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(i.symbolType.includes("3d-volumetric")&&(!i.view||"3d"!==i.view.type))throw new o("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const l=H(r,i.startTime,i.endTime,"color-age-renderer:invalid-parameters");if(l)throw l;if(i.unit&&!J.includes(i.unit))throw new o("color-age-renderer:invalid-unit",`Supported units are: ${J.join(", ")}`);return{...i,layer:r}}async function ve(e){const i="regenerate-color-visual-variable";await z(e,i);const r=await E(e);if("class-breaks"!==r?.type)throw new o(`${i}:invalid-parameters`,"Renderer must be a ClassBreaksRenderer to regenerate a color visual variable");const a=r.authoringInfo,n=a?.visualVariables.find((e=>"color"===e.type)),l=r.visualVariables?.find((e=>"color"===e.type));if(!l)throw new o(`${i}:invalid-parameters`,"Renderer does not have a color visual variable");const{field:s,normalizationField:t,valueExpression:u,valueExpressionTitle:d}=l,m="univariate-color-size"===a?.type?a?.univariateTheme:n?.theme,{layer:c,forBinning:p,filter:f,view:y,signal:v}=e,h=await te({layer:c,field:s,valueExpression:u,valueExpressionTitle:d,normalizationField:t,theme:m,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:r}}async function he(e){const i="regenerate-color-continuous-renderer";await z(e,i);const r=await E(e),a=V(r);if(!a||!["color-continuous","color-size"].includes(a))throw new o(`${i}:invalid-renderer`,"Renderer is invalid");const{authoringInfo:n,field:l,normalizationField:s,valueExpression:t,valueExpressionTitle:u}=r,d=n?.visualVariables.find((e=>"color"===e.type)),m=d?.theme,{layer:c,forBinning:p,filter:f,view:y,signal:v}=e,h=I(r),w=S(r),b=await ue({layer:c,field:l,valueExpression:t,valueExpressionTitle:u,normalizationField:s,theme:m,outlineOptimizationEnabled:h,sizeOptimizationEnabled:w,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:b,renderer:r}}async function we(e){const i="regenerate-color-class-breaks-renderer";await z(e,i);const r=await E(e);if("color-class-breaks"!==V(r))throw new o(`${i}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:a,field:n,normalizationField:l,normalizationType:s,normalizationTotal:t,valueExpression:u,valueExpressionTitle:d}=r,{classificationMethod:m,standardDeviationInterval:c}=a,p=r.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:h,signal:w}=e,b=I(r),g=await de({layer:f,field:n,valueExpression:u,valueExpressionTitle:d,normalizationType:s,normalizationField:l,normalizationTotal:t,classificationMethod:m,standardDeviationInterval:c,numClasses:p,outlineOptimizationEnabled:b,forBinning:y,filter:v,view:h,signal:w});return{...e,creatorParameters:g,renderer:r}}async function be(e){const i="regenerate-color-age-renderer";await z(e,i);const r=await E(e);if("color-age"!==V(r))throw new o(`${i}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:a}=r,n=a?.visualVariables.find((e=>"color"===e.type)),l=n.startTime,s=n.endTime,t=n.units,u=n.theme,{layer:d,filter:m,view:c,signal:p}=e,f=I(r),y=S(r),v=await ye({layer:d,startTime:l,endTime:s,unit:t,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:m,view:c,signal:p});return{...e,creatorParameters:v,renderer:r}}async function ge(e,i){let r=e.colorScheme,a=null,o=null;const{view:n}=e,l=await W(e.basemap,n);if(a=null!=l.basemapId?l.basemapId:null,o=null!=l.basemapTheme?l.basemapTheme:null,r)return{scheme:re(r),basemapId:a,basemapTheme:o};const s=e.theme||ne,t=ae({theme:s,basemapTheme:o,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(a=t.basemapId,o=t.basemapTheme,e.schemeId){const i=s+"/"+a+"/"+e.schemeId;r=oe({id:i,geometryType:e.geometryType})}else r=t.primaryScheme;return{scheme:r,basemapId:a,basemapTheme:o}}async function Te(e,i){const r=i.layer,n=await ge({basemap:i.basemap,colorScheme:i.colorScheme,geometryType:r.geometryType,schemeId:"elevation"===i.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),l=n.scheme;if(!l)throw new o("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const s=a(l.colors,se);if(s.length<se)throw new o("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=q(e,!1,!0),u=t?U(t[0],t[1],5):P(e);return{stops:m({values:u,isDate:!1,colors:s,labelIndexes:[0,2,4]}),basemapId:n.basemapId,basemapTheme:n.basemapTheme,statistics:e,defaultValuesUsed:!!t,colorScheme:re(l)}}function xe(e,i,r,a){const o=D(e,i,r,!0);return{values:L(o,e,i,a),defaultValuesUsed:o.defaultValuesUsed}}async function ze(e,i,r,n){const{field:s,theme:d}=e,m=await ge({basemap:e.basemap,theme:e.theme,geometryType:r,colorScheme:e.colorScheme,worldScale:e.worldScale,view:e.view}),y=m.scheme;if(!y)throw new o("color-visual-variable:insufficient-info","Unable to find color scheme");const v=a(y.colors,se);if(v.length<se)throw new o("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const h=y.id.includes("seq-"),{values:w,defaultValuesUsed:b}=xe(i,d,n,h),g=a(v,se),T=new c({field:s??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationField:e.normalizationField,stops:w.map(((e,i)=>new p({value:e,color:g[i]}))),legendOptions:l(f,e.legendOptions)}),x=new u({type:"color",minSliderValue:null!=e.minValue?e.minValue:i.min,maxSliderValue:null!=e.maxValue?e.maxValue:i.max,theme:y.theme}),z=new t({visualVariables:[x]});return{basemapId:m.basemapId,basemapTheme:m.basemapTheme,visualVariable:T,statistics:i,defaultValuesUsed:b,colorScheme:re(y),authoringInfo:z}}async function Ee(e,i,a,o,n,l,t){const u=await s("esri/smartMapping/t9n/smartMapping"),{field:d,defaultSymbolEnabled:m}=t,c=re(e.colorScheme),p=i?.opacity,f=[e.visualVariable.clone()];i?.visualVariables?.length&&f.push(...i.visualVariables.map((e=>e.clone()))),a?.minSize&&f.push(a.minSize);return{renderer:new r({classBreakInfos:[{minValue:-le,maxValue:le,symbol:$(l,{type:t.symbolType,color:c.noDataColor,size:A(c,l),outline:G(c,l,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:m?u.other:null,defaultSymbol:m?$(l,{type:t.symbolType,color:c.noDataColor,size:A(c,l),outline:G(c,l,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:d,normalizationType:o,normalizationField:n,valueExpression:t.valueExpression,valueExpressionTitle:t.valueExpressionTitle,visualVariables:f,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:re(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function Ve(e){const i=await te(e),{view:r,field:a,valueExpression:o,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:u,filter:d,statistics:m}=i,c=t?"field":void 0,p=await(m??M({layer:s,field:a,valueExpression:o,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:c,normalizationField:t,minValue:n,maxValue:l,filter:d,view:r,signal:u})),f=s,y=a&&"function"!=typeof a?f.getField(a):null;return ze(i,p,f.geometryType,N(y))}async function Ie(e){const{view:i,filter:r,creatorParameters:a,renderer:n,signal:l}=await ve(e),s=n.authoringInfo?.clone(),t=s?.visualVariables.find((e=>"color"===e.type)),u=n.visualVariables?.find((e=>"color"===e.type)),{field:d,normalizationField:m,valueExpression:c,theme:p,layer:f}=a,y=await M({layer:f,field:d,valueExpression:c,normalizationField:m,filter:r,view:i,signal:l}),v=d&&"function"!=typeof d?f.getField(d):null,{values:h}=xe(y,p,N(v),"high-to-low"===p);if(h.length!==u.stops.length)throw new o("regenerate-color-visual-variable:invalid-parameters","Visual variable is invalid");return u.stops.forEach(((e,i)=>e.value=h[i])),t&&(t.minSliderValue=y.min,t.maxSliderValue=y.max),{visualVariable:u,authoringInfo:s,statistics:y}}function Se(e,i){const r=e.colorsForClassBreaks;if(r?.length)for(const a of r)if(a.numClasses===i)return n(a.colors);return a(e.colors,i)}async function Me(e,i){const a=await s("esri/smartMapping/t9n/smartMapping"),n=e.layer,l=e.defaultSymbolEnabled,u=n.geometryType,m=e.classificationMethod,c="standard-deviation"===m,p=await ge({basemap:e.basemap,geometryType:u,theme:c?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),f=p.scheme,{result:y,outlineResult:v}=i,h=y.classBreakInfos,w=e.normalizationType;if(!f)throw new o("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const b=Se(f,h.length);if(!b||b.length!==h.length)throw new o("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=v?.opacity,T=new r({classBreakInfos:h.map(((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:$(u,{type:e.symbolType,color:b[r],size:A(f,u),outline:G(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label}))),defaultLabel:l?a.other:null,defaultSymbol:l?$(u,{type:e.symbolType,color:f.noDataColor,size:A(f,u),outline:G(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?y.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new t({type:"class-breaks-color",classificationMethod:m,standardDeviationInterval:e.standardDeviationInterval})});return c||d({classBreakInfos:T.classBreakInfos,classificationMethod:m,normalizationType:w,round:!0}),v?.visualVariables?.length&&(T.visualVariables=v.visualVariables.map((e=>e.clone()))),{renderer:T,colorScheme:re(f),classBreaksResult:y,defaultValuesUsed:i.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function je(e){const i=await ue(e),{layer:r,view:a,signal:o,filter:n}=i,[l,s,t]=await Promise.all([Ve(fe(i)),i.outlineOptimizationEnabled?v({layer:r,view:a,signal:o,filter:n}).catch(j):null,i.sizeOptimizationEnabled?h({layer:r,view:a,signal:o,filter:n}).catch(j):null]),u=i.normalizationField;return Ee(l,s,t,u?"field":void 0,u,r.geometryType,i)}async function Be(e){const{renderer:i,view:r,signal:a,filter:o,creatorParameters:n}=await he(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t}=n,[u,d,m]=await Promise.all([Ie(e),s?v({layer:l,view:r,signal:a,filter:o}).catch(j):null,t?h({layer:l,view:r,signal:a,filter:o}).catch(j):null]);return w(i,u.visualVariable,b),w(i,d?.visualVariables,g),w(i,m?.minSize,T),x(i,u.authoringInfo,"color"),{renderer:i}}async function Oe(e){const i=await de(e);return Me(i,await B(me(i),i.outlineOptimizationEnabled))}async function ke(e){const{renderer:i,creatorParameters:r}=await we(e),{normalizationType:a,outlineOptimizationEnabled:n,classificationMethod:l}=r,{result:s,outlineResult:t}=await B(me(r),n),u=s.classBreakInfos;if(r.numClasses!==u.length)throw new o("regenerate-color-class-breaks-renderer:insufficient-info","The number of class breaks generated does not match the number of class breaks in the renderer.");return i.classBreakInfos.forEach(((e,i)=>{e.minValue=u[i].minValue,e.maxValue=u[i].maxValue,e.label=u[i].label})),i.normalizationTotal="percent-of-total"===a?s.normalizationTotal:void 0,"standard-deviation"!==l&&d({classBreakInfos:i.classBreakInfos,classificationMethod:l,normalizationType:a,round:!0}),w(i,t?.visualVariables,g),{renderer:i}}function Ce(i){return ce(i).then((i=>({renderer:new e({field:"RGB",pointsPerInch:i.density??void 0,pointSizeAlgorithm:O(i.size)})})))}async function Fe(e){const r=await pe(e),a=r.statistics??await M({layer:r.layer,field:r.field,signal:r.signal}),o=await Te(a,r);return{renderer:new i({field:r.field,pointsPerInch:r.density??void 0,pointSizeAlgorithm:O(r.size),stops:o.stops}),basemapId:o.basemapId,basemapTheme:o.basemapTheme,statistics:o.statistics,defaultValuesUsed:o.defaultValuesUsed,colorScheme:o.colorScheme}}async function Re(e){const i=await ye(e),{defaultSymbolEnabled:r,view:a,startTime:o,endTime:n,symbolType:l,colorMixMode:s,edgesType:t,minValue:u,maxValue:d,signal:m,filter:c}=i,p=i.layer,[f,w,b]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:y({view:a,layer:p,startTime:o,endTime:n,minValue:u,maxValue:d,signal:m,filter:c}),i.outlineOptimizationEnabled?v({layer:p,view:a,signal:m,filter:c}).catch(j):null,i.sizeOptimizationEnabled?h({layer:p,view:a,signal:m,filter:c}).catch(j):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:z}=await k(i,g),E=await Ve(fe({layer:p,basemap:i.basemap,valueExpression:x,symbolType:l,statistics:T,legendOptions:{title:z},colorScheme:i.colorScheme,theme:i.theme,view:a,minValue:i.minValue,maxValue:i.maxValue,filter:c,signal:m})),V={layer:p,valueExpression:x,defaultSymbolEnabled:r,symbolType:l,colorMixMode:s,edgesType:t},I=await Ee(E,w,b,null,null,p.geometryType,V),S=I.renderer.authoringInfo?.visualVariables;return S?.forEach((e=>C(e,o,n,g))),{...I,unit:g}}async function qe(e){const{renderer:i,creatorParameters:r}=await be(e),{layer:a,outlineOptimizationEnabled:o,sizeOptimizationEnabled:n,startTime:l,endTime:s,theme:t,view:u,signal:d,filter:m}=r,[c,p,f]=await Promise.all([y({view:u,layer:a,startTime:l,endTime:s,signal:d,filter:m}),o?v({layer:a,view:u,signal:d,filter:m}).catch(j):null,n?h({layer:a,view:u,signal:d,filter:m}).catch(j):null]),{unit:x,statistics:z}=c,{valueExpression:E,title:V}=await k(r,x),I=await Ve(fe({layer:a,valueExpression:E,statistics:z,legendOptions:{title:V},theme:t,view:u,filter:m,signal:d}));w(i,I.visualVariable,b),w(i,p?.visualVariables,g),w(i,f?.minSize,T),i.authoringInfo=I.authoringInfo.clone();const S=i.authoringInfo?.visualVariables;return S?.forEach((e=>C(e,l,s,x))),{renderer:i}}export{Re as createAgeRenderer,Oe as createClassBreaksRenderer,je as createContinuousRenderer,Fe as createPCContinuousRenderer,Ce as createPCTrueColorRenderer,Ve as createVisualVariable,qe as regenerateAgeRenderer,ke as regenerateClassBreaksRenderer,Be as regenerateContinuousRenderer,Ie as regenerateVisualVariable};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import e from"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import{createUniqueColors as r}from"../../core/colorUtils.js";import t from"../../core/Error.js";import{getResolutionForScale as i}from"../../geometry/support/scaleUtils.js";import s from"../../renderers/support/AuthoringInfo.js";import a from"../heuristics/outline.js";import{roundValue as n}from"./support/dotDensityUtils.js";import{errorCallback as l,getSymbolOutlineFromScheme as o,verifyBasicFieldValidity as u,getBasemapInfo as m}from"./support/utils.js";import d from"../statistics/spatialStatistics.js";import p from"../statistics/summaryStatisticsForAttributes.js";import c from"../statistics/support/attributeDensity.js";import{verifyBinningParams as f}from"../support/binningUtils.js";import{getFieldsList as y}from"../support/utils.js";import{LayerType as b,binningCapableLayerTypes as g,createLayerAdapter as w,getLayerTypeLabels as h}from"../support/adapters/support/layerUtils.js";import{cloneScheme as v,getSchemes as S}from"../symbology/dotDensity.js";const j=500;async function V(e){const r=e.view;if(!(e?.layer&&r&&e.attributes?.length))throw new t("dot-density-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>8)throw new t("dot-density-renderer:invalid-parameters","Dot density renderer does not support more than 8 attributes");e.forBinning&&f(e,"dot-density-renderer");const i={...e,view:r,layer:e.layer,attributes:e.attributes},s=[b.FeatureLayer,b.OGCFeatureLayer,b.GeoJSONLayer,b.WFSLayer],a=e.forBinning?g:s,n=w(i.layer,a,e.forBinning);if(!n)throw new t("dot-density-renderer:invalid-parameters","'layer' must be one of these types: "+h(a).join(", "));i.layer=n,i.dotBlendingEnabled??=!0,i.dotValueOptimizationEnabled??=!0;const l=null!=i.signal?{signal:i.signal}:null;await Promise.all([r.when(),n.load(l)]);if("polygon"!==n.geometryType)throw new t("dot-density-renderer:not-supported","Dot density renderer is supported for polygon layers only");const o=[],m=i.attributes;for(const t of m){const e=await y({field:t.field,valueExpression:t.valueExpression});o.push(...e)}const d=u(n,o.filter(Boolean),"dot-density-renderer:invalid-parameters");if(d)throw d;return i}async function x(e){let r=e.dotDensityScheme,t=null,i=null;const s=await m(e.basemap,e.view);if(t=null!=s.basemapId?s.basemapId:null,i=null!=s.basemapTheme?s.basemapTheme:null,r)return{scheme:v(r),basemapId:t,basemapTheme:i};const a=S({numColors:e.attributes.length,basemapTheme:i});return a&&(r=a.primaryScheme,t=a.basemapId,i=a.basemapTheme),{scheme:r,basemapId:t,basemapTheme:i}}function E(e){return{dotValue:1,referenceScale:e.scale,minSliderValue:1,maxSliderValue:100}}async function D(e){const{view:r,layer:t,attributes:s,signal:a,filter:l}=e,o=await t.getSampleFeatures({view:r,sampleSize:j,returnGeometry:!0,filter:l,signal:a},"json"),[u,m]=await Promise.all([d({features:o,geometryType:t.geometryType}),p({layer:t,attributes:s,filter:l,includeZeros:!1,includeNegatives:!1,view:r,signal:a})]),c=null!=u&&"avgSize"in u&&u.avgSize,f=m.avg;if(!c||!f)return E(r);const y=i(r.scale,r.spatialReference);return{dotValue:n(f/(c*c/(y*y)*.1))||1,referenceScale:r.scale,minSliderValue:1,maxSliderValue:n(f)}}async function T(e){const{view:r,layer:t,attributes:s,signal:a,filter:l}=e,o=[];for(const i of s){const e=await y({field:i.field,valueExpression:i.valueExpression});o.push(...e)}const u=await t.getSampleFeatures({view:r,sampleSize:j,requiredFields:o,filter:l,returnGeometry:!0,signal:a},"json"),{minDensity:m,maxDensity:d,avgDensity:p}=await c({features:u,attributes:s,includeZeros:!1,includeNegatives:!1,view:r});if(!p||!m||!d)return E(r);const f=i(r.scale,r.spatialReference),b=f*f,g=n(m*b),w=n(d*b);let h=n(p*b*10)||1;return h>w&&(h=w),{dotValue:h,referenceScale:r.scale,minSliderValue:g,maxSliderValue:w}}async function R(i){const n=await V(i),u=n.layer,m=u.geometryType,d=await x(n),p=d?.scheme;if(!p)throw new t("dot-density-renderer:insufficient-info","Unable to find dot-density scheme");const c=n.view,f=n.filter,y={layer:u,view:c,filter:f,attributes:n.attributes,signal:n.signal},b={layer:n.layer,view:c,filter:f,signal:n.signal},[g,w]=await Promise.all([n.trueDensity?T(y):D(y),n.outlineOptimizationEnabled?a(b).catch(l):null]),{dotValue:h,referenceScale:v,minSliderValue:S,maxSliderValue:j}=g,E=r(p.colors,n.attributes.length),R=n.attributes.map(((e,r)=>({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:E[r]}))),I=new e({attributes:R,dotBlendingEnabled:n.dotBlendingEnabled,outline:w?o(p,m,w.opacity):null,dotValue:h,referenceScale:n.dotValueOptimizationEnabled?v:null,legendOptions:n.legendOptions});return w?.visualVariables.length&&(I.visualVariables=w.visualVariables.map((e=>e.clone()))),I.authoringInfo=new s({type:"dot-density",minSliderValue:S,maxSliderValue:j}),{renderer:I,dotDensityScheme:p,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}export{R as createRenderer};
5
+ import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import e from"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import{createUniqueColors as r}from"../../core/colorUtils.js";import t from"../../core/Error.js";import{getResolutionForScale as i}from"../../geometry/support/scaleUtils.js";import a from"../../renderers/support/AuthoringInfo.js";import n from"../heuristics/outline.js";import{roundValue as s}from"./support/dotDensityUtils.js";import{spliceVisualVariables as l,findOutlineVVIndex as o,processRegenerateParams as u,getRendererToUpdate as d,getStyleType as m,hasOutlineVV as p}from"./support/regenerateUtils.js";import{errorCallback as c,getSymbolOutlineFromScheme as f,verifyBasicFieldValidity as y,getBasemapInfo as b}from"./support/utils.js";import g from"../statistics/spatialStatistics.js";import w from"../statistics/summaryStatisticsForAttributes.js";import v from"../statistics/support/attributeDensity.js";import{verifyBinningParams as h}from"../support/binningUtils.js";import{getFieldsList as S}from"../support/utils.js";import{LayerType as V,binningCapableLayerTypes as j,createLayerAdapter as E,getLayerTypeLabels as x}from"../support/adapters/support/layerUtils.js";import{cloneScheme as T,getSchemes as D}from"../symbology/dotDensity.js";const I=500;async function z(e){const r=e.view;if(!(e?.layer&&r&&e.attributes?.length))throw new t("dot-density-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>8)throw new t("dot-density-renderer:invalid-parameters","Dot density renderer does not support more than 8 attributes");e.forBinning&&h(e,"dot-density-renderer");const i={...e,view:r,layer:e.layer,attributes:e.attributes},a=[V.FeatureLayer,V.OGCFeatureLayer,V.GeoJSONLayer,V.WFSLayer],n=e.forBinning?j:a,s=E(i.layer,n,e.forBinning);if(!s)throw new t("dot-density-renderer:invalid-parameters","'layer' must be one of these types: "+x(n).join(", "));i.dotBlendingEnabled??=!0,i.dotValueOptimizationEnabled??=!0;const l=null!=i.signal?{signal:i.signal}:null;await Promise.all([r.when(),s.load(l)]);if("polygon"!==s.geometryType)throw new t("dot-density-renderer:not-supported","Dot density renderer is supported for polygon layers only");const o=[],u=i.attributes;for(const t of u){const e=await S({field:t.field,valueExpression:t.valueExpression});o.push(...e)}const d=y(s,o.filter(Boolean),"dot-density-renderer:invalid-parameters");if(d)throw d;return{...i,layer:s}}async function O(e){const r="regenerate-dot-density-renderer";await u(e,r);const i=await d(e);if("dot-density"!==m(i))throw new t(`${r}:invalid-parameters`,"Renderer is invalid");const{layer:a,forBinning:n,filter:s,view:l,signal:o}=e,c=p(i),f=i.attributes.map((e=>({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle}))),y=await z({layer:a,attributes:f,dotValueOptimizationEnabled:null!=i.referenceScale,outlineOptimizationEnabled:c,forBinning:n,filter:s,view:l,signal:o});return{...e,creatorParameters:y,renderer:i}}async function R(e){let r=e.dotDensityScheme,t=null,i=null;const a=await b(e.basemap,e.view);if(t=null!=a.basemapId?a.basemapId:null,i=null!=a.basemapTheme?a.basemapTheme:null,r)return{scheme:T(r),basemapId:t,basemapTheme:i};const n=D({numColors:e.attributes.length,basemapTheme:i});return n&&(r=n.primaryScheme,t=n.basemapId,i=n.basemapTheme),{scheme:r,basemapId:t,basemapTheme:i}}function B(e){return{dotValue:1,referenceScale:e.scale,minSliderValue:1,maxSliderValue:100}}async function U(e){const{view:r,layer:t,attributes:a,signal:n,filter:l}=e,o=await t.getSampleFeatures({view:r,sampleSize:I,returnGeometry:!0,filter:l,signal:n},"json"),[u,d]=await Promise.all([g({features:o,geometryType:t.geometryType}),w({layer:t,attributes:a,filter:l,includeZeros:!1,includeNegatives:!1,view:r,signal:n})]),m=null!=u&&"avgSize"in u&&u.avgSize,p=d.avg;if(!m||!p)return B(r);const c=i(r.scale,r.spatialReference);return{dotValue:s(p/(m*m/(c*c)*.1))||1,referenceScale:r.scale,minSliderValue:1,maxSliderValue:s(p)}}async function F(e){const{view:r,layer:t,attributes:a,signal:n,filter:l}=e,o=[];for(const i of a){const e=await S({field:i.field,valueExpression:i.valueExpression});o.push(...e)}const u=await t.getSampleFeatures({view:r,sampleSize:I,requiredFields:o,filter:l,returnGeometry:!0,signal:n},"json"),{minDensity:d,maxDensity:m,avgDensity:p}=await v({features:u,attributes:a,includeZeros:!1,includeNegatives:!1,view:r});if(!p||!d||!m)return B(r);const c=i(r.scale,r.spatialReference),f=c*c,y=s(d*f),b=s(m*f);let g=s(p*f*10)||1;return g>b&&(g=b),{dotValue:g,referenceScale:r.scale,minSliderValue:y,maxSliderValue:b}}async function P(i){const s=await z(i),l=s.layer,o=l.geometryType,u=await R(s),d=u?.scheme;if(!d)throw new t("dot-density-renderer:insufficient-info","Unable to find dot-density scheme");const m=s.view,p=s.filter,y={layer:l,view:m,filter:p,attributes:s.attributes,signal:s.signal},b={layer:s.layer,view:m,filter:p,signal:s.signal},[g,w]=await Promise.all([s.trueDensity?F(y):U(y),s.outlineOptimizationEnabled?n(b).catch(c):null]),{dotValue:v,referenceScale:h,minSliderValue:S,maxSliderValue:V}=g,j=r(d.colors,s.attributes.length),E=s.attributes.map(((e,r)=>({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:j[r]}))),x=new e({attributes:E,dotBlendingEnabled:s.dotBlendingEnabled,outline:w?f(d,o,w.opacity):null,dotValue:v,referenceScale:s.dotValueOptimizationEnabled?h:null,legendOptions:s.legendOptions});return w?.visualVariables.length&&(x.visualVariables=w.visualVariables.map((e=>e.clone()))),x.authoringInfo=new a({type:"dot-density",minSliderValue:S,maxSliderValue:V}),{renderer:x,dotDensityScheme:d,basemapId:u.basemapId,basemapTheme:u.basemapTheme}}async function L(e){const{creatorParameters:r,renderer:t}=await O(e),{layer:i,attributes:a,outlineOptimizationEnabled:s,view:u,signal:d,filter:m}=r,p={layer:i,view:u,filter:m,attributes:a,signal:d},[f,y]=await Promise.all([r.trueDensity?F(p):U(p),s?n({layer:i,view:u,signal:d,filter:m}).catch(c):null]),{dotValue:b,referenceScale:g,minSliderValue:w,maxSliderValue:v}=f;return t.dotValue=b,t.referenceScale=r.dotValueOptimizationEnabled?g:null,t.authoringInfo&&(t.authoringInfo.minSliderValue=w,t.authoringInfo.maxSliderValue=v),l(t,y?.visualVariables,o),{renderer:t}}export{P as createRenderer,L as regenerateRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import r from"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import"../../symbols.js";import{isSome as a}from"../../core/arrayUtils.js";import{createUniqueColors as t}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as n}from"../../core/screenUtils.js";import{fetchMessageBundle as s}from"../../intl/messages.js";import o from"../../layers/support/AggregateField.js";import l from"../../layers/support/ExpressionInfo.js";import p from"../../renderers/support/AttributeColorInfo.js";import{OthersCategory as u}from"../../renderers/support/OthersCategory.js";import m from"../heuristics/outline.js";import c from"../heuristics/sizeRange.js";import{createVisualVariables as d}from"./size.js";import{errorCallback as f,createSymbol as h,getSymbolOutlineFromScheme as b,verifyBasicFieldValidity as y,getBasemapInfo as w}from"./support/utils.js";import g from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as v}from"../statistics/support/utils.js";import{verifyBinningParams as S}from"../support/binningUtils.js";import{getFieldsList as z}from"../support/utils.js";import{LayerType as E,binningCapableLayerTypes as j,createLayerAdapter as C,getLayerTypeLabels as x,getLayerTypes as V}from"../support/adapters/support/layerUtils.js";import{cloneScheme as $,getSchemes as T}from"../symbology/pieChart.js";import{getCIMSymbolColor as I}from"../../symbols/support/cimSymbolUtils.js";import k from"../../symbols/SimpleLineSymbol.js";const O=[E.CSVLayer,E.FeatureLayer,E.GeoJSONLayer,E.OGCFeatureLayer,E.OrientedImageryLayer,E.StreamLayer,E.WFSLayer];async function q(e){if(!(e?.layer&&e.view&&e.attributes?.length))throw new i("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new i("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");e.forBinning&&S(e,"pie-chart-renderer");const r={...e,layer:e.layer,view:e.view,attributes:e.attributes};r.shape=r.shape||"pie",r.othersCategoryEnabled??=!0,r.includeSizeVariable=e.includeSizeVariable||!1;const a=e.forBinning?j:O,t=C(r.layer,a,e.forBinning);if(!t)throw new i("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+x(a).join(", "));r.layer=t;const n=null!=r.signal?{signal:r.signal}:null;await Promise.all([e.view.when(),t.load(n)]);const s=t.geometryType,o="polygon"===s,l="point"===s||"multipoint"===s||o;if(r.outlineOptimizationEnabled=!!o&&r.outlineOptimizationEnabled,r.sizeOptimizationEnabled=!!l&&r.sizeOptimizationEnabled,!l)throw new i("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const p=[],u=r.attributes;for(const i of u){const e=await z({field:i.field,valueExpression:i.valueExpression});p.push(...e)}const m=y(t,p.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(m)throw m;return r}async function L(e){let r=e.pieChartScheme,a=null,t=null;const i=await w(e.basemap,e.view);if(a=null!=i.basemapId?i.basemapId:null,t=null!=i.basemapTheme?i.basemapTheme:null,r)return{scheme:$(r),basemapId:a,basemapTheme:t};const n=T({numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:t});return n&&(r=n.primaryScheme,a=n.basemapId,t=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:t}}async function B(e,r){const{valueExpression:a,sqlExpression:t,sqlWhere:i}=v(e.attributes),n=await s("esri/smartMapping/t9n/smartMapping");return d({layer:e.layer,basemap:e.basemap,valueExpression:a,sqlExpression:t,sqlWhere:i,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:n.sumOfCategories},view:e.view,signal:e.signal})}async function R(e){const[o,l]=await Promise.all([q(e),s("esri/smartMapping/t9n/smartMapping")]),d=await L(o),y=d?.scheme;if(!y)throw new i("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const w=o.layer,{includeSizeVariable:v,sizeOptimizationEnabled:S,outlineOptimizationEnabled:z,view:E,signal:j,filter:C}=o,x=y.sizeScheme,V=o.attributes,T=V.map((e=>e.field)).filter(a),[I,O,R,U]=await Promise.all([T.length>1?g({layer:w,fields:T,view:E,signal:j,filter:C}):null,v?B(o,x):null,!v&&S?c({layer:w,view:E,signal:j,filter:C}).catch(f):null,z?m({layer:w,view:E,signal:j,filter:C}).catch(f):null]),P=I?.predominantCategoryInfos?{uniqueValueInfos:I.predominantCategoryInfos}:{uniqueValueInfos:T.map((e=>({value:e,count:0})))},F=t(y.colors,V.length),M=V.map(((e,r)=>new p({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:F[r]}))),N=w.geometryType,_=null!=x&&"background"in x&&x.background,A=new r({attributes:M,othersCategory:new u({label:l.other,color:o.othersCategoryEnabled?y.colorForOthersCategory:null,threshold:.04}),holePercentage:"donut"===o.shape?.45:0,backgroundFillSymbol:_?h(N,{type:"2d",color:_.color,outline:b(_,N,U?.opacity)}):null,size:n(y.size),outline:new k(b(y,"point",U?.opacity)),legendOptions:o.legendOptions});if(O&&(S||O.visualVariables.forEach((e=>{"number"==typeof e.minSize&&"number"==typeof e.maxSize&&(e.minSize*=2.5,e.maxSize*=1.8)})),S&&"point"===N&&O.visualVariables.forEach((e=>{e?.minSize&&"object"==typeof e.minSize&&e.minSize?.stops?.forEach((e=>{e.size*=1.8}))})),A.authoringInfo=O.authoringInfo.clone(),A.visualVariables=O.visualVariables?.map((e=>e.clone()))),U?.visualVariables?.length){const e=U.visualVariables.map((e=>e.clone())).filter((e=>"color"!==e.type&&"rotation"!==e.type));A.visualVariables?A.visualVariables.push(...e):A.visualVariables=e}return R?.minSize&&("point"===N&&R.minSize.stops?.forEach((e=>{e.size*=2.5})),"polygon"===N&&R.minSize.stops?.forEach((e=>{e.size*=1.8})),A.visualVariables?A.visualVariables.push(R.minSize):A.visualVariables=[R.minSize]),{renderer:A,pieChartScheme:$(y),size:O,basemapId:d.basemapId,basemapTheme:d.basemapTheme,statistics:P}}const U=new Set(["unique-value","class-breaks"]),P=new e("#aaaaaa"),F=new e("#5c5c5c"),M=[new e("#e60049"),new e("#0bb4ff"),new e("#50e991"),new e("#e6d800"),new e("#9b19f5"),new e("#ffa300"),new e("#dc0ab4"),new e("#b3d4ff"),new e("#00bfa0"),new e("#f0cccc")];async function N(e){if(!e||!e.layer)throw new i("pie-chart-cluster-renderer:missing-parameters","'layer' parameter is required");const r={...e};r.shape=r.shape||"pie",r.defaultSymbolEnabled??=!0;const a=e.layer;if(!V(O).includes(a.type))throw new i("pie-chart-cluster-renderer:invalid-parameters","'layer' must be one of these types: "+x(O).join(", "));const t=null!=r.signal?{signal:r.signal}:null;await a.load(t);if(!("point"===a.geometryType))throw new i("pie-chart-cluster-renderer:invalid-parameters","Cluster renderers are only supported for point layers");const{renderer:n}=a;if(!n)throw new i("pie-chart-cluster-renderer:invalid-parameters","input layer does not have a renderer.");if(!U.has(n.type))throw new i("pie-chart-cluster-renderer:invalid-parameters",`Cannot create a pie chart renderer for clusters based on a ${n.type} renderer.`);if("valueExpression"in n&&n.valueExpression)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer whose renderer contains a valueExpression.");if("unique-value"===n.type){if(n.field2)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a UniqueValueRenderer using more than one field.");if(null!=n.uniqueValueInfos&&n.uniqueValueInfos.length>10)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer cannot be created from a UniqueValueRenderer with more than 10 unique value infos.")}if("class-breaks"===n.type){if(n.classBreakInfos.length<2)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer renderer with a continuous color or size gradient.");if(n.classBreakInfos.length>10)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with more than 10 class break infos.");if("class-breaks-size"===n?.authoringInfo?.type)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with breaks varied by size instead of color.")}return r}async function _(e){const a=await N(e),{layer:t,shape:i,defaultSymbolEnabled:n,legendOptions:o}=a,{renderer:l}=t,u=(await s("esri/smartMapping/t9n/smartMapping")).other;let m=[];"unique-value"===l?.type&&(m=A({renderer:l,defaultSymbolEnabled:n,defaultLabelBackup:u})),"class-breaks"===l?.type&&(m=D({renderer:l,defaultSymbolEnabled:n,defaultLabelBackup:u}));const c=[],d=[];for(const r of m){const{field:e,color:a}=r;c.push(e),d.push(new p({color:a,field:e.name,label:e.alias}))}return{fields:c,renderer:new r({attributes:d,legendOptions:o,holePercentage:"donut"===i?.45:0,outline:null,size:9,othersCategory:null})}}function A(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:i}=e,{field:n,defaultSymbol:s,defaultLabel:p}=r,u=r.uniqueValueInfos??[],m=s&&a,c=m?9:10,d=t(M,c),f=(n?u.slice(0,c).map(((e,r)=>{const a=e.label,t=d[r];return{field:new o({name:W(e.value?.toString()),alias:a,onStatisticExpression:new l({title:`Field definition - ${a}`,expression:H(n,e),returnType:"number"}),statisticType:"sum"}),color:G(e.symbol,t)}})):null)??[];if(m){const e="cluster_default",r=p||i;f.push({field:new o({name:W(e),alias:r,onStatisticExpression:new l({title:`Field definition - ${r}`,expression:J(n,u),returnType:"number"}),statisticType:"sum"}),color:G(s,F)})}return f}function D(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:i}=e,{field:n,classBreakInfos:s,defaultSymbol:p,defaultLabel:u}=r,m=p&&a,c=m?9:10,d=t(M,c),f=s.slice(0,c).map(((e,r)=>{const a=e.label||`${e.minValue} - ${e.maxValue}`,t=d[r];return{field:new o({name:W(a),alias:a,onStatisticExpression:new l({title:`Field definition - ${a}`,expression:Z(n,e),returnType:"number"}),statisticType:"sum"}),color:G(e.symbol,t)}}));if(m){const e="cluster_default",r=u||i;f.push({field:new o({name:W(e),alias:r,onStatisticExpression:new l({title:`Field definition - ${r}`,expression:K(n,s),returnType:"number"}),statisticType:"sum"}),color:G(p,F)})}return f}function W(e){return"SUM_"+(e+"").replaceAll(/[^a-zA-Z0-9_]/g,"_")}function G(e,r){if("simple-marker"===e?.type&&e.color)return e.color.clone();if("cim"===e?.type){const r=I(e);if(r)return r.clone()}return r?r.clone():P.clone()}function H(e,r){return`Number(Text($feature["${e}"]) == "${r.value+""}")`}function J(e,r){return`Number(!(${r.map((r=>`(Text($feature["${e}"]) == "${r.value+""}")`)).join(" || ")}))`}function Z(e,r){return`Number($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`}function K(e,r){return`Number(!(${r.map((r=>`($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`)).join(" || ")}))`}export{R as createRenderer,_ as createRendererForClustering};
5
+ import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import r from"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import"../../symbols.js";import{isSome as a}from"../../core/arrayUtils.js";import{createUniqueColors as i}from"../../core/colorUtils.js";import t from"../../core/Error.js";import{toPt as n}from"../../core/screenUtils.js";import{fetchMessageBundle as s}from"../../intl/messages.js";import l from"../../layers/support/AggregateField.js";import o from"../../layers/support/ExpressionInfo.js";import u from"../../renderers/support/AttributeColorInfo.js";import{OthersCategory as p}from"../../renderers/support/OthersCategory.js";import m from"../heuristics/outline.js";import c from"../heuristics/sizeRange.js";import{createVisualVariables as d}from"./size.js";import{spliceVisualVariables as f,findSizeVVIndex as b,updateAuthoringInfoVisualVariable as h,findOutlineVVIndex as y,findScaleDependentSizeVVIndex as w,processRegenerateParams as g,getRendererToUpdate as v,getStyleType as z,hasOutlineVV as S,hasScaleDependentSizeVV as E,isSizeVV as j}from"./support/regenerateUtils.js";import{errorCallback as V,createSymbol as x,getSymbolOutlineFromScheme as C,verifyBasicFieldValidity as T,getBasemapInfo as $}from"./support/utils.js";import I from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as O}from"../statistics/support/utils.js";import{verifyBinningParams as k}from"../support/binningUtils.js";import{getFieldsList as q}from"../support/utils.js";import{LayerType as B,binningCapableLayerTypes as L,createLayerAdapter as P,getLayerTypeLabels as R,getLayerTypes as U}from"../support/adapters/support/layerUtils.js";import{cloneScheme as F,getSchemes as M}from"../symbology/pieChart.js";import{getCIMSymbolColor as N}from"../../symbols/support/cimSymbolUtils.js";import _ from"../../symbols/SimpleLineSymbol.js";const A=[B.CSVLayer,B.FeatureLayer,B.GeoJSONLayer,B.OGCFeatureLayer,B.OrientedImageryLayer,B.StreamLayer,B.WFSLayer];async function D(e){if(!(e?.layer&&e.view&&e.attributes?.length))throw new t("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new t("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");e.forBinning&&k(e,"pie-chart-renderer");const r={...e,layer:e.layer,view:e.view,attributes:e.attributes};r.shape=r.shape||"pie",r.othersCategoryEnabled??=!0,r.includeSizeVariable=e.includeSizeVariable||!1;const a=e.forBinning?L:A,i=P(r.layer,a,e.forBinning);if(!i)throw new t("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+R(a).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await Promise.all([e.view.when(),i.load(n)]);const s=i.geometryType,l="polygon"===s,o="point"===s||"multipoint"===s||l;if(r.outlineOptimizationEnabled=!!l&&r.outlineOptimizationEnabled,r.sizeOptimizationEnabled=!!o&&r.sizeOptimizationEnabled,!o)throw new t("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const u=[],p=r.attributes;for(const t of p){const e=await q({field:t.field,valueExpression:t.valueExpression});u.push(...e)}const m=T(i,u.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(m)throw m;return{...r,layer:i}}async function W(e){const r="regenerate-pie-chart-renderer";await g(e,r);const a=await v(e);if("pie-chart"!==z(a))throw new t(`${r}:invalid-parameters`,"Renderer is invalid");const{visualVariables:i}=a,{layer:n,forBinning:s,filter:l,view:o,signal:u}=e,p=S(a),m=E(a),c=i?.some(j),d=a.attributes.map((e=>({field:e.field,label:e.label,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle}))),f=await D({layer:n,attributes:d,outlineOptimizationEnabled:p,sizeOptimizationEnabled:m,includeSizeVariable:c,forBinning:s,filter:l,view:o,signal:u});return{...e,creatorParameters:f,renderer:a}}async function G(e){let r=e.pieChartScheme,a=null,i=null;const t=await $(e.basemap,e.view);if(a=null!=t.basemapId?t.basemapId:null,i=null!=t.basemapTheme?t.basemapTheme:null,r)return{scheme:F(r),basemapId:a,basemapTheme:i};const n=M({numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:i});return n&&(r=n.primaryScheme,a=n.basemapId,i=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:i}}async function H(e,r){const{valueExpression:a,sqlExpression:i,sqlWhere:t}=O(e.attributes),n=await s("esri/smartMapping/t9n/smartMapping");return d({layer:e.layer,basemap:e.basemap,valueExpression:a,sqlExpression:i,sqlWhere:t,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:n.sumOfCategories},view:e.view,signal:e.signal})}async function J(e){const[l,o]=await Promise.all([D(e),s("esri/smartMapping/t9n/smartMapping")]),d=await G(l),f=d?.scheme;if(!f)throw new t("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const{layer:b,includeSizeVariable:h,sizeOptimizationEnabled:y,outlineOptimizationEnabled:w,view:g,signal:v,filter:z}=l,S=f.sizeScheme,E=l.attributes,j=E.map((e=>e.field)).filter(a),[T,$,O,k]=await Promise.all([j.length>1?I({layer:b,fields:j,view:g,signal:v,filter:z}):null,h?H(l,S):null,!h&&y?c({layer:b,view:g,signal:v,filter:z}).catch(V):null,w?m({layer:b,view:g,signal:v,filter:z}).catch(V):null]),q=T?.predominantCategoryInfos?{uniqueValueInfos:T.predominantCategoryInfos}:{uniqueValueInfos:j.map((e=>({value:e,count:0})))},B=i(f.colors,E.length),L=E.map(((e,r)=>new u({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:B[r]}))),P=b.geometryType,R=null!=S&&"background"in S&&S.background,U=new r({attributes:L,othersCategory:new p({label:o.other,color:l.othersCategoryEnabled?f.colorForOthersCategory:null,threshold:.04}),holePercentage:"donut"===l.shape?.45:0,backgroundFillSymbol:R?x(P,{type:"2d",color:R.color,outline:C(R,P,k?.opacity)}):null,size:n(f.size),outline:new _(C(f,"point",k?.opacity)),legendOptions:l.legendOptions});if($&&(K($,y,P),U.authoringInfo=$.authoringInfo.clone(),U.visualVariables=$.visualVariables?.map((e=>e.clone()))),k?.visualVariables?.length){const e=k.visualVariables.map((e=>e.clone())).filter((e=>"color"!==e.type&&"rotation"!==e.type));U.visualVariables?U.visualVariables.push(...e):U.visualVariables=e}return O?.minSize&&(Q(O,P),U.visualVariables?U.visualVariables.push(O.minSize):U.visualVariables=[O.minSize]),{renderer:U,pieChartScheme:F(f),size:$,basemapId:d.basemapId,basemapTheme:d.basemapTheme,statistics:q}}async function Z(e){const{creatorParameters:r,view:a,signal:i,filter:t,renderer:n}=await W(e),{layer:s,outlineOptimizationEnabled:l,includeSizeVariable:o,sizeOptimizationEnabled:u}=r,p=await G(r),d=p?.scheme?.sizeScheme,[g,v,z]=await Promise.all([l?m({layer:s,view:a,signal:i,filter:t}).catch(V):null,o?H(r,d):null,!o&&u?c({layer:s,view:a,signal:i,filter:t}).catch(V):null]),S=s.geometryType;if(v&&(K(v,u,S),f(n,v?.visualVariables,b),h(n,v?.authoringInfo,"size")),g?.visualVariables?.length){const e=g.visualVariables.map((e=>e.clone())).filter((e=>"color"!==e.type&&"rotation"!==e.type));f(n,e,y)}return z?.minSize&&(Q(z,S),f(n,z?.minSize,w)),{renderer:n}}function K(e,r,a){r||e.visualVariables.forEach((e=>{"number"==typeof e.minSize&&"number"==typeof e.maxSize&&(e.minSize*=2.5,e.maxSize*=1.8)})),r&&"point"===a&&e.visualVariables.forEach((e=>{e?.minSize&&"object"==typeof e.minSize&&e.minSize?.stops?.forEach((e=>{e.size*=1.8}))}))}function Q(e,r){"point"===r&&e.minSize.stops?.forEach((e=>{e.size*=2.5})),"polygon"===r&&e.minSize.stops?.forEach((e=>{e.size*=1.8}))}const X=new Set(["unique-value","class-breaks"]),Y=new e("#aaaaaa"),ee=new e("#5c5c5c"),re=[new e("#e60049"),new e("#0bb4ff"),new e("#50e991"),new e("#e6d800"),new e("#9b19f5"),new e("#ffa300"),new e("#dc0ab4"),new e("#b3d4ff"),new e("#00bfa0"),new e("#f0cccc")];async function ae(e){if(!e||!e.layer)throw new t("pie-chart-cluster-renderer:missing-parameters","'layer' parameter is required");const r={...e};r.shape=r.shape||"pie",r.defaultSymbolEnabled??=!0;const a=e.layer;if(!U(A).includes(a.type))throw new t("pie-chart-cluster-renderer:invalid-parameters","'layer' must be one of these types: "+R(A).join(", "));const i=null!=r.signal?{signal:r.signal}:null;await a.load(i);if(!("point"===a.geometryType))throw new t("pie-chart-cluster-renderer:invalid-parameters","Cluster renderers are only supported for point layers");const{renderer:n}=a;if(!n)throw new t("pie-chart-cluster-renderer:invalid-parameters","input layer does not have a renderer.");if(!X.has(n.type))throw new t("pie-chart-cluster-renderer:invalid-parameters",`Cannot create a pie chart renderer for clusters based on a ${n.type} renderer.`);if("valueExpression"in n&&n.valueExpression)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer whose renderer contains a valueExpression.");if("unique-value"===n.type){if(n.field2)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a UniqueValueRenderer using more than one field.");if(null!=n.uniqueValueInfos&&n.uniqueValueInfos.length>10)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer cannot be created from a UniqueValueRenderer with more than 10 unique value infos.")}if("class-breaks"===n.type){if(n.classBreakInfos.length<2)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer renderer with a continuous color or size gradient.");if(n.classBreakInfos.length>10)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with more than 10 class break infos.");if("class-breaks-size"===n?.authoringInfo?.type)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with breaks varied by size instead of color.")}return r}async function ie(e){const a=await ae(e),{layer:i,shape:t,defaultSymbolEnabled:n,legendOptions:l}=a,{renderer:o}=i,p=(await s("esri/smartMapping/t9n/smartMapping")).other;let m=[];"unique-value"===o?.type&&(m=te({renderer:o,defaultSymbolEnabled:n,defaultLabelBackup:p})),"class-breaks"===o?.type&&(m=ne({renderer:o,defaultSymbolEnabled:n,defaultLabelBackup:p}));const c=[],d=[];for(const r of m){const{field:e,color:a}=r;c.push(e),d.push(new u({color:a,field:e.name,label:e.alias}))}return{fields:c,renderer:new r({attributes:d,legendOptions:l,holePercentage:"donut"===t?.45:0,outline:null,size:9,othersCategory:null})}}function te(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:t}=e,{field:n,defaultSymbol:s,defaultLabel:u}=r,p=r.uniqueValueInfos??[],m=s&&a,c=m?9:10,d=i(re,c),f=(n?p.slice(0,c).map(((e,r)=>{const a=e.label,i=d[r];return{field:new l({name:se(e.value?.toString()),alias:a,onStatisticExpression:new o({title:`Field definition - ${a}`,expression:oe(n,e),returnType:"number"}),statisticType:"sum"}),color:le(e.symbol,i)}})):null)??[];if(m){const e="cluster_default",r=u||t;f.push({field:new l({name:se(e),alias:r,onStatisticExpression:new o({title:`Field definition - ${r}`,expression:ue(n,p),returnType:"number"}),statisticType:"sum"}),color:le(s,ee)})}return f}function ne(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:t}=e,{field:n,classBreakInfos:s,defaultSymbol:u,defaultLabel:p}=r,m=u&&a,c=m?9:10,d=i(re,c),f=s.slice(0,c).map(((e,r)=>{const a=e.label||`${e.minValue} - ${e.maxValue}`,i=d[r];return{field:new l({name:se(a),alias:a,onStatisticExpression:new o({title:`Field definition - ${a}`,expression:pe(n,e),returnType:"number"}),statisticType:"sum"}),color:le(e.symbol,i)}}));if(m){const e="cluster_default",r=p||t;f.push({field:new l({name:se(e),alias:r,onStatisticExpression:new o({title:`Field definition - ${r}`,expression:me(n,s),returnType:"number"}),statisticType:"sum"}),color:le(u,ee)})}return f}function se(e){return"SUM_"+(e+"").replaceAll(/[^a-zA-Z0-9_]/g,"_")}function le(e,r){if("simple-marker"===e?.type&&e.color)return e.color.clone();if("cim"===e?.type){const r=N(e);if(r)return r.clone()}return r?r.clone():Y.clone()}function oe(e,r){return`Number(Text($feature["${e}"]) == "${r.value+""}")`}function ue(e,r){return`Number(!(${r.map((r=>`(Text($feature["${e}"]) == "${r.value+""}")`)).join(" || ")}))`}function pe(e,r){return`Number($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`}function me(e,r){return`Number(!(${r.map((r=>`($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`)).join(" || ")}))`}export{J as createRenderer,ie as createRendererForClustering,Z as regenerateRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
4
4
  */
5
- import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import r from"../../renderers/support/AuthoringInfo.js";import n from"../../renderers/support/AuthoringInfoVisualVariable.js";import{round as s}from"../../renderers/support/numberUtils.js";import l from"../../renderers/visualVariables/OpacityVariable.js";import o from"../../renderers/visualVariables/support/OpacityStop.js";import t from"../../renderers/visualVariables/support/VisualVariableLegendOptions.js";import p from"../heuristics/outline.js";import{createVisualVariables as m}from"./size.js";import{createRenderer as d}from"./type.js";import{verifyBasicFieldValidity as u,getBasemapInfo as c,errorCallback as y,createSymbol as f,getSymbolOutlineFromScheme as b,getSummaryStatistics as g}from"./support/utils.js";import h from"../statistics/predominantCategories.js";import{getPredominanceExpressions as v}from"../statistics/support/predominanceUtils.js";import{verifyBinningParams as w}from"../support/binningUtils.js";import{binningCapableLayerTypes as V,featureCapableLayerTypes as z,createLayerAdapter as T,getLayerTypeLabels as E}from"../support/adapters/support/layerUtils.js";import{cloneScheme as S,getSchemes as x}from"../symbology/predominance.js";async function I(e){if(!(e?.layer&&e.view&&e.fields?.length))throw new i("predominance-renderer:missing-parameters","'layer', 'view' and 'fields' parameters are required");if(e.fields.length<2)throw new i("predominance-renderer:invalid-parameters","Minimum 2 fields are required");if(e.fields.length>10)throw new i("predominance-renderer:invalid-parameters","Maximum 10 fields are supported");e.forBinning&&w(e,"predominance-renderer");const a={...e,layer:e.layer,fields:e.fields};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0,a.includeOpacityVariable=e.includeOpacityVariable||!1,a.includeSizeVariable=e.includeSizeVariable||!1,a.sortBy??="count";const r=e.forBinning?V:z,n=T(a.layer,r,e.forBinning);if(!n)throw new i("predominance-renderer:invalid-parameters","'layer' must be one of these types: "+E(z).join(", "));a.layer=n;const s=null!=a.signal?{signal:a.signal}:null;await n.load(s);const l=n.geometryType,o=a.symbolType.includes("3d");if(a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled,a.includeSizeVariable||(a.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&a.sizeOptimizationEnabled),"mesh"===l)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none",a.sizeOptimizationEnabled=!1;else{if(o&&("polyline"===l||"polygon"===l))throw new i("predominance-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("predominance-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const t=a.fields.map((e=>e.name)),p=u(n,t,"predominance-renderer:invalid-parameters");if(p)throw p;return a}async function O(e){let i=e.predominanceScheme,a=null,r=null;const n=await c(e.basemap,e.view);if(a=null!=n.basemapId?n.basemapId:null,r=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:S(i),basemapId:a,basemapTheme:r};const s=x({basemapTheme:r,geometryType:e.geometryType,numColors:e.numColors,theme:e.theme,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,a=s.basemapId,r=s.basemapTheme),{scheme:i,basemapId:a,basemapTheme:r}}async function M(i,n,s,l){const o=await a("esri/smartMapping/t9n/smartMapping"),t=i.layer,{view:m,filter:u,signal:c}=i,[g,v]=await Promise.all([h({layer:t,fields:l,view:m,filter:u,signal:c}),i.outlineOptimizationEnabled?p({layer:t,view:m,filter:u,signal:c}).catch(y):null]);let w=g;g?.predominantCategoryInfos||(w={predominantCategoryInfos:l.map((e=>({value:e,count:0})))});const V=v?.opacity,z=await d({layer:t,basemap:i.basemap,valueExpression:n.valueExpression,valueExpressionTitle:o.predominantCategory,numTypes:-1,defaultSymbolEnabled:i.defaultSymbolEnabled,sortBy:i.sortBy,typeScheme:s,statistics:{uniqueValueInfos:w.predominantCategoryInfos},legendOptions:i.legendOptions,outlineOptimizationEnabled:!1,sizeOptimizationEnabled:(!i.includeSizeVariable||!i.sizeOptimizationEnabled)&&i.sizeOptimizationEnabled,symbolType:i.symbolType,colorMixMode:i.colorMixMode,edgesType:i.edgesType,filter:i.filter,view:i.view,signal:i.signal}),{renderer:T,basemapId:E,basemapTheme:S,uniqueValueInfos:x,excludedUniqueValueInfos:I}=z,O=T.uniqueValueInfos??[],M={};for(const e of i.fields){const i=t.getField(e.name);M[i.name]=e.label||i&&i.alias||e.name}if(O.forEach(((e,i)=>{const a=M[e.value];e.label=a,x[i].label=a})),i.includeSizeVariable){let a=t.geometryType,r=null;if("polygon"===a){const e=s.sizeScheme,n=e.background;T.backgroundFillSymbol=f(a,{type:i.symbolType,color:n.color,outline:b(n,a,V)}),r=e.marker.size,a="point"}else if("polyline"===a){r=s.width}else{r=s.size}const n=e(s.colors,O.length);O.forEach(((e,l)=>{const o=f(a,{type:i.symbolType,color:n[l],size:r,outline:b(s,a,V),meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}});e.symbol=o,x[l].symbol=o.clone()}))}return v?.visualVariables.length&&(T.visualVariables=v.visualVariables.map((e=>e.clone()))),T.authoringInfo=new r({type:"predominance",fields:[...l]}),{renderer:T,predominantCategoryInfos:x,excludedCategoryInfos:I,predominanceScheme:s,basemapId:E,basemapTheme:S}}async function j(e,i,r){const n=await a("esri/smartMapping/t9n/smartMapping");return m({layer:e.layer,basemap:e.basemap,valueExpression:i.valueExpression,sqlExpression:i.statisticsQuery.sqlExpression,sqlWhere:i.statisticsQuery.sqlWhere,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,worldScale:!!e.symbolType?.includes("3d-volumetric"),legendOptions:{title:n.sumOfCategories},filter:e.filter,view:e.view,signal:e.signal})}async function q(e,i){const p=await a("esri/smartMapping/t9n/smartMapping"),m=await g({layer:e.layer,valueExpression:i.valueExpression,sqlExpression:i.statisticsQuery.sqlExpression,sqlWhere:i.statisticsQuery.sqlWhere,filter:e.filter,view:e.view,signal:e.signal}),{avg:d,stddev:u}=m,c=null==d||null==u,y=1/e.fields.length*100;let f=c?100:d+1.285*u;f>100&&(f=100);const b=s([y,f],{strictBounds:!0}),h=new l({valueExpression:i.valueExpression,stops:[new o({value:b[0],opacity:.15}),new o({value:b[1],opacity:1})],legendOptions:new t({title:p.strengthOfPredominance})}),v=new n({type:"opacity",minSliderValue:m.min,maxSliderValue:m.max});return{visualVariable:h,statistics:m,defaultValuesUsed:c,authoringInfo:new r({visualVariables:[v]})}}async function C(e){const i=await I(e),a=i.layer,n=(await O({basemap:i.basemap,geometryType:a.geometryType,numColors:i.fields.length,predominanceScheme:i.predominanceScheme,worldScale:!!i.symbolType?.includes("3d-volumetric"),view:i.view})).scheme,s=i.fields.map((e=>e.name)),l=v(a,s),o=M(i,l.predominantCategory,n,s),t=i.includeSizeVariable?j(i,l.size,n.sizeScheme):null,p=i.includeOpacityVariable?q(i,l.opacity):null,[m,d,u]=await Promise.all([o,t,p]),c=[],y=[];if(d&&(Array.prototype.push.apply(c,d.visualVariables.map((e=>e.clone()))),delete d.sizeScheme,m.size=d,Array.prototype.push.apply(y,d.authoringInfo.visualVariables.map((e=>e.clone())))),u&&(c.push(u.visualVariable.clone()),m.opacity=u,Array.prototype.push.apply(y,u.authoringInfo.visualVariables.map((e=>e.clone())))),c.length){const e=m.renderer.visualVariables||[];Array.prototype.push.apply(e,c),m.renderer.visualVariables=e,m.renderer.authoringInfo??=new r,m.renderer.authoringInfo.visualVariables=y}return m}export{C as createRenderer};
5
+ import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import r from"../../renderers/support/AuthoringInfo.js";import n from"../../renderers/support/AuthoringInfoVisualVariable.js";import{round as l}from"../../renderers/support/numberUtils.js";import s from"../../renderers/visualVariables/OpacityVariable.js";import o from"../../renderers/visualVariables/support/OpacityStop.js";import t from"../../renderers/visualVariables/support/VisualVariableLegendOptions.js";import p from"../heuristics/outline.js";import{createVisualVariables as m}from"./size.js";import{createRenderer as d}from"./type.js";import{spliceVisualVariables as u,findOutlineVVIndex as c,findSizeVVIndex as y,findOpacityVVIndex as f,updateAuthoringInfoVisualVariable as b,processRegenerateParams as g,getRendererToUpdate as h,getStyleType as w,hasOutlineVV as v,hasScaleDependentSizeVV as z,isSizeVV as V}from"./support/regenerateUtils.js";import{errorCallback as T,verifyBasicFieldValidity as E,getBasemapInfo as S,createSymbol as O,getSymbolOutlineFromScheme as I,getSummaryStatistics as x}from"./support/utils.js";import j from"../statistics/predominantCategories.js";import{getPredominanceExpressions as M}from"../statistics/support/predominanceUtils.js";import{verifyBinningParams as q}from"../support/binningUtils.js";import{binningCapableLayerTypes as C,featureCapableLayerTypes as B,createLayerAdapter as U,getLayerTypeLabels as A}from"../support/adapters/support/layerUtils.js";import{cloneScheme as P,getSchemes as Q}from"../symbology/predominance.js";async function W(e){if(!(e?.layer&&e.view&&e.fields?.length))throw new i("predominance-renderer:missing-parameters","'layer', 'view' and 'fields' parameters are required");if(e.fields.length<2)throw new i("predominance-renderer:invalid-parameters","Minimum 2 fields are required");if(e.fields.length>10)throw new i("predominance-renderer:invalid-parameters","Maximum 10 fields are supported");e.forBinning&&q(e,"predominance-renderer");const a={...e,layer:e.layer,fields:e.fields};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0,a.includeOpacityVariable=e.includeOpacityVariable||!1,a.includeSizeVariable=e.includeSizeVariable||!1,a.sortBy??="count";const r=e.forBinning?C:B,n=U(a.layer,r,e.forBinning);if(!n)throw new i("predominance-renderer:invalid-parameters","'layer' must be one of these types: "+A(B).join(", "));const l=null!=a.signal?{signal:a.signal}:null;await n.load(l);const s=n.geometryType,o=a.symbolType.includes("3d");if(a.outlineOptimizationEnabled="polygon"===s&&a.outlineOptimizationEnabled,a.includeSizeVariable||(a.sizeOptimizationEnabled=("point"===s||"multipoint"===s||"polyline"===s)&&a.sizeOptimizationEnabled),"mesh"===s)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none",a.sizeOptimizationEnabled=!1;else{if(o&&("polyline"===s||"polygon"===s))throw new i("predominance-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("predominance-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const t=a.fields.map((e=>e.name)),p=E(n,t,"predominance-renderer:invalid-parameters");if(p)throw p;return{...a,layer:n}}async function k(e){const a="regenerate-predominance-renderer";await g(e,a);const r=await h(e);if("predominance"!==w(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{visualVariables:n}=r,{layer:l,forBinning:s,filter:o,view:t,signal:p}=e,m=v(r),d=z(r),u=n?.some(V),c=n?.some((e=>"opacity"===e.type)),y=r.authoringInfo,f=y?.fields?.map((e=>({name:e})));if(!f?.length)throw new i(`${a}:invalid-parameters`,"Fields are required");const b=await W({layer:l,fields:f,outlineOptimizationEnabled:m,sizeOptimizationEnabled:d,includeSizeVariable:u,includeOpacityVariable:c,forBinning:s,filter:o,view:t,signal:p});return{...e,creatorParameters:b,renderer:r}}async function F(e){let i=e.predominanceScheme,a=null,r=null;const n=await S(e.basemap,e.view);if(a=null!=n.basemapId?n.basemapId:null,r=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:P(i),basemapId:a,basemapTheme:r};const l=Q({basemapTheme:r,geometryType:e.geometryType,numColors:e.numColors,theme:e.theme,worldScale:e.worldScale,view:e.view});return l&&(i=l.primaryScheme,a=l.basemapId,r=l.basemapTheme),{scheme:i,basemapId:a,basemapTheme:r}}async function R(i,n,l,s){const o=await a("esri/smartMapping/t9n/smartMapping"),t=i.layer,{view:m,filter:u,signal:c}=i,[y,f]=await Promise.all([j({layer:t,fields:s,view:m,filter:u,signal:c}),i.outlineOptimizationEnabled?p({layer:t,view:m,filter:u,signal:c}).catch(T):null]);let b=y;y?.predominantCategoryInfos||(b={predominantCategoryInfos:s.map((e=>({value:e,count:0})))});const g=f?.opacity,h=await d({layer:t,basemap:i.basemap,valueExpression:n.valueExpression,valueExpressionTitle:o.predominantCategory,numTypes:-1,defaultSymbolEnabled:i.defaultSymbolEnabled,sortBy:i.sortBy,typeScheme:l,statistics:{uniqueValueInfos:b.predominantCategoryInfos},legendOptions:i.legendOptions,outlineOptimizationEnabled:!1,sizeOptimizationEnabled:(!i.includeSizeVariable||!i.sizeOptimizationEnabled)&&i.sizeOptimizationEnabled,symbolType:i.symbolType,colorMixMode:i.colorMixMode,edgesType:i.edgesType,filter:i.filter,view:i.view,signal:i.signal}),{renderer:w,basemapId:v,basemapTheme:z,uniqueValueInfos:V,excludedUniqueValueInfos:E}=h,S=w.uniqueValueInfos??[],x={};for(const e of i.fields){const i=t.getField(e.name);x[i.name]=e.label||i&&i.alias||e.name}if(S.forEach(((e,i)=>{const a=x[e.value];e.label=a,V[i].label=a})),i.includeSizeVariable){let a=t.geometryType,r=null;if("polygon"===a){const e=l.sizeScheme,n=e.background;w.backgroundFillSymbol=O(a,{type:i.symbolType,color:n.color,outline:I(n,a,g)}),r=e.marker.size,a="point"}else if("polyline"===a){r=l.width}else{r=l.size}const n=e(l.colors,S.length);S.forEach(((e,s)=>{const o=O(a,{type:i.symbolType,color:n[s],size:r,outline:I(l,a,g),meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}});e.symbol=o,V[s].symbol=o.clone()}))}return f?.visualVariables.length&&(w.visualVariables=f.visualVariables.map((e=>e.clone()))),w.authoringInfo=new r({type:"predominance",fields:[...s]}),{renderer:w,predominantCategoryInfos:V,excludedCategoryInfos:E,predominanceScheme:l,basemapId:v,basemapTheme:z}}async function $(e,i,r){const n=await a("esri/smartMapping/t9n/smartMapping");return m({layer:e.layer,basemap:e.basemap,valueExpression:i.valueExpression,sqlExpression:i.statisticsQuery.sqlExpression,sqlWhere:i.statisticsQuery.sqlWhere,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,worldScale:!!e.symbolType?.includes("3d-volumetric"),legendOptions:{title:n.sumOfCategories},filter:e.filter,view:e.view,signal:e.signal})}async function L(e,i){const p=await a("esri/smartMapping/t9n/smartMapping"),m=await x({layer:e.layer,valueExpression:i.valueExpression,sqlExpression:i.statisticsQuery.sqlExpression,sqlWhere:i.statisticsQuery.sqlWhere,filter:e.filter,view:e.view,signal:e.signal}),{avg:d,stddev:u}=m,c=null==d||null==u,y=1/e.fields.length*100;let f=c?100:d+1.285*u;f>100&&(f=100);const b=l([y,f],{strictBounds:!0}),g=new s({valueExpression:i.valueExpression,stops:[new o({value:b[0],opacity:.15}),new o({value:b[1],opacity:1})],legendOptions:new t({title:p.strengthOfPredominance})}),h=new n({type:"opacity",minSliderValue:m.min,maxSliderValue:m.max});return{visualVariable:g,statistics:m,defaultValuesUsed:c,authoringInfo:new r({visualVariables:[h]})}}async function D(e){const i=await W(e),a=i.layer,n=(await F({basemap:i.basemap,geometryType:a.geometryType,numColors:i.fields.length,predominanceScheme:i.predominanceScheme,worldScale:!!i.symbolType?.includes("3d-volumetric"),view:i.view})).scheme,l=i.fields.map((e=>e.name)),s=M(a,l),o=R(i,s.predominantCategory,n,l),t=i.includeSizeVariable?$(i,s.size,n.sizeScheme):null,p=i.includeOpacityVariable?L(i,s.opacity):null,[m,d,u]=await Promise.all([o,t,p]),c=[],y=[];if(d&&(Array.prototype.push.apply(c,d.visualVariables.map((e=>e.clone()))),delete d.sizeScheme,m.size=d,Array.prototype.push.apply(y,d.authoringInfo.visualVariables.map((e=>e.clone())))),u&&(c.push(u.visualVariable.clone()),m.opacity=u,Array.prototype.push.apply(y,u.authoringInfo.visualVariables.map((e=>e.clone())))),c.length){const e=m.renderer.visualVariables||[];Array.prototype.push.apply(e,c),m.renderer.visualVariables=e,m.renderer.authoringInfo??=new r,m.renderer.authoringInfo.visualVariables=y}return m}async function G(e){const{creatorParameters:i,view:a,signal:r,filter:n,renderer:l}=await k(e),{layer:s,fields:o,outlineOptimizationEnabled:t,includeSizeVariable:m,includeOpacityVariable:d}=i,g=o.map((e=>e.name)),h=M(s,g),w=(await F({geometryType:s.geometryType,numColors:i.fields.length,view:i.view})).scheme,v=w&&"sizeScheme"in w?w.sizeScheme:null,[z,V,E]=await Promise.all([t?p({layer:s,view:a,signal:r,filter:n}).catch(T):null,m?$(i,h.size,v):null,d?L(i,h.opacity):null]);return u(l,z?.visualVariables,c),u(l,V?.visualVariables,y),u(l,E?.visualVariable,f),b(l,V?.authoringInfo,"size"),b(l,E?.authoringInfo,"opacity"),{renderer:l}}export{D as createRenderer,G as regenerateRenderer};