{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/statistic/src/utils.ts"],"sourcesContent":["import type { CountdownFormatConfig, valueType } from './interface';\n\n// Countdown\nconst timeUnits: Array<[string, number]> = [\n  ['Y', 1000 * 60 * 60 * 24 * 365], // years\n  ['M', 1000 * 60 * 60 * 24 * 30], // months\n  ['D', 1000 * 60 * 60 * 24], // days\n  ['H', 1000 * 60 * 60], // hours\n  ['m', 1000 * 60], // minutes\n  ['s', 1000], // seconds\n  ['S', 1], // million seconds\n];\n\nexport function formatTimeStr(duration: number, format: string) {\n  let leftDuration: number = duration;\n\n  const escapeRegex = /\\[[^\\]]*]/g;\n  const keepList: string[] = (format.match(escapeRegex) || []).map(str => str.slice(1, -1));\n  const templateText = format.replace(escapeRegex, '[]');\n\n  const replacedText = timeUnits.reduce((current, [name, unit]) => {\n    if (current.includes(name)) {\n      const value = Math.floor(leftDuration / unit);\n      leftDuration -= value * unit;\n      return current.replace(new RegExp(`${name}+`, 'g'), (match: string) => {\n        const len = match.length;\n        return value.toString().padStart(len, '0');\n      });\n    }\n    return current;\n  }, templateText);\n\n  let index = 0;\n  return replacedText.replace(escapeRegex, () => {\n    const match = keepList[index];\n    index += 1;\n    return match;\n  });\n}\n\nexport function formatCountdown(value: valueType, config: CountdownFormatConfig) {\n  const { format = '' } = config;\n  const target = new Date(value).getTime();\n  const current = Date.now();\n  const diff = Math.max(target - current, 0);\n\n  return formatTimeStr(diff, format);\n}\n"],"names":[],"mappings":"AAGA,MAAM,SAAqC,GAAA;AAAA,EACzC,CAAC,GAAK,EAAA,GAAA,GAAO,EAAK,GAAA,EAAA,GAAK,KAAK,GAAG,CAAA;AAAA;AAAA,EAC/B,CAAC,GAAK,EAAA,GAAA,GAAO,EAAK,GAAA,EAAA,GAAK,KAAK,EAAE,CAAA;AAAA;AAAA,EAC9B,CAAC,GAAA,EAAK,GAAO,GAAA,EAAA,GAAK,KAAK,EAAE,CAAA;AAAA;AAAA,EACzB,CAAC,GAAA,EAAK,GAAO,GAAA,EAAA,GAAK,EAAE,CAAA;AAAA;AAAA,EACpB,CAAC,GAAK,EAAA,GAAA,GAAO,EAAE,CAAA;AAAA;AAAA,EACf,CAAC,KAAK,GAAI,CAAA;AAAA;AAAA,EACV,CAAC,KAAK,CAAC,CAAA;AAAA;AACT,CAAA,CAAA;AAEgB,SAAA,aAAA,CAAc,UAAkB,MAAgB,EAAA;AAC9D,EAAA,IAAI,YAAuB,GAAA,QAAA,CAAA;AAE3B,EAAA,MAAM,WAAc,GAAA,YAAA,CAAA;AACpB,EAAA,MAAM,QAAsB,GAAA,CAAA,MAAA,CAAO,KAAM,CAAA,WAAW,CAAK,IAAA,EAAI,EAAA,GAAA,CAAI,CAAO,GAAA,KAAA,GAAA,CAAI,KAAM,CAAA,CAAA,EAAG,EAAE,CAAC,CAAA,CAAA;AACxF,EAAA,MAAM,YAAe,GAAA,MAAA,CAAO,OAAQ,CAAA,WAAA,EAAa,IAAI,CAAA,CAAA;AAErD,EAAM,MAAA,YAAA,GAAe,UAAU,MAAO,CAAA,CAAC,SAAS,CAAC,IAAA,EAAM,IAAI,CAAM,KAAA;AAC/D,IAAI,IAAA,OAAA,CAAQ,QAAS,CAAA,IAAI,CAAG,EAAA;AAC1B,MAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,KAAM,CAAA,YAAA,GAAe,IAAI,CAAA,CAAA;AAC5C,MAAA,YAAA,IAAgB,KAAQ,GAAA,IAAA,CAAA;AACxB,MAAO,OAAA,OAAA,CAAQ,OAAQ,CAAA,IAAI,MAAO,CAAA,CAAA,EAAG,IAAI,CAAK,CAAA,CAAA,EAAA,GAAG,CAAG,EAAA,CAAC,KAAkB,KAAA;AACrE,QAAA,MAAM,MAAM,KAAM,CAAA,MAAA,CAAA;AAClB,QAAA,OAAO,KAAM,CAAA,QAAA,EAAW,CAAA,QAAA,CAAS,KAAK,GAAG,CAAA,CAAA;AAAA,OAC1C,CAAA,CAAA;AAAA,KACH;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,KACN,YAAY,CAAA,CAAA;AAEf,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAO,OAAA,YAAA,CAAa,OAAQ,CAAA,WAAA,EAAa,MAAM;AAC7C,IAAM,MAAA,KAAA,GAAQ,SAAS,KAAK,CAAA,CAAA;AAC5B,IAAS,KAAA,IAAA,CAAA,CAAA;AACT,IAAO,OAAA,KAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACH,CAAA;AAEgB,SAAA,eAAA,CAAgB,OAAkB,MAA+B,EAAA;AAC/E,EAAM,MAAA,EAAE,MAAS,GAAA,EAAA,EAAO,GAAA,MAAA,CAAA;AACxB,EAAA,MAAM,MAAS,GAAA,IAAI,IAAK,CAAA,KAAK,EAAE,OAAQ,EAAA,CAAA;AACvC,EAAM,MAAA,OAAA,GAAU,KAAK,GAAI,EAAA,CAAA;AACzB,EAAA,MAAM,IAAO,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,GAAS,SAAS,CAAC,CAAA,CAAA;AAEzC,EAAO,OAAA,aAAA,CAAc,MAAM,MAAM,CAAA,CAAA;AACnC;;;;"}