@arcgis/core 4.33.0-next.20250611 → 4.33.0-next.20250612

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 (87) hide show
  1. package/arcade.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/0512ee54f2259a437fdb.js +1 -0
  4. package/assets/esri/core/workers/chunks/{3145218abe59b5e99ff8.js → 05f2133f05f86266d8c7.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{ad4f65d764654c70a117.js → 0f8f217aaf42eb1b9699.js} +1 -1
  6. package/assets/esri/core/workers/chunks/{74276044cb75b51967f2.js → 10eb89a93c8e31f03c95.js} +1 -1
  7. package/assets/esri/core/workers/chunks/273beed633cc37416ad7.js +1 -0
  8. package/assets/esri/core/workers/chunks/{ee3940679d794d78b4ea.js → 37d4667ec67b051a05de.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{aaa564c84ee8ea36fbb4.js → 49a57dc1e6d1048fa949.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{e7589c39b13295af8f1d.js → 604f8094992bb642378b.js} +1 -1
  11. package/assets/esri/core/workers/chunks/77ad62ed93f713a909f0.js +1 -0
  12. package/assets/esri/core/workers/chunks/{3cfc0a5f8a9cb9dc3b8f.js → 7b9eec0090f48e9cdaf1.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{3b63edcd34f832ac7bd8.js → 7c6b9e2c1dada4668c01.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{af0d7a7cbbaad47a49c6.js → 802c6b1a6cb9264b8e4f.js} +1 -1
  15. package/assets/esri/core/workers/chunks/8b1842f0f94c18652d4e.js +1 -0
  16. package/assets/esri/core/workers/chunks/{1c7eda72ecc2880034b9.js → 93c145a738b3f6cf4ee4.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{369978472cc9ee6a00b5.js → 9b41b407b8cc0b6db2a4.js} +4 -4
  18. package/assets/esri/core/workers/chunks/{6cbe8205a4e0f62da519.js → a5a27e2e9b91fbe12da9.js} +1 -1
  19. package/assets/esri/core/workers/chunks/d0876a713079c669995a.js +1 -0
  20. package/assets/esri/core/workers/chunks/{d5f770302dc686e55ba7.js → daffceecdc71e74d2629.js} +1 -1
  21. package/assets/esri/core/workers/chunks/e77f3312d718933f56d7.js +1 -0
  22. package/assets/esri/core/workers/chunks/fa5715ca3ce95d005b0a.js +1 -0
  23. package/assets/esri/themes/base/widgets/_SelectionList.scss +31 -28
  24. package/assets/esri/themes/dark/main.css +1 -1
  25. package/assets/esri/themes/light/main.css +1 -1
  26. package/assets/esri/themes/light/view.css +1 -1
  27. package/core/accessorSupport/utils.js +1 -1
  28. package/core/object.js +1 -1
  29. package/editing/sharedTemplates/executor/builders/bufferPolygonToPolygon.js +1 -1
  30. package/interfaces.d.ts +14 -0
  31. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  32. package/package.json +1 -1
  33. package/renderers/support/DictionaryScriptEvaluator.js +1 -1
  34. package/rest/networks/circuits/support/CircuitVerifyResult.js +1 -1
  35. package/smartMapping/renderers/size.js +1 -1
  36. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  37. package/smartMapping/support/adapters/support/utils.js +1 -1
  38. package/support/ArcadeExpression.js +1 -1
  39. package/support/revision.js +1 -1
  40. package/symbols/cim/effects/EffectTaperedPolygon.js +1 -1
  41. package/views/2d/engine/vectorTiles/style/StyleProperty.js +1 -1
  42. package/views/3d/analysis/AreaMeasurementAnalysisView3D.js +1 -1
  43. package/views/3d/analysis/DimensionAnalysisView3D.js +1 -1
  44. package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
  45. package/views/3d/analysis/LineOfSightAnalysisView3D.js +1 -1
  46. package/views/3d/analysis/SliceAnalysisView3D.js +1 -1
  47. package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
  48. package/views/3d/camera/intersectionUtils.js +1 -1
  49. package/views/analysis/analysisViewUtils.js +1 -1
  50. package/views/ui/UI.js +1 -1
  51. package/webscene/Slide.js +1 -1
  52. package/widgets/Directions/DirectionsVisibleElements.js +1 -1
  53. package/widgets/Directions.js +1 -1
  54. package/widgets/Editor/EditorViewModel.js +1 -1
  55. package/widgets/Editor/UpdateFeatureWorkflowData.js +1 -1
  56. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  57. package/widgets/Editor/UpdateWorkflow.js +1 -1
  58. package/widgets/Editor.js +1 -1
  59. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  60. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  61. package/widgets/FeatureTable.js +1 -1
  62. package/widgets/Features/FeaturesViewModel.js +1 -1
  63. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  64. package/widgets/OrientedImageryViewer/components/ImageViewer.js +1 -1
  65. package/widgets/OrientedImageryViewer/components/NavigationNode.js +1 -1
  66. package/widgets/OrientedImageryViewer/components/NavigationSettings.js +1 -1
  67. package/widgets/OrientedImageryViewer/components/NavigationUI.js +1 -1
  68. package/widgets/OrientedImageryViewer/components/NavigationUI360.js +5 -0
  69. package/widgets/OrientedImageryViewer/components/NavigationUIPanoramicViewModel.js +1 -1
  70. package/widgets/OrientedImageryViewer/components/NavigationUIViewModel.js +1 -1
  71. package/widgets/OrientedImageryViewer/components/imageNavigationUtils.js +1 -1
  72. package/widgets/OrientedImageryViewer/navigation/NavigationManager.js +1 -1
  73. package/widgets/OrientedImageryViewer.js +1 -1
  74. package/widgets/PanoramicViewer.js +1 -1
  75. package/widgets/support/SelectionList/FeatureItem.js +1 -1
  76. package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
  77. package/widgets/support/SelectionList/LayerItem.js +1 -1
  78. package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
  79. package/widgets/support/SelectionList.js +1 -1
  80. package/widgets/support/UtilityNetworkAssociations/FeatureUtilityNetworkAssociationsViewModel.js +1 -1
  81. package/assets/esri/core/workers/chunks/40111357b99235a4cb0f.js +0 -1
  82. package/assets/esri/core/workers/chunks/49089731ecfe7e8bb2f6.js +0 -1
  83. package/assets/esri/core/workers/chunks/4a1f0587a1cc1138faa3.js +0 -1
  84. package/assets/esri/core/workers/chunks/72ea996b03932c0f004f.js +0 -1
  85. package/assets/esri/core/workers/chunks/c8856370bae65d9eeb2b.js +0 -1
  86. package/assets/esri/core/workers/chunks/cd4fb107489594c57438.js +0 -1
  87. package/assets/esri/core/workers/chunks/d28d874c1337b69fedc0.js +0 -1
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{handlesGroup as r}from"../handleUtils.js";import{clone as t}from"../lang.js";function n(r){return r.__accessor__??null}function e(r,t){return null!=r?.metadata?.[t]}function i(r,t){const e=n(r);return e?e.getDependsInfo(r,t,""):""}function u(r,t,n){if(n){return a(r,t,{policy:n,path:""})}return a(r,t,null)}function a(r,n,e){return n?Object.keys(n).reduce(((r,i)=>{const u=i;let s=null,o="merge";if(e&&(s=e.path?`${e.path}.${i}`:i,o=e.policy(s)),"replace"===o)return r[u]=n[u],r;if("replace-arrays"===o&&Array.isArray(r[u]))return r[u]=n[u],r;if(void 0===r[u])return r[u]=t(n[u]),r;let c=r[u],l=n[u];if(c===l)return r;if(Array.isArray(l)||Array.isArray(r))c=c?Array.isArray(c)?r[u]=c.slice():r[u]=[c]:r[u]=[],l&&(Array.isArray(l)||(l=[l]),l.forEach((r=>{c.includes(r)||c.push(r)})));else if(l&&"object"==typeof l)if(e){const t=e.path;e.path=s,r[u]=a(c,l,e),e.path=t}else r[u]=a(c,l,null);else r.hasOwnProperty(i)&&!n.hasOwnProperty(i)||(r[u]=l);return r}),r||{}):r}function s(r){return Array.isArray(r)?r:r.split(".")}function o(r){return r.includes(",")?r.split(",").map((r=>r.trim())):[r.trim()]}function c(r){if(Array.isArray(r)){const t=[];for(const n of r)t.push(...o(n));return t}return o(r)}function l(t,n,e,i){const u=c(n);if(1!==u.length){const n=u.map((r=>i(t,r,e)));return r(n)}return i(t,u[0],e)}export{i as getDependsInfo,n as getProperties,e as isPropertyDeclared,u as merge,l as parse,s as pathToArray,c as splitPath};
5
+ import{handlesGroup as r}from"../handleUtils.js";import{clone as t}from"../lang.js";function n(r){return r.__accessor__??null}function e(r,t){return null!=r?.metadata?.[t]}function i(r,t){const e=n(r);return e?e.getDependsInfo(r,t,""):""}function u(r,t,n){if(n){return a(r,t,{policy:n,path:""})}return a(r,t,null)}function a(r,n,e){return n?Object.keys(n).reduce(((r,i)=>{const u=i;if("__proto__"===u)return r;let o=null,s="merge";if(e&&(o=e.path?`${e.path}.${i}`:i,s=e.policy(o)),"replace"===s)return r[u]=n[u],r;if("replace-arrays"===s&&Array.isArray(r[u]))return r[u]=n[u],r;if(void 0===r[u])return r[u]=t(n[u]),r;let c=r[u],l=n[u];if(c===l)return r;if(Array.isArray(l)||Array.isArray(r))c=c?Array.isArray(c)?r[u]=c.slice():r[u]=[c]:r[u]=[],l&&(Array.isArray(l)||(l=[l]),l.forEach((r=>{c.includes(r)||c.push(r)})));else if(l&&"object"==typeof l)if(e){const t=e.path;e.path=o,r[u]=a(c,l,e),e.path=t}else r[u]=a(c,l,null);else r.hasOwnProperty(i)&&!n.hasOwnProperty(i)||(r[u]=l);return r}),r||{}):r}function o(r){return Array.isArray(r)?r:r.split(".")}function s(r){return r.includes(",")?r.split(",").map((r=>r.trim())):[r.trim()]}function c(r){if(Array.isArray(r)){const t=[];for(const n of r)t.push(...s(n));return t}return s(r)}function l(t,n,e,i){const u=c(n);if(1!==u.length){const n=u.map((r=>i(t,r,e)));return r(n)}return i(t,u[0],e)}export{i as getDependsInfo,n as getProperties,e as isPropertyDeclared,u as merge,l as parse,o as pathToArray,c as splitPath};
package/core/object.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{clone as r}from"./lang.js";function n(r,n,t=!1){return f(r,n,t)}function t(r,n){if(null!=n)return n[r]||u(r.split("."),!1,n)}function e(r,n,t){const e=r.split("."),i=e.pop(),f=u(e,!0,t);f&&i&&(f[i]=n)}function i(r,n){if(null==r&&null==n)return!1;if(null==r)return!0;if(null==n)return!0;if("object"==typeof r){if(Array.isArray(r)){const t=n;if(r.length!==t.length)return!0;for(let n=0;n<r.length;n++)if(i(r[n],t[n]))return!0;return!1}if(Object.keys(r).length!==Object.keys(n).length)return!0;for(const t in r){if(i(r[t],n[t]))return!0}return!1}return r!==n}function u(r,n,t){let e=t;for(const i of r){if(null==e)return;if(!(i in e)){if(!n)return;e[i]={}}e=e[i]}return e}function f(n,t,e){return t?Object.keys(t).reduce(((n,i)=>{let u=n[i],l=t[i];return u===l?n:void 0===u?(n[i]=r(l),n):(Array.isArray(l)||Array.isArray(n)?(u=u?Array.isArray(u)?n[i]=u.slice():n[i]=[u]:n[i]=[],l&&(Array.isArray(l)||(l=[l]),e?l.forEach((r=>{u.includes(r)||u.push(r)})):n[i]=l.slice())):l&&"object"==typeof l?n[i]=f(u,l,e):n.hasOwnProperty(i)&&!t.hasOwnProperty(i)||(n[i]=l),n)}),n||{}):n}export{n as deepMerge,t as getDeepValue,i as notDeepEqual,e as setDeepValue};
5
+ import{clone as r}from"./lang.js";function n(r,n,t=!1){return f(r,n,t)}function t(r,n){if(null!=n)return n[r]||u(r.split("."),!1,n)}function e(r,n,t){const e=r.split("."),i=e.pop(),f=u(e,!0,t);f&&i&&(f[i]=n)}function i(r,n){if(null==r&&null==n)return!1;if(null==r)return!0;if(null==n)return!0;if("object"==typeof r){if(Array.isArray(r)){const t=n;if(r.length!==t.length)return!0;for(let n=0;n<r.length;n++)if(i(r[n],t[n]))return!0;return!1}if(Object.keys(r).length!==Object.keys(n).length)return!0;for(const t in r){if(i(r[t],n[t]))return!0}return!1}return r!==n}function u(r,n,t){let e=t;for(const i of r){if(null==e)return;if(!(i in e)){if(!n)return;e[i]={}}e=e[i]}return e}function f(n,t,e){return t?Object.keys(t).reduce(((n,i)=>{if("__proto__"===i)return n;let u=n[i],o=t[i];return u===o?n:void 0===u?(n[i]=r(o),n):(Array.isArray(o)||Array.isArray(n)?(u=u?Array.isArray(u)?n[i]=u.slice():n[i]=[u]:n[i]=[],o&&(Array.isArray(o)||(o=[o]),e?o.forEach((r=>{u.includes(r)||u.push(r)})):n[i]=o.slice())):o&&"object"==typeof o?n[i]=f(u,o,e):n.hasOwnProperty(i)&&!t.hasOwnProperty(i)||(n[i]=o),n)}),n||{}):n}export{n as deepMerge,t as getDeepValue,i as notDeepEqual,e as setDeepValue};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{correctZandMFollowingBuffer as t,makeFeatureFromGroupPart as e}from"./support/builderUtils.js";import{isPolygon as r}from"../support/executorUtils.js";import{e as s}from"../../../../chunks/bufferOperator.js";function o({templatePart:o,shape:i,edits:p,relationships:a,mode:n}){if(!r(i))return;const u=o.builderConfig?.distanceValue??0;if(u<=0)return;const m=t(s(i,u),i);m&&e({templatePart:o,shape:m,edits:p,relationships:a,mode:n})}const i=!1;export{o as execute,i as isAsync};
5
+ import{correctZandMFollowingBuffer as t,makeFeatureFromGroupPart as e}from"./support/builderUtils.js";import{isPolygon as r}from"../support/executorUtils.js";import{e as s}from"../../../../chunks/bufferOperator.js";function o({templatePart:o,shape:i,edits:p,relationships:a,mode:m}){if(!r(i))return;const n=o.builderConfig?.distanceValue??0,u=t(s(i,n),i);u&&e({templatePart:o,shape:u,edits:p,relationships:a,mode:m})}const i=!1;export{o as execute,i as isAsync};
package/interfaces.d.ts CHANGED
@@ -104840,6 +104840,13 @@ declare namespace __esri {
104840
104840
  */
104841
104841
  get elements(): SlideElements | nullish;
104842
104842
  set elements(value: SlideElementsProperties | nullish);
104843
+ /**
104844
+ * The enabled focus areas of the scene.
104845
+ *
104846
+ * {@link https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html#enabledFocusAreas Read more...}
104847
+ */
104848
+ get enabledFocusAreas(): Collection<string> | nullish;
104849
+ set enabledFocusAreas(value: CollectionProperties<string> | nullish);
104843
104850
  /**
104844
104851
  * Represents settings that affect the environment in which the WebScene is displayed (such as lighting).
104845
104852
  *
@@ -104945,6 +104952,12 @@ declare namespace __esri {
104945
104952
  * {@link https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html#elements Read more...}
104946
104953
  */
104947
104954
  elements?: SlideElementsProperties | nullish;
104955
+ /**
104956
+ * The enabled focus areas of the scene.
104957
+ *
104958
+ * {@link https://developers.arcgis.com/javascript/latest/api-reference/esri-webscene-Slide.html#enabledFocusAreas Read more...}
104959
+ */
104960
+ enabledFocusAreas?: CollectionProperties<string> | nullish;
104948
104961
  /**
104949
104962
  * Represents settings that affect the environment in which the WebScene is displayed (such as lighting).
104950
104963
  *
@@ -110980,6 +110993,7 @@ declare namespace __esri {
110980
110993
  export interface DirectionsVisibleElements {
110981
110994
  editRouteButton?: boolean;
110982
110995
  layerDetails?: boolean;
110996
+ printButton?: boolean;
110983
110997
  saveAsButton?: boolean;
110984
110998
  saveButton?: boolean;
110985
110999
  }
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Clonable.js";import r from"../../../core/Error.js";import o from"../../../core/JSONSupport.js";import a from"../../../core/Logger.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import{cast as n}from"../../../core/accessorSupport/decorators/cast.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";import{reader as p}from"../../../core/accessorSupport/decorators/reader.js";import{subclass as c}from"../../../core/accessorSupport/decorators/subclass.js";import{writer as l}from"../../../core/accessorSupport/decorators/writer.js";import m from"../../../geometry/Point.js";import{getGeometryZScaler as u}from"../../../geometry/support/zscale.js";import d from"./CameraOrientation.js";import y from"./cameraOrientationFactory.js";import{appendPrefixAndSuffix as f,getEffectiveElevationSource as g,orientedImageryTypeMap as h}from"./utils.js";import{CameraOrientationType as v}from"../enums/CameraOrientationType.js";import{ltpToGeographic as w}from"../transformations/utils.js";function O(e){throw new r("exposure-point:missing-default-value",`a value for ${e} is missing in default properties`)}function j(e,t){throw new r("exposure-point:missing-attribute-value",`a value for ${e} is missing in attribute table`,{exposurePoint:t})}const b=e=>({cast:e=>{const t=parseFloat(e);return Number.isFinite(t)?t:void 0},json:{name:e,write:{writer:(e,t,r)=>{t[r]=Number.isFinite(e)?e:void 0}}}}),S=e=>({cast:e=>"string"==typeof e?e.split(";").map(Number):e,json:{default:e,write:{writer:(e,t,r)=>{t[r]=e?.join(";")}}}});let I=class extends(t.ClonableMixin(o)){constructor(e){super(e),this._geometry=null,this.cameraOrientation=null,this.elevation=null,this.elevationSource=null,this.name=null,this.sourceMap=null}read(e,t){const r={},{attributes:o,geometry:a}=e,i={};for(const s in o)r[s.toLowerCase()]=o[s],i[s.toLowerCase()]=s;const n=e.layer??{};n.sequenceOrderField?.length&&(r.sequenceorder=o[n.sequenceOrderField],i.sequenceorder=n.sequenceOrderField),super.read({geometry:a,layer:n,sourceMap:i,...r},t)}write(e,t){const r=super.write(e,t),{sourceMap:o}=this;if(!o||!r)return r;const a={};for(const i in r){const e=o[i.toLowerCase()];e&&(a[e]=r[i])}return a}readCameraHeading(e,t){const{cameraheading:r,camheading:o,layer:a}=t;return r??o??a.cameraHeading}readCameraHeight(e,t){const{cameraheight:r,avghtag:o,layer:a}=t;return r??o??a.cameraHeight}readCamOffset(e,t){const{cameraoffset:r,camoffset:o}=t;return r?.split(";").map(Number)??o?.split(";").map(Number)??null}writeCameraOffset(e,t){e&&(t.cameraOffset=e.join(";"))}readCameraOrientation(e,t){const{cameraorientation:r,camori:o}=t;return r??o}readCameraPitch(e,t){const{camerapitch:r,campitch:o,layer:a}=t;return r??o??a.cameraPitch}readCameraRoll(e,t){const{cameraroll:r,camroll:o,layer:a}=t;return r??o??a.cameraRoll}readDepthImage(e,t){const{depthimage:r,depthimg:o,layer:a}=t,i=r??o??null,{depthImagePathPrefix:n,depthImagePathSuffix:s}=a??{};return f(i,n,s)}readElevationSource(e,t){const{elevationsource:r,layer:o}=t,{demPathSuffix:a,demPathPrefix:i}=o;if(r){const e=this._parseIfJSON(r);return g(e,i,a)}return o.effectiveElevationSource}readFarDistance(e,t){const{fardistance:r,fardist:o,layer:a}=t;return r??o??a.farDistance}get geometry(){const e=this._geometry.clone();if(!e)return null;const{cameraOffset:t}=this;if(t){const[r,o,a]=t;e.x+=r,e.y+=o,null!=e.z&&null!=a&&(e.z+=a)}return e}set geometry(e){this._geometry=e}readHFOV(e,t){const{horizontalfieldofview:r,hfov:o,layer:a}=t;return r??o??a.horizontalFieldOfView}readImageURL(e,t){const{imagepath:r,layer:o}=t;r||j("imagePath",this);const{imagePathPrefix:a,imagePathSuffix:i}=o;return f(r,a,i)}readImageRotation(e,t){const{imagerotation:r,imgrot:o,layer:a}=t;return r??o??a.imageRotation}get isHorizontal(){return"horizontal"===this.orientedImageryType}get isInspection(){return"inspection"===this.orientedImageryType}get isNadir(){return"nadir"===this.orientedImageryType}get isOblique(){return"oblique"===this.orientedImageryType}get isSpherical(){return"360"===this.orientedImageryType}get location(){const{cameraOrientation:e,cameraHeight:t,elevation:r}=this;if(e){const{type:t,x:r,y:o,z:a,horizontalWKID:i,verticalWKID:n}=e,s="number"==typeof i?{wkid:i}:{wkt:i};if(t===v.LTP){const{latitude:t,longitude:r,ellipsoidRadius:o,squaredEccentricity:a,properties:i}=e,{x:n,y:s,z:p}=i;return new m(w([n,s,p],[t,r,o,a]))}const p=new m({x:r,y:o,z:a,spatialReference:s}),c=n?u("point",{wkid:n},s):null;return c&&c(p),p}if("number"!=typeof t)throw O("cameraHeight");const o=this.geometry.clone();return o.z=o.hasZ?o.z:(r??0)+t,o}set matrix(e){if(!e||9!==e.length)return a.getLogger(this).warn("Ignoring rotation matrix because it doesn't have 9 values",{value:e}),void this._set("matrix",null);this._set("matrix",e)}readNearDistance(e,t){const{neardistance:r,neardist:o,layer:a}=t;return r??o??a.nearDistance}readOffsetFromStart(e,t){return t.offsetfromstart??null}readOrientationAccuracy(e,t){const{accuracy:r,orientationaccuracy:o}=t;return o?.split(";").map(Number)??r?.split(";").map(Number)??null}writeOrientationAccuracy(e,t){e&&(t.orientationAccuracy=e.join(";"))}readOIType(e,t){const{orientedimagerytype:r,oitype:o,camerapitch:a,campitch:i,layer:n}=t,s=h.read(r??o??n.orientedImageryType),p=a??i??n.cameraPitch;return"oblique"===s?p<10?"nadir":"oblique":s}set radial(e){if(e)if("string"!=typeof e)this._set("radial",e);else{const[t,r,o]=e.split(";").map(Number);this._set("radial",[t??0,r??0,o??0])}else this._set("radial",[0,0,0])}readSequenceOrder(e,t){const{layer:r}=t;return t[r.sequenceOrderField.toLowerCase()]}writeSequenceOrder(e,t){if(!e)return;const{sourceMap:r}=this;if(r){t[r.sequenceorder]=e}}set tangential(e){if(e)if("string"!=typeof e)this._set("tangential",e);else{const[t,r]=e.split(";").map(Number);this._set("tangential",[t??0,r??0])}else this._set("tangential",[0,0])}readVFOV(e,t){const{verticalfieldofview:r,vfov:o,layer:a}=t;return r??o??a.verticalFieldOfView}_parseIfJSON(e){let t=null;try{t=JSON.parse(e)}catch(r){a.getLogger(this).error("couldn't parse the given elevation source JSON",e,r)}return t}};e([i()],I.prototype,"_geometry",void 0),e([i(b())],I.prototype,"a0",void 0),e([i(b())],I.prototype,"a1",void 0),e([i(b())],I.prototype,"a2",void 0),e([i({type:Date,json:{write:{enabled:!0,target:"acquisitionDate"},name:"acquisitiondate"}})],I.prototype,"acquisitionDate",void 0),e([i(b())],I.prototype,"b0",void 0),e([i(b())],I.prototype,"b1",void 0),e([i(b())],I.prototype,"b2",void 0),e([i({type:Number,json:{write:!0,read:{source:["cameraheading","camheading","layer.cameraHeading"]}}})],I.prototype,"cameraHeading",void 0),e([p("cameraHeading")],I.prototype,"readCameraHeading",null),e([i({type:Number,json:{write:!0}})],I.prototype,"cameraHeight",void 0),e([p("cameraHeight",["cameraheight","avghtag","layer.cameraHeight"])],I.prototype,"readCameraHeight",null),e([i()],I.prototype,"cameraOffset",void 0),e([p("cameraOffset",["cameraoffset","camoffset"])],I.prototype,"readCamOffset",null),e([l("cameraOffset")],I.prototype,"writeCameraOffset",null),e([i({json:{write:{writer:(e,t,r)=>{t[r]=e.toString()}}},type:d}),n((e=>e?y.getCameraOrientation(e):null))],I.prototype,"cameraOrientation",void 0),e([p("cameraOrientation",["cameraorientation","camori"])],I.prototype,"readCameraOrientation",null),e([i({type:Number,json:{write:!0}})],I.prototype,"cameraPitch",void 0),e([p("cameraPitch",["camerapitch","campitch","layer.cameraPitch"])],I.prototype,"readCameraPitch",null),e([i({type:Number,json:{write:!0}})],I.prototype,"cameraRoll",void 0),e([p("cameraRoll",["cameraroll","camroll","layer.cameraRoll"])],I.prototype,"readCameraRoll",null),e([i({json:{write:!0},type:String})],I.prototype,"depthImage",void 0),e([p("depthImage",["depthimage","depthimg"])],I.prototype,"readDepthImage",null),e([i({type:Number,json:{write:!0}})],I.prototype,"elevation",void 0),e([i({json:{write:!0},clonable:"reference"})],I.prototype,"elevationSource",void 0),e([p("elevationSource",["elevationsource","layer.effectiveElevationSource"])],I.prototype,"readElevationSource",null),e([i({json:{name:"exposurestationid",write:{target:"exposureStationId"}},type:String})],I.prototype,"exposureStationId",void 0),e([i({type:Number,json:{write:!0}})],I.prototype,"farDistance",void 0),e([p("farDistance",["fardistance","fardist","layer.farDistance"])],I.prototype,"readFarDistance",null),e([i(b("focallength"))],I.prototype,"focalLength",void 0),e([i({type:m,json:{name:"geometry"}})],I.prototype,"geometry",null),e([i({type:Number,json:{write:!0}})],I.prototype,"horizontalFieldOfView",void 0),e([p("horizontalFieldOfView",["horizontalfieldofview","hfov","layer.horizontalFieldOfView"])],I.prototype,"readHFOV",null),e([i({json:{write:!0},type:String})],I.prototype,"imagePath",void 0),e([p("imagePath",["imagepath"])],I.prototype,"readImageURL",null),e([i({type:Number,json:{write:!0}})],I.prototype,"imageRotation",void 0),e([p("imageRotation",["imagerotation","imgrot","layer.imageRotation"])],I.prototype,"readImageRotation",null),e([i()],I.prototype,"isHorizontal",null),e([i()],I.prototype,"isInspection",null),e([i()],I.prototype,"isNadir",null),e([i()],I.prototype,"isOblique",null),e([i()],I.prototype,"isSpherical",null),e([i()],I.prototype,"location",null),e([i(S())],I.prototype,"matrix",null),e([i({json:{write:!0},type:String})],I.prototype,"name",void 0),e([i({type:Number,json:{write:!0}})],I.prototype,"nearDistance",void 0),e([p("nearDistance",["neardistance","neardist","layer.nearDistance"])],I.prototype,"readNearDistance",null),e([i({json:{write:!0,name:"objectid"},type:Number})],I.prototype,"objectId",void 0),e([i({type:Number,json:{write:!0}})],I.prototype,"offsetFromStart",void 0),e([p("offsetFromStart",["offsetfromstart"])],I.prototype,"readOffsetFromStart",null),e([i()],I.prototype,"orientationAccuracy",void 0),e([p("orientationAccuracy",["accuracy","orientationaccuracy"])],I.prototype,"readOrientationAccuracy",null),e([l("orientationAccuracy")],I.prototype,"writeOrientationAccuracy",null),e([s(h)],I.prototype,"orientedImageryType",void 0),e([p("orientedImageryType",["orientedimagerytype","oitype","layer.orientedImageryType"])],I.prototype,"readOIType",null),e([i({type:Number,json:{write:!0,read:{source:"principalx"}}})],I.prototype,"principalX",void 0),e([i({type:Number,json:{write:!0,read:{source:"principaly"}}})],I.prototype,"principalY",void 0),e([i(S([0,0,0]))],I.prototype,"radial",null),e([i({type:String})],I.prototype,"sequenceOrder",void 0),e([p("sequenceOrder",["sequenceorder","layer.sequenceOrderField"])],I.prototype,"readSequenceOrder",null),e([l("sequenceOrder")],I.prototype,"writeSequenceOrder",null),e([i({type:Object})],I.prototype,"sourceMap",void 0),e([i(S([0,0]))],I.prototype,"tangential",null),e([i({type:Number,json:{write:!0}})],I.prototype,"verticalFieldOfView",void 0),e([p("verticalFieldOfView",["verticalfieldofview","vfov","layer.verticalFieldOfView"])],I.prototype,"readVFOV",null),I=e([c("esri.layers.orientedImagery.core.ExposurePoint")],I);const N=I;export{N as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Clonable.js";import r from"../../../core/Error.js";import o from"../../../core/JSONSupport.js";import a from"../../../core/Logger.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import{cast as n}from"../../../core/accessorSupport/decorators/cast.js";import{enumeration as s}from"../../../core/accessorSupport/decorators/enumeration.js";import{reader as p}from"../../../core/accessorSupport/decorators/reader.js";import{subclass as c}from"../../../core/accessorSupport/decorators/subclass.js";import{writer as l}from"../../../core/accessorSupport/decorators/writer.js";import m from"../../../geometry/Point.js";import{getGeometryZScaler as u}from"../../../geometry/support/zscale.js";import d from"./CameraOrientation.js";import y from"./cameraOrientationFactory.js";import{appendPrefixAndSuffix as f,getEffectiveElevationSource as g,orientedImageryTypeMap as h}from"./utils.js";import{CameraOrientationType as v}from"../enums/CameraOrientationType.js";import{ltpToGeographic as w}from"../transformations/utils.js";function O(e){throw new r("exposure-point:missing-default-value",`a value for ${e} is missing in default properties`)}function j(e,t){throw new r("exposure-point:missing-attribute-value",`a value for ${e} is missing in attribute table`,{exposurePoint:t})}const b=e=>({cast:e=>{const t=parseFloat(e);return Number.isFinite(t)?t:void 0},json:{name:e,write:{writer:(e,t,r)=>{t[r]=Number.isFinite(e)?e:void 0}}}}),S=e=>({cast:e=>"string"==typeof e?e.split(";").map(Number):e,json:{default:e,write:{writer:(e,t,r)=>{t[r]=e?.join(";")}}}});let I=class extends(t.ClonableMixin(o)){constructor(e){super(e),this._geometry=null,this.cameraOrientation=null,this.elevation=null,this.elevationSource=null,this.name=null,this.sourceMap=null}read(e,t){const r={},{attributes:o,geometry:a}=e,i={};for(const s in o)r[s.toLowerCase()]=o[s],i[s.toLowerCase()]=s;const n=e.layer??{};n.sequenceOrderField?.length&&(r.sequenceorder=o[n.sequenceOrderField],i.sequenceorder=n.sequenceOrderField),super.read({geometry:a,layer:n,sourceMap:i,...r},t)}write(e,t){const r=super.write(e,t),{sourceMap:o}=this;if(!o||!r)return r;const a={};for(const i in r){const e=o[i.toLowerCase()];e&&(a[e]=r[i])}return a}readCameraHeading(e,t){const{cameraheading:r,camheading:o,layer:a}=t;return r??o??a.cameraHeading}readCameraHeight(e,t){const{cameraheight:r,avghtag:o,layer:a}=t;return r??o??a.cameraHeight}readCamOffset(e,t){const{cameraoffset:r,camoffset:o}=t;return r?.split(";").map(Number)??o?.split(";").map(Number)??null}writeCameraOffset(e,t){e&&(t.cameraOffset=e.join(";"))}readCameraOrientation(e,t){const{cameraorientation:r,camori:o}=t;return r??o}readCameraPitch(e,t){const{camerapitch:r,campitch:o,layer:a}=t;return r??o??a.cameraPitch}readCameraRoll(e,t){const{cameraroll:r,camroll:o,layer:a}=t;return r??o??a.cameraRoll}readDepthImage(e,t){const{depthimage:r,depthimg:o,layer:a}=t,i=r??o??null,{depthImagePathPrefix:n,depthImagePathSuffix:s}=a??{};return f(i,n,s)}readElevationSource(e,t){const{elevationsource:r,layer:o}=t,{demPathSuffix:a,demPathPrefix:i}=o;if(r){const e=this._parseIfJSON(r);return g(e,i,a)}return o.effectiveElevationSource}readFarDistance(e,t){const{fardistance:r,fardist:o,layer:a}=t;return r??o??a.farDistance}get geometry(){const e=this._geometry.clone();if(!e)return null;const{cameraOffset:t}=this;if(t){const[r,o,a]=t;e.x+=r,e.y+=o,null!=e.z&&null!=a&&(e.z+=a)}return e}set geometry(e){this._geometry=e}readHFOV(e,t){const{horizontalfieldofview:r,hfov:o,layer:a}=t;return r??o??a.horizontalFieldOfView}readImageURL(e,t){const{imagepath:r,layer:o}=t;r||j("imagePath",this);const{imagePathPrefix:a,imagePathSuffix:i}=o;return f(r,a,i)}readImageRotation(e,t){const{imagerotation:r,imgrot:o,layer:a}=t;return r??o??a.imageRotation}get isHorizontal(){return"horizontal"===this.orientedImageryType}get isInspection(){return"inspection"===this.orientedImageryType}get isNadir(){return"nadir"===this.orientedImageryType}get isOblique(){return"oblique"===this.orientedImageryType}get isSpherical(){return"360"===this.orientedImageryType}get location(){const{cameraOrientation:e,cameraHeight:t,elevation:r}=this;if(e){const{type:t,x:r,y:o,z:a,horizontalWKID:i,verticalWKID:n}=e,s="number"==typeof i?{wkid:i}:{wkt:i};if(t===v.LTP){const{latitude:t,longitude:r,ellipsoidRadius:o,squaredEccentricity:a,properties:i}=e,{x:n,y:s,z:p}=i;return new m(w([n,s,p],[t,r,o,a]))}const p=new m({x:r,y:o,z:a,spatialReference:s}),c=n?u("point",{wkid:n},s):null;return c&&c(p),p}if("number"!=typeof t)throw O("cameraHeight");const o=this.geometry.clone();return o.z=o.hasZ?o.z:(r??0)+t,o}set matrix(e){if(!e||9!==e.length)return a.getLogger(this).warn("Ignoring rotation matrix because it doesn't have 9 values",{value:e}),void this._set("matrix",null);this._set("matrix",e)}readNearDistance(e,t){const{neardistance:r,neardist:o,layer:a}=t;return r??o??a.nearDistance}readOffsetFromStart(e,t){return t.offsetfromstart??null}readOrientationAccuracy(e,t){const{accuracy:r,orientationaccuracy:o}=t;return o?.split(";").map(Number)??r?.split(";").map(Number)??null}writeOrientationAccuracy(e,t){e&&(t.orientationAccuracy=e.join(";"))}readOIType(e,t){const{orientedimagerytype:r,oitype:o,camerapitch:a,campitch:i,layer:n}=t,s=h.read(r??o??n.orientedImageryType),p=a??i??n.cameraPitch;return"oblique"===s?p<10?"nadir":"oblique":s}set radial(e){if(e)if("string"!=typeof e)this._set("radial",e);else{const[t,r,o]=e.split(";").map(Number);this._set("radial",[t??0,r??0,o??0])}else this._set("radial",[0,0,0])}readSequenceOrder(e,t){const{layer:r}=t;return t[r.sequenceOrderField.toLowerCase()]}writeSequenceOrder(e,t){if(!e)return;const{sourceMap:r}=this;if(r){t[r.sequenceorder]=e}}set tangential(e){if(e)if("string"!=typeof e)this._set("tangential",e);else{const[t,r]=e.split(";").map(Number);this._set("tangential",[t??0,r??0])}else this._set("tangential",[0,0])}readVFOV(e,t){const{verticalfieldofview:r,vfov:o,layer:a}=t;return r??o??a.verticalFieldOfView}_parseIfJSON(e){let t=null;try{t=JSON.parse(e)}catch(r){a.getLogger(this).error("couldn't parse the given elevation source JSON",e,r)}return t}};e([i()],I.prototype,"_geometry",void 0),e([i(b())],I.prototype,"a0",void 0),e([i(b())],I.prototype,"a1",void 0),e([i(b())],I.prototype,"a2",void 0),e([i({type:Date,json:{write:{enabled:!0,target:"acquisitionDate"},name:"acquisitiondate"}})],I.prototype,"acquisitionDate",void 0),e([i(b())],I.prototype,"b0",void 0),e([i(b())],I.prototype,"b1",void 0),e([i(b())],I.prototype,"b2",void 0),e([i({type:Number,json:{write:!0,read:{source:["cameraheading","camheading","layer.cameraHeading"]}}})],I.prototype,"cameraHeading",void 0),e([p("cameraHeading")],I.prototype,"readCameraHeading",null),e([i({type:Number,json:{write:!0}})],I.prototype,"cameraHeight",void 0),e([p("cameraHeight",["cameraheight","avghtag","layer.cameraHeight"])],I.prototype,"readCameraHeight",null),e([i()],I.prototype,"cameraOffset",void 0),e([p("cameraOffset",["cameraoffset","camoffset"])],I.prototype,"readCamOffset",null),e([l("cameraOffset")],I.prototype,"writeCameraOffset",null),e([i({json:{write:{writer:(e,t,r)=>{t[r]=e.toString()}}},type:d}),n((e=>e?y.getCameraOrientation(e):null))],I.prototype,"cameraOrientation",void 0),e([p("cameraOrientation",["cameraorientation","camori"])],I.prototype,"readCameraOrientation",null),e([i({type:Number,json:{write:!0}})],I.prototype,"cameraPitch",void 0),e([p("cameraPitch",["camerapitch","campitch","layer.cameraPitch"])],I.prototype,"readCameraPitch",null),e([i({type:Number,json:{write:!0}})],I.prototype,"cameraRoll",void 0),e([p("cameraRoll",["cameraroll","camroll","layer.cameraRoll"])],I.prototype,"readCameraRoll",null),e([i({json:{write:!0},type:String})],I.prototype,"depthImage",void 0),e([p("depthImage",["depthimage","depthimg"])],I.prototype,"readDepthImage",null),e([i({type:Number,json:{write:!0}})],I.prototype,"elevation",void 0),e([i({json:{write:!0},clonable:"reference"})],I.prototype,"elevationSource",void 0),e([p("elevationSource",["elevationsource","layer.effectiveElevationSource"])],I.prototype,"readElevationSource",null),e([i({json:{name:"exposurestationid",write:{target:"exposureStationId"}},type:String})],I.prototype,"exposureStationId",void 0),e([i({type:Number,json:{write:!0}})],I.prototype,"farDistance",void 0),e([p("farDistance",["fardistance","fardist","layer.farDistance"])],I.prototype,"readFarDistance",null),e([i(b("focallength"))],I.prototype,"focalLength",void 0),e([i({type:m,json:{name:"geometry"}})],I.prototype,"geometry",null),e([i({type:Number,json:{write:!0}})],I.prototype,"horizontalFieldOfView",void 0),e([p("horizontalFieldOfView",["horizontalfieldofview","hfov","layer.horizontalFieldOfView"])],I.prototype,"readHFOV",null),e([i({json:{write:!0},type:String})],I.prototype,"imagePath",void 0),e([p("imagePath",["imagepath"])],I.prototype,"readImageURL",null),e([i({type:Number,json:{write:!0}})],I.prototype,"imageRotation",void 0),e([p("imageRotation",["imagerotation","imgrot","layer.imageRotation"])],I.prototype,"readImageRotation",null),e([i()],I.prototype,"isHorizontal",null),e([i()],I.prototype,"isInspection",null),e([i()],I.prototype,"isNadir",null),e([i()],I.prototype,"isOblique",null),e([i()],I.prototype,"isSpherical",null),e([i()],I.prototype,"location",null),e([i(S())],I.prototype,"matrix",null),e([i({json:{write:!0},type:String})],I.prototype,"name",void 0),e([i({type:Number,json:{write:!0}})],I.prototype,"nearDistance",void 0),e([p("nearDistance",["neardistance","neardist","layer.nearDistance"])],I.prototype,"readNearDistance",null),e([i({json:{write:!0,name:"objectid"},type:Number})],I.prototype,"objectId",void 0),e([i({type:Number,json:{write:!0}})],I.prototype,"offsetFromStart",void 0),e([p("offsetFromStart",["offsetfromstart"])],I.prototype,"readOffsetFromStart",null),e([i()],I.prototype,"orientationAccuracy",void 0),e([p("orientationAccuracy",["accuracy","orientationaccuracy"])],I.prototype,"readOrientationAccuracy",null),e([l("orientationAccuracy")],I.prototype,"writeOrientationAccuracy",null),e([s(h)],I.prototype,"orientedImageryType",void 0),e([p("orientedImageryType",["orientedimagerytype","oitype","layer.orientedImageryType"])],I.prototype,"readOIType",null),e([i({type:Number,json:{write:!0,read:{source:"principalx"}}})],I.prototype,"principalX",void 0),e([i({type:Number,json:{write:!0,read:{source:"principaly"}}})],I.prototype,"principalY",void 0),e([i(S([0,0,0]))],I.prototype,"radial",null),e([i({type:String})],I.prototype,"sequenceOrder",void 0),e([p("sequenceOrder",["sequenceorder","layer.sequenceOrderField"])],I.prototype,"readSequenceOrder",null),e([l("sequenceOrder")],I.prototype,"writeSequenceOrder",null),e([i({type:Object})],I.prototype,"sourceMap",void 0),e([i(S([0,0]))],I.prototype,"tangential",null),e([i({type:Number,json:{write:!0}})],I.prototype,"verticalFieldOfView",void 0),e([p("verticalFieldOfView",["verticalfieldofview","vfov","layer.verticalFieldOfView"])],I.prototype,"readVFOV",null),I=e([c("esri.layers.orientedImagery.core.ExposurePoint")],I);export{I as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "4.33.0-next.20250611",
3
+ "version": "4.33.0-next.20250612",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../core/Error.js";import r from"../../core/Logger.js";import{Version as i}from"../../core/Version.js";import t from"../../layers/support/FieldsIndex.js";import{createDictionaryExpression as o,ArcadeFeatureReader as n}from"../../support/ArcadeExpression.js";class s{static async from(t,n,c){const l=t.dictionary_version?i.parse(t.dictionary_version):null,d=new Set(t.itemsNames),u={};if(n)for(const e in n)u[e]=n[e];if(t.authoringInfo.configuration)for(const e of t.authoringInfo.configuration)u.hasOwnProperty(e.name)||(u[e.name]=e.value);const p=new Set(t.authoringInfo.symbol);for(const e of Object.keys(c))p.delete(e);p.size&&r.getLogger("esri.renderers.support.DictionaryScriptEvaluator").warnOnce("missing-fields: fieldMap entries for the following symbol fields are missing",{symbolFields:p});const f=await o(t.expression,null,u);if(!f)throw new e("dictionary-renderer:expression-error","Unable to create dictionary renderer expression");const g=!l||!l.greaterEqual(4,0);g&&r.getLogger("esri.renderers.support.DictionaryScriptEvaluator").warnOnce("Dictionary script does not support native field types. Applying fallback",{version:l});const m=new a(c,g);return new s(g,d,f,m)}constructor(e,r,i,t){this._requiresFieldCoercionToString=e,this._itemNames=r,this._compiled=i,this._reader=t}get itemNames(){return this._itemNames}evaluate(e,i,t,o){try{return this._reader.bind(e,t,o),this._compiled.evaluate(this._reader,{$view:{scale:i}})}catch(n){r.getLogger("esri.renderers.support.DictionaryScriptEvaluator").warnOnce("arcade: dictionary script evaluation failed",{error:n})}return null}createDictionaryFieldsIndex(e){if(!this._requiresFieldCoercionToString)return new t(e);const r=e.map((e=>({...e,type:"esriFieldTypeString"})));return new t(r)}}class a extends n{constructor(e,r){super(),this._fieldMap=e,this._requiresFieldCoercionToString=r}_getField(e){const r=this._fieldMap[e]??e;return this._boundSchema.fieldsIndex.get(r)}field(e){if(!this._requiresFieldCoercionToString)return super.field(e,!1);const r=this._getField(e);return null==r?"":""+this._boundTarget.attributes[r.name]}}export{s as DictionaryScriptEvaluator};
5
+ import e from"../../core/Error.js";import r from"../../core/Logger.js";import{Version as i}from"../../core/Version.js";import t from"../../layers/support/FieldsIndex.js";import{createDictionaryExpression as o,ArcadeFeatureReader as n}from"../../support/ArcadeExpression.js";class s{static async from(t,n,c){const l=t.dictionary_version?i.parse(t.dictionary_version):null,d=new Set(t.itemsNames),u={};if(n)for(const e in n)u[e]=n[e];if(t.authoringInfo.configuration)for(const e of t.authoringInfo.configuration)u.hasOwnProperty(e.name)||(u[e.name]=e.value);const p=new Set(t.authoringInfo.symbol);for(const e of Object.keys(c))p.delete(e);p.size&&r.getLogger("esri.renderers.support.DictionaryScriptEvaluator").warnOnce("missing-fields: fieldMap entries for the following symbol fields are missing",{symbolFields:p});const f=await o(t.expression,null,u);if(!f)throw new e("dictionary-renderer:expression-error","Unable to create dictionary renderer expression");const g=!l||!l.greaterEqual(4,0);g&&r.getLogger("esri.renderers.support.DictionaryScriptEvaluator").warnOnce("Dictionary script does not support native field types. Applying fallback",{version:l});const m=new a(c,g);return new s(g,d,f,m)}constructor(e,r,i,t){this._requiresFieldCoercionToString=e,this._itemNames=r,this._compiled=i,this._reader=t}get itemNames(){return this._itemNames}evaluate(e,i,t,o){try{return this._reader.bind(e,t,o),this._compiled.evaluate(this._reader,{$view:{scale:i}})}catch(n){r.getLogger("esri.renderers.support.DictionaryScriptEvaluator").warnOnce("arcade: dictionary script evaluation failed",{error:n})}return null}createDictionaryFieldsIndex(e){if(!this._requiresFieldCoercionToString)return new t(e);const r=e.map((e=>({...e,type:"esriFieldTypeString"})));return new t(r)}}class a extends n{constructor(e,r){super(),this._fieldMap=e,this._requiresFieldCoercionToString=r}_getField(e){const r=this._fieldMap[e]??e;return this._boundSchema.fieldsIndex.get(r)}field(e){if(!this._requiresFieldCoercionToString)return super.field(e,!1);const r=this._getField(e);if(null==r)return"";return null==this._boundTarget.attributes[r.name]?"":""+this._boundTarget.attributes[r.name]}}export{s as DictionaryScriptEvaluator};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{_ as r}from"../../../../chunks/tslib.es6.js";import o from"../../../../core/JSONSupport.js";import{property as t}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import s from"../../../../geometry/Geometry.js";let p=class extends o{constructor(r){super(r),this.error=null,this.geometry=null,this.message=null,this.name=null}};r([t({type:Number})],p.prototype,"error",void 0),r([t({type:s})],p.prototype,"geometry",void 0),r([t({type:String})],p.prototype,"message",void 0),r([t({type:String})],p.prototype,"name",void 0),p=r([e("esri.rest.networks.circuits.support.CircuitVerifyResult")],p);const i=p;export{i as default};
5
+ import{_ as r}from"../../../../chunks/tslib.es6.js";import o from"../../../../core/JSONSupport.js";import{property as t}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import s from"../../../../geometry/Geometry.js";let p=class extends o{constructor(r){super(r),this.error=null,this.geometry=null,this.name=null}};r([t({type:Object})],p.prototype,"error",void 0),r([t({type:s})],p.prototype,"geometry",void 0),r([t({type:String})],p.prototype,"name",void 0),p=r([e("esri.rest.networks.circuits.support.CircuitVerifyResult")],p);const c=p;export{c as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/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{TransformationType as f}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import w from"../heuristics/sizeRange.js";import{createPrimitiveOverrides as b,updateReferenceSizeSymbol as h,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 W,updateAgeRendererAuthoringInfoVV as C,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 z({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 z({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(", "));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=o?.symbolStyle||t?.spikeSymbolStyle||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 be(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,b=I(a),h=await me({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:b,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:h,renderer:a}}async function he(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),b=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:b,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,b=B(a),h=await ye({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:b,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:h,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){e.transformationType===f.ClampedLinear&&"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}),b=w.scheme;if(!b)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const h=await Ee(n,s,e.spikeOptions,u,b,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Oe(r,e),V=[],T="height"===v,E=T?v:void 0,k=h[0];let O=h[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(b),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,h=l.theme,S="reference-size"===h,x="spike"===h,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:b({view:l.view,field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],h),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],h)}),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:-9007199254740991,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,b=m?c.marker:c,h=m?c.background:null,g=m?"point":o,S=Ve(b,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:h&&L(o,{type:e.symbolType,color:h.color,outline:J(h,o,T)}),classBreakInfos:v.map(((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:L(g,{type:e.symbolType,color:b.color,size:V[r],widthAndDepth:x?.minSize,outline:J(b,g,T)}),label:i.label}))),defaultLabel:t?r.other:null,defaultSymbol:t?L(g,{type:e.symbolType,color:b.noDataColor,size:K(b,g,!0),widthAndDepth:x?.minSize,outline:J(b,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?w({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 be(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,z=o?"field":void 0,[b,h]=await Promise.all([U({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:z,filter:r,view:i,signal:n}),c?w({view:i,layer:d,signal:n,filter:r}).catch(P):null]),g=ke(h,y,f,p),{minDataValue:V,maxDataValue:T}=Oe(b,{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=b.min,O.maxSliderValue=b.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:b}}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?v(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 he(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([De({...e,referenceSizeResult:m}),o?v({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 y=p.statistics;if(!c&&!f)return{renderer:i,statistics:y};if(f){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:x(i,"size","spike")?.sizeStops}),statistics:y}}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:y}}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=b({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?h(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?h(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=m?.symbolStyle;if("class-breaks"===p.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&s&&"marker"in s?s.marker:null;p.classBreakInfos.forEach((i=>{const r=e?.color??te(i.symbol,1)??void 0;"cim"===i.symbol.type?R(i.symbol,{color:r,primitiveOverrides:y,...m,symbolStyle:v}):r&&(i.symbol=D({color:r,primitiveOverrides:y,...m,symbolStyle:v}))}))}else if("unique-value"===p.type){const i=p.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&u&&"colors"in u?u.colors:null,n=r?e(r,p.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)??void 0;"cim"===i.symbol?.type?R(i.symbol,{color:e,primitiveOverrides:y,...m,symbolStyle:v}):e&&(i.symbol=D({color:e,primitiveOverrides:y,...m,symbolStyle:v})),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}))),d.spikeSymbolStyle=v),p}async function We(e){const i=await ye(e);return qe(i,await M(ve(i),i.outlineOptimizationEnabled))}async function Ce(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 y({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?v({layer:p,view:a,filter:m,signal:u}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:b}=await W(i,f),h=await Re(ze({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:b},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(h,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach((e=>C(e,n,s,f))),{...S,unit:f}}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([y({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?v({layer:a,view:u,filter:p,signal:m}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:b}=await W(r,f),h=await Re(ze({layer:a,valueExpression:w,statistics:z,legendOptions:{title:b},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));V(i,h.visualVariables,F),V(i,c?.visualVariables,j),i.authoringInfo=h.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach((e=>C(e,l,t,f))),{renderer:i}}export{$e as createAgeRenderer,We as createClassBreaksRenderer,Ge as createContinuousRenderer,Re as createVisualVariables,Ie as getSizeStopsForTheme,Ae as regenerateAgeRenderer,Ce 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{TransformationType as f}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import w from"../heuristics/sizeRange.js";import{createPrimitiveOverrides as b,updateReferenceSizeSymbol as h,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 W,updateAgeRendererAuthoringInfoVV as C,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 z({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 z({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(", "));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=o?.symbolStyle||t?.spikeSymbolStyle||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 be(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,b=I(a),h=await me({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:b,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:h,renderer:a}}async function he(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),b=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:b,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,b=B(a),h=await ye({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:b,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:h,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){e.transformationType===f.ClampedLinear&&"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}),b=w.scheme;if(!b)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const h=await Ee(n,s,e.spikeOptions,u,b,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Oe(r,e),V=[],T="height"===v,E=T?v:void 0,k=h[0];let O=h[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(b),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,h=l.theme,S="reference-size"===h,x="spike"===h,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:b({view:l.view,field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],h),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],h)}),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:-9007199254740991,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,b=m?c.marker:c,h=m?c.background:null,g=m?"point":o,S=Ve(b,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:h&&L(o,{type:e.symbolType,color:h.color,outline:J(h,o,T)}),classBreakInfos:v.map(((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:L(g,{type:e.symbolType,color:b.color,size:V[r],widthAndDepth:x?.minSize,outline:J(b,g,T)}),label:i.label}))),defaultLabel:t?r.other:null,defaultSymbol:t?L(g,{type:e.symbolType,color:b.noDataColor,size:K(b,g,!0),widthAndDepth:x?.minSize,outline:J(b,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?w({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 be(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,z=o?"field":void 0,[b,h]=await Promise.all([U({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:z,filter:r,view:i,signal:n}),c?w({view:i,layer:d,signal:n,filter:r}).catch(P):null]),g=ke(h,y,f,p),{minDataValue:V,maxDataValue:T}=Oe(b,{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=b.min,O.maxSliderValue=b.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:b}}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?v(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 he(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([De({...e,referenceSizeResult:m}),o?v({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 y=p.statistics;if(!c&&!f)return{renderer:i,statistics:y};if(f){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:x(i,"size","spike")?.sizeStops}),statistics:y}}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:y}}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=b({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?h(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?h(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=m?.symbolStyle;if("class-breaks"===p.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&s&&"marker"in s?s.marker:null;p.classBreakInfos.forEach((i=>{if("cim"===i.symbol.type){const r=e?.color;R(i.symbol,{color:r,primitiveOverrides:y,...m,symbolStyle:v})}else{const r=e?.color??te(i.symbol,1)??void 0;r&&(i.symbol=D({color:r,primitiveOverrides:y,...m,symbolStyle:v}))}}))}else if("unique-value"===p.type){const i=p.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&u&&"colors"in u?u.colors:null,n=r?e(r,p.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)??void 0;"cim"===i.symbol?.type?R(i.symbol,{color:e,primitiveOverrides:y,...m,symbolStyle:v}):e&&(i.symbol=D({color:e,primitiveOverrides:y,...m,symbolStyle:v})),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}))),d.spikeSymbolStyle=v),p}async function We(e){const i=await ye(e);return qe(i,await M(ve(i),i.outlineOptimizationEnabled))}async function Ce(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 y({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?v({layer:p,view:a,filter:m,signal:u}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:b}=await W(i,f),h=await Re(ze({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:b},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(h,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach((e=>C(e,n,s,f))),{...S,unit:f}}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([y({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?v({layer:a,view:u,filter:p,signal:m}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:b}=await W(r,f),h=await Re(ze({layer:a,valueExpression:w,statistics:z,legendOptions:{title:b},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));V(i,h.visualVariables,F),V(i,c?.visualVariables,j),i.authoringInfo=h.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach((e=>C(e,l,t,f))),{renderer:i}}export{$e as createAgeRenderer,We as createClassBreaksRenderer,Ge as createContinuousRenderer,Re as createVisualVariables,Ie as getSizeStopsForTheme,Ae as regenerateAgeRenderer,Ce 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.33/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Graphic.js";import{pickRandom as r}from"../../../core/arrayUtils.js";import i from"../../../core/Error.js";import{throwIfAborted as s}from"../../../core/promiseUtils.js";import{property as a}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import{isHostedAgolService as n}from"../../../layers/support/arcgisLayerUrl.js";import{isTimeOnlyField as l,isNumericField as u}from"../../../layers/support/fieldUtils.js";import{generateRenderer as m}from"../../../rest/generateRenderer.js";import c from"../../../rest/support/GenerateRendererParameters.js";import h from"../../../rest/support/StatisticDefinition.js";import p from"../../../rest/support/UniqueValueDefinition.js";import{getArcadeForPredominantCategory as d,getSQLForPredominantCategoryName as f}from"../../statistics/support/predominanceUtils.js";import{mergeWhereClauses as y,getRangeExpr as F,getSQLFilterForNormalization as S}from"../../statistics/support/utils.js";import{WorkerClient as g}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as w,fieldDelimiter as v}from"../utils.js";import x from"./InMemoryLayerAdapter.js";import{getQueryParamsForExpr as _,getDataRange as E,getAttributeBinsQuery as q,processQueryAttributeBinsResult as z,binParamsFromGenRend as V}from"./support/histogramUtils.js";import{ensureFeaturesJSON as L,getSummaryStatsQuery as T,getSummaryStatisticsFromFeatureSet as Q,getUVQuery as j,getUniqueValuesFromFeatureSet as b,defaultNumBins as N,updateQueryWithFeatureFilter as C,getHistogramFromFeatureSet as B,getFieldExpr as M,getDomainsForFields as R,getBins as I,getPredominantCategoriesFromUVInfos as $,getMissingFields as O}from"./support/utils.js";import{processSummaryStatisticsResult as k,createUVResult as A,getEqualIntervalBins as D,createClassBreaksDefinition as G,resolveCBResult as U}from"../../../statistics/utils.js";import{getScaleToResolutionFactor as J}from"../../../views/2d/viewpointUtils.js";const P=5,W=2e4,H=4e5;let Z=class extends x{constructor(){super(...arguments),this.adapterName="feature-layer-adapter"}_isStatsSupportedOnService(){const e=this.layer;if(!e.capabilities?.query?.supportsStatistics||"multipatch"===this.geometryType&&!n(e.url)&&e.version<10.5)throw new i(`${this.adapterName}:not-supported`,"Layer does not support statistics query");return Promise.resolve()}_fetchFeaturesFromService(e,t){return this.layer.queryFeatures(e,{signal:t}).then((e=>e.features))}_fetchFeaturesJSONFromService(e,t){return this._fetchFeaturesFromService(e,t).then(L)}_summaryStatsFromGenRend(e){const t=e.normalizationType,r=e.normalizationField;return this.classBreaks({field:e.field,numClasses:P,classificationMethod:"standard-deviation",standardDeviationInterval:.25,normalizationType:t,normalizationField:"field"===t?r:void 0,minValue:e.minValue,maxValue:e.maxValue,filter:e.filter,signal:e.signal}).then((t=>{let r,i,s;if(t.classBreakInfos?.some((e=>(e.hasAvg&&(r=e),!!r))),r){const e=r.maxValue-r.minValue;i=r.minValue+e/2,s=4*e}const a={min:t.minValue,max:t.maxValue,avg:i,stddev:s};return k(a,e.outStatisticTypes)}))}async _summaryStatsFromServiceQuery(e,t){await this._isStatsSupportedOnService(),"percent-of-total"===e.normalizationType&&(e.normalizationTotal=await this._getNormalizationTotal(e.field,e.normalizationType,e.filter));const r=w(t)||l(t),i=T(this,e,t),s=await this.layer.queryFeatures(i,{signal:e.signal}),a=Q(s,r);return k(a,e.outStatisticTypes)}_uvFromGenRenderer(e,t){const r=e.field??void 0,i=new p({attributeField:r}),s=new c({classificationDefinition:i});return this.generateRenderer(s,e.signal).then((e=>{const t={},i=this.getField(r);return e.uniqueValues.forEach((e=>{let r=e.value;null!=r&&""!==r&&("string"!=typeof r||""!==r.trim()&&"<null>"!==r.toLowerCase())||(r=null),null==t[r]?t[r]={count:e.count,data:u(i)&&r?Number(r):r}:t[r].count=t[r].count+e.count})),{count:t}})).then((r=>A(r,[t],e.returnAllCodedValues)))}async _uvFromServiceQuery(e,t){return this._isStatsSupportedOnService().then((()=>this.layer.queryFeatures(j(this,e),{signal:e.signal}))).then((t=>b(t,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:v,view:e.view,signal:e.signal}))).then((r=>A(r,t,e.returnAllCodedValues,v)))}_getNormalizationTotal(e,t,r,i){return e&&"percent-of-total"===t?this.summaryStatistics({field:e,outStatisticTypes:{include:["sum"]},filter:r,signal:i}).then((e=>e.sum)):Promise.resolve(null)}_histogramForExpr(e){return this._getNormalizationTotal(e.field,e.normalizationType,e.filter,e.signal).then((t=>{const r=_(e,this,t);return E(r,this,e.minValue,e.maxValue).then((i=>{const s=i.min,a=i.max;if(null==s||null==a)return{bins:[],minValue:s,maxValue:a,normalizationTotal:t};const o=e.numBins||N,n=D(s,a,o),l=K(r.sqlExpression,n,null!=e.minValue&&null!=e.maxValue),u=new h({statisticType:"count",outStatisticFieldName:"countOFExpr",onStatisticField:"1"}),m=this.layer.createQuery();return m.where=y(m.where,r.sqlWhere),m.sqlFormat="standard",m.outStatistics=[u],m.groupByFieldsForStatistics=[l],m.orderByFields=[l],C(m,e.filter),this._isStatsSupportedOnService().then((()=>this.layer.queryFeatures(m,{signal:r.signal}))).then((e=>B(e,s,a,o,t)))}))}))}async _histogramFromQueryAttributeBins(e){const{field:t,normalizationType:r,filter:i,signal:s}=e,a=await this._getNormalizationTotal(t,r,i,s),o=this.layer.createQuery(),{query:n,min:l,max:u}=await q(e,this,a,o?.where);if(!n)return{bins:[],minValue:l,maxValue:u,normalizationTotal:a};const m=await this.layer.queryAttributeBins(n,{signal:s});return z(m,t?this.getField(t):null,{minValue:l,maxValue:u,normalizationTotal:a})}_classBreaksFromGenRend(e){const{field:t,normalizationType:r,normalizationField:i,normalizationTotal:s,signal:a}=e,o=S({field:t,normalizationType:r,normalizationField:i}),n=M({field:t,normalizationType:r,normalizationField:i,normalizationTotal:s,layer:this}),l=F(n,e.minValue,e.maxValue),u=G({field:t,normalizationType:r,normalizationField:i,classificationMethod:e.classificationMethod,standardDeviationInterval:e.standardDeviationInterval,breakCount:e.numClasses||P}),m=new c({classificationDefinition:u});return m.where=y(o,l),this.generateRenderer(m,a).then((t=>U(t,e.classificationMethod)))}async summaryStatistics(e){const{field:t,normalizationType:r,valueExpression:a,sqlExpression:o,view:n,features:u,useFeaturesInView:m}=e,c=t?this.getField(t):null,h=w(c)||l(c),p=a&&!(o&&this.supportsSQLExpression),d=this._hasLocalSource||u||m,f=n&&"3d"===n.type;if(d||p)return p||u||m||f?this._summaryStatsFromMemory(e,c):this._summaryStatsFromClientQuery(e,c);if(!this.supportsSQLExpression&&(h||o||"natural-log"===r||"square-root"===r))throw new i(`${this.adapterName}:not-supported`,"Layer does not support standardized SQL expression for queries");return(r&&!this.supportsSQLExpression?this._summaryStatsFromGenRend(e):this._summaryStatsFromServiceQuery(e,c)).catch((()=>(s(e.signal),this._summaryStatsFromMemory(e,c))))}async uniqueValues(e){const{valueExpression:t,sqlExpression:r,features:i,useFeaturesInView:a,signal:o}=e,n=t&&!(r&&this.supportsSQLExpression),l=this._hasLocalSource||i||a||n,u=e.view,m=u&&"3d"===u.type,c=await R(e,this);return l?n||i||a||m?this._uvFromMemory(e,c):this._uvFromClientQuery(e,c):this._uvFromServiceQuery(e,c).catch((t=>(s(o),!e.field||e.field2||e.field3||e.filter?t:this._uvFromGenRenderer(e,c[0])))).catch((()=>(s(o),m?this._uvFromMemory(e,c):this._uvFromClientQuery(e,c))))}async histogram(e){const{field:t,normalizationType:r,normalizationField:a,classificationMethod:o,view:n,filter:u,signal:m}=e,c=t?this.getField(t):null,h=w(c)||l(c),p=e.valueExpression||e.sqlExpression,d=e.valueExpression&&!(e.sqlExpression&&this.supportsSQLExpression),f=this._hasLocalSource||e.features||e.useFeaturesInView||d,y=this.supportsSQLExpression,S=!o||"equal-interval"===o,g=e.minValue,v=e.maxValue,x=null!=g&&null!=v,_=e.numBins||N;if(f)return this._histogramFromMemory(e);if(this.layer.capabilities?.operations?.supportsQueryBins&&e.useQueryAttributeBins)try{return await this._histogramFromQueryAttributeBins(e)}catch{return s(m),this._histogramFromQueryAttributeBinsFromMemory(e)}if((p||y)&&S){if(!y&&(p||"natural-log"===r||"square-root"===r))throw new i(`${this.adapterName}:not-supported`,"Layer does not support standardized SQL expression for queries");return this._histogramForExpr(e)}if(h&&S)throw new i(`${this.adapterName}:not-supported`,"Normalization and date field are not allowed when layer does not support standardized SQL expression for queries");return r||!S?V(e,this).then((s=>{if(!x)return I(this,s,t,_,n,u,m);if(g>s.max||v<s.min)throw new i(`${this.adapterName}:insufficient-data`,"Range defined by 'minValue' and 'maxValue' does not intersect available data range of the field");if(S)return I(this,{min:g,max:v,sqlExpr:s.sqlExpr,excludeZerosExpr:s.excludeZerosExpr},t,_,n,u,m);{const i={field:t,normalizationType:r,normalizationField:a,normalizationTotal:s.normTotal,layer:this},o=M(i),l=F(o,g,v);return V(e,this,l).then((e=>I(this,e,t,_,n,u,m)))}})):this._histogramForField(e)}async classBreaks(e){const t=!1!==e.analyzeData,r=this._hasLocalSource||e.features||e.useFeaturesInView||e.valueExpression||e.filter;if(t&&r)return this._classBreaksFromMemory(e);return(t?this._classBreaksFromGenRend(e):this._classBreaksFromInterpolation(e)).catch((()=>(s(e.signal),this._classBreaksFromMemory(e))))}async queryFeatureCount(e){if(this._hasLocalSource)throw new i(`${this.adapterName}:not-supported`,"Layer does not support count query");const t=this.layer,r=t.createQuery();return r.where=y(r.where,e.whereClause),C(r,e.filter),t.queryFeatureCount(r,{signal:e.signal})}async generateRenderer(e,t){const r=this.layer;if(this._hasLocalSource||r.version<10.1)throw new i(`${this.adapterName}:not-supported`,"Layer does not support generateRenderer operation (requires ArcGIS Server version 10.1+)");const s=r.createQuery();return e.where=y(e.where,s.where),m(r.parsedUrl?.path??"",{source:r.dynamicDataSource??void 0,gdbVersion:r.gdbVersion??void 0},e,{signal:t})}async predominantCategories(e){if(!this._hasLocalSource&&!this.supportsSQLExpression)throw new i(`${this.adapterName}:not-supported`,"Layer does not support advanced SQL expressions and standardized queries");const{fields:t,view:r,signal:s,filter:a}=e,o=d(t),n=f(t),l=r&&this._hasLocalSource?await this._uvFromMemory({valueExpression:o,view:r,signal:s,filter:a}):await this._uvFromServiceQuery({sqlExpression:n.expression,valueExpression:o,signal:s,filter:a});return $(l.uniqueValueInfos,t)}async getSampleFeatures(e,i){const{view:a,requiredFields:o,returnGeometry:n,filter:l,signal:u}=e,m=e.sampleSize;if(null==m||0===m)return[];const c=this.layer.createQuery(),h=1,p="json"===i;c.outSpatialReference=a?.spatialReference,c.returnGeometry=!!n,c.outFields=o,C(c,l);let d=[],f=!1;if(a)try{const s=await a.whenLayerView(this.layer);if(f=!O(this,o,s).length,f){if(m>=1&&!e.filter&&"getSampleFeatures"in s){await this._waitForLayerViewUpdate(s);const e=await s.getSampleFeatures({minFeatureCount:m,sampleSize:m});if(null!=e)return p?e:e.map((e=>t.fromJSON(e)))}if(d=await this._fetchFeaturesFromMemory(s,c,u,i),d.length>=m&&m>0)return r(d,m,h)}}catch(y){s(u)}try{if(this._hasLocalSource)return f?d:p?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u);const t=await this.queryFeatureCount({view:a,filter:l,signal:u}),i=this.layer.capabilities.query.maxRecordCount;let s=-1===m?t:m;if(s=i&&s>i?i:s,t<=d.length||d.length>=i)return d;if(c.maxAllowableOffset=e.resolution||(a?a.extent.width/a.width/a.scale:J(this.layer.spatialReference))*H,t<=s)return p?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u);if(t<=W){const e=this.layer.createQuery();C(e,l);const t=await this.layer.queryObjectIds();return c.objectIds=r(t,s,h),p?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u)}return this.layer.capabilities?.query?.supportsPagination&&(c.num=Math.min(s,W)),p?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u)}catch(y){return s(u),d}}load(e){const t=this.layer.load(e).then((async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.capabilities?.query?.supportsSqlExpression,this._hasLocalSource=!t.url&&!!t.source,this.hasQueryEngine=this._hasLocalSource,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=g.getInstance(),await this.workerClient.open(e.signal)}));return this.addResolvingPromise(t),Promise.resolve(this)}};function K(e,t,r){const i=[],s=t.length;return t.forEach(((t,a)=>{const[o,n]=t;let l=null;l=0!==a||r?a!==s-1||r?y(`${e} >= ${o}`,`${e} ${a===s-1?" <= ":" < "} ${n}`):`${e} >= ${o}`:`${e} < ${n}`,i.push("WHEN ("+l+") THEN "+(a+1))})),["CASE",i.join(" "),"ELSE 0","END"].join(" ")}e([a({readOnly:!0})],Z.prototype,"adapterName",void 0),e([a({constructOnly:!0})],Z.prototype,"layer",void 0),Z=e([o("esri.smartMapping.support.adapters.FeatureLayerAdapter")],Z);export{Z as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Graphic.js";import{pickRandom as r}from"../../../core/arrayUtils.js";import i from"../../../core/Error.js";import{throwIfAborted as s}from"../../../core/promiseUtils.js";import{property as a}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import{isHostedAgolService as n}from"../../../layers/support/arcgisLayerUrl.js";import{isTimeOnlyField as l,isNumericField as u}from"../../../layers/support/fieldUtils.js";import{generateRenderer as m}from"../../../rest/generateRenderer.js";import c from"../../../rest/support/GenerateRendererParameters.js";import p from"../../../rest/support/StatisticDefinition.js";import h from"../../../rest/support/UniqueValueDefinition.js";import{getArcadeForPredominantCategory as d,getSQLForPredominantCategoryName as y}from"../../statistics/support/predominanceUtils.js";import{mergeWhereClauses as f,getRangeExpr as F,getSQLFilterForNormalization as S}from"../../statistics/support/utils.js";import{WorkerClient as g}from"../../statistics/support/WorkerClient.js";import{isAnyDateField as w,fieldDelimiter as v}from"../utils.js";import x from"./InMemoryLayerAdapter.js";import{getQueryParamsForExpr as _,getDataRange as q,getAttributeBinsQuery as E,processQueryAttributeBinsResult as z,binParamsFromGenRend as V}from"./support/histogramUtils.js";import{ensureFeaturesJSON as L,getSummaryStatsQuery as T,getSummaryStatisticsFromFeatureSet as Q,getUVQuery as j,getUniqueValuesFromFeatureSet as b,defaultNumBins as N,updateQueryWithFeatureFilter as C,getHistogramFromFeatureSet as B,getFieldExpr as M,getDomainsForFields as R,getBins as I,getPredominantCategoriesFromUVInfos as $,getMissingFields as O}from"./support/utils.js";import{processSummaryStatisticsResult as k,createUVResult as A,getEqualIntervalBins as D,createClassBreaksDefinition as G,resolveCBResult as U}from"../../../statistics/utils.js";import{getScaleToResolutionFactor as P}from"../../../views/2d/viewpointUtils.js";const J=5,W=2e4,H=4e5;let Z=class extends x{constructor(){super(...arguments),this.adapterName="feature-layer-adapter"}_isStatsSupportedOnService(){const e=this.layer;if(!e.capabilities?.query?.supportsStatistics||"multipatch"===this.geometryType&&!n(e.url)&&e.version<10.5)throw new i(`${this.adapterName}:not-supported`,"Layer does not support statistics query");return Promise.resolve()}_fetchFeaturesFromService(e,t){return this.layer.queryFeatures(e,{signal:t}).then((e=>e.features))}_fetchFeaturesJSONFromService(e,t){return this._fetchFeaturesFromService(e,t).then(L)}_summaryStatsFromGenRend(e){const t=e.normalizationType,r=e.normalizationField;return this.classBreaks({field:e.field,numClasses:J,classificationMethod:"standard-deviation",standardDeviationInterval:.25,normalizationType:t,normalizationField:"field"===t?r:void 0,minValue:e.minValue,maxValue:e.maxValue,filter:e.filter,signal:e.signal}).then((t=>{let r,i,s;if(t.classBreakInfos?.some((e=>(e.hasAvg&&(r=e),!!r))),r){const e=r.maxValue-r.minValue;i=r.minValue+e/2,s=4*e}const a={min:t.minValue,max:t.maxValue,avg:i,stddev:s};return k(a,e.outStatisticTypes)}))}async _summaryStatsFromServiceQuery(e,t){await this._isStatsSupportedOnService(),"percent-of-total"===e.normalizationType&&(e.normalizationTotal=await this._getNormalizationTotal(e.field,e.normalizationType,e.filter));const r=w(t)||l(t),i="capabilities"in this.layer?this.layer.capabilities:null,s=T(this,e,t,i?.query?.supportsPercentileStatistics??!1),a=await this.layer.queryFeatures(s,{signal:e.signal}),o=Q(a,r);return k(o,e.outStatisticTypes)}_uvFromGenRenderer(e,t){const r=e.field??void 0,i=new h({attributeField:r}),s=new c({classificationDefinition:i});return this.generateRenderer(s,e.signal).then((e=>{const t={},i=this.getField(r);return e.uniqueValues.forEach((e=>{let r=e.value;null!=r&&""!==r&&("string"!=typeof r||""!==r.trim()&&"<null>"!==r.toLowerCase())||(r=null),null==t[r]?t[r]={count:e.count,data:u(i)&&r?Number(r):r}:t[r].count=t[r].count+e.count})),{count:t}})).then((r=>A(r,[t],e.returnAllCodedValues)))}async _uvFromServiceQuery(e,t){return this._isStatsSupportedOnService().then((()=>this.layer.queryFeatures(j(this,e),{signal:e.signal}))).then((t=>b(t,{layer:this,field:e.field,field2:e.field2,field3:e.field3,fieldDelimiter:v,view:e.view,signal:e.signal}))).then((r=>A(r,t,e.returnAllCodedValues,v)))}_getNormalizationTotal(e,t,r,i){return e&&"percent-of-total"===t?this.summaryStatistics({field:e,outStatisticTypes:{include:["sum"]},filter:r,signal:i}).then((e=>e.sum)):Promise.resolve(null)}_histogramForExpr(e){return this._getNormalizationTotal(e.field,e.normalizationType,e.filter,e.signal).then((t=>{const r=_(e,this,t);return q(r,this,e.minValue,e.maxValue).then((i=>{const s=i.min,a=i.max;if(null==s||null==a)return{bins:[],minValue:s,maxValue:a,normalizationTotal:t};const o=e.numBins||N,n=D(s,a,o),l=K(r.sqlExpression,n,null!=e.minValue&&null!=e.maxValue),u=new p({statisticType:"count",outStatisticFieldName:"countOFExpr",onStatisticField:"1"}),m=this.layer.createQuery();return m.where=f(m.where,r.sqlWhere),m.sqlFormat="standard",m.outStatistics=[u],m.groupByFieldsForStatistics=[l],m.orderByFields=[l],C(m,e.filter),this._isStatsSupportedOnService().then((()=>this.layer.queryFeatures(m,{signal:r.signal}))).then((e=>B(e,s,a,o,t)))}))}))}async _histogramFromQueryAttributeBins(e){const{field:t,normalizationType:r,filter:i,signal:s}=e,a=await this._getNormalizationTotal(t,r,i,s),o=this.layer.createQuery(),{query:n,min:l,max:u}=await E(e,this,a,o?.where);if(!n)return{bins:[],minValue:l,maxValue:u,normalizationTotal:a};const m=await this.layer.queryAttributeBins(n,{signal:s});return z(m,t?this.getField(t):null,{minValue:l,maxValue:u,normalizationTotal:a})}_classBreaksFromGenRend(e){const{field:t,normalizationType:r,normalizationField:i,normalizationTotal:s,signal:a}=e,o=S({field:t,normalizationType:r,normalizationField:i}),n=M({field:t,normalizationType:r,normalizationField:i,normalizationTotal:s,layer:this}),l=F(n,e.minValue,e.maxValue),u=G({field:t,normalizationType:r,normalizationField:i,classificationMethod:e.classificationMethod,standardDeviationInterval:e.standardDeviationInterval,breakCount:e.numClasses||J}),m=new c({classificationDefinition:u});return m.where=f(o,l),this.generateRenderer(m,a).then((t=>U(t,e.classificationMethod)))}async summaryStatistics(e){const{field:t,normalizationType:r,valueExpression:a,sqlExpression:o,view:n,features:u,useFeaturesInView:m}=e,c=t?this.getField(t):null,p=w(c)||l(c),h=a&&!(o&&this.supportsSQLExpression),d=this._hasLocalSource||u||m,y=n&&"3d"===n.type;if(d||h)return h||u||m||y?this._summaryStatsFromMemory(e,c):this._summaryStatsFromClientQuery(e,c);if(!this.supportsSQLExpression&&(p||o||"natural-log"===r||"square-root"===r))throw new i(`${this.adapterName}:not-supported`,"Layer does not support standardized SQL expression for queries");return(r&&!this.supportsSQLExpression?this._summaryStatsFromGenRend(e):this._summaryStatsFromServiceQuery(e,c)).catch((()=>(s(e.signal),this._summaryStatsFromMemory(e,c))))}async uniqueValues(e){const{valueExpression:t,sqlExpression:r,features:i,useFeaturesInView:a,signal:o}=e,n=t&&!(r&&this.supportsSQLExpression),l=this._hasLocalSource||i||a||n,u=e.view,m=u&&"3d"===u.type,c=await R(e,this);return l?n||i||a||m?this._uvFromMemory(e,c):this._uvFromClientQuery(e,c):this._uvFromServiceQuery(e,c).catch((t=>(s(o),!e.field||e.field2||e.field3||e.filter?t:this._uvFromGenRenderer(e,c[0])))).catch((()=>(s(o),m?this._uvFromMemory(e,c):this._uvFromClientQuery(e,c))))}async histogram(e){const{field:t,normalizationType:r,normalizationField:a,classificationMethod:o,view:n,filter:u,signal:m}=e,c=t?this.getField(t):null,p=w(c)||l(c),h=e.valueExpression||e.sqlExpression,d=e.valueExpression&&!(e.sqlExpression&&this.supportsSQLExpression),y=this._hasLocalSource||e.features||e.useFeaturesInView||d,f=this.supportsSQLExpression,S=!o||"equal-interval"===o,g=e.minValue,v=e.maxValue,x=null!=g&&null!=v,_=e.numBins||N;if(y)return this._histogramFromMemory(e);if(this.layer.capabilities?.operations?.supportsQueryBins&&e.useQueryAttributeBins)try{return await this._histogramFromQueryAttributeBins(e)}catch{return s(m),this._histogramFromQueryAttributeBinsFromMemory(e)}if((h||f)&&S){if(!f&&(h||"natural-log"===r||"square-root"===r))throw new i(`${this.adapterName}:not-supported`,"Layer does not support standardized SQL expression for queries");return this._histogramForExpr(e)}if(p&&S)throw new i(`${this.adapterName}:not-supported`,"Normalization and date field are not allowed when layer does not support standardized SQL expression for queries");return r||!S?V(e,this).then((s=>{if(!x)return I(this,s,t,_,n,u,m);if(g>s.max||v<s.min)throw new i(`${this.adapterName}:insufficient-data`,"Range defined by 'minValue' and 'maxValue' does not intersect available data range of the field");if(S)return I(this,{min:g,max:v,sqlExpr:s.sqlExpr,excludeZerosExpr:s.excludeZerosExpr},t,_,n,u,m);{const i={field:t,normalizationType:r,normalizationField:a,normalizationTotal:s.normTotal,layer:this},o=M(i),l=F(o,g,v);return V(e,this,l).then((e=>I(this,e,t,_,n,u,m)))}})):this._histogramForField(e)}async classBreaks(e){const t=!1!==e.analyzeData,r=this._hasLocalSource||e.features||e.useFeaturesInView||e.valueExpression||e.filter;if(t&&r)return this._classBreaksFromMemory(e);return(t?this._classBreaksFromGenRend(e):this._classBreaksFromInterpolation(e)).catch((()=>(s(e.signal),this._classBreaksFromMemory(e))))}async queryFeatureCount(e){if(this._hasLocalSource)throw new i(`${this.adapterName}:not-supported`,"Layer does not support count query");const t=this.layer,r=t.createQuery();return r.where=f(r.where,e.whereClause),C(r,e.filter),t.queryFeatureCount(r,{signal:e.signal})}async generateRenderer(e,t){const r=this.layer;if(this._hasLocalSource||r.version<10.1)throw new i(`${this.adapterName}:not-supported`,"Layer does not support generateRenderer operation (requires ArcGIS Server version 10.1+)");const s=r.createQuery();return e.where=f(e.where,s.where),m(r.parsedUrl?.path??"",{source:r.dynamicDataSource??void 0,gdbVersion:r.gdbVersion??void 0},e,{signal:t})}async predominantCategories(e){if(!this._hasLocalSource&&!this.supportsSQLExpression)throw new i(`${this.adapterName}:not-supported`,"Layer does not support advanced SQL expressions and standardized queries");const{fields:t,view:r,signal:s,filter:a}=e,o=d(t),n=y(t),l=r&&this._hasLocalSource?await this._uvFromMemory({valueExpression:o,view:r,signal:s,filter:a}):await this._uvFromServiceQuery({sqlExpression:n.expression,valueExpression:o,signal:s,filter:a});return $(l.uniqueValueInfos,t)}async getSampleFeatures(e,i){const{view:a,requiredFields:o,returnGeometry:n,filter:l,signal:u}=e,m=e.sampleSize;if(null==m||0===m)return[];const c=this.layer.createQuery(),p=1,h="json"===i;c.outSpatialReference=a?.spatialReference,c.returnGeometry=!!n,c.outFields=o,C(c,l);let d=[],y=!1;if(a)try{const s=await a.whenLayerView(this.layer);if(y=!O(this,o,s).length,y){if(m>=1&&!e.filter&&"getSampleFeatures"in s){await this._waitForLayerViewUpdate(s);const e=await s.getSampleFeatures({minFeatureCount:m,sampleSize:m});if(null!=e)return h?e:e.map((e=>t.fromJSON(e)))}if(d=await this._fetchFeaturesFromMemory(s,c,u,i),d.length>=m&&m>0)return r(d,m,p)}}catch(f){s(u)}try{if(this._hasLocalSource)return y?d:h?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u);const t=await this.queryFeatureCount({view:a,filter:l,signal:u}),i=this.layer.capabilities.query.maxRecordCount;let s=-1===m?t:m;if(s=i&&s>i?i:s,t<=d.length||d.length>=i)return d;if(c.maxAllowableOffset=e.resolution||(a?a.extent.width/a.width/a.scale:P(this.layer.spatialReference))*H,t<=s)return h?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u);if(t<=W){const e=this.layer.createQuery();C(e,l);const t=await this.layer.queryObjectIds();return c.objectIds=r(t,s,p),h?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u)}return this.layer.capabilities?.query?.supportsPagination&&(c.num=Math.min(s,W)),h?await this._fetchFeaturesJSONFromService(c,u):await this._fetchFeaturesFromService(c,u)}catch(f){return s(u),d}}load(e){const t=this.layer.load(e).then((async t=>{this.geometryType=t.geometryType,this.objectIdField=t.objectIdField,this.supportsSQLExpression=t.capabilities?.query?.supportsSqlExpression,this._hasLocalSource=!t.url&&!!t.source,this.hasQueryEngine=this._hasLocalSource,this.minScale=t.minScale,this.maxScale=t.maxScale,this.fullExtent=t.fullExtent,this.workerClient=g.getInstance(),await this.workerClient.open(e.signal)}));return this.addResolvingPromise(t),Promise.resolve(this)}};function K(e,t,r){const i=[],s=t.length;return t.forEach(((t,a)=>{const[o,n]=t;let l=null;l=0!==a||r?a!==s-1||r?f(`${e} >= ${o}`,`${e} ${a===s-1?" <= ":" < "} ${n}`):`${e} >= ${o}`:`${e} < ${n}`,i.push("WHEN ("+l+") THEN "+(a+1))})),["CASE",i.join(" "),"ELSE 0","END"].join(" ")}e([a({readOnly:!0})],Z.prototype,"adapterName",void 0),e([a({constructOnly:!0})],Z.prototype,"layer",void 0),Z=e([o("esri.smartMapping.support.adapters.FeatureLayerAdapter")],Z);export{Z as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import{CodedValue as n}from"../../../../layers/support/CodedValue.js";import"../../../../core/has.js";import l from"../../../../layers/support/CodedValueDomain.js";import"../../../../layers/support/Domain.js";import"../../../../layers/support/InheritedDomain.js";import"../../../../layers/support/RangeDomain.js";import i from"../../../../layers/support/Field.js";import{isStringField as o,isTimeOnlyField as a}from"../../../../layers/support/fieldUtils.js";import r from"../../../../rest/support/StatisticDefinition.js";import{noDominantCategoryField as s}from"../../../statistics/support/predominanceUtils.js";import{getRangeExpr as u,getSQLFilterForNormalization as c,mergeWhereClauses as m}from"../../../statistics/support/utils.js";import{isIntegerField as f,isAnyDateField as p,getDateDiffSQL as d,castIntegerFieldToFloat as y}from"../../utils.js";import{isNullCountSupported as g,statisticTypes as x,getEqualIntervalBins as v,processNullValue as h}from"../../../../statistics/utils.js";const F=/_value$/i,w=Math.LOG10E,E={SECOND:1e3,MINUTE:6e4,HOUR:36e5},S=10;function T(e){return e.map((e=>e.toJSON()))}function V(e,t){const n=[],l=e.layer,i="featureReduction"in l?l.featureReduction:null,o="binning"===i?.type,a=null!=i&&"fields"in i?i.fields?.map((e=>e.name?.toLowerCase())).filter(Boolean):[];if(!o||!t)return n;for(const r of t)a.includes(r.toLowerCase())||n.push(r);return n}function z(e,t,n){const l=[];if(t)for(const i of t){const t=e.getField(i);t&&n&&"availableFields"in n&&!n.availableFields?.includes(t.name)&&l.push(t.name)}return l}function $(e,t){const n=e&&e.features;if(0===n?.length)return{avg:null,count:0,max:null,median:null,min:null,nullcount:0,stddev:null,sum:null,variance:null};const l=n?.[0]?.attributes,i={};for(const o in l)i[o.replace(F,"").toLowerCase()]=l[o];return null!=i.totalcount&&i.totalcount>=i.count&&(i.nullcount=i.totalcount-i.count),delete i.totalcount,i.min===i.max&&null!=i.min&&null==i.stddev&&(i.stddev=i.variance=0),t&&(["min","max","avg","stddev","sum","variance"].forEach((e=>{null!=i[e]&&(i[e]=Math.ceil(i[e]))})),i.min===i.max&&null!=i.min&&(i.avg=i.min,i.stddev=i.variance=0)),i}function C(e){const t=[],n=e.classBreaks,l=n[0].minValue,i=n[n.length-1].maxValue;n.forEach((e=>{t.push([e.minValue,e.maxValue])}));const o={field:e.field,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,layer:e.layer};return{min:l,max:i,intervals:t,sqlExpr:j(o),excludeZerosExpr:e.where,normTotal:e.normalizationTotal}}function j(e){const{field:t,normalizationType:n,normalizationField:l,normalizationTotal:i,layer:o}=e,a=f(o,t);let r=t;return"percent-of-total"===n?r=`((${a?y(t):t} / ${i}) * 100)`:"log"===n?r=`(log(${t}) * ${w})`:"field"===n?r=`(${a?y(t):t} / ${l})`:"natural-log"===n?r=`(log(${a?y(t):t}))`:"square-root"===n&&(r=`(power(${a?y(t):t}, 0.5))`),r}function q(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()!==t){n=e[l];break}return n}function b(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()===t){n=e[l];break}return n}function O(e,t,n,l,i){const o={},a="countOFExpr";e&&e.features&&e.features.forEach((e=>{const t=e.attributes,n=q(t,a),l=b(t,a);null!=n&&null!=l&&0!==n&&(o[n]=l)}));const r=[];return v(t,n,l).forEach(((e,t)=>{const n=(t+1).toString();r.push({minValue:e[0],maxValue:e[1],count:o.hasOwnProperty(n)?o[n]:0})})),{bins:r,minValue:t,maxValue:n,normalizationTotal:i}}async function L(e,n){const l=e&&e.features,{field:i,field2:o,field3:a,fieldDelimiter:r,layer:s,view:u,signal:c,labels:m}=n,f=`countOF${!(!i||!o)?"Expr":i||"Expr"}`,p={};let d=!1;for(const t of l){const e=t.attributes,n=b(e,f);let l=i?b(e,i):q(e,f),s=o?b(e,o):null,u=a?b(e,a):null;null===l&&0===n&&(d=!0),(null==l||"string"==typeof l&&""===l.trim())&&(l=null),o&&(null==s||"string"==typeof s&&""===s.trim())&&(s=null),a&&(null==u||"string"==typeof u&&""===u.trim())&&(u=null);let c=l;o&&(c=`${h(c)}${r}${h(s)}`,a&&(c=`${c}${r}${h(u)}`)),null==p[c]?p[c]={count:n,data:c}:p[c].count=p[c].count+n}if(i&&d){const e=i+" is NULL";try{const t=await s.queryFeatureCount({whereClause:e,view:u,signal:c});return p.null.count=p.null.count+t,R(p,m)}catch{return t(c),R(p,m)}}return R(p,m)}function R(e,t){if(t)for(const n in e)e[n].label=t[n];return{count:e}}async function D(e,t,i){const o=e?i.getField(e):null,a=o?i.getFieldDomain(o.name):null;if(a)return a;const{uniqueValueInfos:r}=await i.uniqueValues({field:e,sqlWhere:t.sqlWhere,features:t.features,useFeaturesInView:t.useFeaturesInView,view:t.view,signal:t.signal}),s=r.map((e=>new n({code:e.value})));return new l({codedValues:s})}async function I(e,t){if(!e.returnAllCodedValues)return[];const{field:n,field2:l,field3:i}=e;if(n&&!l){const e=n?t.getField(n):null,l=e?t.getFieldDomain(e.name):null;return l?[l]:[]}const o=[];return n&&(o.push(D(n,e,t)),l&&(o.push(D(l,e,t)),i&&o.push(D(i,e,t)))),Promise.all(o)}function N(e,t){return d(e,new Date(0),t,"milliseconds").sqlExpression}function U(e,t){return`EXTRACT(${t} FROM ${e}) * ${E[t]}`}function M(e){if(!e)return null;return y(["HOUR","MINUTE","SECOND"].map((t=>`(${U(e,t)})`)).join(" + "))}function B(e){return{viewingMode:"2d"===e.type?"map":e.viewingMode,scale:e.scale,spatialReference:e.spatialReference?.toJSON()}}function Q(e,t){const n=new Set(e.map((e=>e.value))),l=t.filter((e=>!n.has(e)));for(const i of l)e.push({value:i,count:0});e.sort(((e,n)=>t.indexOf(e.value)-t.indexOf(n.value)));for(const i of e)i.value===s&&(i.value=null);return{predominantCategoryInfos:e}}function P(t){const n="featureReduction"in t?t.featureReduction:null;return((null!=n&&"fields"in n?n.fields:null)??[]).map((e=>{const n=W(e,t.fieldsIndex);return n?new i({type:n,name:e.name,alias:e.alias}):null})).filter(e)}function W(e,t){switch(e.statisticType){case"avg":case"avg_angle":return"double";case"count":return"integer";case"min":case"max":case"sum":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?null:"double":null;case"mode":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?"string":"double":null;default:return null}}function _(e,t){return p(t)?N(e,t?.name):a(t)?M(t?.name):null}function k(e,t,n){const{field:l,normalizationType:i,normalizationField:a,normalizationTotal:s,minValue:f,maxValue:p,filter:d}=t,y=e.supportsSQLExpression?_(e,n)||t.sqlExpression:null,v=j({field:l,normalizationType:i,normalizationField:a,normalizationTotal:s,layer:e}),h=y||v,F=h?u(h,f,p):null,w=c({field:l,normalizationField:a,normalizationType:i}),E=m(t.sqlWhere,w),S=m(E,F),T=g({normalizationField:a,normalizationType:i,sqlExpression:y,supportsSQLExpression:e.supportsSQLExpression,minValue:f,maxValue:p}),V=o(e.getField(l??void 0)),{include:z,exclude:$}=t.outStatisticTypes||{},C=x.filter((e=>(!z||z.includes(e))&&(!$||!$.includes(e))&&("nullcount"===e?T:!V||"count"===e))),q=e.createQuery();return q.where=m(q.where,S),q.sqlFormat=y?"standard":null,q.outStatistics=C.map((t=>{const n=new r;let l=null,i=null,o=`${t}_value`;if("variance"===t)l="var",i=h;else if("nullcount"===t){const t=e.objectIdField;l="count",i=t&&e.getField(t)?t:"1",o="totalcount_value"}else"median"===t?(l="percentile-continuous",i=h,n.statisticParameters={value:.5}):(l=t,i=h);return n.statisticType=l,n.onStatisticField=i,n.outStatisticFieldName=o,n})),A(q,d),q}function A(e,t){t&&(e.geometry=t.geometry,e.spatialRelationship=t.spatialRelationship)}function H(e,t){const{field:n,field2:l,field3:i,sqlExpression:o}=t,a=!(!n||!l),r=e.createQuery();return r.where=m(r.where,t.sqlWhere),r.sqlFormat=o?"standard":null,r.outStatistics=[J(a?null:n,a?"1":o)].filter(Boolean),r.groupByFieldsForStatistics=[n||o,l,i].filter(Boolean),A(r,t.filter),r}function J(e,t){const n="countOF"+(e||"Expr"),l=new r;return l.statisticType="count",l.onStatisticField=t?"1":e,l.outStatisticFieldName=n,l}function Z(e,t,n,l=S,i,o,a){const{min:r,max:s,normTotal:u,excludeZerosExpr:c}=t,m=t.intervals||v(r,s,l),f=t.sqlExpr||n;return G(e,m,f,c,i,o,a).then((e=>({bins:e.map(((e,t)=>({minValue:m[t][0],maxValue:m[t][1],count:"fulfilled"===e.status?e.value:0}))),minValue:r,maxValue:s,normalizationTotal:u})))}function G(e,t,n,l,i,o,a){const r=[],s=t.length;for(let u=0;u<s;u++){const e=m(l,m(n+" >= "+t[u][0],null!==t[u][1]?n+(u===s-1?" <= ":" < ")+t[u][1]:""));r.push(e)}return Promise.allSettled(r.map((t=>e.queryFeatureCount({whereClause:t,view:i,filter:o,signal:a}))))}export{S as defaultNumBins,T as ensureFeaturesJSON,C as generateBinParams,W as getAggregateFieldType,Z as getBins,I as getDomainsForFields,P as getFeatureReductionFields,j as getFieldExpr,O as getHistogramFromFeatureSet,z as getMissingFields,V as getMissingFieldsForBinning,Q as getPredominantCategoriesFromUVInfos,_ as getSQLExpressionForDateOrTimeField,$ as getSummaryStatisticsFromFeatureSet,k as getSummaryStatsQuery,H as getUVQuery,L as getUniqueValuesFromFeatureSet,B as getViewInfoParams,M as msForTimeOnlyFieldSQL,N as msSinceUnixEpochSQL,A as updateQueryWithFeatureFilter};
5
+ import{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import{CodedValue as n}from"../../../../layers/support/CodedValue.js";import"../../../../core/has.js";import l from"../../../../layers/support/CodedValueDomain.js";import"../../../../layers/support/Domain.js";import"../../../../layers/support/InheritedDomain.js";import"../../../../layers/support/RangeDomain.js";import i from"../../../../layers/support/Field.js";import{isStringField as o,isTimeOnlyField as a}from"../../../../layers/support/fieldUtils.js";import r from"../../../../rest/support/StatisticDefinition.js";import{noDominantCategoryField as s}from"../../../statistics/support/predominanceUtils.js";import{getRangeExpr as u,getSQLFilterForNormalization as c,mergeWhereClauses as m}from"../../../statistics/support/utils.js";import{isIntegerField as f,isAnyDateField as p,getDateDiffSQL as d,castIntegerFieldToFloat as y}from"../../utils.js";import{isNullCountSupported as g,statisticTypes as x,getEqualIntervalBins as v,processNullValue as h}from"../../../../statistics/utils.js";const F=/_value$/i,w=Math.LOG10E,E={SECOND:1e3,MINUTE:6e4,HOUR:36e5},S=10;function T(e){return e.map((e=>e.toJSON()))}function V(e,t){const n=[],l=e.layer,i="featureReduction"in l?l.featureReduction:null,o="binning"===i?.type,a=null!=i&&"fields"in i?i.fields?.map((e=>e.name?.toLowerCase())).filter(Boolean):[];if(!o||!t)return n;for(const r of t)a.includes(r.toLowerCase())||n.push(r);return n}function z(e,t,n){const l=[];if(t)for(const i of t){const t=e.getField(i);t&&n&&"availableFields"in n&&!n.availableFields?.includes(t.name)&&l.push(t.name)}return l}function $(e,t){const n=e&&e.features;if(0===n?.length)return{avg:null,count:0,max:null,median:null,min:null,nullcount:0,stddev:null,sum:null,variance:null};const l=n?.[0]?.attributes,i={};for(const o in l)i[o.replace(F,"").toLowerCase()]=l[o];return null!=i.totalcount&&i.totalcount>=i.count&&(i.nullcount=i.totalcount-i.count),delete i.totalcount,i.min===i.max&&null!=i.min&&null==i.stddev&&(i.stddev=i.variance=0),t&&(["min","max","avg","stddev","sum","variance"].forEach((e=>{null!=i[e]&&(i[e]=Math.ceil(i[e]))})),i.min===i.max&&null!=i.min&&(i.avg=i.min,i.stddev=i.variance=0)),i}function C(e){const t=[],n=e.classBreaks,l=n[0].minValue,i=n[n.length-1].maxValue;n.forEach((e=>{t.push([e.minValue,e.maxValue])}));const o={field:e.field,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,layer:e.layer};return{min:l,max:i,intervals:t,sqlExpr:j(o),excludeZerosExpr:e.where,normTotal:e.normalizationTotal}}function j(e){const{field:t,normalizationType:n,normalizationField:l,normalizationTotal:i,layer:o}=e,a=f(o,t);let r=t;return"percent-of-total"===n?r=`((${a?y(t):t} / ${i}) * 100)`:"log"===n?r=`(log(${t}) * ${w})`:"field"===n?r=`(${a?y(t):t} / ${l})`:"natural-log"===n?r=`(log(${a?y(t):t}))`:"square-root"===n&&(r=`(power(${a?y(t):t}, 0.5))`),r}function q(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()!==t){n=e[l];break}return n}function b(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()===t){n=e[l];break}return n}function O(e,t,n,l,i){const o={},a="countOFExpr";e&&e.features&&e.features.forEach((e=>{const t=e.attributes,n=q(t,a),l=b(t,a);null!=n&&null!=l&&0!==n&&(o[n]=l)}));const r=[];return v(t,n,l).forEach(((e,t)=>{const n=(t+1).toString();r.push({minValue:e[0],maxValue:e[1],count:o.hasOwnProperty(n)?o[n]:0})})),{bins:r,minValue:t,maxValue:n,normalizationTotal:i}}async function L(e,n){const l=e&&e.features,{field:i,field2:o,field3:a,fieldDelimiter:r,layer:s,view:u,signal:c,labels:m}=n,f=`countOF${!(!i||!o)?"Expr":i||"Expr"}`,p={};let d=!1;for(const t of l){const e=t.attributes,n=b(e,f);let l=i?b(e,i):q(e,f),s=o?b(e,o):null,u=a?b(e,a):null;null===l&&0===n&&(d=!0),(null==l||"string"==typeof l&&""===l.trim())&&(l=null),o&&(null==s||"string"==typeof s&&""===s.trim())&&(s=null),a&&(null==u||"string"==typeof u&&""===u.trim())&&(u=null);let c=l;o&&(c=`${h(c)}${r}${h(s)}`,a&&(c=`${c}${r}${h(u)}`)),null==p[c]?p[c]={count:n,data:c}:p[c].count=p[c].count+n}if(i&&d){const e=i+" is NULL";try{const t=await s.queryFeatureCount({whereClause:e,view:u,signal:c});return p.null.count=p.null.count+t,R(p,m)}catch{return t(c),R(p,m)}}return R(p,m)}function R(e,t){if(t)for(const n in e)e[n].label=t[n];return{count:e}}async function D(e,t,i){const o=e?i.getField(e):null,a=o?i.getFieldDomain(o.name):null;if(a)return a;const{uniqueValueInfos:r}=await i.uniqueValues({field:e,sqlWhere:t.sqlWhere,features:t.features,useFeaturesInView:t.useFeaturesInView,view:t.view,signal:t.signal}),s=r.map((e=>new n({code:e.value})));return new l({codedValues:s})}async function I(e,t){if(!e.returnAllCodedValues)return[];const{field:n,field2:l,field3:i}=e;if(n&&!l){const e=n?t.getField(n):null,l=e?t.getFieldDomain(e.name):null;return l?[l]:[]}const o=[];return n&&(o.push(D(n,e,t)),l&&(o.push(D(l,e,t)),i&&o.push(D(i,e,t)))),Promise.all(o)}function N(e,t){return d(e,new Date(0),t,"milliseconds").sqlExpression}function U(e,t){return`EXTRACT(${t} FROM ${e}) * ${E[t]}`}function M(e){if(!e)return null;return y(["HOUR","MINUTE","SECOND"].map((t=>`(${U(e,t)})`)).join(" + "))}function B(e){return{viewingMode:"2d"===e.type?"map":e.viewingMode,scale:e.scale,spatialReference:e.spatialReference?.toJSON()}}function Q(e,t){const n=new Set(e.map((e=>e.value))),l=t.filter((e=>!n.has(e)));for(const i of l)e.push({value:i,count:0});e.sort(((e,n)=>t.indexOf(e.value)-t.indexOf(n.value)));for(const i of e)i.value===s&&(i.value=null);return{predominantCategoryInfos:e}}function P(t){const n="featureReduction"in t?t.featureReduction:null;return((null!=n&&"fields"in n?n.fields:null)??[]).map((e=>{const n=W(e,t.fieldsIndex);return n?new i({type:n,name:e.name,alias:e.alias}):null})).filter(e)}function W(e,t){switch(e.statisticType){case"avg":case"avg_angle":return"double";case"count":return"integer";case"min":case"max":case"sum":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?null:"double":null;case"mode":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?"string":"double":null;default:return null}}function _(e,t){return p(t)?N(e,t?.name):a(t)?M(t?.name):null}function k(e,t,n,l=!0){const{field:i,normalizationType:a,normalizationField:s,normalizationTotal:f,minValue:p,maxValue:d,filter:y}=t,v=e.supportsSQLExpression?_(e,n)||t.sqlExpression:null,h=j({field:i,normalizationType:a,normalizationField:s,normalizationTotal:f,layer:e}),F=v||h,w=F?u(F,p,d):null,E=c({field:i,normalizationField:s,normalizationType:a}),S=m(t.sqlWhere,E),T=m(S,w),V=g({normalizationField:s,normalizationType:a,sqlExpression:v,supportsSQLExpression:e.supportsSQLExpression,minValue:p,maxValue:d}),z=o(e.getField(i??void 0)),{include:$,exclude:C}=t.outStatisticTypes||{},q=x.filter((e=>(!$||$.includes(e))&&(!C||!C.includes(e))&&("nullcount"===e?V:!z||"count"===e)&&("median"!==e||l))),b=e.createQuery();return b.where=m(b.where,T),b.sqlFormat=v?"standard":null,b.outStatistics=q.map((t=>{const n=new r;let l=null,i=null,o=`${t}_value`;if("variance"===t)l="var",i=F;else if("nullcount"===t){const t=e.objectIdField;l="count",i=t&&e.getField(t)?t:"1",o="totalcount_value"}else"median"===t?(l="percentile-continuous",i=F,n.statisticParameters={value:.5}):(l=t,i=F);return n.statisticType=l,n.onStatisticField=i,n.outStatisticFieldName=o,n})),A(b,y),b}function A(e,t){t&&(e.geometry=t.geometry,e.spatialRelationship=t.spatialRelationship)}function H(e,t){const{field:n,field2:l,field3:i,sqlExpression:o}=t,a=!(!n||!l),r=e.createQuery();return r.where=m(r.where,t.sqlWhere),r.sqlFormat=o?"standard":null,r.outStatistics=[J(a?null:n,a?"1":o)].filter(Boolean),r.groupByFieldsForStatistics=[n||o,l,i].filter(Boolean),A(r,t.filter),r}function J(e,t){const n="countOF"+(e||"Expr"),l=new r;return l.statisticType="count",l.onStatisticField=t?"1":e,l.outStatisticFieldName=n,l}function Z(e,t,n,l=S,i,o,a){const{min:r,max:s,normTotal:u,excludeZerosExpr:c}=t,m=t.intervals||v(r,s,l),f=t.sqlExpr||n;return G(e,m,f,c,i,o,a).then((e=>({bins:e.map(((e,t)=>({minValue:m[t][0],maxValue:m[t][1],count:"fulfilled"===e.status?e.value:0}))),minValue:r,maxValue:s,normalizationTotal:u})))}function G(e,t,n,l,i,o,a){const r=[],s=t.length;for(let u=0;u<s;u++){const e=m(l,m(n+" >= "+t[u][0],null!==t[u][1]?n+(u===s-1?" <= ":" < ")+t[u][1]:""));r.push(e)}return Promise.allSettled(r.map((t=>e.queryFeatureCount({whereClause:t,view:i,filter:o,signal:a}))))}export{S as defaultNumBins,T as ensureFeaturesJSON,C as generateBinParams,W as getAggregateFieldType,Z as getBins,I as getDomainsForFields,P as getFeatureReductionFields,j as getFieldExpr,O as getHistogramFromFeatureSet,z as getMissingFields,V as getMissingFieldsForBinning,Q as getPredominantCategoriesFromUVInfos,_ as getSQLExpressionForDateOrTimeField,$ as getSummaryStatisticsFromFeatureSet,k as getSummaryStatsQuery,H as getUVQuery,L as getUniqueValuesFromFeatureSet,B as getViewInfoParams,M as msForTimeOnlyFieldSQL,N as msSinceUnixEpochSQL,A as updateQueryWithFeatureFilter};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{ArcadeDate as e}from"../arcade/ArcadeDate.js";import t from"../core/Error.js";import"../core/has.js";import{DateOnly as r}from"../core/sql/DateOnly.js";import{TimeOnly as i}from"../core/sql/TimeOnly.js";import{fromJSON as n}from"../geometry/support/jsonUtils.js";import s from"../layers/support/FieldsIndex.js";import{loadArcade as a}from"./loadArcade.js";import{unknown as o,system as c}from"../time/constants.js";const l=["geometry","scale","timeProperties"];function d(e,t){if(null!=t)for(const r of l)t.hasArcadeDependency(r)&&e.add(r);return e}function u(e,t){return p.create(e,t,null,["$feature","$view"])}function h(e,t){return p.create(e,t,null,["$feature","$view"])}function m(e,t,r){return p.create(e,t,r,["$feature","$view","$config"])}class p{static async create(e,r,i,n){const{arcade:s,Dictionary:o}=await a();let c;try{c=s.parseScript(e)}catch(f){throw new t("arcade-bad-expression","Failed to parse arcade script",{script:e,error:f})}const l=s.scriptUsesGeometryEngine(c);l&&await s.enableGeometrySupport(),await s.loadDependentModules(new Set,c,null,!1,l);const d={vars:n.reduce(((e,t)=>({...e,[t]:null})),{}),spatialReference:r,useAsync:!1},u=s.compileScript(c,d);let h=null;null!=i&&(h=new o(i),h.immutable=!0);const m=new o;return m.immutable=!1,m.setField("scale",0),new p(e,s,c,u,r,m,h,o)}constructor(e,t,r,i,n,s,a,o){this.script=e,this._arcade=t,this._syntaxTree=r,this._compiled=i,this._spatialReference=n,this._viewDict=s,this._configDict=a,this._dictionaryCtor=o,this._dependencies=new Map,this._featureReader=new f,this._dependencies.set("geometry",t.scriptTouchesGeometry(this._syntaxTree)),this._dependencies.set("scale",this._arcade.referencesMember(this._syntaxTree,"scale")),this._dependencies.set("timeProperties",this._arcade.scriptUsesViewProperties(this._syntaxTree,["timeProperties"]))}evaluate(t,r){const i=r.$view?.timeZone;if(r.$view){let t;if(this._viewDict.setField("scale",r.$view.scale),null!=r.$view.timeProperties){const{currentStart:n,currentEnd:s}=r.$view.timeProperties;t=new this._dictionaryCtor({currentStart:null!=n?null!=i?e.epochToArcadeDate(n,i):e.unknownEpochToArcadeDate(n):void 0,currentEnd:null!=s?null!=i?e.epochToArcadeDate(s,i):e.unknownEpochToArcadeDate(s):void 0,startIncluded:!0,endIncluded:!0})}this._viewDict.setField("timeProperties",t)}return this._compiled({vars:{$view:this._viewDict,$config:this._configDict,$feature:t},spatialReference:this._spatialReference,timeZone:i})}repurposeFeature(e,t){return this._featureReader.bind(e,t,this._spatialReference),this._featureReader}references(e){return this._dependencies.get(e)??!1}}class f{constructor(){this._boundTarget=null,this._boundSchema={fields:null,fieldsIndex:null,spatialReference:null,get geometryType(){return null},get objectIdField(){return null}},this.arcadeDeclaredClass="esri.arcade.Feature",this._contextTimeZone=null}bind(e,t,r){const i=t??new s(_(e.attributes));this._boundTarget=e,this._boundSchema.fields=i.fields,this._boundSchema.fieldsIndex=i,this._boundSchema.spatialReference=r}_getField(e){return this._boundSchema.fieldsIndex.get(e)}get contextTimeZone(){return this._contextTimeZone}set contextTimeZone(e){this._contextTimeZone=e}readArcadeFeature(){return this}hasField(e){return this._boundSchema.fieldsIndex.has(e)}geometry(){if("fromJSON"in this._boundTarget)return this._boundTarget.geometry;const e=n(this._boundTarget.geometry);if(e){if(!this._boundSchema.spatialReference)throw new Error("InternalError: Expected spatial reference to be defined");e.spatialReference=this._boundSchema.spatialReference}return e}isUnknownDateTimeField(e){return this._boundSchema.fieldsIndex.getTimeZone(e)===o}field(t,n=!0){const s=this._getField(t);if(s)switch(s.type){case"date-only":case"esriFieldTypeDateOnly":return r.fromReader(this._boundTarget.attributes[s.name]);case"time-only":case"esriFieldTypeTimeOnly":return i.fromReader(this._boundTarget.attributes[s.name]);case"esriFieldTypeTimestampOffset":case"timestamp-offset":return e.fromReaderAsTimeStampOffset(this._boundTarget.attributes[s.name]);case"date":case"esriFieldTypeDate":{const r=this._boundTarget.attributes[s.name];return this.isUnknownDateTimeField(t)?e.unknownEpochToArcadeDate(r):e.epochToArcadeDate(r,this.contextTimeZone??c)}default:return this._boundTarget.attributes[s.name]}if(n)throw new Error(`Field ${t} does not exist`);return null}setField(e,t){throw new Error("Unable to update feature attribute values, feature is readonly")}keys(){return this._boundSchema.fieldsIndex.fields.map((e=>e.name))}castToText(e=!1){return JSON.stringify(this._boundTarget)}gdbVersion(){return null}fullSchema(){return this._boundSchema}castAsJson(e=null){return{attributes:this._boundTarget.attributes,geometry:!0===e?.keepGeometryType?this.geometry():this.geometry()?.toJSON()??null}}castAsJsonAsync(e=null,t=null){return Promise.resolve(this.castAsJson(t))}}function _(e){const t=[];for(const r in e)t.push({name:r,alias:r,type:"string"==typeof e[r]?"esriFieldTypeString":"esriFieldTypeDouble"});return t}export{p as ArcadeExpression,f as ArcadeFeatureReader,d as collectExpressionDependencies,m as createDictionaryExpression,u as createLabelExpression,h as createRendererExpression,_ as deriveFields};
5
+ import{ArcadeDate as e}from"../arcade/ArcadeDate.js";import t from"../core/Error.js";import"../core/has.js";import{DateOnly as r}from"../core/sql/DateOnly.js";import{TimeOnly as i}from"../core/sql/TimeOnly.js";import{fromJSON as n}from"../geometry/support/jsonUtils.js";import s from"../layers/support/FieldsIndex.js";import{loadArcade as a}from"./loadArcade.js";import{unknown as o,system as c}from"../time/constants.js";const l=["geometry","scale","timeProperties"];function d(e,t){if(null!=t)for(const r of l)t.hasArcadeDependency(r)&&e.add(r);return e}function u(e,t){return p.create(e,t,null,["$feature","$view"])}function h(e,t){return p.create(e,t,null,["$feature","$view"])}function m(e,t,r){return p.create(e,t,r,["$feature","$view","$config"])}class p{static async create(e,r,i,n){const{arcade:s,Dictionary:o}=await a();let c;try{c=s.parseScript(e)}catch(f){throw new t("arcade-bad-expression","Failed to parse arcade script",{script:e,error:f})}const l=s.scriptUsesGeometryEngine(c);l&&await s.enableGeometrySupport(),await s.loadDependentModules(new Set,c,null,!1,l);const d={vars:n.reduce(((e,t)=>({...e,[t]:null})),{}),spatialReference:r,useAsync:!1},u=s.compileScript(c,d);let h=null;null!=i&&(h=new o(i),h.immutable=!0);const m=new o;return m.immutable=!1,m.setField("scale",0),new p(e,s,c,u,r,m,h,o)}constructor(e,t,r,i,n,s,a,o){this.script=e,this._arcade=t,this._syntaxTree=r,this._compiled=i,this._spatialReference=n,this._viewDict=s,this._configDict=a,this._dictionaryCtor=o,this._dependencies=new Map,this._featureReader=new f,this._dependencies.set("geometry",t.scriptTouchesGeometry(this._syntaxTree)),this._dependencies.set("scale",this._arcade.referencesMember(this._syntaxTree,"scale")),this._dependencies.set("timeProperties",this._arcade.scriptUsesViewProperties(this._syntaxTree,["timeProperties"]))}evaluate(t,r){const i=r.$view?.timeZone;if(r.$view){let t;if(this._viewDict.setField("scale",r.$view.scale),null!=r.$view.timeProperties){const{currentStart:n,currentEnd:s}=r.$view.timeProperties;t=new this._dictionaryCtor({currentStart:null!=n?null!=i?e.epochToArcadeDate(n,i):e.unknownEpochToArcadeDate(n):void 0,currentEnd:null!=s?null!=i?e.epochToArcadeDate(s,i):e.unknownEpochToArcadeDate(s):void 0,startIncluded:!0,endIncluded:!0})}this._viewDict.setField("timeProperties",t)}return this._compiled({vars:{$view:this._viewDict,$config:this._configDict,$feature:t},spatialReference:this._spatialReference,timeZone:i})}repurposeFeature(e,t){return this._featureReader.bind(e,t,this._spatialReference),this._featureReader}references(e){return this._dependencies.get(e)??!1}}class f{constructor(){this._boundTarget=null,this._boundSchema={fields:null,fieldsIndex:null,spatialReference:null,get geometryType(){return null},get objectIdField(){return null}},this.arcadeDeclaredClass="esri.arcade.Feature",this._contextTimeZone=null}bind(e,t,r){const i=t??new s(_(e.attributes));this._boundTarget=e,this._boundSchema.fields=i.fields,this._boundSchema.fieldsIndex=i,this._boundSchema.spatialReference=r}_getField(e){return this._boundSchema.fieldsIndex.get(e)}get contextTimeZone(){return this._contextTimeZone}set contextTimeZone(e){this._contextTimeZone=e}readArcadeFeature(){return this}hasField(e){return this._boundSchema.fieldsIndex.has(e)}geometry(){if("fromJSON"in this._boundTarget)return this._boundTarget.geometry;const e=n(this._boundTarget.geometry);if(e){if(!this._boundSchema.spatialReference)throw new Error("InternalError: Expected spatial reference to be defined");e.spatialReference=this._boundSchema.spatialReference}return e}isUnknownDateTimeField(e){return this._boundSchema.fieldsIndex.getTimeZone(e)===o}field(t,n=!0){const s=this._getField(t);if(s){const n=this._boundTarget.attributes[s.name];if(null==n)return null;switch(s.type){case"date-only":case"esriFieldTypeDateOnly":return r.fromReader(n);case"time-only":case"esriFieldTypeTimeOnly":return i.fromReader(n);case"esriFieldTypeTimestampOffset":case"timestamp-offset":return e.fromReaderAsTimeStampOffset(n);case"date":case"esriFieldTypeDate":return this.isUnknownDateTimeField(t)?e.unknownEpochToArcadeDate(n):e.epochToArcadeDate(n,this.contextTimeZone??c);default:return n}}if(n)throw new Error(`Field ${t} does not exist`);return null}setField(e,t){throw new Error("Unable to update feature attribute values, feature is readonly")}keys(){return this._boundSchema.fieldsIndex.fields.map((e=>e.name))}castToText(e=!1){return JSON.stringify(this._boundTarget)}gdbVersion(){return null}fullSchema(){return this._boundSchema}castAsJson(e=null){return{attributes:this._boundTarget.attributes,geometry:!0===e?.keepGeometryType?this.geometry():this.geometry()?.toJSON()??null}}castAsJsonAsync(e=null,t=null){return Promise.resolve(this.castAsJson(t))}}function _(e){const t=[];for(const r in e)t.push({name:r,alias:r,type:"string"==typeof e[r]?"esriFieldTypeString":"esriFieldTypeDouble"});return t}export{p as ArcadeExpression,f as ArcadeFeatureReader,d as collectExpressionDependencies,m as createDictionaryExpression,u as createLabelExpression,h as createRendererExpression,_ as deriveFields};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- const b="20250611",e="d1dd87f8abb8a6f1869b7209bcf91500ef1e3ae1";export{b as buildDate,e as commitHash};
5
+ const e="20250612",d="91fcfa875ae8661483ef851076791d071be4dd19";export{e as buildDate,d as commitHash};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../../core/Error.js";import e from"../../../core/Logger.js";import{GeometryCursor as s}from"../../../geometry/GeometryCursor.js";import o from"../../../geometry/SpatialReference.js";import{closeRingsAndFixWinding as i}from"../../../geometry/support/coordsUtils.js";import{isPolygon as n,isPolyline as r}from"../../../geometry/support/jsonUtils.js";import l from"../../../geometry/support/PolylineBuilder.js";import{Point as a}from"../../../geometry/support/TileClipper.js";import{PathEffectCursor as h}from"../CIMCursor.js";import{SegmentCursor as c}from"../../../views/2d/engine/webgl/mesh/templates/segmentUtils.js";const y=()=>e.getLogger("esri.symbols.cim.effects.EffectTaperedPolygon");class p{static{this.instance=null}static local(){return null===p.instance&&(p.instance=new p),p.instance}execute(t,e,s,o,i){return new x(t,e,s,o,i)}}class x extends h{constructor(t,e,s,o,i){super(t,!1,!0),this._slopeS=0,this._slopeC=1,this._lastTangent1=new a(NaN,NaN),this._lastWidth=0,this._tileKey=null,this._halfFromWidth=Math.abs(void 0!==e.fromWidth?e.fromWidth:0)*s*.5,this._halfToWidth=Math.abs(void 0!==e.toWidth?e.toWidth:1)*s*.5,this._originalLength=(void 0!==e.length?e.length:0)*s,this._length=0,this._tileKey=o,this._geometryEngine=i}processPath(e){if(e.totalSize<=0)return null;if(this._halfFromWidth<=0&&this._halfToWidth<=0){const t=s.createEmptyOptimizedCIM("esriGeometryPolygon",!1,!1,e.yFactor);for(e.seekPathEnd();e.prevPoint();)t.pushXY(e.x,e.y);for(e.seekPathStart();e.nextPoint();)t.pushXY(e.x,e.y);return t}const a=[];e.seekPathStart();let h=0,p=0;for(;e.nextPoint();)a.push([e.x-h,e.y-p]),h=e.x,p=e.y;let x=this._geometryEngine?.simplify(o.WebMercator,{paths:[a]});x||null!=this._tileKey||(x={paths:[a]});const _=n(x)?x.rings:r(x)?x.paths:null;if(!_)return y().error(new t("mapview-bad-resource","Unable to process geometry")),null;const f=new l,d=new l;let m=0;for(const t of _){h=t[0][0],p=t[0][1];for(let e=1;e<t.length;e++){const s=h+t[e][0],o=p+t[e][1];m+=Math.sqrt((s-h)*(s-h)+(o-p)*(o-p)),h=s,p=o}}if(0===this._originalLength||this._originalLength>m){this._length=m;const t=(this._halfToWidth-this._halfFromWidth)/this._length;if(Math.abs(t)<1){const e=t*t;this._slopeC=Math.sqrt(1/(1+e)),this._slopeS=Math.sqrt(e/(1+e)),t<0&&(this._slopeS=-this._slopeS)}else this._slopeC=this._slopeS=.7071}else this._length=this._originalLength,this._slopeC=1,this._slopeS=0;let g=0;const u=[];for(const t of _){const e=c.create(t),s=c.create(t);this._setFromOffset(s,f,d);let o=s.next(),i=e;for(;o&&i;)g=this._setOffset(i,o,g,f,d),i=e.next(),o=s.next();i=e,i&&this._setToOffset(i,g,f,d);const n=f.getGeometry(),r=d.getGeometry(),l=[];for(const t of n)l.push(...t);for(let t=r.length-1;t>=0;t--){const e=r[t];for(let t=e.length-1;t>=0;t--)l.push(e[t])}u.push(l)}const S={rings:u};i(S);let T=this._geometryEngine?.simplify(o.WebMercator,S);if(!T){if(null!=this._tileKey)return null;T=S}return s.fromJSONCIM(T)}_setFromOffset(t,e,s){const o=this._halfFromWidth,i=new a(t.xEnd-t.xStart,t.yEnd-t.yStart);i.normalize(),i.scale(o),e.beginPath([t.xStart-i.y,t.yStart+i.x]),s.beginPath([t.xStart+i.y,t.yStart-i.x])}_setToOffset(t,e,s,o){let i;i=(e+=Math.sqrt((t.xEnd-t.xStart)*(t.xEnd-t.xStart)+(t.yEnd-t.yStart)*(t.yEnd-t.yStart)))>=this._length?this._halfToWidth:this._halfFromWidth+(this._halfToWidth-this._halfFromWidth)*e/this._length;const n=new a(t.xEnd-t.xStart,t.yEnd-t.yStart);n.normalize(),n.scale(i),s.lineTo([t.xEnd-n.y,t.yEnd+n.x]),o.lineTo([t.xEnd+n.y,t.yEnd-n.x])}_setOffset(e,s,o,i,n){const r=Math.sqrt((e.xEnd-e.xStart)*(e.xEnd-e.xStart)+(e.yEnd-e.yStart)*(e.yEnd-e.yStart));let l;l=o+r>=this._length?this._halfToWidth:this._halfFromWidth+(this._halfToWidth-this._halfFromWidth)*(o+r)/this._length,o+=r;const h=new a(e.xEnd,e.yEnd),c=new a(e.xEnd-e.xStart,e.yEnd-e.yStart);c.normalize();const p=new a(s.xEnd-s.xStart,s.yEnd-s.yStart);p.normalize();const x=c.x*p.y-c.y*p.x;0===x&&y().error(new t("mapview-bad-resource","Unable to process geometry"));const _=new a((p.x-c.x)/x,(p.y-c.y)/x),f=i.getPointCount(),d=n.getPointCount();c.leftPerpendicular(),p.leftPerpendicular();const m=c.x*p.x+c.y*p.y;if(m>.99){const t=new a((c.x+p.x)*l/2,(c.y+p.y)*l/2),e=t.clone();e.rotate(this._slopeC,this._slopeS),i.lineTo([h.x+e.x,h.y+e.y]);const s=t.clone();s.rotateReverse(this._slopeC,this._slopeS),n.lineTo([h.x-s.x,h.y-s.y])}else{if(x<0){const e=_.clone().scale(-l);e.rotateReverse(this._slopeC,this._slopeS);const s=n.getXY(d-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,e),i=a.sub(o,a.fromArray(s));if(c.x*i.y-c.y*i.x>0){const t=new a(-c.x*l,-c.y*l);t.rotateReverse(this._slopeC,this._slopeS);const e=new a(-p.x*l,-p.y*l);e.rotateReverse(this._slopeC,this._slopeS),n.lineTo([h.x+t.x,h.y+t.y]),n.lineTo([h.x,h.y]),n.lineTo([h.x+e.x,h.y+e.y])}else n.lineTo([h.x+e.x,h.y+e.y])}else{const e=_.clone().scale(l);e.rotate(this._slopeC,this._slopeS);const s=i.getXY(f-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,e),n=a.sub(o,a.fromArray(s));if(c.x*n.y-c.y*n.x>0){const t=c.clone().scale(l);t.rotate(this._slopeC,this._slopeS);const e=p.clone().scale(l);e.rotate(this._slopeC,this._slopeS),i.lineTo([h.x+t.x,h.y+t.y]),i.lineTo([h.x,h.y]),i.lineTo([h.x+e.x,h.y+e.y])}else i.lineTo([h.x+e.x,h.y+e.y])}const s=Math.acos(m);let o=1;if(l>.25){const t=2*Math.acos(1-.25/l);t<s&&(o=Math.round(s/t))}const r=Math.cos(s/o),g=Math.sin(s/o),u=c.clone();if(x<0){u.rotate(this._slopeC,this._slopeS);const s=i.getXY(f-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,u.clone().scale(this._lastWidth)),n=a.sub(o,a.fromArray(s)),r=c.x*n.y-c.y*n.x;if(!isNaN(this._lastTangent1.x)&&!isNaN(this._lastTangent1.y)&&r>0){const t=new a(e.xStart,e.yStart),s=this._lastTangent1.clone().scale(this._lastWidth);s.rotate(this._slopeC,this._slopeS);const o=c.clone().scale(this._lastWidth);o.rotate(this._slopeC,this._slopeS),i.lineTo([t.x+s.x,t.y+s.y]),i.lineTo([t.x,t.y]),i.lineTo([t.x+o.x,t.y+o.y])}}else{u.scale(-1).rotateReverse(this._slopeC,this._slopeS);const s=n.getXY(d-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,u.clone().scale(this._lastWidth)),i=a.sub(o,a.fromArray(s)),r=c.x*i.y-c.y*i.x;if(!isNaN(this._lastTangent1.x)&&!isNaN(this._lastTangent1.y)&&r>0){const t=new a(e.xStart,e.yStart),s=this._lastTangent1.clone().scale(-this._lastWidth);s.rotateReverse(this._slopeC,this._slopeS);const o=c.clone().scale(-this._lastWidth);o.rotateReverse(this._slopeC,this._slopeS),n.lineTo([t.x+s.x,t.y+s.y]),n.lineTo([t.x,t.y]),n.lineTo([t.x+o.x,t.y+o.y])}}u.scale(l);for(let t=0;t<=o;t++)x<0?(i.lineTo([h.x+u.x,h.y+u.y]),u.rotateReverse(r,g)):(n.lineTo([h.x+u.x,h.y+u.y]),u.rotate(r,g))}return this._lastTangent1.setCoords(c.x,c.y),this._lastWidth=l,o}}export{p as EffectTaperedPolygon};
5
+ import t from"../../../core/Error.js";import e from"../../../core/Logger.js";import{GeometryCursor as s}from"../../../geometry/GeometryCursor.js";import o from"../../../geometry/SpatialReference.js";import{closeRingsAndFixWinding as i}from"../../../geometry/support/coordsUtils.js";import{isPolygon as n,isPolyline as r}from"../../../geometry/support/jsonUtils.js";import l from"../../../geometry/support/PolylineBuilder.js";import{Point as a}from"../../../geometry/support/TileClipper.js";import{PathEffectCursor as h}from"../CIMCursor.js";import{SegmentCursor as c}from"../../../views/2d/engine/webgl/mesh/templates/segmentUtils.js";const y=()=>e.getLogger("esri.symbols.cim.effects.EffectTaperedPolygon");class x{static{this.instance=null}static local(){return null===x.instance&&(x.instance=new x),x.instance}execute(t,e,s,o,i){return new p(t,e,s,o,i)}}class p extends h{constructor(t,e,s,o,i){super(t,!1,!0),this._slopeS=0,this._slopeC=1,this._lastTangent1=new a(NaN,NaN),this._lastWidth=0,this._tileKey=null,this._halfFromWidth=Math.abs(void 0!==e.fromWidth?e.fromWidth:0)*s*.5,this._halfToWidth=Math.abs(void 0!==e.toWidth?e.toWidth:1)*s*.5,this._originalLength=(void 0!==e.length?e.length:0)*s,this._length=0,this._tileKey=o,this._geometryEngine=i}processPath(e){if(e.totalSize<=0)return null;if(this._halfFromWidth<=0&&this._halfToWidth<=0){const t=s.createEmptyOptimizedCIM("esriGeometryPolygon",!1,!1,e.yFactor);for(e.seekPathEnd();e.prevPoint();)t.pushXY(e.x,e.y);for(e.seekPathStart();e.nextPoint();)t.pushXY(e.x,e.y);return t}const a=[];e.seekPathStart();let h=0,x=0;for(;e.nextPoint();)a.push([e.x-h,e.y-x]),h=e.x,x=e.y;let p=this._geometryEngine?.simplify(o.WebMercator,{paths:[a]});p||null!=this._tileKey||(p={paths:[a]});const _=n(p)?p.rings:r(p)?p.paths:null;if(!_)return y().error(new t("mapview-bad-resource","Unable to process geometry")),null;const f=new l,d=new l;let m=0;for(const t of _){h=t[0][0],x=t[0][1];for(let e=1;e<t.length;e++){const s=h+t[e][0],o=x+t[e][1];m+=Math.sqrt((s-h)*(s-h)+(o-x)*(o-x)),h=s,x=o}}if(0===this._originalLength||this._originalLength>m){this._length=m;const t=(this._halfToWidth-this._halfFromWidth)/this._length;if(Math.abs(t)<1){const e=t*t;this._slopeC=Math.sqrt(1/(1+e)),this._slopeS=Math.sqrt(e/(1+e)),t<0&&(this._slopeS=-this._slopeS)}else this._slopeC=this._slopeS=.7071}else this._length=this._originalLength,this._slopeC=1,this._slopeS=0;let g=0;const u=[];for(const t of _){const e=c.create(t),s=c.create(t);this._setFromOffset(s,f,d);let o=s.next(),i=e;for(;o&&i;)g=this._setOffset(i,o,g,f,d),i=e.next(),o=s.next();i=e,i&&this._setToOffset(i,g,f,d);const n=f.getGeometry(),r=d.getGeometry(),l=[];for(const t of n)l.push(...t);for(let t=r.length-1;t>=0;t--){const e=r[t];for(let t=e.length-1;t>=0;t--)l.push(e[t])}u.push(l)}const S={rings:u};i(S);let T=this._geometryEngine?.simplify(o.WebMercator,S);if(!T){if(null!=this._tileKey)return null;T=S}return s.fromJSONCIM(T)}_setFromOffset(t,e,s){const o=this._halfFromWidth,i=new a(t.xEnd-t.xStart,t.yEnd-t.yStart);i.normalize(),i.scale(o),e.beginPath([t.xStart-i.y,t.yStart+i.x]),s.beginPath([t.xStart+i.y,t.yStart-i.x])}_setToOffset(t,e,s,o){let i;i=(e+=Math.sqrt((t.xEnd-t.xStart)*(t.xEnd-t.xStart)+(t.yEnd-t.yStart)*(t.yEnd-t.yStart)))>=this._length?this._halfToWidth:this._halfFromWidth+(this._halfToWidth-this._halfFromWidth)*e/this._length;const n=new a(t.xEnd-t.xStart,t.yEnd-t.yStart);n.normalize(),n.scale(i),s.lineTo([t.xEnd-n.y,t.yEnd+n.x]),o.lineTo([t.xEnd+n.y,t.yEnd-n.x])}_setOffset(e,s,o,i,n){const r=Math.sqrt((e.xEnd-e.xStart)*(e.xEnd-e.xStart)+(e.yEnd-e.yStart)*(e.yEnd-e.yStart));let l;l=o+r>=this._length?this._halfToWidth:this._halfFromWidth+(this._halfToWidth-this._halfFromWidth)*(o+r)/this._length,o+=r;const h=new a(e.xEnd,e.yEnd),c=new a(e.xEnd-e.xStart,e.yEnd-e.yStart);c.normalize();const x=new a(s.xEnd-s.xStart,s.yEnd-s.yStart);x.normalize();const p=c.x*x.y-c.y*x.x;let _;_=0===Math.abs(p)?new a(x.x,x.y):new a((x.x-c.x)/p,(x.y-c.y)/p);const f=i.getPointCount(),d=n.getPointCount();c.leftPerpendicular(),x.leftPerpendicular();const m=c.x*x.x+c.y*x.y;if(m>.99){const t=new a((c.x+x.x)*l/2,(c.y+x.y)*l/2),e=t.clone();e.rotate(this._slopeC,this._slopeS),i.lineTo([h.x+e.x,h.y+e.y]);const s=t.clone();s.rotateReverse(this._slopeC,this._slopeS),n.lineTo([h.x-s.x,h.y-s.y])}else{if(p<0){const e=_.clone().scale(-l);e.rotateReverse(this._slopeC,this._slopeS);const s=n.getXY(d-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,e),i=a.sub(o,a.fromArray(s));if(c.x*i.y-c.y*i.x>0){const t=new a(-c.x*l,-c.y*l);t.rotateReverse(this._slopeC,this._slopeS);const e=new a(-x.x*l,-x.y*l);e.rotateReverse(this._slopeC,this._slopeS),n.lineTo([h.x+t.x,h.y+t.y]),n.lineTo([h.x,h.y]),n.lineTo([h.x+e.x,h.y+e.y])}else n.lineTo([h.x+e.x,h.y+e.y])}else{const e=_.clone().scale(l);e.rotate(this._slopeC,this._slopeS);const s=i.getXY(f-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,e),n=a.sub(o,a.fromArray(s));if(c.x*n.y-c.y*n.x>0){const t=c.clone().scale(l);t.rotate(this._slopeC,this._slopeS);const e=x.clone().scale(l);e.rotate(this._slopeC,this._slopeS),i.lineTo([h.x+t.x,h.y+t.y]),i.lineTo([h.x,h.y]),i.lineTo([h.x+e.x,h.y+e.y])}else i.lineTo([h.x+e.x,h.y+e.y])}const s=Math.acos(m);let o=1;if(l>.25){const t=2*Math.acos(1-.25/l);t<s&&(o=Math.round(s/t))}const r=Math.cos(s/o),g=Math.sin(s/o),u=c.clone();if(p<0){u.rotate(this._slopeC,this._slopeS);const s=i.getXY(f-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,u.clone().scale(this._lastWidth)),n=a.sub(o,a.fromArray(s)),r=c.x*n.y-c.y*n.x;if(!isNaN(this._lastTangent1.x)&&!isNaN(this._lastTangent1.y)&&r>0){const t=new a(e.xStart,e.yStart),s=this._lastTangent1.clone().scale(this._lastWidth);s.rotate(this._slopeC,this._slopeS);const o=c.clone().scale(this._lastWidth);o.rotate(this._slopeC,this._slopeS),i.lineTo([t.x+s.x,t.y+s.y]),i.lineTo([t.x,t.y]),i.lineTo([t.x+o.x,t.y+o.y])}}else{u.scale(-1).rotateReverse(this._slopeC,this._slopeS);const s=n.getXY(d-1);s||y().error(new t("mapview-bad-resource","Unable to process geometry, index out of scope"));const o=a.add(h,u.clone().scale(this._lastWidth)),i=a.sub(o,a.fromArray(s)),r=c.x*i.y-c.y*i.x;if(!isNaN(this._lastTangent1.x)&&!isNaN(this._lastTangent1.y)&&r>0){const t=new a(e.xStart,e.yStart),s=this._lastTangent1.clone().scale(-this._lastWidth);s.rotateReverse(this._slopeC,this._slopeS);const o=c.clone().scale(-this._lastWidth);o.rotateReverse(this._slopeC,this._slopeS),n.lineTo([t.x+s.x,t.y+s.y]),n.lineTo([t.x,t.y]),n.lineTo([t.x+o.x,t.y+o.y])}}u.scale(l);for(let t=0;t<=o;t++)p<0?(i.lineTo([h.x+u.x,h.y+u.y]),u.rotateReverse(r,g)):(n.lineTo([h.x+u.x,h.y+u.y]),u.rotate(r,g))}return this._lastTangent1.setCoords(c.x,c.y),this._lastWidth=l,o}}export{x as EffectTaperedPolygon};