UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 1.68 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import"../../intl.js";import{formatNumber as t}from"../../intl/number.js";const n=/^-?(\d+)(\.(\d+))?$/i;function e(t,n){return t-n}function r(t,n){let e,r;return e=Number(t.toFixed(n)),e<t?r=e+1/10**n:(r=e,e-=1/10**n),e=Number(e.toFixed(n)),r=Number(r.toFixed(n)),[e,r]}function o(t,n,e,r,o){const i=l(t,n,e,r),u=null==i.previous||i.previous<=o,s=null==i.next||i.next<=o;return u&&s||i.previous+i.next<=2*o}function i(t){const e=String(t),r=e.match(n);if(r?.[1])return{integer:r[1].split("").length,fractional:r[3]?r[3].split("").length:0};if(e.toLowerCase().includes("e")){const t=e.split("e"),n=t[0],r=t[1];if(n&&r){const t=Number(n);let e=Number(r);const o=e>0;o||(e=Math.abs(e));const l=i(t);return o?(l.integer+=e,e>l.fractional?l.fractional=0:l.fractional-=e):(l.fractional+=e,e>l.integer?l.integer=1:l.integer-=e),l}}return{integer:0,fractional:0}}function l(t,n,e,r){const o={previous:null,next:null};if(null!=e){const r=t-e,i=n-e-r;o.previous=Math.floor(Math.abs(100*i/r))}if(null!=r){const e=r-t,i=r-n-e;o.next=Math.floor(Math.abs(100*i/e))}return o}function u(t,n={}){const l=t.slice(),{tolerance:u=2,strictBounds:s=!1,indexes:c=l.map(((t,n)=>n))}=n;c.sort(e);for(let e=0;e<c.length;e++){const t=c[e],n=l[t],a=0===t?null:l[t-1],f=t===l.length-1?null:l[t+1],m=i(n).fractional;if(m){let i,c=0,g=!1;for(;c<=m&&!g;){const t=r(n,c);i=s&&0===e?t[1]:t[0],g=o(n,i,a,f,u),c++}g&&(l[t]=i)}}return l}const s={maximumFractionDigits:20};function c(n){return t(n,s)}export{c as format,i as numDigits,l as percentChange,u as round};