@embedpdf/plugin-i18n 2.0.0-next.0 → 2.0.0-next.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/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.js +1 -0
- package/dist/vue/index.js.map +1 -1
- package/package.json +5 -5
package/dist/vue/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),a=require("@embedpdf/core/vue"),t=require("@embedpdf/plugin-i18n"),n=()=>a.useCapability(t.I18nPlugin.id),r=a=>{const{provides:t}=n(),r=e.ref(0);e.watch([t,()=>a?e.toValue(a):void 0],([e,a],t,n)=>{if(!e)return;const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),a=require("@embedpdf/core/vue"),t=require("@embedpdf/plugin-i18n"),n=()=>a.useCapability(t.I18nPlugin.id),r=a=>{const{provides:t}=n(),r=e.ref(0);e.watch([t,()=>a?e.toValue(a):void 0],([e,a],t,n)=>{if(!e)return;const l=e.onLocaleChange(()=>{r.value++}),o=a?e.forDocument(a).onParamsChanged(()=>{r.value++}):e.onParamsChanged(()=>{r.value++});n(()=>{l(),o()})},{immediate:!0});const l=e.computed(()=>{var e;return r.value,(null==(e=t.value)?void 0:e.getLocale())??"en"});return{translate:(n,l)=>{r.value;const o=t.value;if(!o)return(null==l?void 0:l.fallback)??n;const u=a?e.toValue(a):void 0;return o.t(n,{documentId:u,params:null==l?void 0:l.params,fallback:null==l?void 0:l.fallback})},locale:e.readonly(l)}},l=(a,t,n)=>{const{translate:l}=r(n);return e.computed(()=>l(a,t))},o=e.defineComponent({__name:"translate",props:{k:{},params:{},fallback:{},documentId:{}},setup(a){const t=a,n=l(t.k,{params:t.params,fallback:t.fallback},()=>t.documentId);return(a,t)=>(e.openBlock(),e.createElementBlock("span",null,e.toDisplayString(e.unref(n)),1))}});exports.Translate=o,exports.useI18nCapability=n,exports.useI18nPlugin=()=>a.usePlugin(t.I18nPlugin.id),exports.useLocale=()=>{const{provides:a}=n(),t=e.ref("en");return e.watch(a,(e,a,n)=>{if(!e)return;t.value=e.getLocale();n(e.onLocaleChange(({currentLocale:e})=>{t.value=e}))},{immediate:!0}),t},exports.useTranslation=l,exports.useTranslations=r,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/vue/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-i18n.ts","../../src/vue/components/translate.vue"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { I18nPlugin } from '@embedpdf/plugin-i18n';\n\nexport const useI18nCapability = () => useCapability<I18nPlugin>(I18nPlugin.id);\nexport const useI18nPlugin = () => usePlugin<I18nPlugin>(I18nPlugin.id);\n\n/**\n * Hook to get a translate function for a component\n * Automatically updates all translations on locale or param changes\n *\n * @param documentId - Optional document ID for document-scoped translations (can be ref, computed, getter, or plain value)\n * @returns translate function and current locale\n *\n * @example\n * const { translate, locale } = useTranslations(documentId);\n * // In template:\n * {{ translate('page.title') }}\n * {{ translate('page.count', { params: { count: 5 } }) }}\n * {{ translate('unknown.key', { fallback: 'Default Text' }) }}\n */\nexport const useTranslations = (documentId?: MaybeRefOrGetter<string | undefined>) => {\n const { provides } = useI18nCapability();\n const forceUpdateCounter = ref(0);\n\n // Watch for locale and params changes\n watch(\n [provides, () => (documentId ? toValue(documentId) : undefined)],\n ([providesValue, docId], _, onCleanup) => {\n if (!providesValue) return;\n\n // Subscribe to locale changes\n const unsubscribeLocale = providesValue.onLocaleChange(() => {\n forceUpdateCounter.value++;\n });\n\n // Subscribe to params changes\n const unsubscribeParams = docId\n ? providesValue.forDocument(docId).onParamsChanged(() => {\n forceUpdateCounter.value++;\n })\n : providesValue.onParamsChanged(() => {\n forceUpdateCounter.value++;\n });\n\n onCleanup(() => {\n unsubscribeLocale();\n unsubscribeParams();\n });\n },\n { immediate: true },\n );\n\n // Create translate function\n const translate = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n ): string => {\n // Access forceUpdateCounter to trigger reactivity\n forceUpdateCounter.value;\n\n const providesValue = provides.value;\n if (!providesValue) return options?.fallback ?? key;\n\n const docId = documentId ? toValue(documentId) : undefined;\n return providesValue.t(key, {\n documentId: docId,\n params: options?.params,\n fallback: options?.fallback,\n });\n };\n\n const locale = computed(() => provides.value?.getLocale() ?? 'en');\n\n return {\n translate,\n locale: readonly(locale),\n };\n};\n\n// Keep the old hook for single-key translations (useful for derived state)\nexport const useTranslation = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n documentId?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { translate } = useTranslations(documentId);\n return computed(() => translate(key, options));\n};\n\nexport const useLocale = () => {\n const { provides } = useI18nCapability();\n const locale = ref<string>('en');\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (!providesValue) return;\n\n locale.value = providesValue.getLocale();\n\n const unsubscribe = providesValue.onLocaleChange(({ currentLocale }) => {\n locale.value = currentLocale;\n });\n\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return locale;\n};\n","<script setup lang=\"ts\">\nimport { useTranslation } from '../hooks/use-i18n';\n\ninterface TranslateProps {\n k: string;\n params?: Record<string, string | number>;\n fallback?: string;\n documentId?: string;\n}\n\nconst props = defineProps<TranslateProps>();\nconst translation = useTranslation(\n props.k,\n { params: props.params, fallback: props.fallback },\n () => props.documentId,\n);\n</script>\n\n<template>\n <span>{{ translation }}</span>\n</template>\n"],"names":["useI18nCapability","useCapability","I18nPlugin","id","useTranslations","documentId","provides","forceUpdateCounter","ref","watch","toValue","providesValue","docId","_","onCleanup","unsubscribeLocale","onLocaleChange","value","unsubscribeParams","forDocument","onParamsChanged","immediate","locale","computed","_a","getLocale","translate","key","options","fallback","t","params","readonly","useTranslation","props","__props","translation","k","_openBlock","_createElementBlock","_unref","usePlugin","currentLocale"],"mappings":"0KAIaA,EAAoB,IAAMC,gBAA0BC,EAAAA,WAAWC,IAiB/DC,EAAmBC,IAC9B,MAAMC,SAAEA,GAAaN,IACfO,EAAqBC,EAAAA,IAAI,GAG/BC,EAAAA,MACE,CAACH,EAAU,IAAOD,EAAaK,EAAAA,QAAQL,QAAc,GACrD,EAAEM,EAAeC,GAAQC,EAAGC,KAC1B,IAAKH,EAAe,OAGpB,MAAMI,EAAoBJ,EAAcK,eAAe,KACrDT,EAAmBU,UAIfC,EAAoBN,EACtBD,EAAcQ,YAAYP,GAAOQ,gBAAgB,KAC/Cb,EAAmBU,UAErBN,EAAcS,gBAAgB,KAC5Bb,EAAmBU,UAGzBH,EAAU,KACRC,IACAG,OAGJ,CAAEG,WAAW,IAIf,MAqBMC,EAASC,EAAAA,SAAS,
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-i18n.ts","../../src/vue/components/translate.vue"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { I18nPlugin } from '@embedpdf/plugin-i18n';\n\nexport const useI18nCapability = () => useCapability<I18nPlugin>(I18nPlugin.id);\nexport const useI18nPlugin = () => usePlugin<I18nPlugin>(I18nPlugin.id);\n\n/**\n * Hook to get a translate function for a component\n * Automatically updates all translations on locale or param changes\n *\n * @param documentId - Optional document ID for document-scoped translations (can be ref, computed, getter, or plain value)\n * @returns translate function and current locale\n *\n * @example\n * const { translate, locale } = useTranslations(documentId);\n * // In template:\n * {{ translate('page.title') }}\n * {{ translate('page.count', { params: { count: 5 } }) }}\n * {{ translate('unknown.key', { fallback: 'Default Text' }) }}\n */\nexport const useTranslations = (documentId?: MaybeRefOrGetter<string | undefined>) => {\n const { provides } = useI18nCapability();\n const forceUpdateCounter = ref(0);\n\n // Watch for locale and params changes\n watch(\n [provides, () => (documentId ? toValue(documentId) : undefined)],\n ([providesValue, docId], _, onCleanup) => {\n if (!providesValue) return;\n\n // Subscribe to locale changes\n const unsubscribeLocale = providesValue.onLocaleChange(() => {\n forceUpdateCounter.value++;\n });\n\n // Subscribe to params changes\n const unsubscribeParams = docId\n ? providesValue.forDocument(docId).onParamsChanged(() => {\n forceUpdateCounter.value++;\n })\n : providesValue.onParamsChanged(() => {\n forceUpdateCounter.value++;\n });\n\n onCleanup(() => {\n unsubscribeLocale();\n unsubscribeParams();\n });\n },\n { immediate: true },\n );\n\n // Create translate function\n const translate = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n ): string => {\n // Access forceUpdateCounter to trigger reactivity\n forceUpdateCounter.value;\n\n const providesValue = provides.value;\n if (!providesValue) return options?.fallback ?? key;\n\n const docId = documentId ? toValue(documentId) : undefined;\n return providesValue.t(key, {\n documentId: docId,\n params: options?.params,\n fallback: options?.fallback,\n });\n };\n\n const locale = computed(() => {\n // Access forceUpdateCounter to trigger reactivity when locale changes\n forceUpdateCounter.value;\n return provides.value?.getLocale() ?? 'en';\n });\n\n return {\n translate,\n locale: readonly(locale),\n };\n};\n\n// Keep the old hook for single-key translations (useful for derived state)\nexport const useTranslation = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n documentId?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { translate } = useTranslations(documentId);\n return computed(() => translate(key, options));\n};\n\nexport const useLocale = () => {\n const { provides } = useI18nCapability();\n const locale = ref<string>('en');\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (!providesValue) return;\n\n locale.value = providesValue.getLocale();\n\n const unsubscribe = providesValue.onLocaleChange(({ currentLocale }) => {\n locale.value = currentLocale;\n });\n\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return locale;\n};\n","<script setup lang=\"ts\">\nimport { useTranslation } from '../hooks/use-i18n';\n\ninterface TranslateProps {\n k: string;\n params?: Record<string, string | number>;\n fallback?: string;\n documentId?: string;\n}\n\nconst props = defineProps<TranslateProps>();\nconst translation = useTranslation(\n props.k,\n { params: props.params, fallback: props.fallback },\n () => props.documentId,\n);\n</script>\n\n<template>\n <span>{{ translation }}</span>\n</template>\n"],"names":["useI18nCapability","useCapability","I18nPlugin","id","useTranslations","documentId","provides","forceUpdateCounter","ref","watch","toValue","providesValue","docId","_","onCleanup","unsubscribeLocale","onLocaleChange","value","unsubscribeParams","forDocument","onParamsChanged","immediate","locale","computed","_a","getLocale","translate","key","options","fallback","t","params","readonly","useTranslation","props","__props","translation","k","_openBlock","_createElementBlock","_unref","usePlugin","currentLocale"],"mappings":"0KAIaA,EAAoB,IAAMC,gBAA0BC,EAAAA,WAAWC,IAiB/DC,EAAmBC,IAC9B,MAAMC,SAAEA,GAAaN,IACfO,EAAqBC,EAAAA,IAAI,GAG/BC,EAAAA,MACE,CAACH,EAAU,IAAOD,EAAaK,EAAAA,QAAQL,QAAc,GACrD,EAAEM,EAAeC,GAAQC,EAAGC,KAC1B,IAAKH,EAAe,OAGpB,MAAMI,EAAoBJ,EAAcK,eAAe,KACrDT,EAAmBU,UAIfC,EAAoBN,EACtBD,EAAcQ,YAAYP,GAAOQ,gBAAgB,KAC/Cb,EAAmBU,UAErBN,EAAcS,gBAAgB,KAC5Bb,EAAmBU,UAGzBH,EAAU,KACRC,IACAG,OAGJ,CAAEG,WAAW,IAIf,MAqBMC,EAASC,EAAAA,SAAS,WAGtB,OADAhB,EAAmBU,OACZ,OAAAO,EAAAlB,EAASW,YAAT,EAAAO,EAAgBC,cAAe,OAGxC,MAAO,CACLC,UA5BgB,CAChBC,EACAC,KAMArB,EAAmBU,MAEnB,MAAMN,EAAgBL,EAASW,MAC/B,IAAKN,EAAe,OAAO,MAAAiB,OAAA,EAAAA,EAASC,WAAYF,EAEhD,MAAMf,EAAQP,EAAaK,UAAQL,QAAc,EACjD,OAAOM,EAAcmB,EAAEH,EAAK,CAC1BtB,WAAYO,EACZmB,OAAQ,MAAAH,OAAA,EAAAA,EAASG,OACjBF,SAAU,MAAAD,OAAA,EAAAA,EAASC,YAYrBP,OAAQU,EAAAA,SAASV,KAKRW,EAAiB,CAC5BN,EACAC,EAIAvB,KAEA,MAAMqB,UAAEA,GAActB,EAAgBC,GACtC,OAAOkB,EAAAA,SAAS,IAAMG,EAAUC,EAAKC,uGCvFvC,MAAMM,EAAQC,EACRC,EAAcH,EAClBC,EAAMG,EACN,CAAEN,OAAQG,EAAMH,OAAQF,SAAUK,EAAML,UACxC,IAAMK,EAAM7B,0BAKZiC,EAAAA,YAAAC,EAAAA,mBAA8B,8BAArBC,QAAAJ,IAAW,6EDdO,IAAMK,YAAsBvC,EAAAA,WAAWC,sBA+F3C,KACvB,MAAMG,SAAEA,GAAaN,IACfsB,EAASd,EAAAA,IAAY,MAkB3B,OAhBAC,EAAAA,MACEH,EACA,CAACK,EAAeE,EAAGC,KACjB,IAAKH,EAAe,OAEpBW,EAAOL,MAAQN,EAAcc,YAM7BX,EAJoBH,EAAcK,eAAe,EAAG0B,oBAClDpB,EAAOL,MAAQyB,MAKnB,CAAErB,WAAW,IAGRC"}
|
package/dist/vue/index.js
CHANGED
package/dist/vue/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-i18n.ts","../../src/vue/components/translate.vue"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { I18nPlugin } from '@embedpdf/plugin-i18n';\n\nexport const useI18nCapability = () => useCapability<I18nPlugin>(I18nPlugin.id);\nexport const useI18nPlugin = () => usePlugin<I18nPlugin>(I18nPlugin.id);\n\n/**\n * Hook to get a translate function for a component\n * Automatically updates all translations on locale or param changes\n *\n * @param documentId - Optional document ID for document-scoped translations (can be ref, computed, getter, or plain value)\n * @returns translate function and current locale\n *\n * @example\n * const { translate, locale } = useTranslations(documentId);\n * // In template:\n * {{ translate('page.title') }}\n * {{ translate('page.count', { params: { count: 5 } }) }}\n * {{ translate('unknown.key', { fallback: 'Default Text' }) }}\n */\nexport const useTranslations = (documentId?: MaybeRefOrGetter<string | undefined>) => {\n const { provides } = useI18nCapability();\n const forceUpdateCounter = ref(0);\n\n // Watch for locale and params changes\n watch(\n [provides, () => (documentId ? toValue(documentId) : undefined)],\n ([providesValue, docId], _, onCleanup) => {\n if (!providesValue) return;\n\n // Subscribe to locale changes\n const unsubscribeLocale = providesValue.onLocaleChange(() => {\n forceUpdateCounter.value++;\n });\n\n // Subscribe to params changes\n const unsubscribeParams = docId\n ? providesValue.forDocument(docId).onParamsChanged(() => {\n forceUpdateCounter.value++;\n })\n : providesValue.onParamsChanged(() => {\n forceUpdateCounter.value++;\n });\n\n onCleanup(() => {\n unsubscribeLocale();\n unsubscribeParams();\n });\n },\n { immediate: true },\n );\n\n // Create translate function\n const translate = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n ): string => {\n // Access forceUpdateCounter to trigger reactivity\n forceUpdateCounter.value;\n\n const providesValue = provides.value;\n if (!providesValue) return options?.fallback ?? key;\n\n const docId = documentId ? toValue(documentId) : undefined;\n return providesValue.t(key, {\n documentId: docId,\n params: options?.params,\n fallback: options?.fallback,\n });\n };\n\n const locale = computed(() => provides.value?.getLocale() ?? 'en');\n\n return {\n translate,\n locale: readonly(locale),\n };\n};\n\n// Keep the old hook for single-key translations (useful for derived state)\nexport const useTranslation = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n documentId?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { translate } = useTranslations(documentId);\n return computed(() => translate(key, options));\n};\n\nexport const useLocale = () => {\n const { provides } = useI18nCapability();\n const locale = ref<string>('en');\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (!providesValue) return;\n\n locale.value = providesValue.getLocale();\n\n const unsubscribe = providesValue.onLocaleChange(({ currentLocale }) => {\n locale.value = currentLocale;\n });\n\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return locale;\n};\n","<script setup lang=\"ts\">\nimport { useTranslation } from '../hooks/use-i18n';\n\ninterface TranslateProps {\n k: string;\n params?: Record<string, string | number>;\n fallback?: string;\n documentId?: string;\n}\n\nconst props = defineProps<TranslateProps>();\nconst translation = useTranslation(\n props.k,\n { params: props.params, fallback: props.fallback },\n () => props.documentId,\n);\n</script>\n\n<template>\n <span>{{ translation }}</span>\n</template>\n"],"names":["_openBlock","_createElementBlock","_unref"],"mappings":";;;;AAIO,MAAM,oBAAoB,MAAM,cAA0B,WAAW,EAAE;AACvE,MAAM,gBAAgB,MAAM,UAAsB,WAAW,EAAE;AAgB/D,MAAM,kBAAkB,CAAC,eAAsD;AACpF,QAAM,EAAE,SAAA,IAAa,kBAAA;AACrB,QAAM,qBAAqB,IAAI,CAAC;AAGhC;AAAA,IACE,CAAC,UAAU,MAAO,aAAa,QAAQ,UAAU,IAAI,MAAU;AAAA,IAC/D,CAAC,CAAC,eAAe,KAAK,GAAG,GAAG,cAAc;AACxC,UAAI,CAAC,cAAe;AAGpB,YAAM,oBAAoB,cAAc,eAAe,MAAM;AAC3D,2BAAmB;AAAA,MACrB,CAAC;AAGD,YAAM,oBAAoB,QACtB,cAAc,YAAY,KAAK,EAAE,gBAAgB,MAAM;AACrD,2BAAmB;AAAA,MACrB,CAAC,IACD,cAAc,gBAAgB,MAAM;AAClC,2BAAmB;AAAA,MACrB,CAAC;AAEL,gBAAU,MAAM;AACd,0BAAA;AACA,0BAAA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,EAAE,WAAW,KAAA;AAAA,EAAK;AAIpB,QAAM,YAAY,CAChB,KACA,YAIW;AAEX,uBAAmB;AAEnB,UAAM,gBAAgB,SAAS;AAC/B,QAAI,CAAC,cAAe,SAAO,mCAAS,aAAY;AAEhD,UAAM,QAAQ,aAAa,QAAQ,UAAU,IAAI;AACjD,WAAO,cAAc,EAAE,KAAK;AAAA,MAC1B,YAAY;AAAA,MACZ,QAAQ,mCAAS;AAAA,MACjB,UAAU,mCAAS;AAAA,IAAA,CACpB;AAAA,EACH;AAEA,QAAM,SAAS,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-i18n.ts","../../src/vue/components/translate.vue"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { I18nPlugin } from '@embedpdf/plugin-i18n';\n\nexport const useI18nCapability = () => useCapability<I18nPlugin>(I18nPlugin.id);\nexport const useI18nPlugin = () => usePlugin<I18nPlugin>(I18nPlugin.id);\n\n/**\n * Hook to get a translate function for a component\n * Automatically updates all translations on locale or param changes\n *\n * @param documentId - Optional document ID for document-scoped translations (can be ref, computed, getter, or plain value)\n * @returns translate function and current locale\n *\n * @example\n * const { translate, locale } = useTranslations(documentId);\n * // In template:\n * {{ translate('page.title') }}\n * {{ translate('page.count', { params: { count: 5 } }) }}\n * {{ translate('unknown.key', { fallback: 'Default Text' }) }}\n */\nexport const useTranslations = (documentId?: MaybeRefOrGetter<string | undefined>) => {\n const { provides } = useI18nCapability();\n const forceUpdateCounter = ref(0);\n\n // Watch for locale and params changes\n watch(\n [provides, () => (documentId ? toValue(documentId) : undefined)],\n ([providesValue, docId], _, onCleanup) => {\n if (!providesValue) return;\n\n // Subscribe to locale changes\n const unsubscribeLocale = providesValue.onLocaleChange(() => {\n forceUpdateCounter.value++;\n });\n\n // Subscribe to params changes\n const unsubscribeParams = docId\n ? providesValue.forDocument(docId).onParamsChanged(() => {\n forceUpdateCounter.value++;\n })\n : providesValue.onParamsChanged(() => {\n forceUpdateCounter.value++;\n });\n\n onCleanup(() => {\n unsubscribeLocale();\n unsubscribeParams();\n });\n },\n { immediate: true },\n );\n\n // Create translate function\n const translate = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n ): string => {\n // Access forceUpdateCounter to trigger reactivity\n forceUpdateCounter.value;\n\n const providesValue = provides.value;\n if (!providesValue) return options?.fallback ?? key;\n\n const docId = documentId ? toValue(documentId) : undefined;\n return providesValue.t(key, {\n documentId: docId,\n params: options?.params,\n fallback: options?.fallback,\n });\n };\n\n const locale = computed(() => {\n // Access forceUpdateCounter to trigger reactivity when locale changes\n forceUpdateCounter.value;\n return provides.value?.getLocale() ?? 'en';\n });\n\n return {\n translate,\n locale: readonly(locale),\n };\n};\n\n// Keep the old hook for single-key translations (useful for derived state)\nexport const useTranslation = (\n key: string,\n options?: {\n params?: Record<string, string | number>;\n fallback?: string;\n },\n documentId?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { translate } = useTranslations(documentId);\n return computed(() => translate(key, options));\n};\n\nexport const useLocale = () => {\n const { provides } = useI18nCapability();\n const locale = ref<string>('en');\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (!providesValue) return;\n\n locale.value = providesValue.getLocale();\n\n const unsubscribe = providesValue.onLocaleChange(({ currentLocale }) => {\n locale.value = currentLocale;\n });\n\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return locale;\n};\n","<script setup lang=\"ts\">\nimport { useTranslation } from '../hooks/use-i18n';\n\ninterface TranslateProps {\n k: string;\n params?: Record<string, string | number>;\n fallback?: string;\n documentId?: string;\n}\n\nconst props = defineProps<TranslateProps>();\nconst translation = useTranslation(\n props.k,\n { params: props.params, fallback: props.fallback },\n () => props.documentId,\n);\n</script>\n\n<template>\n <span>{{ translation }}</span>\n</template>\n"],"names":["_openBlock","_createElementBlock","_unref"],"mappings":";;;;AAIO,MAAM,oBAAoB,MAAM,cAA0B,WAAW,EAAE;AACvE,MAAM,gBAAgB,MAAM,UAAsB,WAAW,EAAE;AAgB/D,MAAM,kBAAkB,CAAC,eAAsD;AACpF,QAAM,EAAE,SAAA,IAAa,kBAAA;AACrB,QAAM,qBAAqB,IAAI,CAAC;AAGhC;AAAA,IACE,CAAC,UAAU,MAAO,aAAa,QAAQ,UAAU,IAAI,MAAU;AAAA,IAC/D,CAAC,CAAC,eAAe,KAAK,GAAG,GAAG,cAAc;AACxC,UAAI,CAAC,cAAe;AAGpB,YAAM,oBAAoB,cAAc,eAAe,MAAM;AAC3D,2BAAmB;AAAA,MACrB,CAAC;AAGD,YAAM,oBAAoB,QACtB,cAAc,YAAY,KAAK,EAAE,gBAAgB,MAAM;AACrD,2BAAmB;AAAA,MACrB,CAAC,IACD,cAAc,gBAAgB,MAAM;AAClC,2BAAmB;AAAA,MACrB,CAAC;AAEL,gBAAU,MAAM;AACd,0BAAA;AACA,0BAAA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,EAAE,WAAW,KAAA;AAAA,EAAK;AAIpB,QAAM,YAAY,CAChB,KACA,YAIW;AAEX,uBAAmB;AAEnB,UAAM,gBAAgB,SAAS;AAC/B,QAAI,CAAC,cAAe,SAAO,mCAAS,aAAY;AAEhD,UAAM,QAAQ,aAAa,QAAQ,UAAU,IAAI;AACjD,WAAO,cAAc,EAAE,KAAK;AAAA,MAC1B,YAAY;AAAA,MACZ,QAAQ,mCAAS;AAAA,MACjB,UAAU,mCAAS;AAAA,IAAA,CACpB;AAAA,EACH;AAEA,QAAM,SAAS,SAAS,MAAM;;AAE5B,uBAAmB;AACnB,aAAO,cAAS,UAAT,mBAAgB,gBAAe;AAAA,EACxC,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,SAAS,MAAM;AAAA,EAAA;AAE3B;AAGO,MAAM,iBAAiB,CAC5B,KACA,SAIA,eACG;AACH,QAAM,EAAE,UAAA,IAAc,gBAAgB,UAAU;AAChD,SAAO,SAAS,MAAM,UAAU,KAAK,OAAO,CAAC;AAC/C;AAEO,MAAM,YAAY,MAAM;AAC7B,QAAM,EAAE,SAAA,IAAa,kBAAA;AACrB,QAAM,SAAS,IAAY,IAAI;AAE/B;AAAA,IACE;AAAA,IACA,CAAC,eAAe,GAAG,cAAc;AAC/B,UAAI,CAAC,cAAe;AAEpB,aAAO,QAAQ,cAAc,UAAA;AAE7B,YAAM,cAAc,cAAc,eAAe,CAAC,EAAE,oBAAoB;AACtE,eAAO,QAAQ;AAAA,MACjB,CAAC;AAED,gBAAU,WAAW;AAAA,IACvB;AAAA,IACA,EAAE,WAAW,KAAA;AAAA,EAAK;AAGpB,SAAO;AACT;;;;;;;;;;AC/GA,UAAM,QAAQ;AACd,UAAM,cAAc;AAAA,MAClB,MAAM;AAAA,MACN,EAAE,QAAQ,MAAM,QAAQ,UAAU,MAAM,SAAA;AAAA,MACxC,MAAM,MAAM;AAAA,IAAA;;AAKZ,aAAAA,UAAA,GAAAC,mBAA8B,8BAArBC,MAAA,WAAA,CAAW,GAAA,CAAA;AAAA;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embedpdf/plugin-i18n",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@embedpdf/models": "2.0.0-next.
|
|
38
|
+
"@embedpdf/models": "2.0.0-next.1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/react": "^18.2.0",
|
|
42
42
|
"typescript": "^5.0.0",
|
|
43
|
-
"@embedpdf/
|
|
44
|
-
"@embedpdf/
|
|
43
|
+
"@embedpdf/build": "1.1.0",
|
|
44
|
+
"@embedpdf/core": "2.0.0-next.1"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"react": ">=16.8.0",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"preact": "^10.26.4",
|
|
50
50
|
"vue": ">=3.2.0",
|
|
51
51
|
"svelte": ">=5 <6",
|
|
52
|
-
"@embedpdf/core": "2.0.0-next.
|
|
52
|
+
"@embedpdf/core": "2.0.0-next.1"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"dist",
|