@interware/content-generator 0.1.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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/_chunks/App-6ntGE8c-.js +702 -0
  4. package/dist/_chunks/App-CUBxywy1.mjs +684 -0
  5. package/dist/_chunks/Settings-CwPVYHgw.js +218 -0
  6. package/dist/_chunks/Settings-DTPXHARn.mjs +200 -0
  7. package/dist/_chunks/en-B4KWt_jN.js +4 -0
  8. package/dist/_chunks/en-Byx4XI2L.mjs +4 -0
  9. package/dist/_chunks/es-Cb6O-nM6.js +4 -0
  10. package/dist/_chunks/es-DlGQb34u.mjs +4 -0
  11. package/dist/_chunks/getTranslation-AfxwBFKN.js +4 -0
  12. package/dist/_chunks/getTranslation-Di36t3DD.mjs +5 -0
  13. package/dist/_chunks/index-CkkBgYlg.mjs +126 -0
  14. package/dist/_chunks/index-Dcpjhvs5.js +125 -0
  15. package/dist/admin/index.js +3 -0
  16. package/dist/admin/index.mjs +4 -0
  17. package/dist/admin/src/components/Initializer.d.ts +5 -0
  18. package/dist/admin/src/components/PluginIcon.d.ts +2 -0
  19. package/dist/admin/src/components/commons/dialog/index.d.ts +12 -0
  20. package/dist/admin/src/components/commons/generate-image-dialog/index.d.ts +5 -0
  21. package/dist/admin/src/components/generate-content/Form.d.ts +15 -0
  22. package/dist/admin/src/components/home/table.d.ts +12 -0
  23. package/dist/admin/src/components/index.d.ts +12 -0
  24. package/dist/admin/src/components/settings/Form.d.ts +8 -0
  25. package/dist/admin/src/containers/generate-content/index.d.ts +2 -0
  26. package/dist/admin/src/containers/home/index.d.ts +2 -0
  27. package/dist/admin/src/containers/settings/index.d.ts +7 -0
  28. package/dist/admin/src/hooks/useDialog.d.ts +11 -0
  29. package/dist/admin/src/index.d.ts +10 -0
  30. package/dist/admin/src/lib/use-cases/articles/index.d.ts +5 -0
  31. package/dist/admin/src/lib/use-cases/categories/index.d.ts +5 -0
  32. package/dist/admin/src/lib/use-cases/generate-content/index.d.ts +6 -0
  33. package/dist/admin/src/lib/use-cases/linkedin/index.d.ts +5 -0
  34. package/dist/admin/src/lib/use-cases/settings/index.d.ts +6 -0
  35. package/dist/admin/src/lib/use-cases/users/index.d.ts +5 -0
  36. package/dist/admin/src/pages/App.d.ts +2 -0
  37. package/dist/admin/src/pages/GenerateContent.d.ts +2 -0
  38. package/dist/admin/src/pages/HomePage.d.ts +2 -0
  39. package/dist/admin/src/pages/Settings.d.ts +2 -0
  40. package/dist/admin/src/permissions.d.ts +7 -0
  41. package/dist/admin/src/pluginId.d.ts +1 -0
  42. package/dist/admin/src/reducers/dialog/index.d.ts +6 -0
  43. package/dist/admin/src/types/reducers.d.ts +4 -0
  44. package/dist/admin/src/utils/getTranslation.d.ts +2 -0
  45. package/dist/server/index.js +3149 -0
  46. package/dist/server/index.mjs +3130 -0
  47. package/dist/server/src/bootstrap.d.ts +5 -0
  48. package/dist/server/src/config/index.d.ts +5 -0
  49. package/dist/server/src/content-types/index.d.ts +2 -0
  50. package/dist/server/src/controllers/config.d.ts +8 -0
  51. package/dist/server/src/controllers/controller.d.ts +15 -0
  52. package/dist/server/src/controllers/index.d.ts +22 -0
  53. package/dist/server/src/destroy.d.ts +5 -0
  54. package/dist/server/src/index.d.ts +148 -0
  55. package/dist/server/src/middlewares/index.d.ts +2 -0
  56. package/dist/server/src/policies/index.d.ts +2 -0
  57. package/dist/server/src/register.d.ts +5 -0
  58. package/dist/server/src/routes/admin.d.ts +10 -0
  59. package/dist/server/src/routes/content-api.d.ts +10 -0
  60. package/dist/server/src/routes/index.d.ts +27 -0
  61. package/dist/server/src/services/index.d.ts +83 -0
  62. package/dist/server/src/services/service.d.ts +86 -0
  63. package/package.json +98 -0
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const admin = require("@strapi/strapi/admin");
5
+ const reactIntl = require("react-intl");
6
+ const react = require("react");
7
+ const designSystem = require("@strapi/design-system");
8
+ const formik = require("formik");
9
+ const Yup = require("yup");
10
+ const index = require("./index-Dcpjhvs5.js");
11
+ const getTranslation = require("./getTranslation-AfxwBFKN.js");
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
15
+ if (e) {
16
+ for (const k in e) {
17
+ if (k !== "default") {
18
+ const d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: () => e[k]
22
+ });
23
+ }
24
+ }
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+ const Yup__namespace = /* @__PURE__ */ _interopNamespace(Yup);
30
+ const useSettings = () => {
31
+ const { get, post } = admin.useFetchClient();
32
+ const getSettings = react.useCallback(
33
+ async (config) => {
34
+ return get("/api/strapi-content-generator-gemini/config", config);
35
+ },
36
+ [get]
37
+ );
38
+ const setSettings = react.useCallback(
39
+ async (data, config) => {
40
+ return post("/api/strapi-content-generator-gemini/config", data, config);
41
+ },
42
+ [post]
43
+ );
44
+ return {
45
+ getSettings,
46
+ setSettings
47
+ };
48
+ };
49
+ const schema = Yup__namespace.object({
50
+ googleGenAI: Yup__namespace.string().required("Este campo es requerido"),
51
+ linkedInAccessToken: Yup__namespace.string().required("Este campo es requerido"),
52
+ linkedInOrganizationId: Yup__namespace.string().required("Este campo es requerido")
53
+ });
54
+ const Form = ({ settings, handleSubmit }) => {
55
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 6, margin: 6, background: "neutral0", width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
56
+ formik.Formik,
57
+ {
58
+ enableReinitialize: true,
59
+ initialValues: settings,
60
+ validationSchema: schema,
61
+ onSubmit: handleSubmit,
62
+ children: ({
63
+ values,
64
+ handleChange,
65
+ handleBlur,
66
+ handleSubmit: handleSubmit2,
67
+ isValid,
68
+ dirty,
69
+ isSubmitting
70
+ }) => {
71
+ return /* @__PURE__ */ jsxRuntime.jsx("form", { onSubmit: handleSubmit2, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 4, children: [
72
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
73
+ designSystem.Field.Root,
74
+ {
75
+ id: "googleGenAI",
76
+ required: true,
77
+ width: "100%",
78
+ children: [
79
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: "API Key Gemini" }),
80
+ /* @__PURE__ */ jsxRuntime.jsx(
81
+ designSystem.Field.Input,
82
+ {
83
+ name: "googleGenAI",
84
+ value: values.googleGenAI,
85
+ onChange: handleChange,
86
+ type: "password"
87
+ }
88
+ )
89
+ ]
90
+ }
91
+ ) }),
92
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
93
+ designSystem.Field.Root,
94
+ {
95
+ id: "linkedInAccessToken",
96
+ required: true,
97
+ width: "100%",
98
+ children: [
99
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: "LinkedIn Access Token" }),
100
+ /* @__PURE__ */ jsxRuntime.jsx(
101
+ designSystem.Field.Input,
102
+ {
103
+ name: "linkedInAccessToken",
104
+ value: values.linkedInAccessToken,
105
+ onChange: handleChange,
106
+ type: "password",
107
+ onBlur: handleBlur
108
+ }
109
+ )
110
+ ]
111
+ }
112
+ ) }),
113
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
114
+ designSystem.Field.Root,
115
+ {
116
+ id: "linkedInOrganizationId",
117
+ required: true,
118
+ width: "100%",
119
+ children: [
120
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: "LinkedIn Organization ID" }),
121
+ /* @__PURE__ */ jsxRuntime.jsx(
122
+ designSystem.Field.Input,
123
+ {
124
+ name: "linkedInOrganizationId",
125
+ value: values.linkedInOrganizationId,
126
+ type: "password",
127
+ onChange: handleChange
128
+ }
129
+ )
130
+ ]
131
+ }
132
+ ) }),
133
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "end", alignItems: "end", width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(
134
+ designSystem.Button,
135
+ {
136
+ type: "submit",
137
+ disabled: !isValid || !dirty || isSubmitting,
138
+ children: "Guardar"
139
+ }
140
+ ) }) })
141
+ ] }) });
142
+ }
143
+ }
144
+ ) });
145
+ };
146
+ const initialValues = {
147
+ googleGenAI: "",
148
+ linkedInAccessToken: "",
149
+ linkedInOrganizationId: ""
150
+ };
151
+ const SettingsContainer = () => {
152
+ const [settings, setSettingsConfig] = react.useState(initialValues);
153
+ const { formatMessage } = reactIntl.useIntl();
154
+ const { getSettings, setSettings } = useSettings();
155
+ const { toggleNotification } = admin.useNotification();
156
+ const fetchSettings = react.useCallback(async () => {
157
+ let isMounted = true;
158
+ try {
159
+ const { data } = await getSettings();
160
+ if (isMounted) {
161
+ setSettingsConfig(data);
162
+ }
163
+ } catch (error) {
164
+ toggleNotification({
165
+ type: "danger",
166
+ message: formatMessage({
167
+ id: `${index.PLUGIN_ID}.config.load.error`,
168
+ defaultMessage: "Error cargando configuración"
169
+ })
170
+ });
171
+ }
172
+ return () => {
173
+ isMounted = false;
174
+ };
175
+ }, [getSettings]);
176
+ const handleSubmit = react.useCallback(
177
+ async (values) => {
178
+ try {
179
+ await setSettings(values);
180
+ setSettingsConfig(values);
181
+ toggleNotification({
182
+ type: "success",
183
+ message: formatMessage({
184
+ id: `${index.PLUGIN_ID}.config.load.error`,
185
+ defaultMessage: "Configuración guardada con éxito"
186
+ })
187
+ });
188
+ } catch (error) {
189
+ toggleNotification({
190
+ type: "danger",
191
+ message: formatMessage({
192
+ id: `${index.PLUGIN_ID}.config.load.error`,
193
+ defaultMessage: "Error guardando configuración"
194
+ })
195
+ });
196
+ }
197
+ },
198
+ []
199
+ );
200
+ react.useEffect(() => {
201
+ fetchSettings();
202
+ }, []);
203
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.DesignSystemProvider, { locale: "es-MX", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { padding: 6, gap: 3, children: [
204
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "start", children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", children: formatMessage({ id: getTranslation.getTranslation("plugin.name") }) }),
206
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", children: "Para uso exclusivo de InterWare de México" })
207
+ ] }) }),
208
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { children: /* @__PURE__ */ jsxRuntime.jsx(Form, { settings, handleSubmit }) })
209
+ ] }) });
210
+ };
211
+ const SettingsPage = () => {
212
+ const { formatMessage } = reactIntl.useIntl();
213
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(admin.Page.Main, { children: [
214
+ /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Title, { children: `${formatMessage({ id: getTranslation.getTranslation("plugin.name") })} | Settings` }),
215
+ /* @__PURE__ */ jsxRuntime.jsx(SettingsContainer, {})
216
+ ] }) });
217
+ };
218
+ exports.default = SettingsPage;
@@ -0,0 +1,200 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useFetchClient, useNotification, Page } from "@strapi/strapi/admin";
3
+ import { useIntl } from "react-intl";
4
+ import { useCallback, useState, useEffect } from "react";
5
+ import { Box, Grid, Field, Flex, Button, DesignSystemProvider, Typography } from "@strapi/design-system";
6
+ import { Formik } from "formik";
7
+ import * as Yup from "yup";
8
+ import { P as PLUGIN_ID } from "./index-CkkBgYlg.mjs";
9
+ import { g as getTranslation } from "./getTranslation-Di36t3DD.mjs";
10
+ const useSettings = () => {
11
+ const { get, post } = useFetchClient();
12
+ const getSettings = useCallback(
13
+ async (config) => {
14
+ return get("/api/strapi-content-generator-gemini/config", config);
15
+ },
16
+ [get]
17
+ );
18
+ const setSettings = useCallback(
19
+ async (data, config) => {
20
+ return post("/api/strapi-content-generator-gemini/config", data, config);
21
+ },
22
+ [post]
23
+ );
24
+ return {
25
+ getSettings,
26
+ setSettings
27
+ };
28
+ };
29
+ const schema = Yup.object({
30
+ googleGenAI: Yup.string().required("Este campo es requerido"),
31
+ linkedInAccessToken: Yup.string().required("Este campo es requerido"),
32
+ linkedInOrganizationId: Yup.string().required("Este campo es requerido")
33
+ });
34
+ const Form = ({ settings, handleSubmit }) => {
35
+ return /* @__PURE__ */ jsx(Box, { padding: 6, margin: 6, background: "neutral0", width: "100%", children: /* @__PURE__ */ jsx(
36
+ Formik,
37
+ {
38
+ enableReinitialize: true,
39
+ initialValues: settings,
40
+ validationSchema: schema,
41
+ onSubmit: handleSubmit,
42
+ children: ({
43
+ values,
44
+ handleChange,
45
+ handleBlur,
46
+ handleSubmit: handleSubmit2,
47
+ isValid,
48
+ dirty,
49
+ isSubmitting
50
+ }) => {
51
+ return /* @__PURE__ */ jsx("form", { onSubmit: handleSubmit2, children: /* @__PURE__ */ jsxs(Grid.Root, { gap: 4, children: [
52
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsxs(
53
+ Field.Root,
54
+ {
55
+ id: "googleGenAI",
56
+ required: true,
57
+ width: "100%",
58
+ children: [
59
+ /* @__PURE__ */ jsx(Field.Label, { children: "API Key Gemini" }),
60
+ /* @__PURE__ */ jsx(
61
+ Field.Input,
62
+ {
63
+ name: "googleGenAI",
64
+ value: values.googleGenAI,
65
+ onChange: handleChange,
66
+ type: "password"
67
+ }
68
+ )
69
+ ]
70
+ }
71
+ ) }),
72
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsxs(
73
+ Field.Root,
74
+ {
75
+ id: "linkedInAccessToken",
76
+ required: true,
77
+ width: "100%",
78
+ children: [
79
+ /* @__PURE__ */ jsx(Field.Label, { children: "LinkedIn Access Token" }),
80
+ /* @__PURE__ */ jsx(
81
+ Field.Input,
82
+ {
83
+ name: "linkedInAccessToken",
84
+ value: values.linkedInAccessToken,
85
+ onChange: handleChange,
86
+ type: "password",
87
+ onBlur: handleBlur
88
+ }
89
+ )
90
+ ]
91
+ }
92
+ ) }),
93
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsxs(
94
+ Field.Root,
95
+ {
96
+ id: "linkedInOrganizationId",
97
+ required: true,
98
+ width: "100%",
99
+ children: [
100
+ /* @__PURE__ */ jsx(Field.Label, { children: "LinkedIn Organization ID" }),
101
+ /* @__PURE__ */ jsx(
102
+ Field.Input,
103
+ {
104
+ name: "linkedInOrganizationId",
105
+ value: values.linkedInOrganizationId,
106
+ type: "password",
107
+ onChange: handleChange
108
+ }
109
+ )
110
+ ]
111
+ }
112
+ ) }),
113
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(Flex, { justifyContent: "end", alignItems: "end", width: "100%", children: /* @__PURE__ */ jsx(
114
+ Button,
115
+ {
116
+ type: "submit",
117
+ disabled: !isValid || !dirty || isSubmitting,
118
+ children: "Guardar"
119
+ }
120
+ ) }) })
121
+ ] }) });
122
+ }
123
+ }
124
+ ) });
125
+ };
126
+ const initialValues = {
127
+ googleGenAI: "",
128
+ linkedInAccessToken: "",
129
+ linkedInOrganizationId: ""
130
+ };
131
+ const SettingsContainer = () => {
132
+ const [settings, setSettingsConfig] = useState(initialValues);
133
+ const { formatMessage } = useIntl();
134
+ const { getSettings, setSettings } = useSettings();
135
+ const { toggleNotification } = useNotification();
136
+ const fetchSettings = useCallback(async () => {
137
+ let isMounted = true;
138
+ try {
139
+ const { data } = await getSettings();
140
+ if (isMounted) {
141
+ setSettingsConfig(data);
142
+ }
143
+ } catch (error) {
144
+ toggleNotification({
145
+ type: "danger",
146
+ message: formatMessage({
147
+ id: `${PLUGIN_ID}.config.load.error`,
148
+ defaultMessage: "Error cargando configuración"
149
+ })
150
+ });
151
+ }
152
+ return () => {
153
+ isMounted = false;
154
+ };
155
+ }, [getSettings]);
156
+ const handleSubmit = useCallback(
157
+ async (values) => {
158
+ try {
159
+ await setSettings(values);
160
+ setSettingsConfig(values);
161
+ toggleNotification({
162
+ type: "success",
163
+ message: formatMessage({
164
+ id: `${PLUGIN_ID}.config.load.error`,
165
+ defaultMessage: "Configuración guardada con éxito"
166
+ })
167
+ });
168
+ } catch (error) {
169
+ toggleNotification({
170
+ type: "danger",
171
+ message: formatMessage({
172
+ id: `${PLUGIN_ID}.config.load.error`,
173
+ defaultMessage: "Error guardando configuración"
174
+ })
175
+ });
176
+ }
177
+ },
178
+ []
179
+ );
180
+ useEffect(() => {
181
+ fetchSettings();
182
+ }, []);
183
+ return /* @__PURE__ */ jsx(DesignSystemProvider, { locale: "es-MX", children: /* @__PURE__ */ jsxs(Grid.Root, { padding: 6, gap: 3, children: [
184
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "start", children: [
185
+ /* @__PURE__ */ jsx(Typography, { variant: "alpha", children: formatMessage({ id: getTranslation("plugin.name") }) }),
186
+ /* @__PURE__ */ jsx(Typography, { variant: "pi", children: "Para uso exclusivo de InterWare de México" })
187
+ ] }) }),
188
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(Form, { settings, handleSubmit }) })
189
+ ] }) });
190
+ };
191
+ const SettingsPage = () => {
192
+ const { formatMessage } = useIntl();
193
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Page.Main, { children: [
194
+ /* @__PURE__ */ jsx(Page.Title, { children: `${formatMessage({ id: getTranslation("plugin.name") })} | Settings` }),
195
+ /* @__PURE__ */ jsx(SettingsContainer, {})
196
+ ] }) });
197
+ };
198
+ export {
199
+ SettingsPage as default
200
+ };
@@ -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,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const es = {};
4
+ exports.default = es;
@@ -0,0 +1,4 @@
1
+ const es = {};
2
+ export {
3
+ es as default
4
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ const index = require("./index-Dcpjhvs5.js");
3
+ const getTranslation = (id) => `${index.PLUGIN_ID}.${id}`;
4
+ exports.getTranslation = getTranslation;
@@ -0,0 +1,5 @@
1
+ import { P as PLUGIN_ID } from "./index-CkkBgYlg.mjs";
2
+ const getTranslation = (id) => `${PLUGIN_ID}.${id}`;
3
+ export {
4
+ getTranslation as g
5
+ };
@@ -0,0 +1,126 @@
1
+ import { useRef, useEffect } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Sparkle } from "@strapi/icons";
4
+ import { createSlice } from "@reduxjs/toolkit";
5
+ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
6
+ const v = glob[path];
7
+ if (v) {
8
+ return typeof v === "function" ? v() : Promise.resolve(v);
9
+ }
10
+ return new Promise((_, reject) => {
11
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
12
+ reject.bind(
13
+ null,
14
+ new Error(
15
+ "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
16
+ )
17
+ )
18
+ );
19
+ });
20
+ };
21
+ const PLUGIN_ID = "strapi-content-generator-gemini";
22
+ const loadFontAwesome = () => {
23
+ if (document.getElementById("font-awesome-kit")) return;
24
+ const script = document.createElement("script");
25
+ script.id = "font-awesome-kit";
26
+ script.src = "https://kit.fontawesome.com/ccaa22cd11.js";
27
+ script.crossOrigin = "anonymous";
28
+ script.defer = true;
29
+ document.head.appendChild(script);
30
+ };
31
+ const Initializer = ({ setPlugin }) => {
32
+ const ref = useRef(setPlugin);
33
+ useEffect(() => {
34
+ ref.current(PLUGIN_ID);
35
+ loadFontAwesome();
36
+ }, []);
37
+ return null;
38
+ };
39
+ const PluginIcon = () => /* @__PURE__ */ jsx(Sparkle, {});
40
+ const pluginPermissions = {
41
+ access: [
42
+ {
43
+ action: `plugin::${PLUGIN_ID}.access`,
44
+ subject: null
45
+ }
46
+ ]
47
+ };
48
+ const initialState = {
49
+ open: {}
50
+ };
51
+ const dialogSlice = createSlice({
52
+ name: "sci_commonDialog",
53
+ initialState,
54
+ reducers: {
55
+ openDialog: (state, action) => {
56
+ state.open[action.payload] = true;
57
+ },
58
+ closeDialog: (state, action) => {
59
+ state.open[action.payload] = false;
60
+ }
61
+ }
62
+ });
63
+ const { openDialog, closeDialog } = dialogSlice.actions;
64
+ const dialogReducer = dialogSlice.reducer;
65
+ const reducers = {
66
+ // Reducer Syntax
67
+ ["content_generator_commonDialog"]: dialogReducer
68
+ };
69
+ const index = {
70
+ register(app) {
71
+ app.addMenuLink({
72
+ to: `plugins/${PLUGIN_ID}`,
73
+ icon: PluginIcon,
74
+ intlLabel: {
75
+ id: `${PLUGIN_ID}.plugin.name`,
76
+ defaultMessage: PLUGIN_ID
77
+ },
78
+ Component: async () => {
79
+ const { App } = await import("./App-CUBxywy1.mjs");
80
+ return App;
81
+ },
82
+ permissions: [
83
+ pluginPermissions.access[0]
84
+ ]
85
+ });
86
+ app.registerPlugin({
87
+ id: PLUGIN_ID,
88
+ initializer: Initializer,
89
+ isReady: false,
90
+ name: PLUGIN_ID
91
+ });
92
+ app.addReducers(reducers);
93
+ app.addSettingsLink("global", {
94
+ id: PLUGIN_ID,
95
+ intlLabel: {
96
+ id: `${PLUGIN_ID}.plugin.name`,
97
+ defaultMessage: PLUGIN_ID
98
+ },
99
+ Component: async () => {
100
+ const component = await import("./Settings-DTPXHARn.mjs");
101
+ return component.default;
102
+ },
103
+ to: `plugins/${PLUGIN_ID}/settings`,
104
+ permissions: [pluginPermissions.access[0]]
105
+ });
106
+ },
107
+ async registerTrads({ locales }) {
108
+ return Promise.all(
109
+ locales.map(async (locale) => {
110
+ try {
111
+ const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-Byx4XI2L.mjs"), "./translations/es.json": () => import("./es-DlGQb34u.mjs") }), `./translations/${locale}.json`, 3);
112
+ return { data, locale };
113
+ } catch {
114
+ return { data: {}, locale };
115
+ }
116
+ })
117
+ );
118
+ }
119
+ };
120
+ export {
121
+ PLUGIN_ID as P,
122
+ closeDialog as c,
123
+ index as i,
124
+ openDialog as o,
125
+ pluginPermissions as p
126
+ };