ag-charts-core
Version:
Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue
2 lines (1 loc) • 23.4 kB
JavaScript
;var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var r in t)__defProp(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of __getOwnPropNames(t))!__hasOwnProp.call(e,i)&&i!==r&&__defProp(e,i,{get:()=>t[i],enumerable:!(n=__getOwnPropDesc(t,i))||n.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),main_exports={};__export(main_exports,{EventEmitter:()=>EventEmitter,Logger:()=>logger_exports,ModuleRegistry:()=>moduleRegistry_exports,ModuleType:()=>ModuleType,ValidationError:()=>ValidationError,and:()=>and,array:()=>array,arrayLength:()=>arrayLength,arrayOf:()=>arrayOf,arrayOfDefs:()=>arrayOfDefs,arraysEqual:()=>arraysEqual,attachDescription:()=>attachDescription,boolean:()=>boolean,callback:()=>callback,circularSliceArray:()=>circularSliceArray,clamp:()=>clamp,color:()=>color,colorUnion:()=>colorUnion,constant:()=>constant,countFractionDigits:()=>countFractionDigits,countLines:()=>countLines,createElement:()=>createElement,createNumberFormatter:()=>createNumberFormatter,createSvgElement:()=>createSvgElement,date:()=>date,debounce:()=>debounce,defined:()=>defined,diffArrays:()=>diffArrays,downloadUrl:()=>downloadUrl,entries:()=>entries,fillGradientDefaults:()=>fillGradientDefaults,fillOptionsDef:()=>fillOptionsDef,fillPatternDefaults:()=>fillPatternDefaults,findMaxIndex:()=>findMaxIndex,findMaxValue:()=>findMaxValue,findMinIndex:()=>findMinIndex,findMinValue:()=>findMinValue,first:()=>first,fontOptionsDef:()=>fontOptionsDef,getDocument:()=>getDocument,getWindow:()=>getWindow,gradientColorStops:()=>gradientColorStops,gradientStrict:()=>gradientStrict,greaterThan:()=>greaterThan,groupBy:()=>groupBy,inRange:()=>inRange,instanceOf:()=>instanceOf,isArray:()=>isArray,isBoolean:()=>isBoolean,isColor:()=>isColor,isDate:()=>isDate,isDefined:()=>isDefined,isEnumKey:()=>isEnumKey,isEnumValue:()=>isEnumValue,isFiniteNumber:()=>isFiniteNumber,isFunction:()=>isFunction,isHtmlElement:()=>isHtmlElement,isInteger:()=>isInteger,isNegative:()=>isNegative,isNumber:()=>isNumber,isNumberEqual:()=>isNumberEqual,isObject:()=>isObject,isObjectLike:()=>isObjectLike,isPlainObject:()=>isPlainObject,isRegExp:()=>isRegExp,isString:()=>isString,isSymbol:()=>isSymbol,isValidDate:()=>isValidDate,isValidNumberFormat:()=>isValidNumberFormat,iterate:()=>iterate,joinFormatted:()=>joinFormatted,lessThan:()=>lessThan,levenshteinDistance:()=>levenshteinDistance,lineDashOptionsDef:()=>lineDashOptionsDef,modulus:()=>modulus,number:()=>number,numberMin:()=>numberMin,numberRange:()=>numberRange,object:()=>object,optionsDefs:()=>optionsDefs,or:()=>or,parseColor:()=>parseColor,parseNumberFormat:()=>parseNumberFormat,partialDefs:()=>partialDefs,positiveNumber:()=>positiveNumber,positiveNumberNonZero:()=>positiveNumberNonZero,ratio:()=>ratio,required:()=>required,roundTo:()=>roundTo,setDocument:()=>setDocument,setWindow:()=>setWindow,sortBasedOnArray:()=>sortBasedOnArray,string:()=>string,stringifyValue:()=>stringifyValue,strokeOptionsDef:()=>strokeOptionsDef,throttle:()=>throttle,toArray:()=>toArray,toIterable:()=>toIterable,typeUnion:()=>typeUnion,union:()=>union,unique:()=>unique,validate:()=>validate}),module.exports=__toCommonJS(main_exports);var logger_exports={};__export(logger_exports,{error:()=>error,errorOnce:()=>errorOnce,log:()=>log,logGroup:()=>logGroup,reset:()=>reset,table:()=>table,warn:()=>warn,warnOnce:()=>warnOnce});var doOnceCache=new Set;function log(...e){console.log(...e)}function warn(e,...t){console.warn(`AG Charts - ${e}`,...t)}function error(e,...t){typeof e=="object"?console.error("AG Charts error",e,...t):console.error(`AG Charts - ${e}`,...t)}function table(...e){console.table(...e)}function warnOnce(e,...t){const r=`Logger.warn: ${e}`;doOnceCache.has(r)||(warn(e,...t),doOnceCache.add(r))}function errorOnce(e,...t){const r=`Logger.error: ${e}`;doOnceCache.has(r)||(error(e,...t),doOnceCache.add(r))}function reset(){doOnceCache.clear()}function logGroup(e,t){console.groupCollapsed(e);try{return t()}finally{console.groupEnd()}}var moduleRegistry_exports={};__export(moduleRegistry_exports,{detectChartDefinition:()=>detectChartDefinition,getAxisModule:()=>getAxisModule,getSeriesModule:()=>getSeriesModule,hasModule:()=>hasModule,listModulesByType:()=>listModulesByType,register:()=>register,registerMany:()=>registerMany,reset:()=>reset2});var ModuleType=(e=>(e.Axis="axis",e.Chart="chart",e.Preset="preset",e.Plugin="plugin",e.Series="series",e))(ModuleType||{}),registeredModules=new Map;function register(e){const t=registeredModules.get(e.name);if(t&&(t.enterprise||!e.enterprise))throw new Error(`AG Charts - Module '${e.name}' already registered`);registeredModules.set(e.name,e)}function registerMany(e){for(const t of e)register(t)}function reset2(){registeredModules.clear()}function hasModule(e){return registeredModules.has(e)}function*listModulesByType(e){for(const t of registeredModules.values())t.type===e&&(yield t)}function detectChartDefinition(e){for(const t of registeredModules.values())if(isChartModule(t)&&t.detect(e))return t;throw new Error("AG Charts - Unknown chart type; Check options are correctly structured and series types are specified")}function getSeriesModule(e){const t=registeredModules.get(e);if(isSeriesModule(t))return t}function getAxisModule(e){const t=registeredModules.get(e);if(isAxisModule(t))return t}function isChartModule(e){return e?.type==="chart"}function isAxisModule(e){return e?.type==="axis"}function isSeriesModule(e){return e?.type==="series"}var EventEmitter=class{constructor(){this.events=new Map}on(e,t){return this.events.has(e)||this.events.set(e,new Set),this.events.get(e)?.add(t),()=>this.off(e,t)}off(e,t){const r=this.events.get(e);r&&(r.delete(t),r.size===0&&this.events.delete(e))}emit(e,t){this.events.get(e)?.forEach(r=>r(t))}clear(e){e?this.events.delete(e):this.events.clear()}};function joinFormatted(e,t="and",r=String,n=1/0){if(e.length===1)return r(e[0]);e=e.map(r);const i=e.pop();if(e.length>=n){const o=e.length-(n-1);return`${e.slice(0,n-1).join(", ")}, and ${o} more ${t} ${i}`}return`${e.join(", ")} ${t} ${i}`}function stringifyValue(e,t=1/0){if(typeof e=="number"){if(isNaN(e))return"NaN";if(e===1/0)return"Infinity";if(e===-1/0)return"-Infinity"}const r=JSON.stringify(e)??typeof e;return r.length>t?`${r.slice(0,t)}... (+${r.length-t} characters)`:r}function countLines(e){let t=1;for(let r=0;r<e.length;r++)e.charCodeAt(r)===10&&t++;return t}function levenshteinDistance(e,t){if(e===t)return 0;const[r,n]=e.length<t.length?[e,t]:[t,e],i=r.length,o=n.length;let s=new Array(i+1).fill(0).map((l,u)=>u),a=new Array(i+1);for(let l=1;l<=o;l++){a[0]=l;for(let u=1;u<=i;u++){const c=n[l-1]===r[u-1]?0:1;a[u]=Math.min(s[u]+1,a[u-1]+1,s[u-1]+c)}[s,a]=[a,s]}return s[i]}var verifiedGlobals={};typeof window<"u"?verifiedGlobals.window=window:typeof global<"u"&&(verifiedGlobals.window=global.window),typeof document<"u"?verifiedGlobals.document=document:typeof global<"u"&&(verifiedGlobals.document=global.document);function getDocument(e){return e?verifiedGlobals.document?.[e]:verifiedGlobals.document}function getWindow(e){return e?verifiedGlobals.window?.[e]:verifiedGlobals.window}function setDocument(e){verifiedGlobals.document=e}function setWindow(e){verifiedGlobals.window=e}function createElement(e,t,r){const n=getDocument().createElement(e);if(typeof t=="object"&&(r=t,t=void 0),t)for(const i of t.split(" "))n.classList.add(i);return r&&Object.assign(n.style,r),n}function createSvgElement(e){return getDocument().createElementNS("http://www.w3.org/2000/svg",e)}function downloadUrl(e,t){const r=getDocument("body"),n=createElement("a",{display:"none"});n.href=e,n.download=t,r.appendChild(n),n.click(),setTimeout(()=>r.removeChild(n))}function parseColor(e){const t=getWindow("Option"),{style:r}=new t;return r.color=e,r.color||null}function isDefined(e){return e!=null}function isArray(e){return Array.isArray(e)}function isBoolean(e){return typeof e=="boolean"}function isDate(e){return e instanceof Date}function isValidDate(e){return isDate(e)&&!isNaN(Number(e))}function isRegExp(e){return e instanceof RegExp}function isFunction(e){return typeof e=="function"}function isObject(e){return typeof e=="object"&&e!==null&&!isArray(e)}function isObjectLike(e){return isArray(e)||isPlainObject(e)}function isPlainObject(e){return typeof e=="object"&&e!==null&&e.constructor?.name==="Object"}function isString(e){return typeof e=="string"}function isNumber(e){return typeof e=="number"}function isFiniteNumber(e){return Number.isFinite(e)}function isHtmlElement(e){return typeof window<"u"&&e instanceof HTMLElement}function isEnumKey(e,t){return isString(t)&&Object.keys(e).includes(t)}function isEnumValue(e,t){return Object.values(e).includes(t)}function isSymbol(e){return typeof e=="symbol"}function isColor(e){return isString(e)&&parseColor(e)!=null}var descriptionSymbol=Symbol("description"),requiredSymbol=Symbol("required"),ValidationError=class{constructor(e,t,r,n){this.message=e,this.path=t,this.required=r,this.unknown=n}toString(){return this.message}};function validate(e,t,r=""){if(!isObject(e)){const l=validateMessage(r,e,"an object",!0);return{valid:null,errors:[new ValidationError(l,r,!0)]}}const n=[],i=new Set(Object.keys(e)),o=[],s={};function a(l){return isArray(t)?`${r}[${l}]`:r?`${r}.${l}`:l}for(const l of Object.keys(t)){const u=t[l],c=e[l],p=u[requiredSymbol];if(i.delete(l),typeof c>"u"&&(n.push(l),!p))continue;const g=a(l);if(isFunction(u)){const d={options:e,path:g};if(u(c,d))s[l]=d.result?.valid??c;else if(!d.result){const h=validateMessage(g,c,u,p);o.push(new ValidationError(h,r,p))}d.result&&o.push(...d.result.errors)}else{const d=validate(c,u,g);d.valid!=null&&(s[l]=d.valid),o.push(...d.errors)}}for(const l of i){if(typeof e[l]>"u")continue;const c=unknownMessage(l,a(l),n);o.push(new ValidationError(c,r,void 0,!0))}return{valid:s,errors:o}}function validateMessage(e,t,r,n){const i=isString(r)?r:r[descriptionSymbol],o=i?`; expecting ${i}`:"",s=e?`Option \`${e}\``:"Value";return n&&t==null?`${s} is required and has not been provided${o}, ignoring.`:`${s} cannot be set to \`${stringifyValue(t,50)}\`${o}, ignoring.`}function unknownMessage(e,t,r){const n=findSuggestion(e,r),i=n?`; Did you mean \`${n}\`? Ignoring.`:", ignoring.";return`Unknown option \`${t}\`${i}`}function findSuggestion(e,t,r=2){let n=1/0;const i=e.toLowerCase();return t.reduce((o,s)=>{const a=levenshteinDistance(i,s.toLowerCase());return n>a&&a<=r?(n=a,s):o},null)}function attachDescription(e,t){return Object.assign(isFunction(e)?(r,n)=>e(r,n):{...e},{[descriptionSymbol]:t})}function required(e){return Object.assign(isFunction(e)?(t,r)=>e(t,r):optionsDefs(e),{[requiredSymbol]:!0,[descriptionSymbol]:e[descriptionSymbol]})}var optionsDefs=(e,t="an object")=>attachDescription((r,n)=>(n.result=validate(r,e,n.path),!n.result.errors.some(i=>i.required&&i.path===n.path)),t),partialDefs=(e,t="an object")=>attachDescription((r,n)=>(n.result=validate(r,e,n.path),n.result.errors=n.result.errors.filter(i=>!i.unknown),!n.result.errors.some(i=>i.required&&i.path===n.path)),t),and=(...e)=>attachDescription((t,r)=>e.every(n=>{const i=n(t,r);return r.result&&!i&&delete r.result,i}),e.map(t=>t[descriptionSymbol]).filter(Boolean).join(" and ")),or=(...e)=>attachDescription((t,r)=>e.some(n=>{const i=n(t,r);return r.result&&!i&&delete r.result,i}),e.map(t=>t[descriptionSymbol]).filter(Boolean).join(" or ")),isComparable=e=>isFiniteNumber(e)||isValidDate(e),isValidDateValue=e=>isDate(e)||(isFiniteNumber(e)||isString(e))&&isValidDate(new Date(e)),array=attachDescription(isArray,"an array"),boolean=attachDescription(isBoolean,"a boolean"),callback=attachDescription(isFunction,"a function"),color=attachDescription(isColor,"a color string"),date=attachDescription(isValidDateValue,"a date"),defined=attachDescription(isDefined,"a defined value"),number=attachDescription(isFiniteNumber,"a number"),object=attachDescription(isObject,"an object"),string=attachDescription(isString,"a string"),arrayLength=(e,t=1/0)=>{let r;return t===1/0?r=`an array of at least ${e} items`:e===t?r=`an array of exactly ${e} items`:e===0?r=`an array of no more than ${t} items`:r=`an array of at least ${e} and no more than ${t} items`,attachDescription(n=>isArray(n)&&n.length>=e&&n.length<=t,r)},numberMin=(e,t=!0)=>attachDescription(r=>isFiniteNumber(r)&&(r>e||t&&r===e),`a number greater than ${t?"or equal to ":""}${e}`),numberRange=(e,t)=>attachDescription(r=>isFiniteNumber(r)&&r>=e&&r<=t,`a number between ${e} and ${t} inclusive`),positiveNumber=numberMin(0),positiveNumberNonZero=numberMin(0,!1),ratio=numberRange(0,1),lessThan=e=>attachDescription((t,{options:r})=>!isComparable(t)||!isComparable(r[e])||t<r[e],`the value to be less than \`${e}\``),greaterThan=e=>attachDescription((t,{options:r})=>!isComparable(t)||!isComparable(r[e])||t>r[e],`the value to be greater than \`${e}\``);function union(...e){isObject(e[0])&&(e=Object.values(e[0]));const t=joinFormatted(e,"or",r=>`'${r}'`);return attachDescription(r=>e.includes(r),`a keyword such as ${t}`)}var constant=e=>attachDescription(t=>e===t,`the value ${JSON.stringify(e)}`),instanceOf=(e,t)=>attachDescription(r=>r instanceof e,t??`an instance of ${e.name}`),arrayOf=(e,t)=>attachDescription((r,n)=>isArray(r)&&r.every(i=>{const o=e(i,n);return delete n.result,o}),t??`${e[descriptionSymbol]} array`),arrayOfDefs=(e,t="an object array")=>attachDescription((r,n)=>{if(!isArray(r))return!1;const i=[],o=[];for(let s=0;s<r.length;s++){const a=`${n.path}[${s}]`,l=validate(r[s],e,a);o.push(...l.errors),l.errors.some(u=>u.required&&u.path===a)||i.push(l.valid)}return n.result={valid:i,errors:o},!0},t),typeUnion=(e,t="an object")=>{const r=partialDefs({type:required(union(...Object.keys(e)))});return attachDescription((n,i)=>{if(r(n,i)){const o=n.type,s={type:required(constant(o)),...e[o]},a=optionsDefs(s)(n,i);if(i.result)for(const l of i.result.errors)l.message+=` (type="${o}")`;return a}return!1},t)},colorStop=optionsDefs({color,stop:ratio},""),colorStopsOrderValidator=attachDescription(e=>{let t=-1/0;for(const r of e)if(r?.stop!=null){if(r.stop<t)return!1;t=r.stop}return!0},"color stops to be defined in ascending order"),gradientColorStops=and(arrayLength(2),and(arrayOf(colorStop),colorStopsOrderValidator)),gradientBounds=union("axis","item","series"),gradientStrict=typeUnion({gradient:{gradient:union("linear","radial","conic"),bounds:gradientBounds,colorStops:required(gradientColorStops),rotation:number,reverse:boolean}},"a gradient object with color stops"),strokeOptionsDef={stroke:color,strokeWidth:positiveNumber,strokeOpacity:ratio},fillGradientDefaults=optionsDefs({type:required(constant("gradient")),gradient:required(union("linear","radial","conic")),bounds:required(gradientBounds),colorStops:required(or(gradientColorStops,and(arrayLength(2),arrayOf(color)))),rotation:required(number),reverse:required(boolean)}),fillPatternDefaults=optionsDefs({type:required(constant("pattern")),pattern:required(union("vertical-lines","horizontal-lines","forward-slanted-lines","backward-slanted-lines","circles","squares","triangles","diamonds","stars","hearts","crosses")),width:required(positiveNumber),height:required(positiveNumber),fill:required(color),fillOpacity:required(ratio),backgroundFill:required(color),backgroundFillOpacity:required(ratio),padding:required(positiveNumber),rotation:required(number),stroke:required(color),strokeWidth:required(positiveNumber),strokeOpacity:required(ratio)}),gradientUndocumentedOpts={gradient:union("linear","radial","conic"),bounds:gradientBounds,reverse:boolean},patternUndocumentedOpts={rotation:number,padding:positiveNumber},colorObject=typeUnion({gradient:{...gradientUndocumentedOpts,colorStops:gradientColorStops,rotation:number},pattern:{...patternUndocumentedOpts,pattern:union("vertical-lines","horizontal-lines","forward-slanted-lines","backward-slanted-lines","circles","squares","triangles","diamonds","stars","hearts","crosses"),width:positiveNumber,height:positiveNumber,fill:color,fillOpacity:ratio,backgroundFill:color,backgroundFillOpacity:ratio,...strokeOptionsDef}},"a color object"),colorUnion=or(color,colorObject),fillOptionsDef={fill:colorUnion,fillOpacity:ratio};fillOptionsDef.fillGradientDefaults=fillGradientDefaults,fillOptionsDef.fillPatternDefaults=fillPatternDefaults;var lineDashOptionsDef={lineDash:arrayOf(positiveNumber),lineDashOffset:number},fontOptionsDef={color,fontFamily:string,fontSize:positiveNumber,fontStyle:union("normal","italic","oblique"),fontWeight:or(positiveNumber,union("normal","bold","bolder","lighter"))};function toArray(e){return typeof e>"u"?[]:Array.isArray(e)?e:[e]}function unique(e){return Array.from(new Set(e))}function groupBy(e,t){return e.reduce((r,n)=>{const i=t(n);return r[i]??(r[i]=[]),r[i].push(n),r},{})}function arraysEqual(e,t){if(e==null||t==null||e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(Array.isArray(e[r])&&Array.isArray(t[r])){if(!arraysEqual(e[r],t[r]))return!1}else if(e[r]!==t[r])return!1;return!0}function circularSliceArray(e,t,r=0){if(e.length===0)return[];const n=[];for(let i=0;i<t;i++)n.push(e.at((i+r)%e.length));return n}function sortBasedOnArray(e,t){const r=new Map;return t.forEach((n,i)=>{r.set(n,i)}),e.sort((n,i)=>{const o=r.get(n)??1/0,s=r.get(i)??1/0;return o-s})}function findMaxIndex(e,t,r){if(e>t)return;let n;for(;t>=e;){const i=Math.floor((t+e)/2);r(i)?(n=i,e=i+1):t=i-1}return n}function findMinIndex(e,t,r){if(e>t)return;let n;for(;t>=e;){const i=Math.floor((t+e)/2);r(i)?(n=i,t=i-1):e=i+1}return n}function findMaxValue(e,t,r){if(e>t)return;let n;for(;t>=e;){const i=Math.floor((t+e)/2),o=r(i);o==null?t=i-1:(n=o,e=i+1)}return n}function findMinValue(e,t,r){if(e>t)return;let n;for(;t>=e;){const i=Math.floor((t+e)/2),o=r(i);o==null?e=i+1:(n=o,t=i-1)}return n}function diffArrays(e,t){const r=Math.max(e.length,t.length),n=new Set,i=new Set;for(let o=0;o<r;o++){const s=e[o],a=t[o];s!==a&&(i.has(a)?i.delete(a):a&&n.add(a),n.has(s)?n.delete(s):s&&i.add(s))}return{changed:n.size>0||i.size>0,added:n,removed:i}}function debounce(e,t=0,r){const{leading:n=!1,trailing:i=!0,maxWait:o=1/0}=r??{};let s,a;if(o<t)throw new Error("Value of maxWait cannot be lower than waitMs.");function l(...u){if(n&&!a){a=Date.now(),s=setTimeout(()=>a=null,t),e(...u);return}let c=t;if(o!==1/0&&a){const p=Date.now()-a;t>o-p&&(c=o-p)}clearTimeout(s),a??(a=Date.now()),s=setTimeout(()=>{a=null,i&&e(...u)},c)}return Object.assign(l,{cancel(){clearTimeout(s),a=null}})}function throttle(e,t,r){const{leading:n=!0,trailing:i=!0}=r??{};let o,s,a=!1;function l(){i&&s?(o=setTimeout(l,t),e(...s)):a=!1,s=null}function u(...c){a?s=c:(a=!0,o=setTimeout(l,t),n?e(...c):s=c)}return Object.assign(u,{cancel(){clearTimeout(o),a=!1,s=null}})}function*iterate(...e){for(const t of e)yield*t}function toIterable(e){return e!=null&&typeof e=="object"&&Symbol.iterator in e?e:[e]}function first(e){for(const t of e)return t;throw new Error("AG Charts - no first() value found")}function*entries(e){const t=[void 0,void 0];for(const r of Object.keys(e))t[0]=r,t[1]=e[r],yield t}function clamp(e,t,r){return Math.min(r,Math.max(e,t))}function inRange(e,t,r=1e-10){return e>=t[0]-r&&e<=t[1]+r}function isNumberEqual(e,t,r=1e-10){return e===t||Math.abs(e-t)<r}function isNegative(e){return Math.sign(e)===-1||Object.is(e,-0)}function isInteger(e){return e%1===0}function roundTo(e,t=2){const r=10**t;return Math.round(e*r)/r}function modulus(e,t){return Math.floor(e%t+(e<0?Math.abs(t):0))}function countFractionDigits(e){if(Math.floor(e)===e)return 0;let t=String(e),r=0;if(e<1e-6||e>=1e21){let i;[t,i]=t.split("e"),i!=null&&(r=Number(i))}const n=t.split(".")[1]?.length??0;return Math.max(n-r,0)}var formatRegEx=/^(?:(.)?([<>=^]))?([+\-( ])?([$€£¥₣₹#])?(0)?(\d+)?(,)?(?:\.(\d+))?(~)?([%a-z])?$/i,surroundedRegEx=/^((?:[^#]|#[^{])*)#{([^}]+)}(.*)$/;function isValidNumberFormat(e){if(!isString(e))return!1;const t=surroundedRegEx.exec(e);return formatRegEx.test(t?t[2]:e)}function parseNumberFormat(e){let t,r;const n=surroundedRegEx.exec(e);n&&([,t,e,r]=n);const i=formatRegEx.exec(e);if(!i)throw new Error(`The number formatter is invalid: ${e}`);const[,o,s,a,l,u,c,p,g,d,h]=i;return{fill:o,align:s,sign:a,symbol:l,zero:u,width:parseInt(c),comma:p,precision:parseInt(g),trim:!!d,type:h,prefix:t,suffix:r}}function createNumberFormatter(e){const t=typeof e=="string"?parseNumberFormat(e):e,{fill:r,align:n,sign:i="-",symbol:o,zero:s,width:a,comma:l,type:u,prefix:c="",suffix:p="",precision:g}=t;let{trim:d}=t;const h=g==null||isNaN(g);let y;if(!u)y=decimalTypes.g,d=!0;else if(u in decimalTypes&&u in integerTypes)y=h?integerTypes[u]:decimalTypes[u];else if(u in decimalTypes)y=decimalTypes[u];else if(u in integerTypes)y=integerTypes[u];else throw new Error(`The number formatter type is invalid: ${u}`);let b;return h?b=u?6:12:b=g,m=>{let f=y(m,b);return d&&(f=removeTrailingZeros(f)),l&&(f=insertSeparator(f,l)),f=addSign(m,f,i),o&&o!=="#"&&(f=`${o}${f}`),o==="#"&&u==="x"&&(f=`0x${f}`),u==="s"&&(f=`${f}${getSIPrefix(m)}`),(u==="%"||u==="p")&&(f=`${f}%`),a!=null&&!isNaN(a)&&(f=addPadding(f,a,r??s,n)),f=`${c}${f}${p}`,f}}var integerTypes={b:e=>absFloor(e).toString(2),c:e=>String.fromCharCode(e),d:e=>Math.round(Math.abs(e)).toFixed(0),o:e=>absFloor(e).toString(8),x:e=>absFloor(e).toString(16),X:e=>integerTypes.x(e).toUpperCase(),n:e=>integerTypes.d(e),"%":e=>`${absFloor(e*100).toFixed(0)}`},decimalTypes={e:(e,t)=>Math.abs(e).toExponential(t),E:(e,t)=>decimalTypes.e(e,t).toUpperCase(),f:(e,t)=>Math.abs(e).toFixed(t),F:(e,t)=>decimalTypes.f(e,t).toUpperCase(),g:(e,t)=>{if(e===0)return"0";const r=Math.abs(e),n=Math.floor(Math.log10(r));return n>=-4&&n<t?r.toFixed(t-1-n):r.toExponential(t-1)},G:(e,t)=>decimalTypes.g(e,t).toUpperCase(),n:(e,t)=>decimalTypes.g(e,t),p:(e,t)=>decimalTypes.r(e*100,t),r:(e,t)=>{if(e===0)return"0";const r=Math.abs(e),i=Math.floor(Math.log10(r))-(t-1);if(i<=0)return r.toFixed(-i);const o=10**i;return(Math.round(r/o)*o).toFixed()},s:(e,t)=>{const r=getSIPrefixPower(e);return decimalTypes.r(e/10**r,t)},"%":(e,t)=>decimalTypes.f(e*100,t)},minSIPrefix=-24,maxSIPrefix=24,siPrefixes={[minSIPrefix]:"y",[-21]:"z",[-18]:"a",[-15]:"f",[-12]:"p",[-9]:"n",[-6]:"\xB5",[-3]:"m",0:"",3:"k",6:"M",9:"G",12:"T",15:"P",18:"E",21:"Z",[maxSIPrefix]:"Y"},minusSign="\u2212";function absFloor(e){return Math.floor(Math.abs(e))}function removeTrailingZeros(e){return e.replace(/\.0+$/,"").replace(/(\.[1-9])0+$/,"$1")}function insertSeparator(e,t){let r=e.indexOf(".");r<0&&(r=e.length);const n=e.substring(0,r).split(""),i=e.substring(r);for(let o=n.length-3;o>0;o-=3)n.splice(o,0,t);return`${n.join("")}${i}`}function getSIPrefix(e){return siPrefixes[getSIPrefixPower(e)]}function getSIPrefixPower(e){return clamp(minSIPrefix,e?Math.floor(Math.log10(Math.abs(e))/3)*3:0,maxSIPrefix)}function addSign(e,t,r=""){if(r==="(")return e>=0?t:`(${t})`;const n=r==="+"?"+":"";return`${e>=0?n:minusSign}${t}`}function addPadding(e,t,r=" ",n=">"){let i=e;if(n===">"||!n)i=i.padStart(t,r);else if(n==="<")i=i.padEnd(t,r);else if(n==="^"){const o=Math.max(0,t-i.length),s=Math.ceil(o/2),a=Math.floor(o/2);i=i.padStart(s+i.length,r),i=i.padEnd(a+i.length,r)}return i}