@zag-js/i18n-utils 0.64.0 → 0.65.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -391,7 +391,7 @@ function getDefaultLocale() {
|
|
|
391
391
|
let locale = typeof navigator !== "undefined" && (navigator.language || navigator.userLanguage) || "en-US";
|
|
392
392
|
try {
|
|
393
393
|
Intl.DateTimeFormat.supportedLocalesOf([locale]);
|
|
394
|
-
} catch
|
|
394
|
+
} catch {
|
|
395
395
|
locale = "en-US";
|
|
396
396
|
}
|
|
397
397
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/cache.ts","../src/format-number.ts","../src/format-bytes.ts","../src/format-date.ts","../src/format-list.ts","../src/format-relative-time.ts","../src/is-rtl.ts","../src/locale.ts","../src/track-locale.ts"],"sourcesContent":["export * from \"./format-bytes\"\nexport * from \"./format-date\"\nexport * from \"./format-list\"\nexport * from \"./format-number\"\nexport * from \"./format-relative-time\"\nexport { getLocaleDir, isRTL } from \"./is-rtl\"\nexport { getDefaultLocale } from \"./locale\"\nexport type { Locale } from \"./locale\"\nexport { trackLocale } from \"./track-locale\"\nexport type { LocaleOptions } from \"./track-locale\"\n","type FormatOptions<T> = T extends Intl.NumberFormat\n ? Intl.NumberFormatOptions\n : T extends Intl.DateTimeFormat\n ? Intl.DateTimeFormatOptions\n : T extends Intl.RelativeTimeFormat\n ? Intl.RelativeTimeFormatOptions\n : T extends Intl.ListFormat\n ? Intl.ListFormatOptions\n : T extends Intl.PluralRules\n ? Intl.PluralRulesOptions\n : never\n\nexport function i18nCache<T extends abstract new (...args: any) => any>(Ins: T) {\n const formatterCache = new Map<string, T>()\n\n return function create(locale: string, options?: FormatOptions<InstanceType<T>>): InstanceType<T> {\n const cacheKey =\n locale +\n (options\n ? Object.entries(options)\n .sort((a, b) => (a[0] < b[0] ? -1 : 1))\n .join()\n : \"\")\n\n if (formatterCache.has(cacheKey)) {\n return formatterCache.get(cacheKey) as any\n }\n\n // @ts-ignore\n let formatter = new Ins(locale, options)\n formatterCache.set(cacheKey, formatter)\n\n return formatter as any\n }\n}\n","import { i18nCache } from \"./cache\"\n\nconst getNumberFormatter = i18nCache(Intl.NumberFormat)\n\nexport function formatNumber(v: number, locale: string, options: Intl.NumberFormatOptions = {}) {\n const formatter = getNumberFormatter(locale, options)\n return formatter.format(v)\n}\n","import { formatNumber } from \"./format-number\"\n\nconst bitPrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\"]\nconst bytePrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\"]\n\nexport interface FormatBytesOptions {\n unit?: \"bit\" | \"byte\"\n unitDisplay?: \"long\" | \"short\" | \"narrow\"\n}\n\nexport const formatBytes = (bytes: number, locale = \"en-US\", options: FormatBytesOptions = {}) => {\n if (isNaN(bytes)) return \"\"\n if (bytes === 0) return \"0 B\"\n\n const { unit = \"byte\", unitDisplay = \"short\" } = options\n\n const prefix = unit === \"bit\" ? bitPrefixes : bytePrefixes\n const index = Math.max(0, Math.min(Math.floor(Math.log10(bytes) / 3), prefix.length - 1))\n\n const _unit = prefix[index] + unit\n const _unitDisplay = unitDisplay || \"short\"\n\n const v = parseFloat((bytes / Math.pow(1000, index)).toPrecision(3))\n\n return formatNumber(v, locale, {\n style: \"unit\",\n unit: _unit,\n unitDisplay: _unitDisplay,\n })\n}\n","const symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\"\n\nfunction createRegEx(sign: string) {\n return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\")\n}\n\n// prettier-ignore\nconst FORMATS = [\n\"G\",\"GG\",\"GGG\",\"GGGG\",\"GGGGG\",\n\"y\",\"yo\",\"yy\",\"yyy\",\"yyyy\",\n\"Y\",\"Yo\",\"YY\",\"YYY\",\"YYYY\",\n\"Q\",\"Qo\",\"QQ\",\"QQQ\",\"QQQQ\",\"QQQQQ\",\n\"M\",\"Mo\",\"MM\",\"MMM\",\"MMMM\",\"MMMMM\",\n\"E\",\"EE\",\"EEE\",\"EEEE\",\"EEEEE\",\"EEEEEE\",\n\"a\",\"aa\",\"aaa\",\"aaaa\",\"aaaaa\",\n\"d\",\"do\",\"dd\",\n\"D\",\"Do\",\"DD\",\"DDD\",\n\"w\",\"wo\",\"ww\",\n\"s\",\"so\",\"ss\",\n\"m\",\"mo\",\"mm\",\n\"h\",\"ho\",\"hh\",\n\"H\",\"Ho\",\"HH\",\n\"z\",\"zz\",\"zzz\",\"zzzz\",\n\"T\",\n] as const\n\ntype Format = (typeof FORMATS)[number]\n\ninterface FormatDateOptions {\n locale: string\n format: Format\n timeZone?: string\n}\n\nfunction ordinal(num: string | number) {\n const n = typeof num === \"string\" ? parseFloat(num) : num\n let suffix = \"th\"\n if (n % 10 === 1 && n % 100 !== 11) {\n suffix = \"st\"\n } else if (n % 10 === 2 && n % 100 !== 12) {\n suffix = \"nd\"\n } else if (n % 10 === 3 && n % 100 !== 13) {\n suffix = \"rd\"\n }\n return `${n}${suffix}`\n}\n\nfunction pad(num: number, length: number) {\n return String(num).padStart(length, \"0\")\n}\n\nfunction zone(str: string) {\n return str.split(/AM|PM/)[1].trim()\n}\n\nfunction getFormat(date: Date, options: FormatDateOptions) {\n const { locale, format, timeZone } = options\n\n switch (format) {\n // era\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return date.toLocaleString(locale, { era: \"short\" })\n case \"GGGG\":\n return date.toLocaleString(locale, { era: \"long\" })\n case \"GGGGG\":\n return date.toLocaleString(locale, { era: \"narrow\" })\n\n // year\n case \"y\":\n case \"Y\":\n return date.getFullYear()\n case \"yo\":\n case \"Yo\":\n return ordinal(date.toLocaleString(locale, { year: \"numeric\" }))\n case \"yy\":\n case \"YY\":\n return date.toLocaleString(locale, { year: \"2-digit\" })\n case \"yyy\":\n case \"YYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(3, \"0\")\n case \"yyyy\":\n case \"YYYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(4, \"0\")\n\n // quarter\n case \"Q\":\n case \"QQQQQ\":\n return Math.ceil((date.getMonth() + 1) / 3)\n case \"Qo\":\n return ordinal(Math.ceil((date.getMonth() + 1) / 3))\n case \"QQ\":\n return pad(Math.ceil((date.getMonth() + 1) / 3), 2)\n case \"QQQ\":\n return `Q${Math.ceil((date.getMonth() + 1) / 3)}`\n case \"QQQQ\": {\n const base = ordinal(String(Math.ceil((date.getMonth() + 1) / 3)))\n return `${base} quarter`\n }\n\n // month\n case \"M\":\n return date.getMonth() + 1\n case \"Mo\":\n return ordinal(date.getMonth() + 1)\n case \"MM\":\n return date.toLocaleString(locale, { month: \"2-digit\" })\n case \"MMM\":\n return date.toLocaleString(locale, { month: \"short\" })\n case \"MMMM\":\n return date.toLocaleString(locale, { month: \"long\" })\n case \"MMMMM\":\n return date.toLocaleString(locale, { month: \"narrow\" })\n\n // week\n case \"w\":\n return Math.ceil(date.getDate() / 7)\n case \"wo\":\n return ordinal(Math.ceil(date.getDate() / 7))\n case \"ww\":\n return pad(Math.ceil(date.getDate() / 7), 2)\n\n // day\n case \"d\":\n case \"D\":\n return date.getDate()\n case \"do\":\n case \"Do\":\n return ordinal(date.getDate())\n case \"dd\":\n case \"DD\":\n return date.toLocaleString(locale, { day: \"2-digit\" })\n case \"DDD\":\n return pad(date.getDate(), 3)\n\n // weekday\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return date.toLocaleString(locale, { weekday: \"short\" })\n case \"EEEE\":\n return date.toLocaleString(locale, { weekday: \"long\" })\n case \"EEEEE\":\n return date.toLocaleString(locale, { weekday: \"narrow\" })\n case \"EEEEEE\":\n return date.toLocaleString(locale, { weekday: \"short\" }).slice(0, 2)\n\n // hour\n case \"h\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true })\n case \"ho\":\n return ordinal(date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }))\n case \"hh\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: true })\n case \"H\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: false })\n case \"Ho\":\n return ordinal(+date.toLocaleString(locale, { hour: \"numeric\", hour12: false }))\n case \"HH\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: false })\n\n // minute\n case \"m\":\n return date.toLocaleString(locale, { minute: \"numeric\" })\n case \"mo\":\n return ordinal(date.toLocaleString(locale, { minute: \"numeric\" }))\n case \"mm\":\n return date.toLocaleString(locale, { minute: \"2-digit\" })\n\n // second\n case \"s\":\n return date.toLocaleString(locale, { second: \"numeric\" })\n case \"so\":\n return ordinal(date.toLocaleString(locale, { second: \"numeric\" }))\n case \"ss\":\n return date.toLocaleString(locale, { second: \"2-digit\" })\n\n // timestamp\n case \"T\":\n return date.getTime()\n\n // day period\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleUpperCase()\n case \"aaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleLowerCase()\n case \"aaaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).charAt(0)\n\n // TODO:Revise this\n case \"z\":\n case \"zz\":\n case \"zzz\": {\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"shortOffset\" }))\n }\n case \"zzzz\":\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"longOffset\" }))\n\n default:\n throw new Error(`Unknown format: ${format}`)\n }\n}\n\n/**\n * Formats a date using the given format string as defined in:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n */\nexport function formatDate(date: Date, format: string, locale: string, timeZone?: string) {\n let result = format\n for (const key of FORMATS) {\n const res = getFormat(date, { locale, format: key, timeZone })\n result = result.replace(createRegEx(key), \"$1\" + res + \"$3\")\n }\n return result\n}\n","import { i18nCache } from \"./cache\"\n\nconst getListFormatter = i18nCache(Intl.ListFormat)\n\nexport function formatList(list: string[], locale: string, options: Intl.ListFormatOptions = {}) {\n const formatter = getListFormatter(locale, options)\n return formatter.format(list)\n}\n","import { i18nCache } from \"./cache\"\n\nconst getRelativeTimeFormatter = i18nCache(Intl.RelativeTimeFormat)\n\nexport function formatRelativeTime(value: Date, locale: string, options: Intl.RelativeTimeFormatOptions = {}) {\n const rtf = getRelativeTimeFormatter(locale, options)\n\n const now = new Date()\n const diff = getDistance(now, value)\n\n if (diff.years > 0) return rtf.format(diff.years * diff.sign, \"year\")\n if (diff.months > 0) return rtf.format(diff.months * diff.sign, \"month\")\n if (diff.weeks > 0) return rtf.format(diff.weeks * diff.sign, \"week\")\n if (diff.days > 0) return rtf.format(diff.days * diff.sign, \"day\")\n if (diff.hours > 0) return rtf.format(diff.hours * diff.sign, \"hour\")\n if (diff.minutes > 0) return rtf.format(diff.minutes * diff.sign, \"minute\")\n\n return rtf.format(diff.seconds * diff.sign, \"second\")\n}\n\nconst SECOND_TO_MS = 1000\nconst MINUTE_TO_MS = 1000 * 60\nconst HOUR_TO_MS = 1000 * 60 * 60\nconst DAY_TO_MS = 1000 * 60 * 60 * 24\nconst WEEK_TO_MS = 1000 * 60 * 60 * 24 * 7\nconst MONTH_TO_MS = 1000 * 60 * 60 * 24 * 30\nconst YEAR_TO_MS = 1000 * 60 * 60 * 24 * 365\n\nfunction getDistance(startDate: Date, endDate: Date) {\n const endTime = endDate.getTime()\n const startTime = startDate.getTime()\n const distance = Math.abs(endTime - startTime)\n\n return {\n sign: Math.sign(endTime - startTime),\n days: Math.floor(distance / DAY_TO_MS),\n hours: Math.floor((distance % DAY_TO_MS) / HOUR_TO_MS),\n minutes: Math.floor((distance % HOUR_TO_MS) / MINUTE_TO_MS),\n seconds: Math.floor((distance % MINUTE_TO_MS) / SECOND_TO_MS),\n weeks: Math.floor(distance / WEEK_TO_MS),\n months: Math.floor(distance / MONTH_TO_MS),\n years: Math.floor(distance / YEAR_TO_MS),\n }\n}\n","const RTL_SCRIPTS = new Set([\n \"Avst\",\n \"Arab\",\n \"Armi\",\n \"Syrc\",\n \"Samr\",\n \"Mand\",\n \"Thaa\",\n \"Mend\",\n \"Nkoo\",\n \"Adlm\",\n \"Rohg\",\n \"Hebr\",\n])\n\nconst RTL_LANGS = new Set([\n \"ae\",\n \"ar\",\n \"arc\",\n \"bcc\",\n \"bqi\",\n \"ckb\",\n \"dv\",\n \"fa\",\n \"glk\",\n \"he\",\n \"ku\",\n \"mzn\",\n \"nqo\",\n \"pnb\",\n \"ps\",\n \"sd\",\n \"ug\",\n \"ur\",\n \"yi\",\n])\n\nexport function isRTL(locale: string) {\n if (Intl.Locale) {\n const script = new Intl.Locale(locale).maximize().script ?? \"\"\n return RTL_SCRIPTS.has(script)\n }\n\n const lang = locale.split(\"-\")[0]\n return RTL_LANGS.has(lang)\n}\n\nexport function getLocaleDir(locale: string) {\n return isRTL(locale) ? \"rtl\" : \"ltr\"\n}\n","import { isRTL } from \"./is-rtl\"\n\nexport type Direction = \"rtl\" | \"ltr\"\n\nexport interface Locale {\n locale: string\n dir: Direction\n}\n\ndeclare global {\n interface Navigator {\n userLanguage?: string\n }\n}\n\nexport function getDefaultLocale(): Locale {\n let locale = (typeof navigator !== \"undefined\" && (navigator.language || navigator.userLanguage)) || \"en-US\"\n\n try {\n Intl.DateTimeFormat.supportedLocalesOf([locale])\n } catch (_err) {\n locale = \"en-US\"\n }\n\n return {\n locale,\n dir: isRTL(locale) ? \"rtl\" : \"ltr\",\n }\n}\n","import { getWindow } from \"@zag-js/dom-query\"\nimport { getDefaultLocale, type Locale } from \"./locale\"\n\nexport interface LocaleOptions {\n locale?: string\n getRootNode?: () => ShadowRoot | Document | Node\n onLocaleChange?: (locale: Locale) => void\n}\n\nexport function trackLocale(options: LocaleOptions = {}) {\n const { getRootNode, onLocaleChange } = options\n\n onLocaleChange?.(getDefaultLocale())\n\n const handleLocaleChange = () => {\n onLocaleChange?.(getDefaultLocale())\n }\n\n const win = getRootNode ? getWindow(getRootNode()) : window\n\n win.addEventListener(\"languagechange\", handleLocaleChange)\n\n return () => {\n win.removeEventListener(\"languagechange\", handleLocaleChange)\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/cache.ts","../src/format-number.ts","../src/format-bytes.ts","../src/format-date.ts","../src/format-list.ts","../src/format-relative-time.ts","../src/is-rtl.ts","../src/locale.ts","../src/track-locale.ts"],"sourcesContent":["export * from \"./format-bytes\"\nexport * from \"./format-date\"\nexport * from \"./format-list\"\nexport * from \"./format-number\"\nexport * from \"./format-relative-time\"\nexport { getLocaleDir, isRTL } from \"./is-rtl\"\nexport { getDefaultLocale } from \"./locale\"\nexport type { Locale } from \"./locale\"\nexport { trackLocale } from \"./track-locale\"\nexport type { LocaleOptions } from \"./track-locale\"\n","type FormatOptions<T> = T extends Intl.NumberFormat\n ? Intl.NumberFormatOptions\n : T extends Intl.DateTimeFormat\n ? Intl.DateTimeFormatOptions\n : T extends Intl.RelativeTimeFormat\n ? Intl.RelativeTimeFormatOptions\n : T extends Intl.ListFormat\n ? Intl.ListFormatOptions\n : T extends Intl.PluralRules\n ? Intl.PluralRulesOptions\n : never\n\nexport function i18nCache<T extends abstract new (...args: any) => any>(Ins: T) {\n const formatterCache = new Map<string, T>()\n\n return function create(locale: string, options?: FormatOptions<InstanceType<T>>): InstanceType<T> {\n const cacheKey =\n locale +\n (options\n ? Object.entries(options)\n .sort((a, b) => (a[0] < b[0] ? -1 : 1))\n .join()\n : \"\")\n\n if (formatterCache.has(cacheKey)) {\n return formatterCache.get(cacheKey) as any\n }\n\n // @ts-ignore\n let formatter = new Ins(locale, options)\n formatterCache.set(cacheKey, formatter)\n\n return formatter as any\n }\n}\n","import { i18nCache } from \"./cache\"\n\nconst getNumberFormatter = i18nCache(Intl.NumberFormat)\n\nexport function formatNumber(v: number, locale: string, options: Intl.NumberFormatOptions = {}) {\n const formatter = getNumberFormatter(locale, options)\n return formatter.format(v)\n}\n","import { formatNumber } from \"./format-number\"\n\nconst bitPrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\"]\nconst bytePrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\"]\n\nexport interface FormatBytesOptions {\n unit?: \"bit\" | \"byte\"\n unitDisplay?: \"long\" | \"short\" | \"narrow\"\n}\n\nexport const formatBytes = (bytes: number, locale = \"en-US\", options: FormatBytesOptions = {}) => {\n if (isNaN(bytes)) return \"\"\n if (bytes === 0) return \"0 B\"\n\n const { unit = \"byte\", unitDisplay = \"short\" } = options\n\n const prefix = unit === \"bit\" ? bitPrefixes : bytePrefixes\n const index = Math.max(0, Math.min(Math.floor(Math.log10(bytes) / 3), prefix.length - 1))\n\n const _unit = prefix[index] + unit\n const _unitDisplay = unitDisplay || \"short\"\n\n const v = parseFloat((bytes / Math.pow(1000, index)).toPrecision(3))\n\n return formatNumber(v, locale, {\n style: \"unit\",\n unit: _unit,\n unitDisplay: _unitDisplay,\n })\n}\n","const symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\"\n\nfunction createRegEx(sign: string) {\n return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\")\n}\n\n// prettier-ignore\nconst FORMATS = [\n\"G\",\"GG\",\"GGG\",\"GGGG\",\"GGGGG\",\n\"y\",\"yo\",\"yy\",\"yyy\",\"yyyy\",\n\"Y\",\"Yo\",\"YY\",\"YYY\",\"YYYY\",\n\"Q\",\"Qo\",\"QQ\",\"QQQ\",\"QQQQ\",\"QQQQQ\",\n\"M\",\"Mo\",\"MM\",\"MMM\",\"MMMM\",\"MMMMM\",\n\"E\",\"EE\",\"EEE\",\"EEEE\",\"EEEEE\",\"EEEEEE\",\n\"a\",\"aa\",\"aaa\",\"aaaa\",\"aaaaa\",\n\"d\",\"do\",\"dd\",\n\"D\",\"Do\",\"DD\",\"DDD\",\n\"w\",\"wo\",\"ww\",\n\"s\",\"so\",\"ss\",\n\"m\",\"mo\",\"mm\",\n\"h\",\"ho\",\"hh\",\n\"H\",\"Ho\",\"HH\",\n\"z\",\"zz\",\"zzz\",\"zzzz\",\n\"T\",\n] as const\n\ntype Format = (typeof FORMATS)[number]\n\ninterface FormatDateOptions {\n locale: string\n format: Format\n timeZone?: string\n}\n\nfunction ordinal(num: string | number) {\n const n = typeof num === \"string\" ? parseFloat(num) : num\n let suffix = \"th\"\n if (n % 10 === 1 && n % 100 !== 11) {\n suffix = \"st\"\n } else if (n % 10 === 2 && n % 100 !== 12) {\n suffix = \"nd\"\n } else if (n % 10 === 3 && n % 100 !== 13) {\n suffix = \"rd\"\n }\n return `${n}${suffix}`\n}\n\nfunction pad(num: number, length: number) {\n return String(num).padStart(length, \"0\")\n}\n\nfunction zone(str: string) {\n return str.split(/AM|PM/)[1].trim()\n}\n\nfunction getFormat(date: Date, options: FormatDateOptions) {\n const { locale, format, timeZone } = options\n\n switch (format) {\n // era\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return date.toLocaleString(locale, { era: \"short\" })\n case \"GGGG\":\n return date.toLocaleString(locale, { era: \"long\" })\n case \"GGGGG\":\n return date.toLocaleString(locale, { era: \"narrow\" })\n\n // year\n case \"y\":\n case \"Y\":\n return date.getFullYear()\n case \"yo\":\n case \"Yo\":\n return ordinal(date.toLocaleString(locale, { year: \"numeric\" }))\n case \"yy\":\n case \"YY\":\n return date.toLocaleString(locale, { year: \"2-digit\" })\n case \"yyy\":\n case \"YYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(3, \"0\")\n case \"yyyy\":\n case \"YYYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(4, \"0\")\n\n // quarter\n case \"Q\":\n case \"QQQQQ\":\n return Math.ceil((date.getMonth() + 1) / 3)\n case \"Qo\":\n return ordinal(Math.ceil((date.getMonth() + 1) / 3))\n case \"QQ\":\n return pad(Math.ceil((date.getMonth() + 1) / 3), 2)\n case \"QQQ\":\n return `Q${Math.ceil((date.getMonth() + 1) / 3)}`\n case \"QQQQ\": {\n const base = ordinal(String(Math.ceil((date.getMonth() + 1) / 3)))\n return `${base} quarter`\n }\n\n // month\n case \"M\":\n return date.getMonth() + 1\n case \"Mo\":\n return ordinal(date.getMonth() + 1)\n case \"MM\":\n return date.toLocaleString(locale, { month: \"2-digit\" })\n case \"MMM\":\n return date.toLocaleString(locale, { month: \"short\" })\n case \"MMMM\":\n return date.toLocaleString(locale, { month: \"long\" })\n case \"MMMMM\":\n return date.toLocaleString(locale, { month: \"narrow\" })\n\n // week\n case \"w\":\n return Math.ceil(date.getDate() / 7)\n case \"wo\":\n return ordinal(Math.ceil(date.getDate() / 7))\n case \"ww\":\n return pad(Math.ceil(date.getDate() / 7), 2)\n\n // day\n case \"d\":\n case \"D\":\n return date.getDate()\n case \"do\":\n case \"Do\":\n return ordinal(date.getDate())\n case \"dd\":\n case \"DD\":\n return date.toLocaleString(locale, { day: \"2-digit\" })\n case \"DDD\":\n return pad(date.getDate(), 3)\n\n // weekday\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return date.toLocaleString(locale, { weekday: \"short\" })\n case \"EEEE\":\n return date.toLocaleString(locale, { weekday: \"long\" })\n case \"EEEEE\":\n return date.toLocaleString(locale, { weekday: \"narrow\" })\n case \"EEEEEE\":\n return date.toLocaleString(locale, { weekday: \"short\" }).slice(0, 2)\n\n // hour\n case \"h\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true })\n case \"ho\":\n return ordinal(date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }))\n case \"hh\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: true })\n case \"H\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: false })\n case \"Ho\":\n return ordinal(+date.toLocaleString(locale, { hour: \"numeric\", hour12: false }))\n case \"HH\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: false })\n\n // minute\n case \"m\":\n return date.toLocaleString(locale, { minute: \"numeric\" })\n case \"mo\":\n return ordinal(date.toLocaleString(locale, { minute: \"numeric\" }))\n case \"mm\":\n return date.toLocaleString(locale, { minute: \"2-digit\" })\n\n // second\n case \"s\":\n return date.toLocaleString(locale, { second: \"numeric\" })\n case \"so\":\n return ordinal(date.toLocaleString(locale, { second: \"numeric\" }))\n case \"ss\":\n return date.toLocaleString(locale, { second: \"2-digit\" })\n\n // timestamp\n case \"T\":\n return date.getTime()\n\n // day period\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleUpperCase()\n case \"aaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleLowerCase()\n case \"aaaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).charAt(0)\n\n // TODO:Revise this\n case \"z\":\n case \"zz\":\n case \"zzz\": {\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"shortOffset\" }))\n }\n case \"zzzz\":\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"longOffset\" }))\n\n default:\n throw new Error(`Unknown format: ${format}`)\n }\n}\n\n/**\n * Formats a date using the given format string as defined in:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n */\nexport function formatDate(date: Date, format: string, locale: string, timeZone?: string) {\n let result = format\n for (const key of FORMATS) {\n const res = getFormat(date, { locale, format: key, timeZone })\n result = result.replace(createRegEx(key), \"$1\" + res + \"$3\")\n }\n return result\n}\n","import { i18nCache } from \"./cache\"\n\nconst getListFormatter = i18nCache(Intl.ListFormat)\n\nexport function formatList(list: string[], locale: string, options: Intl.ListFormatOptions = {}) {\n const formatter = getListFormatter(locale, options)\n return formatter.format(list)\n}\n","import { i18nCache } from \"./cache\"\n\nconst getRelativeTimeFormatter = i18nCache(Intl.RelativeTimeFormat)\n\nexport function formatRelativeTime(value: Date, locale: string, options: Intl.RelativeTimeFormatOptions = {}) {\n const rtf = getRelativeTimeFormatter(locale, options)\n\n const now = new Date()\n const diff = getDistance(now, value)\n\n if (diff.years > 0) return rtf.format(diff.years * diff.sign, \"year\")\n if (diff.months > 0) return rtf.format(diff.months * diff.sign, \"month\")\n if (diff.weeks > 0) return rtf.format(diff.weeks * diff.sign, \"week\")\n if (diff.days > 0) return rtf.format(diff.days * diff.sign, \"day\")\n if (diff.hours > 0) return rtf.format(diff.hours * diff.sign, \"hour\")\n if (diff.minutes > 0) return rtf.format(diff.minutes * diff.sign, \"minute\")\n\n return rtf.format(diff.seconds * diff.sign, \"second\")\n}\n\nconst SECOND_TO_MS = 1000\nconst MINUTE_TO_MS = 1000 * 60\nconst HOUR_TO_MS = 1000 * 60 * 60\nconst DAY_TO_MS = 1000 * 60 * 60 * 24\nconst WEEK_TO_MS = 1000 * 60 * 60 * 24 * 7\nconst MONTH_TO_MS = 1000 * 60 * 60 * 24 * 30\nconst YEAR_TO_MS = 1000 * 60 * 60 * 24 * 365\n\nfunction getDistance(startDate: Date, endDate: Date) {\n const endTime = endDate.getTime()\n const startTime = startDate.getTime()\n const distance = Math.abs(endTime - startTime)\n\n return {\n sign: Math.sign(endTime - startTime),\n days: Math.floor(distance / DAY_TO_MS),\n hours: Math.floor((distance % DAY_TO_MS) / HOUR_TO_MS),\n minutes: Math.floor((distance % HOUR_TO_MS) / MINUTE_TO_MS),\n seconds: Math.floor((distance % MINUTE_TO_MS) / SECOND_TO_MS),\n weeks: Math.floor(distance / WEEK_TO_MS),\n months: Math.floor(distance / MONTH_TO_MS),\n years: Math.floor(distance / YEAR_TO_MS),\n }\n}\n","const RTL_SCRIPTS = new Set([\n \"Avst\",\n \"Arab\",\n \"Armi\",\n \"Syrc\",\n \"Samr\",\n \"Mand\",\n \"Thaa\",\n \"Mend\",\n \"Nkoo\",\n \"Adlm\",\n \"Rohg\",\n \"Hebr\",\n])\n\nconst RTL_LANGS = new Set([\n \"ae\",\n \"ar\",\n \"arc\",\n \"bcc\",\n \"bqi\",\n \"ckb\",\n \"dv\",\n \"fa\",\n \"glk\",\n \"he\",\n \"ku\",\n \"mzn\",\n \"nqo\",\n \"pnb\",\n \"ps\",\n \"sd\",\n \"ug\",\n \"ur\",\n \"yi\",\n])\n\nexport function isRTL(locale: string) {\n if (Intl.Locale) {\n const script = new Intl.Locale(locale).maximize().script ?? \"\"\n return RTL_SCRIPTS.has(script)\n }\n\n const lang = locale.split(\"-\")[0]\n return RTL_LANGS.has(lang)\n}\n\nexport function getLocaleDir(locale: string) {\n return isRTL(locale) ? \"rtl\" : \"ltr\"\n}\n","import { isRTL } from \"./is-rtl\"\n\nexport type Direction = \"rtl\" | \"ltr\"\n\nexport interface Locale {\n locale: string\n dir: Direction\n}\n\ndeclare global {\n interface Navigator {\n userLanguage?: string\n }\n}\n\nexport function getDefaultLocale(): Locale {\n let locale = (typeof navigator !== \"undefined\" && (navigator.language || navigator.userLanguage)) || \"en-US\"\n\n try {\n Intl.DateTimeFormat.supportedLocalesOf([locale])\n } catch {\n locale = \"en-US\"\n }\n\n return {\n locale,\n dir: isRTL(locale) ? \"rtl\" : \"ltr\",\n }\n}\n","import { getWindow } from \"@zag-js/dom-query\"\nimport { getDefaultLocale, type Locale } from \"./locale\"\n\nexport interface LocaleOptions {\n locale?: string\n getRootNode?: () => ShadowRoot | Document | Node\n onLocaleChange?: (locale: Locale) => void\n}\n\nexport function trackLocale(options: LocaleOptions = {}) {\n const { getRootNode, onLocaleChange } = options\n\n onLocaleChange?.(getDefaultLocale())\n\n const handleLocaleChange = () => {\n onLocaleChange?.(getDefaultLocale())\n }\n\n const win = getRootNode ? getWindow(getRootNode()) : window\n\n win.addEventListener(\"languagechange\", handleLocaleChange)\n\n return () => {\n win.removeEventListener(\"languagechange\", handleLocaleChange)\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -357,7 +357,7 @@ function getDefaultLocale() {
|
|
|
357
357
|
let locale = typeof navigator !== "undefined" && (navigator.language || navigator.userLanguage) || "en-US";
|
|
358
358
|
try {
|
|
359
359
|
Intl.DateTimeFormat.supportedLocalesOf([locale]);
|
|
360
|
-
} catch
|
|
360
|
+
} catch {
|
|
361
361
|
locale = "en-US";
|
|
362
362
|
}
|
|
363
363
|
return {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache.ts","../src/format-number.ts","../src/format-bytes.ts","../src/format-date.ts","../src/format-list.ts","../src/format-relative-time.ts","../src/is-rtl.ts","../src/locale.ts","../src/track-locale.ts"],"sourcesContent":["type FormatOptions<T> = T extends Intl.NumberFormat\n ? Intl.NumberFormatOptions\n : T extends Intl.DateTimeFormat\n ? Intl.DateTimeFormatOptions\n : T extends Intl.RelativeTimeFormat\n ? Intl.RelativeTimeFormatOptions\n : T extends Intl.ListFormat\n ? Intl.ListFormatOptions\n : T extends Intl.PluralRules\n ? Intl.PluralRulesOptions\n : never\n\nexport function i18nCache<T extends abstract new (...args: any) => any>(Ins: T) {\n const formatterCache = new Map<string, T>()\n\n return function create(locale: string, options?: FormatOptions<InstanceType<T>>): InstanceType<T> {\n const cacheKey =\n locale +\n (options\n ? Object.entries(options)\n .sort((a, b) => (a[0] < b[0] ? -1 : 1))\n .join()\n : \"\")\n\n if (formatterCache.has(cacheKey)) {\n return formatterCache.get(cacheKey) as any\n }\n\n // @ts-ignore\n let formatter = new Ins(locale, options)\n formatterCache.set(cacheKey, formatter)\n\n return formatter as any\n }\n}\n","import { i18nCache } from \"./cache\"\n\nconst getNumberFormatter = i18nCache(Intl.NumberFormat)\n\nexport function formatNumber(v: number, locale: string, options: Intl.NumberFormatOptions = {}) {\n const formatter = getNumberFormatter(locale, options)\n return formatter.format(v)\n}\n","import { formatNumber } from \"./format-number\"\n\nconst bitPrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\"]\nconst bytePrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\"]\n\nexport interface FormatBytesOptions {\n unit?: \"bit\" | \"byte\"\n unitDisplay?: \"long\" | \"short\" | \"narrow\"\n}\n\nexport const formatBytes = (bytes: number, locale = \"en-US\", options: FormatBytesOptions = {}) => {\n if (isNaN(bytes)) return \"\"\n if (bytes === 0) return \"0 B\"\n\n const { unit = \"byte\", unitDisplay = \"short\" } = options\n\n const prefix = unit === \"bit\" ? bitPrefixes : bytePrefixes\n const index = Math.max(0, Math.min(Math.floor(Math.log10(bytes) / 3), prefix.length - 1))\n\n const _unit = prefix[index] + unit\n const _unitDisplay = unitDisplay || \"short\"\n\n const v = parseFloat((bytes / Math.pow(1000, index)).toPrecision(3))\n\n return formatNumber(v, locale, {\n style: \"unit\",\n unit: _unit,\n unitDisplay: _unitDisplay,\n })\n}\n","const symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\"\n\nfunction createRegEx(sign: string) {\n return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\")\n}\n\n// prettier-ignore\nconst FORMATS = [\n\"G\",\"GG\",\"GGG\",\"GGGG\",\"GGGGG\",\n\"y\",\"yo\",\"yy\",\"yyy\",\"yyyy\",\n\"Y\",\"Yo\",\"YY\",\"YYY\",\"YYYY\",\n\"Q\",\"Qo\",\"QQ\",\"QQQ\",\"QQQQ\",\"QQQQQ\",\n\"M\",\"Mo\",\"MM\",\"MMM\",\"MMMM\",\"MMMMM\",\n\"E\",\"EE\",\"EEE\",\"EEEE\",\"EEEEE\",\"EEEEEE\",\n\"a\",\"aa\",\"aaa\",\"aaaa\",\"aaaaa\",\n\"d\",\"do\",\"dd\",\n\"D\",\"Do\",\"DD\",\"DDD\",\n\"w\",\"wo\",\"ww\",\n\"s\",\"so\",\"ss\",\n\"m\",\"mo\",\"mm\",\n\"h\",\"ho\",\"hh\",\n\"H\",\"Ho\",\"HH\",\n\"z\",\"zz\",\"zzz\",\"zzzz\",\n\"T\",\n] as const\n\ntype Format = (typeof FORMATS)[number]\n\ninterface FormatDateOptions {\n locale: string\n format: Format\n timeZone?: string\n}\n\nfunction ordinal(num: string | number) {\n const n = typeof num === \"string\" ? parseFloat(num) : num\n let suffix = \"th\"\n if (n % 10 === 1 && n % 100 !== 11) {\n suffix = \"st\"\n } else if (n % 10 === 2 && n % 100 !== 12) {\n suffix = \"nd\"\n } else if (n % 10 === 3 && n % 100 !== 13) {\n suffix = \"rd\"\n }\n return `${n}${suffix}`\n}\n\nfunction pad(num: number, length: number) {\n return String(num).padStart(length, \"0\")\n}\n\nfunction zone(str: string) {\n return str.split(/AM|PM/)[1].trim()\n}\n\nfunction getFormat(date: Date, options: FormatDateOptions) {\n const { locale, format, timeZone } = options\n\n switch (format) {\n // era\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return date.toLocaleString(locale, { era: \"short\" })\n case \"GGGG\":\n return date.toLocaleString(locale, { era: \"long\" })\n case \"GGGGG\":\n return date.toLocaleString(locale, { era: \"narrow\" })\n\n // year\n case \"y\":\n case \"Y\":\n return date.getFullYear()\n case \"yo\":\n case \"Yo\":\n return ordinal(date.toLocaleString(locale, { year: \"numeric\" }))\n case \"yy\":\n case \"YY\":\n return date.toLocaleString(locale, { year: \"2-digit\" })\n case \"yyy\":\n case \"YYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(3, \"0\")\n case \"yyyy\":\n case \"YYYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(4, \"0\")\n\n // quarter\n case \"Q\":\n case \"QQQQQ\":\n return Math.ceil((date.getMonth() + 1) / 3)\n case \"Qo\":\n return ordinal(Math.ceil((date.getMonth() + 1) / 3))\n case \"QQ\":\n return pad(Math.ceil((date.getMonth() + 1) / 3), 2)\n case \"QQQ\":\n return `Q${Math.ceil((date.getMonth() + 1) / 3)}`\n case \"QQQQ\": {\n const base = ordinal(String(Math.ceil((date.getMonth() + 1) / 3)))\n return `${base} quarter`\n }\n\n // month\n case \"M\":\n return date.getMonth() + 1\n case \"Mo\":\n return ordinal(date.getMonth() + 1)\n case \"MM\":\n return date.toLocaleString(locale, { month: \"2-digit\" })\n case \"MMM\":\n return date.toLocaleString(locale, { month: \"short\" })\n case \"MMMM\":\n return date.toLocaleString(locale, { month: \"long\" })\n case \"MMMMM\":\n return date.toLocaleString(locale, { month: \"narrow\" })\n\n // week\n case \"w\":\n return Math.ceil(date.getDate() / 7)\n case \"wo\":\n return ordinal(Math.ceil(date.getDate() / 7))\n case \"ww\":\n return pad(Math.ceil(date.getDate() / 7), 2)\n\n // day\n case \"d\":\n case \"D\":\n return date.getDate()\n case \"do\":\n case \"Do\":\n return ordinal(date.getDate())\n case \"dd\":\n case \"DD\":\n return date.toLocaleString(locale, { day: \"2-digit\" })\n case \"DDD\":\n return pad(date.getDate(), 3)\n\n // weekday\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return date.toLocaleString(locale, { weekday: \"short\" })\n case \"EEEE\":\n return date.toLocaleString(locale, { weekday: \"long\" })\n case \"EEEEE\":\n return date.toLocaleString(locale, { weekday: \"narrow\" })\n case \"EEEEEE\":\n return date.toLocaleString(locale, { weekday: \"short\" }).slice(0, 2)\n\n // hour\n case \"h\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true })\n case \"ho\":\n return ordinal(date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }))\n case \"hh\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: true })\n case \"H\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: false })\n case \"Ho\":\n return ordinal(+date.toLocaleString(locale, { hour: \"numeric\", hour12: false }))\n case \"HH\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: false })\n\n // minute\n case \"m\":\n return date.toLocaleString(locale, { minute: \"numeric\" })\n case \"mo\":\n return ordinal(date.toLocaleString(locale, { minute: \"numeric\" }))\n case \"mm\":\n return date.toLocaleString(locale, { minute: \"2-digit\" })\n\n // second\n case \"s\":\n return date.toLocaleString(locale, { second: \"numeric\" })\n case \"so\":\n return ordinal(date.toLocaleString(locale, { second: \"numeric\" }))\n case \"ss\":\n return date.toLocaleString(locale, { second: \"2-digit\" })\n\n // timestamp\n case \"T\":\n return date.getTime()\n\n // day period\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleUpperCase()\n case \"aaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleLowerCase()\n case \"aaaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).charAt(0)\n\n // TODO:Revise this\n case \"z\":\n case \"zz\":\n case \"zzz\": {\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"shortOffset\" }))\n }\n case \"zzzz\":\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"longOffset\" }))\n\n default:\n throw new Error(`Unknown format: ${format}`)\n }\n}\n\n/**\n * Formats a date using the given format string as defined in:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n */\nexport function formatDate(date: Date, format: string, locale: string, timeZone?: string) {\n let result = format\n for (const key of FORMATS) {\n const res = getFormat(date, { locale, format: key, timeZone })\n result = result.replace(createRegEx(key), \"$1\" + res + \"$3\")\n }\n return result\n}\n","import { i18nCache } from \"./cache\"\n\nconst getListFormatter = i18nCache(Intl.ListFormat)\n\nexport function formatList(list: string[], locale: string, options: Intl.ListFormatOptions = {}) {\n const formatter = getListFormatter(locale, options)\n return formatter.format(list)\n}\n","import { i18nCache } from \"./cache\"\n\nconst getRelativeTimeFormatter = i18nCache(Intl.RelativeTimeFormat)\n\nexport function formatRelativeTime(value: Date, locale: string, options: Intl.RelativeTimeFormatOptions = {}) {\n const rtf = getRelativeTimeFormatter(locale, options)\n\n const now = new Date()\n const diff = getDistance(now, value)\n\n if (diff.years > 0) return rtf.format(diff.years * diff.sign, \"year\")\n if (diff.months > 0) return rtf.format(diff.months * diff.sign, \"month\")\n if (diff.weeks > 0) return rtf.format(diff.weeks * diff.sign, \"week\")\n if (diff.days > 0) return rtf.format(diff.days * diff.sign, \"day\")\n if (diff.hours > 0) return rtf.format(diff.hours * diff.sign, \"hour\")\n if (diff.minutes > 0) return rtf.format(diff.minutes * diff.sign, \"minute\")\n\n return rtf.format(diff.seconds * diff.sign, \"second\")\n}\n\nconst SECOND_TO_MS = 1000\nconst MINUTE_TO_MS = 1000 * 60\nconst HOUR_TO_MS = 1000 * 60 * 60\nconst DAY_TO_MS = 1000 * 60 * 60 * 24\nconst WEEK_TO_MS = 1000 * 60 * 60 * 24 * 7\nconst MONTH_TO_MS = 1000 * 60 * 60 * 24 * 30\nconst YEAR_TO_MS = 1000 * 60 * 60 * 24 * 365\n\nfunction getDistance(startDate: Date, endDate: Date) {\n const endTime = endDate.getTime()\n const startTime = startDate.getTime()\n const distance = Math.abs(endTime - startTime)\n\n return {\n sign: Math.sign(endTime - startTime),\n days: Math.floor(distance / DAY_TO_MS),\n hours: Math.floor((distance % DAY_TO_MS) / HOUR_TO_MS),\n minutes: Math.floor((distance % HOUR_TO_MS) / MINUTE_TO_MS),\n seconds: Math.floor((distance % MINUTE_TO_MS) / SECOND_TO_MS),\n weeks: Math.floor(distance / WEEK_TO_MS),\n months: Math.floor(distance / MONTH_TO_MS),\n years: Math.floor(distance / YEAR_TO_MS),\n }\n}\n","const RTL_SCRIPTS = new Set([\n \"Avst\",\n \"Arab\",\n \"Armi\",\n \"Syrc\",\n \"Samr\",\n \"Mand\",\n \"Thaa\",\n \"Mend\",\n \"Nkoo\",\n \"Adlm\",\n \"Rohg\",\n \"Hebr\",\n])\n\nconst RTL_LANGS = new Set([\n \"ae\",\n \"ar\",\n \"arc\",\n \"bcc\",\n \"bqi\",\n \"ckb\",\n \"dv\",\n \"fa\",\n \"glk\",\n \"he\",\n \"ku\",\n \"mzn\",\n \"nqo\",\n \"pnb\",\n \"ps\",\n \"sd\",\n \"ug\",\n \"ur\",\n \"yi\",\n])\n\nexport function isRTL(locale: string) {\n if (Intl.Locale) {\n const script = new Intl.Locale(locale).maximize().script ?? \"\"\n return RTL_SCRIPTS.has(script)\n }\n\n const lang = locale.split(\"-\")[0]\n return RTL_LANGS.has(lang)\n}\n\nexport function getLocaleDir(locale: string) {\n return isRTL(locale) ? \"rtl\" : \"ltr\"\n}\n","import { isRTL } from \"./is-rtl\"\n\nexport type Direction = \"rtl\" | \"ltr\"\n\nexport interface Locale {\n locale: string\n dir: Direction\n}\n\ndeclare global {\n interface Navigator {\n userLanguage?: string\n }\n}\n\nexport function getDefaultLocale(): Locale {\n let locale = (typeof navigator !== \"undefined\" && (navigator.language || navigator.userLanguage)) || \"en-US\"\n\n try {\n Intl.DateTimeFormat.supportedLocalesOf([locale])\n } catch (_err) {\n locale = \"en-US\"\n }\n\n return {\n locale,\n dir: isRTL(locale) ? \"rtl\" : \"ltr\",\n }\n}\n","import { getWindow } from \"@zag-js/dom-query\"\nimport { getDefaultLocale, type Locale } from \"./locale\"\n\nexport interface LocaleOptions {\n locale?: string\n getRootNode?: () => ShadowRoot | Document | Node\n onLocaleChange?: (locale: Locale) => void\n}\n\nexport function trackLocale(options: LocaleOptions = {}) {\n const { getRootNode, onLocaleChange } = options\n\n onLocaleChange?.(getDefaultLocale())\n\n const handleLocaleChange = () => {\n onLocaleChange?.(getDefaultLocale())\n }\n\n const win = getRootNode ? getWindow(getRootNode()) : window\n\n win.addEventListener(\"languagechange\", handleLocaleChange)\n\n return () => {\n win.removeEventListener(\"languagechange\", handleLocaleChange)\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/cache.ts","../src/format-number.ts","../src/format-bytes.ts","../src/format-date.ts","../src/format-list.ts","../src/format-relative-time.ts","../src/is-rtl.ts","../src/locale.ts","../src/track-locale.ts"],"sourcesContent":["type FormatOptions<T> = T extends Intl.NumberFormat\n ? Intl.NumberFormatOptions\n : T extends Intl.DateTimeFormat\n ? Intl.DateTimeFormatOptions\n : T extends Intl.RelativeTimeFormat\n ? Intl.RelativeTimeFormatOptions\n : T extends Intl.ListFormat\n ? Intl.ListFormatOptions\n : T extends Intl.PluralRules\n ? Intl.PluralRulesOptions\n : never\n\nexport function i18nCache<T extends abstract new (...args: any) => any>(Ins: T) {\n const formatterCache = new Map<string, T>()\n\n return function create(locale: string, options?: FormatOptions<InstanceType<T>>): InstanceType<T> {\n const cacheKey =\n locale +\n (options\n ? Object.entries(options)\n .sort((a, b) => (a[0] < b[0] ? -1 : 1))\n .join()\n : \"\")\n\n if (formatterCache.has(cacheKey)) {\n return formatterCache.get(cacheKey) as any\n }\n\n // @ts-ignore\n let formatter = new Ins(locale, options)\n formatterCache.set(cacheKey, formatter)\n\n return formatter as any\n }\n}\n","import { i18nCache } from \"./cache\"\n\nconst getNumberFormatter = i18nCache(Intl.NumberFormat)\n\nexport function formatNumber(v: number, locale: string, options: Intl.NumberFormatOptions = {}) {\n const formatter = getNumberFormatter(locale, options)\n return formatter.format(v)\n}\n","import { formatNumber } from \"./format-number\"\n\nconst bitPrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\"]\nconst bytePrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\"]\n\nexport interface FormatBytesOptions {\n unit?: \"bit\" | \"byte\"\n unitDisplay?: \"long\" | \"short\" | \"narrow\"\n}\n\nexport const formatBytes = (bytes: number, locale = \"en-US\", options: FormatBytesOptions = {}) => {\n if (isNaN(bytes)) return \"\"\n if (bytes === 0) return \"0 B\"\n\n const { unit = \"byte\", unitDisplay = \"short\" } = options\n\n const prefix = unit === \"bit\" ? bitPrefixes : bytePrefixes\n const index = Math.max(0, Math.min(Math.floor(Math.log10(bytes) / 3), prefix.length - 1))\n\n const _unit = prefix[index] + unit\n const _unitDisplay = unitDisplay || \"short\"\n\n const v = parseFloat((bytes / Math.pow(1000, index)).toPrecision(3))\n\n return formatNumber(v, locale, {\n style: \"unit\",\n unit: _unit,\n unitDisplay: _unitDisplay,\n })\n}\n","const symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\"\n\nfunction createRegEx(sign: string) {\n return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\")\n}\n\n// prettier-ignore\nconst FORMATS = [\n\"G\",\"GG\",\"GGG\",\"GGGG\",\"GGGGG\",\n\"y\",\"yo\",\"yy\",\"yyy\",\"yyyy\",\n\"Y\",\"Yo\",\"YY\",\"YYY\",\"YYYY\",\n\"Q\",\"Qo\",\"QQ\",\"QQQ\",\"QQQQ\",\"QQQQQ\",\n\"M\",\"Mo\",\"MM\",\"MMM\",\"MMMM\",\"MMMMM\",\n\"E\",\"EE\",\"EEE\",\"EEEE\",\"EEEEE\",\"EEEEEE\",\n\"a\",\"aa\",\"aaa\",\"aaaa\",\"aaaaa\",\n\"d\",\"do\",\"dd\",\n\"D\",\"Do\",\"DD\",\"DDD\",\n\"w\",\"wo\",\"ww\",\n\"s\",\"so\",\"ss\",\n\"m\",\"mo\",\"mm\",\n\"h\",\"ho\",\"hh\",\n\"H\",\"Ho\",\"HH\",\n\"z\",\"zz\",\"zzz\",\"zzzz\",\n\"T\",\n] as const\n\ntype Format = (typeof FORMATS)[number]\n\ninterface FormatDateOptions {\n locale: string\n format: Format\n timeZone?: string\n}\n\nfunction ordinal(num: string | number) {\n const n = typeof num === \"string\" ? parseFloat(num) : num\n let suffix = \"th\"\n if (n % 10 === 1 && n % 100 !== 11) {\n suffix = \"st\"\n } else if (n % 10 === 2 && n % 100 !== 12) {\n suffix = \"nd\"\n } else if (n % 10 === 3 && n % 100 !== 13) {\n suffix = \"rd\"\n }\n return `${n}${suffix}`\n}\n\nfunction pad(num: number, length: number) {\n return String(num).padStart(length, \"0\")\n}\n\nfunction zone(str: string) {\n return str.split(/AM|PM/)[1].trim()\n}\n\nfunction getFormat(date: Date, options: FormatDateOptions) {\n const { locale, format, timeZone } = options\n\n switch (format) {\n // era\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return date.toLocaleString(locale, { era: \"short\" })\n case \"GGGG\":\n return date.toLocaleString(locale, { era: \"long\" })\n case \"GGGGG\":\n return date.toLocaleString(locale, { era: \"narrow\" })\n\n // year\n case \"y\":\n case \"Y\":\n return date.getFullYear()\n case \"yo\":\n case \"Yo\":\n return ordinal(date.toLocaleString(locale, { year: \"numeric\" }))\n case \"yy\":\n case \"YY\":\n return date.toLocaleString(locale, { year: \"2-digit\" })\n case \"yyy\":\n case \"YYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(3, \"0\")\n case \"yyyy\":\n case \"YYYY\":\n return date.toLocaleString(locale, { year: \"numeric\" }).padStart(4, \"0\")\n\n // quarter\n case \"Q\":\n case \"QQQQQ\":\n return Math.ceil((date.getMonth() + 1) / 3)\n case \"Qo\":\n return ordinal(Math.ceil((date.getMonth() + 1) / 3))\n case \"QQ\":\n return pad(Math.ceil((date.getMonth() + 1) / 3), 2)\n case \"QQQ\":\n return `Q${Math.ceil((date.getMonth() + 1) / 3)}`\n case \"QQQQ\": {\n const base = ordinal(String(Math.ceil((date.getMonth() + 1) / 3)))\n return `${base} quarter`\n }\n\n // month\n case \"M\":\n return date.getMonth() + 1\n case \"Mo\":\n return ordinal(date.getMonth() + 1)\n case \"MM\":\n return date.toLocaleString(locale, { month: \"2-digit\" })\n case \"MMM\":\n return date.toLocaleString(locale, { month: \"short\" })\n case \"MMMM\":\n return date.toLocaleString(locale, { month: \"long\" })\n case \"MMMMM\":\n return date.toLocaleString(locale, { month: \"narrow\" })\n\n // week\n case \"w\":\n return Math.ceil(date.getDate() / 7)\n case \"wo\":\n return ordinal(Math.ceil(date.getDate() / 7))\n case \"ww\":\n return pad(Math.ceil(date.getDate() / 7), 2)\n\n // day\n case \"d\":\n case \"D\":\n return date.getDate()\n case \"do\":\n case \"Do\":\n return ordinal(date.getDate())\n case \"dd\":\n case \"DD\":\n return date.toLocaleString(locale, { day: \"2-digit\" })\n case \"DDD\":\n return pad(date.getDate(), 3)\n\n // weekday\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return date.toLocaleString(locale, { weekday: \"short\" })\n case \"EEEE\":\n return date.toLocaleString(locale, { weekday: \"long\" })\n case \"EEEEE\":\n return date.toLocaleString(locale, { weekday: \"narrow\" })\n case \"EEEEEE\":\n return date.toLocaleString(locale, { weekday: \"short\" }).slice(0, 2)\n\n // hour\n case \"h\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true })\n case \"ho\":\n return ordinal(date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }))\n case \"hh\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: true })\n case \"H\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: false })\n case \"Ho\":\n return ordinal(+date.toLocaleString(locale, { hour: \"numeric\", hour12: false }))\n case \"HH\":\n return date.toLocaleString(locale, { hour: \"2-digit\", hour12: false })\n\n // minute\n case \"m\":\n return date.toLocaleString(locale, { minute: \"numeric\" })\n case \"mo\":\n return ordinal(date.toLocaleString(locale, { minute: \"numeric\" }))\n case \"mm\":\n return date.toLocaleString(locale, { minute: \"2-digit\" })\n\n // second\n case \"s\":\n return date.toLocaleString(locale, { second: \"numeric\" })\n case \"so\":\n return ordinal(date.toLocaleString(locale, { second: \"numeric\" }))\n case \"ss\":\n return date.toLocaleString(locale, { second: \"2-digit\" })\n\n // timestamp\n case \"T\":\n return date.getTime()\n\n // day period\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleUpperCase()\n case \"aaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleLowerCase()\n case \"aaaaa\":\n return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).charAt(0)\n\n // TODO:Revise this\n case \"z\":\n case \"zz\":\n case \"zzz\": {\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"shortOffset\" }))\n }\n case \"zzzz\":\n return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"longOffset\" }))\n\n default:\n throw new Error(`Unknown format: ${format}`)\n }\n}\n\n/**\n * Formats a date using the given format string as defined in:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n */\nexport function formatDate(date: Date, format: string, locale: string, timeZone?: string) {\n let result = format\n for (const key of FORMATS) {\n const res = getFormat(date, { locale, format: key, timeZone })\n result = result.replace(createRegEx(key), \"$1\" + res + \"$3\")\n }\n return result\n}\n","import { i18nCache } from \"./cache\"\n\nconst getListFormatter = i18nCache(Intl.ListFormat)\n\nexport function formatList(list: string[], locale: string, options: Intl.ListFormatOptions = {}) {\n const formatter = getListFormatter(locale, options)\n return formatter.format(list)\n}\n","import { i18nCache } from \"./cache\"\n\nconst getRelativeTimeFormatter = i18nCache(Intl.RelativeTimeFormat)\n\nexport function formatRelativeTime(value: Date, locale: string, options: Intl.RelativeTimeFormatOptions = {}) {\n const rtf = getRelativeTimeFormatter(locale, options)\n\n const now = new Date()\n const diff = getDistance(now, value)\n\n if (diff.years > 0) return rtf.format(diff.years * diff.sign, \"year\")\n if (diff.months > 0) return rtf.format(diff.months * diff.sign, \"month\")\n if (diff.weeks > 0) return rtf.format(diff.weeks * diff.sign, \"week\")\n if (diff.days > 0) return rtf.format(diff.days * diff.sign, \"day\")\n if (diff.hours > 0) return rtf.format(diff.hours * diff.sign, \"hour\")\n if (diff.minutes > 0) return rtf.format(diff.minutes * diff.sign, \"minute\")\n\n return rtf.format(diff.seconds * diff.sign, \"second\")\n}\n\nconst SECOND_TO_MS = 1000\nconst MINUTE_TO_MS = 1000 * 60\nconst HOUR_TO_MS = 1000 * 60 * 60\nconst DAY_TO_MS = 1000 * 60 * 60 * 24\nconst WEEK_TO_MS = 1000 * 60 * 60 * 24 * 7\nconst MONTH_TO_MS = 1000 * 60 * 60 * 24 * 30\nconst YEAR_TO_MS = 1000 * 60 * 60 * 24 * 365\n\nfunction getDistance(startDate: Date, endDate: Date) {\n const endTime = endDate.getTime()\n const startTime = startDate.getTime()\n const distance = Math.abs(endTime - startTime)\n\n return {\n sign: Math.sign(endTime - startTime),\n days: Math.floor(distance / DAY_TO_MS),\n hours: Math.floor((distance % DAY_TO_MS) / HOUR_TO_MS),\n minutes: Math.floor((distance % HOUR_TO_MS) / MINUTE_TO_MS),\n seconds: Math.floor((distance % MINUTE_TO_MS) / SECOND_TO_MS),\n weeks: Math.floor(distance / WEEK_TO_MS),\n months: Math.floor(distance / MONTH_TO_MS),\n years: Math.floor(distance / YEAR_TO_MS),\n }\n}\n","const RTL_SCRIPTS = new Set([\n \"Avst\",\n \"Arab\",\n \"Armi\",\n \"Syrc\",\n \"Samr\",\n \"Mand\",\n \"Thaa\",\n \"Mend\",\n \"Nkoo\",\n \"Adlm\",\n \"Rohg\",\n \"Hebr\",\n])\n\nconst RTL_LANGS = new Set([\n \"ae\",\n \"ar\",\n \"arc\",\n \"bcc\",\n \"bqi\",\n \"ckb\",\n \"dv\",\n \"fa\",\n \"glk\",\n \"he\",\n \"ku\",\n \"mzn\",\n \"nqo\",\n \"pnb\",\n \"ps\",\n \"sd\",\n \"ug\",\n \"ur\",\n \"yi\",\n])\n\nexport function isRTL(locale: string) {\n if (Intl.Locale) {\n const script = new Intl.Locale(locale).maximize().script ?? \"\"\n return RTL_SCRIPTS.has(script)\n }\n\n const lang = locale.split(\"-\")[0]\n return RTL_LANGS.has(lang)\n}\n\nexport function getLocaleDir(locale: string) {\n return isRTL(locale) ? \"rtl\" : \"ltr\"\n}\n","import { isRTL } from \"./is-rtl\"\n\nexport type Direction = \"rtl\" | \"ltr\"\n\nexport interface Locale {\n locale: string\n dir: Direction\n}\n\ndeclare global {\n interface Navigator {\n userLanguage?: string\n }\n}\n\nexport function getDefaultLocale(): Locale {\n let locale = (typeof navigator !== \"undefined\" && (navigator.language || navigator.userLanguage)) || \"en-US\"\n\n try {\n Intl.DateTimeFormat.supportedLocalesOf([locale])\n } catch {\n locale = \"en-US\"\n }\n\n return {\n locale,\n dir: isRTL(locale) ? \"rtl\" : \"ltr\",\n }\n}\n","import { getWindow } from \"@zag-js/dom-query\"\nimport { getDefaultLocale, type Locale } from \"./locale\"\n\nexport interface LocaleOptions {\n locale?: string\n getRootNode?: () => ShadowRoot | Document | Node\n onLocaleChange?: (locale: Locale) => void\n}\n\nexport function trackLocale(options: LocaleOptions = {}) {\n const { getRootNode, onLocaleChange } = options\n\n onLocaleChange?.(getDefaultLocale())\n\n const handleLocaleChange = () => {\n onLocaleChange?.(getDefaultLocale())\n }\n\n const win = getRootNode ? getWindow(getRootNode()) : window\n\n win.addEventListener(\"languagechange\", handleLocaleChange)\n\n return () => {\n win.removeEventListener(\"languagechange\", handleLocaleChange)\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zag-js/i18n-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.65.1",
|
|
4
4
|
"description": "Interationalization utilities for Zag.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"clean-package": "../../../clean-package.config.json",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@zag-js/dom-query": "0.
|
|
27
|
+
"@zag-js/dom-query": "0.65.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"clean-package": "2.2.0",
|