UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

1 lines 1.69 kB
{"version":3,"file":"i18n-cache.cjs","names":[],"sources":["../../../../src/providers/i18n-provider/i18n-cache.ts"],"sourcesContent":["interface FormatOptions<Y> {\n options: Y extends Intl.NumberFormat\n ? Intl.NumberFormatOptions\n : Y extends Intl.DateTimeFormat\n ? Intl.DateTimeFormatOptions\n : Y extends Intl.RelativeTimeFormat\n ? Intl.RelativeTimeFormatOptions\n : Y extends Intl.ListFormat\n ? Intl.ListFormatOptions\n : Y extends Intl.PluralRules\n ? Intl.PluralRulesOptions\n : Y extends Intl.Collator\n ? Intl.CollatorOptions\n : never\n}\n\nexport const i18nCache = <Y extends abstract new (...args: any) => any>(\n Instance: Y,\n) => {\n const formatterCache = new Map<string, Y>()\n\n return function create(\n locale: string,\n options?: FormatOptions<InstanceType<Y>>[\"options\"],\n ): InstanceType<Y> {\n const key =\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(key))\n return formatterCache.get(key) as InstanceType<Y>\n\n // @ts-ignore\n const formatter = new Instance(locale, options)\n\n formatterCache.set(key, formatter)\n\n return formatter as any\n }\n}\n"],"mappings":";;AAgBA,MAAa,aACX,aACG;CACH,MAAM,iCAAiB,IAAI,KAAgB;AAE3C,QAAO,SAAS,OACd,QACA,SACiB;EACjB,MAAM,MACJ,UACC,UACG,OAAO,QAAQ,QAAQ,CACpB,MAAM,GAAG,MAAO,EAAE,KAAK,EAAE,KAAK,KAAK,EAAG,CACtC,MAAM,GACT;AAEN,MAAI,eAAe,IAAI,IAAI,CACzB,QAAO,eAAe,IAAI,IAAI;EAGhC,MAAM,YAAY,IAAI,SAAS,QAAQ,QAAQ;AAE/C,iBAAe,IAAI,KAAK,UAAU;AAElC,SAAO"}