{"version":3,"file":"get-digit-parts.cjs","names":[],"sources":["../../../src/components/RollingNumber/get-digit-parts.ts"],"sourcesContent":["export interface DigitParts {\n  negative: boolean;\n  intDigits: string[];\n  fracDigits: string[];\n  hasDecimal: boolean;\n}\n\nexport interface GetDigitPartsInput {\n  value: number;\n  decimalScale?: number;\n  fixedDecimalScale?: boolean;\n}\n\nconst PLAIN_FORMAT = new Intl.NumberFormat('en-US', {\n  useGrouping: false,\n  maximumFractionDigits: 20,\n});\n\nfunction toPlainString(num: number, decimalScale?: number): string {\n  if (!Number.isFinite(num)) {\n    return '0';\n  }\n\n  if (decimalScale !== undefined) {\n    return new Intl.NumberFormat('en-US', {\n      useGrouping: false,\n      minimumFractionDigits: decimalScale,\n      maximumFractionDigits: decimalScale,\n    }).format(num);\n  }\n\n  const str = String(num);\n  if (!str.includes('e') && !str.includes('E')) {\n    return str;\n  }\n\n  return PLAIN_FORMAT.format(num);\n}\n\nexport function getDigitParts({\n  value,\n  decimalScale,\n  fixedDecimalScale,\n}: GetDigitPartsInput): DigitParts {\n  const abs = Math.abs(value);\n  let str = toPlainString(abs, decimalScale);\n\n  if (!fixedDecimalScale && decimalScale !== undefined) {\n    const parts = str.split('.');\n    if (parts[1]) {\n      const trimmed = parts[1].replace(/0+$/, '');\n      str = trimmed ? `${parts[0]}.${trimmed}` : parts[0];\n    }\n  }\n\n  const dotIdx = str.indexOf('.');\n  const intStr = dotIdx >= 0 ? str.slice(0, dotIdx) : str;\n  const fracStr = dotIdx >= 0 ? str.slice(dotIdx + 1) : '';\n\n  return {\n    negative: value < 0,\n    intDigits: intStr.split(''),\n    fracDigits: fracStr ? fracStr.split('') : [],\n    hasDecimal: dotIdx >= 0,\n  };\n}\n"],"mappings":";;AAaA,MAAM,eAAe,IAAI,KAAK,aAAa,SAAS;CAClD,aAAa;CACb,uBAAuB;AACzB,CAAC;AAED,SAAS,cAAc,KAAa,cAA+B;CACjE,IAAI,CAAC,OAAO,SAAS,GAAG,GACtB,OAAO;CAGT,IAAI,iBAAiB,KAAA,GACnB,OAAO,IAAI,KAAK,aAAa,SAAS;EACpC,aAAa;EACb,uBAAuB;EACvB,uBAAuB;CACzB,CAAC,EAAE,OAAO,GAAG;CAGf,MAAM,MAAM,OAAO,GAAG;CACtB,IAAI,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,GACzC,OAAO;CAGT,OAAO,aAAa,OAAO,GAAG;AAChC;AAEA,SAAgB,cAAc,EAC5B,OACA,cACA,qBACiC;CAEjC,IAAI,MAAM,cADE,KAAK,IAAI,KACK,GAAG,YAAY;CAEzC,IAAI,CAAC,qBAAqB,iBAAiB,KAAA,GAAW;EACpD,MAAM,QAAQ,IAAI,MAAM,GAAG;EAC3B,IAAI,MAAM,IAAI;GACZ,MAAM,UAAU,MAAM,GAAG,QAAQ,OAAO,EAAE;GAC1C,MAAM,UAAU,GAAG,MAAM,GAAG,GAAG,YAAY,MAAM;EACnD;CACF;CAEA,MAAM,SAAS,IAAI,QAAQ,GAAG;CAC9B,MAAM,SAAS,UAAU,IAAI,IAAI,MAAM,GAAG,MAAM,IAAI;CACpD,MAAM,UAAU,UAAU,IAAI,IAAI,MAAM,SAAS,CAAC,IAAI;CAEtD,OAAO;EACL,UAAU,QAAQ;EAClB,WAAW,OAAO,MAAM,EAAE;EAC1B,YAAY,UAAU,QAAQ,MAAM,EAAE,IAAI,CAAC;EAC3C,YAAY,UAAU;CACxB;AACF"}