{"version":3,"sources":["../src/lib/string.ts","../src/lib/i18n.ts","../src/lib/time.ts","../src/lib/number.ts","../src/lib/frequency.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import { defaultI18N } from \"./i18n\"\n\nconst MIXED_CASE_REGEX = /[A-Z][a-z]/g\nconst ALL_UPPER_CASE_REGEX = /^[A-Z]+$/g\nconst WORD_OR_HYPENED_SEPARATOR_REGEX = /([^\\s-.]+?)([\\s\"“”‘’'-.]+|\\s*$)/g\nconst LETTERS_ONLY_REGEX = /^[a-z]+$/\nconst PERIOD_REGEX = /\\./g\n\nconst CAPTITALIZATION_EXCEPTIONS: Record<string, string> = {\n  am: 'AM',\n  cw: 'CW',\n  iaru: 'IARU',\n  ii: 'II',\n  iii: 'III',\n  iv: 'IV',\n  ios: 'iOS',\n  iota: 'IOTA',\n  iphone: 'iPhone',\n  ipad: 'iPad',\n  arrl: 'ARRL',\n  ares: 'ARES',\n  clublog: 'ClubLog',\n  fcc: 'FCC',\n  fm: 'FM',\n  ft2: 'FT2',\n  ft4: 'FT4',\n  ft8: 'FT8',\n  flexradio: 'FlexRadio',\n  gridtracker: 'GridTracker',\n  ham2k: 'Ham2K',\n  nasa: 'NASA',\n  pota: 'POTA',\n  sota: 'SOTA',\n  qrm: 'QRM',\n  qrn: 'QRN',\n  qro: 'QRO',\n  qrv: 'QRV',\n  qrt: 'QRT',\n  qrp: 'QRP',\n  qrz: 'QRZ',\n  qsb: 'QSB',\n  qsl: 'QSL',\n  qso: 'QSO',\n  qsy: 'QSY',\n  qth: 'QTH',\n  rtty: 'RTTY',\n  youtube: 'YouTube'\n}\n\nconst MODAL_CAPITALIZATION_EXCEPTIONS: Record<string, Record<string, string>> = {\n  address: {\n    nsw: 'NSW',\n    vic: 'VIC',\n    qld: 'QLD',\n    tas: 'TAS',\n    act: 'ACT',\n    pei: 'PEI',\n    nwt: 'NWT'\n  }\n}\n\nexport function capitalizeString(str: string, options: { content?: 'text' | 'name', force?: boolean } = {}) {\n  const { content = 'text' } = options\n  let { force = true } = options\n\n  if (!str) return ''\n\n  str = `${str}`.trim()\n\n  // If we're not forcing capitalization, only do it if the string is already mixed case\n  if (!force && !str.match(MIXED_CASE_REGEX)) {\n    force = true\n  }\n\n  return str.replace(WORD_OR_HYPENED_SEPARATOR_REGEX, (_match, word, separator) => {\n    if (force) {\n      word = word.toLowerCase()\n      if (CAPTITALIZATION_EXCEPTIONS[word]) {\n        return CAPTITALIZATION_EXCEPTIONS[word] + separator\n      } else if (MODAL_CAPITALIZATION_EXCEPTIONS[content] && MODAL_CAPITALIZATION_EXCEPTIONS[content][word]) {\n        return MODAL_CAPITALIZATION_EXCEPTIONS[content][word] + separator\n      } else if (word.length === 1 && content === 'name' && word.match(LETTERS_ONLY_REGEX)) {\n        // Initials\n        return word.toUpperCase() + (separator.match(PERIOD_REGEX) ? '' : '.') + separator\n      } else {\n        return word.charAt(0).toUpperCase() + word.slice(1) + separator\n      }\n    } else {\n      if (word.length === 1 && content === 'name' && word.match(ALL_UPPER_CASE_REGEX)) {\n        // When respecting existing case, only add periods to initials if they are already capitalized\n        return word.toUpperCase() + (separator.match(PERIOD_REGEX) ? '' : '.') + separator\n      } else {\n        return word + separator\n      }\n    }\n  })\n}\n\nexport function capitalizeFirstLetter(str: string): string {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function camelCaseToWords(camelCase: string, { capitalize }: { capitalize?: boolean } = {}) {\n  let words = (camelCase || '').replace(/([A-Z])/g, ' $1')\n  if (capitalize) words = capitalizeString(words)\n\n  return words\n}\n\ntype TemplatePrimitiveValue = string | number | null | undefined\ntype TemplateFunction = (key: string, context: Record<string, TemplatePrimitiveValue | TemplateFunction>) => string\ntype TemplateValue = TemplatePrimitiveValue | TemplateFunction\nconst TEMPLATE_REGEX = /\\{\\{(.+?)\\}\\}/g\n\nexport function simpleTemplate(template: string, values: Record<string, TemplateValue> = {}, context: Record<string, TemplateValue> = {}) {\n  return template.replace(TEMPLATE_REGEX, (match, key) => {\n    if (typeof values[key] === 'function') {\n      return values[key](key, context)\n    } else if (typeof values[key] === 'number') {\n      return values[key].toString()\n    } else if (typeof values[key] === 'string') {\n      return values[key]\n    } else if (values[key] === null) {\n      return ''\n    } else if (typeof values._default === 'function') {\n      return values._default(key, context)\n    } else {\n      return match\n    }\n  })\n}\n\nexport function countTemplate(count: number, { zero, one, more }: { zero?: string, one?: string, more?: string } = {}, context: Record<string, TemplateValue> = {}) {\n  if (count === 0) {\n    return simpleTemplate(zero ?? more ?? '', { ...context, count })\n  } else if (count === 1) {\n    return simpleTemplate(one ?? more ?? '', { ...context, count })\n  } else {\n    return simpleTemplate(more ?? '', { ...context, count })\n  }\n}\n\nexport function sanitizeToISO8859(text: string) {\n  if (!text) return ''\n  // eslint-disable-next-line no-control-regex\n  return text.replace(/[”“]/g, '\"').replace(/[‘’]/g, \"'\").replace(/[^\\x00-\\xFF]/g, '·')\n}\n\nexport function escapeToUnicodeEntities(text: string) {\n  return String(text).replace(/[\\u0080-\\uFFFF]/g, ch => `&#${ch.codePointAt(0)};`)\n}\n\nexport function removeASCIIControlCharacters(text: string) {\n  if (!text) return ''\n  // eslint-disable-next-line no-control-regex\n  return text.replace(/[\\x00-\\x1F\\x7F]/g, '')\n}\n\nexport function slashZeros(text: string) {\n  // See \"Combining Solidus\" in https://en.wikipedia.org/wiki/Slashed_zero\n  if (!text) return ''\n  return text.replace(/0/g, '0̸')\n}\n\nexport function sanitizeForMarkdown(text: string) {\n  if (!text) return ''\n  return text.replace(/^[-* \\t–—]+/g, '')\n}\n\nexport function joinAnd(parts: string[], { separator, conjunction, final }: { separator?: string, conjunction?: string, final?: string } = {}) {\n  separator = separator || defaultI18N.t('general.formatting.list.separator', ', ')\n  conjunction = conjunction || defaultI18N.t('general.formatting.list.conjunction', ' and ')\n  final = final || defaultI18N.t(['general.formatting.list.final', 'general.formatting.list.conjunction'], conjunction)\n\n  if (parts.length === 0) return ''\n  if (parts.length === 1) return parts[0]\n  if (parts.length === 2) return parts.join(`${conjunction}`)\n  return parts.slice(0, -1).join(separator) + `${final}` + parts.slice(-1)\n}\n","import { simpleTemplate } from \"./string\"\n\ntype TranslationFunction = (key: string | string[], fallback: string, params?: Record<string, string | number | null | undefined>) => string\n\nexport const defaultTranslationImplementation: TranslationFunction = (_key, fallback, params) => {\n  params = params ?? {}\n\n  return simpleTemplate(fallback ?? '', params)\n}\n\nexport const defaultI18N: { t: TranslationFunction } = {\n  t: defaultTranslationImplementation\n}\n\nexport function setTranslationFunction(t: TranslationFunction) {\n  defaultI18N.t = t\n}\n\nexport function getCurrentLocale(): string {\n  if (typeof navigator === 'undefined') return 'en-US'\n  else return navigator?.language || 'en-US'\n}\n\n","import { defaultI18N } from './i18n'\n\ntype FlexibleTimeValue = number | string | Date | null | undefined\n\nexport function prepareDateValue(t: FlexibleTimeValue): Date | undefined {\n  switch (typeof t) {\n    case 'object':\n      if (t instanceof Date) {\n        return t\n      } else {\n        return undefined\n      }\n    case 'number':\n    case 'string':\n      return new Date(t)\n    case 'undefined':\n      return new Date()\n    default:\n      return undefined\n  }\n}\n\nconst FALLBACK_WEEKDAY: Record<number, string> = {\n  1: 'Monday',\n  2: 'Tuesday',\n  3: 'Wednesday',\n  4: 'Thursday',\n  5: 'Friday',\n  6: 'Saturday',\n  7: 'Sunday'\n}\n\nconst FALLBACK_WEEKDAY_ABBR: Record<number, string> = {\n  1: 'Mon',\n  2: 'Tue',\n  3: 'Wed',\n  4: 'Thu',\n  5: 'Fri',\n  6: 'Sat',\n  7: 'Sun'\n}\n\nconst FALLBACK_DAY_ORD: Record<number, string> = {\n  1: '1st',\n  2: '2nd',\n  3: '3rd',\n  4: '4th',\n  5: '5th',\n  6: '6th',\n  7: '7th',\n  8: '8th',\n  9: '9th',\n  10: '10th',\n  11: '11th',\n  12: '12th',\n  13: '13th',\n  14: '14th',\n  15: '15th',\n  16: '16th',\n  17: '17th',\n  18: '18th',\n  19: '19th',\n  20: '20th',\n  21: '21st',\n  22: '22nd',\n  23: '23rd',\n  24: '24th',\n  25: '25th',\n  26: '26th',\n  27: '27th',\n  28: '28th',\n  29: '29th',\n  30: '30th',\n  31: '31st',\n}\n\nconst FALLBACK_MONTH_ABBR: Record<number, string> = {\n  1: 'Jan',\n  2: 'Feb',\n  3: 'Mar',\n  4: 'Apr',\n  5: 'May',\n  6: 'Jun',\n  7: 'Jul',\n  8: 'Aug',\n  9: 'Sep',\n  10: 'Oct',\n  11: 'Nov',\n  12: 'Dec'\n}\n\nconst FALLBACK_MONTH: Record<number, string> = {\n  1: 'January',\n  2: 'February',\n  3: 'March',\n  4: 'April',\n  5: 'May',\n  6: 'June',\n  7: 'July',\n  8: 'August',\n  9: 'September',\n  10: 'October',\n  11: 'November',\n  12: 'December'\n}\n\ntype DateTimeInterpolationParts = {\n  upperZulu: string\n  lowerZulu: string\n  hours: number\n  hours12: number\n  hoursZero: string\n  minutes: number\n  minutesZero: string\n  seconds: number\n  secondsZero: string\n  ampm: string\n  ampmLower: string\n  day: number\n  dayZero: string\n  dayOrd: string\n  weekdayNumber: number\n  weekday: string\n  weekdayAbbr: string\n  month: number\n  monthZero: string\n  monthName: string\n  monthAbbr: string\n  year: number\n}\nexport function dateTimeInterpolationParts(d: Date, { utc }: { utc?: boolean } = {}): DateTimeInterpolationParts {\n  const hours = utc ? d.getUTCHours() : d.getHours()\n  const minutes = utc ? d.getUTCMinutes() : d.getMinutes()\n  const seconds = utc ? d.getUTCSeconds() : d.getSeconds()\n  const weekdayNumberSundayZero = ((utc ? d.getUTCDay() : d.getDay()) + 1 % 7) - 1\n  const weekdayNumber = weekdayNumberSundayZero === 0 ? 7 : weekdayNumberSundayZero\n  const month = (utc ? d.getUTCMonth() : d.getMonth()) + 1\n  const day = utc ? d.getUTCDate() : d.getDate()\n  const year = utc ? d.getUTCFullYear() : d.getFullYear()\n\n  return {\n    upperZulu: utc ? 'Z' : '',\n    lowerZulu: utc ? 'z' : '',\n    hours,\n    hours12: hours % 12 || 12,\n    hoursZero: hours.toString().padStart(2, '0'),\n    minutes,\n    minutesZero: minutes.toString().padStart(2, '0'),\n    seconds,\n    secondsZero: seconds.toString().padStart(2, '0'),\n    ampm: hours < 12 ? 'AM' : 'PM',\n    ampmLower: hours < 12 ? 'am' : 'pm',\n    day,\n    dayZero: day.toString().padStart(2, '0'),\n    dayOrd: defaultI18N.t(`general.formatting.dayOrd.${day}`, FALLBACK_DAY_ORD[day] ?? ''),\n    weekdayNumber,\n    weekday: defaultI18N.t(`general.formatting.weekday.${weekdayNumber}`, FALLBACK_WEEKDAY[weekdayNumber] ?? ''),\n    weekdayAbbr: defaultI18N.t(`general.formatting.weekdayAbbr.${weekdayNumber}`, FALLBACK_WEEKDAY_ABBR[weekdayNumber] ?? ''),\n    month,\n    monthZero: month.toString().padStart(2, '0'),\n    monthName: defaultI18N.t(`general.formatting.month.${month}`, FALLBACK_MONTH[month] ?? ''),\n    monthAbbr: defaultI18N.t(`general.formatting.monthAbbr.${month}`, FALLBACK_MONTH_ABBR[month] ?? ''),\n    year,\n  }\n}\n\nexport function fmtShortTimeZulu(t: FlexibleTimeValue, { showZ }: { showZ?: boolean } = {}): string {\n  if (showZ !== false) showZ = true\n\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(11, 16) + (showZ ? 'z' : '')\n  } else {\n    return ''\n  }\n}\n\nexport function fmtTimeZulu(t: FlexibleTimeValue, { showZ, compact }: { showZ?: boolean, compact?: boolean } = {}): string {\n  const d = prepareDateValue(t)\n\n  if (showZ !== false) showZ = true\n\n  if (d) {\n    if (compact) {\n      return d.toISOString().substring(11, 16) + (showZ ? 'z' : '')\n    } else {\n      return d.toISOString().substring(11, 19) + (showZ ? 'z' : '')\n    }\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateZulu(t: FlexibleTimeValue): string {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(0, 10)\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateTimeDynamic(t: FlexibleTimeValue, { now, compact, utc }: { now?: Date, compact?: boolean, utc?: boolean } = {}): string {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    if (now === undefined) now = new Date()\n    const diffInDays = (now.getTime() - d.getTime()) / (1000 * 60 * 60 * 24)\n    const interpolation = dateTimeInterpolationParts(d, { utc }) as unknown as Record<string, string>\n    interpolation.time = defaultI18N.t('general.formatting.time.short', `${interpolation.hoursZero}:${interpolation.minutesZero}${interpolation.lowerZulu}`)\n\n    if (diffInDays < 1) {\n      if (compact) {\n        return defaultI18N.t(`general.formatting.dateTime.varShortUnder1Day`, '{{time}}', interpolation)\n      } else {\n        return defaultI18N.t(`general.formatting.dateTime.varUnder1Day`, '{{time}} {{weekday}} {{dayOrd}}', interpolation)\n      }\n    } else if (diffInDays <= 7) {\n      if (compact) {\n        return defaultI18N.t(`general.formatting.dateTime.varShortUnder7Days`, '{{time}} {{weekdayAbbr}} {{day}}', interpolation)\n      } else {\n        return defaultI18N.t(`general.formatting.dateTime.varUnder7Days`, '{{time}} {{weekday}} {{dayOrd}}', interpolation)\n      }\n    } else if (diffInDays <= 274) { // 9 months\n      if (compact) {\n        return defaultI18N.t(`general.formatting.dateTime.varShortUnder9Months`, '{{time}} {{monthAbbr}} {{day}}', interpolation)\n      } else {\n        return defaultI18N.t(`general.formatting.dateTime.varUnder9Months`, '{{time}} {{monthName}} {{dayOrd}}', interpolation)\n      }\n    } else {\n      if (compact) {\n        return defaultI18N.t(`general.formatting.dateTime.varShortOver9Months`, '{{time}} {{monthAbbr}} {{day}} {{year}}', interpolation)\n      } else {\n        return defaultI18N.t(`general.formatting.dateTime.varOver9Months`, '{{time}} {{monthName}} {{dayOrd}} {{year}}', interpolation)\n      }\n    }\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateTimeDynamicZulu(t: FlexibleTimeValue, { now, compact }: { now?: Date, compact?: boolean } = {}): string {\n  return fmtDateTimeDynamic(t, { now, compact, utc: true })\n}\n\nexport function fmtDateDynamic(t: FlexibleTimeValue, { now, compact, utc }: { now?: Date, compact?: boolean, utc?: boolean } = {}): string {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    if (now === undefined) now = new Date()\n    const diffInDays = (now.getTime() - d.getTime()) / (1000 * 60 * 60 * 24)\n    const absDiffInDays = Math.abs(diffInDays)\n    const interpolation = dateTimeInterpolationParts(d, { utc }) as unknown as Record<string, string>\n\n    if (diffInDays > -1 && diffInDays <= 0) {\n      return defaultI18N.t('general.formatting.time.tomorrow', 'Tomorrow')\n    } else if (diffInDays > 0 && diffInDays <= 1) {\n      return defaultI18N.t('general.formatting.time.today', 'Today')\n    } else if (diffInDays <= 2) {\n      return defaultI18N.t('general.formatting.time.yesterday', 'Yesterday')\n    } else if (absDiffInDays <= 7) {\n      if (compact) {\n        return defaultI18N.t(`general.formatting.date.varShortUnder7Days`, '{{weekdayAbbr}} {{day}}', interpolation)\n      } else {\n        return defaultI18N.t(`general.formatting.date.varUnder7Days`, '{{weekday}} {{dayOrd}}', interpolation)\n      }\n    } else if (absDiffInDays <= 274) { // 9 months\n      if (compact) {\n        return defaultI18N.t(`general.formatting.date.varShortUnder9Months`, '{{monthAbbr}} {{day}}', interpolation)\n      } else {\n        return defaultI18N.t(`general.formatting.date.varUnder9Months`, '{{monthName}} {{dayOrd}}', interpolation)\n      }\n    } else {\n      if (compact) {\n        return defaultI18N.t(`general.formatting.date.varShortOver9Months`, '{{monthAbbr}} {{day}} {{year}}', interpolation)\n      } else {\n        return defaultI18N.t(`general.formatting.date.varOver9Months`, '{{monthName}} {{year}}', interpolation)\n      }\n    }\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateDynamicZulu(t: FlexibleTimeValue, { now, compact }: { now?: Date, compact?: boolean } = {}): string {\n  return fmtDateDynamic(t, { now, compact, utc: true })\n}\n\nexport function fmtDateTimeNice(t: FlexibleTimeValue, { utc }: { utc?: boolean } = {}): string {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    const interpolation = dateTimeInterpolationParts(d, { utc }) as unknown as Record<string, string>\n    interpolation.time = defaultI18N.t('general.formatting.time.short', `${interpolation.hoursZero}:${interpolation.minutesZero}${interpolation.lowerZulu}`)\n\n    return defaultI18N.t(`general.formatting.dateTime.nice`, '{{time}} {{month}} {{dayOrd}} {{year}}', interpolation) || `${interpolation.time} ${interpolation.month} ${interpolation.dayOrd}, ${interpolation.year}`\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateTimeNiceZulu(t: FlexibleTimeValue) {\n  return fmtDateTimeNice(t, { utc: true })\n}\n\nexport function fmtDateNice(t: FlexibleTimeValue, { utc }: { utc?: boolean } = {}) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    const interpolation = dateTimeInterpolationParts(d, { utc }) as unknown as Record<string, string>\n\n    return defaultI18N.t('general.formatting.date.nice', '{{monthName}} {{dayOrd}}, {{year}}', interpolation)\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateNiceZulu(t: FlexibleTimeValue) {\n  return fmtDateNice(t, { utc: true })\n}\n\nexport function fmtDateFull(t: FlexibleTimeValue, { compact, utc }: { compact?: boolean, utc?: boolean } = {}) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    const interpolation = dateTimeInterpolationParts(d, { utc }) as unknown as Record<string, string>\n\n    if (compact) {\n      return defaultI18N.t('general.formatting.date.fullShort', '{{weekdayAbbr}} {{monthAbbr}} {{day}}, {{year}}', interpolation)\n    }\n    else {\n      return defaultI18N.t('general.formatting.date.full', '{{weekday}} {{month}} {{dayOrd}}, {{year}}', interpolation)\n    }\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateFullZulu(t: FlexibleTimeValue, { compact }: { compact?: boolean } = {}) {\n  return fmtDateFull(t, { compact, utc: true })\n}\n\nexport function fmtDateTimeRelative(t: FlexibleTimeValue, { now, roundTo }: { now?: Date, roundTo?: 'minutes' | 'hours' } = {}) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    if (now === undefined) now = new Date()\n    if (d < now) {\n      const time = fmtTimeBetween(d, now, { roundTo })\n      return defaultI18N.t('general.formatting.time.ago', '{{time}} ago', { time })\n    } else {\n      const time = fmtTimeBetween(d, now, { roundTo })\n      return defaultI18N.t('general.formatting.time.fromNow', '{{time}} from now', { time })\n    }\n  } else {\n    return ''\n  }\n}\n\nexport function fmtTimestamp(t: FlexibleTimeValue) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(0, 19).replace(/[-:T]/g, '')\n  } else {\n    return ''\n  }\n}\n\nexport function fmtADIFDate(t: FlexibleTimeValue) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(0, 10).replace(/-/g, '')\n  } else {\n    return ''\n  }\n}\n\nexport function fmtADIFTime(t: FlexibleTimeValue) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(11, 19).replace(/:/g, '')\n  } else {\n    return ''\n  }\n}\n\nexport function fmtADIFDateTime(t: FlexibleTimeValue) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(0, 19).replace(/[-:T]/g, '')\n  } else {\n    return ''\n  }\n}\n\nexport function fmtCabrilloDate(t: FlexibleTimeValue) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(0, 10)\n  } else {\n    return ''\n  }\n}\n\nexport function fmtCabrilloTime(t: FlexibleTimeValue) {\n  return fmtADIFTime(t).substring(0, 4)\n}\n\nexport function fmtISODate(t: FlexibleTimeValue) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(0, 10)\n  } else {\n    return ''\n  }\n}\n\nexport function fmtISODateTime(t: FlexibleTimeValue) {\n  const d = prepareDateValue(t)\n\n  if (d) {\n    return d.toISOString().substring(0, 19) + 'Z'\n  } else {\n    return ''\n  }\n}\n\nexport function fmtTimeBetween(t1: FlexibleTimeValue, t2: FlexibleTimeValue, { roundTo }: { roundTo?: 'minutes' | 'hours' } = {}) {\n  const d1 = prepareDateValue(t1)\n  const d2 = prepareDateValue(t2)\n\n  if (d1 && d2) {\n    let diff = d2.getTime() - d1.getTime()\n\n    if (roundTo === 'minutes') {\n      diff = Math.round(diff / (60 * 1000)) * (60 * 1000)\n    } else if (roundTo === 'hours') {\n      diff = Math.round(diff / (60 * 60 * 1000)) * (60 * 60 * 1000)\n    }\n\n    if (diff < 0) {\n      return ''\n    } else if (diff < 1000) {\n      return defaultI18N.t('general.formatting.time.shortSeconds', '{{s}}s', { s: '0' })\n    } else if (diff < 60 * 1000) {\n      const s = Math.floor(diff / 1000).toString()\n      return defaultI18N.t('general.formatting.time.shortSeconds', '{{s}}s', { s })\n    } else if (diff < 60 * 60 * 1000) {\n      if (roundTo === 'minutes') {\n        const m = Math.floor(diff / (60 * 1000)).toString()\n        return defaultI18N.t('general.formatting.time.shortMinutes', '{{m}}m', { m })\n      } else {\n        const m = Math.floor(diff / (60 * 1000)).toString()\n        const s = Math.floor((diff % (60 * 1000)) / 1000).toString()\n        return defaultI18N.t('general.formatting.time.shortMinutesAndSeconds', '{{m}}m {{s}}s', { m, s })\n      }\n    } else if (diff < 1000 * 60 * 60 * 24) {\n      if (roundTo === 'hours') {\n        const h = Math.floor(diff / (60 * 60 * 1000)).toString()\n        return defaultI18N.t('general.formatting.time.shortHours', '{{h}}h', { h })\n      } else {\n        const h = Math.floor(diff / (60 * 60 * 1000)).toString()\n        const m = Math.floor((diff % (60 * 60 * 1000)) / (60 * 1000)).toString()\n        return defaultI18N.t('general.formatting.time.shortHoursAndMinutes', '{{h}}h {{m}}m', { h, m })\n      }\n    } else {\n      const d = Math.floor(diff / (60 * 60 * 24 * 1000)).toString()\n      const h = Math.floor((diff % (60 * 60 * 24 * 1000)) / (60 * 60 * 1000)).toString()\n      return defaultI18N.t('general.formatting.time.shortDaysAndHours', '{{d}}d {{h}}h', { d, h })\n    }\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateTimeNiceRange(t1: FlexibleTimeValue, t2: FlexibleTimeValue, { utc }: { utc?: boolean } = {}) {\n  const d1 = prepareDateValue(t1)\n  const d2 = prepareDateValue(t2)\n\n  if (d1 && d2) {\n    const interpolation = {\n      niceTime1: fmtDateTimeNice(d1, { utc }),\n      niceTime2: fmtDateTimeNice(d2, { utc }),\n    }\n    return defaultI18N.t('general.formatting.dateTime.niceRange', '{{niceTime1}} - {{niceTime2}}', interpolation)\n  } else {\n    return ''\n  }\n}\n\nexport function fmtDateTime(t: FlexibleTimeValue, options?: Intl.DateTimeFormatOptions): string {\n  const d = prepareDateValue(t)\n  if (d) {\n    const formatter = new Intl.DateTimeFormat('en-US', options)\n    return formatter.format(d)\n  }\n  return ''\n}\n\nexport function dateFormatterGenerator(formatName: string, options?: Intl.DateTimeFormatOptions) {\n  const predefined: Record<string, Intl.DateTimeFormatOptions> = {\n    dayMonth: { day: 'numeric', month: 'short' }\n  }\n  const mergedOptions = { ...predefined[formatName], ...options }\n  return (t: FlexibleTimeValue) => fmtDateTime(t, mergedOptions)\n}\n\nexport function fmtDateTimeISO(t: FlexibleTimeValue): string {\n  return fmtISODateTime(t)\n}\n\n","import { getCurrentLocale } from './i18n'\n\ntype NumberFormat = 'default' | 'integer' | 'oneDecimal'\n\ninterface FormatOptions {\n  roundingType?: 'compactRounding' | 'fractionDigits'\n  minimumFractionDigits?: number\n  maximumFractionDigits?: number\n}\n\nconst FORMATS: Record<NumberFormat, FormatOptions> = {\n  default: {\n    roundingType: 'compactRounding'\n  },\n  integer: {\n    roundingType: 'fractionDigits',\n    minimumFractionDigits: 0,\n    maximumFractionDigits: 0\n  },\n  oneDecimal: {\n    roundingType: 'fractionDigits',\n    minimumFractionDigits: 1,\n    maximumFractionDigits: 1\n  }\n}\n\nconst locale = getCurrentLocale()\n\nexport function fmtNumber (n: number | string, format: NumberFormat = 'default'): string {\n  if (n === null || n === undefined) {\n    return ''\n  }\n\n  if (typeof n === 'string') {\n    n = Number.parseFloat(n)\n  }\n\n  return n.toLocaleString(locale, FORMATS[format] as Intl.NumberFormatOptions)\n}\n\nfunction numberFormatterGenerator (format: NumberFormat) {\n  return (n: number | string): string => {\n    if (n === null || n === undefined) {\n      return ''\n    }\n\n    if (typeof n === 'string') {\n      n = Number.parseFloat(n)\n    }\n\n    return n || n === 0 ? n.toLocaleString(locale, FORMATS[format] as Intl.NumberFormatOptions) : ''\n  }\n}\n\nexport const fmtInteger = numberFormatterGenerator('integer')\nexport const fmtOneDecimal = numberFormatterGenerator('oneDecimal')\n\nexport function fmtPercent (n: number | string, format: NumberFormat = 'oneDecimal'): string {\n  if (typeof n === 'string') {\n    n = Number.parseFloat(n)\n  }\n  n = n * 100\n  return fmtNumber(n, format) + '%'\n}\n\nexport function fmtMegabytes (bytes: number): string {\n  return fmtOneDecimal(bytes / (1024 * 1024)) + ' MB'\n}\n\nexport function fmtGigabytes (bytes: number): string {\n  return fmtOneDecimal(bytes / (1024 * 1024 * 1024)) + ' GB'\n}\n","const THOUSANDS_DELIMITER_REGEX = /^(\\d+)(\\d\\d\\d)([.,]\\d+|)$/\nconst TRAILING_DIGITS_REGEX = /([.,])(\\d+)$/\n\n// In general in Ham2K code we use \n// * `freq` as a frequency in kHz, \n// * `frequency` as a frequency in Hz\n\nexport function fmtFreq(freq: number, { mode } = { mode: 'trim' }): string {\n  if (freq && freq.toFixed) {\n    const withDecimals = freq.toFixed(3)\n    const withSeparator = withDecimals.replace(THOUSANDS_DELIMITER_REGEX, '$1.$2$3')\n    if (mode === 'full') {\n      return withSeparator\n    } else if (mode === 'compact') { // Remove decimals, but show separator or space for alignment\n      return withSeparator.replace(TRAILING_DIGITS_REGEX, (_, p1, p2) => p2 === '000' ? '' : p1)\n    } else { // Remove trailing zeroes\n      return withSeparator.replace(TRAILING_DIGITS_REGEX, (_, p1, p2) => p2 === '000' ? '' : p1 + p2)\n    }\n  } else {\n    return ''\n  }\n}\n\nexport function partsForFreq(freq: number): string[] {\n  if (!freq || Number.isNaN(freq)) return ['?', '', '']\n\n  const parts = fmtFreq(freq).split(/[,.]/)\n  parts[1] = parts[1] ?? '000'\n  parts[2] = parts[2] ?? '000'\n  return parts\n}\n\nconst REMOVE_NON_DIGITS_REGEX = /[^0-9.,]/g\nconst MORE_THAN_ONE_PERIOD_REGEX = /(\\.)(\\d+)(\\.)/g\n\nexport function parseFreq(freq: string | number): number | null {\n  if (freq === null || freq === undefined) return null\n\n  if (typeof freq !== 'number') {\n    freq = freq.replace(REMOVE_NON_DIGITS_REGEX, '')\n    freq = freq.replace(',', '.')\n    freq = freq.replace(MORE_THAN_ONE_PERIOD_REGEX, '$2$3')\n\n    freq = parseFloat(freq)\n  }\n\n  if (freq !== undefined) {\n    if (freq < 1000) {\n      // General case: 14.000 -> 14,000\n      freq *= 1000\n    } else if (freq >= 14400 && freq < 14800) {\n      // 14652 -> 146,520\n      freq *= 10\n    } else if (freq >= 22200 && freq < 22500) {\n      // 22252 -> 222,520\n      freq *= 10\n    } else if (freq >= 42000 && freq < 45000) {\n      // 43520 -> 435,200\n      freq *= 10\n    }\n\n    return parseFloat(freq.toFixed(3))\n  } else {\n    return null\n  }\n}\n"]}