@translationstudio/translationstudio-strapi-extension 1.0.0 → 1.0.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.
Files changed (54) hide show
  1. package/README.md +29 -32
  2. package/dist/Types.d.ts +146 -0
  3. package/dist/_chunks/App-BHydyNKn.js +258 -0
  4. package/dist/_chunks/App-_TRa6R3c.mjs +258 -0
  5. package/dist/_chunks/en-B4KWt_jN.js +4 -0
  6. package/dist/_chunks/en-Byx4XI2L.mjs +4 -0
  7. package/dist/admin/index.js +319 -0
  8. package/dist/admin/index.mjs +320 -0
  9. package/dist/admin/src/components/Initializer.d.ts +5 -0
  10. package/dist/admin/src/components/PluginIcon.d.ts +2 -0
  11. package/dist/admin/src/components/TranslationMenu.d.ts +2 -0
  12. package/dist/admin/src/index.d.ts +11 -0
  13. package/dist/admin/src/pages/App.d.ts +2 -0
  14. package/dist/admin/src/pages/SettingsPage.d.ts +2 -0
  15. package/dist/admin/src/pluginId.d.ts +1 -0
  16. package/dist/admin/src/utils/getTranslation.d.ts +2 -0
  17. package/dist/server/index.js +1038 -0
  18. package/dist/server/index.mjs +1039 -0
  19. package/dist/server/src/bootstrap.d.ts +5 -0
  20. package/dist/server/src/config/index.d.ts +5 -0
  21. package/dist/server/src/content-types/index.d.ts +2 -0
  22. package/dist/server/src/controllers/controller.d.ts +19 -0
  23. package/dist/server/src/controllers/index.d.ts +20 -0
  24. package/dist/server/src/destroy.d.ts +5 -0
  25. package/dist/server/src/index.d.ts +85 -0
  26. package/dist/server/src/middlewares/index.d.ts +2 -0
  27. package/dist/server/src/policies/index.d.ts +2 -0
  28. package/dist/server/src/register.d.ts +5 -0
  29. package/dist/server/src/routes/index.d.ts +18 -0
  30. package/dist/server/src/services/functions/exportData/extractRichtextContent.d.ts +2 -0
  31. package/dist/server/src/services/functions/exportData/getContentType.d.ts +2 -0
  32. package/dist/server/src/services/functions/exportData/getEntry.d.ts +2 -0
  33. package/dist/server/src/services/functions/exportData/isFieldLocalizable.d.ts +2 -0
  34. package/dist/server/src/services/functions/exportData/jsonToHtml.d.ts +2 -0
  35. package/dist/server/src/services/functions/exportData/parsePayload.d.ts +7 -0
  36. package/dist/server/src/services/functions/exportData/processComponent.d.ts +3 -0
  37. package/dist/server/src/services/functions/exportData/processEntryFields.d.ts +2 -0
  38. package/dist/server/src/services/functions/exportData/transformResponse.d.ts +2 -0
  39. package/dist/server/src/services/functions/importData/extract.d.ts +6 -0
  40. package/dist/server/src/services/functions/importData/handleError.d.ts +1 -0
  41. package/dist/server/src/services/functions/importData/htmlToJson.d.ts +2 -0
  42. package/dist/server/src/services/functions/importData/organizeFields.d.ts +2 -0
  43. package/dist/server/src/services/functions/importData/parseImportPayload.d.ts +6 -0
  44. package/dist/server/src/services/functions/importData/parseInlineElements.d.ts +2 -0
  45. package/dist/server/src/services/functions/importData/parseNewValuesIntoStructure.d.ts +1 -0
  46. package/dist/server/src/services/functions/importData/prepareImportData.d.ts +2 -0
  47. package/dist/server/src/services/functions/importData/processComponentFields.d.ts +2 -0
  48. package/dist/server/src/services/functions/importData/processDynamicZones.d.ts +2 -0
  49. package/dist/server/src/services/functions/importData/processRegularFields.d.ts +2 -0
  50. package/dist/server/src/services/functions/importData/transformFieldsToData.d.ts +2 -0
  51. package/dist/server/src/services/functions/importData/updateEntry.d.ts +2 -0
  52. package/dist/server/src/services/index.d.ts +31 -0
  53. package/dist/server/src/services/service.d.ts +31 -0
  54. package/package.json +1 -1
