@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.64 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{clamp as e}from"../../../../core/mathUtils.js";import{meterIn as t}from"../../../../renderers/support/lengthUtils.js";import{TransformationType as n}from"../../../../renderers/visualVariables/support/sizeVariableUtils.js";const r=Math.PI;function i(e,t){switch(t.transformationType){case n.Additive:return s(e,t);case n.Constant:return o(t,e);case n.ClampedLinear:return u(e,t);case n.Proportional:return l(e,t);case n.Stops:return c(e,t);case n.RealWorldSize:return m(e,t);case n.Identity:return e;case n.Unknown:return null}}function a(e,t){return"number"==typeof e?e:i(t,e)}function s(e,t){return e+(a(t.minSize,e)||t.minDataValue)}function o(e,t){const n=e.stops;let r=n?.length&&n[0].size;return null==r&&(r=e.minSize),a(r,t)}function u(e,t){const n=t.minDataValue,r=t.maxDataValue,i=(e-n)/(r-n),s=a(t.minSize,e),o=a(t.maxSize,e);return e<=n?s:e>=r?o:s+i*(o-s)}function l(t,n){const r=t/n.minDataValue,i=a(n.minSize,t),s=a(n.maxSize,t);let o=null;return o=r*i,e(o,i,s)}function c(e,t){const[n,r,i]=p(e,t.cache.ipData);if(n===r)return a(t.stops[n].size,e);{const s=a(t.stops[n].size,e);return s+(a(t.stops[r].size,e)-s)*i}}function m(n,i){const s=t[i.valueUnit],o=a(i.minSize,n),u=a(i.maxSize,n),{valueRepresentation:l}=i;let c=null;return c="area"===l?2*Math.sqrt(n/r)/s:"radius"===l||"distance"===l?2*n/s:n/s,e(c,o,u)}function p(e,t){if(!t)return;let n=0,r=t.length-1;return t.some(((t,i)=>e<t?(r=i,!0):(n=i,!1))),[n,r,(e-t[n])/(t[r]-t[n])]}export{i as getSizeForValueSimple};