@justanarthur/payload-plugin-translator 1.3.20 → 1.3.21

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.
Files changed (128) hide show
  1. package/dist/client.d.ts +6 -0
  2. package/dist/client.js +320 -0
  3. package/dist/index.d.ts +102 -11
  4. package/dist/index.js +1294 -80
  5. package/dist/jobs.d.ts +195 -0
  6. package/dist/jobs.js +824 -0
  7. package/dist/resolvers/copy.d.ts +21 -3
  8. package/dist/resolvers/copy.js +18 -12
  9. package/dist/resolvers/google.d.ts +29 -11
  10. package/dist/resolvers/google.js +58 -44
  11. package/dist/resolvers/libreTranslate.d.ts +33 -15
  12. package/dist/resolvers/libreTranslate.js +60 -45
  13. package/dist/resolvers/openAI.d.ts +39 -21
  14. package/dist/resolvers/openAI.js +110 -114
  15. package/dist/resolvers/types.d.ts +16 -16
  16. package/dist/resolvers/types.js +0 -3
  17. package/dist/{client/components/CustomButton/styles.scss → styles-jt3fm5fh.scss} +5 -5
  18. package/dist/{client/components/TranslatorModal/styles.scss → styles-vs6m7h55.scss} +76 -76
  19. package/dist/types.d.ts +70 -22
  20. package/dist/types.js +0 -3
  21. package/package.json +87 -64
  22. package/README.md +0 -215
  23. package/dist/client/api/index.d.ts +0 -8
  24. package/dist/client/api/index.d.ts.map +0 -1
  25. package/dist/client/api/index.js +0 -28
  26. package/dist/client/api/index.js.map +0 -1
  27. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts +0 -5
  28. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts.map +0 -1
  29. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js +0 -28
  30. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js.map +0 -1
  31. package/dist/client/components/CustomButton/index.d.ts +0 -3
  32. package/dist/client/components/CustomButton/index.d.ts.map +0 -1
  33. package/dist/client/components/CustomButton/index.js +0 -10
  34. package/dist/client/components/CustomButton/index.js.map +0 -1
  35. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts +0 -5
  36. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts.map +0 -1
  37. package/dist/client/components/LocaleLabel/LocaleLabel.js +0 -28
  38. package/dist/client/components/LocaleLabel/LocaleLabel.js.map +0 -1
  39. package/dist/client/components/LocaleLabel/index.d.ts +0 -2
  40. package/dist/client/components/LocaleLabel/index.d.ts.map +0 -1
  41. package/dist/client/components/LocaleLabel/index.js +0 -3
  42. package/dist/client/components/LocaleLabel/index.js.map +0 -1
  43. package/dist/client/components/ResolverButton/ResolverButton.d.ts +0 -5
  44. package/dist/client/components/ResolverButton/ResolverButton.d.ts.map +0 -1
  45. package/dist/client/components/ResolverButton/ResolverButton.js +0 -16
  46. package/dist/client/components/ResolverButton/ResolverButton.js.map +0 -1
  47. package/dist/client/components/ResolverButton/index.d.ts +0 -2
  48. package/dist/client/components/ResolverButton/index.d.ts.map +0 -1
  49. package/dist/client/components/ResolverButton/index.js +0 -3
  50. package/dist/client/components/ResolverButton/index.js.map +0 -1
  51. package/dist/client/components/TranslatorModal/Content.d.ts +0 -2
  52. package/dist/client/components/TranslatorModal/Content.d.ts.map +0 -1
  53. package/dist/client/components/TranslatorModal/Content.js +0 -60
  54. package/dist/client/components/TranslatorModal/Content.js.map +0 -1
  55. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts +0 -3
  56. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts.map +0 -1
  57. package/dist/client/components/TranslatorModal/TranslatorModal.js +0 -26
  58. package/dist/client/components/TranslatorModal/TranslatorModal.js.map +0 -1
  59. package/dist/client/components/TranslatorModal/index.d.ts +0 -2
  60. package/dist/client/components/TranslatorModal/index.d.ts.map +0 -1
  61. package/dist/client/components/TranslatorModal/index.js +0 -3
  62. package/dist/client/components/TranslatorModal/index.js.map +0 -1
  63. package/dist/client/providers/Translator/TranslatorProvider.d.ts +0 -5
  64. package/dist/client/providers/Translator/TranslatorProvider.d.ts.map +0 -1
  65. package/dist/client/providers/Translator/TranslatorProvider.js +0 -109
  66. package/dist/client/providers/Translator/TranslatorProvider.js.map +0 -1
  67. package/dist/client/providers/Translator/context.d.ts +0 -21
  68. package/dist/client/providers/Translator/context.d.ts.map +0 -1
  69. package/dist/client/providers/Translator/context.js +0 -9
  70. package/dist/client/providers/Translator/context.js.map +0 -1
  71. package/dist/exports/client.d.ts +0 -2
  72. package/dist/exports/client.d.ts.map +0 -1
  73. package/dist/exports/client.js +0 -3
  74. package/dist/exports/client.js.map +0 -1
  75. package/dist/i18n-translations.d.ts +0 -87
  76. package/dist/i18n-translations.d.ts.map +0 -1
  77. package/dist/i18n-translations.js +0 -88
  78. package/dist/i18n-translations.js.map +0 -1
  79. package/dist/index.d.ts.map +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/resolvers/copy.d.ts.map +0 -1
  82. package/dist/resolvers/copy.js.map +0 -1
  83. package/dist/resolvers/google.d.ts.map +0 -1
  84. package/dist/resolvers/google.js.map +0 -1
  85. package/dist/resolvers/libreTranslate.d.ts.map +0 -1
  86. package/dist/resolvers/libreTranslate.js.map +0 -1
  87. package/dist/resolvers/openAI.d.ts.map +0 -1
  88. package/dist/resolvers/openAI.js.map +0 -1
  89. package/dist/resolvers/types.d.ts.map +0 -1
  90. package/dist/resolvers/types.js.map +0 -1
  91. package/dist/translate/endpoint.d.ts +0 -3
  92. package/dist/translate/endpoint.d.ts.map +0 -1
  93. package/dist/translate/endpoint.js +0 -23
  94. package/dist/translate/endpoint.js.map +0 -1
  95. package/dist/translate/findEntityWithConfig.d.ts +0 -16
  96. package/dist/translate/findEntityWithConfig.d.ts.map +0 -1
  97. package/dist/translate/findEntityWithConfig.js +0 -34
  98. package/dist/translate/findEntityWithConfig.js.map +0 -1
  99. package/dist/translate/operation.d.ts +0 -9
  100. package/dist/translate/operation.d.ts.map +0 -1
  101. package/dist/translate/operation.js +0 -78
  102. package/dist/translate/operation.js.map +0 -1
  103. package/dist/translate/traverseFields.d.ts +0 -17
  104. package/dist/translate/traverseFields.d.ts.map +0 -1
  105. package/dist/translate/traverseFields.js +0 -233
  106. package/dist/translate/traverseFields.js.map +0 -1
  107. package/dist/translate/traverseRichText.d.ts +0 -10
  108. package/dist/translate/traverseRichText.d.ts.map +0 -1
  109. package/dist/translate/traverseRichText.js +0 -24
  110. package/dist/translate/traverseRichText.js.map +0 -1
  111. package/dist/translate/types.d.ts +0 -27
  112. package/dist/translate/types.d.ts.map +0 -1
  113. package/dist/translate/types.js +0 -3
  114. package/dist/translate/types.js.map +0 -1
  115. package/dist/translate/updateEntity.d.ts +0 -14
  116. package/dist/translate/updateEntity.d.ts.map +0 -1
  117. package/dist/translate/updateEntity.js +0 -26
  118. package/dist/translate/updateEntity.js.map +0 -1
  119. package/dist/types.d.ts.map +0 -1
  120. package/dist/types.js.map +0 -1
  121. package/dist/utils/chunkArray.d.ts +0 -2
  122. package/dist/utils/chunkArray.d.ts.map +0 -1
  123. package/dist/utils/chunkArray.js +0 -7
  124. package/dist/utils/chunkArray.js.map +0 -1
  125. package/dist/utils/isEmpty.d.ts +0 -2
  126. package/dist/utils/isEmpty.d.ts.map +0 -1
  127. package/dist/utils/isEmpty.js +0 -8
  128. package/dist/utils/isEmpty.js.map +0 -1
