{"version":3,"file":"index.cjs","sources":["../../localization/index.js"],"sourcesContent":["import { LocaleManager, RawBundleSource, useI18N } from '@dialpad/i18n-vue2';\n\nimport enUS from './en-US.ftl?raw';\nimport zhCN from './zh-CN.ftl?raw';\nimport nlNL from './nl-NL.ftl?raw';\nimport frFR from './fr-FR.ftl?raw';\nimport deDE from './de-DE.ftl?raw';\nimport itIT from './it-IT.ftl?raw';\nimport jaJP from './ja-JP.ftl?raw';\nimport ptBR from './pt-BR.ftl?raw';\nimport ruRU from './ru-RU.ftl?raw';\nimport esLA from './es-LA.ftl?raw';\n\nconst dialtoneNamespace = 'dialtone';\nconst allowedLocales = {\n  ENGLISH: 'en-US',\n  CHINESE: 'zh-CN',\n  DUTCH: 'nl-NL',\n  FRENCH: 'fr-FR',\n  GERMAN: 'de-DE',\n  ITALIAN: 'it-IT',\n  JAPANESE: 'ja-JP',\n  PORTUGUESE: 'pt-BR',\n  RUSSIAN: 'ru-RU',\n  SPANISH: 'es-LA',\n};\nconst fallbackLocale = 'en-US';\n\nexport class DialtoneLocalization {\n  constructor (locale = null) {\n    if (typeof DialtoneLocalization.instance === 'object') {\n      return DialtoneLocalization.instance;\n    }\n\n    this._locale = locale || DialtoneLocalization.getPreferredLocale();\n\n    const bundleSource = new RawBundleSource({\n      resources: RawBundleSource.builtResources([\n        ['en-US', dialtoneNamespace, enUS],\n        ['zh-CN', dialtoneNamespace, zhCN],\n        ['nl-NL', dialtoneNamespace, nlNL],\n        ['fr-FR', dialtoneNamespace, frFR],\n        ['de-DE', dialtoneNamespace, deDE],\n        ['it-IT', dialtoneNamespace, itIT],\n        ['ja-JP', dialtoneNamespace, jaJP],\n        ['pt-BR', dialtoneNamespace, ptBR],\n        ['ru-RU', dialtoneNamespace, ruRU],\n        ['es-LA', dialtoneNamespace, esLA],\n      ]),\n    });\n\n    const localeManager = new LocaleManager({\n      bundleSource,\n      allowedLocales: Object.values(allowedLocales),\n      fallbackLocale,\n      preferredLocale: this._locale,\n      namespaces: [dialtoneNamespace],\n    });\n\n    localeManager.install(dialtoneNamespace);\n\n    DialtoneLocalization.instance = this;\n\n    if (typeof window !== 'undefined') {\n      /**\n       * @description\n       * When the browser storage changes, update the current locale\n       * @param event\n       */\n      window.onstorage = (event) => {\n        if (event.key === 'user-locale') {\n          this.currentLocale = event.newValue;\n        }\n      };\n    }\n\n    return this;\n  }\n\n  static getPreferredLocale () {\n    if (typeof window === 'undefined' || !window.localStorage) {\n      return fallbackLocale;\n    }\n\n    const localStorageLanguage = window.localStorage.getItem('user-locale');\n\n    // Get the first two letters of the navigator language and check if it's in the allowed locales\n    const navigatorLanguage = Object.values(allowedLocales)\n      .find(locale => locale.startsWith(navigator.language.slice(0, 2)));\n\n    return localStorageLanguage || navigatorLanguage || fallbackLocale;\n  }\n\n  static getAllowedLocales () {\n    return allowedLocales;\n  }\n\n  $t (...args) {\n    return useI18N(dialtoneNamespace).$t(...args);\n  }\n\n  $ta (...args) {\n    return useI18N(dialtoneNamespace).$ta(...args);\n  }\n\n  get currentLocale () {\n    return this._locale;\n  }\n\n  set currentLocale (newLocale) {\n    if (newLocale === this._locale) return;\n    if (!Object.values(allowedLocales).includes(newLocale)) {\n      throw new Error(`Locale ${newLocale} is not allowed, please use one of the following: ${Object.values(allowedLocales).join(', ')}`);\n    }\n\n    this._locale = newLocale;\n    useI18N(dialtoneNamespace).setI18N({ preferredLocale: newLocale }, dialtoneNamespace);\n  }\n}\n"],"names":["dialtoneNamespace","allowedLocales","fallbackLocale","DialtoneLocalization","locale","bundleSource","RawBundleSource","enUS","zhCN","nlNL","frFR","deDE","itIT","jaJP","ptBR","ruRU","esLA","LocaleManager","event","localStorageLanguage","navigatorLanguage","args","useI18N","newLocale"],"mappings":"gXAaMA,EAAoB,WACpBC,EAAiB,CACrB,QAAS,QACT,QAAS,QACT,MAAO,QACP,OAAQ,QACR,OAAQ,QACR,QAAS,QACT,SAAU,QACV,WAAY,QACZ,QAAS,QACT,QAAS,OACX,EACMC,EAAiB,QAEhB,MAAMC,CAAqB,CAChC,YAAaC,EAAS,KAAM,CAC1B,GAAI,OAAOD,EAAqB,UAAa,SAC3C,OAAOA,EAAqB,SAG9B,KAAK,QAAUC,GAAUD,EAAqB,mBAAkB,EAEhE,MAAME,EAAe,IAAIC,kBAAgB,CACvC,UAAWA,EAAAA,gBAAgB,eAAe,CACxC,CAAC,QAASN,EAAmBO,SAAI,EACjC,CAAC,QAASP,EAAmBQ,SAAI,EACjC,CAAC,QAASR,EAAmBS,SAAI,EACjC,CAAC,QAAST,EAAmBU,SAAI,EACjC,CAAC,QAASV,EAAmBW,SAAI,EACjC,CAAC,QAASX,EAAmBY,SAAI,EACjC,CAAC,QAASZ,EAAmBa,SAAI,EACjC,CAAC,QAASb,EAAmBc,SAAI,EACjC,CAAC,QAASd,EAAmBe,SAAI,EACjC,CAAC,QAASf,EAAmBgB,SAAI,CACzC,CAAO,CACP,CAAK,EAUD,OARsB,IAAIC,gBAAc,CACtC,aAAAZ,EACA,eAAgB,OAAO,OAAOJ,CAAc,EAC5C,eAAAC,EACA,gBAAiB,KAAK,QACtB,WAAY,CAACF,CAAiB,CACpC,CAAK,EAEa,QAAQA,CAAiB,EAEvCG,EAAqB,SAAW,KAE5B,OAAO,OAAW,MAMpB,OAAO,UAAae,GAAU,CACxBA,EAAM,MAAQ,gBAChB,KAAK,cAAgBA,EAAM,SAE/B,GAGK,IACT,CAEA,OAAO,oBAAsB,CAC3B,GAAI,OAAO,OAAW,KAAe,CAAC,OAAO,aAC3C,OAAOhB,EAGT,MAAMiB,EAAuB,OAAO,aAAa,QAAQ,aAAa,EAGhEC,EAAoB,OAAO,OAAOnB,CAAc,EACnD,KAAKG,GAAUA,EAAO,WAAW,UAAU,SAAS,MAAM,EAAG,CAAC,CAAC,CAAC,EAEnE,OAAOe,GAAwBC,GAAqBlB,CACtD,CAEA,OAAO,mBAAqB,CAC1B,OAAOD,CACT,CAEA,MAAOoB,EAAM,CACX,OAAOC,EAAAA,QAAQtB,CAAiB,EAAE,GAAG,GAAGqB,CAAI,CAC9C,CAEA,OAAQA,EAAM,CACZ,OAAOC,EAAAA,QAAQtB,CAAiB,EAAE,IAAI,GAAGqB,CAAI,CAC/C,CAEA,IAAI,eAAiB,CACnB,OAAO,KAAK,OACd,CAEA,IAAI,cAAeE,EAAW,CAC5B,GAAIA,IAAc,KAAK,QACvB,IAAI,CAAC,OAAO,OAAOtB,CAAc,EAAE,SAASsB,CAAS,EACnD,MAAM,IAAI,MAAM,UAAUA,CAAS,qDAAqD,OAAO,OAAOtB,CAAc,EAAE,KAAK,IAAI,CAAC,EAAE,EAGpI,KAAK,QAAUsB,EACfD,EAAAA,QAAQtB,CAAiB,EAAE,QAAQ,CAAE,gBAAiBuB,CAAS,EAAIvB,CAAiB,EACtF,CACF"}