@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.48 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{getLocale as e,getLocaleParts as n,beforeLocaleChange as t}from"./locale.js";const u={ar:"ar-u-nu-latn",bs:"sr-Latn-CS",nn:"no-NN"};let r=new WeakMap,a={};function l(t){const l=t||a;if(!r.has(l)){const a=e(),i=n(a)?.language,o=i&&u[i]||a;r.set(l,new Intl.NumberFormat(o,t))}return r.get(l)}function i(e={}){const n={};return null!=e.digitSeparator&&(n.useGrouping=e.digitSeparator),null!=e.places&&(n.minimumFractionDigits=n.maximumFractionDigits=e.places),n}function o(e,n){return Object.is(e,-0)&&(e=0),l(n).format(e)}function p(n,t=e()){if(!n)return null;let u=c.get(t);if(!u){const e=l().formatToParts(12345.6),n=[...l({useGrouping:!1}).format(9876543210)].reverse(),r=new Map(n.map(((e,n)=>[e,n]))),a=new RegExp(`[${e.find((e=>"group"===e.type))?.value}]`,"g"),i=new RegExp(`[${e.find((e=>"decimal"===e.type))?.value}]`),o=new RegExp(`[${n.join("")}]`,"g"),p=/[\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069\u061C]/g,s=/[-\u2212\u2013\u2014\u2015]/g;u=e=>{if(""===(e=e.trim().replaceAll(a,"").replace(i,".").replace(o,(e=>String(r.get(e)))).replaceAll(p,"").replaceAll(s,"-")))return null;const n=Number(e);return isNaN(n)?null:n},c.set(t,u)}return u(n)}t((()=>{r=new WeakMap,a={}}));const c=new Map;export{i as convertNumberFormatToIntlOptions,o as formatNumber,l as getFormatter,p as parseNumber};