@arcgis/core 4.34.0-next.81 → 4.34.0-next.83

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 (106) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{9789f178ece126c4006d.js → 25ea02dd7d45a90cbb3b.js} +1 -1
  3. package/assets/esri/core/workers/chunks/{6271a706ac3fcba91432.js → 609abf071c4ea24955c2.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{afb2770c4abbff9bab3d.js → 71c2a8e5a17803d3e949.js} +1 -1
  5. package/assets/esri/core/workers/chunks/77705d0c7c17bd46d81a.js +1 -0
  6. package/assets/esri/core/workers/chunks/{22f196d173711ebd64c7.js → 8513c9282c44bb0a736e.js} +1 -1
  7. package/assets/esri/core/workers/chunks/{db2396bf062468ee8b60.js → 8bdbd94a59269e216fba.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{ecac5ca00c742bfb5898.js → 998d164b3e0b99a0ff1e.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{96e483db7dd1f5dbb07a.js → 9a6fa91dd204f64d2590.js} +1 -1
  10. package/assets/esri/core/workers/chunks/a1196637268b89281780.js +1 -0
  11. package/assets/esri/core/workers/chunks/a1b08aab73747f4e7e25.js +1 -0
  12. package/assets/esri/core/workers/chunks/{b6c4712e00fce87bd0f4.js → aa1eb7b4d9ccda725da5.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{20ae2316d927415f3df9.js → b43473e84b3f7fa2634d.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{b168b6ffc16cd509d316.js → bd028badc07270eda3d0.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{6593b419339e7598b760.js → d5363e5637d37e89a25f.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{81a8addcb858086ff9ee.js → e17df11c98dbd869302b.js} +1 -1
  17. package/assets/esri/core/workers/chunks/e1b3ae6426886e2fab07.js +1 -0
  18. package/assets/esri/core/workers/chunks/e4acc3c2b6d865ed1940.js +1 -0
  19. package/assets/esri/core/workers/chunks/{6e2a3abc3dbc342212c4.js → f35003a90163847fe1e2.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{a99752aec4602b5eeeaf.js → f8f85207b382c1ea038c.js} +11 -3
  21. package/assets/esri/core/workers/chunks/{9c5dcef2a75d4bb9b3d6.js → fcac475e4e82911b3126.js} +1 -1
  22. package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
  23. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  24. package/chunks/CutFillComposition.glsl.js +8 -0
  25. package/chunks/CutFillMask.glsl.js +6 -0
  26. package/config.js +1 -1
  27. package/geometry/Extent.js +1 -1
  28. package/geometry/support/aaBoundingRect.js +1 -1
  29. package/interfaces.d.ts +53 -83
  30. package/kernel.js +1 -1
  31. package/layers/ImageryLayer.js +1 -1
  32. package/layers/ImageryTileLayer.js +1 -1
  33. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  34. package/layers/support/ElevationSampler.js +1 -1
  35. package/layers/support/rasterDatasets/BaseRaster.js +1 -1
  36. package/layers/support/rasterDatasets/datasetUtils.js +1 -1
  37. package/layers/support/tiles3DUtils.js +1 -1
  38. package/package.json +1 -1
  39. package/portal/schemas/definitions.js +1 -1
  40. package/smartMapping/renderers/color.js +1 -1
  41. package/smartMapping/renderers/location.js +1 -1
  42. package/smartMapping/renderers/predominance.js +1 -1
  43. package/smartMapping/renderers/relationship.js +1 -1
  44. package/smartMapping/renderers/size.js +1 -1
  45. package/smartMapping/renderers/type.js +1 -1
  46. package/smartMapping/statistics/summaryStatistics.js +1 -1
  47. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  48. package/smartMapping/support/adapters/support/utils.js +1 -1
  49. package/smartMapping/support/utils.js +1 -1
  50. package/support/elevationInfoUtils.js +1 -1
  51. package/support/revision.js +1 -1
  52. package/tables/elements.js +1 -1
  53. package/views/2d/engine/Stage.js +1 -1
  54. package/views/2d/engine/webgl/shaderGraph/techniques/TextureStatisticsTechnique.js +1 -1
  55. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TextureStatisticsDiffShader.js +1 -1
  56. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TextureStatisticsMinMaxSumShader.js +1 -1
  57. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TextureStatisticsStdDevShader.js +1 -1
  58. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TextureStatisticsSumOfSquaredDiffShader.js +1 -1
  59. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillComputation.js +1 -1
  60. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillController.js +1 -1
  61. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillVisualization.js +1 -1
  62. package/views/3d/layers/FlowSubView3D.js +1 -1
  63. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  64. package/views/3d/support/DisplayQualityProfile.js +1 -1
  65. package/views/3d/support/QualitySettings.js +1 -1
  66. package/views/3d/support/engineContent/line.js +1 -1
  67. package/views/3d/support/flow/StreamlineResources3D.js +1 -1
  68. package/views/3d/support/flow/StreamlineResources3DOverlay.js +1 -1
  69. package/views/3d/support/flow/StreamlineResources3DShape.js +1 -1
  70. package/views/3d/support/flow/geometryUtils.js +1 -1
  71. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
  72. package/views/3d/terrain/OverlayManager.js +1 -1
  73. package/views/3d/terrain/Queue.js +5 -0
  74. package/views/3d/terrain/TerrainSurface.js +1 -1
  75. package/views/3d/terrain/Tile.js +1 -1
  76. package/views/3d/terrain/isTerrainSurfaceLayer.js +1 -1
  77. package/views/3d/webgl-engine/core/shaderLibrary/attributes/MaskedColor.glsl.js +15 -7
  78. package/views/3d/webgl-engine/lib/CutFillColor.js +5 -0
  79. package/views/3d/webgl-engine/lib/GaussianSplatRenderNode.js +1 -1
  80. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  81. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  82. package/views/3d/webgl-engine/shaders/CutFillComposition.glsl.js +5 -0
  83. package/views/3d/webgl-engine/shaders/CutFillCompositionTechnique.js +5 -0
  84. package/views/3d/webgl-engine/shaders/CutFillMask.glsl.js +5 -0
  85. package/views/3d/webgl-engine/shaders/CutFillMaskTechnique.js +5 -0
  86. package/views/3d/webgl.js +1 -1
  87. package/views/support/DefaultsFromMap.js +1 -1
  88. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  89. package/widgets/Editor/EditorViewModel.js +1 -1
  90. package/widgets/Editor/SplitFeatureWorkflow.js +5 -0
  91. package/widgets/Editor/SplitFeatureWorkflowData.js +5 -0
  92. package/widgets/Editor/UpdateWorkflow.js +1 -1
  93. package/widgets/Editor/support/splitFeatureUtils.js +1 -1
  94. package/widgets/Editor/workflowUtils.js +1 -1
  95. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  96. package/widgets/Search/SearchViewModel.js +1 -1
  97. package/widgets/Search.js +1 -1
  98. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  99. package/widgets/UtilityNetworkTrace.js +1 -1
  100. package/widgets/VersionManagement/VersionManagementViewModel.js +1 -1
  101. package/assets/esri/core/workers/chunks/07a355a9c95154971aab.js +0 -1
  102. package/assets/esri/core/workers/chunks/22a66db7d73e733917e3.js +0 -1
  103. package/assets/esri/core/workers/chunks/5f079be7f322768aef21.js +0 -1
  104. package/assets/esri/core/workers/chunks/cb3b88959b2f048e54a5.js +0 -1
  105. package/assets/esri/core/workers/chunks/da1a5537e2f2ca6cc247.js +0 -1
  106. package/views/3d/support/gaussianSplatting/GaussianSplatQualitySettings.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as a}from"../../core/lang.js";import{ensureClass as r}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as o}from"../../intl/messages.js";import n from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/PointCloudRGBRenderer.js";import s from"../../renderers/PointCloudStretchRenderer.js";import t from"../../renderers/support/AuthoringInfo.js";import u from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as m,createColorStops as c}from"../../renderers/support/utils.js";import d 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,updateAuthoringInfoVisualVariable as b,processRegenerateParams as g,getRendererToUpdate as T,getStyleType as x,hasOutlineVV as z,hasScaleDependentSizeVV as E,findColorVVIndex as V,findOutlineVVIndex as I,findScaleDependentSizeVVIndex as S}from"./support/regenerateUtils.js";import{getSummaryStatistics as M,errorCallback as B,getClassBreaks as O,getPointSizeAlgorithm as j,getTitleAndExpressionForAgeRenderer as k,updateAgeRendererAuthoringInfoVV as F,verifyBasicFieldValidity as q,getDataRange as U,createDataValues as C,createSymbol as P,getSymbolOutlineFromScheme as R,getSymbolSizeFromScheme as D,isValidPointSize as $,getDefaultDataRange as L,createDefaultStopValues as A,createStopValues 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}from"../support/adapters/support/layerUtils.js";import{cloneScheme as ie,createScheme as ae,getSchemes as re,getSchemeById as oe}from"../symbology/color.js";import{getColorSchemeDefinition as ne}from"../symbology/support/utils.js";const le="high-to-low",se=2**53-1,te=5;async function ue(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-visual-variable");const a={...e},r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);if("mesh"!==o.geometryType&&a.worldScale&&(!a.view||"3d"!==a.view.type))throw new i("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const l=await Q({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),s=q(o,l,"color-visual-variable:invalid-parameters");if(s)throw s;return{...a,layer:o}}async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-continuous-renderer");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0;const r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;if(a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled,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";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==l)throw new i("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("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:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),t=q(o,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return{...a,layer:o}}async function ce(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-class-breaks-renderer");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0,a.classificationMethod??="equal-interval",a.normalizationType=X(a);const r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(!(null!=a.minValue&&null!=a.maxValue)&&(null!=a.minValue||null!=a.maxValue))throw new i("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;if(a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled,"mesh"===l)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==l)throw new i("color-class-breaks-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("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:a.field,normalizationField:a.normalizationField}),t=q(o,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return{...a,layer:o}}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 a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}async function pe(e){if(!e?.layer)throw new i("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const a={...e,layer:e.layer},r=[10],o=_(a.layer,r);if(!o)throw new i("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(a.layer=o,a.density=a.density||25,a.size=a.size||"100%",!$(a.size))throw new i("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=a.signal?{signal:a.signal}:null;return await o.load(n),a}async function fe(e){if(!e?.layer||!e.field)throw new i("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const a=e.field.toLowerCase();if("intensity"!==a&&"elevation"!==a)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const r={...e,layer:e.layer,field:e.field},o=[10],n=_(r.layer,o);if(!n)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(o).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!$(r.size))throw new i("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 ye(e){const i={...e},a=!!i.symbolType?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const r=i;return r.worldScale=a,r}async function ve(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0;const r=_(a.layer,Z);if(!r)throw new i("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+ee(Z).join(", "));const o=null!=a.signal?{signal:a.signal}:null;await r.load(o);const n=r.geometryType;if(a.outlineOptimizationEnabled="polygon"===n&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&a.sizeOptimizationEnabled,"mesh"===n)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else if("3d-volumetric-uniform"===a.symbolType&&"point"!==n)throw new i("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("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,a.startTime,a.endTime,"color-age-renderer:invalid-parameters");if(l)throw l;if(a.unit&&!J.includes(a.unit))throw new i("color-age-renderer:invalid-unit",`Supported units are: ${J.join(", ")}`);return{...a,layer:r}}async function he(e){const a="regenerate-color-visual-variable";await g(e,a);const r=await T(e);if("class-breaks"!==r?.type)throw new i(`${a}:invalid-parameters`,"Renderer must be a ClassBreaksRenderer to regenerate a color visual variable");const o=r.authoringInfo,n=o?.visualVariables.find(e=>"color"===e.type),l=r.visualVariables?.find(e=>"color"===e.type);if(!l)throw new i(`${a}:invalid-parameters`,"Renderer does not have a color visual variable");const{field:s,normalizationField:t,valueExpression:u,valueExpressionTitle:m}=l,c="univariate-color-size"===o?.type?o?.univariateTheme:n?.theme,{layer:d,forBinning:p,filter:f,view:y,signal:v}=e,h=await ue({layer:d,field:s,valueExpression:u,valueExpressionTitle:m,normalizationField:t,theme:c,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:r}}async function we(e){const a="regenerate-color-continuous-renderer";await g(e,a);const r=await T(e),o=x(r);if(!o||!["color-continuous","color-size"].includes(o))throw new i(`${a}:invalid-renderer`,"Renderer is invalid");const{authoringInfo:n,field:l,normalizationField:s,valueExpression:t,valueExpressionTitle:u}=r,m=n?.visualVariables.find(e=>"color"===e.type),c=m?.theme,{layer:d,forBinning:p,filter:f,view:y,signal:v}=e,h=z(r),w=E(r),b=await me({layer:d,field:l,valueExpression:t,valueExpressionTitle:u,normalizationField:s,theme:c,outlineOptimizationEnabled:h,sizeOptimizationEnabled:w,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:b,renderer:r}}async function be(e){const a="regenerate-color-class-breaks-renderer";await g(e,a);const r=await T(e);if("color-class-breaks"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o,field:n,normalizationField:l,normalizationType:s,normalizationTotal:t,valueExpression:u,valueExpressionTitle:m}=r,{classificationMethod:c,standardDeviationInterval:d}=o,p=r.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:h,signal:w}=e,b=z(r),E=await ce({layer:f,field:n,valueExpression:u,valueExpressionTitle:m,normalizationType:s,normalizationField:l,normalizationTotal:t,classificationMethod:c,standardDeviationInterval:d,numClasses:p,outlineOptimizationEnabled:b,defaultSymbolEnabled:!!r.defaultSymbol,forBinning:y,filter:v,view:h,signal:w});return{...e,creatorParameters:E,renderer:r}}async function ge(e){const a="regenerate-color-age-renderer";await g(e,a);const r=await T(e);if("color-age"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o}=r,n=o?.visualVariables.find(e=>"color"===e.type),l=n.startTime,s=n.endTime,t=n.units,u=n.theme,{layer:m,filter:c,view:d,signal:p}=e,f=z(r),y=E(r),v=await ve({layer:m,startTime:l,endTime:s,unit:t,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:c,view:d,signal:p});return{...e,creatorParameters:v,renderer:r}}async function Te(e,i){let a=e.colorScheme,r=null,o=null;const{view:n}=e,l=await W(e.basemap,n);if(r=null!=l.basemapId?l.basemapId:null,o=null!=l.basemapTheme?l.basemapTheme:null,a)return{scheme:ie(a),basemapId:r,basemapTheme:o};const s=e.theme||le,t=re({theme:s,basemapTheme:o,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(r=t.basemapId,o=t.basemapTheme,e.schemeId){const i=s+"/"+r+"/"+e.schemeId;a=oe({id:i,geometryType:e.geometryType})}else a=t.primaryScheme;return{scheme:a,basemapId:r,basemapTheme:o}}function xe(e,i){const a=ne(e);return ae({geometryType:i},void 0,a.commonProps,a.colorRampInfo)}async function ze(a,r){const o=r.layer,n=await Te({basemap:r.basemap,colorScheme:r.colorScheme,geometryType:o.geometryType,schemeId:"elevation"===r.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),l=n.scheme;if(!l)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const s=e(l.colors,te);if(s.length<te)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=L(a,!1,!0),u=t?A(t[0],t[1],5):G(a);return{stops:c({values:u,isDate:!1,colors:s,labelIndexes:[0,2,4]}),basemapId:n.basemapId,basemapTheme:n.basemapTheme,statistics:a,defaultValuesUsed:!!t,colorScheme:ie(l)}}function Ee(e,i,a,r){const o=U(e,i,a,!0);return{values:C(o,e,i,r),defaultValuesUsed:o.defaultValuesUsed}}async function Ve(a,o,n,l){const{field:s,theme:m}=a,c=await Te({basemap:a.basemap,theme:a.theme,geometryType:n,colorScheme:a.colorScheme,worldScale:a.worldScale,view:a.view}),y=c.scheme;if(!y)throw new i("color-visual-variable:insufficient-info","Unable to find color scheme");const v=e(y.colors,te);if(v.length<te)throw new i("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const h=y.id.includes("seq-"),{values:w,defaultValuesUsed:b}=Ee(o,m,l,h),g=e(v,te),T=new d({field:s??void 0,valueExpression:a.valueExpression,valueExpressionTitle:a.valueExpressionTitle,normalizationField:a.normalizationField,stops:w.map((e,i)=>new p({value:e,color:g[i]})),legendOptions:r(f,a.legendOptions)}),x=new u({type:"color",minSliderValue:null!=a.minValue?a.minValue:o.min,maxSliderValue:null!=a.maxValue?a.maxValue:o.max,theme:y.theme}),z=new t({visualVariables:[x]});return{basemapId:c.basemapId,basemapTheme:c.basemapTheme,visualVariable:T,statistics:o,defaultValuesUsed:b,colorScheme:ie(y),authoringInfo:z}}async function Ie(e,i,a,r,l,s,t){const u=await o("esri/smartMapping/t9n/smartMapping"),{field:m,defaultSymbolEnabled:c}=t,d=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 n({classBreakInfos:[{minValue:-se,maxValue:se,symbol:P(s,{type:t.symbolType,color:d.noDataColor,size:D(d,s),outline:R(d,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:c?u.other:null,defaultSymbol:c?P(s,{type:t.symbolType,color:d.noDataColor,size:D(d,s),outline:R(d,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:m,normalizationType:r,normalizationField:l,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 Se(e){const i=await ue(e),{view:a,field:r,valueExpression:o,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:u,filter:m,statistics:c}=i,d=t?"field":void 0,p=await(c??M({layer:s,field:r,valueExpression:o,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:t,minValue:n,maxValue:l,filter:m,view:a,signal:u})),f=s,y=r&&"function"!=typeof r?f.getField(r):null;return Ve(i,p,f.geometryType,N(y))}async function Me(i){const{view:a,filter:r,creatorParameters:o,renderer:n,signal:l}=await he(i),s=n.authoringInfo?.clone(),t=s?.visualVariables.find(e=>"color"===e.type),u=n.visualVariables?.find(e=>"color"===e.type),{field:m,normalizationField:c,valueExpression:d,theme:f,layer:y}=o,v=await M({layer:y,field:m,valueExpression:d,normalizationField:c,filter:r,view:a,signal:l}),h=m&&"function"!=typeof m?y.getField(m):null,{values:w}=Ee(v,f,N(h),"high-to-low"===f);if(w.length===u.stops.length)u.stops.forEach((e,i)=>e.value=w[i]);else{const i=u.stops.map(e=>e.color),a=e(i,te);u.stops=w.map((e,i)=>new p({value:e,color:a[i]}))}return t&&(t.minSliderValue=v.min,t.maxSliderValue=v.max),{visualVariable:u,authoringInfo:s,statistics:v}}function Be(i,r){const o=i.colorsForClassBreaks;if(o?.length)for(const e of o)if(e.numClasses===r)return a(e.colors);return e(i.colors,r)}async function Oe(e,a){const r=await o("esri/smartMapping/t9n/smartMapping"),l=e.layer,s=e.defaultSymbolEnabled,u=l.geometryType,c=e.classificationMethod,d="standard-deviation"===c,p=await Te({basemap:e.basemap,geometryType:u,theme:d?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),f=p.scheme,{result:y,outlineResult:v}=a,h=y.classBreakInfos,w=e.normalizationType;if(!f)throw new i("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const b=Be(f,h.length);if(!b||b.length!==h.length)throw new i("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=v?.opacity,T=new n({classBreakInfos:h.map((i,a)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:P(u,{type:e.symbolType,color:b[a],size:D(f,u),outline:R(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label})),defaultLabel:s?r.other:null,defaultSymbol:s?P(u,{type:e.symbolType,color:f.noDataColor,size:D(f,u),outline:R(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:c,standardDeviationInterval:e.standardDeviationInterval})});return d||m({classBreakInfos:T.classBreakInfos,classificationMethod:c,normalizationType:w,round:!0}),v?.visualVariables?.length&&(T.visualVariables=v.visualVariables.map(e=>e.clone())),{renderer:T,colorScheme:ie(f),classBreaksResult:y,defaultValuesUsed:a.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function je(e){const i=await me(e),{layer:a,view:r,signal:o,filter:n}=i,[l,s,t]=await Promise.all([Se(ye(i)),i.outlineOptimizationEnabled?v({layer:a,view:r,signal:o,filter:n}).catch(B):null,i.sizeOptimizationEnabled?h({layer:a,view:r,signal:o,filter:n}).catch(B):null]),u=i.normalizationField;return Ie(l,s,t,u?"field":void 0,u,a.geometryType,i)}async function ke(e){const{renderer:i,view:a,signal:r,filter:o,creatorParameters:n}=await we(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t}=n,[u,m,c]=await Promise.all([Me(e),s?v({layer:l,view:a,signal:r,filter:o}).catch(B):null,t?h({layer:l,view:a,signal:r,filter:o}).catch(B):null]);return w(i,u.visualVariable,V),w(i,m?.visualVariables,I),w(i,c?.minSize,S),b(i,u.authoringInfo,"color"),{renderer:i}}async function Fe(e){const i=await ce(e);return Oe(i,await O(de(i),i.outlineOptimizationEnabled))}async function qe(e){const{renderer:i,creatorParameters:a}=await be(e),{normalizationType:r,outlineOptimizationEnabled:o,classificationMethod:n}=a;if("manual"===n)return{renderer:i};const l=await O(de(a),o),s=l.result.classBreakInfos;if(a.numClasses!==s.length){const e=xe(i.classBreakInfos.map(e=>e.symbol),a.layer.geometryType);return{renderer:(await Oe({...a,colorScheme:e},l)).renderer}}return i.classBreakInfos.forEach((e,i)=>{e.minValue=s[i].minValue,e.maxValue=s[i].maxValue,e.label=s[i].label}),i.normalizationTotal="percent-of-total"===r?l.result.normalizationTotal:void 0,"standard-deviation"!==n&&m({classBreakInfos:i.classBreakInfos,classificationMethod:n,normalizationType:r,round:!0}),w(i,l.outlineResult?.visualVariables,I),{renderer:i}}function Ue(e){return pe(e).then(e=>({renderer:new l({field:"RGB",pointsPerInch:e.density??void 0,pointSizeAlgorithm:j(e.size)})}))}async function Ce(e){const i=await fe(e),a=i.statistics??await M({layer:i.layer,field:i.field,signal:i.signal}),r=await ze(a,i);return{renderer:new s({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:j(i.size),stops:r.stops}),basemapId:r.basemapId,basemapTheme:r.basemapTheme,statistics:r.statistics,defaultValuesUsed:r.defaultValuesUsed,colorScheme:r.colorScheme}}async function Pe(e){const i=await ve(e),{defaultSymbolEnabled:a,view:r,startTime:o,endTime:n,symbolType:l,colorMixMode:s,edgesType:t,minValue:u,maxValue:m,signal:c,filter:d}=i,p=i.layer,[f,w,b]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:y({view:r,layer:p,startTime:o,endTime:n,minValue:u,maxValue:m,signal:c,filter:d}),i.outlineOptimizationEnabled?v({layer:p,view:r,signal:c,filter:d}).catch(B):null,i.sizeOptimizationEnabled?h({layer:p,view:r,signal:c,filter:d}).catch(B):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:z}=await k(i,g),E=await Se(ye({layer:p,basemap:i.basemap,valueExpression:x,symbolType:l,statistics:T,legendOptions:{title:z},colorScheme:i.colorScheme,theme:i.theme,view:r,minValue:i.minValue,maxValue:i.maxValue,filter:d,signal:c})),V={valueExpression:x,defaultSymbolEnabled:a,symbolType:l,colorMixMode:s,edgesType:t},I=await Ie(E,w,b,null,null,p.geometryType,V),S=I.renderer.authoringInfo?.visualVariables;return S?.forEach(e=>F(e,o,n,g)),{...I,unit:g}}async function Re(e){const{renderer:i,creatorParameters:a}=await ge(e),{layer:r,outlineOptimizationEnabled:o,sizeOptimizationEnabled:n,startTime:l,endTime:s,theme:t,view:u,signal:m,filter:c}=a,[d,p,f]=await Promise.all([y({view:u,layer:r,startTime:l,endTime:s,signal:m,filter:c}),o?v({layer:r,view:u,signal:m,filter:c}).catch(B):null,n?h({layer:r,view:u,signal:m,filter:c}).catch(B):null]),{unit:b,statistics:g}=d,{valueExpression:T,title:x}=await k(a,b),z=await Se(ye({layer:r,valueExpression:T,statistics:g,legendOptions:{title:x},theme:t,view:u,filter:c,signal:m}));w(i,z.visualVariable,V),w(i,p?.visualVariables,I),w(i,f?.minSize,S),i.authoringInfo=z.authoringInfo.clone();const E=i.authoringInfo?.visualVariables;return E?.forEach(e=>F(e,l,s,b)),{renderer:i}}export{Pe as createAgeRenderer,Fe as createClassBreaksRenderer,je as createContinuousRenderer,Ce as createPCContinuousRenderer,Ue as createPCTrueColorRenderer,Se as createVisualVariable,Re as regenerateAgeRenderer,qe as regenerateClassBreaksRenderer,ke as regenerateContinuousRenderer,Me as regenerateVisualVariable};
5
+ import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as a}from"../../core/lang.js";import{ensureClass as r}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as o}from"../../intl/messages.js";import n from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/PointCloudRGBRenderer.js";import s from"../../renderers/PointCloudStretchRenderer.js";import t from"../../renderers/support/AuthoringInfo.js";import u from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as m,createColorStops as c}from"../../renderers/support/utils.js";import d 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,updateAuthoringInfoVisualVariable as b,processRegenerateParams as g,getRendererToUpdate as T,getStyleType as x,hasOutlineVV as z,hasScaleDependentSizeVV as E,findColorVVIndex as V,findOutlineVVIndex as I,findScaleDependentSizeVVIndex as S}from"./support/regenerateUtils.js";import{getSummaryStatistics as M,errorCallback as B,getClassBreaks as O,getPointSizeAlgorithm as j,getTitleAndExpressionForAgeRenderer as k,updateAgeRendererAuthoringInfoVV as F,verifyBasicFieldValidity as q,getDataRange as R,createDataValues as U,createSymbol as C,getSymbolOutlineFromScheme as P,getSymbolSizeFromScheme as D,isValidPointSize as $,getDefaultDataRange as L,createDefaultStopValues as A,createStopValues 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}from"../support/adapters/support/layerUtils.js";import{cloneScheme as ie,createScheme as ae,getSchemes as re,getSchemeById as oe}from"../symbology/color.js";import{getColorSchemeDefinition as ne}from"../symbology/support/utils.js";const le="high-to-low",se=2**53-1,te=5;async function ue(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-visual-variable");const a={...e},r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);if("mesh"!==o.geometryType&&a.worldScale&&(!a.view||"3d"!==a.view.type))throw new i("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const l=await Q({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),s=q(o,l,"color-visual-variable:invalid-parameters");if(s)throw s;return{...a,layer:o}}async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-continuous-renderer");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0;const r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled;const s="featureReduction"in a.layer&&"cluster"===a.layer.featureReduction?.type;if(a.sizeOptimizationEnabled=!("point"!==l&&"multipoint"!==l&&"polyline"!==l||s)&&a.sizeOptimizationEnabled,"mesh"===l)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==l)throw new i("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("color-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const t=await Q({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),u=q(o,t,"color-continuous-renderer:invalid-parameters");if(u)throw u;return{...a,layer:o}}async function ce(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-class-breaks-renderer");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0,a.classificationMethod??="equal-interval",a.normalizationType=X(a);const r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(!(null!=a.minValue&&null!=a.maxValue)&&(null!=a.minValue||null!=a.maxValue))throw new i("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;if(a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled,"mesh"===l)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==l)throw new i("color-class-breaks-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("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:a.field,normalizationField:a.normalizationField}),t=q(o,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return{...a,layer:o}}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 a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}async function pe(e){if(!e?.layer)throw new i("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const a={...e,layer:e.layer},r=[10],o=_(a.layer,r);if(!o)throw new i("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(a.layer=o,a.density=a.density||25,a.size=a.size||"100%",!$(a.size))throw new i("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=a.signal?{signal:a.signal}:null;return await o.load(n),a}async function fe(e){if(!e?.layer||!e.field)throw new i("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const a=e.field.toLowerCase();if("intensity"!==a&&"elevation"!==a)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const r={...e,layer:e.layer,field:e.field},o=[10],n=_(r.layer,o);if(!n)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(o).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!$(r.size))throw new i("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 ye(e){const i={...e},a=!!i.symbolType?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const r=i;return r.worldScale=a,r}async function ve(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0;const r=_(a.layer,Z);if(!r)throw new i("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+ee(Z).join(", "));const o=null!=a.signal?{signal:a.signal}:null;await r.load(o);const n=r.geometryType;a.outlineOptimizationEnabled="polygon"===n&&a.outlineOptimizationEnabled;const l="featureReduction"in a.layer&&"cluster"===a.layer.featureReduction?.type;if(a.sizeOptimizationEnabled=!("point"!==n&&"multipoint"!==n&&"polyline"!==n||l)&&a.sizeOptimizationEnabled,"mesh"===n)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else if("3d-volumetric-uniform"===a.symbolType&&"point"!==n)throw new i("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const s=H(r,a.startTime,a.endTime,"color-age-renderer:invalid-parameters");if(s)throw s;if(a.unit&&!J.includes(a.unit))throw new i("color-age-renderer:invalid-unit",`Supported units are: ${J.join(", ")}`);return{...a,layer:r}}async function he(e){const a="regenerate-color-visual-variable";await g(e,a);const r=await T(e);if("class-breaks"!==r?.type)throw new i(`${a}:invalid-parameters`,"Renderer must be a ClassBreaksRenderer to regenerate a color visual variable");const o=r.authoringInfo,n=o?.visualVariables.find(e=>"color"===e.type),l=r.visualVariables?.find(e=>"color"===e.type);if(!l)throw new i(`${a}:invalid-parameters`,"Renderer does not have a color visual variable");const{field:s,normalizationField:t,valueExpression:u,valueExpressionTitle:m}=l,c="univariate-color-size"===o?.type?o?.univariateTheme:n?.theme,{layer:d,forBinning:p,filter:f,view:y,signal:v}=e,h=await ue({layer:d,field:s,valueExpression:u,valueExpressionTitle:m,normalizationField:t,theme:c,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:r}}async function we(e){const a="regenerate-color-continuous-renderer";await g(e,a);const r=await T(e),o=x(r);if(!o||!["color-continuous","color-size"].includes(o))throw new i(`${a}:invalid-renderer`,"Renderer is invalid");const{authoringInfo:n,field:l,normalizationField:s,valueExpression:t,valueExpressionTitle:u}=r,m=n?.visualVariables.find(e=>"color"===e.type),c=m?.theme,{layer:d,forBinning:p,filter:f,view:y,signal:v}=e,h=z(r),w=E(r),b=await me({layer:d,field:l,valueExpression:t,valueExpressionTitle:u,normalizationField:s,theme:c,outlineOptimizationEnabled:h,sizeOptimizationEnabled:w,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:b,renderer:r}}async function be(e){const a="regenerate-color-class-breaks-renderer";await g(e,a);const r=await T(e);if("color-class-breaks"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o,field:n,normalizationField:l,normalizationType:s,normalizationTotal:t,valueExpression:u,valueExpressionTitle:m}=r,{classificationMethod:c,standardDeviationInterval:d}=o,p=r.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:h,signal:w}=e,b=z(r),E=await ce({layer:f,field:n,valueExpression:u,valueExpressionTitle:m,normalizationType:s,normalizationField:l,normalizationTotal:t,classificationMethod:c,standardDeviationInterval:d,numClasses:p,outlineOptimizationEnabled:b,defaultSymbolEnabled:!!r.defaultSymbol,forBinning:y,filter:v,view:h,signal:w});return{...e,creatorParameters:E,renderer:r}}async function ge(e){const a="regenerate-color-age-renderer";await g(e,a);const r=await T(e);if("color-age"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o}=r,n=o?.visualVariables.find(e=>"color"===e.type),l=n.startTime,s=n.endTime,t=n.units,u=n.theme,{layer:m,filter:c,view:d,signal:p}=e,f=z(r),y=E(r),v=await ve({layer:m,startTime:l,endTime:s,unit:t,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:c,view:d,signal:p});return{...e,creatorParameters:v,renderer:r}}async function Te(e,i){let a=e.colorScheme,r=null,o=null;const{view:n}=e,l=await W(e.basemap,n);if(r=null!=l.basemapId?l.basemapId:null,o=null!=l.basemapTheme?l.basemapTheme:null,a)return{scheme:ie(a),basemapId:r,basemapTheme:o};const s=e.theme||le,t=re({theme:s,basemapTheme:o,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(r=t.basemapId,o=t.basemapTheme,e.schemeId){const i=s+"/"+r+"/"+e.schemeId;a=oe({id:i,geometryType:e.geometryType})}else a=t.primaryScheme;return{scheme:a,basemapId:r,basemapTheme:o}}function xe(e,i){const a=ne(e);return ae({geometryType:i},void 0,a.commonProps,a.colorRampInfo)}async function ze(a,r){const o=r.layer,n=await Te({basemap:r.basemap,colorScheme:r.colorScheme,geometryType:o.geometryType,schemeId:"elevation"===r.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),l=n.scheme;if(!l)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const s=e(l.colors,te);if(s.length<te)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=L(a,!1,!0),u=t?A(t[0],t[1],5):G(a);return{stops:c({values:u,isDate:!1,colors:s,labelIndexes:[0,2,4]}),basemapId:n.basemapId,basemapTheme:n.basemapTheme,statistics:a,defaultValuesUsed:!!t,colorScheme:ie(l)}}function Ee(e,i,a,r){const o=R(e,i,a,!0);return{values:U(o,e,i,r),defaultValuesUsed:o.defaultValuesUsed}}async function Ve(a,o,n,l){const{field:s,theme:m}=a,c=await Te({basemap:a.basemap,theme:a.theme,geometryType:n,colorScheme:a.colorScheme,worldScale:a.worldScale,view:a.view}),y=c.scheme;if(!y)throw new i("color-visual-variable:insufficient-info","Unable to find color scheme");const v=e(y.colors,te);if(v.length<te)throw new i("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const h=y.id.includes("seq-"),{values:w,defaultValuesUsed:b}=Ee(o,m,l,h),g=e(v,te),T=new d({field:s??void 0,valueExpression:a.valueExpression,valueExpressionTitle:a.valueExpressionTitle,normalizationField:a.normalizationField,stops:w.map((e,i)=>new p({value:e,color:g[i]})),legendOptions:r(f,a.legendOptions)}),x=new u({type:"color",minSliderValue:null!=a.minValue?a.minValue:o.min,maxSliderValue:null!=a.maxValue?a.maxValue:o.max,theme:y.theme}),z=new t({visualVariables:[x]});return{basemapId:c.basemapId,basemapTheme:c.basemapTheme,visualVariable:T,statistics:o,defaultValuesUsed:b,colorScheme:ie(y),authoringInfo:z}}async function Ie(e,i,a,r,l,s,t){const u=await o("esri/smartMapping/t9n/smartMapping"),{field:m,defaultSymbolEnabled:c}=t,d=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 n({classBreakInfos:[{minValue:-se,maxValue:se,symbol:C(s,{type:t.symbolType,color:d.noDataColor,size:D(d,s),outline:P(d,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:c?u.other:null,defaultSymbol:c?C(s,{type:t.symbolType,color:d.noDataColor,size:D(d,s),outline:P(d,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:m,normalizationType:r,normalizationField:l,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 Se(e){const i=await ue(e),{view:a,field:r,valueExpression:o,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:u,filter:m,statistics:c}=i,d=t?"field":void 0,p=await(c??M({layer:s,field:r,valueExpression:o,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:t,minValue:n,maxValue:l,filter:m,view:a,signal:u})),f=s,y=r&&"function"!=typeof r?f.getField(r):null;return Ve(i,p,f.geometryType,N(y))}async function Me(i){const{view:a,filter:r,creatorParameters:o,renderer:n,signal:l}=await he(i),s=n.authoringInfo?.clone(),t=s?.visualVariables.find(e=>"color"===e.type),u=n.visualVariables?.find(e=>"color"===e.type),{field:m,normalizationField:c,valueExpression:d,theme:f,layer:y}=o,v=await M({layer:y,field:m,valueExpression:d,normalizationField:c,filter:r,view:a,signal:l}),h=m&&"function"!=typeof m?y.getField(m):null,{values:w}=Ee(v,f,N(h),"high-to-low"===f);if(w.length===u.stops.length)u.stops.forEach((e,i)=>e.value=w[i]);else{const i=u.stops.map(e=>e.color),a=e(i,te);u.stops=w.map((e,i)=>new p({value:e,color:a[i]}))}return t&&(t.minSliderValue=v.min,t.maxSliderValue=v.max),{visualVariable:u,authoringInfo:s,statistics:v}}function Be(i,r){const o=i.colorsForClassBreaks;if(o?.length)for(const e of o)if(e.numClasses===r)return a(e.colors);return e(i.colors,r)}async function Oe(e,a){const r=await o("esri/smartMapping/t9n/smartMapping"),l=e.layer,s=e.defaultSymbolEnabled,u=l.geometryType,c=e.classificationMethod,d="standard-deviation"===c,p=await Te({basemap:e.basemap,geometryType:u,theme:d?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),f=p.scheme,{result:y,outlineResult:v}=a,h=y.classBreakInfos,w=e.normalizationType;if(!f)throw new i("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const b=Be(f,h.length);if(!b||b.length!==h.length)throw new i("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=v?.opacity,T=new n({classBreakInfos:h.map((i,a)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:C(u,{type:e.symbolType,color:b[a],size:D(f,u),outline:P(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label})),defaultLabel:s?r.other:null,defaultSymbol:s?C(u,{type:e.symbolType,color:f.noDataColor,size:D(f,u),outline:P(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:c,standardDeviationInterval:e.standardDeviationInterval})});return d||m({classBreakInfos:T.classBreakInfos,classificationMethod:c,normalizationType:w,round:!0}),v?.visualVariables?.length&&(T.visualVariables=v.visualVariables.map(e=>e.clone())),{renderer:T,colorScheme:ie(f),classBreaksResult:y,defaultValuesUsed:a.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function je(e){const i=await me(e),{layer:a,view:r,signal:o,filter:n}=i,[l,s,t]=await Promise.all([Se(ye(i)),i.outlineOptimizationEnabled?v({layer:a,view:r,signal:o,filter:n}).catch(B):null,i.sizeOptimizationEnabled?h({layer:a,view:r,signal:o,filter:n}).catch(B):null]),u=i.normalizationField;return Ie(l,s,t,u?"field":void 0,u,a.geometryType,i)}async function ke(e){const{renderer:i,view:a,signal:r,filter:o,creatorParameters:n}=await we(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t}=n,[u,m,c]=await Promise.all([Me(e),s?v({layer:l,view:a,signal:r,filter:o}).catch(B):null,t?h({layer:l,view:a,signal:r,filter:o}).catch(B):null]);return w(i,u.visualVariable,V),w(i,m?.visualVariables,I),w(i,c?.minSize,S),b(i,u.authoringInfo,"color"),{renderer:i}}async function Fe(e){const i=await ce(e);return Oe(i,await O(de(i),i.outlineOptimizationEnabled))}async function qe(e){const{renderer:i,creatorParameters:a}=await be(e),{normalizationType:r,outlineOptimizationEnabled:o,classificationMethod:n}=a;if("manual"===n)return{renderer:i};const l=await O(de(a),o),s=l.result.classBreakInfos;if(a.numClasses!==s.length){const e=xe(i.classBreakInfos.map(e=>e.symbol),a.layer.geometryType);return{renderer:(await Oe({...a,colorScheme:e},l)).renderer}}return i.classBreakInfos.forEach((e,i)=>{e.minValue=s[i].minValue,e.maxValue=s[i].maxValue,e.label=s[i].label}),i.normalizationTotal="percent-of-total"===r?l.result.normalizationTotal:void 0,"standard-deviation"!==n&&m({classBreakInfos:i.classBreakInfos,classificationMethod:n,normalizationType:r,round:!0}),w(i,l.outlineResult?.visualVariables,I),{renderer:i}}function Re(e){return pe(e).then(e=>({renderer:new l({field:"RGB",pointsPerInch:e.density??void 0,pointSizeAlgorithm:j(e.size)})}))}async function Ue(e){const i=await fe(e),a=i.statistics??await M({layer:i.layer,field:i.field,signal:i.signal}),r=await ze(a,i);return{renderer:new s({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:j(i.size),stops:r.stops}),basemapId:r.basemapId,basemapTheme:r.basemapTheme,statistics:r.statistics,defaultValuesUsed:r.defaultValuesUsed,colorScheme:r.colorScheme}}async function Ce(e){const i=await ve(e),{defaultSymbolEnabled:a,view:r,startTime:o,endTime:n,symbolType:l,colorMixMode:s,edgesType:t,minValue:u,maxValue:m,signal:c,filter:d}=i,p=i.layer,[f,w,b]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:y({view:r,layer:p,startTime:o,endTime:n,minValue:u,maxValue:m,signal:c,filter:d}),i.outlineOptimizationEnabled?v({layer:p,view:r,signal:c,filter:d}).catch(B):null,i.sizeOptimizationEnabled?h({layer:p,view:r,signal:c,filter:d}).catch(B):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:z}=await k(i,g),E=await Se(ye({layer:p,basemap:i.basemap,valueExpression:x,symbolType:l,statistics:T,legendOptions:{title:z},colorScheme:i.colorScheme,theme:i.theme,view:r,minValue:i.minValue,maxValue:i.maxValue,filter:d,signal:c})),V={valueExpression:x,defaultSymbolEnabled:a,symbolType:l,colorMixMode:s,edgesType:t},I=await Ie(E,w,b,null,null,p.geometryType,V),S=I.renderer.authoringInfo?.visualVariables;return S?.forEach(e=>F(e,o,n,g)),{...I,unit:g}}async function Pe(e){const{renderer:i,creatorParameters:a}=await ge(e),{layer:r,outlineOptimizationEnabled:o,sizeOptimizationEnabled:n,startTime:l,endTime:s,theme:t,view:u,signal:m,filter:c}=a,[d,p,f]=await Promise.all([y({view:u,layer:r,startTime:l,endTime:s,signal:m,filter:c}),o?v({layer:r,view:u,signal:m,filter:c}).catch(B):null,n?h({layer:r,view:u,signal:m,filter:c}).catch(B):null]),{unit:b,statistics:g}=d,{valueExpression:T,title:x}=await k(a,b),z=await Se(ye({layer:r,valueExpression:T,statistics:g,legendOptions:{title:x},theme:t,view:u,filter:c,signal:m}));w(i,z.visualVariable,V),w(i,p?.visualVariables,I),w(i,f?.minSize,S),i.authoringInfo=z.authoringInfo.clone();const E=i.authoringInfo?.visualVariables;return E?.forEach(e=>F(e,l,s,b)),{renderer:i}}export{Ce as createAgeRenderer,Fe as createClassBreaksRenderer,je as createContinuousRenderer,Ue as createPCContinuousRenderer,Re as createPCTrueColorRenderer,Se as createVisualVariable,Pe as regenerateAgeRenderer,qe as regenerateClassBreaksRenderer,ke as regenerateContinuousRenderer,Me 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.34/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../core/Error.js";import i from"../../renderers/SimpleRenderer.js";import o from"../heuristics/outline.js";import r from"../heuristics/sizeRange.js";import{errorCallback as a,createSymbol as n,getSymbolOutlineFromScheme as l,getSymbolSizeFromScheme as s,getBasemapInfo as t}from"./support/utils.js";import{verifyBinningParams as m}from"../support/binningUtils.js";import{binningCapableLayerTypes as p,featureCapableLayerTypes as c,createLayerAdapter as u,getLayerTypeLabels as y}from"../support/adapters/support/layerUtils.js";import{cloneScheme as d,getSchemes as b}from"../symbology/location.js";async function f(i){if(!i?.layer)throw new e("location-renderer:missing-parameters","'layer' parameter is required");i.forBinning&&m(i,"location-renderer");const o={...i,layer:i.layer};o.symbolType=o.symbolType||"2d";const r=i.forBinning?p:c,a=u(o.layer,r,i.forBinning);if(!a)throw new e("location-renderer:invalid-parameters","'layer' must be one of these types: "+y(r).join(", "));o.layer=a;const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);const l=a.geometryType;if(o.outlineOptimizationEnabled="polygon"===l&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&o.sizeOptimizationEnabled,"mesh"===l)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==l)throw new e("location-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new e("location-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}return o}async function h(e,i){let o=e.locationScheme,r=null,a=null;const n=await t(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,o)return{scheme:d(o),basemapId:r,basemapTheme:a};const l=b({basemapTheme:a,geometryType:i,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view});return l&&(o=l.primaryScheme,r=l.basemapId,a=l.basemapTheme),{scheme:o,basemapId:r,basemapTheme:a}}async function w(t){const m=await f(t),p=m.layer.geometryType,c=await h(m,p),u=c.scheme;if(!u)throw new e("location-renderer:insufficient-info","Unable to find location scheme");const{view:y,layer:b,signal:w,filter:v}=m,[T,g]=await Promise.all([m.outlineOptimizationEnabled?o({view:y,layer:b,signal:w,filter:v}).catch(a):null,m.sizeOptimizationEnabled?r({view:y,layer:b,signal:w,filter:v}).catch(a):null]),z=T?.opacity,j=new i({symbol:n(p,{type:m.symbolType,color:u.color,size:s(u,p),outline:l(u,p,z),meshInfo:{colorMixMode:m.colorMixMode,edgesType:m.edgesType}})});return T?.visualVariables.length&&(j.visualVariables=T.visualVariables.map(e=>e.clone())),g?.minSize&&(j.visualVariables?j.visualVariables.push(g.minSize):j.visualVariables=[g.minSize]),{renderer:j,locationScheme:d(u),basemapId:c.basemapId,basemapTheme:c.basemapTheme}}export{w as createRenderer};
5
+ import e from"../../core/Error.js";import i from"../../renderers/SimpleRenderer.js";import o from"../heuristics/outline.js";import r from"../heuristics/sizeRange.js";import{errorCallback as a,createSymbol as n,getSymbolOutlineFromScheme as l,getSymbolSizeFromScheme as t,getBasemapInfo as s}from"./support/utils.js";import{verifyBinningParams as m}from"../support/binningUtils.js";import{binningCapableLayerTypes as p,featureCapableLayerTypes as c,createLayerAdapter as u,getLayerTypeLabels as y}from"../support/adapters/support/layerUtils.js";import{cloneScheme as d,getSchemes as b}from"../symbology/location.js";async function f(i){if(!i?.layer)throw new e("location-renderer:missing-parameters","'layer' parameter is required");i.forBinning&&m(i,"location-renderer");const o={...i,layer:i.layer};o.symbolType=o.symbolType||"2d";const r=i.forBinning?p:c,a=u(o.layer,r,i.forBinning);if(!a)throw new e("location-renderer:invalid-parameters","'layer' must be one of these types: "+y(r).join(", "));o.layer=a;const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);const l=a.geometryType;o.outlineOptimizationEnabled="polygon"===l&&o.outlineOptimizationEnabled;const t="featureReduction"in i.layer&&"cluster"===i.layer.featureReduction?.type;if(o.sizeOptimizationEnabled=!("point"!==l&&"multipoint"!==l&&"polyline"!==l||t)&&o.sizeOptimizationEnabled,"mesh"===l)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==l)throw new e("location-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new e("location-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}return o}async function h(e,i){let o=e.locationScheme,r=null,a=null;const n=await s(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,o)return{scheme:d(o),basemapId:r,basemapTheme:a};const l=b({basemapTheme:a,geometryType:i,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view});return l&&(o=l.primaryScheme,r=l.basemapId,a=l.basemapTheme),{scheme:o,basemapId:r,basemapTheme:a}}async function w(s){const m=await f(s),p=m.layer.geometryType,c=await h(m,p),u=c.scheme;if(!u)throw new e("location-renderer:insufficient-info","Unable to find location scheme");const{view:y,layer:b,signal:w,filter:v}=m,[T,g]=await Promise.all([m.outlineOptimizationEnabled?o({view:y,layer:b,signal:w,filter:v}).catch(a):null,m.sizeOptimizationEnabled?r({view:y,layer:b,signal:w,filter:v}).catch(a):null]),z=T?.opacity,j=new i({symbol:n(p,{type:m.symbolType,color:u.color,size:t(u,p),outline:l(u,p,z),meshInfo:{colorMixMode:m.colorMixMode,edgesType:m.edgesType}})});return T?.visualVariables.length&&(j.visualVariables=T.visualVariables.map(e=>e.clone())),g?.minSize&&(j.visualVariables?j.visualVariables.push(g.minSize):j.visualVariables=[g.minSize]),{renderer:j,locationScheme:d(u),basemapId:c.basemapId,basemapTheme:c.basemapTheme}}export{w 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.34/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 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,updateAuthoringInfoVisualVariable as c,processRegenerateParams as y,getRendererToUpdate as f,getStyleType as b,hasOutlineVV as g,hasScaleDependentSizeVV as h,isSizeVV as v,findOutlineVVIndex as w,findSizeVVIndex as z,findOpacityVVIndex 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 P}from"../support/adapters/support/layerUtils.js";import{cloneScheme as A,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: "+P(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",r=e.includedParts?.includes("size-variable")??!0;await y(e,a);const n=await f(e);if("predominance"!==b(n))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{visualVariables:l}=n,{layer:s,forBinning:o,filter:t,view:p,signal:m}=e,d=g(n),u=h(n),c=r&&l?.some(v),w=l?.some(e=>"opacity"===e.type),z=n.authoringInfo,V=z?.fields?.map(e=>({name:e}));if(!V?.length)throw new i(`${a}:invalid-parameters`,"Fields are required");const T=await W({layer:s,fields:V,outlineOptimizationEnabled:d,sizeOptimizationEnabled:u,includeSizeVariable:c,includeOpacityVariable:w,forBinning:o,filter:t,view:p,signal:m});return{...e,creatorParameters:T,renderer:n}}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:A(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:v,basemapId:w,basemapTheme:z,uniqueValueInfos:V,excludedUniqueValueInfos:E}=h,S=v.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;v.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&&(v.visualVariables=f.visualVariables.map(e=>e.clone())),v.authoringInfo=new r({type:"predominance",fields:[...s]}),{renderer:v,predominantCategoryInfos:V,excludedCategoryInfos:E,predominanceScheme:l,basemapId:w,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,y=o.map(e=>e.name),f=M(s,y),b=(await F({geometryType:s.geometryType,numColors:i.fields.length,view:i.view})).scheme,g=b&&"sizeScheme"in b?b.sizeScheme:null,[h,v,E]=await Promise.all([t?p({layer:s,view:a,signal:r,filter:n}).catch(T):null,m?$(i,f.size,g):null,d?L(i,f.opacity):null]);return u(l,h?.visualVariables,w),u(l,v?.visualVariables,z),u(l,E?.visualVariable,V),c(l,v?.authoringInfo,"size"),c(l,E?.authoringInfo,"opacity"),{renderer:l}}export{D as createRenderer,G as regenerateRenderer};
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,updateAuthoringInfoVisualVariable as c,processRegenerateParams as y,getRendererToUpdate as f,getStyleType as b,hasOutlineVV as g,hasScaleDependentSizeVV as h,isSizeVV as v,findOutlineVVIndex as w,findSizeVVIndex as z,findOpacityVVIndex 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 P}from"../support/adapters/support/layerUtils.js";import{cloneScheme as A,getSchemes as Q}from"../symbology/predominance.js";async function R(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: "+P(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){const i="featureReduction"in e.layer&&"cluster"===e.layer.featureReduction?.type;a.sizeOptimizationEnabled=!("point"!==s&&"multipoint"!==s&&"polyline"!==s||i)&&a.sizeOptimizationEnabled}if("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 W(e){const a="regenerate-predominance-renderer",r=e.includedParts?.includes("size-variable")??!0;await y(e,a);const n=await f(e);if("predominance"!==b(n))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{visualVariables:l}=n,{layer:s,forBinning:o,filter:t,view:p,signal:m}=e,d=g(n),u=h(n),c=r&&l?.some(v),w=l?.some(e=>"opacity"===e.type),z=n.authoringInfo,V=z?.fields?.map(e=>({name:e}));if(!V?.length)throw new i(`${a}:invalid-parameters`,"Fields are required");const T=await R({layer:s,fields:V,outlineOptimizationEnabled:d,sizeOptimizationEnabled:u,includeSizeVariable:c,includeOpacityVariable:w,forBinning:o,filter:t,view:p,signal:m});return{...e,creatorParameters:T,renderer:n}}async function k(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:A(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 F(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:v,basemapId:w,basemapTheme:z,uniqueValueInfos:V,excludedUniqueValueInfos:E}=h,S=v.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;v.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&&(v.visualVariables=f.visualVariables.map(e=>e.clone())),v.authoringInfo=new r({type:"predominance",fields:[...s]}),{renderer:v,predominantCategoryInfos:V,excludedCategoryInfos:E,predominanceScheme:l,basemapId:w,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 R(e),a=i.layer,n=(await k({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=F(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 W(e),{layer:s,fields:o,outlineOptimizationEnabled:t,includeSizeVariable:m,includeOpacityVariable:d}=i,y=o.map(e=>e.name),f=M(s,y),b=(await k({geometryType:s.geometryType,numColors:i.fields.length,view:i.view})).scheme,g=b&&"sizeScheme"in b?b.sizeScheme:null,[h,v,E]=await Promise.all([t?p({layer:s,view:a,signal:r,filter:n}).catch(T):null,m?$(i,f.size,g):null,d?L(i,f.opacity):null]);return u(l,h?.visualVariables,w),u(l,v?.visualVariables,z),u(l,E?.visualVariable,V),c(l,v?.authoringInfo,"size"),c(l,E?.authoringInfo,"opacity"),{renderer:l}}export{D as createRenderer,G 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.34/esri/copyright.txt for details.
4
4
  */
5
- import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as a}from"../../core/lang.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import l from"../../renderers/support/AuthoringInfo.js";import{AuthoringInfoClassBreakInfo as r}from"../../renderers/support/AuthoringInfoClassBreakInfo.js";import{AuthoringInfoFieldInfo as s}from"../../renderers/support/AuthoringInfoFieldInfo.js";import o from"../heuristics/outline.js";import t from"../heuristics/sizeRange.js";import{createRenderer as d}from"./type.js";import{spliceVisualVariables as m,processRegenerateParams as u,getRendererToUpdate as f,getStyleType as p,hasOutlineVV as c,hasScaleDependentSizeVV as h,findOutlineVVIndex as y,findScaleDependentSizeVVIndex as w}from"./support/regenerateUtils.js";import{errorCallback as b,verifyBasicFieldValidity as v,getClassBreaks as g,getBasemapInfo as I}from"./support/utils.js";import{verifyBinningParams as z}from"../support/binningUtils.js";import{binningCapableLayerTypes as M,featureCapableLayerTypes as F,createLayerAdapter as V,getLayerTypeLabels as T}from"../support/adapters/support/layerUtils.js";import{getColors as k,flatten2DArray as H,cloneScheme as L,getSchemes as C}from"../symbology/relationship.js";import{applyColorToSymbol as E}from"../../symbols/support/utils.js";const B=new Set(["equal-interval","natural-breaks","quantile"]),x=new Set(["HH","HL","LH","LL"]),$={2:[["HL","HH"],["LL","LH"]],3:[["HL","HM","HH"],["ML","MM","MH"],["LL","LM","LH"]],4:[["HL","HM1","HM2","HH"],["M2L","M2M1","M2M2","M2H"],["M1L","M1M1","M1M2","M1H"],["LL","LM1","LM2","LH"]]},O={2:["L","H"],3:["L","M","H"],4:["L","M1","M2","H"]},S=e=>({minValue:e.minValue,maxValue:e.maxValue});async function j(e){if(!(e?.layer&&e.view&&e.field1&&e.field2))throw new i("relationship-renderer:missing-parameters","'layer', 'view', 'field1' and 'field2' parameters are required");e.forBinning&&z(e,"relationship-renderer");const a={...e,layer:e.layer,field1:e.field1,field2:e.field2};if(a.symbolType??="2d",a.defaultSymbolEnabled??=!0,a.classificationMethod??="quantile",a.numClasses??=3,a.focus??=null,!B.has(a.classificationMethod))throw new i("relationship-renderer:invalid-parameters",`classification method ${a.classificationMethod} is not supported`);if(a.numClasses<2||a.numClasses>4)throw new i("relationship-renderer:invalid-parameters","'numClasses' must be 2, 3 or 4");if(e.focus&&!x.has(e.focus))throw new i("relationship-renderer:invalid-parameters","'focus' must be 'HH', 'HL', 'LH', 'LL' or null");const n=e.forBinning?M:F,l=V(a.layer,n,e.forBinning);if(!l)throw new i("relationship-renderer:invalid-parameters","'layer' must be one of these types: "+T(n).join(", "));const r=null!=a.signal?{signal:a.signal}:null;await l.load(r);const s=l.geometryType,o=a.symbolType.includes("3d");if(a.outlineOptimizationEnabled="polygon"===s&&a.outlineOptimizationEnabled,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";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==s)throw new i("relationship-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o&&"polygon"===s)throw new i("relationship-renderer:not-supported","3d symbols are not supported for polygon layers");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("relationship-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const{field1:t,field2:d}=a,m=[t.field,d.field];t.normalizationField&&m.push(t.normalizationField),d.normalizationField&&m.push(d.normalizationField);const u=v(l,m,"relationship-renderer:invalid-parameters");if(u)throw u;return{...a,layer:l}}async function q(e){const a="regenerate-relationship-renderer";await u(e,a);const n=await f(e),l=p(n);if(!l||!["relationship","relationship-size"].includes(l))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{layer:r,forBinning:s,filter:o,view:t,signal:d}=e,m=c(n),y=h(n),{field1:w,field2:b,classificationMethod:v,focus:g,numClasses:I}=n.authoringInfo,z={field:w.field,normalizationField:w.normalizationField,label:w.label},M={field:b.field,normalizationField:b.normalizationField,label:b.label},F=await j({layer:r,field1:z,field2:M,classificationMethod:v,numClasses:I,focus:g,outlineOptimizationEnabled:m,sizeOptimizationEnabled:y,forBinning:s,filter:o,view:t,signal:d});return{...e,creatorParameters:F,renderer:n}}async function N(e){if(!e?.renderer||!e.numClasses)throw new i("update-relationship-renderer:missing-parameters","'renderer' and 'numClasses' parameters are required");const{field1:a,field2:n,renderer:l,numClasses:r,colors:s}=e,o=r**2;if((a||n)&&!(a&&n&&a.field&&n.field))throw new i("update-relationship-renderer:missing-parameters","'field1' and 'field2' parameters are required");if(a&&!a.classBreakInfos||n&&!n.classBreakInfos)throw new i("update-relationship-renderer:missing-parameters","'field1.classBreakInfos' and 'field2.classBreakInfos' are required");if(!l.authoringInfo)throw new i("update-relationship-renderer:missing-parameters","'renderer.authoringInfo' is required");if(l.uniqueValueInfos?.length!==o)throw new i("update-relationship-renderer:invalid-parameters",`Renderer must have ${o} unique value infos to support ${r} classes`);if(s&&s.length!==o)throw new i("update-relationship-renderer:invalid-parameters",`The scheme must have ${o} colors`);return e}async function P(e){let i=e.relationshipScheme,a=null,n=null;const l=await I(e.basemap,e.view);if(a=null!=l.basemapId?l.basemapId:null,n=null!=l.basemapTheme?l.basemapTheme:null,i)return{scheme:L(i),basemapId:a,basemapTheme:n};const r=C({basemapTheme:n,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return r&&(i=r.primaryScheme,a=r.basemapId,n=r.basemapTheme),{scheme:i,basemapId:a,basemapTheme:n}}function R(e,i){const n=a($[e]);return H(n,i)}function U(e,i){return R(e,i).map(e=>({value:e,count:0}))}function A(e,i,a,n){const{field:l,normalizationField:r}=e,{field:s,normalizationField:o}=i,t=a.map(e=>[e.minValue,e.maxValue]),d=n.map(e=>[e.minValue,e.maxValue]),m=t.length,u=O[m];return`\n var field1 = $feature['${l}'];\n var field2 = $feature['${s}'];\n var hasNormField1 = ${r?"true":"false"};\n var hasNormField2 = ${o?"true":"false"};\n var normField1 = ${r?`$feature['${r}']`:"null"};\n var normField2 = ${o?`$feature['${o}']`:"null"};\n\n if (\n IsEmpty(field1) ||\n IsEmpty(field2) ||\n (hasNormField1 && (IsEmpty(normField1) || normField1 == 0)) ||\n (hasNormField2 && (IsEmpty(normField2) || normField2 == 0))\n ) {\n return null;\n }\n\n var value1 = IIf(hasNormField1, (field1 / normField1), field1);\n var value2 = IIf(hasNormField2, (field2 / normField2), field2);\n\n var breaks1 = ${JSON.stringify(t)};\n var breaks2 = ${JSON.stringify(d)};\n var classCodes = ${JSON.stringify(u)};\n\n function getClassCode(value, breaks) {\n var code = null;\n\n for (var i in breaks) {\n var info = breaks[i];\n if (value >= info[0] && value <= info[1]) {\n code = classCodes[i];\n break;\n }\n }\n\n return code;\n }\n\n var code1 = getClassCode(value1, breaks1);\n var code2 = getClassCode(value2, breaks2);\n\n var classValue = IIf(IsEmpty(code1) || IsEmpty(code2), null, code1 + code2);\n return classValue;\n `}async function J(e,a,o){const t=await n("esri/smartMapping/t9n/smartMapping"),{basemap:m,classificationMethod:u,field1:f,field2:p,focus:c,numClasses:h,signal:y}=e,w=e.layer,b=a.classBreakInfos,v=o.classBreakInfos;if(h!==b.length||b.length!==v.length)throw new i("relationship-renderer:error","incompatible class breaks");const g=U(h,c),I=A(e.field1,e.field2,b,v),z=(await P({basemap:m,geometryType:w.geometryType,theme:"default",relationshipScheme:e.relationshipScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view})).scheme,M=await d({layer:w,basemap:m,valueExpression:I,valueExpressionTitle:t.relationship.legendTitle,numTypes:-1,sortEnabled:!1,defaultSymbolEnabled:e.defaultSymbolEnabled,typeScheme:{colors:k(z,h,c),...z},statistics:{uniqueValueInfos:g},legendOptions:e.legendOptions,outlineOptimizationEnabled:e.outlineOptimizationEnabled,sizeOptimizationEnabled:e.sizeOptimizationEnabled,symbolType:e.symbolType,colorMixMode:e.colorMixMode,edgesType:e.edgesType,filter:e.filter,view:e.view,signal:y}),F=M.renderer,V=F.uniqueValueInfos,T=t.relationship;for(const i of V??[])i.label=T[i.value];const H=new l({type:"relationship",classificationMethod:u,numClasses:h,focus:c,field1:new s({field:f.field,normalizationField:f.normalizationField,label:f.label,classBreakInfos:b.map(({minValue:e,maxValue:i})=>new r({minValue:e,maxValue:i}))}),field2:new s({field:p.field,normalizationField:p.normalizationField,label:p.label,classBreakInfos:v.map(({minValue:e,maxValue:i})=>new r({minValue:e,maxValue:i}))})});return F.authoringInfo=H,{renderer:F,classBreaks:{field1:a,field2:o},uniqueValueInfos:M.uniqueValueInfos,relationshipScheme:z,basemapId:M.basemapId,basemapTheme:M.basemapTheme}}function D(e,i,a){const n=R(i,a);e.sort((e,i)=>{const a=n.indexOf(e.value),l=n.indexOf(i.value);let r=0;return a<l?r=-1:a>l&&(r=1),r})}function G(e,i){e.authoringInfo??=new l;const a=e.authoringInfo;a.numClasses=i.numClasses,a.focus=i.focus||null,a.focus||delete a.focus;const{field1:n,field2:o}=i;a.field1=new s({field:n.field,normalizationField:n.normalizationField,label:n.label,classBreakInfos:n.classBreakInfos.map(e=>new r(S(e)))}),a.field2=new s({field:o.field,normalizationField:o.normalizationField,label:o.label,classBreakInfos:o.classBreakInfos.map(e=>new r(S(e)))}),e.authoringInfo=a}async function K(e){const{layer:a,classificationMethod:n,field1:l,field2:r,numClasses:s,filter:o,view:t,signal:d}=e,m={layer:a,classificationMethod:n,field:l.field,normalizationField:l.normalizationField,normalizationType:l.normalizationField?"field":null,minValue:l.minValue,maxValue:l.maxValue,analyzeData:!(null!=l.minValue&&null!=l.maxValue),numClasses:s,filter:o,view:t,signal:d},u={layer:a,classificationMethod:n,field:r.field,normalizationField:r.normalizationField,normalizationType:r.normalizationField?"field":null,minValue:r.minValue,maxValue:r.maxValue,analyzeData:!(null!=r.minValue&&null!=r.maxValue),numClasses:s,filter:o,view:t,signal:d},[f,p]=await Promise.all([g(m),g(u)]);if(!f||!p)throw new i("relationship-renderer:error","error when calculating class breaks");return{field1:f.result,field2:p.result}}async function Q(i){const a=await N(i),{field1:n,field2:l,renderer:r,numClasses:s,focus:o,colors:t}=a,d=r.clone();d.valueExpression=A(n,l,n.classBreakInfos,l.classBreakInfos);const m=d.uniqueValueInfos??[];if(D(m,s,o),t){const i=e(t,t.length);m.forEach((e,a)=>E(e.symbol,i[a]))}return G(d,a),d}async function W(e){const i=await j(e),{field1:a,field2:n}=await K(i);return J(i,a,n)}async function X(e){const{creatorParameters:i,view:a,signal:n,filter:l,renderer:r}=await q(e),{layer:s,field1:d,field2:u,numClasses:f,focus:p,outlineOptimizationEnabled:c,sizeOptimizationEnabled:h}=i,{field1:v,field2:g}=await K(i),[I,z,M]=await Promise.all([Q({field1:{...d,classBreakInfos:v.classBreakInfos},field2:{...u,classBreakInfos:g.classBreakInfos},renderer:r,numClasses:f,focus:p}),c?o({layer:s,view:a,signal:n,filter:l}).catch(b):null,h?t({layer:s,view:a,signal:n,filter:l}).catch(b):null]);return m(I,z?.visualVariables,y),m(I,M?.minSize,w),{renderer:I}}export{W as createRenderer,X as regenerateRenderer,Q as updateRenderer};
5
+ import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as a}from"../../core/lang.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import l from"../../renderers/support/AuthoringInfo.js";import{AuthoringInfoClassBreakInfo as r}from"../../renderers/support/AuthoringInfoClassBreakInfo.js";import{AuthoringInfoFieldInfo as s}from"../../renderers/support/AuthoringInfoFieldInfo.js";import o from"../heuristics/outline.js";import t from"../heuristics/sizeRange.js";import{createRenderer as d}from"./type.js";import{spliceVisualVariables as m,processRegenerateParams as u,getRendererToUpdate as f,getStyleType as p,hasOutlineVV as c,hasScaleDependentSizeVV as h,findOutlineVVIndex as y,findScaleDependentSizeVVIndex as w}from"./support/regenerateUtils.js";import{errorCallback as b,verifyBasicFieldValidity as v,getClassBreaks as g,getBasemapInfo as I}from"./support/utils.js";import{verifyBinningParams as z}from"../support/binningUtils.js";import{binningCapableLayerTypes as M,featureCapableLayerTypes as F,createLayerAdapter as V,getLayerTypeLabels as T}from"../support/adapters/support/layerUtils.js";import{getColors as k,flatten2DArray as H,cloneScheme as L,getSchemes as C}from"../symbology/relationship.js";import{applyColorToSymbol as E}from"../../symbols/support/utils.js";const B=new Set(["equal-interval","natural-breaks","quantile"]),x=new Set(["HH","HL","LH","LL"]),$={2:[["HL","HH"],["LL","LH"]],3:[["HL","HM","HH"],["ML","MM","MH"],["LL","LM","LH"]],4:[["HL","HM1","HM2","HH"],["M2L","M2M1","M2M2","M2H"],["M1L","M1M1","M1M2","M1H"],["LL","LM1","LM2","LH"]]},O={2:["L","H"],3:["L","M","H"],4:["L","M1","M2","H"]},S=e=>({minValue:e.minValue,maxValue:e.maxValue});async function j(e){if(!(e?.layer&&e.view&&e.field1&&e.field2))throw new i("relationship-renderer:missing-parameters","'layer', 'view', 'field1' and 'field2' parameters are required");e.forBinning&&z(e,"relationship-renderer");const a={...e,layer:e.layer,field1:e.field1,field2:e.field2};if(a.symbolType??="2d",a.defaultSymbolEnabled??=!0,a.classificationMethod??="quantile",a.numClasses??=3,a.focus??=null,!B.has(a.classificationMethod))throw new i("relationship-renderer:invalid-parameters",`classification method ${a.classificationMethod} is not supported`);if(a.numClasses<2||a.numClasses>4)throw new i("relationship-renderer:invalid-parameters","'numClasses' must be 2, 3 or 4");if(e.focus&&!x.has(e.focus))throw new i("relationship-renderer:invalid-parameters","'focus' must be 'HH', 'HL', 'LH', 'LL' or null");const n=e.forBinning?M:F,l=V(a.layer,n,e.forBinning);if(!l)throw new i("relationship-renderer:invalid-parameters","'layer' must be one of these types: "+T(n).join(", "));const r=null!=a.signal?{signal:a.signal}:null;await l.load(r);const s=l.geometryType,o=a.symbolType.includes("3d");a.outlineOptimizationEnabled="polygon"===s&&a.outlineOptimizationEnabled;const t="featureReduction"in e.layer&&"cluster"===e.layer.featureReduction?.type;if(a.sizeOptimizationEnabled=!("point"!==s&&"multipoint"!==s&&"polyline"!==s||t)&&a.sizeOptimizationEnabled,"mesh"===s)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==s)throw new i("relationship-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o&&"polygon"===s)throw new i("relationship-renderer:not-supported","3d symbols are not supported for polygon layers");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("relationship-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const{field1:d,field2:m}=a,u=[d.field,m.field];d.normalizationField&&u.push(d.normalizationField),m.normalizationField&&u.push(m.normalizationField);const f=v(l,u,"relationship-renderer:invalid-parameters");if(f)throw f;return{...a,layer:l}}async function q(e){const a="regenerate-relationship-renderer";await u(e,a);const n=await f(e),l=p(n);if(!l||!["relationship","relationship-size"].includes(l))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{layer:r,forBinning:s,filter:o,view:t,signal:d}=e,m=c(n),y=h(n),{field1:w,field2:b,classificationMethod:v,focus:g,numClasses:I}=n.authoringInfo,z={field:w.field,normalizationField:w.normalizationField,label:w.label},M={field:b.field,normalizationField:b.normalizationField,label:b.label},F=await j({layer:r,field1:z,field2:M,classificationMethod:v,numClasses:I,focus:g,outlineOptimizationEnabled:m,sizeOptimizationEnabled:y,forBinning:s,filter:o,view:t,signal:d});return{...e,creatorParameters:F,renderer:n}}async function N(e){if(!e?.renderer||!e.numClasses)throw new i("update-relationship-renderer:missing-parameters","'renderer' and 'numClasses' parameters are required");const{field1:a,field2:n,renderer:l,numClasses:r,colors:s}=e,o=r**2;if((a||n)&&!(a&&n&&a.field&&n.field))throw new i("update-relationship-renderer:missing-parameters","'field1' and 'field2' parameters are required");if(a&&!a.classBreakInfos||n&&!n.classBreakInfos)throw new i("update-relationship-renderer:missing-parameters","'field1.classBreakInfos' and 'field2.classBreakInfos' are required");if(!l.authoringInfo)throw new i("update-relationship-renderer:missing-parameters","'renderer.authoringInfo' is required");if(l.uniqueValueInfos?.length!==o)throw new i("update-relationship-renderer:invalid-parameters",`Renderer must have ${o} unique value infos to support ${r} classes`);if(s&&s.length!==o)throw new i("update-relationship-renderer:invalid-parameters",`The scheme must have ${o} colors`);return e}async function R(e){let i=e.relationshipScheme,a=null,n=null;const l=await I(e.basemap,e.view);if(a=null!=l.basemapId?l.basemapId:null,n=null!=l.basemapTheme?l.basemapTheme:null,i)return{scheme:L(i),basemapId:a,basemapTheme:n};const r=C({basemapTheme:n,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return r&&(i=r.primaryScheme,a=r.basemapId,n=r.basemapTheme),{scheme:i,basemapId:a,basemapTheme:n}}function P(e,i){const n=a($[e]);return H(n,i)}function U(e,i){return P(e,i).map(e=>({value:e,count:0}))}function A(e,i,a,n){const{field:l,normalizationField:r}=e,{field:s,normalizationField:o}=i,t=a.map(e=>[e.minValue,e.maxValue]),d=n.map(e=>[e.minValue,e.maxValue]),m=t.length,u=O[m];return`\n var field1 = $feature['${l}'];\n var field2 = $feature['${s}'];\n var hasNormField1 = ${r?"true":"false"};\n var hasNormField2 = ${o?"true":"false"};\n var normField1 = ${r?`$feature['${r}']`:"null"};\n var normField2 = ${o?`$feature['${o}']`:"null"};\n\n if (\n IsEmpty(field1) ||\n IsEmpty(field2) ||\n (hasNormField1 && (IsEmpty(normField1) || normField1 == 0)) ||\n (hasNormField2 && (IsEmpty(normField2) || normField2 == 0))\n ) {\n return null;\n }\n\n var value1 = IIf(hasNormField1, (field1 / normField1), field1);\n var value2 = IIf(hasNormField2, (field2 / normField2), field2);\n\n var breaks1 = ${JSON.stringify(t)};\n var breaks2 = ${JSON.stringify(d)};\n var classCodes = ${JSON.stringify(u)};\n\n function getClassCode(value, breaks) {\n var code = null;\n\n for (var i in breaks) {\n var info = breaks[i];\n if (value >= info[0] && value <= info[1]) {\n code = classCodes[i];\n break;\n }\n }\n\n return code;\n }\n\n var code1 = getClassCode(value1, breaks1);\n var code2 = getClassCode(value2, breaks2);\n\n var classValue = IIf(IsEmpty(code1) || IsEmpty(code2), null, code1 + code2);\n return classValue;\n `}async function J(e,a,o){const t=await n("esri/smartMapping/t9n/smartMapping"),{basemap:m,classificationMethod:u,field1:f,field2:p,focus:c,numClasses:h,signal:y}=e,w=e.layer,b=a.classBreakInfos,v=o.classBreakInfos;if(h!==b.length||b.length!==v.length)throw new i("relationship-renderer:error","incompatible class breaks");const g=U(h,c),I=A(e.field1,e.field2,b,v),z=(await R({basemap:m,geometryType:w.geometryType,theme:"default",relationshipScheme:e.relationshipScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view})).scheme,M=await d({layer:w,basemap:m,valueExpression:I,valueExpressionTitle:t.relationship.legendTitle,numTypes:-1,sortEnabled:!1,defaultSymbolEnabled:e.defaultSymbolEnabled,typeScheme:{colors:k(z,h,c),...z},statistics:{uniqueValueInfos:g},legendOptions:e.legendOptions,outlineOptimizationEnabled:e.outlineOptimizationEnabled,sizeOptimizationEnabled:e.sizeOptimizationEnabled,symbolType:e.symbolType,colorMixMode:e.colorMixMode,edgesType:e.edgesType,filter:e.filter,view:e.view,signal:y}),F=M.renderer,V=F.uniqueValueInfos,T=t.relationship;for(const i of V??[])i.label=T[i.value];const H=new l({type:"relationship",classificationMethod:u,numClasses:h,focus:c,field1:new s({field:f.field,normalizationField:f.normalizationField,label:f.label,classBreakInfos:b.map(({minValue:e,maxValue:i})=>new r({minValue:e,maxValue:i}))}),field2:new s({field:p.field,normalizationField:p.normalizationField,label:p.label,classBreakInfos:v.map(({minValue:e,maxValue:i})=>new r({minValue:e,maxValue:i}))})});return F.authoringInfo=H,{renderer:F,classBreaks:{field1:a,field2:o},uniqueValueInfos:M.uniqueValueInfos,relationshipScheme:z,basemapId:M.basemapId,basemapTheme:M.basemapTheme}}function D(e,i,a){const n=P(i,a);e.sort((e,i)=>{const a=n.indexOf(e.value),l=n.indexOf(i.value);let r=0;return a<l?r=-1:a>l&&(r=1),r})}function G(e,i){e.authoringInfo??=new l;const a=e.authoringInfo;a.numClasses=i.numClasses,a.focus=i.focus||null,a.focus||delete a.focus;const{field1:n,field2:o}=i;a.field1=new s({field:n.field,normalizationField:n.normalizationField,label:n.label,classBreakInfos:n.classBreakInfos.map(e=>new r(S(e)))}),a.field2=new s({field:o.field,normalizationField:o.normalizationField,label:o.label,classBreakInfos:o.classBreakInfos.map(e=>new r(S(e)))}),e.authoringInfo=a}async function K(e){const{layer:a,classificationMethod:n,field1:l,field2:r,numClasses:s,filter:o,view:t,signal:d}=e,m={layer:a,classificationMethod:n,field:l.field,normalizationField:l.normalizationField,normalizationType:l.normalizationField?"field":null,minValue:l.minValue,maxValue:l.maxValue,analyzeData:!(null!=l.minValue&&null!=l.maxValue),numClasses:s,filter:o,view:t,signal:d},u={layer:a,classificationMethod:n,field:r.field,normalizationField:r.normalizationField,normalizationType:r.normalizationField?"field":null,minValue:r.minValue,maxValue:r.maxValue,analyzeData:!(null!=r.minValue&&null!=r.maxValue),numClasses:s,filter:o,view:t,signal:d},[f,p]=await Promise.all([g(m),g(u)]);if(!f||!p)throw new i("relationship-renderer:error","error when calculating class breaks");return{field1:f.result,field2:p.result}}async function Q(i){const a=await N(i),{field1:n,field2:l,renderer:r,numClasses:s,focus:o,colors:t}=a,d=r.clone();d.valueExpression=A(n,l,n.classBreakInfos,l.classBreakInfos);const m=d.uniqueValueInfos??[];if(D(m,s,o),t){const i=e(t,t.length);m.forEach((e,a)=>E(e.symbol,i[a]))}return G(d,a),d}async function W(e){const i=await j(e),{field1:a,field2:n}=await K(i);return J(i,a,n)}async function X(e){const{creatorParameters:i,view:a,signal:n,filter:l,renderer:r}=await q(e),{layer:s,field1:d,field2:u,numClasses:f,focus:p,outlineOptimizationEnabled:c,sizeOptimizationEnabled:h}=i,{field1:v,field2:g}=await K(i),[I,z,M]=await Promise.all([Q({field1:{...d,classBreakInfos:v.classBreakInfos},field2:{...u,classBreakInfos:g.classBreakInfos},renderer:r,numClasses:f,focus:p}),c?o({layer:s,view:a,signal:n,filter:l}).catch(b):null,h?t({layer:s,view:a,signal:n,filter:l}).catch(b):null]);return m(I,z?.visualVariables,y),m(I,M?.minSize,w),{renderer:I}}export{W as createRenderer,X as regenerateRenderer,Q as updateRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as r}from"../../core/screenUtils.js";import{ensureClass as a}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoSizeStop.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as u}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{castSizeFromStringOrNumber as p}from"../../renderers/visualVariables/support/castSizeVariable.js";import d from"../../renderers/visualVariables/support/SizeStop.js";import c from"../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import f from"../heuristics/ageUnit.js";import y from"../heuristics/outline.js";import v from"../heuristics/referenceSize.js";import z from"../heuristics/sizeRange.js";import{getTypeSchemeData as w}from"./type.js";import{createPrimitiveOverrides as h,updateReferenceSizeSymbol as b,createReferenceSizeSymbol as g}from"./support/referenceSizeUtils.js";import{isSizeVV as S,getAuthoringInfoVisualVariable as x,spliceVisualVariables as V,updateAuthoringInfoVisualVariable as T,processRegenerateParams as E,getRendererToUpdate as k,getStyleType as O,hasScaleDependentSizeVV as I,hasOutlineVV as B,findSizeVVIndex as F,findOutlineVVIndex as j}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as q,updateSpikeSymbol as R,createSpikeSymbol as D,defaultSpikeSymbolStyle as G}from"./support/spikeUtils.js";import{getSummaryStatistics as U,errorCallback as P,getClassBreaks as M,getTitleAndExpressionForAgeRenderer as C,updateAgeRendererAuthoringInfoVV as W,verifyBasicFieldValidity as $,getSizeRangeForAxis as A,getDataRange as H,createSymbol as L,getSymbolOutlineFromScheme as J,getSymbolSizeFromScheme as K,getBasemapInfo as N}from"./support/utils.js";import{verifyDates as Q,supportedAgeUnits as X}from"../statistics/support/ageUtils.js";import{verifyBinningParams as Y}from"../support/binningUtils.js";import{getFieldsList as Z,isAnyDateField as _,getNormalizationType as ee}from"../support/utils.js";import{binningCapableLayerTypes as ie,featureCapableLayerTypes as re,createLayerAdapter as ae,getLayerTypeLabels as ne}from"../support/adapters/support/layerUtils.js";import{cloneScheme as se,getSchemes as le}from"../symbology/size.js";import{getColorFromSymbol as te}from"../../symbols/support/utils.js";const oe=2**53-1,ue=[5,112.5];async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===e.theme&&!e.view&&!e.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===e.theme&&e.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");e.forBinning&&Y(e,"size-visual-variable");const r={...e},a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));"height"===r.axis&&(r.sizeOptimizationEnabled=!1);const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType;if("mesh"===l)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(r.worldScale){if("polyline"===l||"polygon"===l)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!r.view||"3d"!==r.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const t=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),o=$(n,t,"size-visual-variable:invalid-parameters");if(o)throw o;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G),await de(r),{...r,layer:n}}async function pe(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-continuous-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const o=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),u=$(n,o,"size-continuous-renderer:invalid-parameters");if(u)throw u;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G),await de(r),{...r,layer:n}}async function de(e){const i=e.layer;if(("polygon"===i.geometryType||e.forBinning)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await v({layer:i,view:e.view,filter:e.filter,forBinning:e.forBinning,signal:e.signal})}catch{}!e.theme&&e.referenceSizeResult?.isGrid&&(e.theme="reference-size"),e.referenceSizeOptions?.symbolStyle||(e.referenceSizeOptions?e.referenceSizeOptions.symbolStyle="circle":e.referenceSizeOptions={symbolStyle:"circle"})}}async function ce(e){if(!e||!(e.layer&&e.view&&e.sizeStops))throw new i("update-renderer-with-reference-size:missing-parameters","'layer', 'view and 'sizeStops' parameters are required");const{view:r,forBinning:a}=e,n=e.forBinning?ie:re,s=ae(e.layer,n,e.forBinning);if(!s)throw new i("update-renderer-with-reference-size:invalid-parameters","'layer' must be one of these types: "+ne(n).join(", "));const l=s.layer;let t=e.renderer;if(!t)if(e.forBinning){if(!("featureReduction"in l&&l.featureReduction&&"renderer"in l.featureReduction&&l.featureReduction.renderer)||"class-breaks"!==l.featureReduction.renderer.type&&"unique-value"!==l.featureReduction.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Feature reduction renderer is not supported");t=l.featureReduction.renderer}else{if(!("renderer"in l)||!l.renderer||"class-breaks"!==l.renderer.type&&"unique-value"!==l.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Renderer is not supported");t=l.renderer}const o=t.authoringInfo;if(!o||!o?.visualVariables?.some(e=>"reference-size"===e.theme))throw new i("update-renderer-with-reference-size:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'reference-size'");const u=e.isGrid??(await v({view:r,layer:l,forBinning:a}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function fe(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const r=e.forBinning?ie:re,a=ae(e.layer,r,e.forBinning);if(!a)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+ne(r).join(", "));await a.load();const n=a.layer;let s=e.renderer;if(!s)if(e.forBinning){if(!("featureReduction"in n&&n.featureReduction&&"renderer"in n.featureReduction&&n.featureReduction.renderer)||"class-breaks"!==n.featureReduction.renderer.type&&"unique-value"!==n.featureReduction.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Feature reduction renderer is not supported");s=n.featureReduction.renderer}else{if(!("renderer"in n)||!n.renderer||"class-breaks"!==n.renderer.type&&"unique-value"!==n.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Renderer is not supported");s=n.renderer}const l=s.authoringInfo,t=l?.visualVariables.find(e=>"spike"===e.theme);if(!t)throw new i("update-renderer-with-spike:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'spike'");const o=e.spikeOptions??{};return o.symbolStyle??=t?.spikeSymbolStyle?void 0:G,{...e,renderer:s,layer:a,spikeOptions:o}}async function ye(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-class-breaks-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=ee(r);const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));if(!(null!=r.minValue&&null!=r.maxValue)&&(null!=r.minValue||null!=r.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const o=await Z({field:r.field,normalizationField:r.normalizationField}),u=$(n,o,"size-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:n}}function ve(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}function ze(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric"),a=i;return a.worldScale=r,r&&(a.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,a}async function we(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("size-age-renderer:missing-parameters","'layer', 'view', 'startTime', 'endTime' parameters are required");const r={...e};r.symbolType??="2d",r.defaultSymbolEnabled??=!0;const a=ae(r.layer,re);if(!a)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+ne(re).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await a.load(n);const s=a.geometryType,l=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(l&&("polyline"===s||"polygon"===s))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const t=Q(a,r.startTime,r.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(r.unit&&!X.includes(r.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${X.join(", ")}`);return{...r,layer:a}}async function he(e){const r="regenerate-size-visual-variables";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const s=x(a,"size");if(!s)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=a.visualVariables?.find(S);if(!u&&!t&&!o)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,p=s.normalizationField,d=null,c=null;m||(u?.field?(m=u.field,p=u.normalizationField):a.field?(m=a.field,p=a.normalizationField):(d=u?.valueExpression??a.valueExpression,c=u?.valueExpressionTitle??a.valueExpressionTitle));const{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=I(a),b=await me({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function be(e){const r="regenerate-size-continuous-renderer";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=a,m=s?.visualVariables.find(e=>"size"===e.type),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:v}=e,z=B(a),w=I(a),h=await pe({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:z,sizeOptimizationEnabled:w,forBinning:c,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:a}}async function ge(e){const r="regenerate-size-class-breaks-renderer";await E(e,r);const a=await k(e);if("size-class-breaks"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=a,{classificationMethod:p,standardDeviationInterval:d}=n,c=a.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=B(a),b=await ye({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function Se(e){const r="regenerate-size-age-renderer";await E(e,r);const a=await k(e);if("size-age"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=a,s=n?.visualVariables.find(e=>"size"===e.type),l=s.startTime,t=s.endTime,o=s.units,u=s.theme,{layer:m,filter:p,view:d,signal:c}=e,f=B(a),y=I(a),v=await we({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:v,renderer:a}}async function xe(e){let i=e.sizeScheme,r=null,a=null;const n=await N(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:se(i),basemapId:r,basemapTheme:a};const s=le({basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,r=s.basemapId,a=s.basemapTheme),{scheme:i,basemapId:r,basemapTheme:a}}function Ve(e,i){switch(i){case"point":case"multipoint":{const i=e;return[p(i.minSize),p(i.maxSize)]}case"polyline":{const i=e;return[p(i.minWidth),p(i.maxWidth)]}case"polygon":{const i=e;return[p(i.marker.minSize),p(i.marker.maxSize)]}}}function Te(e,i){"clamped-linear"===e.transformationType&&"below"===i&&e.flipSizes()}async function Ee(e,i,r,a,n,s){const l=ke(e,i,r,a);return l||Ve(n,s)}function ke(e,i,r,a){return"spike"===a?[r?.minHeight??ue[0],r?.maxHeight??ue[1]]:"reference-size"===a&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Oe(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,r=0,a=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>a&&l<n&&t<2*n&&u<.5,p=l>r&&l<i&&t<2*i&&u<.5;return{minDataValue:m?a:p?r:l,maxDataValue:m?n:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:r,field:a}=i,n=i.layer,s=a&&!("function"==typeof a)?n.getField(a):null,l=_(s);return H(e,r,l,"above"===r||"below"===r)}function Ie(e,r){if(("spike"===r||"reference-size"===r)&&null!=e.minDataValue&&null!=e.maxDataValue&&null!=e.minSize&&null!=e.maxSize&&"number"==typeof e.minSize&&"number"==typeof e.maxSize)return[new d({value:e.minDataValue,size:e.minSize}),new d({value:e.maxDataValue,size:e.maxSize})];throw new i("get-size-stops-for-theme","Invalid size variable or theme")}async function Be(e,r,n,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:v}=e,z=e.layer.geometryType,w=await xe({basemap:e.basemap,geometryType:z,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),h=w.scheme;if(!h)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const b=await Ee(n,s,e.spikeOptions,u,h,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Oe(r,e),V=[],T="height"===v,E=T?v:void 0,k=b[0];let O=b[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=A({minSize:k,maxSize:O},E);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),O=e.maxSize}const I=new m({field:p??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:d,axis:E,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:a(c,e.legendOptions)});Te(I,u),V.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,spikeSymbolStyle:e.spikeOptions?.symbolStyle,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:{type:"size",theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:V,statistics:r,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:se(h),authoringInfo:F}}async function Fe(e,i,r,a,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=se(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,v=c?"point":m,z=i?.opacity,w=e.isGrid,b=l.theme,S="reference-size"===b,x="spike"===b,V=S||x?[]:e.visualVariables.map(e=>e.clone());i?.visualVariables?.length&&V.push(...i.visualVariables.map(e=>e.clone()));const T=S?g({type:l.referenceSizeOptions?.symbolStyle||"circle",color:f.color,primitiveOverrides:h({view:l.view,field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],b),sizeByScaleEnabled:w||!!l.sizeOptimizationEnabled})}):x?D({color:f.color,strokeColor:f.outline.color,baseWidth:l.spikeOptions?.baseWidth,strokeWidth:l.spikeOptions?.strokeWidth,defaultHeight:l.spikeOptions?.defaultHeight,primitiveOverrides:q({field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],b)}),symbolStyle:l.spikeOptions?.symbolStyle}):L(v,{type:l.symbolType,color:f.color,size:K(f,v),outline:J(f,v,z)});return{renderer:new s({backgroundFillSymbol:!w&&y?L(m,{type:l.symbolType,color:y.color,outline:J(y,m,z)}):null,classBreakInfos:[{minValue:-oe,maxValue:oe,symbol:T}],defaultLabel:p?t.other:null,defaultSymbol:!p||S||x?null:L(v,{type:l.symbolType,color:f.noDataColor,size:K(f,v,!0),outline:J(f,v,z)}),field:u,normalizationField:a,normalizationType:r,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:V,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map(e=>e.clone()),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:se(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function je(e,i){const a=r(e.minSize),n=(r(e.maxSize)-a)/(i>=4?i-1:i),s=[];for(let r=0;r<i;r++)s.push(a+n*r);return s}async function qe(e,i){const r=await n("esri/smartMapping/t9n/smartMapping"),a=e.layer,t=e.defaultSymbolEnabled,o=a.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await xe({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,v=f?.classBreakInfos??[],z=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=Ve(h,g),x=p?A({minSize:S[0],maxSize:S[1]},"height"):null,V=je({minSize:S[0],maxSize:x?x.maxSize:S[1]},v.length),T=y?.opacity,E=new s({backgroundFillSymbol:b&&L(o,{type:e.symbolType,color:b.color,outline:J(b,o,T)}),classBreakInfos:v.map((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:L(g,{type:e.symbolType,color:h.color,size:V[r],widthAndDepth:x?.minSize,outline:J(h,g,T)}),label:i.label})),defaultLabel:t?r.other:null,defaultSymbol:t?L(g,{type:e.symbolType,color:h.noDataColor,size:K(h,g,!0),widthAndDepth:x?.minSize,outline:J(h,g,T)}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f?.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-size",classificationMethod:z,standardDeviationInterval:e.standardDeviationInterval})});return"standard-deviation"!==z&&u({classBreakInfos:E.classBreakInfos,classificationMethod:z,normalizationType:w,round:!0}),y?.visualVariables?.length&&(E.visualVariables=y.visualVariables.map(e=>e.clone())),{renderer:E,sizeScheme:se(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function Re(e){const i=await me(e),{view:r,field:a,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p}=i,d=o?"field":void 0,[c,f]=await Promise.all([m??U({layer:t,field:a,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:o,filter:p,minValue:s,maxValue:l,view:r,signal:u}),i.sizeOptimizationEnabled?z({view:r,layer:t,signal:u,filter:p}).catch(P):null]);return Be(i,c,f,i.referenceSizeResult)}async function De(e){const{view:i,filter:r,renderer:a,signal:n,creatorParameters:s}=await he(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,w=o?"field":void 0,[h,b]=await Promise.all([U({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:w,filter:r,view:i,signal:n}),c?z({view:i,layer:d,signal:n,filter:r}).catch(P):null]),g=ke(b,y,f,p),{minDataValue:V,maxDataValue:T}=Oe(h,{theme:p,layer:d,field:l}),E=a.visualVariables?.find(S),k=(E?.stops?null:E)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:v,valueUnit:"unknown",normalizationField:o});g&&(k.minSize=g[0],k.maxSize=g[1]),k.minDataValue=V,k.maxDataValue=T,Te(k,p);const O=x(a,"size");O.minSliderValue=h.min,O.maxSliderValue=h.max;const I="reference-size"===p;return(I||"spike"===p)&&(O.sizeStops=Ie(k,p).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),I&&(O.referenceSizeScale=y?.isGrid||c?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[k],isGrid:!!y?.isGrid,authoringInfo:a.authoringInfo?.clone(),statistics:h}}async function Ge(e){const i=await pe(e),r={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[a,n]=await Promise.all([Re(ze(i)),i.outlineOptimizationEnabled?y(r).catch(P):null]),s=i.normalizationField;return Fe(a,n,s?"field":void 0,s,i)}async function Ue(e){const{renderer:i,view:r,signal:a,filter:n,creatorParameters:s,forBinning:l}=await be(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([De({...e,referenceSizeResult:m}),o?y({layer:t,view:r,filter:n,signal:a}).catch(P):null]),c="reference-size"===u,f="spike"===u;V(i,p.visualVariables,F),V(i,d?.visualVariables,j),T(i,p.authoringInfo,"size");const v=p.statistics;if(!c&&!f)return{renderer:i,statistics:v};if(f){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:x(i,"size","spike")?.sizeStops}),statistics:v}}const z=p.isGrid;return{renderer:await Pe({layer:t,renderer:i,view:r,forBinning:l,sizeStops:x(i,"size","reference-size")?.sizeStops,isGrid:z}),isGrid:z,statistics:v}}async function Pe(r){const{layer:a,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await ce(r),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find(e=>"reference-size"===e.theme),y=r.field??f?.field,v=r.normalizationField??f?.normalizationField;if(!y)throw new i("update-renderer-with-reference-size:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const z=h({view:p,field:y,normalizationField:v,sizeStops:u,sizeByScaleEnabled:d||!!r.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach(i=>{const r=e?.color??te(i.symbol,1);"cim"===i.symbol.type?b(i.symbol,{type:w,color:r,primitiveOverrides:z}):r&&(i.symbol=g({type:w,color:r,primitiveOverrides:z}))})}else if("unique-value"===c.type){const i=c.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&m&&"colors"in m?m.colors:null,n=r?e(r,c.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:te(i.symbol,1);"cim"===i.symbol?.type?b(i.symbol,{type:w,color:e,primitiveOverrides:z}):e&&(i.symbol=g({type:w,color:e,primitiveOverrides:z})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=v,f.sizeStops=u.map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),f.referenceSizeScale=d||r.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Me(r){const{layer:a,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await fe(r),p=n.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find(e=>"spike"===e.theme),c=r.field??d?.field,f=r.normalizationField??d?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=q({field:c,normalizationField:f,sizeStops:o}),v="geometryType"in a?a.geometryType:null,z={primitiveOverrides:y,...m},h=m?.symbolStyle,b=h&&h.includes("outline")&&(h.includes("solid-fill")||h.includes("gradient-fill"));if("class-breaks"===p.type){if(s||b){const e=v?await xe({geometryType:v,sizeScheme:s,view:r.view}):null,i=e?.scheme,a="polygon"===v&&i&&"marker"in i?i.marker:i;if(s){const e=a&&"color"in a?a?.color:void 0;z.color=e}if(b){const e=a&&"outline"in a?a.outline.color:void 0;z.strokeColor=e}}p.classBreakInfos.forEach(e=>{if("cim"===e.symbol.type)R(e.symbol,z);else{const i=z.color??te(e.symbol,1)??void 0;i&&(e.symbol=D({...z,color:i}))}})}else if("unique-value"===p.type){const i=p.uniqueValueGroups,a=p.uniqueValueInfos?.length??0;let n=null;if(u||b){const i=v&&a?await w({numColors:a,geometryType:v,typeScheme:u,view:r.view}):null,s=i?.scheme;if(u){const i=s&&"colors"in s?s.colors:null;n=i?e(i,a):null}if(b){const e=s&&"outline"in s?s.outline.color:void 0;z.strokeColor=e}}let s=0;if(i){for(const e of i)for(const i of e.classes??[]){if("cim"===i.symbol?.type)R(i.symbol,{...z,color:n?.[s]});else{const e=n?.[s]??te(i.symbol,1)??void 0;e&&(i.symbol=D({...z,color:e}))}s++}p.uniqueValueGroups=i}}return d&&(d.field=c,d.normalizationField=f,d.sizeStops=o.map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),h&&(d.spikeSymbolStyle=h)),p}async function Ce(e){const i=await ye(e);return qe(i,await M(ve(i),i.outlineOptimizationEnabled))}async function We(e){const{renderer:r,creatorParameters:a}=await ge(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l}=a,{result:t,outlineResult:o}=await M(ve(a),n),m=t.classBreakInfos;if(a.numClasses!==m.length)throw new i("regenerate-class-breaks-renderer:invalid-parameters","The number of class breaks generated does not match the number of class breaks in the renderer.");return r.classBreakInfos.forEach((e,i)=>{e.minValue=m[i].minValue,e.maxValue=m[i].maxValue,e.label=m[i].label}),r.normalizationTotal="percent-of-total"===s?t.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:r.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),V(r,o?.visualVariables,j),{renderer:r}}async function $e(e){const i=await we(e),{defaultSymbolEnabled:r,view:a,startTime:n,endTime:s,symbolType:l,minValue:t,maxValue:o,signal:u,filter:m,layer:p}=i,[d,c]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await f({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?y({layer:p,view:a,filter:m,signal:u}).catch(P):null]),{unit:v,statistics:z}=d,{valueExpression:w,title:h}=await C(i,v),b=await Re(ze({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:h},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:t,maxValue:o,filter:m,signal:u})),g={layer:p,valueExpression:w,defaultSymbolEnabled:r,symbolType:l},S=await Fe(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach(e=>W(e,n,s,v)),{...S,unit:v}}async function Ae(e){const{renderer:i,creatorParameters:r}=await Se(e),{layer:a,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=r,[d,c]=await Promise.all([f({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?y({layer:a,view:u,filter:p,signal:m}).catch(P):null]),{unit:v,statistics:z}=d,{valueExpression:w,title:h}=await C(r,v),b=await Re(ze({layer:a,valueExpression:w,statistics:z,legendOptions:{title:h},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));V(i,b.visualVariables,F),V(i,c?.visualVariables,j),i.authoringInfo=b.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach(e=>W(e,l,t,v)),{renderer:i}}export{$e as createAgeRenderer,Ce as createClassBreaksRenderer,Ge as createContinuousRenderer,Re as createVisualVariables,Ie as getSizeStopsForTheme,Ae as regenerateAgeRenderer,We as regenerateClassBreaksRenderer,Ue as regenerateContinuousRenderer,De as regenerateVisualVariables,Pe as updateRendererWithReferenceSize,Me as updateRendererWithSpike};
5
+ import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as r}from"../../core/screenUtils.js";import{ensureClass as a}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoSizeStop.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as u}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{castSizeFromStringOrNumber as p}from"../../renderers/visualVariables/support/castSizeVariable.js";import d from"../../renderers/visualVariables/support/SizeStop.js";import c from"../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import f from"../heuristics/ageUnit.js";import y from"../heuristics/outline.js";import v from"../heuristics/referenceSize.js";import z from"../heuristics/sizeRange.js";import{getTypeSchemeData as w}from"./type.js";import{createPrimitiveOverrides as h,updateReferenceSizeSymbol as b,createReferenceSizeSymbol as g}from"./support/referenceSizeUtils.js";import{isSizeVV as S,getAuthoringInfoVisualVariable as x,spliceVisualVariables as V,updateAuthoringInfoVisualVariable as T,processRegenerateParams as E,getRendererToUpdate as k,getStyleType as O,hasScaleDependentSizeVV as I,hasOutlineVV as B,findSizeVVIndex as F,findOutlineVVIndex as R}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as j,updateSpikeSymbol as q,createSpikeSymbol as D,defaultSpikeSymbolStyle as G}from"./support/spikeUtils.js";import{getSummaryStatistics as U,errorCallback as P,getClassBreaks as M,getTitleAndExpressionForAgeRenderer as C,updateAgeRendererAuthoringInfoVV as W,verifyBasicFieldValidity as $,getSizeRangeForAxis as A,getDataRange as H,createSymbol as L,getSymbolOutlineFromScheme as J,getSymbolSizeFromScheme as K,getBasemapInfo as N}from"./support/utils.js";import{verifyDates as Q,supportedAgeUnits as X}from"../statistics/support/ageUtils.js";import{verifyBinningParams as Y}from"../support/binningUtils.js";import{getFieldsList as Z,isAnyDateField as _,getNormalizationType as ee}from"../support/utils.js";import{binningCapableLayerTypes as ie,featureCapableLayerTypes as re,createLayerAdapter as ae,getLayerTypeLabels as ne}from"../support/adapters/support/layerUtils.js";import{cloneScheme as se,getSchemes as le}from"../symbology/size.js";import{getColorFromSymbol as te}from"../../symbols/support/utils.js";const oe=2**53-1,ue=[5,112.5];async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===e.theme&&!e.view&&!e.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===e.theme&&e.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");e.forBinning&&Y(e,"size-visual-variable");const r={...e},a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));"height"===r.axis&&(r.sizeOptimizationEnabled=!1);const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType;if("mesh"===l)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(r.worldScale){if("polyline"===l||"polygon"===l)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!r.view||"3d"!==r.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const t=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),o=$(n,t,"size-visual-variable:invalid-parameters");if(o)throw o;"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G);const u={...r,layer:n};return await de(u),u}async function pe(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-continuous-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const o=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),u=$(n,o,"size-continuous-renderer:invalid-parameters");if(u)throw u;"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G);const m={...r,layer:n};return await de(m),m}async function de(e){const i=e.layer,r=i.geometryType,a=i.layer,n=e.forBinning&&"featureReduction"in a&&"binning"===a.featureReduction?.type;if(("polygon"===r||n)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await v({layer:a,view:e.view,filter:e.filter,forBinning:e.forBinning,signal:e.signal})}catch{}!e.theme&&e.referenceSizeResult?.isGrid&&(e.theme="reference-size"),e.referenceSizeOptions?.symbolStyle||(e.referenceSizeOptions?e.referenceSizeOptions.symbolStyle="circle":e.referenceSizeOptions={symbolStyle:"circle"})}}async function ce(e){if(!e||!(e.layer&&e.view&&e.sizeStops))throw new i("update-renderer-with-reference-size:missing-parameters","'layer', 'view and 'sizeStops' parameters are required");const{view:r,forBinning:a}=e,n=e.forBinning?ie:re,s=ae(e.layer,n,e.forBinning);if(!s)throw new i("update-renderer-with-reference-size:invalid-parameters","'layer' must be one of these types: "+ne(n).join(", "));const l=s.layer;let t=e.renderer;if(!t)if(e.forBinning){if(!("featureReduction"in l&&l.featureReduction&&"renderer"in l.featureReduction&&l.featureReduction.renderer)||"class-breaks"!==l.featureReduction.renderer.type&&"unique-value"!==l.featureReduction.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Feature reduction renderer is not supported");t=l.featureReduction.renderer}else{if(!("renderer"in l)||!l.renderer||"class-breaks"!==l.renderer.type&&"unique-value"!==l.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Renderer is not supported");t=l.renderer}const o=t.authoringInfo;if(!o||!o?.visualVariables?.some(e=>"reference-size"===e.theme))throw new i("update-renderer-with-reference-size:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'reference-size'");const u=e.isGrid??(await v({view:r,layer:l,forBinning:a}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function fe(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const r=e.forBinning?ie:re,a=ae(e.layer,r,e.forBinning);if(!a)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+ne(r).join(", "));await a.load();const n=a.layer;let s=e.renderer;if(!s)if(e.forBinning){if(!("featureReduction"in n&&n.featureReduction&&"renderer"in n.featureReduction&&n.featureReduction.renderer)||"class-breaks"!==n.featureReduction.renderer.type&&"unique-value"!==n.featureReduction.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Feature reduction renderer is not supported");s=n.featureReduction.renderer}else{if(!("renderer"in n)||!n.renderer||"class-breaks"!==n.renderer.type&&"unique-value"!==n.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Renderer is not supported");s=n.renderer}const l=s.authoringInfo,t=l?.visualVariables.find(e=>"spike"===e.theme);if(!t)throw new i("update-renderer-with-spike:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'spike'");const o=e.spikeOptions??{};return o.symbolStyle??=t?.spikeSymbolStyle?void 0:G,{...e,renderer:s,layer:a,spikeOptions:o}}async function ye(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-class-breaks-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=ee(r);const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));if(!(null!=r.minValue&&null!=r.maxValue)&&(null!=r.minValue||null!=r.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const o=await Z({field:r.field,normalizationField:r.normalizationField}),u=$(n,o,"size-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:n}}function ve(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}function ze(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric"),a=i;return a.worldScale=r,r&&(a.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,a}async function we(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("size-age-renderer:missing-parameters","'layer', 'view', 'startTime', 'endTime' parameters are required");const r={...e};r.symbolType??="2d",r.defaultSymbolEnabled??=!0;const a=ae(r.layer,re);if(!a)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+ne(re).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await a.load(n);const s=a.geometryType,l=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(l&&("polyline"===s||"polygon"===s))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const t=Q(a,r.startTime,r.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(r.unit&&!X.includes(r.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${X.join(", ")}`);return{...r,layer:a}}async function he(e){const r="regenerate-size-visual-variables";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const s=x(a,"size");if(!s)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=a.visualVariables?.find(S);if(!u&&!t&&!o)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,p=s.normalizationField,d=null,c=null;m||(u?.field?(m=u.field,p=u.normalizationField):a.field?(m=a.field,p=a.normalizationField):(d=u?.valueExpression??a.valueExpression,c=u?.valueExpressionTitle??a.valueExpressionTitle));const{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=I(a),b=await me({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function be(e){const r="regenerate-size-continuous-renderer";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=a,m=s?.visualVariables.find(e=>"size"===e.type),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:v}=e,z=B(a),w=I(a),h=await pe({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:z,sizeOptimizationEnabled:w,forBinning:c,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:a}}async function ge(e){const r="regenerate-size-class-breaks-renderer";await E(e,r);const a=await k(e);if("size-class-breaks"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=a,{classificationMethod:p,standardDeviationInterval:d}=n,c=a.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=B(a),b=await ye({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function Se(e){const r="regenerate-size-age-renderer";await E(e,r);const a=await k(e);if("size-age"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=a,s=n?.visualVariables.find(e=>"size"===e.type),l=s.startTime,t=s.endTime,o=s.units,u=s.theme,{layer:m,filter:p,view:d,signal:c}=e,f=B(a),y=I(a),v=await we({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:v,renderer:a}}async function xe(e){let i=e.sizeScheme,r=null,a=null;const n=await N(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:se(i),basemapId:r,basemapTheme:a};const s=le({basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,r=s.basemapId,a=s.basemapTheme),{scheme:i,basemapId:r,basemapTheme:a}}function Ve(e,i){switch(i){case"point":case"multipoint":{const i=e;return[p(i.minSize),p(i.maxSize)]}case"polyline":{const i=e;return[p(i.minWidth),p(i.maxWidth)]}case"polygon":{const i=e;return[p(i.marker.minSize),p(i.marker.maxSize)]}}}function Te(e,i){"clamped-linear"===e.transformationType&&"below"===i&&e.flipSizes()}async function Ee(e,i,r,a,n,s){const l=ke(e,i,r,a);return l||Ve(n,s)}function ke(e,i,r,a){return"spike"===a?[r?.minHeight??ue[0],r?.maxHeight??ue[1]]:"reference-size"===a&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Oe(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,r=0,a=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>a&&l<n&&t<2*n&&u<.5,p=l>r&&l<i&&t<2*i&&u<.5;return{minDataValue:m?a:p?r:l,maxDataValue:m?n:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:r,field:a}=i,n=i.layer,s=a&&!("function"==typeof a)?n.getField(a):null,l=_(s);return H(e,r,l,"above"===r||"below"===r)}function Ie(e,r){if(("spike"===r||"reference-size"===r)&&null!=e.minDataValue&&null!=e.maxDataValue&&null!=e.minSize&&null!=e.maxSize&&"number"==typeof e.minSize&&"number"==typeof e.maxSize)return[new d({value:e.minDataValue,size:e.minSize}),new d({value:e.maxDataValue,size:e.maxSize})];throw new i("get-size-stops-for-theme","Invalid size variable or theme")}async function Be(e,r,n,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:v}=e,z=e.layer.geometryType,w=await xe({basemap:e.basemap,geometryType:z,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),h=w.scheme;if(!h)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const b=await Ee(n,s,e.spikeOptions,u,h,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Oe(r,e),V=[],T="height"===v,E=T?v:void 0,k=b[0];let O=b[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=A({minSize:k,maxSize:O},E);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),O=e.maxSize}const I=new m({field:p??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:d,axis:E,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:a(c,e.legendOptions)});Te(I,u),V.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,spikeSymbolStyle:e.spikeOptions?.symbolStyle,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:{type:"size",theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:V,statistics:r,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:se(h),authoringInfo:F}}async function Fe(e,i,r,a,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=se(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,v=c?"point":m,z=i?.opacity,w=e.isGrid,b=l.theme,S="reference-size"===b,x="spike"===b,V=S||x?[]:e.visualVariables.map(e=>e.clone());i?.visualVariables?.length&&V.push(...i.visualVariables.map(e=>e.clone()));const T=S?g({type:l.referenceSizeOptions?.symbolStyle||"circle",color:f.color,primitiveOverrides:h({view:l.view,field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],b),sizeByScaleEnabled:w||!!l.sizeOptimizationEnabled})}):x?D({color:f.color,strokeColor:f.outline.color,baseWidth:l.spikeOptions?.baseWidth,strokeWidth:l.spikeOptions?.strokeWidth,defaultHeight:l.spikeOptions?.defaultHeight,primitiveOverrides:j({field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],b)}),symbolStyle:l.spikeOptions?.symbolStyle}):L(v,{type:l.symbolType,color:f.color,size:K(f,v),outline:J(f,v,z)});return{renderer:new s({backgroundFillSymbol:!w&&y?L(m,{type:l.symbolType,color:y.color,outline:J(y,m,z)}):null,classBreakInfos:[{minValue:-oe,maxValue:oe,symbol:T}],defaultLabel:p?t.other:null,defaultSymbol:!p||S||x?null:L(v,{type:l.symbolType,color:f.noDataColor,size:K(f,v,!0),outline:J(f,v,z)}),field:u,normalizationField:a,normalizationType:r,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:V,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map(e=>e.clone()),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:se(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function Re(e,i){const a=r(e.minSize),n=(r(e.maxSize)-a)/(i>=4?i-1:i),s=[];for(let r=0;r<i;r++)s.push(a+n*r);return s}async function je(e,i){const r=await n("esri/smartMapping/t9n/smartMapping"),a=e.layer,t=e.defaultSymbolEnabled,o=a.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await xe({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,v=f?.classBreakInfos??[],z=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=Ve(h,g),x=p?A({minSize:S[0],maxSize:S[1]},"height"):null,V=Re({minSize:S[0],maxSize:x?x.maxSize:S[1]},v.length),T=y?.opacity,E=new s({backgroundFillSymbol:b&&L(o,{type:e.symbolType,color:b.color,outline:J(b,o,T)}),classBreakInfos:v.map((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:L(g,{type:e.symbolType,color:h.color,size:V[r],widthAndDepth:x?.minSize,outline:J(h,g,T)}),label:i.label})),defaultLabel:t?r.other:null,defaultSymbol:t?L(g,{type:e.symbolType,color:h.noDataColor,size:K(h,g,!0),widthAndDepth:x?.minSize,outline:J(h,g,T)}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f?.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-size",classificationMethod:z,standardDeviationInterval:e.standardDeviationInterval})});return"standard-deviation"!==z&&u({classBreakInfos:E.classBreakInfos,classificationMethod:z,normalizationType:w,round:!0}),y?.visualVariables?.length&&(E.visualVariables=y.visualVariables.map(e=>e.clone())),{renderer:E,sizeScheme:se(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function qe(e){const i=await me(e),{view:r,field:a,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p}=i,d=o?"field":void 0,[c,f]=await Promise.all([m??U({layer:t,field:a,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:o,filter:p,minValue:s,maxValue:l,view:r,signal:u}),i.sizeOptimizationEnabled?z({view:r,layer:t,signal:u,filter:p}).catch(P):null]);return Be(i,c,f,i.referenceSizeResult)}async function De(e){const{view:i,filter:r,renderer:a,signal:n,creatorParameters:s}=await he(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,w=o?"field":void 0,[h,b]=await Promise.all([U({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:w,filter:r,view:i,signal:n}),c?z({view:i,layer:d,signal:n,filter:r}).catch(P):null]),g=ke(b,y,f,p),{minDataValue:V,maxDataValue:T}=Oe(h,{theme:p,layer:d,field:l}),E=a.visualVariables?.find(S),k=(E?.stops?null:E)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:v,valueUnit:"unknown",normalizationField:o});g&&(k.minSize=g[0],k.maxSize=g[1]),k.minDataValue=V,k.maxDataValue=T,Te(k,p);const O=x(a,"size");O.minSliderValue=h.min,O.maxSliderValue=h.max;const I="reference-size"===p;return(I||"spike"===p)&&(O.sizeStops=Ie(k,p).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),I&&(O.referenceSizeScale=y?.isGrid||c?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[k],isGrid:!!y?.isGrid,authoringInfo:a.authoringInfo?.clone(),statistics:h}}async function Ge(e){const i=await pe(e),r={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[a,n]=await Promise.all([qe(ze(i)),i.outlineOptimizationEnabled?y(r).catch(P):null]),s=i.normalizationField;return Fe(a,n,s?"field":void 0,s,i)}async function Ue(e){const{renderer:i,view:r,signal:a,filter:n,creatorParameters:s,forBinning:l}=await be(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([De({...e,referenceSizeResult:m}),o?y({layer:t,view:r,filter:n,signal:a}).catch(P):null]),c="reference-size"===u,f="spike"===u;V(i,p.visualVariables,F),V(i,d?.visualVariables,R),T(i,p.authoringInfo,"size");const v=p.statistics;if(!c&&!f)return{renderer:i,statistics:v};if(f){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:x(i,"size","spike")?.sizeStops}),statistics:v}}const z=p.isGrid;return{renderer:await Pe({layer:t,renderer:i,view:r,forBinning:l,sizeStops:x(i,"size","reference-size")?.sizeStops,isGrid:z}),isGrid:z,statistics:v}}async function Pe(r){const{layer:a,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await ce(r),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find(e=>"reference-size"===e.theme),y=r.field??f?.field,v=r.normalizationField??f?.normalizationField;if(!y)throw new i("update-renderer-with-reference-size:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const z=h({view:p,field:y,normalizationField:v,sizeStops:u,sizeByScaleEnabled:d||!!r.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach(i=>{const r=e?.color??te(i.symbol,1);"cim"===i.symbol.type?b(i.symbol,{type:w,color:r,primitiveOverrides:z}):r&&(i.symbol=g({type:w,color:r,primitiveOverrides:z}))})}else if("unique-value"===c.type){const i=c.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&m&&"colors"in m?m.colors:null,n=r?e(r,c.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:te(i.symbol,1);"cim"===i.symbol?.type?b(i.symbol,{type:w,color:e,primitiveOverrides:z}):e&&(i.symbol=g({type:w,color:e,primitiveOverrides:z})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=v,f.sizeStops=u.map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),f.referenceSizeScale=d||r.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Me(r){const{layer:a,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await fe(r),p=n.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find(e=>"spike"===e.theme),c=r.field??d?.field,f=r.normalizationField??d?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=j({field:c,normalizationField:f,sizeStops:o}),v="geometryType"in a?a.geometryType:null,z={primitiveOverrides:y,...m},h=m?.symbolStyle,b=h&&h.includes("outline")&&(h.includes("solid-fill")||h.includes("gradient-fill"));if("class-breaks"===p.type){if(s||b){const e=v?await xe({geometryType:v,sizeScheme:s,view:r.view}):null,i=e?.scheme,a="polygon"===v&&i&&"marker"in i?i.marker:i;if(s){const e=a&&"color"in a?a?.color:void 0;z.color=e}if(b){const e=a&&"outline"in a?a.outline.color:void 0;z.strokeColor=e}}p.classBreakInfos.forEach(e=>{if("cim"===e.symbol.type)q(e.symbol,z);else{const i=z.color??te(e.symbol,1)??void 0;i&&(e.symbol=D({...z,color:i}))}})}else if("unique-value"===p.type){const i=p.uniqueValueGroups,a=p.uniqueValueInfos?.length??0;let n=null;if(u||b){const i=v&&a?await w({numColors:a,geometryType:v,typeScheme:u,view:r.view}):null,s=i?.scheme;if(u){const i=s&&"colors"in s?s.colors:null;n=i?e(i,a):null}if(b){const e=s&&"outline"in s?s.outline.color:void 0;z.strokeColor=e}}let s=0;if(i){for(const e of i)for(const i of e.classes??[]){if("cim"===i.symbol?.type)q(i.symbol,{...z,color:n?.[s]});else{const e=n?.[s]??te(i.symbol,1)??void 0;e&&(i.symbol=D({...z,color:e}))}s++}p.uniqueValueGroups=i}}return d&&(d.field=c,d.normalizationField=f,d.sizeStops=o.map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),h&&(d.spikeSymbolStyle=h)),p}async function Ce(e){const i=await ye(e);return je(i,await M(ve(i),i.outlineOptimizationEnabled))}async function We(e){const{renderer:r,creatorParameters:a}=await ge(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l}=a,{result:t,outlineResult:o}=await M(ve(a),n),m=t.classBreakInfos;if(a.numClasses!==m.length)throw new i("regenerate-class-breaks-renderer:invalid-parameters","The number of class breaks generated does not match the number of class breaks in the renderer.");return r.classBreakInfos.forEach((e,i)=>{e.minValue=m[i].minValue,e.maxValue=m[i].maxValue,e.label=m[i].label}),r.normalizationTotal="percent-of-total"===s?t.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:r.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),V(r,o?.visualVariables,R),{renderer:r}}async function $e(e){const i=await we(e),{defaultSymbolEnabled:r,view:a,startTime:n,endTime:s,symbolType:l,minValue:t,maxValue:o,signal:u,filter:m,layer:p}=i,[d,c]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await f({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?y({layer:p,view:a,filter:m,signal:u}).catch(P):null]),{unit:v,statistics:z}=d,{valueExpression:w,title:h}=await C(i,v),b=await qe(ze({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:h},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:t,maxValue:o,filter:m,signal:u})),g={layer:p,valueExpression:w,defaultSymbolEnabled:r,symbolType:l},S=await Fe(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach(e=>W(e,n,s,v)),{...S,unit:v}}async function Ae(e){const{renderer:i,creatorParameters:r}=await Se(e),{layer:a,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=r,[d,c]=await Promise.all([f({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?y({layer:a,view:u,filter:p,signal:m}).catch(P):null]),{unit:v,statistics:z}=d,{valueExpression:w,title:h}=await C(r,v),b=await qe(ze({layer:a,valueExpression:w,statistics:z,legendOptions:{title:h},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));V(i,b.visualVariables,F),V(i,c?.visualVariables,R),i.authoringInfo=b.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach(e=>W(e,l,t,v)),{renderer:i}}export{$e as createAgeRenderer,Ce as createClassBreaksRenderer,Ge as createContinuousRenderer,qe as createVisualVariables,Ie as getSizeStopsForTheme,Ae as regenerateAgeRenderer,We as regenerateClassBreaksRenderer,Ue as regenerateContinuousRenderer,De as regenerateVisualVariables,Pe as updateRendererWithReferenceSize,Me as updateRendererWithSpike};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as l}from"../../core/lang.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import{isTimeOnlyField as r}from"../../layers/support/fieldUtils.js";import o from"../../renderers/PointCloudUniqueValueRenderer.js";import t from"../../renderers/UniqueValueRenderer.js";import s from"../../renderers/support/RendererLegendOptions.js";import{createUniqueValueLabel as a,calculateDateFormatInterval as u,dateFormatIntervalOptions as p}from"../../renderers/support/utils.js";import m from"../../renderers/support/pointCloud/ColorUniqueValueInfo.js";import d from"../heuristics/outline.js";import c from"../heuristics/sizeRange.js";import{spliceVisualVariables as f,processRegenerateParams as y,getRendererToUpdate as v,getStyleType as b,hasOutlineVV as w,hasScaleDependentSizeVV as g,findOutlineVVIndex as h,findScaleDependentSizeVVIndex as T}from"./support/regenerateUtils.js";import{getBasemapInfo as z,errorCallback as E,getPointSizeAlgorithm as x,verifyBasicFieldValidity as I,getSymbolSizeFromScheme as V,getSymbolOutlineFromScheme as M,createSymbol as j,isValidPointSize as S}from"./support/utils.js";import O from"../statistics/uniqueValues.js";import{verifyBinningParams as q}from"../support/binningUtils.js";import{getFieldsList as U,fieldDelimiter as C,isAnyDateField as B}from"../support/utils.js";import{binningCapableLayerTypes as P,featureCapableLayerTypes as Z,createLayerAdapter as F,getLayerTypeLabels as R}from"../support/adapters/support/layerUtils.js";import{cloneScheme as D,getSchemes as k}from"../symbology/type.js";async function A(e){if(!e?.layer||!e.field&&!e.valueExpression)throw new i("type-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("type-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&q(e,"type-renderer");const n={...e,layer:e.layer};n.symbolType=n.symbolType||"2d",n.defaultSymbolEnabled??=!0,n.sortBy??="count",n.sortEnabled??=!0,n.statistics=l(n.statistics);const r=null==n.numTypes?10:n.numTypes,o=e.forBinning?P:Z,t=F(n.layer,o,e.forBinning);if(!t)throw new i("type-renderer:invalid-parameters","'layer' must be one of these types: "+R(o).join(", "));const s=null!=n.signal?{signal:n.signal}:null;await t.load(s);const a=t.geometryType;if(n.outlineOptimizationEnabled="polygon"===a&&n.outlineOptimizationEnabled,n.sizeOptimizationEnabled=("point"===a||"multipoint"===a||"polyline"===a)&&n.sizeOptimizationEnabled,"mesh"===a)n.symbolType="3d-volumetric",n.colorMixMode=n.colorMixMode||"replace",n.edgesType=n.edgesType||"none";else{if("3d-volumetric-uniform"===n.symbolType&&"point"!==a)throw new i("type-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(n.symbolType.includes("3d-volumetric")&&(!n.view||"3d"!==n.view.type))throw new i("type-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const u=await U({field:n.field,field2:n.field2,field3:n.field3,valueExpression:n.valueExpression}),p=I(t,u,"type-renderer:invalid-parameters");if(p)throw p;return{...n,layer:t,numTypes:r}}async function L(e){const l="regenerate-type-renderer";await y(e,l);const n=await v(e),r=b(n);if(!r||!["type","type-size"].includes(r))throw new i(`${l}:invalid-parameters`,"Renderer is invalid");const{field:o,field2:t,field3:s,valueExpression:a,valueExpressionTitle:u}=n,p=n.uniqueValueInfos.length,{layer:m,forBinning:d,filter:c,view:f,signal:h}=e,T=w(n),z=g(n),E=await A({layer:m,field:o,field2:t,field3:s,valueExpression:a,valueExpressionTitle:u,numTypes:p,outlineOptimizationEnabled:T,sizeOptimizationEnabled:z,forBinning:d,filter:c,view:f,signal:h});return{...e,creatorParameters:E,renderer:n}}async function $(e){if(!e?.layer||!e.field)throw new i("type-point-cloud-class-renderer:missing-parameters","'layer' and 'field' parameters are required");const n={...e,layer:e.layer};n.statistics=l(n.statistics);const r=[10],o=F(n.layer,r);if(!o)throw new i("type-point-cloud-class-renderer:invalid-parameters","'layer' must be one of these types: "+R(r).join(", "));if(n.layer=o,n.density=n.density||25,n.size=n.size||"100%",!S(n.size))throw new i("type-point-cloud-class-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const t=null!=n.signal?{signal:n.signal}:null;await o.load(t);const s=await U({field:n.field}),a=I(o,s,"type-point-cloud-class-renderer:invalid-parameters");if(a)throw a;return n}async function G(e){let i=e.typeScheme,l=null,n=null;const r=await z(e.basemap,e.view);if(l=null!=r.basemapId?r.basemapId:null,n=null!=r.basemapTheme?r.basemapTheme:null,i)return{scheme:D(i),basemapId:l,basemapTheme:n};const o=k({numColors:e.numColors,basemapTheme:n,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return o&&(i=o.primaryScheme,l=o.basemapId,n=o.basemapTheme),{scheme:i,basemapId:l,basemapTheme:n}}function H(e,i){let l;return l=e.label<i.label?-1:e.label>i.label?1:0,l}function J(e,i){let l;return l=e.value<i.value?-1:e.value>i.value?1:0,l}function K(e,i){let l=i.count-e.count;return 0===l&&(l=H(e,i)),l}function N(e,i){let l=i.count-e.count;return 0===l&&(l=J(e,i)),l}function Q(e,i,l){let n;"count"===i?(n=N,l&&"codedValues"in l&&l.codedValues&&(n=K)):"value"===i&&(n=J,l&&"codedValues"in l&&l.codedValues&&(n=H)),n&&e.sort(n)}async function W(e,i,l,r){const o=await n("esri/smartMapping/t9n/smartMapping"),{field:u,field2:p,field3:m}=i,d=e.uniqueValueInfos,c=i.layer,f=u?c.getField(u):null,y=f?c.getFieldDomain(f.name):null,v=-1===i.numTypes?d.length:i.numTypes,b=c.geometryType,w=new t({field:u,field2:p,field3:m,fieldDelimiter:u&&p?C:null}),g=[],h=[],T={value:null,domain:y,fieldInfo:f};d.forEach((e,i)=>{T.value=e.value,e.label=a(T);const l=e.value;(null===l||"string"==typeof l&&l.toLowerCase().includes("<null>"))&&g.unshift(i)});for(const n of g)h.unshift(d.splice(n,1)[0]);!1!==i.sortEnabled&&Q(d,i.sortBy,y),X(T,i,d);const z=l?.opacity,E=await G({numColors:d.length,basemap:i.basemap,geometryType:b,typeScheme:i.typeScheme,worldScale:!!i.symbolType?.includes("3d-volumetric"),view:i.view}),x=E.scheme,I=x.colors.map(e=>e.clone()),S=V(x,b),O=M(x,b,z);d.forEach((e,l)=>{T.value=e.value,e.label=a(T),e.symbol=j(b,{type:i.symbolType,color:I[l],size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})}),i.valueExpression&&(w.valueExpression=i.valueExpression,w.valueExpressionTitle=i.valueExpressionTitle),i.legendOptions&&(w.legendOptions=new s(i.legendOptions));for(let n=0;n<v;n++){const e=d[n];e&&w.addUniqueValueInfo({value:e.value,label:e.label,symbol:j(b,{type:i.symbolType,color:I[n].clone(),size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})})}i.defaultSymbolEnabled&&(w.defaultSymbol=j(b,{type:i.symbolType,color:x.noDataColor,size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),w.defaultLabel=o.other);for(const n of h)n.symbol=j(b,{type:i.symbolType,color:x.noDataColor,size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),d.push(n);const q=[],U=w.uniqueValueInfos?.length??0,B=U===d.length?-1:U;if(B>-1)for(let n=B;n<d.length;n++)q.push({...d[n]});return l?.visualVariables?.length&&(w.visualVariables=l.visualVariables.map(e=>e.clone())),r?.minSize&&(w.visualVariables?w.visualVariables.push(r.minSize):w.visualVariables=[r.minSize]),{renderer:w,uniqueValueInfos:d,excludedUniqueValueInfos:q,typeScheme:D(x),basemapId:E.basemapId,basemapTheme:E.basemapTheme}}function X(e,i,l){const{field:n,numTypes:o,layer:t,view:s}=i,a=n?t.getField(n):null;if(a&&(B(a)||r(a))){const i=l.filter((e,i)=>i<o).map(e=>e.value),n=r(a)?null:u(i),m=n?p[n]:void 0;if(e.dateFormatOptions={fieldType:a.type,format:m},s){const i=t.layer;e.dateFormatOptions.timeZoneOptions={layerTimeZone:"preferredTimeZone"in i?i.preferredTimeZone:null,viewTimeZone:s.timeZone,datesInUnknownTimezone:"datesInUnknownTimezone"in i&&i.datesInUnknownTimezone}}}}async function Y(i,l){const n=i.uniqueValueInfos,r=await G({numColors:n.length,basemap:"gray",theme:"point-cloud-class",geometryType:"point",typeScheme:l}),o=r?.scheme,t="point-cloud-class"===o?.theme,s=t?o.colors:e(o?.colors??[],n.length);return Q(n,"value"),n.map((e,i)=>{const l=e.value;let n=null;return t?(n=s[l],n||(n=s[s.length-1])):n=s[i],new m({values:[l],color:n,label:e.label})})}async function _(e){const i=await A(e),{layer:l,view:n,signal:r,filter:o}=i,t={layer:l,field:i.field,field2:i.field2,field3:i.field3,valueExpression:i.valueExpression,returnAllCodedValues:i.returnAllCodedValues,view:n,filter:o,signal:r},[s,a,u]=await Promise.all([null!=i.statistics?i.statistics:O(t),i.outlineOptimizationEnabled?d({layer:l,view:n,signal:r,filter:o}).catch(E):null,i.sizeOptimizationEnabled?c({layer:l,view:n,signal:r,filter:o}).catch(E):null]);return W(s,i,a,u)}async function ee(e){const{creatorParameters:i,view:l,signal:n,filter:r,renderer:o}=await L(e),{layer:t,outlineOptimizationEnabled:s,sizeOptimizationEnabled:a}=i,[u,p]=await Promise.all([s?d({layer:t,view:l,signal:n,filter:r}).catch(E):null,a?c({layer:t,view:l,signal:n,filter:r}).catch(E):null]);return f(o,u?.visualVariables,h),f(o,p?.minSize,T),{renderer:o}}async function ie(e){const i=await $(e),l=null!=i.statistics?i.statistics:await O({layer:i.layer,field:i.field,signal:i.signal});return{renderer:new o({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:x(i.size),colorUniqueValueInfos:await Y(l,i.typeScheme)})}}export{ie as createPCClassRenderer,_ as createRenderer,G as getTypeSchemeData,ee as regenerateRenderer};
5
+ import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as l}from"../../core/lang.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import{isTimeOnlyField as r}from"../../layers/support/fieldUtils.js";import o from"../../renderers/PointCloudUniqueValueRenderer.js";import t from"../../renderers/UniqueValueRenderer.js";import s from"../../renderers/support/RendererLegendOptions.js";import{createUniqueValueLabel as a,calculateDateFormatInterval as u,dateFormatIntervalOptions as p}from"../../renderers/support/utils.js";import m from"../../renderers/support/pointCloud/ColorUniqueValueInfo.js";import d from"../heuristics/outline.js";import c from"../heuristics/sizeRange.js";import{spliceVisualVariables as f,processRegenerateParams as y,getRendererToUpdate as v,getStyleType as b,hasOutlineVV as w,hasScaleDependentSizeVV as g,findOutlineVVIndex as h,findScaleDependentSizeVVIndex as T}from"./support/regenerateUtils.js";import{getBasemapInfo as z,errorCallback as E,getPointSizeAlgorithm as x,verifyBasicFieldValidity as I,getSymbolSizeFromScheme as V,getSymbolOutlineFromScheme as M,createSymbol as j,isValidPointSize as S}from"./support/utils.js";import O from"../statistics/uniqueValues.js";import{verifyBinningParams as q}from"../support/binningUtils.js";import{getFieldsList as U,fieldDelimiter as C,isAnyDateField as B}from"../support/utils.js";import{binningCapableLayerTypes as R,featureCapableLayerTypes as P,createLayerAdapter as Z,getLayerTypeLabels as F}from"../support/adapters/support/layerUtils.js";import{cloneScheme as D,getSchemes as k}from"../symbology/type.js";async function A(e){if(!e?.layer||!e.field&&!e.valueExpression)throw new i("type-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("type-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&q(e,"type-renderer");const n={...e,layer:e.layer};n.symbolType=n.symbolType||"2d",n.defaultSymbolEnabled??=!0,n.sortBy??="count",n.sortEnabled??=!0,n.statistics=l(n.statistics);const r=null==n.numTypes?10:n.numTypes,o=e.forBinning?R:P,t=Z(n.layer,o,e.forBinning);if(!t)throw new i("type-renderer:invalid-parameters","'layer' must be one of these types: "+F(o).join(", "));const s=null!=n.signal?{signal:n.signal}:null;await t.load(s);const a=t.geometryType;n.outlineOptimizationEnabled="polygon"===a&&n.outlineOptimizationEnabled;const u="featureReduction"in e.layer&&"cluster"===e.layer.featureReduction?.type;if(n.sizeOptimizationEnabled=!("point"!==a&&"multipoint"!==a&&"polyline"!==a||u)&&n.sizeOptimizationEnabled,"mesh"===a)n.symbolType="3d-volumetric",n.colorMixMode=n.colorMixMode||"replace",n.edgesType=n.edgesType||"none";else{if("3d-volumetric-uniform"===n.symbolType&&"point"!==a)throw new i("type-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(n.symbolType.includes("3d-volumetric")&&(!n.view||"3d"!==n.view.type))throw new i("type-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const p=await U({field:n.field,field2:n.field2,field3:n.field3,valueExpression:n.valueExpression}),m=I(t,p,"type-renderer:invalid-parameters");if(m)throw m;return{...n,layer:t,numTypes:r}}async function L(e){const l="regenerate-type-renderer";await y(e,l);const n=await v(e),r=b(n);if(!r||!["type","type-size"].includes(r))throw new i(`${l}:invalid-parameters`,"Renderer is invalid");const{field:o,field2:t,field3:s,valueExpression:a,valueExpressionTitle:u}=n,p=n.uniqueValueInfos.length,{layer:m,forBinning:d,filter:c,view:f,signal:h}=e,T=w(n),z=g(n),E=await A({layer:m,field:o,field2:t,field3:s,valueExpression:a,valueExpressionTitle:u,numTypes:p,outlineOptimizationEnabled:T,sizeOptimizationEnabled:z,forBinning:d,filter:c,view:f,signal:h});return{...e,creatorParameters:E,renderer:n}}async function $(e){if(!e?.layer||!e.field)throw new i("type-point-cloud-class-renderer:missing-parameters","'layer' and 'field' parameters are required");const n={...e,layer:e.layer};n.statistics=l(n.statistics);const r=[10],o=Z(n.layer,r);if(!o)throw new i("type-point-cloud-class-renderer:invalid-parameters","'layer' must be one of these types: "+F(r).join(", "));if(n.layer=o,n.density=n.density||25,n.size=n.size||"100%",!S(n.size))throw new i("type-point-cloud-class-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const t=null!=n.signal?{signal:n.signal}:null;await o.load(t);const s=await U({field:n.field}),a=I(o,s,"type-point-cloud-class-renderer:invalid-parameters");if(a)throw a;return n}async function G(e){let i=e.typeScheme,l=null,n=null;const r=await z(e.basemap,e.view);if(l=null!=r.basemapId?r.basemapId:null,n=null!=r.basemapTheme?r.basemapTheme:null,i)return{scheme:D(i),basemapId:l,basemapTheme:n};const o=k({numColors:e.numColors,basemapTheme:n,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return o&&(i=o.primaryScheme,l=o.basemapId,n=o.basemapTheme),{scheme:i,basemapId:l,basemapTheme:n}}function H(e,i){let l;return l=e.label<i.label?-1:e.label>i.label?1:0,l}function J(e,i){let l;return l=e.value<i.value?-1:e.value>i.value?1:0,l}function K(e,i){let l=i.count-e.count;return 0===l&&(l=H(e,i)),l}function N(e,i){let l=i.count-e.count;return 0===l&&(l=J(e,i)),l}function Q(e,i,l){let n;"count"===i?(n=N,l&&"codedValues"in l&&l.codedValues&&(n=K)):"value"===i&&(n=J,l&&"codedValues"in l&&l.codedValues&&(n=H)),n&&e.sort(n)}async function W(e,i,l,r){const o=await n("esri/smartMapping/t9n/smartMapping"),{field:u,field2:p,field3:m}=i,d=e.uniqueValueInfos,c=i.layer,f=u?c.getField(u):null,y=f?c.getFieldDomain(f.name):null,v=-1===i.numTypes?d.length:i.numTypes,b=c.geometryType,w=new t({field:u,field2:p,field3:m,fieldDelimiter:u&&p?C:null}),g=[],h=[],T={value:null,domain:y,fieldInfo:f};d.forEach((e,i)=>{T.value=e.value,e.label=a(T);const l=e.value;(null===l||"string"==typeof l&&l.toLowerCase().includes("<null>"))&&g.unshift(i)});for(const n of g)h.unshift(d.splice(n,1)[0]);!1!==i.sortEnabled&&Q(d,i.sortBy,y),X(T,i,d);const z=l?.opacity,E=await G({numColors:d.length,basemap:i.basemap,geometryType:b,typeScheme:i.typeScheme,worldScale:!!i.symbolType?.includes("3d-volumetric"),view:i.view}),x=E.scheme,I=x.colors.map(e=>e.clone()),S=V(x,b),O=M(x,b,z);d.forEach((e,l)=>{T.value=e.value,e.label=a(T),e.symbol=j(b,{type:i.symbolType,color:I[l],size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})}),i.valueExpression&&(w.valueExpression=i.valueExpression,w.valueExpressionTitle=i.valueExpressionTitle),i.legendOptions&&(w.legendOptions=new s(i.legendOptions));for(let n=0;n<v;n++){const e=d[n];e&&w.addUniqueValueInfo({value:e.value,label:e.label,symbol:j(b,{type:i.symbolType,color:I[n].clone(),size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})})}i.defaultSymbolEnabled&&(w.defaultSymbol=j(b,{type:i.symbolType,color:x.noDataColor,size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),w.defaultLabel=o.other);for(const n of h)n.symbol=j(b,{type:i.symbolType,color:x.noDataColor,size:S,outline:O,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),d.push(n);const q=[],U=w.uniqueValueInfos?.length??0,B=U===d.length?-1:U;if(B>-1)for(let n=B;n<d.length;n++)q.push({...d[n]});return l?.visualVariables?.length&&(w.visualVariables=l.visualVariables.map(e=>e.clone())),r?.minSize&&(w.visualVariables?w.visualVariables.push(r.minSize):w.visualVariables=[r.minSize]),{renderer:w,uniqueValueInfos:d,excludedUniqueValueInfos:q,typeScheme:D(x),basemapId:E.basemapId,basemapTheme:E.basemapTheme}}function X(e,i,l){const{field:n,numTypes:o,layer:t,view:s}=i,a=n?t.getField(n):null;if(a&&(B(a)||r(a))){const i=l.filter((e,i)=>i<o).map(e=>e.value),n=r(a)?null:u(i),m=n?p[n]:void 0;if(e.dateFormatOptions={fieldType:a.type,format:m},s){const i=t.layer;e.dateFormatOptions.timeZoneOptions={layerTimeZone:"preferredTimeZone"in i?i.preferredTimeZone:null,viewTimeZone:s.timeZone,datesInUnknownTimezone:"datesInUnknownTimezone"in i&&i.datesInUnknownTimezone}}}}async function Y(i,l){const n=i.uniqueValueInfos,r=await G({numColors:n.length,basemap:"gray",theme:"point-cloud-class",geometryType:"point",typeScheme:l}),o=r?.scheme,t="point-cloud-class"===o?.theme,s=t?o.colors:e(o?.colors??[],n.length);return Q(n,"value"),n.map((e,i)=>{const l=e.value;let n=null;return t?(n=s[l],n||(n=s[s.length-1])):n=s[i],new m({values:[l],color:n,label:e.label})})}async function _(e){const i=await A(e),{layer:l,view:n,signal:r,filter:o}=i,t={layer:l,field:i.field,field2:i.field2,field3:i.field3,valueExpression:i.valueExpression,returnAllCodedValues:i.returnAllCodedValues,view:n,filter:o,signal:r},[s,a,u]=await Promise.all([null!=i.statistics?i.statistics:O(t),i.outlineOptimizationEnabled?d({layer:l,view:n,signal:r,filter:o}).catch(E):null,i.sizeOptimizationEnabled?c({layer:l,view:n,signal:r,filter:o}).catch(E):null]);return W(s,i,a,u)}async function ee(e){const{creatorParameters:i,view:l,signal:n,filter:r,renderer:o}=await L(e),{layer:t,outlineOptimizationEnabled:s,sizeOptimizationEnabled:a}=i,[u,p]=await Promise.all([s?d({layer:t,view:l,signal:n,filter:r}).catch(E):null,a?c({layer:t,view:l,signal:n,filter:r}).catch(E):null]);return f(o,u?.visualVariables,h),f(o,p?.minSize,T),{renderer:o}}async function ie(e){const i=await $(e),l=null!=i.statistics?i.statistics:await O({layer:i.layer,field:i.field,signal:i.signal});return{renderer:new o({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:x(i.size),colorUniqueValueInfos:await Y(l,i.typeScheme)})}}export{ie as createPCClassRenderer,_ as createRenderer,G as getTypeSchemeData,ee 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.34/esri/copyright.txt for details.
4
4
  */
5
- import s from"../../core/Error.js";import{isTimeOnlyField as i,numericTypes as r}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as t,verifyFieldType as e,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as n}from"../support/binningUtils.js";import{getNormalizationType as o,getFieldsList as l,isAnyDateField as p,dateTypes as m}from"../support/utils.js";import{defaultSupportedLayerTypes as u,binningCapableLayerTypes as f,createLayerAdapter as d,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";const y=[...r,...m,"time-only","string"];async function w(r){if(!r?.layer||!(r.field||r.valueExpression||r.sqlExpression))throw new s("summary-statistics:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new s("summary-statistics:missing-parameters","View is required when 'valueExpression' is specified");r.forBinning&&n(r,"summary-statistics");const{layer:m,...w}=r,v=[...u,5],x=r.forBinning?f:v,E=d(m,x,r.forBinning);if(!E)throw new s("summary-statistics:invalid-parameters","'layer' must be one of these types: "+c(x).join(", "));const h={layerAdapter:E,...w};h.normalizationType=o(h);const g=null!=h.signal?{signal:h.signal}:null;await E.load(g);const j=h.field,q=h.normalizationType,z=h.valueExpression||h.sqlExpression,B=j?E.getField(j):null,F=await l({field:h.field,normalizationField:h.normalizationField,valueExpression:h.valueExpression}),U=t(E,F,"summary-statistics:invalid-parameters");if(U)throw U;if(B){const r=e(E,B,"summary-statistics:invalid-parameters",y);if(r)throw r;if((p(B)||i(B))&&q)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed for date fields")}else if(z&&q)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");h.filter&&!h.filter.spatialRelationship&&(h.filter.spatialRelationship="intersects");const b=a(h.filter,"summary-statistics:invalid-parameters");if(b)throw b;return h}async function v(s){const{layerAdapter:i,...r}=await w(s);return i.summaryStatistics(r)}export{v as default};
5
+ import i from"../../core/Error.js";import{isTimeOnlyField as s,numericTypes as e}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as t,verifyFieldType as a,verifyFilterValidity as r}from"./support/utils.js";import{verifyBinningParams as n}from"../support/binningUtils.js";import{getNormalizationType as l,getFieldsList as o,isAnyDateField as m,dateTypes as p}from"../support/utils.js";import{defaultSupportedLayerTypes as f,binningCapableLayerTypes as d,createLayerAdapter as u,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";const w=[...e,...p,"time-only","string"];async function y(p){if(!p?.layer||!(p.field||p.fields?.length||p.valueExpression||p.sqlExpression))throw new i("summary-statistics:missing-parameters","'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required");if(p.valueExpression&&!p.sqlExpression&&!p.view)throw new i("summary-statistics:missing-parameters","View is required when 'valueExpression' is specified");p.forBinning&&n(p,"summary-statistics");const{layer:y,...h}=p,v=[...f,5],x=p.forBinning?d:v,E=u(y,x,p.forBinning);if(!E)throw new i("summary-statistics:invalid-parameters","'layer' must be one of these types: "+c(x).join(", "));const g={layerAdapter:E,...h};g.normalizationType=l(g);const z=null!=g.signal?{signal:g.signal}:null;await E.load(z);const j=g.normalizationType,q=await o({field:g.field,normalizationField:g.normalizationField,valueExpression:g.valueExpression,fields:g.fields}),V=t(E,q,"summary-statistics:invalid-parameters");if(V)throw V;if(g.fields?.length){const s=g.fields;if(s.length<2)throw new i("summary-statistics:invalid-parameters","'fields' must contain at least 2 fields if specified.");if(j||g.minValue||g.maxValue||g.valueExpression||g.field)throw new i("summary-statistics:invalid-parameters","Normalization, 'field', 'valueExpression', 'minValue' and 'maxValue' are not allowed when 'fields' is specified.");const t=new Set;for(const i of s){const s=E.getField(i),r=a(E,s,"summary-statistics:invalid-parameters",e);if(r)throw r;t.add(s.type)}if(t.size>1)throw new i("summary-statistics:invalid-parameters","All fields must be of the same type when 'fields' is specified.")}else{if((g.valueExpression||g.sqlExpression)&&j)throw new i("summary-statistics:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");if(g.field){const e=E.getField(g.field),t=a(E,e,"summary-statistics:invalid-parameters",w);if(t)throw t;if((m(e)||s(e))&&j)throw new i("summary-statistics:invalid-parameters","Normalization is not allowed for date fields")}}g.filter&&!g.filter.spatialRelationship&&(g.filter.spatialRelationship="intersects");const F=r(g.filter,"summary-statistics:invalid-parameters");if(F)throw F;return g}async function h(i){const{layerAdapter:s,...e}=await y(i);return s.summaryStatistics(e)}export{h as default};