@@ -1,60 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { getTranslation } from '@payloadcms/translations';
3
- import { Button, Popup, PopupList, useTranslation } from '@payloadcms/ui';
4
- import { useTranslator } from '../../providers/Translator/context';
5
- import { LocaleLabel } from '../LocaleLabel';
6
- export const Content = ()=>{
7
- const { localeToTranslateFrom: localeCodeToTranslateFrom, localesOptions, resolverT, setLocaleToTranslateFrom, submit } = useTranslator();
8
- const { i18n } = useTranslation();
9
- const localeToTranslateFrom = localesOptions.find((each)=>each.code === localeCodeToTranslateFrom);
10
- return /*#__PURE__*/ _jsxs("div", {
11
- className: 'translator__content',
12
- children: [
13
- /*#__PURE__*/ _jsx("h2", {
14
- children: resolverT('modalTitle')
15
- }),
16
- localeToTranslateFrom && /*#__PURE__*/ _jsx(Popup, {
17
- button: /*#__PURE__*/ _jsx(LocaleLabel, {
18
- locale: localeToTranslateFrom
19
- }),
20
- horizontalAlign: "center",
21
- render: ({ close })=>/*#__PURE__*/ _jsx(PopupList.ButtonGroup, {
22
- children: localesOptions.map((option)=>{
23
- const label = getTranslation(option.label, i18n);
24
- return /*#__PURE__*/ _jsxs(PopupList.Button, {
25
- active: option.code === localeCodeToTranslateFrom,
26
- onClick: ()=>{
27
- setLocaleToTranslateFrom(option.code);
28
- close();
29
- },
30
- children: [
31
- label,
32
- label !== option.code && ` (${option.code})`
33
- ]
34
- }, option.code);
35
- })
36
- }),
37
- verticalAlign: "bottom"
38
- }),
39
- /*#__PURE__*/ _jsxs("div", {
40
- className: 'translator__buttons',
41
- children: [
42
- /*#__PURE__*/ _jsx(Button, {
43
- onClick: ()=>submit({
44
- emptyOnly: false
45
- }),
46
- children: resolverT('submitButtonLabelFull')
47
- }),
48
- /*#__PURE__*/ _jsx(Button, {
49
- onClick: ()=>submit({
50
- emptyOnly: true
51
- }),
52
- children: resolverT('submitButtonLabelEmpty')
53
- })
54
- ]
55
- })
56
- ]
57
- });
58
- };
59
-
60
- //# sourceMappingURL=Content.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/components/TranslatorModal/Content.tsx"],"sourcesContent":["import { getTranslation } from '@payloadcms/translations'\r\nimport { Button, Popup, PopupList, useTranslation } from '@payloadcms/ui'\r\n\r\nimport { useTranslator } from '../../providers/Translator/context'\r\nimport { LocaleLabel } from '../LocaleLabel'\r\n\r\nexport const Content = () => {\r\n const {\r\n localeToTranslateFrom: localeCodeToTranslateFrom,\r\n localesOptions,\r\n resolverT,\r\n setLocaleToTranslateFrom,\r\n submit,\r\n } = useTranslator()\r\n\r\n const { i18n } = useTranslation()\r\n\r\n const localeToTranslateFrom = localesOptions.find(\r\n (each) => each.code === localeCodeToTranslateFrom,\r\n )\r\n\r\n return (\r\n <div className={'translator__content'}>\r\n <h2>{resolverT('modalTitle')}</h2>\r\n {localeToTranslateFrom && (\r\n <Popup\r\n button={<LocaleLabel locale={localeToTranslateFrom} />}\r\n horizontalAlign=\"center\"\r\n render={({ close }) => (\r\n <PopupList.ButtonGroup>\r\n {localesOptions.map((option) => {\r\n const label = getTranslation(option.label, i18n)\r\n\r\n return (\r\n <PopupList.Button\r\n active={option.code === localeCodeToTranslateFrom}\r\n key={option.code}\r\n onClick={() => {\r\n setLocaleToTranslateFrom(option.code)\r\n close()\r\n }}\r\n >\r\n {label}\r\n {label !== option.code && ` (${option.code})`}\r\n </PopupList.Button>\r\n )\r\n })}\r\n </PopupList.ButtonGroup>\r\n )}\r\n verticalAlign=\"bottom\"\r\n />\r\n )}\r\n <div className={'translator__buttons'}>\r\n <Button onClick={() => submit({ emptyOnly: false })}>\r\n {resolverT('submitButtonLabelFull')}\r\n </Button>\r\n <Button onClick={() => submit({ emptyOnly: true })}>\r\n {resolverT('submitButtonLabelEmpty')}\r\n </Button>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":["getTranslation","Button","Popup","PopupList","useTranslation","useTranslator","LocaleLabel","Content","localeToTranslateFrom","localeCodeToTranslateFrom","localesOptions","resolverT","setLocaleToTranslateFrom","submit","i18n","find","each","code","div","className","h2","button","locale","horizontalAlign","render","close","ButtonGroup","map","option","label","active","onClick","verticalAlign","emptyOnly"],"mappings":";AAAA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SAASC,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AAEzE,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,WAAW,QAAQ,iBAAgB;AAE5C,OAAO,MAAMC,UAAU;IACrB,MAAM,EACJC,uBAAuBC,yBAAyB,EAChDC,cAAc,EACdC,SAAS,EACTC,wBAAwB,EACxBC,MAAM,EACP,GAAGR;IAEJ,MAAM,EAAES,IAAI,EAAE,GAAGV;IAEjB,MAAMI,wBAAwBE,eAAeK,IAAI,CAC/C,CAACC,OAASA,KAAKC,IAAI,KAAKR;IAG1B,qBACE,MAACS;QAAIC,WAAW;;0BACd,KAACC;0BAAIT,UAAU;;YACdH,uCACC,KAACN;gBACCmB,sBAAQ,KAACf;oBAAYgB,QAAQd;;gBAC7Be,iBAAgB;gBAChBC,QAAQ,CAAC,EAAEC,KAAK,EAAE,iBAChB,KAACtB,UAAUuB,WAAW;kCACnBhB,eAAeiB,GAAG,CAAC,CAACC;4BACnB,MAAMC,QAAQ7B,eAAe4B,OAAOC,KAAK,EAAEf;4BAE3C,qBACE,MAACX,UAAUF,MAAM;gCACf6B,QAAQF,OAAOX,IAAI,KAAKR;gCAExBsB,SAAS;oCACPnB,yBAAyBgB,OAAOX,IAAI;oCACpCQ;gCACF;;oCAECI;oCACAA,UAAUD,OAAOX,IAAI,IAAI,CAAC,EAAE,EAAEW,OAAOX,IAAI,CAAC,CAAC,CAAC;;+BAPxCW,OAAOX,IAAI;wBAUtB;;gBAGJe,eAAc;;0BAGlB,MAACd;gBAAIC,WAAW;;kCACd,KAAClB;wBAAO8B,SAAS,IAAMlB,OAAO;gCAAEoB,WAAW;4BAAM;kCAC9CtB,UAAU;;kCAEb,KAACV;wBAAO8B,SAAS,IAAMlB,OAAO;gCAAEoB,WAAW;4BAAK;kCAC7CtB,UAAU;;;;;;AAKrB,EAAC"}
@@ -1,3 +0,0 @@
1
- import './styles.scss';
2
- export declare const TranslatorModal: () => import("react").JSX.Element | undefined;
3
- //# sourceMappingURL=TranslatorModal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TranslatorModal.d.ts","sourceRoot":"","sources":["../../../../src/client/components/TranslatorModal/TranslatorModal.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAOtB,eAAO,MAAM,eAAe,+CAa3B,CAAA"}
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './styles.scss';
3
- import { Modal } from '@payloadcms/ui';
4
- import { useTranslator } from '../../providers/Translator/context';
5
- import { Content } from './Content';
6
- export const TranslatorModal = ()=>{
7
- const { closeTranslator, modalSlug, resolver } = useTranslator();
8
- if (!resolver) return;
9
- return /*#__PURE__*/ _jsx(Modal, {
10
- className: 'translator__modal',
11
- slug: modalSlug,
12
- children: /*#__PURE__*/ _jsxs("div", {
13
- className: 'translator__wrapper',
14
- children: [
15
- /*#__PURE__*/ _jsx("button", {
16
- "aria-label": "Close",
17
- className: 'translator__close',
18
- onClick: closeTranslator
19
- }),
20
- /*#__PURE__*/ _jsx(Content, {})
21
- ]
22
- })
23
- });
24
- };
25
-
26
- //# sourceMappingURL=TranslatorModal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/components/TranslatorModal/TranslatorModal.tsx"],"sourcesContent":["import './styles.scss'\r\n\r\nimport { Modal } from '@payloadcms/ui'\r\n\r\nimport { useTranslator } from '../../providers/Translator/context'\r\nimport { Content } from './Content'\r\n\r\nexport const TranslatorModal = () => {\r\n const { closeTranslator, modalSlug, resolver } = useTranslator()\r\n\r\n if (!resolver) return\r\n\r\n return (\r\n <Modal className={'translator__modal'} slug={modalSlug}>\r\n <div className={'translator__wrapper'}>\r\n <button aria-label=\"Close\" className={'translator__close'} onClick={closeTranslator} />\r\n <Content />\r\n </div>\r\n </Modal>\r\n )\r\n}\r\n"],"names":["Modal","useTranslator","Content","TranslatorModal","closeTranslator","modalSlug","resolver","className","slug","div","button","aria-label","onClick"],"mappings":";AAAA,OAAO,gBAAe;AAEtB,SAASA,KAAK,QAAQ,iBAAgB;AAEtC,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,OAAO,QAAQ,YAAW;AAEnC,OAAO,MAAMC,kBAAkB;IAC7B,MAAM,EAAEC,eAAe,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGL;IAEjD,IAAI,CAACK,UAAU;IAEf,qBACE,KAACN;QAAMO,WAAW;QAAqBC,MAAMH;kBAC3C,cAAA,MAACI;YAAIF,WAAW;;8BACd,KAACG;oBAAOC,cAAW;oBAAQJ,WAAW;oBAAqBK,SAASR;;8BACpE,KAACF;;;;AAIT,EAAC"}
@@ -1,2 +0,0 @@
1
- export * from './TranslatorModal';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/components/TranslatorModal/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -1,3 +0,0 @@
1
- export * from './TranslatorModal';
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/components/TranslatorModal/index.ts"],"sourcesContent":["export * from './TranslatorModal'\r\n"],"names":[],"mappings":"AAAA,cAAc,oBAAmB"}
@@ -1,5 +0,0 @@
1
- import { type ReactNode } from 'react';
2
- export declare const TranslatorProvider: ({ children }: {
3
- children: ReactNode;
4
- }) => import("react").JSX.Element;
5
- //# sourceMappingURL=TranslatorProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TranslatorProvider.d.ts","sourceRoot":"","sources":["../../../../src/client/providers/Translator/TranslatorProvider.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,OAAO,CAAA;AASpE,eAAO,MAAM,kBAAkB,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,gCA4IvE,CAAA"}
@@ -1,109 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { toast, useAllFormFields, useConfig, useDocumentInfo, useForm, useLocale, useModal, useServerFunctions, useTranslation } from '@payloadcms/ui';
3
- import { reduceFieldsToValues } from 'payload/shared';
4
- import { useEffect, useMemo, useState } from 'react';
5
- import { createClient } from '../../api';
6
- import { TranslatorContext } from './context';
7
- const modalSlug = 'translator-modal';
8
- export const TranslatorProvider = ({ children })=>{
9
- const [resolver, setResolver] = useState(null);
10
- const [data, dispatch] = useAllFormFields();
11
- const { getFormState } = useServerFunctions();
12
- const { collectionSlug, getDocPreferences, globalSlug, id } = useDocumentInfo();
13
- const { setModified } = useForm();
14
- const modal = useModal();
15
- const { t } = useTranslation();
16
- const resolverT = (key)=>{
17
- if (!resolver) return '';
18
- return t(`plugin-translator:resolver_${resolver}_${key}`);
19
- };
20
- const locale = useLocale();
21
- const { config: { admin: { custom }, localization, routes: { api }, serverURL } } = useConfig();
22
- const apiClient = createClient({
23
- api,
24
- serverURL
25
- });
26
- const resolverConfig = useMemo(()=>{
27
- if (!resolver) return null;
28
- const resolvers = custom?.translator?.resolvers || undefined;
29
- if (!resolvers) return null;
30
- const resolverConfig = resolvers.find((each)=>each.key === resolver);
31
- return resolverConfig ?? null;
32
- }, [
33
- custom,
34
- resolver
35
- ]);
36
- if (!localization) throw new Error('Localization config is not provided and PluginTranslator is used');
37
- const localesOptions = localization.locales.filter((each)=>each.code !== locale.code);
38
- const [localeToTranslateFrom, setLocaleToTranslateFrom] = useState('');
39
- useEffect(()=>{
40
- const defaultFromOptions = localesOptions.find((each)=>localization.defaultLocale === each.code);
41
- if (defaultFromOptions) setLocaleToTranslateFrom(defaultFromOptions.code);
42
- setLocaleToTranslateFrom(localesOptions[0].code);
43
- }, [
44
- locale,
45
- localesOptions,
46
- localization.defaultLocale
47
- ]);
48
- const closeTranslator = ()=>modal.closeModal(modalSlug);
49
- const submit = async ({ emptyOnly })=>{
50
- if (!resolver) return;
51
- const args = {
52
- collectionSlug,
53
- data: reduceFieldsToValues(data, true),
54
- emptyOnly,
55
- globalSlug,
56
- id: id === null ? undefined : id,
57
- locale: locale.code,
58
- localeFrom: localeToTranslateFrom,
59
- resolver
60
- };
61
- const result = await apiClient.translate(args);
62
- if (!result.success) {
63
- toast.error(resolverT('errorMessage'));
64
- return;
65
- }
66
- const { state } = await getFormState({
67
- collectionSlug,
68
- data: result.translatedData,
69
- docPermissions: {
70
- fields: true,
71
- update: true
72
- },
73
- docPreferences: await getDocPreferences(),
74
- globalSlug,
75
- locale: locale.code,
76
- operation: 'update',
77
- renderAllFields: true,
78
- schemaPath: collectionSlug || globalSlug || ''
79
- });
80
- if (state) {
81
- dispatch({
82
- state,
83
- type: 'REPLACE_STATE'
84
- });
85
- setModified(true);
86
- toast.success(resolverT('successMessage'));
87
- }
88
- closeTranslator();
89
- };
90
- return /*#__PURE__*/ _jsx(TranslatorContext.Provider, {
91
- value: {
92
- closeTranslator,
93
- localeToTranslateFrom,
94
- localesOptions,
95
- modalSlug,
96
- openTranslator: ({ resolverKey })=>{
97
- setResolver(resolverKey);
98
- modal.openModal(modalSlug);
99
- },
100
- resolver: resolverConfig,
101
- resolverT,
102
- setLocaleToTranslateFrom,
103
- submit
104
- },
105
- children: children
106
- });
107
- };
108
-
109
- //# sourceMappingURL=TranslatorProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/providers/Translator/TranslatorProvider.tsx"],"sourcesContent":["import {\r\n toast,\r\n useAllFormFields,\r\n useConfig,\r\n useDocumentInfo,\r\n useForm,\r\n useLocale,\r\n useModal,\r\n useServerFunctions,\r\n useTranslation,\r\n} from '@payloadcms/ui'\r\nimport { reduceFieldsToValues } from 'payload/shared'\r\nimport { type ReactNode, useEffect, useMemo, useState } from 'react'\r\n\r\nimport type { TranslateResolver } from '../../../resolvers/types'\r\nimport type { TranslateArgs } from '../../../translate/types'\r\nimport { createClient } from '../../api'\r\nimport { TranslatorContext } from './context'\r\n\r\nconst modalSlug = 'translator-modal'\r\n\r\nexport const TranslatorProvider = ({ children }: { children: ReactNode }) => {\r\n const [resolver, setResolver] = useState<null | string>(null)\r\n\r\n const [data, dispatch] = useAllFormFields()\r\n\r\n const { getFormState } = useServerFunctions()\r\n\r\n const { collectionSlug, getDocPreferences, globalSlug, id } = useDocumentInfo()\r\n\r\n const { setModified } = useForm()\r\n\r\n const modal = useModal()\r\n\r\n const { t } = useTranslation()\r\n\r\n const resolverT = (\r\n key:\r\n | 'buttonLabel'\r\n | 'errorMessage'\r\n | 'modalTitle'\r\n | 'submitButtonLabelEmpty'\r\n | 'submitButtonLabelFull'\r\n | 'successMessage',\r\n ) => {\r\n if (!resolver) return ''\r\n\r\n return t(`plugin-translator:resolver_${resolver}_${key}` as Parameters<typeof t>[0])\r\n }\r\n\r\n const locale = useLocale()\r\n\r\n const {\r\n config: {\r\n admin: { custom },\r\n localization,\r\n routes: { api },\r\n serverURL,\r\n },\r\n } = useConfig()\r\n\r\n const apiClient = createClient({ api, serverURL })\r\n\r\n const resolverConfig = useMemo(() => {\r\n if (!resolver) return null\r\n\r\n const resolvers = (custom?.translator?.resolvers as TranslateResolver[]) || undefined\r\n\r\n if (!resolvers) return null\r\n\r\n const resolverConfig = resolvers.find((each) => each.key === resolver)\r\n\r\n return resolverConfig ?? null\r\n }, [custom, resolver])\r\n\r\n if (!localization)\r\n throw new Error('Localization config is not provided and PluginTranslator is used')\r\n\r\n const localesOptions = localization.locales.filter((each) => each.code !== locale.code)\r\n\r\n const [localeToTranslateFrom, setLocaleToTranslateFrom] = useState<string>('')\r\n\r\n useEffect(() => {\r\n const defaultFromOptions = localesOptions.find(\r\n (each) => localization.defaultLocale === each.code,\r\n )\r\n\r\n if (defaultFromOptions) setLocaleToTranslateFrom(defaultFromOptions.code)\r\n setLocaleToTranslateFrom(localesOptions[0].code)\r\n }, [locale, localesOptions, localization.defaultLocale])\r\n\r\n const closeTranslator = () => modal.closeModal(modalSlug)\r\n\r\n const submit = async ({ emptyOnly }: { emptyOnly: boolean }) => {\r\n if (!resolver) return\r\n\r\n const args: TranslateArgs = {\r\n collectionSlug,\r\n data: reduceFieldsToValues(data, true),\r\n emptyOnly,\r\n globalSlug,\r\n id: id === null ? undefined : id,\r\n locale: locale.code,\r\n localeFrom: localeToTranslateFrom,\r\n resolver,\r\n }\r\n\r\n const result = await apiClient.translate(args)\r\n\r\n if (!result.success) {\r\n toast.error(resolverT('errorMessage'))\r\n\r\n return\r\n }\r\n\r\n const { state } = await getFormState({\r\n collectionSlug,\r\n data: result.translatedData,\r\n docPermissions: {\r\n fields: true,\r\n update: true,\r\n },\r\n docPreferences: await getDocPreferences(),\r\n globalSlug,\r\n locale: locale.code,\r\n operation: 'update',\r\n renderAllFields: true,\r\n schemaPath: collectionSlug || globalSlug || '',\r\n })\r\n\r\n if (state) {\r\n dispatch({\r\n state,\r\n type: 'REPLACE_STATE',\r\n })\r\n setModified(true)\r\n toast.success(resolverT('successMessage'))\r\n }\r\n closeTranslator()\r\n }\r\n\r\n return (\r\n <TranslatorContext.Provider\r\n value={{\r\n closeTranslator,\r\n localeToTranslateFrom,\r\n localesOptions,\r\n modalSlug,\r\n openTranslator: ({ resolverKey }) => {\r\n setResolver(resolverKey)\r\n modal.openModal(modalSlug)\r\n },\r\n resolver: resolverConfig,\r\n resolverT,\r\n setLocaleToTranslateFrom,\r\n submit,\r\n }}\r\n >\r\n {children}\r\n </TranslatorContext.Provider>\r\n )\r\n}\r\n"],"names":["toast","useAllFormFields","useConfig","useDocumentInfo","useForm","useLocale","useModal","useServerFunctions","useTranslation","reduceFieldsToValues","useEffect","useMemo","useState","createClient","TranslatorContext","modalSlug","TranslatorProvider","children","resolver","setResolver","data","dispatch","getFormState","collectionSlug","getDocPreferences","globalSlug","id","setModified","modal","t","resolverT","key","locale","config","admin","custom","localization","routes","api","serverURL","apiClient","resolverConfig","resolvers","translator","undefined","find","each","Error","localesOptions","locales","filter","code","localeToTranslateFrom","setLocaleToTranslateFrom","defaultFromOptions","defaultLocale","closeTranslator","closeModal","submit","emptyOnly","args","localeFrom","result","translate","success","error","state","translatedData","docPermissions","fields","update","docPreferences","operation","renderAllFields","schemaPath","type","Provider","value","openTranslator","resolverKey","openModal"],"mappings":";AAAA,SACEA,KAAK,EACLC,gBAAgB,EAChBC,SAAS,EACTC,eAAe,EACfC,OAAO,EACPC,SAAS,EACTC,QAAQ,EACRC,kBAAkB,EAClBC,cAAc,QACT,iBAAgB;AACvB,SAASC,oBAAoB,QAAQ,iBAAgB;AACrD,SAAyBC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAIpE,SAASC,YAAY,QAAQ,YAAW;AACxC,SAASC,iBAAiB,QAAQ,YAAW;AAE7C,MAAMC,YAAY;AAElB,OAAO,MAAMC,qBAAqB,CAAC,EAAEC,QAAQ,EAA2B;IACtE,MAAM,CAACC,UAAUC,YAAY,GAAGP,SAAwB;IAExD,MAAM,CAACQ,MAAMC,SAAS,GAAGpB;IAEzB,MAAM,EAAEqB,YAAY,EAAE,GAAGf;IAEzB,MAAM,EAAEgB,cAAc,EAAEC,iBAAiB,EAAEC,UAAU,EAAEC,EAAE,EAAE,GAAGvB;IAE9D,MAAM,EAAEwB,WAAW,EAAE,GAAGvB;IAExB,MAAMwB,QAAQtB;IAEd,MAAM,EAAEuB,CAAC,EAAE,GAAGrB;IAEd,MAAMsB,YAAY,CAChBC;QAQA,IAAI,CAACb,UAAU,OAAO;QAEtB,OAAOW,EAAE,CAAC,2BAA2B,EAAEX,SAAS,CAAC,EAAEa,KAAK;IAC1D;IAEA,MAAMC,SAAS3B;IAEf,MAAM,EACJ4B,QAAQ,EACNC,OAAO,EAAEC,MAAM,EAAE,EACjBC,YAAY,EACZC,QAAQ,EAAEC,GAAG,EAAE,EACfC,SAAS,EACV,EACF,GAAGrC;IAEJ,MAAMsC,YAAY3B,aAAa;QAAEyB;QAAKC;IAAU;IAEhD,MAAME,iBAAiB9B,QAAQ;QAC7B,IAAI,CAACO,UAAU,OAAO;QAEtB,MAAMwB,YAAY,AAACP,QAAQQ,YAAYD,aAAqCE;QAE5E,IAAI,CAACF,WAAW,OAAO;QAEvB,MAAMD,iBAAiBC,UAAUG,IAAI,CAAC,CAACC,OAASA,KAAKf,GAAG,KAAKb;QAE7D,OAAOuB,kBAAkB;IAC3B,GAAG;QAACN;QAAQjB;KAAS;IAErB,IAAI,CAACkB,cACH,MAAM,IAAIW,MAAM;IAElB,MAAMC,iBAAiBZ,aAAaa,OAAO,CAACC,MAAM,CAAC,CAACJ,OAASA,KAAKK,IAAI,KAAKnB,OAAOmB,IAAI;IAEtF,MAAM,CAACC,uBAAuBC,yBAAyB,GAAGzC,SAAiB;IAE3EF,UAAU;QACR,MAAM4C,qBAAqBN,eAAeH,IAAI,CAC5C,CAACC,OAASV,aAAamB,aAAa,KAAKT,KAAKK,IAAI;QAGpD,IAAIG,oBAAoBD,yBAAyBC,mBAAmBH,IAAI;QACxEE,yBAAyBL,cAAc,CAAC,EAAE,CAACG,IAAI;IACjD,GAAG;QAACnB;QAAQgB;QAAgBZ,aAAamB,aAAa;KAAC;IAEvD,MAAMC,kBAAkB,IAAM5B,MAAM6B,UAAU,CAAC1C;IAE/C,MAAM2C,SAAS,OAAO,EAAEC,SAAS,EAA0B;QACzD,IAAI,CAACzC,UAAU;QAEf,MAAM0C,OAAsB;YAC1BrC;YACAH,MAAMX,qBAAqBW,MAAM;YACjCuC;YACAlC;YACAC,IAAIA,OAAO,OAAOkB,YAAYlB;YAC9BM,QAAQA,OAAOmB,IAAI;YACnBU,YAAYT;YACZlC;QACF;QAEA,MAAM4C,SAAS,MAAMtB,UAAUuB,SAAS,CAACH;QAEzC,IAAI,CAACE,OAAOE,OAAO,EAAE;YACnBhE,MAAMiE,KAAK,CAACnC,UAAU;YAEtB;QACF;QAEA,MAAM,EAAEoC,KAAK,EAAE,GAAG,MAAM5C,aAAa;YACnCC;YACAH,MAAM0C,OAAOK,cAAc;YAC3BC,gBAAgB;gBACdC,QAAQ;gBACRC,QAAQ;YACV;YACAC,gBAAgB,MAAM/C;YACtBC;YACAO,QAAQA,OAAOmB,IAAI;YACnBqB,WAAW;YACXC,iBAAiB;YACjBC,YAAYnD,kBAAkBE,cAAc;QAC9C;QAEA,IAAIyC,OAAO;YACT7C,SAAS;gBACP6C;gBACAS,MAAM;YACR;YACAhD,YAAY;YACZ3B,MAAMgE,OAAO,CAAClC,UAAU;QAC1B;QACA0B;IACF;IAEA,qBACE,KAAC1C,kBAAkB8D,QAAQ;QACzBC,OAAO;YACLrB;YACAJ;YACAJ;YACAjC;YACA+D,gBAAgB,CAAC,EAAEC,WAAW,EAAE;gBAC9B5D,YAAY4D;gBACZnD,MAAMoD,SAAS,CAACjE;YAClB;YACAG,UAAUuB;YACVX;YACAuB;YACAK;QACF;kBAECzC;;AAGP,EAAC"}
@@ -1,21 +0,0 @@
1
- import type { Locale } from 'payload';
2
- import type { TranslateResolver } from '../../../resolvers/types';
3
- type TranslatorContextData = {
4
- closeTranslator: () => void;
5
- localeToTranslateFrom: string;
6
- localesOptions: Locale[];
7
- modalSlug: string;
8
- openTranslator: (args: {
9
- resolverKey: string;
10
- }) => void;
11
- resolver: TranslateResolver | null;
12
- resolverT: (key: 'buttonLabel' | 'errorMessage' | 'modalTitle' | 'submitButtonLabelEmpty' | 'submitButtonLabelFull' | 'successMessage') => string;
13
- setLocaleToTranslateFrom: (code: string) => void;
14
- submit: (args: {
15
- emptyOnly: boolean;
16
- }) => Promise<void>;
17
- };
18
- export declare const TranslatorContext: import("react").Context<TranslatorContextData | null>;
19
- export declare const useTranslator: () => TranslatorContextData;
20
- export {};
21
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/client/providers/Translator/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,KAAK,qBAAqB,GAAG;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACvD,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,CACT,GAAG,EACC,aAAa,GACb,cAAc,GACd,YAAY,GACZ,wBAAwB,GACxB,uBAAuB,GACvB,gBAAgB,KACjB,MAAM,CAAA;IACX,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD,CAAA;AAED,eAAO,MAAM,iBAAiB,uDAAoD,CAAA;AAElF,eAAO,MAAM,aAAa,6BAMzB,CAAA"}
@@ -1,9 +0,0 @@
1
- import { createContext, useContext } from 'react';
2
- export const TranslatorContext = createContext(null);
3
- export const useTranslator = ()=>{
4
- const context = useContext(TranslatorContext);
5
- if (context === null) throw new Error('useTranslator must be used within TranslatorProvider');
6
- return context;
7
- };
8
-
9
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/providers/Translator/context.ts"],"sourcesContent":["import type { Locale } from 'payload'\r\nimport { createContext, useContext } from 'react'\r\n\r\nimport type { TranslateResolver } from '../../../resolvers/types'\r\n\r\ntype TranslatorContextData = {\r\n closeTranslator: () => void\r\n localeToTranslateFrom: string\r\n localesOptions: Locale[]\r\n modalSlug: string\r\n openTranslator: (args: { resolverKey: string }) => void\r\n resolver: TranslateResolver | null\r\n resolverT: (\r\n key:\r\n | 'buttonLabel'\r\n | 'errorMessage'\r\n | 'modalTitle'\r\n | 'submitButtonLabelEmpty'\r\n | 'submitButtonLabelFull'\r\n | 'successMessage',\r\n ) => string\r\n setLocaleToTranslateFrom: (code: string) => void\r\n submit: (args: { emptyOnly: boolean }) => Promise<void>\r\n}\r\n\r\nexport const TranslatorContext = createContext<TranslatorContextData | null>(null)\r\n\r\nexport const useTranslator = () => {\r\n const context = useContext(TranslatorContext)\r\n\r\n if (context === null) throw new Error('useTranslator must be used within TranslatorProvider')\r\n\r\n return context\r\n}\r\n"],"names":["createContext","useContext","TranslatorContext","useTranslator","context","Error"],"mappings":"AACA,SAASA,aAAa,EAAEC,UAAU,QAAQ,QAAO;AAwBjD,OAAO,MAAMC,oBAAoBF,cAA4C,MAAK;AAElF,OAAO,MAAMG,gBAAgB;IAC3B,MAAMC,UAAUH,WAAWC;IAE3B,IAAIE,YAAY,MAAM,MAAM,IAAIC,MAAM;IAEtC,OAAOD;AACT,EAAC"}
@@ -1,2 +0,0 @@
1
- export { CustomButtonWithTranslator } from '../client/components/CustomButton/CustomButtonWithTranslator';
2
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAA"}
@@ -1,3 +0,0 @@
1
- export { CustomButtonWithTranslator } from '../client/components/CustomButton/CustomButtonWithTranslator';
2
-
3
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/exports/client.ts"],"sourcesContent":["export { CustomButtonWithTranslator } from '../client/components/CustomButton/CustomButtonWithTranslator'\r\n"],"names":["CustomButtonWithTranslator"],"mappings":"AAAA,SAASA,0BAA0B,QAAQ,+DAA8D"}
@@ -1,87 +0,0 @@
1
- export declare const translations: {
2
- en: {
3
- 'plugin-translator': {
4
- resolver_copy_buttonLabel: string;
5
- resolver_copy_errorMessage: string;
6
- resolver_copy_modalTitle: string;
7
- resolver_copy_submitButtonLabelEmpty: string;
8
- resolver_copy_submitButtonLabelFull: string;
9
- resolver_copy_successMessage: string;
10
- resolver_google_buttonLabel: string;
11
- resolver_google_errorMessage: string;
12
- resolver_google_modalTitle: string;
13
- resolver_google_submitButtonLabelEmpty: string;
14
- resolver_google_submitButtonLabelFull: string;
15
- resolver_google_successMessage: string;
16
- resolver_libre_buttonLabel: string;
17
- resolver_libre_errorMessage: string;
18
- resolver_libre_modalTitle: string;
19
- resolver_libre_submitButtonLabelEmpty: string;
20
- resolver_libre_submitButtonLabelFull: string;
21
- resolver_libre_successMessage: string;
22
- resolver_openai_buttonLabel: string;
23
- resolver_openai_errorMessage: string;
24
- resolver_openai_modalTitle: string;
25
- resolver_openai_submitButtonLabelEmpty: string;
26
- resolver_openai_submitButtonLabelFull: string;
27
- resolver_openai_successMessage: string;
28
- };
29
- };
30
- uk: {
31
- 'plugin-translator': {
32
- resolver_copy_buttonLabel: string;
33
- resolver_copy_errorMessage: string;
34
- resolver_copy_modalTitle: string;
35
- resolver_copy_submitButtonLabelEmpty: string;
36
- resolver_copy_submitButtonLabelFull: string;
37
- resolver_copy_successMessage: string;
38
- resolver_google_buttonLabel: string;
39
- resolver_google_errorMessage: string;
40
- resolver_google_modalTitle: string;
41
- resolver_google_submitButtonLabelEmpty: string;
42
- resolver_google_submitButtonLabelFull: string;
43
- resolver_google_successMessage: string;
44
- resolver_libre_buttonLabel: string;
45
- resolver_libre_errorMessage: string;
46
- resolver_libre_modalTitle: string;
47
- resolver_libre_submitButtonLabelEmpty: string;
48
- resolver_libre_submitButtonLabelFull: string;
49
- resolver_libre_successMessage: string;
50
- resolver_openai_buttonLabel: string;
51
- resolver_openai_errorMessage: string;
52
- resolver_openai_modalTitle: string;
53
- resolver_openai_submitButtonLabelEmpty: string;
54
- resolver_openai_submitButtonLabelFull: string;
55
- resolver_openai_successMessage: string;
56
- };
57
- };
58
- zh: {
59
- 'plugin-translator': {
60
- resolver_copy_buttonLabel: string;
61
- resolver_copy_errorMessage: string;
62
- resolver_copy_modalTitle: string;
63
- resolver_copy_submitButtonLabelEmpty: string;
64
- resolver_copy_submitButtonLabelFull: string;
65
- resolver_copy_successMessage: string;
66
- resolver_google_buttonLabel: string;
67
- resolver_google_errorMessage: string;
68
- resolver_google_modalTitle: string;
69
- resolver_google_submitButtonLabelEmpty: string;
70
- resolver_google_submitButtonLabelFull: string;
71
- resolver_google_successMessage: string;
72
- resolver_libre_buttonLabel: string;
73
- resolver_libre_errorMessage: string;
74
- resolver_libre_modalTitle: string;
75
- resolver_libre_submitButtonLabelEmpty: string;
76
- resolver_libre_submitButtonLabelFull: string;
77
- resolver_libre_successMessage: string;
78
- resolver_openai_buttonLabel: string;
79
- resolver_openai_errorMessage: string;
80
- resolver_openai_modalTitle: string;
81
- resolver_openai_submitButtonLabelEmpty: string;
82
- resolver_openai_submitButtonLabelFull: string;
83
- resolver_openai_successMessage: string;
84
- };
85
- };
86
- };
87
- //# sourceMappingURL=i18n-translations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n-translations.d.ts","sourceRoot":"","sources":["../src/i18n-translations.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGxB,CAAA"}
@@ -1,88 +0,0 @@
1
- export const translations = {
2
- en: {
3
- 'plugin-translator': {
4
- resolver_copy_buttonLabel: 'Copy from other locale',
5
- resolver_copy_errorMessage: 'An error occurred when trying to translate the data',
6
- resolver_copy_modalTitle: 'Choose the locale to copy from',
7
- resolver_copy_submitButtonLabelEmpty: 'Copy only empty fields',
8
- resolver_copy_submitButtonLabelFull: 'Copy all',
9
- resolver_copy_successMessage: 'Successfully copied. Press "Save" to apply the changes.',
10
- resolver_google_buttonLabel: 'Google Translate',
11
- resolver_google_errorMessage: 'An error occurred when trying to translate the data',
12
- resolver_google_modalTitle: 'Choose the locale to translate from',
13
- resolver_google_submitButtonLabelEmpty: 'Translate only empty fields',
14
- resolver_google_submitButtonLabelFull: 'Translate all',
15
- resolver_google_successMessage: 'Successfully translated. Press "Save" to apply the changes.',
16
- resolver_libre_buttonLabel: 'Libre Translate',
17
- resolver_libre_errorMessage: 'An error occurred when trying to translate the data',
18
- resolver_libre_modalTitle: 'Choose the locale to translate from',
19
- resolver_libre_submitButtonLabelEmpty: 'Translate only empty fields',
20
- resolver_libre_submitButtonLabelFull: 'Translate all',
21
- resolver_libre_successMessage: 'Successfully translated. Press "Save" to apply the changes.',
22
- resolver_openai_buttonLabel: 'AI Translate',
23
- resolver_openai_errorMessage: 'An error occurred when trying to translate the data',
24
- resolver_openai_modalTitle: 'Choose the locale to translate from',
25
- resolver_openai_submitButtonLabelEmpty: 'Translate only empty fields',
26
- resolver_openai_submitButtonLabelFull: 'Translate all',
27
- resolver_openai_successMessage: 'Successfully translated. Press "Save" to apply the changes.'
28
- }
29
- },
30
- uk: {
31
- 'plugin-translator': {
32
- resolver_copy_buttonLabel: 'Копіювати з іншої локалі',
33
- resolver_copy_errorMessage: 'Сталася помилка під час спроби перекладу даних',
34
- resolver_copy_modalTitle: 'Виберіть локаль для копіювання',
35
- resolver_copy_submitButtonLabelEmpty: 'Копіювати лише порожні поля',
36
- resolver_copy_submitButtonLabelFull: 'Копіювати все',
37
- resolver_copy_successMessage: 'Успішно скопійовано. Натисніть "Зберегти", щоб застосувати зміни.',
38
- resolver_google_buttonLabel: 'Переклад Google',
39
- resolver_google_errorMessage: 'Сталася помилка під час спроби перекладу даних',
40
- resolver_google_modalTitle: 'Виберіть локаль для перекладу',
41
- resolver_google_submitButtonLabelEmpty: 'Перекласти лише порожні поля',
42
- resolver_google_submitButtonLabelFull: 'Перекласти все',
43
- resolver_google_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.',
44
- resolver_libre_buttonLabel: 'Переклад Libre',
45
- resolver_libre_errorMessage: 'Сталася помилка під час спроби перекладу даних',
46
- resolver_libre_modalTitle: 'Виберіть локаль для перекладу',
47
- resolver_libre_submitButtonLabelEmpty: 'Перекласти лише порожні поля',
48
- resolver_libre_submitButtonLabelFull: 'Перекласти все',
49
- resolver_libre_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.',
50
- resolver_openai_buttonLabel: 'Переклад AI',
51
- resolver_openai_errorMessage: 'Сталася помилка під час спроби перекладу даних',
52
- resolver_openai_modalTitle: 'Виберіть локаль для перекладу',
53
- resolver_openai_submitButtonLabelEmpty: 'Перекласти лише порожні поля',
54
- resolver_openai_submitButtonLabelFull: 'Перекласти все',
55
- resolver_openai_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.'
56
- }
57
- },
58
- zh: {
59
- 'plugin-translator': {
60
- resolver_copy_buttonLabel: '从其他语言复制',
61
- resolver_copy_errorMessage: '尝试翻译数据时发生错误',
62
- resolver_copy_modalTitle: '选择要复制的语言',
63
- resolver_copy_submitButtonLabelEmpty: '仅复制空字段',
64
- resolver_copy_submitButtonLabelFull: '复制全部',
65
- resolver_copy_successMessage: '复制成功。按下“保存”以应用更改。',
66
- resolver_google_buttonLabel: '谷歌翻译',
67
- resolver_google_errorMessage: '尝试翻译数据时发生错误',
68
- resolver_google_modalTitle: '选择要翻译的语言',
69
- resolver_google_submitButtonLabelEmpty: '仅翻译空字段',
70
- resolver_google_submitButtonLabelFull: '翻译全部',
71
- resolver_google_successMessage: '翻译成功。按下“保存”以应用更改。',
72
- resolver_libre_buttonLabel: '自由翻译',
73
- resolver_libre_errorMessage: '尝试翻译数据时发生错误',
74
- resolver_libre_modalTitle: '选择要翻译的语言',
75
- resolver_libre_submitButtonLabelEmpty: '仅翻译空字段',
76
- resolver_libre_submitButtonLabelFull: '翻译全部',
77
- resolver_libre_successMessage: '翻译成功。按下“保存”以应用更改。',
78
- resolver_openai_buttonLabel: 'AI翻译',
79
- resolver_openai_errorMessage: '尝试翻译数据时发生错误',
80
- resolver_openai_modalTitle: '选择要翻译的语言',
81
- resolver_openai_submitButtonLabelEmpty: '仅翻译空字段',
82
- resolver_openai_submitButtonLabelFull: '翻译全部',
83
- resolver_openai_successMessage: '翻译成功。按下“保存”以应用更改。'
84
- }
85
- }
86
- };
87
-
88
- //# sourceMappingURL=i18n-translations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/i18n-translations.ts"],"sourcesContent":["export const translations = {\r\n en: {\r\n 'plugin-translator': {\r\n resolver_copy_buttonLabel: 'Copy from other locale',\r\n resolver_copy_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_copy_modalTitle: 'Choose the locale to copy from',\r\n resolver_copy_submitButtonLabelEmpty: 'Copy only empty fields',\r\n resolver_copy_submitButtonLabelFull: 'Copy all',\r\n resolver_copy_successMessage: 'Successfully copied. Press \"Save\" to apply the changes.',\r\n\r\n resolver_google_buttonLabel: 'Google Translate',\r\n resolver_google_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_google_modalTitle: 'Choose the locale to translate from',\r\n resolver_google_submitButtonLabelEmpty: 'Translate only empty fields',\r\n resolver_google_submitButtonLabelFull: 'Translate all',\r\n resolver_google_successMessage: 'Successfully translated. Press \"Save\" to apply the changes.',\r\n\r\n resolver_libre_buttonLabel: 'Libre Translate',\r\n resolver_libre_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_libre_modalTitle: 'Choose the locale to translate from',\r\n resolver_libre_submitButtonLabelEmpty: 'Translate only empty fields',\r\n resolver_libre_submitButtonLabelFull: 'Translate all',\r\n resolver_libre_successMessage: 'Successfully translated. Press \"Save\" to apply the changes.',\r\n\r\n resolver_openai_buttonLabel: 'AI Translate',\r\n resolver_openai_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_openai_modalTitle: 'Choose the locale to translate from',\r\n resolver_openai_submitButtonLabelEmpty: 'Translate only empty fields',\r\n resolver_openai_submitButtonLabelFull: 'Translate all',\r\n resolver_openai_successMessage: 'Successfully translated. Press \"Save\" to apply the changes.',\r\n },\r\n },\r\n uk: {\r\n 'plugin-translator': {\r\n resolver_copy_buttonLabel: 'Копіювати з іншої локалі',\r\n resolver_copy_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_copy_modalTitle: 'Виберіть локаль для копіювання',\r\n resolver_copy_submitButtonLabelEmpty: 'Копіювати лише порожні поля',\r\n resolver_copy_submitButtonLabelFull: 'Копіювати все',\r\n resolver_copy_successMessage:\r\n 'Успішно скопійовано. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n\r\n resolver_google_buttonLabel: 'Переклад Google',\r\n resolver_google_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_google_modalTitle: 'Виберіть локаль для перекладу',\r\n resolver_google_submitButtonLabelEmpty: 'Перекласти лише порожні поля',\r\n resolver_google_submitButtonLabelFull: 'Перекласти все',\r\n resolver_google_successMessage:\r\n 'Успішно перекладено. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n\r\n resolver_libre_buttonLabel: 'Переклад Libre',\r\n resolver_libre_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_libre_modalTitle: 'Виберіть локаль для перекладу',\r\n resolver_libre_submitButtonLabelEmpty: 'Перекласти лише порожні поля',\r\n resolver_libre_submitButtonLabelFull: 'Перекласти все',\r\n resolver_libre_successMessage:\r\n 'Успішно перекладено. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n\r\n resolver_openai_buttonLabel: 'Переклад AI',\r\n resolver_openai_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_openai_modalTitle: 'Виберіть локаль для перекладу',\r\n resolver_openai_submitButtonLabelEmpty: 'Перекласти лише порожні поля',\r\n resolver_openai_submitButtonLabelFull: 'Перекласти все',\r\n resolver_openai_successMessage:\r\n 'Успішно перекладено. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n },\r\n },\r\n zh: {\r\n 'plugin-translator': {\r\n resolver_copy_buttonLabel: '从其他语言复制',\r\n resolver_copy_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_copy_modalTitle: '选择要复制的语言',\r\n resolver_copy_submitButtonLabelEmpty: '仅复制空字段',\r\n resolver_copy_submitButtonLabelFull: '复制全部',\r\n resolver_copy_successMessage: '复制成功。按下“保存”以应用更改。',\r\n\r\n resolver_google_buttonLabel: '谷歌翻译',\r\n resolver_google_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_google_modalTitle: '选择要翻译的语言',\r\n resolver_google_submitButtonLabelEmpty: '仅翻译空字段',\r\n resolver_google_submitButtonLabelFull: '翻译全部',\r\n resolver_google_successMessage: '翻译成功。按下“保存”以应用更改。',\r\n\r\n resolver_libre_buttonLabel: '自由翻译',\r\n resolver_libre_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_libre_modalTitle: '选择要翻译的语言',\r\n resolver_libre_submitButtonLabelEmpty: '仅翻译空字段',\r\n resolver_libre_submitButtonLabelFull: '翻译全部',\r\n resolver_libre_successMessage: '翻译成功。按下“保存”以应用更改。',\r\n\r\n resolver_openai_buttonLabel: 'AI翻译',\r\n resolver_openai_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_openai_modalTitle: '选择要翻译的语言',\r\n resolver_openai_submitButtonLabelEmpty: '仅翻译空字段',\r\n resolver_openai_submitButtonLabelFull: '翻译全部',\r\n resolver_openai_successMessage: '翻译成功。按下“保存”以应用更改。',\r\n },\r\n },\r\n}\r\n"],"names":["translations","en","resolver_copy_buttonLabel","resolver_copy_errorMessage","resolver_copy_modalTitle","resolver_copy_submitButtonLabelEmpty","resolver_copy_submitButtonLabelFull","resolver_copy_successMessage","resolver_google_buttonLabel","resolver_google_errorMessage","resolver_google_modalTitle","resolver_google_submitButtonLabelEmpty","resolver_google_submitButtonLabelFull","resolver_google_successMessage","resolver_libre_buttonLabel","resolver_libre_errorMessage","resolver_libre_modalTitle","resolver_libre_submitButtonLabelEmpty","resolver_libre_submitButtonLabelFull","resolver_libre_successMessage","resolver_openai_buttonLabel","resolver_openai_errorMessage","resolver_openai_modalTitle","resolver_openai_submitButtonLabelEmpty","resolver_openai_submitButtonLabelFull","resolver_openai_successMessage","uk","zh"],"mappings":"AAAA,OAAO,MAAMA,eAAe;IAC1BC,IAAI;QACF,qBAAqB;YACnBC,2BAA2B;YAC3BC,4BAA4B;YAC5BC,0BAA0B;YAC1BC,sCAAsC;YACtCC,qCAAqC;YACrCC,8BAA8B;YAE9BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;YAEhCC,4BAA4B;YAC5BC,6BAA6B;YAC7BC,2BAA2B;YAC3BC,uCAAuC;YACvCC,sCAAsC;YACtCC,+BAA+B;YAE/BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;QAClC;IACF;IACAC,IAAI;QACF,qBAAqB;YACnBxB,2BAA2B;YAC3BC,4BAA4B;YAC5BC,0BAA0B;YAC1BC,sCAAsC;YACtCC,qCAAqC;YACrCC,8BACE;YAEFC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCACE;YAEFC,4BAA4B;YAC5BC,6BAA6B;YAC7BC,2BAA2B;YAC3BC,uCAAuC;YACvCC,sCAAsC;YACtCC,+BACE;YAEFC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCACE;QACJ;IACF;IACAE,IAAI;QACF,qBAAqB;YACnBzB,2BAA2B;YAC3BC,4BAA4B;YAC5BC,0BAA0B;YAC1BC,sCAAsC;YACtCC,qCAAqC;YACrCC,8BAA8B;YAE9BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;YAEhCC,4BAA4B;YAC5BC,6BAA6B;YAC7BC,2BAA2B;YAC3BC,uCAAuC;YACvCC,sCAAsC;YACtCC,+BAA+B;YAE/BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;QAClC;IACF;AACF,EAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsC,MAAM,EAAE,MAAM,SAAS,CAAA;AAMzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,cAAc,mBAAmB,CAAA;AAEjC,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B,eAAO,MAAM,UAAU,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,MA+E5D,CAAA"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { CollectionSlug, Config, GlobalSlug, Plugin } from 'payload'\r\nimport { deepMerge } from 'payload/shared'\r\n\r\nimport { CustomButton } from './client/components/CustomButton'\r\nimport { translations } from './i18n-translations'\r\nimport { translateEndpoint } from './translate/endpoint'\r\nimport { translateOperation } from './translate/operation'\r\nimport type { TranslatorConfig } from './types'\r\n\r\nexport { copyResolver } from './resolvers/copy'\r\n\r\nexport { googleResolver } from './resolvers/google'\r\n\r\nexport { libreResolver } from './resolvers/libreTranslate'\r\n\r\nexport { openAIResolver } from './resolvers/openAI'\r\nexport * from './resolvers/types'\r\n\r\nexport { translateOperation }\r\n\r\nexport const translator: (pluginConfig: TranslatorConfig) => Plugin = (pluginConfig) => {\r\n return (config) => {\r\n if (pluginConfig.disabled || !config.localization || config.localization.locales.length < 2)\r\n return config\r\n\r\n const updatedConfig: Config = {\r\n ...config,\r\n admin: {\r\n ...(config.admin ?? {}),\r\n custom: {\r\n ...(config.admin?.custom ?? {}),\r\n translator: {\r\n resolvers: pluginConfig.resolvers.map(({ key }) => ({ key }))\r\n }\r\n }\r\n },\r\n collections:\r\n config.collections?.map((collection) => {\r\n if (!pluginConfig.collections.includes(collection.slug as CollectionSlug))\r\n return collection\r\n\r\n return {\r\n ...collection,\r\n admin: {\r\n ...(collection.admin ?? {}),\r\n components: {\r\n ...(collection.admin?.components ?? {}),\r\n edit: {\r\n ...(collection.admin?.components?.edit ?? {}),\r\n PublishButton: CustomButton('publish'),\r\n SaveButton: CustomButton('save')\r\n }\r\n }\r\n }\r\n }\r\n }) ?? [],\r\n custom: {\r\n ...(config.custom ?? {}),\r\n translator: {\r\n ...pluginConfig\r\n }\r\n },\r\n endpoints: [\r\n ...(config.endpoints ?? []),\r\n {\r\n handler: translateEndpoint,\r\n method: 'post',\r\n path: '/translator/translate'\r\n }\r\n ],\r\n globals:\r\n config.globals?.map((global) => {\r\n if (!pluginConfig.globals.includes(global.slug as GlobalSlug)) return global\r\n\r\n return {\r\n ...global,\r\n admin: {\r\n ...(global.admin ?? {}),\r\n components: {\r\n ...(global.admin?.components ?? {}),\r\n elements: {\r\n ...(global.admin?.components?.elements ?? {}),\r\n PublishButton: CustomButton('publish'),\r\n SaveButton: CustomButton('save')\r\n }\r\n }\r\n }\r\n }\r\n }) ?? [],\r\n i18n: {\r\n ...config.i18n,\r\n translations: {\r\n ...deepMerge(config.i18n?.translations ?? {}, translations)\r\n }\r\n }\r\n }\r\n\r\n return updatedConfig\r\n }\r\n}\r\n"],"names":["deepMerge","CustomButton","translations","translateEndpoint","translateOperation","copyResolver","googleResolver","libreResolver","openAIResolver","translator","pluginConfig","config","disabled","localization","locales","length","updatedConfig","admin","custom","resolvers","map","key","collections","collection","includes","slug","components","edit","PublishButton","SaveButton","endpoints","handler","method","path","globals","global","elements","i18n"],"mappings":"AACA,SAASA,SAAS,QAAQ,iBAAgB;AAE1C,SAASC,YAAY,QAAQ,mCAAkC;AAC/D,SAASC,YAAY,QAAQ,sBAAqB;AAClD,SAASC,iBAAiB,QAAQ,uBAAsB;AACxD,SAASC,kBAAkB,QAAQ,wBAAuB;AAG1D,SAASC,YAAY,QAAQ,mBAAkB;AAE/C,SAASC,cAAc,QAAQ,qBAAoB;AAEnD,SAASC,aAAa,QAAQ,6BAA4B;AAE1D,SAASC,cAAc,QAAQ,qBAAoB;AACnD,cAAc,oBAAmB;AAEjC,SAASJ,kBAAkB,GAAE;AAE7B,OAAO,MAAMK,aAAyD,CAACC;IACrE,OAAO,CAACC;QACN,IAAID,aAAaE,QAAQ,IAAI,CAACD,OAAOE,YAAY,IAAIF,OAAOE,YAAY,CAACC,OAAO,CAACC,MAAM,GAAG,GACxF,OAAOJ;QAET,MAAMK,gBAAwB;YAC5B,GAAGL,MAAM;YACTM,OAAO;gBACL,GAAIN,OAAOM,KAAK,IAAI,CAAC,CAAC;gBACtBC,QAAQ;oBACN,GAAIP,OAAOM,KAAK,EAAEC,UAAU,CAAC,CAAC;oBAC9BT,YAAY;wBACVU,WAAWT,aAAaS,SAAS,CAACC,GAAG,CAAC,CAAC,EAAEC,GAAG,EAAE,GAAM,CAAA;gCAAEA;4BAAI,CAAA;oBAC5D;gBACF;YACF;YACAC,aACEX,OAAOW,WAAW,EAAEF,IAAI,CAACG;gBACvB,IAAI,CAACb,aAAaY,WAAW,CAACE,QAAQ,CAACD,WAAWE,IAAI,GACpD,OAAOF;gBAET,OAAO;oBACL,GAAGA,UAAU;oBACbN,OAAO;wBACL,GAAIM,WAAWN,KAAK,IAAI,CAAC,CAAC;wBAC1BS,YAAY;4BACV,GAAIH,WAAWN,KAAK,EAAES,cAAc,CAAC,CAAC;4BACtCC,MAAM;gCACJ,GAAIJ,WAAWN,KAAK,EAAES,YAAYC,QAAQ,CAAC,CAAC;gCAC5CC,eAAe3B,aAAa;gCAC5B4B,YAAY5B,aAAa;4BAC3B;wBACF;oBACF;gBACF;YACF,MAAM,EAAE;YACViB,QAAQ;gBACN,GAAIP,OAAOO,MAAM,IAAI,CAAC,CAAC;gBACvBT,YAAY;oBACV,GAAGC,YAAY;gBACjB;YACF;YACAoB,WAAW;mBACLnB,OAAOmB,SAAS,IAAI,EAAE;gBAC1B;oBACEC,SAAS5B;oBACT6B,QAAQ;oBACRC,MAAM;gBACR;aACD;YACDC,SACEvB,OAAOuB,OAAO,EAAEd,IAAI,CAACe;gBACnB,IAAI,CAACzB,aAAawB,OAAO,CAACV,QAAQ,CAACW,OAAOV,IAAI,GAAiB,OAAOU;gBAEtE,OAAO;oBACL,GAAGA,MAAM;oBACTlB,OAAO;wBACL,GAAIkB,OAAOlB,KAAK,IAAI,CAAC,CAAC;wBACtBS,YAAY;4BACV,GAAIS,OAAOlB,KAAK,EAAES,cAAc,CAAC,CAAC;4BAClCU,UAAU;gCACR,GAAID,OAAOlB,KAAK,EAAES,YAAYU,YAAY,CAAC,CAAC;gCAC5CR,eAAe3B,aAAa;gCAC5B4B,YAAY5B,aAAa;4BAC3B;wBACF;oBACF;gBACF;YACF,MAAM,EAAE;YACVoC,MAAM;gBACJ,GAAG1B,OAAO0B,IAAI;gBACdnC,cAAc;oBACZ,GAAGF,UAAUW,OAAO0B,IAAI,EAAEnC,gBAAgB,CAAC,GAAGA,aAAa;gBAC7D;YACF;QACF;QAEA,OAAOc;IACT;AACF,EAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/resolvers/copy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,YAAY,QAAO,iBAY/B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/resolvers/copy.ts"],"sourcesContent":["import type { TranslateResolver } from './types'\r\n\r\nexport const copyResolver = (): TranslateResolver => {\r\n return {\r\n key: 'copy',\r\n resolve: (args) => {\r\n const { texts } = args\r\n\r\n return {\r\n success: true,\r\n translatedTexts: texts,\r\n }\r\n },\r\n }\r\n}\r\n"],"names":["copyResolver","key","resolve","args","texts","success","translatedTexts"],"mappings":"AAEA,OAAO,MAAMA,eAAe;IAC1B,OAAO;QACLC,KAAK;QACLC,SAAS,CAACC;YACR,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAElB,OAAO;gBACLE,SAAS;gBACTC,iBAAiBF;YACnB;QACF;IACF;AACF,EAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/resolvers/google.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAwBhD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,0BAG5B,oBAAoB,KAAG,iBAqDzB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/resolvers/google.ts"],"sourcesContent":["import { chunkArray } from '../utils/chunkArray'\r\nimport type { TranslateResolver } from './types'\r\n\r\ntype GoogleResponse = {\r\n data: {\r\n data: {\r\n translations: {\r\n detectedSourceLanguage: string\r\n model: string\r\n translatedText: string\r\n }[]\r\n }\r\n }\r\n success: boolean\r\n}\r\n\r\nconst localeToCountryCodeMapper = {\r\n ua: 'uk',\r\n}\r\n\r\nconst mapLocale = (incoming: string) =>\r\n incoming in localeToCountryCodeMapper\r\n ? localeToCountryCodeMapper[incoming as keyof typeof localeToCountryCodeMapper]\r\n : incoming\r\n\r\nexport type GoogleResolverConfig = {\r\n apiKey: string\r\n /**\r\n * How many texts to include into 1 request\r\n * @default 100\r\n */\r\n chunkLength?: number\r\n}\r\n\r\nexport const googleResolver = ({\r\n apiKey,\r\n chunkLength = 100,\r\n}: GoogleResolverConfig): TranslateResolver => {\r\n return {\r\n key: 'google',\r\n resolve: async (args) => {\r\n const { localeFrom, localeTo, req, texts } = args\r\n\r\n const apiUrl = `https://translation.googleapis.com/language/translate/v2?key=${apiKey}`\r\n\r\n const responses: GoogleResponse[] = await Promise.all(\r\n chunkArray(texts, chunkLength).map((q) =>\r\n fetch(apiUrl, {\r\n body: JSON.stringify({\r\n q,\r\n source: mapLocale(localeFrom),\r\n target: mapLocale(localeTo),\r\n }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'POST',\r\n }).then(async (res) => {\r\n const data = await res.json()\r\n\r\n if (!res.ok)\r\n req.payload.logger.info({\r\n googleResponse: data,\r\n message: 'An error occurred when trying to translate the data using Google API',\r\n })\r\n\r\n return {\r\n data,\r\n success: res.ok,\r\n }\r\n }),\r\n ),\r\n )\r\n\r\n if (responses.some((res) => !res.success)) {\r\n return {\r\n success: false,\r\n }\r\n }\r\n\r\n const translatedTexts = responses\r\n .flatMap((chunk) => chunk.data.data.translations)\r\n .map((translation) => translation.translatedText)\r\n\r\n return {\r\n success: true,\r\n translatedTexts,\r\n }\r\n },\r\n }\r\n}\r\n"],"names":["chunkArray","localeToCountryCodeMapper","ua","mapLocale","incoming","googleResolver","apiKey","chunkLength","key","resolve","args","localeFrom","localeTo","req","texts","apiUrl","responses","Promise","all","map","q","fetch","body","JSON","stringify","source","target","headers","method","then","res","data","json","ok","payload","logger","info","googleResponse","message","success","some","translatedTexts","flatMap","chunk","translations","translation","translatedText"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAqB;AAgBhD,MAAMC,4BAA4B;IAChCC,IAAI;AACN;AAEA,MAAMC,YAAY,CAACC,WACjBA,YAAYH,4BACRA,yBAAyB,CAACG,SAAmD,GAC7EA;AAWN,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,MAAM,EACNC,cAAc,GAAG,EACI;IACrB,OAAO;QACLC,KAAK;QACLC,SAAS,OAAOC;YACd,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGJ;YAE7C,MAAMK,SAAS,CAAC,6DAA6D,EAAET,QAAQ;YAEvF,MAAMU,YAA8B,MAAMC,QAAQC,GAAG,CACnDlB,WAAWc,OAAOP,aAAaY,GAAG,CAAC,CAACC,IAClCC,MAAMN,QAAQ;oBACZO,MAAMC,KAAKC,SAAS,CAAC;wBACnBJ;wBACAK,QAAQtB,UAAUQ;wBAClBe,QAAQvB,UAAUS;oBACpB;oBACAe,SAAS;wBACP,gBAAgB;oBAClB;oBACAC,QAAQ;gBACV,GAAGC,IAAI,CAAC,OAAOC;oBACb,MAAMC,OAAO,MAAMD,IAAIE,IAAI;oBAE3B,IAAI,CAACF,IAAIG,EAAE,EACTpB,IAAIqB,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;wBACtBC,gBAAgBN;wBAChBO,SAAS;oBACX;oBAEF,OAAO;wBACLP;wBACAQ,SAAST,IAAIG,EAAE;oBACjB;gBACF;YAIJ,IAAIjB,UAAUwB,IAAI,CAAC,CAACV,MAAQ,CAACA,IAAIS,OAAO,GAAG;gBACzC,OAAO;oBACLA,SAAS;gBACX;YACF;YAEA,MAAME,kBAAkBzB,UACrB0B,OAAO,CAAC,CAACC,QAAUA,MAAMZ,IAAI,CAACA,IAAI,CAACa,YAAY,EAC/CzB,GAAG,CAAC,CAAC0B,cAAgBA,YAAYC,cAAc;YAElD,OAAO;gBACLP,SAAS;gBACTE;YACF;QACF;IACF;AACF,EAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"libreTranslate.d.ts","sourceRoot":"","sources":["../../src/resolvers/libreTranslate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAkBhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,+BAI3B,mBAAmB,KAAG,iBAqDxB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/resolvers/libreTranslate.ts"],"sourcesContent":["import { chunkArray } from '../utils/chunkArray'\r\nimport type { TranslateResolver } from './types'\r\n\r\ntype LibreResponse = {\r\n data: {\r\n translatedText: string[]\r\n }\r\n success: boolean\r\n}\r\n\r\nconst localeToCountryCodeMapper = {\r\n ua: 'uk',\r\n}\r\n\r\nconst mapLocale = (incoming: string) =>\r\n incoming in localeToCountryCodeMapper\r\n ? localeToCountryCodeMapper[incoming as keyof typeof localeToCountryCodeMapper]\r\n : incoming\r\n\r\nexport type LibreResolverConfig = {\r\n apiKey: string\r\n /**\r\n * How many texts to include into 1 request\r\n * @default 100\r\n */\r\n chunkLength?: number\r\n /**\r\n * Custom url for the libre translate instance\r\n * @default \"https://libretranslate.com/translate\"\r\n */\r\n url?: string\r\n}\r\n\r\nexport const libreResolver = ({\r\n apiKey,\r\n chunkLength = 100,\r\n url = 'https://libretranslate.com/translate',\r\n}: LibreResolverConfig): TranslateResolver => {\r\n return {\r\n key: 'libre',\r\n resolve: async (args) => {\r\n const { localeFrom, localeTo, req, texts } = args\r\n\r\n const apiUrl = url\r\n\r\n const responses: LibreResponse[] = await Promise.all(\r\n chunkArray(texts, chunkLength).map((q) =>\r\n fetch(apiUrl, {\r\n body: JSON.stringify({\r\n api_key: apiKey,\r\n q,\r\n source: mapLocale(localeFrom),\r\n target: mapLocale(localeTo),\r\n }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'POST',\r\n }).then(async (res) => {\r\n const data = await res.json()\r\n\r\n if (!res.ok)\r\n req.payload.logger.info({\r\n libreResponse: data,\r\n message:\r\n 'An error occurred when trying to translate the data using LibreTranslate API',\r\n })\r\n\r\n return {\r\n data,\r\n success: res.ok,\r\n }\r\n }),\r\n ),\r\n )\r\n\r\n if (responses.some((res) => !res.success)) {\r\n return {\r\n success: false,\r\n }\r\n }\r\n\r\n const translatedTexts = responses.flatMap((chunk) => chunk.data.translatedText)\r\n\r\n return {\r\n success: true,\r\n translatedTexts,\r\n }\r\n },\r\n }\r\n}\r\n"],"names":["chunkArray","localeToCountryCodeMapper","ua","mapLocale","incoming","libreResolver","apiKey","chunkLength","url","key","resolve","args","localeFrom","localeTo","req","texts","apiUrl","responses","Promise","all","map","q","fetch","body","JSON","stringify","api_key","source","target","headers","method","then","res","data","json","ok","payload","logger","info","libreResponse","message","success","some","translatedTexts","flatMap","chunk","translatedText"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAqB;AAUhD,MAAMC,4BAA4B;IAChCC,IAAI;AACN;AAEA,MAAMC,YAAY,CAACC,WACjBA,YAAYH,4BACRA,yBAAyB,CAACG,SAAmD,GAC7EA;AAgBN,OAAO,MAAMC,gBAAgB,CAAC,EAC5BC,MAAM,EACNC,cAAc,GAAG,EACjBC,MAAM,sCAAsC,EACxB;IACpB,OAAO;QACLC,KAAK;QACLC,SAAS,OAAOC;YACd,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGJ;YAE7C,MAAMK,SAASR;YAEf,MAAMS,YAA6B,MAAMC,QAAQC,GAAG,CAClDnB,WAAWe,OAAOR,aAAaa,GAAG,CAAC,CAACC,IAClCC,MAAMN,QAAQ;oBACZO,MAAMC,KAAKC,SAAS,CAAC;wBACnBC,SAASpB;wBACTe;wBACAM,QAAQxB,UAAUS;wBAClBgB,QAAQzB,UAAUU;oBACpB;oBACAgB,SAAS;wBACP,gBAAgB;oBAClB;oBACAC,QAAQ;gBACV,GAAGC,IAAI,CAAC,OAAOC;oBACb,MAAMC,OAAO,MAAMD,IAAIE,IAAI;oBAE3B,IAAI,CAACF,IAAIG,EAAE,EACTrB,IAAIsB,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;wBACtBC,eAAeN;wBACfO,SACE;oBACJ;oBAEF,OAAO;wBACLP;wBACAQ,SAAST,IAAIG,EAAE;oBACjB;gBACF;YAIJ,IAAIlB,UAAUyB,IAAI,CAAC,CAACV,MAAQ,CAACA,IAAIS,OAAO,GAAG;gBACzC,OAAO;oBACLA,SAAS;gBACX;YACF;YAEA,MAAME,kBAAkB1B,UAAU2B,OAAO,CAAC,CAACC,QAAUA,MAAMZ,IAAI,CAACa,cAAc;YAE9E,OAAO;gBACLL,SAAS;gBACTE;YACF;QACF;IACF;AACF,EAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"openAI.d.ts","sourceRoot":"","sources":["../../src/resolvers/openAI.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,qBAAqB,CAAA;CAC7B,KAAK,MAAM,CAAA;AAEZ,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AA6BD,eAAO,MAAM,cAAc,GAAI,iDAMG,oBAAoB,KAAG,iBAyIxD,CAAA"}