@@ -0,0 +1,258 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { getFetchClient, Page } from "@strapi/strapi/admin";
3
+ import { Routes, Route } from "react-router-dom";
4
+ import { Main, Box, Alert, Flex, Typography, Textarea, Button } from "@strapi/design-system";
5
+ import { useState, useEffect } from "react";
6
+ const TSlogoFarbig = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='Ebene_1'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201444.47%20635.72'%3e%3cdefs%3e%3cstyle%3e.cls-1{fill:%23e94642;}.cls-2{fill:%23231f20;}.cls-3{fill:%23a51d78;}%3c/style%3e%3c/defs%3e%3cpath%20class='cls-2'%20d='M1151.68,294.37c34.28,0,50.11,19.74,50.11,59.01v56.4c0,6.94-3.91,10.85-10.85,10.85h-2.6c-6.94,0-10.84-3.9-10.84-10.85v-54.45c0-27.12-10.41-39.91-33.41-39.91s-32.97,15.4-32.97,42.74v51.63c0,6.94-3.91,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-102.39c0-6.94,3.91-10.85,10.85-10.85h2.6c6.94,0,10.85,3.91,10.85,10.85v12.34c5.64-14.39,19.73-25.36,40.56-25.36h0Z'/%3e%3cpath%20class='cls-2'%20d='M0,313.78v55.76c0,37.96,14.53,51.2,46.42,51.2h0c1.96,0,4.12-.03,6.29-.22,6.9-.65,9.8-4.45,9.11-11.07-.61-5.88-4.99-8.24-11.71-8.24-18.88,0-25.6-8.9-25.6-34.49v-52.94h25.81c6.94,0,10.85-3.47,10.85-9.54s-3.9-9.33-10.85-9.33H24.51v-15.83c0-7.59-4.34-11.28-11.93-9.55l-3.04,.65c-6.29,1.3-9.54,5.21-9.54,11.71v31.89Z'/%3e%3cpath%20class='cls-2'%20d='M139.49,295.02c7.38,0,11.06,4.77,10.2,11.71l-.22,1.74c-.65,6.94-4.77,9.54-11.93,9.54-20.39,.43-30.16,15.19-30.16,41.22v50.55c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-102.39c0-6.94,3.9-10.85,10.85-10.85h2.6c6.94,0,10.85,3.69,10.85,10.41v10.41c3.91-11.07,13.89-22.34,32.1-22.34h0Z'/%3e%3cpath%20class='cls-2'%20d='M259.67,358.59c0-27.12-15.84-43.82-38.83-43.82s-38.4,16.49-38.4,43.82,15.62,44.04,38.83,44.04,38.4-16.7,38.4-44.04m-101.53,0c0-42.74,26.03-64.43,56.84-64.43,19.52,0,36.88,9.54,44.04,26.69v-13.45c0-6.94,3.9-10.85,10.85-10.85h2.6c6.94,0,10.85,3.9,10.85,10.85v102.18c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-12.58c-6.94,16.7-24.51,26.47-43.82,26.47-30.81,0-57.06-21.91-57.06-64.87'/%3e%3cpath%20class='cls-2'%20d='M380.06,294.37c34.28,0,50.11,19.74,50.11,59.01v56.4c0,6.94-3.91,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-54.45c0-27.12-10.41-39.91-33.41-39.91s-32.98,15.4-32.98,42.74v51.63c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-102.39c0-6.94,3.91-10.85,10.85-10.85h2.6c6.94,0,10.85,3.91,10.85,10.85v12.34c5.64-14.39,19.73-25.36,40.57-25.36h0Z'/%3e%3cpath%20class='cls-2'%20d='M508.94,422.81c-20.8,0-42.78-8.33-53.19-21.48-4.44-5.61-2.26-11.49,4.99-13.67l2.17-.65c4.75-1.43,8.02-1.28,14.32,4.36,8.65,7.74,20.41,10.61,31.71,10.61,18.05,0,28.81-6.44,28.81-17.36,0-28.63-80.45-5.9-80.45-54.24,0-22.87,23.1-36.01,49.75-36.01,16.09,0,36.22,6.5,47,17.79,5.1,5.33,3.34,11.34-3.68,13.45l-2.17,.65c-5.86,1.76-8.85-.39-14.53-3.84-8.11-4.92-16.87-8.09-26.22-8.09-15.64,0-26.27,5.18-26.27,14.91,0,27.74,81.1,4.51,81.1,54.72,0,23.06-22.28,38.83-53.32,38.83h0Z'/%3e%3cpath%20class='cls-2'%20d='M585.05,409.79v-142.75c0-6.94,3.9-10.85,10.85-10.85h2.82c6.94,0,10.85,3.9,10.85,10.85v142.75c0,6.94-3.91,10.85-10.85,10.85h-2.82c-6.94,0-10.85-3.91-10.85-10.85'/%3e%3cpath%20class='cls-2'%20d='M737.56,358.59c0-27.12-15.84-43.82-38.84-43.82s-38.4,16.49-38.4,43.82,15.62,44.04,38.83,44.04,38.4-16.7,38.4-44.04m-101.53,0c0-42.74,26.03-64.43,56.84-64.43,19.52,0,36.88,9.54,44.04,26.69v-13.45c0-6.94,3.9-10.85,10.85-10.85h2.6c6.94,0,10.85,3.9,10.85,10.85v102.18c0,6.94-3.9,10.85-10.85,10.85h-2.6c-6.94,0-10.85-3.9-10.85-10.85v-12.58c-6.94,16.7-24.51,26.47-43.82,26.47-30.81,0-57.06-21.91-57.06-64.87'/%3e%3cpath%20class='cls-2'%20d='M800.25,315.42v55.76c0,37.96,14.53,51.2,46.42,51.2h0c1.95,0,4.12-.03,6.29-.22,6.89-.65,9.8-4.45,9.11-11.07-.61-5.88-4.99-8.24-11.71-8.24-18.87,0-25.6-8.9-25.6-34.49v-52.94h25.81c6.94,0,10.85-3.47,10.85-9.55s-3.91-9.33-10.85-9.33h-25.81v-15.83c0-7.59-4.34-11.28-11.93-9.54l-3.04,.65c-6.29,1.3-9.55,5.21-9.55,11.71v31.89Z'/%3e%3cpath%20class='cls-2'%20d='M883.72,409.79v-102.4c0-6.94,3.83-10.85,10.65-10.85h2.77c6.82,0,10.65,3.9,10.65,10.85v102.4c0,6.94-3.83,10.85-10.65,10.85h-2.77c-6.81,0-10.65-3.91-10.65-10.85m-2.05-142.96c0-8.24,6.08-13.02,14.32-13.02,7.59,0,14.32,4.77,14.32,13.02s-6.72,13.02-14.32,13.02c-8.24,0-14.32-4.77-14.32-13.02'/%3e%3cpath%20class='cls-2'%20d='M1036.06,358.59c0-27.12-15.62-43.82-38.62-43.82s-38.4,16.49-38.4,43.82,15.4,44.04,38.61,44.04,38.4-16.7,38.4-44.04m-101.31,0c0-44.69,31.02-64.43,62.69-64.43s62.91,19.74,62.91,64.43-31.02,64.87-62.7,64.87-62.91-19.74-62.91-64.87'/%3e%3cpath%20class='cls-2'%20d='M555.77,635.72c-20.98,0-43.14-8.4-53.65-21.66-4.48-5.66-2.27-11.59,5.03-13.78l2.19-.66c4.79-1.44,8.09-1.29,14.43,4.4,8.73,7.81,20.59,10.69,31.98,10.69,18.2,0,29.05-6.49,29.05-17.5,0-28.88-81.14-5.95-81.14-54.7,0-23.07,23.3-36.31,50.17-36.31,16.23,0,36.53,6.55,47.41,17.94,5.14,5.38,3.37,11.43-3.72,13.56l-2.19,.66c-5.91,1.77-8.92-.39-14.66-3.87-8.18-4.96-17.02-8.16-26.45-8.16-15.78,0-26.5,5.22-26.5,15.04,0,27.98,81.79,4.55,81.79,55.18,0,23.26-22.47,39.16-53.78,39.16h0Z'/%3e%3cpath%20class='cls-2'%20d='M639.98,526.42v56.23c0,38.29,14.66,51.63,46.82,51.63h0c1.97,0,4.16-.03,6.34-.22,6.96-.66,9.89-4.49,9.19-11.16-.61-5.93-5.03-8.31-11.81-8.31-19.03,0-25.82-8.97-25.82-34.79v-53.38h26.03c7,0,10.94-3.5,10.94-9.63s-3.94-9.41-10.94-9.41h-26.03v-15.97c0-7.66-4.38-11.38-12.03-9.63l-3.06,.66c-6.34,1.31-9.63,5.25-9.63,11.81v32.16Z'/%3e%3cpath%20class='cls-2'%20d='M826.59,508.39c7,0,10.94,3.94,10.94,10.94v103.27c0,7-3.94,10.94-10.94,10.94h-2.62c-7,0-10.94-3.94-10.94-10.94v-12.45c-5.69,14.51-19.9,25.57-40.91,25.57-34.57,0-50.54-19.91-50.54-59.51v-56.89c0-7,3.94-10.93,10.94-10.93h2.63c7,0,10.94,3.93,10.94,10.93v54.92c0,27.35,10.5,40.26,33.69,40.26s33.26-15.53,33.26-43.1v-52.07c0-7,3.94-10.93,10.94-10.93h2.62Z'/%3e%3cpath%20class='cls-2'%20d='M967.71,570.31c0-27.35-15.75-44.19-39.16-44.19s-38.72,16.63-38.72,44.19,15.75,44.41,39.16,44.41,38.72-16.85,38.72-44.41m-102.39,0c0-43.1,26.25-64.98,57.32-64.98,19.69,0,37.41,9.63,44.41,26.91v-54.26c0-7,3.94-10.94,10.94-10.94h2.62c7,0,10.94,3.94,10.94,10.94v143.74c0,7-3.94,10.94-10.94,10.94h-2.62c-7,0-10.94-3.94-10.94-10.94v-12.69c-7,16.85-24.72,26.69-44.19,26.69-31.07,0-57.54-22.09-57.54-65.41'/%3e%3cpath%20class='cls-2'%20d='M1023.66,623.38v-103.27c0-7,3.87-10.94,10.74-10.94h2.79c6.87,0,10.74,3.94,10.74,10.94v103.27c0,7-3.87,10.94-10.74,10.94h-2.79c-6.87,0-10.74-3.94-10.74-10.94m-2.07-144.18c0-8.31,6.13-13.13,14.44-13.13,7.66,0,14.44,4.81,14.44,13.13s-6.78,13.13-14.44,13.13c-8.31,0-14.44-4.81-14.44-13.13'/%3e%3cpath%20class='cls-2'%20d='M1177.29,570.31c0-27.35-15.75-44.19-38.94-44.19s-38.72,16.63-38.72,44.19,15.53,44.41,38.94,44.41,38.72-16.85,38.72-44.41m-102.17,0c0-45.07,31.29-64.98,63.23-64.98s63.45,19.91,63.45,64.98-31.29,65.41-63.23,65.41-63.45-19.91-63.45-65.41'/%3e%3cpath%20class='cls-3'%20d='M1366.99,177.21c7.75,6.65,16.32,15.32,24.3,26.23,19.82,27.08,29.56,59.09,28.94,95.13-.29,16.74-3.42,30.61-9.31,41.23-.55,1-1.14,1.99-1.74,2.94-1.17,1.86-2.46,3.67-3.82,5.37-3.28,4.11-7.15,7.78-11.48,10.91-.85,.61-1.73,1.21-2.61,1.79-1.77,1.14-3.63,2.22-5.54,3.2-2.85,1.46-5.89,2.76-9.03,3.84-2.08,.72-4.25,1.36-6.44,1.91-6.58,1.65-13.54,2.48-20.67,2.48-19.29,0-36.82-6.22-49.35-17.5-14.34-12.91-21.61-31.67-21.61-55.75,0-30.01,11.74-53.91,31.41-63.94,15.09-7.69,29.61-15.71,41.22-29.17,7.24-8.39,12.46-17.89,15.72-28.67m-14.08-37.87c-3.24,0-6.11,2.04-6.11,5.55h0c.97,42.1-22.01,55.46-47.74,68.58-26.46,13.49-44.63,43.79-44.63,85.51,0,66.7,47.26,97.47,95.17,97.47,8.98,0,17.93-1.05,26.54-3.2,2.87-.72,5.7-1.56,8.49-2.52,4.18-1.45,8.24-3.17,12.16-5.18,2.61-1.34,5.16-2.81,7.63-4.41,1.24-.8,2.45-1.63,3.65-2.49,5.98-4.32,11.44-9.45,16.21-15.43,1.91-2.39,3.71-4.92,5.39-7.58,.84-1.33,1.65-2.7,2.42-4.1,7.76-14,11.99-31.44,12.35-52.56,1.63-95.85-61.94-144.16-87.99-158.76-.99-.56-2.19-.88-3.54-.88h0Z'/%3e%3cpath%20class='cls-1'%20d='M1234.82,24.21c19.29,0,36.82,6.22,49.35,17.5,14.34,12.91,21.61,31.67,21.61,55.75,0,30.01-11.74,53.91-31.41,63.94-15.09,7.69-29.61,15.71-41.22,29.17-7.24,8.39-12.46,17.89-15.72,28.67-7.75-6.65-16.32-15.32-24.3-26.23-19.82-27.08-29.56-59.09-28.94-95.13,.29-16.74,3.42-30.61,9.31-41.23,.55-1,1.14-1.98,1.74-2.93,1.17-1.86,2.46-3.67,3.82-5.37,3.28-4.11,7.15-7.78,11.48-10.91,.85-.61,1.73-1.21,2.61-1.79,1.77-1.14,3.63-2.22,5.54-3.2,2.85-1.46,5.89-2.76,9.03-3.84,2.08-.72,4.25-1.36,6.44-1.91,6.58-1.65,13.54-2.48,20.67-2.48m0-24.21c-8.98,0-17.93,1.05-26.54,3.2-2.87,.72-5.7,1.56-8.49,2.52-4.18,1.45-8.24,3.17-12.16,5.18-2.61,1.34-5.16,2.81-7.63,4.41-1.24,.8-2.45,1.63-3.65,2.49-5.98,4.32-11.44,9.45-16.21,15.43-1.91,2.39-3.71,4.92-5.39,7.58-.84,1.33-1.65,2.7-2.42,4.1-7.76,14-11.99,31.44-12.35,52.56-1.63,95.85,61.94,144.16,87.99,158.76,.99,.56,2.19,.88,3.54,.88,3.24,0,6.11-2.04,6.11-5.55h0c-.97-42.1,22.01-55.46,47.74-68.58,26.46-13.49,44.63-43.79,44.63-85.51,0-66.7-47.26-97.47-95.17-97.47h0Z'/%3e%3c/svg%3e";
7
+ const SettingsPage = () => {
8
+ const [licenseValue, setLicenseValue] = useState("");
9
+ const [isLoading, setIsLoading] = useState(true);
10
+ const [tokenValue, setTokenValue] = useState("");
11
+ const [isLoadingToken, setIsLoadingToken] = useState(false);
12
+ const [showAlert, setShowAlert] = useState(false);
13
+ const [alertType, setAlertType] = useState("success");
14
+ const [alertMessage, setAlertMessage] = useState("");
15
+ const { get, post } = getFetchClient();
16
+ useEffect(() => {
17
+ const getLicense = async () => {
18
+ setIsLoading(true);
19
+ const response = await get("/translationstudio/getLicense");
20
+ if (response.data.license) {
21
+ setLicenseValue(response.data.license);
22
+ } else {
23
+ setLicenseValue("");
24
+ }
25
+ setIsLoading(false);
26
+ };
27
+ getLicense();
28
+ }, []);
29
+ useEffect(() => {
30
+ const fetchToken = async () => {
31
+ setIsLoadingToken(true);
32
+ const response = await get("/translationstudio/getToken");
33
+ if (response.data.token) {
34
+ setTokenValue(response.data.token);
35
+ } else {
36
+ setTokenValue("");
37
+ }
38
+ setIsLoadingToken(false);
39
+ };
40
+ fetchToken();
41
+ }, []);
42
+ const handleLicenseChange = (e) => {
43
+ setLicenseValue(e.target.value);
44
+ };
45
+ const handleSaveLicense = async () => {
46
+ const response = await post("/translationstudio/setLicense", { license: licenseValue });
47
+ if (response) {
48
+ displayAlert("success");
49
+ } else {
50
+ displayAlert("danger");
51
+ }
52
+ };
53
+ const displayAlert = (variant) => {
54
+ let message = variant === "success" ? "License saved" : "Error saving license";
55
+ setAlertType(variant);
56
+ setAlertMessage(message);
57
+ setShowAlert(true);
58
+ setTimeout(() => {
59
+ setShowAlert(false);
60
+ }, 5e3);
61
+ };
62
+ const handleGenerateToken = async () => {
63
+ setIsLoadingToken(true);
64
+ const response = await post("/translationstudio/generateToken");
65
+ if (response.data?.token) {
66
+ setTokenValue(response.data.token);
67
+ setIsLoadingToken(false);
68
+ }
69
+ };
70
+ return /* @__PURE__ */ jsxs(Main, { children: [
71
+ showAlert && /* @__PURE__ */ jsx(
72
+ Box,
73
+ {
74
+ style: {
75
+ position: "fixed",
76
+ top: "10%",
77
+ left: "50%",
78
+ transform: "translate(-50%, -50%)",
79
+ zIndex: 10,
80
+ minWidth: "400px",
81
+ maxWidth: "90%"
82
+ },
83
+ children: /* @__PURE__ */ jsx(Alert, { closeLabel: "Close", variant: alertType, onClose: () => setShowAlert(false), children: alertMessage })
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx(
87
+ Box,
88
+ {
89
+ padding: 10,
90
+ paddingBottom: 0,
91
+ style: {
92
+ height: "90vh",
93
+ marginTop: "5vh",
94
+ backgroundColor: "white",
95
+ color: "grey"
96
+ },
97
+ children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 6, children: [
98
+ /* @__PURE__ */ jsx(
99
+ "img",
100
+ {
101
+ src: TSlogoFarbig,
102
+ alt: "Translation Studio Logo",
103
+ style: {
104
+ maxWidth: "300px",
105
+ height: "auto"
106
+ }
107
+ }
108
+ ),
109
+ /* @__PURE__ */ jsx(Typography, { variant: "beta", style: { textAlign: "left" }, children: "translationstudio License" }),
110
+ /* @__PURE__ */ jsxs(Typography, { variant: "charlie", children: [
111
+ "You can create or revoke a license at",
112
+ " ",
113
+ /* @__PURE__ */ jsx(
114
+ "a",
115
+ {
116
+ href: "https://account.translationstudio.tech/",
117
+ target: "_blank",
118
+ rel: "noopener noreferrer",
119
+ style: { textDecoration: "none", color: "#e94642", textAlign: "left" },
120
+ children: "account.translationstudio.tech"
121
+ }
122
+ ),
123
+ " "
124
+ ] }),
125
+ /* @__PURE__ */ jsx(Flex, { gap: 2, children: /* @__PURE__ */ jsx(
126
+ Textarea,
127
+ {
128
+ name: "jwt-token",
129
+ label: "JWT Token",
130
+ placeholder: "Paste your Strapi translationstudio license into this field and click save to apply it to this project",
131
+ "aria-label": "Strapi license Input",
132
+ value: licenseValue,
133
+ onChange: handleLicenseChange,
134
+ disabled: isLoading,
135
+ style: {
136
+ color: "grey",
137
+ width: "25vw",
138
+ textAlign: "left",
139
+ backgroundColor: "#f6f6f6",
140
+ cursor: "text"
141
+ }
142
+ }
143
+ ) }),
144
+ /* @__PURE__ */ jsx(Box, { style: { minHeight: "40px" }, children: !isLoading && /* @__PURE__ */ jsx(Flex, { gap: 2, children: /* @__PURE__ */ jsx(
145
+ Button,
146
+ {
147
+ onClick: handleSaveLicense,
148
+ style: { backgroundColor: "#e94642", border: "none" },
149
+ startIcon: /* @__PURE__ */ jsx(
150
+ "svg",
151
+ {
152
+ width: "20",
153
+ height: "20",
154
+ viewBox: "0 0 24 24",
155
+ fill: "none",
156
+ xmlns: "http://www.w3.org/2000/svg",
157
+ children: /* @__PURE__ */ jsx(
158
+ "path",
159
+ {
160
+ d: "M21,20V8.414a1,1,0,0,0-.293-.707L16.293,3.293A1,1,0,0,0,15.586,3H4A1,1,0,0,0,3,4V20a1,1,0,0,0,1,1H20A1,1,0,0,0,21,20ZM9,8h6V6h1v3H8V6H9ZM8,18V14h8v4Z",
161
+ fill: "currentColor"
162
+ }
163
+ )
164
+ }
165
+ ),
166
+ children: "Save license"
167
+ }
168
+ ) }) }),
169
+ /* @__PURE__ */ jsx(Typography, { variant: "beta", children: "Authorize incoming translationstudio connection against this access key" }),
170
+ /* @__PURE__ */ jsx(Flex, { gap: 2, children: /* @__PURE__ */ jsx(
171
+ Textarea,
172
+ {
173
+ name: "access-token",
174
+ label: "Access Key",
175
+ placeholder: "Generate an access key to validate incoming requests",
176
+ "aria-label": "Access Key Input",
177
+ value: tokenValue,
178
+ onChange: () => {
179
+ },
180
+ disabled: true,
181
+ style: {
182
+ color: "grey",
183
+ width: "25vw",
184
+ textAlign: "left",
185
+ backgroundColor: "#f6f6f6",
186
+ cursor: "default"
187
+ }
188
+ }
189
+ ) }),
190
+ /* @__PURE__ */ jsx(Box, { style: { minHeight: "40px" }, children: /* @__PURE__ */ jsx(
191
+ Button,
192
+ {
193
+ onClick: handleGenerateToken,
194
+ style: { backgroundColor: "#e94642", border: "none" },
195
+ disabled: isLoadingToken,
196
+ loading: isLoadingToken,
197
+ startIcon: /* @__PURE__ */ jsx(
198
+ "svg",
199
+ {
200
+ width: "20",
201
+ height: "20",
202
+ viewBox: "0 0 24 24",
203
+ fill: "none",
204
+ xmlns: "http://www.w3.org/2000/svg",
205
+ children: /* @__PURE__ */ jsx(
206
+ "path",
207
+ {
208
+ d: "M19,11H13V5a1,1,0,0,0-2,0v6H5a1,1,0,0,0,0,2h6v6a1,1,0,0,0,2,0V13h6a1,1,0,0,0,0-2Z",
209
+ fill: "currentColor"
210
+ }
211
+ )
212
+ }
213
+ ),
214
+ children: isLoadingToken ? "Generating..." : "Generate Access Key"
215
+ }
216
+ ) }),
217
+ /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Typography, { variant: "delta", children: [
218
+ "If you do not have a",
219
+ " ",
220
+ /* @__PURE__ */ jsx(
221
+ "a",
222
+ {
223
+ href: "https://www.translationstudio.tech/",
224
+ target: "_blank",
225
+ rel: "noopener noreferrer",
226
+ style: { textDecoration: "none", color: "#e94642" },
227
+ children: "translationstudio"
228
+ }
229
+ ),
230
+ " ",
231
+ "account, please create one at",
232
+ " ",
233
+ /* @__PURE__ */ jsx(
234
+ "a",
235
+ {
236
+ href: "https://account.translationstudio.tech/",
237
+ target: "_blank",
238
+ rel: "noopener noreferrer",
239
+ style: { textDecoration: "none", color: "#e94642" },
240
+ children: "account.translationstudio.tech"
241
+ }
242
+ ),
243
+ "."
244
+ ] }) })
245
+ ] })
246
+ }
247
+ )
248
+ ] });
249
+ };
250
+ const App = () => {
251
+ return /* @__PURE__ */ jsxs(Routes, { children: [
252
+ /* @__PURE__ */ jsx(Route, { index: true, element: /* @__PURE__ */ jsx(SettingsPage, {}) }),
253
+ /* @__PURE__ */ jsx(Route, { path: "*", element: /* @__PURE__ */ jsx(Page.Error, {}) })
254
+ ] });
255
+ };
256
+ export {
257
+ App
258
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const en = {};
4
+ exports.default = en;
@@ -0,0 +1,4 @@
1
+ const en = {};
2
+ export {
3
+ en as default
4
+ };
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+ const react = require("react");
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const designSystem = require("@strapi/design-system");
5
+ const admin = require("@strapi/strapi/admin");
6
+ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
7
+ const v = glob[path];
8
+ if (v) {
9
+ return typeof v === "function" ? v() : Promise.resolve(v);
10
+ }
11
+ return new Promise((_, reject) => {
12
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
13
+ reject.bind(
14
+ null,
15
+ new Error(
16
+ "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
17
+ )
18
+ )
19
+ );
20
+ });
21
+ };
22
+ const PLUGIN_ID = "translationstudio";
23
+ const getTranslation = (id) => `${PLUGIN_ID}.${id}`;
24
+ const Initializer = ({ setPlugin }) => {
25
+ const ref = react.useRef(setPlugin);
26
+ react.useEffect(() => {
27
+ ref.current(PLUGIN_ID);
28
+ }, []);
29
+ return null;
30
+ };
31
+ const logoSvg$1 = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='Ebene_1'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20447.49%20582.57'%3e%3cdefs%3e%3cstyle%3e.cls-1{fill:%23e94642;}.cls-2{fill:%23a51d78;}%3c/style%3e%3c/defs%3e%3cpath%20class='cls-2'%20d='M333.63,260.39c11.39,9.77,23.98,22.51,35.71,38.54,29.12,39.79,43.43,86.82,42.53,139.8-.42,24.59-5.02,44.98-13.68,60.58-.81,1.47-1.67,2.92-2.55,4.31-1.72,2.74-3.61,5.39-5.61,7.89-4.83,6.04-10.5,11.44-16.87,16.04-1.25,.9-2.54,1.78-3.84,2.63-2.59,1.68-5.33,3.26-8.14,4.7-4.19,2.15-8.65,4.05-13.26,5.65-3.06,1.06-6.24,2.01-9.46,2.81-9.67,2.42-19.9,3.64-30.38,3.64-28.34,0-54.1-9.14-72.52-25.72-21.07-18.97-31.75-46.53-31.75-81.93,0-44.1,17.26-79.22,46.16-93.95,22.18-11.3,43.5-23.09,60.57-42.86,10.64-12.33,18.32-26.29,23.09-42.13m-20.69-55.64c-4.76,0-8.97,2.99-8.97,8.16h0c1.43,61.87-32.34,81.5-70.16,100.77-38.88,19.82-65.58,64.35-65.58,125.65,0,98.01,69.45,143.23,139.85,143.23,13.2,0,26.35-1.54,39.01-4.7,4.22-1.05,8.38-2.29,12.47-3.7,6.14-2.13,12.11-4.66,17.87-7.62,3.84-1.97,7.58-4.13,11.21-6.48,1.82-1.17,3.6-2.4,5.36-3.66,8.78-6.35,16.81-13.89,23.83-22.67,2.81-3.51,5.45-7.22,7.91-11.13,1.23-1.96,2.42-3.96,3.56-6.02,11.41-20.57,17.61-46.2,18.14-77.24,2.4-140.84-91.02-211.84-129.3-233.29-1.46-.82-3.22-1.29-5.2-1.29h0Z'/%3e%3cpath%20class='cls-1'%20d='M139.41,35.58c28.34,0,54.1,9.14,72.52,25.72,21.07,18.97,31.75,46.53,31.75,81.93,0,44.1-17.26,79.22-46.16,93.95-22.18,11.3-43.5,23.09-60.57,42.86-10.64,12.33-18.32,26.29-23.09,42.13-11.39-9.77-23.98-22.51-35.71-38.54-29.12-39.79-43.43-86.82-42.53-139.8,.42-24.59,5.02-44.98,13.68-60.58,.81-1.46,1.67-2.91,2.55-4.31,1.72-2.74,3.61-5.4,5.61-7.89,4.83-6.04,10.5-11.44,16.87-16.04,1.25-.9,2.54-1.78,3.84-2.63,2.59-1.68,5.33-3.26,8.14-4.7,4.19-2.15,8.65-4.05,13.26-5.65,3.06-1.06,6.25-2.01,9.46-2.81,9.67-2.42,19.9-3.64,30.38-3.64m0-35.58c-13.2,0-26.35,1.54-39.01,4.7-4.22,1.05-8.38,2.29-12.47,3.7-6.14,2.13-12.11,4.66-17.87,7.62-3.84,1.97-7.58,4.13-11.21,6.48-1.82,1.17-3.6,2.4-5.36,3.66-8.78,6.35-16.81,13.89-23.83,22.67-2.81,3.51-5.45,7.22-7.91,11.13-1.23,1.96-2.42,3.96-3.56,6.02C6.78,86.56,.57,112.19,.05,143.23c-2.4,140.84,91.02,211.84,129.3,233.29,1.46,.82,3.22,1.29,5.2,1.29,4.76,0,8.97-2.99,8.97-8.16h0c-1.43-61.87,32.34-81.5,70.16-100.77,38.88-19.82,65.58-64.35,65.58-125.65C279.27,45.22,209.82,0,139.41,0h0Z'/%3e%3c/svg%3e";
32
+ const PluginIcon = () => /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoSvg$1, alt: "Translation Studio Logo", width: 20, height: 20 });
33
+ const logoSvg = "data:image/svg+xml,%3csvg%20width='1444.47'%20height='635.72'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3ctitle%3eLayer%201%3c/title%3e%3cpath%20id='svg_1'%20fill='%23ffffff'%20d='m1151.68,294.37c34.28,0%2050.11,19.74%2050.11,59.01l0,56.4c0,6.94%20-3.91,10.85%20-10.85,10.85l-2.6,0c-6.94,0%20-10.84,-3.9%20-10.84,-10.85l0,-54.45c0,-27.12%20-10.41,-39.91%20-33.41,-39.91s-32.97,15.4%20-32.97,42.74l0,51.63c0,6.94%20-3.91,10.85%20-10.85,10.85l-2.6,0c-6.94,0%20-10.85,-3.9%20-10.85,-10.85l0,-102.39c0,-6.94%203.91,-10.85%2010.85,-10.85l2.6,0c6.94,0%2010.85,3.91%2010.85,10.85l0,12.34c5.64,-14.39%2019.73,-25.36%2040.56,-25.36l0,0l0,-0.01z'%20class='cls-2'/%3e%3cpath%20id='svg_2'%20fill='%23ffffff'%20d='m0,313.78l0,55.76c0,37.96%2014.53,51.2%2046.42,51.2l0,0c1.96,0%204.12,-0.03%206.29,-0.22c6.9,-0.65%209.8,-4.45%209.11,-11.07c-0.61,-5.88%20-4.99,-8.24%20-11.71,-8.24c-18.88,0%20-25.6,-8.9%20-25.6,-34.49l0,-52.94l25.81,0c6.94,0%2010.85,-3.47%2010.85,-9.54s-3.9,-9.33%20-10.85,-9.33l-25.81,0l0,-15.83c0,-7.59%20-4.34,-11.28%20-11.93,-9.55l-3.04,0.65c-6.29,1.3%20-9.54,5.21%20-9.54,11.71l0,31.89z'%20class='cls-2'/%3e%3cpath%20id='svg_3'%20fill='%23ffffff'%20d='m139.49,295.02c7.38,0%2011.06,4.77%2010.2,11.71l-0.22,1.74c-0.65,6.94%20-4.77,9.54%20-11.93,9.54c-20.39,0.43%20-30.16,15.19%20-30.16,41.22l0,50.55c0,6.94%20-3.9,10.85%20-10.85,10.85l-2.6,0c-6.94,0%20-10.85,-3.9%20-10.85,-10.85l0,-102.39c0,-6.94%203.9,-10.85%2010.85,-10.85l2.6,0c6.94,0%2010.85,3.69%2010.85,10.41l0,10.41c3.91,-11.07%2013.89,-22.34%2032.1,-22.34l0,0l0.01,0z'%20class='cls-2'/%3e%3cpath%20id='svg_4'%20fill='%23ffffff'%20d='m259.67,358.59c0,-27.12%20-15.84,-43.82%20-38.83,-43.82s-38.4,16.49%20-38.4,43.82s15.62,44.04%2038.83,44.04s38.4,-16.7%2038.4,-44.04m-101.53,0c0,-42.74%2026.03,-64.43%2056.84,-64.43c19.52,0%2036.88,9.54%2044.04,26.69l0,-13.45c0,-6.94%203.9,-10.85%2010.85,-10.85l2.6,0c6.94,0%2010.85,3.9%2010.85,10.85l0,102.18c0,6.94%20-3.9,10.85%20-10.85,10.85l-2.6,0c-6.94,0%20-10.85,-3.9%20-10.85,-10.85l0,-12.58c-6.94,16.7%20-24.51,26.47%20-43.82,26.47c-30.81,0%20-57.06,-21.91%20-57.06,-64.87'%20class='cls-2'/%3e%3cpath%20id='svg_5'%20fill='%23ffffff'%20d='m380.06,294.37c34.28,0%2050.11,19.74%2050.11,59.01l0,56.4c0,6.94%20-3.91,10.85%20-10.85,10.85l-2.6,0c-6.94,0%20-10.85,-3.9%20-10.85,-10.85l0,-54.45c0,-27.12%20-10.41,-39.91%20-33.41,-39.91s-32.98,15.4%20-32.98,42.74l0,51.63c0,6.94%20-3.9,10.85%20-10.85,10.85l-2.6,0c-6.94,0%20-10.85,-3.9%20-10.85,-10.85l0,-102.39c0,-6.94%203.91,-10.85%2010.85,-10.85l2.6,0c6.94,0%2010.85,3.91%2010.85,10.85l0,12.34c5.64,-14.39%2019.73,-25.36%2040.57,-25.36l0,0l0.01,-0.01z'%20class='cls-2'/%3e%3cpath%20id='svg_6'%20fill='%23ffffff'%20d='m508.94,422.81c-20.8,0%20-42.78,-8.33%20-53.19,-21.48c-4.44,-5.61%20-2.26,-11.49%204.99,-13.67l2.17,-0.65c4.75,-1.43%208.02,-1.28%2014.32,4.36c8.65,7.74%2020.41,10.61%2031.71,10.61c18.05,0%2028.81,-6.44%2028.81,-17.36c0,-28.63%20-80.45,-5.9%20-80.45,-54.24c0,-22.87%2023.1,-36.01%2049.75,-36.01c16.09,0%2036.22,6.5%2047,17.79c5.1,5.33%203.34,11.34%20-3.68,13.45l-2.17,0.65c-5.86,1.76%20-8.85,-0.39%20-14.53,-3.84c-8.11,-4.92%20-16.87,-8.09%20-26.22,-8.09c-15.64,0%20-26.27,5.18%20-26.27,14.91c0,27.74%2081.1,4.51%2081.1,54.72c0,23.06%20-22.28,38.83%20-53.32,38.83l0,0l-0.02,0.02z'%20class='cls-2'/%3e%3cpath%20id='svg_7'%20fill='%23ffffff'%20d='m585.05,409.79l0,-142.75c0,-6.94%203.9,-10.85%2010.85,-10.85l2.82,0c6.94,0%2010.85,3.9%2010.85,10.85l0,142.75c0,6.94%20-3.91,10.85%20-10.85,10.85l-2.82,0c-6.94,0%20-10.85,-3.91%20-10.85,-10.85'%20class='cls-2'/%3e%3cpath%20id='svg_8'%20fill='%23ffffff'%20d='m737.56,358.59c0,-27.12%20-15.84,-43.82%20-38.84,-43.82s-38.4,16.49%20-38.4,43.82s15.62,44.04%2038.83,44.04s38.4,-16.7%2038.4,-44.04m-101.53,0c0,-42.74%2026.03,-64.43%2056.84,-64.43c19.52,0%2036.88,9.54%2044.04,26.69l0,-13.45c0,-6.94%203.9,-10.85%2010.85,-10.85l2.6,0c6.94,0%2010.85,3.9%2010.85,10.85l0,102.18c0,6.94%20-3.9,10.85%20-10.85,10.85l-2.6,0c-6.94,0%20-10.85,-3.9%20-10.85,-10.85l0,-12.58c-6.94,16.7%20-24.51,26.47%20-43.82,26.47c-30.81,0%20-57.06,-21.91%20-57.06,-64.87'%20class='cls-2'/%3e%3cpath%20id='svg_9'%20fill='%23ffffff'%20d='m800.25,315.42l0,55.76c0,37.96%2014.53,51.2%2046.42,51.2l0,0c1.95,0%204.12,-0.03%206.29,-0.22c6.89,-0.65%209.8,-4.45%209.11,-11.07c-0.61,-5.88%20-4.99,-8.24%20-11.71,-8.24c-18.87,0%20-25.6,-8.9%20-25.6,-34.49l0,-52.94l25.81,0c6.94,0%2010.85,-3.47%2010.85,-9.55s-3.91,-9.33%20-10.85,-9.33l-25.81,0l0,-15.83c0,-7.59%20-4.34,-11.28%20-11.93,-9.54l-3.04,0.65c-6.29,1.3%20-9.55,5.21%20-9.55,11.71l0,31.89l0.01,0z'%20class='cls-2'/%3e%3cpath%20id='svg_10'%20fill='%23ffffff'%20d='m883.72,409.79l0,-102.4c0,-6.94%203.83,-10.85%2010.65,-10.85l2.77,0c6.82,0%2010.65,3.9%2010.65,10.85l0,102.4c0,6.94%20-3.83,10.85%20-10.65,10.85l-2.77,0c-6.81,0%20-10.65,-3.91%20-10.65,-10.85m-2.05,-142.96c0,-8.24%206.08,-13.02%2014.32,-13.02c7.59,0%2014.32,4.77%2014.32,13.02s-6.72,13.02%20-14.32,13.02c-8.24,0%20-14.32,-4.77%20-14.32,-13.02'%20class='cls-2'/%3e%3cpath%20id='svg_11'%20fill='%23ffffff'%20d='m1036.06,358.59c0,-27.12%20-15.62,-43.82%20-38.62,-43.82s-38.4,16.49%20-38.4,43.82s15.4,44.04%2038.61,44.04s38.4,-16.7%2038.4,-44.04m-101.31,0c0,-44.69%2031.02,-64.43%2062.69,-64.43s62.91,19.74%2062.91,64.43s-31.02,64.87%20-62.7,64.87s-62.91,-19.74%20-62.91,-64.87'%20class='cls-2'/%3e%3cpath%20id='svg_12'%20fill='%23ffffff'%20d='m555.77,635.72c-20.98,0%20-43.14,-8.4%20-53.65,-21.66c-4.48,-5.66%20-2.27,-11.59%205.03,-13.78l2.19,-0.66c4.79,-1.44%208.09,-1.29%2014.43,4.4c8.73,7.81%2020.59,10.69%2031.98,10.69c18.2,0%2029.05,-6.49%2029.05,-17.5c0,-28.88%20-81.14,-5.95%20-81.14,-54.7c0,-23.07%2023.3,-36.31%2050.17,-36.31c16.23,0%2036.53,6.55%2047.41,17.94c5.14,5.38%203.37,11.43%20-3.72,13.56l-2.19,0.66c-5.91,1.77%20-8.92,-0.39%20-14.66,-3.87c-8.18,-4.96%20-17.02,-8.16%20-26.45,-8.16c-15.78,0%20-26.5,5.22%20-26.5,15.04c0,27.98%2081.79,4.55%2081.79,55.18c0,23.26%20-22.47,39.16%20-53.78,39.16l0,0l0.04,0.01z'%20class='cls-2'/%3e%3cpath%20id='svg_13'%20fill='%23ffffff'%20d='m639.98,526.42l0,56.23c0,38.29%2014.66,51.63%2046.82,51.63l0,0c1.97,0%204.16,-0.03%206.34,-0.22c6.96,-0.66%209.89,-4.49%209.19,-11.16c-0.61,-5.93%20-5.03,-8.31%20-11.81,-8.31c-19.03,0%20-25.82,-8.97%20-25.82,-34.79l0,-53.38l26.03,0c7,0%2010.94,-3.5%2010.94,-9.63s-3.94,-9.41%20-10.94,-9.41l-26.03,0l0,-15.97c0,-7.66%20-4.38,-11.38%20-12.03,-9.63l-3.06,0.66c-6.34,1.31%20-9.63,5.25%20-9.63,11.81l0,32.16l0,0.01z'%20class='cls-2'/%3e%3cpath%20id='svg_14'%20fill='%23ffffff'%20d='m826.59,508.39c7,0%2010.94,3.94%2010.94,10.94l0,103.27c0,7%20-3.94,10.94%20-10.94,10.94l-2.62,0c-7,0%20-10.94,-3.94%20-10.94,-10.94l0,-12.45c-5.69,14.51%20-19.9,25.57%20-40.91,25.57c-34.57,0%20-50.54,-19.91%20-50.54,-59.51l0,-56.89c0,-7%203.94,-10.93%2010.94,-10.93l2.63,0c7,0%2010.94,3.93%2010.94,10.93l0,54.92c0,27.35%2010.5,40.26%2033.69,40.26s33.26,-15.53%2033.26,-43.1l0,-52.07c0,-7%203.94,-10.93%2010.94,-10.93l2.62,0l-0.01,-0.01z'%20class='cls-2'/%3e%3cpath%20id='svg_15'%20fill='%23ffffff'%20d='m967.71,570.31c0,-27.35%20-15.75,-44.19%20-39.16,-44.19s-38.72,16.63%20-38.72,44.19s15.75,44.41%2039.16,44.41s38.72,-16.85%2038.72,-44.41m-102.39,0c0,-43.1%2026.25,-64.98%2057.32,-64.98c19.69,0%2037.41,9.63%2044.41,26.91l0,-54.26c0,-7%203.94,-10.94%2010.94,-10.94l2.62,0c7,0%2010.94,3.94%2010.94,10.94l0,143.74c0,7%20-3.94,10.94%20-10.94,10.94l-2.62,0c-7,0%20-10.94,-3.94%20-10.94,-10.94l0,-12.69c-7,16.85%20-24.72,26.69%20-44.19,26.69c-31.07,0%20-57.54,-22.09%20-57.54,-65.41'%20class='cls-2'/%3e%3cpath%20id='svg_16'%20fill='%23ffffff'%20d='m1023.66,624.38l0,-103.27c0,-7%203.87,-10.94%2010.74,-10.94l2.79,0c6.87,0%2010.74,3.94%2010.74,10.94l0,103.27c0,7%20-3.87,10.94%20-10.74,10.94l-2.79,0c-6.87,0%20-10.74,-3.94%20-10.74,-10.94m-2.07,-144.18c0,-8.31%206.13,-13.13%2014.44,-13.13c7.66,0%2014.44,4.81%2014.44,13.13s-6.78,13.13%20-14.44,13.13c-8.31,0%20-14.44,-4.81%20-14.44,-13.13'%20class='cls-2'/%3e%3cpath%20id='svg_17'%20fill='%23ffffff'%20d='m1177.29,570.31c0,-27.35%20-15.75,-44.19%20-38.94,-44.19s-38.72,16.63%20-38.72,44.19s15.53,44.41%2038.94,44.41s38.72,-16.85%2038.72,-44.41m-102.17,0c0,-45.07%2031.29,-64.98%2063.23,-64.98s63.45,19.91%2063.45,64.98s-31.29,65.41%20-63.23,65.41s-63.45,-19.91%20-63.45,-65.41'%20class='cls-2'/%3e%3cpath%20id='svg_18'%20fill='%23a51d78'%20d='m1366.99,177.21c7.75,6.65%2016.32,15.32%2024.3,26.23c19.82,27.08%2029.56,59.09%2028.94,95.13c-0.29,16.74%20-3.42,30.61%20-9.31,41.23c-0.55,1%20-1.14,1.99%20-1.74,2.94c-1.17,1.86%20-2.46,3.67%20-3.82,5.37c-3.28,4.11%20-7.15,7.78%20-11.48,10.91c-0.85,0.61%20-1.73,1.21%20-2.61,1.79c-1.77,1.14%20-3.63,2.22%20-5.54,3.2c-2.85,1.46%20-5.89,2.76%20-9.03,3.84c-2.08,0.72%20-4.25,1.36%20-6.44,1.91c-6.58,1.65%20-13.54,2.48%20-20.67,2.48c-19.29,0%20-36.82,-6.22%20-49.35,-17.5c-14.34,-12.91%20-21.61,-31.67%20-21.61,-55.75c0,-30.01%2011.74,-53.91%2031.41,-63.94c15.09,-7.69%2029.61,-15.71%2041.22,-29.17c7.24,-8.39%2012.46,-17.89%2015.72,-28.67m-14.08,-37.87c-3.24,0%20-6.11,2.04%20-6.11,5.55l0,0c0.97,42.1%20-22.01,55.46%20-47.74,68.58c-26.46,13.49%20-44.63,43.79%20-44.63,85.51c0,66.7%2047.26,97.47%2095.17,97.47c8.98,0%2017.93,-1.05%2026.54,-3.2c2.87,-0.72%205.7,-1.56%208.49,-2.52c4.18,-1.45%208.24,-3.17%2012.16,-5.18c2.61,-1.34%205.16,-2.81%207.63,-4.41c1.24,-0.8%202.45,-1.63%203.65,-2.49c5.98,-4.32%2011.44,-9.45%2016.21,-15.43c1.91,-2.39%203.71,-4.92%205.39,-7.58c0.84,-1.33%201.65,-2.7%202.42,-4.1c7.76,-14%2011.99,-31.44%2012.35,-52.56c1.63,-95.85%20-61.94,-144.16%20-87.99,-158.76c-0.99,-0.56%20-2.19,-0.88%20-3.54,-0.88l0,0z'%20class='cls-3'/%3e%3cpath%20id='svg_19'%20fill='%23e94642'%20d='m1234.82,24.21c19.29,0%2036.82,6.22%2049.35,17.5c14.34,12.91%2021.61,31.67%2021.61,55.75c0,30.01%20-11.74,53.91%20-31.41,63.94c-15.09,7.69%20-29.61,15.71%20-41.22,29.17c-7.24,8.39%20-12.46,17.89%20-15.72,28.67c-7.75,-6.65%20-16.32,-15.32%20-24.3,-26.23c-19.82,-27.08%20-29.56,-59.09%20-28.94,-95.13c0.29,-16.74%203.42,-30.61%209.31,-41.23c0.55,-1%201.14,-1.98%201.74,-2.93c1.17,-1.86%202.46,-3.67%203.82,-5.37c3.28,-4.11%207.15,-7.78%2011.48,-10.91c0.85,-0.61%201.73,-1.21%202.61,-1.79c1.77,-1.14%203.63,-2.22%205.54,-3.2c2.85,-1.46%205.89,-2.76%209.03,-3.84c2.08,-0.72%204.25,-1.36%206.44,-1.91c6.58,-1.65%2013.54,-2.48%2020.67,-2.48m0,-24.21c-8.98,0%20-17.93,1.05%20-26.54,3.2c-2.87,0.72%20-5.7,1.56%20-8.49,2.52c-4.18,1.45%20-8.24,3.17%20-12.16,5.18c-2.61,1.34%20-5.16,2.81%20-7.63,4.41c-1.24,0.8%20-2.45,1.63%20-3.65,2.49c-5.98,4.32%20-11.44,9.45%20-16.21,15.43c-1.91,2.39%20-3.71,4.92%20-5.39,7.58c-0.84,1.33%20-1.65,2.7%20-2.42,4.1c-7.76,14%20-11.99,31.44%20-12.35,52.56c-1.63,95.85%2061.94,144.16%2087.99,158.76c0.99,0.56%202.19,0.88%203.54,0.88c3.24,0%206.11,-2.04%206.11,-5.55l0,0c-0.97,-42.1%2022.01,-55.46%2047.74,-68.58c26.46,-13.49%2044.63,-43.79%2044.63,-85.51c0,-66.7%20-47.26,-97.47%20-95.17,-97.47l0,0z'%20class='cls-1'/%3e%3c/g%3e%3c/svg%3e";
34
+ const TranslationMenu = () => {
35
+ const [languages, setLanguages] = react.useState([]);
36
+ const [selectedOption, setSelectedOption] = react.useState("");
37
+ const [source, setSource] = react.useState("");
38
+ const [email, setEmail] = react.useState("");
39
+ const [isEmail, setIsEmail] = react.useState(false);
40
+ const [isUrgent, setIsUrgent] = react.useState(false);
41
+ const [dueDate, setDueDate] = react.useState(0);
42
+ const [showAlert, setShowAlert] = react.useState(false);
43
+ const [alertType, setAlertType] = react.useState("success");
44
+ const [alertMessage, setAlertMessage] = react.useState("");
45
+ const { get, post } = admin.getFetchClient();
46
+ const context = admin.unstable_useContentManagerContext();
47
+ const { id, contentType, model } = context || {};
48
+ const isCollectionType = contentType?.kind === "collectionType";
49
+ const selectedLang = Array.isArray(languages) ? languages.find((lang) => lang.name === selectedOption) : void 0;
50
+ const isMachineTranslation = selectedLang?.machine ?? false;
51
+ async function fetchEmail() {
52
+ const response = await get("/translationstudio/email");
53
+ setEmail(response.data.email ?? "");
54
+ }
55
+ react.useEffect(() => {
56
+ fetchEmail();
57
+ }, []);
58
+ react.useEffect(() => {
59
+ if (!model || !id && isCollectionType) return;
60
+ const fetchLanguages = async () => {
61
+ try {
62
+ const response = await get("/translationstudio/mappings");
63
+ setLanguages(response.data);
64
+ } catch (error) {
65
+ console.error("Error fetching languages:", error);
66
+ }
67
+ };
68
+ fetchLanguages();
69
+ }, [id, model, isCollectionType]);
70
+ const handleUrgentChange = () => {
71
+ if (isUrgent) {
72
+ setIsUrgent(false);
73
+ setDueDate(0);
74
+ } else {
75
+ setIsUrgent(true);
76
+ }
77
+ };
78
+ const handleEmailChange = () => {
79
+ email ? setIsEmail(false) : setIsEmail(true);
80
+ fetchEmail();
81
+ };
82
+ const handleDueDateChange = (date) => {
83
+ const timestamp = date.getTime();
84
+ setDueDate(timestamp < Date.now() ? 0 : timestamp);
85
+ setIsUrgent(false);
86
+ };
87
+ const handleRadioSelection = (value) => {
88
+ setSelectedOption(value);
89
+ const lang = languages.find((l) => l.name === value);
90
+ if (lang) {
91
+ setSource(lang.source);
92
+ if (lang.machine) {
93
+ setIsUrgent(false);
94
+ setDueDate(0);
95
+ }
96
+ }
97
+ };
98
+ const displayAlert = (variant, message) => {
99
+ setAlertType(variant);
100
+ setAlertMessage(message);
101
+ setShowAlert(true);
102
+ setTimeout(() => setShowAlert(false), 5e3);
103
+ };
104
+ const determineEntryName = (fetchedEntryData) => {
105
+ if (!fetchedEntryData) return "Untitled";
106
+ const commonTitleFields = ["title", "name", "headline"];
107
+ for (const field of commonTitleFields) {
108
+ const key = Object.keys(fetchedEntryData).find((k) => k.toLowerCase() === field);
109
+ if (key && typeof fetchedEntryData[key] === "string" && fetchedEntryData[key].trim()) {
110
+ return fetchedEntryData[key];
111
+ }
112
+ }
113
+ const excludedFields = [
114
+ "id",
115
+ "createdAt",
116
+ "updatedAt",
117
+ "publishedAt",
118
+ "locale",
119
+ "createdBy",
120
+ "updatedBy",
121
+ "documentId",
122
+ "provider",
123
+ "resetPasswordToken",
124
+ "confirmationToken",
125
+ "password",
126
+ "email",
127
+ "slug",
128
+ "link",
129
+ "url",
130
+ "image",
131
+ "file",
132
+ "media"
133
+ ];
134
+ for (const [key, value] of Object.entries(fetchedEntryData)) {
135
+ if (!excludedFields.includes(key) && typeof value === "string" && value.trim()) {
136
+ return value;
137
+ }
138
+ }
139
+ return `${contentType?.info?.displayName ?? ""} #${id ?? ""}`;
140
+ };
141
+ const handleTranslationRequest = async () => {
142
+ const entryUid = isCollectionType ? `${model}#${id}` : model;
143
+ try {
144
+ const entryResponse = await post("/translationstudio/entrydata", {
145
+ uid: entryUid,
146
+ locale: source
147
+ });
148
+ const fetchedEntryData = entryResponse.data;
149
+ const selectedLang2 = languages.find((lang) => lang["name"] === selectedOption);
150
+ const translationObjects = selectedLang2.targets.map(
151
+ (targetLang) => ({
152
+ // @ts-ignore
153
+ source: selectedLang2.source,
154
+ target: targetLang,
155
+ // @ts-ignore
156
+ connector: selectedLang2.connector
157
+ })
158
+ );
159
+ const payload = {
160
+ duedate: dueDate,
161
+ email: isEmail && !isMachineTranslation ? email : "",
162
+ urgent: isMachineTranslation ? true : isUrgent,
163
+ "project-name": contentType?.info?.displayName ?? "",
164
+ translations: translationObjects,
165
+ entry: {
166
+ uid: entryUid,
167
+ name: determineEntryName(fetchedEntryData)
168
+ }
169
+ };
170
+ const response = await post("/translationstudio/translate", payload);
171
+ displayAlert(
172
+ response.data === true ? "success" : "danger",
173
+ response.data === true ? "Translation request sent successfully" : "Error requesting translation"
174
+ );
175
+ } catch (error) {
176
+ displayAlert("danger", `The entry does not exist in the selected source locale (${source}).`);
177
+ return;
178
+ }
179
+ };
180
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
181
+ showAlert && /* @__PURE__ */ jsxRuntime.jsx(
182
+ designSystem.Box,
183
+ {
184
+ style: {
185
+ position: "fixed",
186
+ top: "10%",
187
+ left: "50%",
188
+ transform: "translate(-50%, -50%)",
189
+ zIndex: 10,
190
+ minWidth: "400px",
191
+ maxWidth: "90%"
192
+ },
193
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Alert, { closeLabel: "Close", variant: alertType, onClose: () => setShowAlert(false), children: alertMessage })
194
+ }
195
+ ),
196
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { padding: 4, style: { width: "100%", color: "white" }, children: [
197
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 4, textAlign: "right", style: { width: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsx(
198
+ "img",
199
+ {
200
+ src: logoSvg,
201
+ alt: "",
202
+ style: {
203
+ maxWidth: "200px",
204
+ height: "auto"
205
+ }
206
+ }
207
+ ) }) }),
208
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 4, children: languages.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
209
+ designSystem.Radio.Group,
210
+ {
211
+ onValueChange: handleRadioSelection,
212
+ name: "languages",
213
+ "aria-label": "translationstudio settings",
214
+ children: [
215
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "beta", tag: "label", id: "Sprachauswahl", children: "translationstudio settings" }),
216
+ languages.map((lang) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Radio.Item, { value: lang.name, children: lang["name"] }, lang.id))
217
+ ]
218
+ }
219
+ ) }),
220
+ !isMachineTranslation && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
221
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 4, paddingTop: 4, style: { color: "white" }, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "beta", tag: "label", paddingBottom: 4, children: "Translation request" }) }),
222
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 4, style: { color: "white" }, children: /* @__PURE__ */ jsxRuntime.jsx(
223
+ designSystem.Checkbox,
224
+ {
225
+ onCheckedChange: handleUrgentChange,
226
+ defaultChecked: isUrgent,
227
+ style: { color: "white" },
228
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { style: { color: "white" }, children: "translate immediately (and ignore quotes)" })
229
+ }
230
+ ) }),
231
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 4, style: { color: "white" }, children: /* @__PURE__ */ jsxRuntime.jsx(
232
+ designSystem.Checkbox,
233
+ {
234
+ onCheckedChange: handleEmailChange,
235
+ defaultChecked: isEmail,
236
+ style: { color: "white" },
237
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { style: { color: "white" }, children: "Send email notifications on translation status updates" })
238
+ }
239
+ ) }),
240
+ !isUrgent ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { paddingBottom: 8, paddingTop: 4, children: [
241
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingBottom: 4, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "beta", children: "Due Date" }) }),
242
+ /* @__PURE__ */ jsxRuntime.jsx(
243
+ designSystem.DatePicker,
244
+ {
245
+ onChange: handleDueDateChange,
246
+ selecteddate: dueDate ? new Date(dueDate) : null
247
+ }
248
+ )
249
+ ] }) : null
250
+ ] }),
251
+ /* @__PURE__ */ jsxRuntime.jsx(
252
+ designSystem.Button,
253
+ {
254
+ fullWidth: true,
255
+ onClick: handleTranslationRequest,
256
+ disabled: !selectedOption,
257
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(
258
+ "svg",
259
+ {
260
+ width: "20",
261
+ height: "20",
262
+ viewBox: "0 0 24 24",
263
+ fill: "none",
264
+ xmlns: "http://www.w3.org/2000/svg",
265
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2,21L23,12L2,3V10L17,12L2,14V21Z", fill: "currentColor" })
266
+ }
267
+ ),
268
+ children: isUrgent || isMachineTranslation ? "Translate" : "Request translation"
269
+ }
270
+ )
271
+ ] })
272
+ ] });
273
+ };
274
+ const index = {
275
+ register(app) {
276
+ app.addMenuLink({
277
+ to: `plugins/${PLUGIN_ID}`,
278
+ icon: PluginIcon,
279
+ intlLabel: {
280
+ id: `${PLUGIN_ID}.plugin.name`,
281
+ defaultMessage: PLUGIN_ID
282
+ },
283
+ Component: async () => {
284
+ const { App } = await Promise.resolve().then(() => require("../_chunks/App-BHydyNKn.js"));
285
+ return App;
286
+ }
287
+ });
288
+ app.getPlugin("content-manager").injectComponent("editView", "right-links", {
289
+ name: "translation-menu",
290
+ Component: TranslationMenu
291
+ });
292
+ app.registerPlugin({
293
+ id: PLUGIN_ID,
294
+ initializer: Initializer,
295
+ isReady: false,
296
+ name: PLUGIN_ID
297
+ });
298
+ },
299
+ async registerTrads(app) {
300
+ const { locales } = app;
301
+ const importedTranslations = await Promise.all(
302
+ locales.map((locale) => {
303
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("../_chunks/en-B4KWt_jN.js")) }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
304
+ return {
305
+ data: getTranslation(data),
306
+ locale
307
+ };
308
+ }).catch(() => {
309
+ return {
310
+ data: {},
311
+ locale
312
+ };
313
+ });
314
+ })
315
+ );
316
+ return importedTranslations;
317
+ }
318
+ };
319
+ module.exports = index;