@strapi/i18n 0.0.0-experimental.17b4116f461a49b8ce5386f7c8d79c511d40fb3b → 0.0.0-experimental.19d775295eb622de3e659110caf22fcd2cd5d10d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +18 -3
- package/dist/_chunks/{SettingsPage-CeqfDjsb.mjs → SettingsPage-B-KzAqT3.mjs} +117 -128
- package/dist/_chunks/SettingsPage-B-KzAqT3.mjs.map +1 -0
- package/dist/_chunks/{SettingsPage-Djqsdrzs.js → SettingsPage-hyOi94O9.js} +118 -130
- package/dist/_chunks/SettingsPage-hyOi94O9.js.map +1 -0
- package/dist/_chunks/{de-DtWiGdHl.js → de-BOhNX_-5.js} +1 -2
- package/dist/_chunks/de-BOhNX_-5.js.map +1 -0
- package/dist/_chunks/{de-9eCAqqrB.mjs → de-D80IRBP9.mjs} +1 -2
- package/dist/_chunks/de-D80IRBP9.mjs.map +1 -0
- package/dist/_chunks/{dk-2qBjxt-P.mjs → dk-CJ6Zzz78.mjs} +1 -2
- package/dist/_chunks/dk-CJ6Zzz78.mjs.map +1 -0
- package/dist/_chunks/{dk-D8C-casx.js → dk-cjXm0p3m.js} +1 -2
- package/dist/_chunks/dk-cjXm0p3m.js.map +1 -0
- package/dist/_chunks/{en-CnrTsjWS.mjs → en-BTyF7WVW.mjs} +14 -3
- package/dist/_chunks/en-BTyF7WVW.mjs.map +1 -0
- package/dist/_chunks/{en-BuBc6LKZ.js → en-UlC0jh2t.js} +14 -3
- package/dist/_chunks/en-UlC0jh2t.js.map +1 -0
- package/dist/_chunks/{es-DlmMVaBG.mjs → es-V8WnPN7w.mjs} +1 -2
- package/dist/_chunks/es-V8WnPN7w.mjs.map +1 -0
- package/dist/_chunks/{es-DS-XFGSw.js → es-hr9b_HLp.js} +1 -2
- package/dist/_chunks/es-hr9b_HLp.js.map +1 -0
- package/dist/_chunks/{fr-BTjekDpq.js → fr-BFmBbE0H.js} +1 -2
- package/dist/_chunks/fr-BFmBbE0H.js.map +1 -0
- package/dist/_chunks/{fr-3S6ke71d.mjs → fr-F94noFiV.mjs} +1 -2
- package/dist/_chunks/fr-F94noFiV.mjs.map +1 -0
- package/dist/_chunks/index-BcYj5jo9.mjs +1589 -0
- package/dist/_chunks/index-BcYj5jo9.mjs.map +1 -0
- package/dist/_chunks/index-C8NzsAKp.js +1610 -0
- package/dist/_chunks/index-C8NzsAKp.js.map +1 -0
- package/dist/_chunks/{ko-DmcGUBQ3.js → ko-C40pNQ9b.js} +1 -2
- package/dist/_chunks/ko-C40pNQ9b.js.map +1 -0
- package/dist/_chunks/{ko-qTjQ8IMw.mjs → ko-CF-P3Car.mjs} +1 -2
- package/dist/_chunks/ko-CF-P3Car.mjs.map +1 -0
- package/dist/_chunks/{pl-B67TSHqT.mjs → pl-Dxr9RUmD.mjs} +1 -2
- package/dist/_chunks/pl-Dxr9RUmD.mjs.map +1 -0
- package/dist/_chunks/{pl-Cn5RYonZ.js → pl-JtWBy-JQ.js} +1 -2
- package/dist/_chunks/pl-JtWBy-JQ.js.map +1 -0
- package/dist/_chunks/{ru-hagMa57T.mjs → ru-B-4sVwXN.mjs} +1 -2
- package/dist/_chunks/ru-B-4sVwXN.mjs.map +1 -0
- package/dist/_chunks/{ru-BMBgVL3s.js → ru-COSWt3Nu.js} +1 -2
- package/dist/_chunks/ru-COSWt3Nu.js.map +1 -0
- package/dist/_chunks/{tr-CarUU76c.js → tr-BVj1O5ch.js} +1 -2
- package/dist/_chunks/tr-BVj1O5ch.js.map +1 -0
- package/dist/_chunks/{tr-Dw_jmkG-.mjs → tr-Ccu6Yj11.mjs} +1 -2
- package/dist/_chunks/tr-Ccu6Yj11.mjs.map +1 -0
- package/dist/_chunks/{zh-57YM4amO.mjs → zh-BIz395Ms.mjs} +1 -2
- package/dist/_chunks/zh-BIz395Ms.mjs.map +1 -0
- package/dist/_chunks/{zh-Hans-Dyc-aR-h.mjs → zh-Hans-Bfo6_TCM.mjs} +1 -2
- package/dist/_chunks/zh-Hans-Bfo6_TCM.mjs.map +1 -0
- package/dist/_chunks/{zh-Hans-DSHIXAa3.js → zh-Hans-DIEm_EMC.js} +1 -2
- package/dist/_chunks/zh-Hans-DIEm_EMC.js.map +1 -0
- package/dist/_chunks/{zh-CukOviB0.js → zh-wkBPBkhc.js} +1 -2
- package/dist/_chunks/zh-wkBPBkhc.js.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +2 -2
- package/dist/admin/src/components/BulkLocaleActionModal.d.ts +16 -0
- package/dist/admin/src/components/CMHeaderActions.d.ts +35 -3
- package/dist/admin/src/components/CreateLocale.d.ts +6 -6
- package/dist/admin/src/components/EditLocale.d.ts +5 -4
- package/dist/admin/src/components/LocaleListCell.d.ts +4 -4
- package/dist/admin/src/contentReleasesHooks/releaseDetailsView.d.ts +9 -5
- package/dist/admin/src/services/api.d.ts +2 -3
- package/dist/admin/src/services/locales.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +7 -0
- package/dist/admin/src/utils/baseQuery.d.ts +4 -19
- package/dist/admin/src/utils/clean.d.ts +4 -0
- package/dist/admin/src/utils/schemas.d.ts +1 -0
- package/dist/server/index.js +418 -478
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +419 -478
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts +1 -4
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +21 -13
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +20 -10
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/permissions/actions.d.ts +14 -2
- package/dist/server/src/services/permissions/actions.d.ts.map +1 -1
- package/dist/server/src/services/permissions.d.ts +14 -2
- package/dist/server/src/services/permissions.d.ts.map +1 -1
- package/dist/server/src/services/sanitize/index.d.ts +11 -0
- package/dist/server/src/services/sanitize/index.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +2 -2
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/shared/contracts/content-manager.d.ts +20 -1
- package/package.json +19 -21
- package/dist/_chunks/SettingsPage-CeqfDjsb.mjs.map +0 -1
- package/dist/_chunks/SettingsPage-Djqsdrzs.js.map +0 -1
- package/dist/_chunks/de-9eCAqqrB.mjs.map +0 -1
- package/dist/_chunks/de-DtWiGdHl.js.map +0 -1
- package/dist/_chunks/dk-2qBjxt-P.mjs.map +0 -1
- package/dist/_chunks/dk-D8C-casx.js.map +0 -1
- package/dist/_chunks/en-BuBc6LKZ.js.map +0 -1
- package/dist/_chunks/en-CnrTsjWS.mjs.map +0 -1
- package/dist/_chunks/es-DS-XFGSw.js.map +0 -1
- package/dist/_chunks/es-DlmMVaBG.mjs.map +0 -1
- package/dist/_chunks/fr-3S6ke71d.mjs.map +0 -1
- package/dist/_chunks/fr-BTjekDpq.js.map +0 -1
- package/dist/_chunks/index-BDU1w_fd.mjs +0 -1058
- package/dist/_chunks/index-BDU1w_fd.mjs.map +0 -1
- package/dist/_chunks/index-DMXJeGjN.js +0 -1082
- package/dist/_chunks/index-DMXJeGjN.js.map +0 -1
- package/dist/_chunks/ko-DmcGUBQ3.js.map +0 -1
- package/dist/_chunks/ko-qTjQ8IMw.mjs.map +0 -1
- package/dist/_chunks/pl-B67TSHqT.mjs.map +0 -1
- package/dist/_chunks/pl-Cn5RYonZ.js.map +0 -1
- package/dist/_chunks/ru-BMBgVL3s.js.map +0 -1
- package/dist/_chunks/ru-hagMa57T.mjs.map +0 -1
- package/dist/_chunks/tr-CarUU76c.js.map +0 -1
- package/dist/_chunks/tr-Dw_jmkG-.mjs.map +0 -1
- package/dist/_chunks/zh-57YM4amO.mjs.map +0 -1
- package/dist/_chunks/zh-CukOviB0.js.map +0 -1
- package/dist/_chunks/zh-Hans-DSHIXAa3.js.map +0 -1
- package/dist/_chunks/zh-Hans-Dyc-aR-h.mjs.map +0 -1
- package/dist/admin/src/components/Initializer.d.ts +0 -5
- package/dist/server/src/migrations/content-type/disable/index.d.ts +0 -3
- package/dist/server/src/migrations/content-type/disable/index.d.ts.map +0 -1
- package/dist/server/src/migrations/content-type/enable/index.d.ts +0 -3
- package/dist/server/src/migrations/content-type/enable/index.d.ts.map +0 -1
- package/dist/server/src/services/entity-service-decorator.d.ts +0 -29
- package/dist/server/src/services/entity-service-decorator.d.ts.map +0 -1
- package/strapi-server.js +0 -3
@@ -8,10 +8,9 @@ const symbols = require("@strapi/icons/symbols");
|
|
8
8
|
const reactIntl = require("react-intl");
|
9
9
|
const icons = require("@strapi/icons");
|
10
10
|
const yup = require("yup");
|
11
|
-
const index = require("./index-
|
11
|
+
const index = require("./index-C8NzsAKp.js");
|
12
12
|
function _interopNamespace(e) {
|
13
|
-
if (e && e.__esModule)
|
14
|
-
return e;
|
13
|
+
if (e && e.__esModule) return e;
|
15
14
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
16
15
|
if (e) {
|
17
16
|
for (const k in e) {
|
@@ -29,11 +28,14 @@ function _interopNamespace(e) {
|
|
29
28
|
}
|
30
29
|
const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
31
30
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
31
|
+
const isBaseQueryError = (error) => {
|
32
|
+
return error.name !== void 0;
|
33
|
+
};
|
32
34
|
const CreateLocale = ({ disabled, variant = "default" }) => {
|
33
35
|
const { formatMessage } = reactIntl.useIntl();
|
34
36
|
const [visible, setVisible] = React__namespace.useState(false);
|
35
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
36
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
37
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Root, { open: visible, onOpenChange: setVisible, children: [
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
37
39
|
designSystem.Button,
|
38
40
|
{
|
39
41
|
variant,
|
@@ -46,16 +48,16 @@ const CreateLocale = ({ disabled, variant = "default" }) => {
|
|
46
48
|
defaultMessage: "Add new locale"
|
47
49
|
})
|
48
50
|
}
|
49
|
-
),
|
50
|
-
|
51
|
+
) }),
|
52
|
+
/* @__PURE__ */ jsxRuntime.jsx(CreateModal, { onClose: () => setVisible(false) })
|
51
53
|
] });
|
52
54
|
};
|
53
55
|
const LOCALE_SCHEMA = yup__namespace.object().shape({
|
54
|
-
code: yup__namespace.string().required({
|
56
|
+
code: yup__namespace.string().nullable().required({
|
55
57
|
id: "Settings.locales.modal.create.code.error",
|
56
58
|
defaultMessage: "Please select a locale"
|
57
59
|
}),
|
58
|
-
name: yup__namespace.string().max(50, {
|
60
|
+
name: yup__namespace.string().nullable().max(50, {
|
59
61
|
id: "Settings.locales.modal.create.name.error.min",
|
60
62
|
defaultMessage: "The locale display name can only be less than 50 characters."
|
61
63
|
}).required({
|
@@ -70,6 +72,7 @@ const initialFormValues = {
|
|
70
72
|
isDefault: false
|
71
73
|
};
|
72
74
|
const CreateModal = ({ onClose }) => {
|
75
|
+
const titleId = designSystem.useId();
|
73
76
|
const { toggleNotification } = strapiAdmin.useNotification();
|
74
77
|
const {
|
75
78
|
_unstableFormatAPIError: formatAPIError,
|
@@ -82,7 +85,7 @@ const CreateModal = ({ onClose }) => {
|
|
82
85
|
try {
|
83
86
|
const res = await createLocale(values);
|
84
87
|
if ("error" in res) {
|
85
|
-
if (
|
88
|
+
if (isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
86
89
|
helpers.setErrors(formatValidationErrors(res.error));
|
87
90
|
} else {
|
88
91
|
toggleNotification({ type: "danger", message: formatAPIError(res.error) });
|
@@ -108,8 +111,7 @@ const CreateModal = ({ onClose }) => {
|
|
108
111
|
});
|
109
112
|
}
|
110
113
|
};
|
111
|
-
|
112
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalLayout, { onClose, labelledBy: titleId, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
114
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
113
115
|
strapiAdmin.Form,
|
114
116
|
{
|
115
117
|
method: "POST",
|
@@ -117,50 +119,37 @@ const CreateModal = ({ onClose }) => {
|
|
117
119
|
validationSchema: LOCALE_SCHEMA,
|
118
120
|
onSubmit: handleSubmit,
|
119
121
|
children: [
|
120
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
122
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { children: formatMessage({
|
121
123
|
id: index.getTranslation("Settings.list.actions.add"),
|
122
124
|
defaultMessage: "Add new locale"
|
123
125
|
}) }) }),
|
124
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
125
|
-
designSystem.
|
126
|
-
|
127
|
-
label: formatMessage({
|
126
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.Root, { variant: "simple", defaultValue: "basic", children: [
|
127
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", children: [
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "beta", id: titleId, children: formatMessage({
|
128
129
|
id: index.getTranslation("Settings.locales.modal.title"),
|
129
|
-
defaultMessage: "
|
130
|
-
}),
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.TabPanel, { children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedForm, {}) })
|
153
|
-
] }) })
|
154
|
-
]
|
155
|
-
}
|
156
|
-
) }),
|
157
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
158
|
-
designSystem.ModalFooter,
|
159
|
-
{
|
160
|
-
startActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: onClose, children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }),
|
161
|
-
endActions: /* @__PURE__ */ jsxRuntime.jsx(SubmitButton, {})
|
162
|
-
}
|
163
|
-
)
|
130
|
+
defaultMessage: "Configuration"
|
131
|
+
}) }),
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.List, { "aria-labelledby": titleId, children: [
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "basic", children: formatMessage({
|
134
|
+
id: index.getTranslation("Settings.locales.modal.base"),
|
135
|
+
defaultMessage: "Basic settings"
|
136
|
+
}) }),
|
137
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "advanced", children: formatMessage({
|
138
|
+
id: index.getTranslation("Settings.locales.modal.advanced"),
|
139
|
+
defaultMessage: "Advanced settings"
|
140
|
+
}) })
|
141
|
+
] })
|
142
|
+
] }),
|
143
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}),
|
144
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { paddingTop: 7, paddingBottom: 7, children: [
|
145
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "basic", children: /* @__PURE__ */ jsxRuntime.jsx(BaseForm, {}) }),
|
146
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "advanced", children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedForm, {}) })
|
147
|
+
] })
|
148
|
+
] }) }),
|
149
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
|
150
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }) }),
|
151
|
+
/* @__PURE__ */ jsxRuntime.jsx(SubmitButton, {})
|
152
|
+
] })
|
164
153
|
]
|
165
154
|
}
|
166
155
|
) });
|
@@ -175,8 +164,7 @@ const BaseForm = ({ mode = "create" }) => {
|
|
175
164
|
const { formatMessage } = reactIntl.useIntl();
|
176
165
|
const { toggleNotification } = strapiAdmin.useNotification();
|
177
166
|
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
178
|
-
const { data: defaultLocales
|
179
|
-
const { data: locales = [] } = index.useGetLocalesQuery();
|
167
|
+
const { data: defaultLocales, error } = index.useGetDefaultLocalesQuery();
|
180
168
|
React__namespace.useEffect(() => {
|
181
169
|
if (error) {
|
182
170
|
toggleNotification({
|
@@ -185,7 +173,7 @@ const BaseForm = ({ mode = "create" }) => {
|
|
185
173
|
});
|
186
174
|
}
|
187
175
|
}, [error, formatAPIError, toggleNotification]);
|
188
|
-
if (!Array.isArray(defaultLocales)
|
176
|
+
if (!Array.isArray(defaultLocales)) {
|
189
177
|
return null;
|
190
178
|
}
|
191
179
|
const options = defaultLocales.map((locale) => ({
|
@@ -229,7 +217,7 @@ const BaseForm = ({ mode = "create" }) => {
|
|
229
217
|
label: formatMessage(field.label),
|
230
218
|
placeholder: field.placeholder ? formatMessage(field.placeholder) : void 0
|
231
219
|
}));
|
232
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: translatedForm.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
220
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: translatedForm.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(FormRenderer, { ...field }) }, field.name)) });
|
233
221
|
};
|
234
222
|
const AdvancedForm = ({ isDefaultLocale }) => {
|
235
223
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -253,7 +241,7 @@ const AdvancedForm = ({ isDefaultLocale }) => {
|
|
253
241
|
hint: field.hint ? formatMessage(field.hint) : void 0,
|
254
242
|
label: formatMessage(field.label)
|
255
243
|
}));
|
256
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: form.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
244
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: form.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(FormRenderer, { ...field }) }, field.name)) });
|
257
245
|
};
|
258
246
|
const FormRenderer = (field) => {
|
259
247
|
switch (field.type) {
|
@@ -283,21 +271,21 @@ const EnumerationInput = ({
|
|
283
271
|
onChange(name, value2);
|
284
272
|
}
|
285
273
|
};
|
286
|
-
return /* @__PURE__ */ jsxRuntime.
|
287
|
-
designSystem.
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
}
|
300
|
-
);
|
274
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { error, hint, name, required, children: [
|
275
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: label }),
|
276
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
277
|
+
designSystem.SingleSelect,
|
278
|
+
{
|
279
|
+
disabled,
|
280
|
+
onChange: handleChange,
|
281
|
+
placeholder,
|
282
|
+
value,
|
283
|
+
children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: option.value, children: option.label }, option.value))
|
284
|
+
}
|
285
|
+
),
|
286
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {}),
|
287
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
|
288
|
+
] });
|
301
289
|
};
|
302
290
|
const DeleteLocale = ({ id, name }) => {
|
303
291
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -319,6 +307,7 @@ const DeleteLocale = ({ id, name }) => {
|
|
319
307
|
defaultMessage: "Deleted locale"
|
320
308
|
})
|
321
309
|
});
|
310
|
+
setVisible(false);
|
322
311
|
} catch (err) {
|
323
312
|
toggleNotification({
|
324
313
|
type: "danger",
|
@@ -329,8 +318,8 @@ const DeleteLocale = ({ id, name }) => {
|
|
329
318
|
});
|
330
319
|
}
|
331
320
|
};
|
332
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
333
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
321
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Dialog.Root, { open: visible, onOpenChange: setVisible, children: [
|
322
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
334
323
|
designSystem.IconButton,
|
335
324
|
{
|
336
325
|
onClick: () => setVisible(true),
|
@@ -343,11 +332,11 @@ const DeleteLocale = ({ id, name }) => {
|
|
343
332
|
name
|
344
333
|
}
|
345
334
|
),
|
346
|
-
|
347
|
-
|
335
|
+
variant: "ghost",
|
336
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {})
|
348
337
|
}
|
349
|
-
),
|
350
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, { onConfirm: handleConfirm
|
338
|
+
) }),
|
339
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, { onConfirm: handleConfirm })
|
351
340
|
] });
|
352
341
|
};
|
353
342
|
const EditLocale = (props) => {
|
@@ -367,14 +356,14 @@ const EditLocale = (props) => {
|
|
367
356
|
name: props.name
|
368
357
|
}
|
369
358
|
),
|
370
|
-
|
371
|
-
|
359
|
+
variant: "ghost",
|
360
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {})
|
372
361
|
}
|
373
362
|
),
|
374
|
-
|
363
|
+
/* @__PURE__ */ jsxRuntime.jsx(EditModal, { ...props, open: visible, onOpenChange: setVisible })
|
375
364
|
] });
|
376
365
|
};
|
377
|
-
const EditModal = ({ id, code, isDefault, name,
|
366
|
+
const EditModal = ({ id, code, isDefault, name, open, onOpenChange }) => {
|
378
367
|
const { toggleNotification } = strapiAdmin.useNotification();
|
379
368
|
const {
|
380
369
|
_unstableFormatAPIError: formatAPIError,
|
@@ -382,7 +371,7 @@ const EditModal = ({ id, code, isDefault, name, onClose }) => {
|
|
382
371
|
} = strapiAdmin.useAPIErrorHandler();
|
383
372
|
const refetchPermissions = strapiAdmin.useAuth("EditModal", (state) => state.refetchPermissions);
|
384
373
|
const { formatMessage } = reactIntl.useIntl();
|
385
|
-
const titleId =
|
374
|
+
const titleId = designSystem.useId();
|
386
375
|
const [updateLocale] = index.useUpdateLocaleMutation();
|
387
376
|
const handleSubmit = async ({ code: _code, ...data }, helpers) => {
|
388
377
|
try {
|
@@ -391,7 +380,7 @@ const EditModal = ({ id, code, isDefault, name, onClose }) => {
|
|
391
380
|
...data
|
392
381
|
});
|
393
382
|
if ("error" in res) {
|
394
|
-
if (
|
383
|
+
if (isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
395
384
|
helpers.setErrors(formatValidationErrors(res.error));
|
396
385
|
} else {
|
397
386
|
toggleNotification({ type: "danger", message: formatAPIError(res.error) });
|
@@ -406,7 +395,7 @@ const EditModal = ({ id, code, isDefault, name, onClose }) => {
|
|
406
395
|
})
|
407
396
|
});
|
408
397
|
refetchPermissions();
|
409
|
-
|
398
|
+
onOpenChange(false);
|
410
399
|
} catch (err) {
|
411
400
|
toggleNotification({
|
412
401
|
type: "danger",
|
@@ -417,7 +406,7 @@ const EditModal = ({ id, code, isDefault, name, onClose }) => {
|
|
417
406
|
});
|
418
407
|
}
|
419
408
|
};
|
420
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
409
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
421
410
|
strapiAdmin.Form,
|
422
411
|
{
|
423
412
|
method: "PUT",
|
@@ -429,53 +418,45 @@ const EditModal = ({ id, code, isDefault, name, onClose }) => {
|
|
429
418
|
},
|
430
419
|
validationSchema: LOCALE_SCHEMA,
|
431
420
|
children: [
|
432
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.
|
433
|
-
id: index.getTranslation("Settings.list.actions.edit"),
|
434
|
-
defaultMessage: "Edit a locale"
|
435
|
-
}) }) }),
|
436
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalBody, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
437
|
-
designSystem.TabGroup,
|
421
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { children: formatMessage(
|
438
422
|
{
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
}),
|
443
|
-
variant: "simple",
|
444
|
-
children: [
|
445
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", children: [
|
446
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "h2", variant: "beta", children: formatMessage({
|
447
|
-
id: index.getTranslation("Settings.locales.modal.title"),
|
448
|
-
defaultMessage: "Configuration"
|
449
|
-
}) }),
|
450
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs, { children: [
|
451
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tab, { children: formatMessage({
|
452
|
-
id: index.getTranslation("Settings.locales.modal.base"),
|
453
|
-
defaultMessage: "Basic settings"
|
454
|
-
}) }),
|
455
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tab, { children: formatMessage({
|
456
|
-
id: index.getTranslation("Settings.locales.modal.advanced"),
|
457
|
-
defaultMessage: "Advanced settings"
|
458
|
-
}) })
|
459
|
-
] })
|
460
|
-
] }),
|
461
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}),
|
462
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 7, paddingBottom: 7, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.TabPanels, { children: [
|
463
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.TabPanel, { children: /* @__PURE__ */ jsxRuntime.jsx(BaseForm, { mode: "edit" }) }),
|
464
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.TabPanel, { children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedForm, { isDefaultLocale: isDefault }) })
|
465
|
-
] }) })
|
466
|
-
]
|
467
|
-
}
|
468
|
-
) }),
|
469
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
470
|
-
designSystem.ModalFooter,
|
423
|
+
id: index.getTranslation("Settings.list.actions.edit"),
|
424
|
+
defaultMessage: "Edit a locale"
|
425
|
+
},
|
471
426
|
{
|
472
|
-
|
473
|
-
endActions: /* @__PURE__ */ jsxRuntime.jsx(SubmitButton, {})
|
427
|
+
name
|
474
428
|
}
|
475
|
-
)
|
429
|
+
) }) }),
|
430
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.Root, { variant: "simple", defaultValue: "basic", children: [
|
431
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", children: [
|
432
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "beta", id: titleId, children: formatMessage({
|
433
|
+
id: index.getTranslation("Settings.locales.modal.title"),
|
434
|
+
defaultMessage: "Configuration"
|
435
|
+
}) }),
|
436
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.List, { "aria-labelledby": titleId, children: [
|
437
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "basic", children: formatMessage({
|
438
|
+
id: index.getTranslation("Settings.locales.modal.base"),
|
439
|
+
defaultMessage: "Basic settings"
|
440
|
+
}) }),
|
441
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "advanced", children: formatMessage({
|
442
|
+
id: index.getTranslation("Settings.locales.modal.advanced"),
|
443
|
+
defaultMessage: "Advanced settings"
|
444
|
+
}) })
|
445
|
+
] })
|
446
|
+
] }),
|
447
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}),
|
448
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { paddingTop: 7, paddingBottom: 7, children: [
|
449
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "basic", children: /* @__PURE__ */ jsxRuntime.jsx(BaseForm, { mode: "edit" }) }),
|
450
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "advanced", children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedForm, { isDefaultLocale: isDefault }) })
|
451
|
+
] })
|
452
|
+
] }) }),
|
453
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
|
454
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }) }),
|
455
|
+
/* @__PURE__ */ jsxRuntime.jsx(SubmitButton, {})
|
456
|
+
] })
|
476
457
|
]
|
477
458
|
}
|
478
|
-
) });
|
459
|
+
) }) });
|
479
460
|
};
|
480
461
|
const LocaleTable = ({ locales = [], canDelete, canUpdate }) => {
|
481
462
|
const [editLocaleId, setEditLocaleId] = React__namespace.useState();
|
@@ -521,7 +502,14 @@ const LocaleTable = ({ locales = [], canDelete, canUpdate }) => {
|
|
521
502
|
]
|
522
503
|
}
|
523
504
|
),
|
524
|
-
|
505
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
506
|
+
EditModal,
|
507
|
+
{
|
508
|
+
...locale,
|
509
|
+
onOpenChange: () => setEditLocaleId(void 0),
|
510
|
+
open: editLocaleId === locale.id
|
511
|
+
}
|
512
|
+
)
|
525
513
|
] }, locale.id)) })
|
526
514
|
] });
|
527
515
|
};
|
@@ -582,4 +570,4 @@ const ProtectedSettingsPage = () => {
|
|
582
570
|
};
|
583
571
|
exports.ProtectedSettingsPage = ProtectedSettingsPage;
|
584
572
|
exports.SettingsPage = SettingsPage;
|
585
|
-
//# sourceMappingURL=SettingsPage-
|
573
|
+
//# sourceMappingURL=SettingsPage-hyOi94O9.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SettingsPage-hyOi94O9.js","sources":["../../admin/src/utils/baseQuery.ts","../../admin/src/components/CreateLocale.tsx","../../admin/src/components/DeleteLocale.tsx","../../admin/src/components/EditLocale.tsx","../../admin/src/components/LocaleTable.tsx","../../admin/src/pages/SettingsPage.tsx"],"sourcesContent":["import { SerializedError } from '@reduxjs/toolkit';\nimport { type ApiError, type UnknownApiError } from '@strapi/admin/strapi-admin';\n\ntype BaseQueryError = ApiError | UnknownApiError | SerializedError;\n\nconst isBaseQueryError = (error: BaseQueryError): error is ApiError | UnknownApiError => {\n return error.name !== undefined;\n};\n\nexport { isBaseQueryError };\n","import * as React from 'react';\n\nimport {\n Form,\n type InputProps,\n InputRenderer,\n useField,\n type FormHelpers,\n useForm,\n useAPIErrorHandler,\n useNotification,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n ButtonProps,\n Divider,\n Field,\n Flex,\n Grid,\n Modal,\n SingleSelect,\n SingleSelectOption,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Check, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { CreateLocale } from '../../../shared/contracts/locales';\nimport { useCreateLocaleMutation, useGetDefaultLocalesQuery } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\n/* -------------------------------------------------------------------------------------------------\n * CreateLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateLocaleProps extends Pick<ButtonProps, 'disabled' | 'variant'> {}\n\nconst CreateLocale = ({ disabled, variant = 'default' }: CreateLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <Modal.Root open={visible} onOpenChange={setVisible}>\n <Modal.Trigger>\n <Button\n variant={variant}\n disabled={disabled}\n startIcon={<Plus />}\n onClick={() => setVisible(true)}\n size=\"S\"\n >\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Button>\n </Modal.Trigger>\n <CreateModal onClose={() => setVisible(false)} />\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst LOCALE_SCHEMA = yup.object().shape({\n code: yup.string().nullable().required({\n id: 'Settings.locales.modal.create.code.error',\n defaultMessage: 'Please select a locale',\n }),\n name: yup\n .string()\n .nullable()\n .max(50, {\n id: 'Settings.locales.modal.create.name.error.min',\n defaultMessage: 'The locale display name can only be less than 50 characters.',\n })\n .required({\n id: 'Settings.locales.modal.create.name.error.required',\n defaultMessage: 'Please give the locale a display name',\n }),\n isDefault: yup.boolean(),\n});\n\ntype FormValues = CreateLocale.Request['body'];\n\nconst initialFormValues = {\n code: '',\n name: '',\n isDefault: false,\n} satisfies FormValues;\n\ntype ModalCreateProps = {\n onClose: () => void;\n};\n\nconst CreateModal = ({ onClose }: ModalCreateProps) => {\n const titleId = useId();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const [createLocale] = useCreateLocaleMutation();\n const { formatMessage } = useIntl();\n const refetchPermissions = useAuth('CreateModal', (state) => state.refetchPermissions);\n\n const handleSubmit = async (values: FormValues, helpers: FormHelpers<FormValues>) => {\n try {\n const res = await createLocale(values);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.create.success'),\n defaultMessage: 'Created locale',\n }),\n });\n\n refetchPermissions();\n onClose();\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Content>\n <Form\n method=\"POST\"\n initialValues={initialFormValues}\n validationSchema={LOCALE_SCHEMA}\n onSubmit={handleSubmit}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTranslation('Settings.list.actions.add'),\n defaultMessage: 'Add new locale',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n\n <Divider />\n\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubmitButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SubmitButton = () => {\n const { formatMessage } = useIntl();\n const isSubmitting = useForm('SubmitButton', (state) => state.isSubmitting);\n const modified = useForm('SubmitButton', (state) => state.modified);\n\n return (\n <Button type=\"submit\" startIcon={<Check />} disabled={isSubmitting || !modified}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BaseForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseFormProps {\n mode?: 'create' | 'edit';\n}\n\nconst BaseForm = ({ mode = 'create' }: BaseFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data: defaultLocales, error } = useGetDefaultLocalesQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (!Array.isArray(defaultLocales)) {\n return null;\n }\n\n const options = defaultLocales.map((locale) => ({\n label: locale.name,\n value: locale.code,\n }));\n\n const translatedForm = [\n {\n disabled: mode !== 'create',\n label: {\n id: getTranslation('Settings.locales.modal.create.code.label'),\n defaultMessage: 'Locales',\n },\n name: 'code',\n options,\n placeholder: {\n id: 'components.placeholder.select',\n defaultMessage: 'Select',\n },\n required: true,\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: {\n id: getTranslation('Settings.locales.modal.create.name.label.description'),\n defaultMessage: 'Locale will be displayed under that name in the administration panel',\n },\n label: {\n id: getTranslation('Settings.locales.modal.create.name.label'),\n defaultMessage: 'Locale display name',\n },\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n placeholder: field.placeholder ? formatMessage(field.placeholder) : undefined,\n }));\n\n return (\n <Grid.Root gap={4}>\n {translatedForm.map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdvancedForm\n * -----------------------------------------------------------------------------------------------*/\n\ntype AdvancedFormProps = {\n isDefaultLocale?: boolean;\n};\n\nconst AdvancedForm = ({ isDefaultLocale }: AdvancedFormProps) => {\n const { formatMessage } = useIntl();\n\n const form = [\n {\n disabled: isDefaultLocale,\n hint: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault.hint'),\n defaultMessage: 'One default locale is required, change it by selecting another one',\n },\n label: {\n id: getTranslation('Settings.locales.modal.advanced.setAsDefault'),\n defaultMessage: 'Set as default locale',\n },\n name: 'isDefault',\n size: 6,\n type: 'boolean' as const,\n },\n ].map((field) => ({\n ...field,\n hint: field.hint ? formatMessage(field.hint) : undefined,\n label: formatMessage(field.label),\n })) satisfies InputProps[];\n\n return (\n <Grid.Root gap={4}>\n {form.map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <FormRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormRenderer = (field: InputProps) => {\n switch (field.type) {\n /**\n * This will override the default input renderer\n * choice for `enumeration`.\n */\n case 'enumeration':\n return <EnumerationInput {...field} />;\n default:\n return <InputRenderer {...field} />;\n }\n};\n\nconst EnumerationInput = ({\n disabled,\n hint,\n label,\n name,\n options,\n placeholder,\n required,\n}: Extract<InputProps, { type: 'enumeration' }>) => {\n const { value, error, onChange } = useField(name);\n const { data: defaultLocales = [] } = useGetDefaultLocalesQuery();\n\n const handleChange = (value: string) => {\n if (Array.isArray(defaultLocales)) {\n // We know it exists because the options are created from the list of default locales\n const locale = defaultLocales.find((locale) => locale.code === value)!;\n\n onChange(name, value);\n // This lets us automatically fill the name field with the locale name\n onChange('name', locale.name);\n } else {\n onChange(name, value);\n }\n };\n\n return (\n <Field.Root error={error} hint={hint} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={disabled}\n // @ts-expect-error – This will dissapear when the DS removes support for numbers to be returned by SingleSelect.\n onChange={handleChange}\n placeholder={placeholder}\n value={value}\n >\n {options.map((option) => (\n <SingleSelectOption value={option.value} key={option.value}>\n {option.label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { CreateLocale, BaseForm, AdvancedForm, SubmitButton, LOCALE_SCHEMA };\n","import * as React from 'react';\n\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { Dialog, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDeleteLocaleMutation } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DeleteLocaleProps extends Locale {}\n\nconst DeleteLocale = ({ id, name }: DeleteLocaleProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [visible, setVisible] = React.useState(false);\n\n const [deleteLocale] = useDeleteLocaleMutation();\n const handleConfirm = async () => {\n try {\n const res = await deleteLocale(id);\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.delete.success'),\n defaultMessage: 'Deleted locale',\n }),\n });\n\n setVisible(false);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Dialog.Root open={visible} onOpenChange={setVisible}>\n <Dialog.Trigger>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.delete'),\n defaultMessage: 'Delete {name} locale',\n },\n {\n name,\n }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirm} />\n </Dialog.Root>\n );\n};\n\nexport { DeleteLocale };\n","import * as React from 'react';\n\nimport {\n useNotification,\n useAPIErrorHandler,\n Form,\n FormHelpers,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Modal,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Locale, UpdateLocale } from '../../../shared/contracts/locales';\nimport { useUpdateLocaleMutation } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport { AdvancedForm, BaseForm, LOCALE_SCHEMA, SubmitButton } from './CreateLocale';\n\n/* -------------------------------------------------------------------------------------------------\n * EditLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditLocaleProps extends Omit<EditModalProps, 'open' | 'onOpenChange'> {}\n\nconst EditLocale = (props: EditLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit {name} locale',\n },\n {\n name: props.name,\n }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n <EditModal {...props} open={visible} onOpenChange={setVisible} />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditModalProps extends Pick<Locale, 'id' | 'isDefault' | 'name' | 'code'> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\ntype FormValues = UpdateLocale.Request['body'] & { code: string };\n\n/**\n * @internal\n * @description Exported to be used when someone clicks on a table row.\n */\nconst EditModal = ({ id, code, isDefault, name, open, onOpenChange }: EditModalProps) => {\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const refetchPermissions = useAuth('EditModal', (state) => state.refetchPermissions);\n const { formatMessage } = useIntl();\n const titleId = useId();\n\n const [updateLocale] = useUpdateLocaleMutation();\n const handleSubmit = async (\n { code: _code, ...data }: FormValues,\n helpers: FormHelpers<FormValues>\n ) => {\n try {\n /**\n * We don't need to send the code, because the\n * code can never be changed.\n */\n const res = await updateLocale({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.edit.success'),\n defaultMessage: 'Updated locale',\n }),\n });\n\n refetchPermissions();\n onOpenChange(false);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Root open={open} onOpenChange={onOpenChange}>\n <Modal.Content>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={{\n code,\n name,\n isDefault,\n }}\n validationSchema={LOCALE_SCHEMA}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit a locale',\n },\n {\n name,\n }\n )}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n <Divider />\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm mode=\"edit\" />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm isDefaultLocale={isDefault} />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nexport { EditLocale, EditModal };\n","import * as React from 'react';\n\nimport {\n Flex,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../utils/getTranslation';\n\nimport { DeleteLocale } from './DeleteLocale';\nimport { EditLocale, EditModal } from './EditLocale';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * LocaleTable\n * -----------------------------------------------------------------------------------------------*/\n\ntype LocaleTableProps = {\n locales?: Locale[];\n canDelete?: boolean;\n canUpdate?: boolean;\n onDeleteLocale?: (locale: Locale) => void;\n onEditLocale?: (locale: Locale) => void;\n};\n\nconst LocaleTable = ({ locales = [], canDelete, canUpdate }: LocaleTableProps) => {\n const [editLocaleId, setEditLocaleId] = React.useState<Locale['id']>();\n const { formatMessage } = useIntl();\n\n const handleClick = (localeId: Locale['id']) => () => {\n if (canUpdate) {\n setEditLocaleId(localeId);\n }\n };\n\n return (\n <Table colCount={4} rowCount={locales.length + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.id'),\n defaultMessage: 'ID',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.displayName'),\n defaultMessage: 'Display name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.default-locale'),\n defaultMessage: 'Default locale',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>Actions</VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {locales.map((locale) => (\n <React.Fragment key={locale.id}>\n <Tr\n onClick={handleClick(locale.id)}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td>\n <Typography textColor=\"neutral800\">{locale.id}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{locale.name}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {locale.isDefault\n ? formatMessage({\n id: getTranslation('Settings.locales.default'),\n defaultMessage: 'Default',\n })\n : null}\n </Typography>\n </Td>\n <Td>\n <Flex gap={1} justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {canUpdate && <EditLocale {...locale} />}\n {canDelete && !locale.isDefault && <DeleteLocale {...locale} />}\n </Flex>\n </Td>\n </Tr>\n <EditModal\n {...locale}\n onOpenChange={() => setEditLocaleId(undefined)}\n open={editLocaleId === locale.id}\n />\n </React.Fragment>\n ))}\n </Tbody>\n </Table>\n );\n};\n\nexport { LocaleTable };\nexport type { LocaleTableProps };\n","import * as React from 'react';\n\nimport {\n Page,\n useAPIErrorHandler,\n useNotification,\n useRBAC,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { EmptyStateLayout } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { CreateLocale } from '../components/CreateLocale';\nimport { LocaleTable } from '../components/LocaleTable';\nimport { PERMISSIONS } from '../constants';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nconst SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { data: locales, isLoading: isLoadingLocales, error } = useGetLocalesQuery();\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate, canCreate, canDelete },\n } = useRBAC(PERMISSIONS);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const isLoading = isLoadingLocales || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !Array.isArray(locales)) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Layouts.Header\n primaryAction={<CreateLocale disabled={!canCreate} />}\n title={formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Internationalization',\n })}\n subtitle={formatMessage({\n id: getTranslation('Settings.list.description'),\n defaultMessage: 'Configure the settings',\n })}\n />\n <Layouts.Content>\n {locales.length > 0 ? (\n <LocaleTable locales={locales} canDelete={canDelete} canUpdate={canUpdate} />\n ) : (\n <EmptyStateLayout\n icon={<EmptyDocuments width={undefined} height={undefined} />}\n content={formatMessage({\n id: getTranslation('Settings.list.empty.title'),\n defaultMessage: 'There are no locales',\n })}\n action={<CreateLocale disabled={!canCreate} variant=\"secondary\" />}\n />\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n\nconst ProtectedSettingsPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.read}>\n <SettingsPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedSettingsPage, SettingsPage };\n"],"names":["useIntl","React","Modal","jsx","Button","Plus","getTranslation","yup","useId","useNotification","useAPIErrorHandler","useCreateLocaleMutation","useAuth","jsxs","Form","Tabs","Flex","Typography","Divider","Box","useForm","Check","useGetDefaultLocalesQuery","Grid","InputRenderer","useField","value","locale","Field","SingleSelect","SingleSelectOption","useDeleteLocaleMutation","Dialog","IconButton","Trash","ConfirmDialog","Fragment","Pencil","useUpdateLocaleMutation","Table","Thead","Tr","Th","VisuallyHidden","Tbody","Td","useGetLocalesQuery","useRBAC","PERMISSIONS","Page","Layouts","EmptyStateLayout","EmptyDocuments"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,mBAAmB,CAAC,UAA+D;AACvF,SAAO,MAAM,SAAS;AACxB;ACoCA,MAAM,eAAe,CAAC,EAAE,UAAU,UAAU,gBAAmC;AACvE,QAAA,EAAE,cAAc,IAAIA,kBAAQ;AAClC,QAAM,CAAC,SAAS,UAAU,IAAIC,iBAAM,SAAS,KAAK;AAElD,yCACGC,aAAM,MAAA,MAAN,EAAW,MAAM,SAAS,cAAc,YACvC,UAAA;AAAA,IAACC,2BAAAA,IAAAD,aAAA,MAAM,SAAN,EACC,UAAAC,2BAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,0CAAYC,MAAK,MAAA,EAAA;AAAA,QACjB,SAAS,MAAM,WAAW,IAAI;AAAA,QAC9B,MAAK;AAAA,QAEJ,UAAc,cAAA;AAAA,UACb,IAAIC,qBAAe,2BAA2B;AAAA,UAC9C,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,mCACC,aAAY,EAAA,SAAS,MAAM,WAAW,KAAK,EAAG,CAAA;AAAA,EAAA,GACjD;AAEJ;AAMA,MAAM,gBAAgBC,eAAI,OAAO,EAAE,MAAM;AAAA,EACvC,MAAMA,eAAI,OAAS,EAAA,SAAA,EAAW,SAAS;AAAA,IACrC,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AAAA,EACD,MAAMA,eACH,OAAA,EACA,SAAS,EACT,IAAI,IAAI;AAAA,IACP,IAAI;AAAA,IACJ,gBAAgB;AAAA,EACjB,CAAA,EACA,SAAS;AAAA,IACR,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB;AAAA,EACH,WAAWA,eAAI,QAAQ;AACzB,CAAC;AAID,MAAM,oBAAoB;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AACb;AAMA,MAAM,cAAc,CAAC,EAAE,cAAgC;AACrD,QAAM,UAAUC,aAAAA,MAAM;AAChB,QAAA,EAAE,mBAAmB,IAAIC,4BAAgB;AACzC,QAAA;AAAA,IACJ,yBAAyB;AAAA,IACzB,iCAAiC;AAAA,MAC/BC,+BAAmB;AACjB,QAAA,CAAC,YAAY,IAAIC,8BAAwB;AACzC,QAAA,EAAE,cAAc,IAAIX,kBAAQ;AAClC,QAAM,qBAAqBY,YAAAA,QAAQ,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAE/E,QAAA,eAAe,OAAO,QAAoB,YAAqC;AAC/E,QAAA;AACI,YAAA,MAAM,MAAM,aAAa,MAAM;AAErC,UAAI,WAAW,KAAK;AAClB,YAAI,iBAAiB,IAAI,KAAK,KAAK,IAAI,MAAM,SAAS,mBAAmB;AACvE,kBAAQ,UAAU,uBAAuB,IAAI,KAAK,CAAC;AAAA,QAAA,OAC9C;AACc,6BAAA,EAAE,MAAM,UAAU,SAAS,eAAe,IAAI,KAAK,GAAG;AAAA,QAAA;AAG3E;AAAA,MAAA;AAGiB,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAIN,qBAAe,uCAAuC;AAAA,UAC1D,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AAEkB,yBAAA;AACX,cAAA;AAAA,aACD,KAAK;AACO,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AAAA,IAAA;AAAA,EAEL;AAGE,SAAAH,2BAAA,IAACD,aAAM,MAAA,SAAN,EACC,UAAAW,2BAAA;AAAA,IAACC,YAAA;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,UAAU;AAAA,MAEV,UAAA;AAAA,QAAAX,+BAACD,aAAAA,MAAM,QAAN,EACC,yCAACA,aAAAA,MAAM,OAAN,EACE,UAAc,cAAA;AAAA,UACb,IAAII,qBAAe,2BAA2B;AAAA,UAC9C,gBAAgB;AAAA,QAAA,CACjB,GACH,EACF,CAAA;AAAA,QACAH,2BAAAA,IAACD,aAAAA,MAAM,MAAN,EACC,UAAAW,2BAAAA,KAACE,aAAAA,KAAK,MAAL,EAAU,SAAQ,UAAS,cAAa,SACvC,UAAA;AAAA,UAACF,2BAAAA,KAAAG,aAAAA,MAAA,EAAK,gBAAe,iBACnB,UAAA;AAAA,YAAAb,2BAAAA,IAACc,2BAAW,KAAI,MAAK,SAAQ,QAAO,IAAI,SACrC,UAAc,cAAA;AAAA,cACb,IAAIX,qBAAe,8BAA8B;AAAA,cACjD,gBAAgB;AAAA,YACjB,CAAA,GACH;AAAA,YACCO,2BAAA,KAAAE,aAAA,KAAK,MAAL,EAAU,mBAAiB,SAC1B,UAAA;AAAA,cAAAZ,2BAAA,IAACY,aAAK,KAAA,SAAL,EAAa,OAAM,SACjB,UAAc,cAAA;AAAA,gBACb,IAAIT,qBAAe,6BAA6B;AAAA,gBAChD,gBAAgB;AAAA,cACjB,CAAA,GACH;AAAA,6CACCS,aAAK,KAAA,SAAL,EAAa,OAAM,YACjB,UAAc,cAAA;AAAA,gBACb,IAAIT,qBAAe,iCAAiC;AAAA,gBACpD,gBAAgB;AAAA,cAAA,CACjB,EACH,CAAA;AAAA,YAAA,EACF,CAAA;AAAA,UAAA,GACF;AAAA,yCAECY,aAAQ,SAAA,EAAA;AAAA,UAERL,2BAAA,KAAAM,aAAA,KAAA,EAAI,YAAY,GAAG,eAAe,GACjC,UAAA;AAAA,YAAAhB,2BAAAA,IAACY,kBAAK,SAAL,EAAa,OAAM,SAClB,UAAAZ,+BAAC,WAAS,CAAA,GACZ;AAAA,YACAA,+BAACY,aAAAA,KAAK,SAAL,EAAa,OAAM,YAClB,UAAAZ,2BAAA,IAAC,gBAAa,EAChB,CAAA;AAAA,UAAA,EACF,CAAA;AAAA,QAAA,EAAA,CACF,EACF,CAAA;AAAA,QACAU,2BAAAA,KAACX,aAAM,MAAA,QAAN,EACC,UAAA;AAAA,UAAAC,2BAAA,IAACD,aAAM,MAAA,OAAN,EACC,UAAAC,+BAACC,aAAAA,UAAO,SAAQ,YACb,UAAc,cAAA,EAAE,IAAI,gCAAgC,gBAAgB,SAAU,CAAA,EACjF,CAAA,GACF;AAAA,yCACC,cAAa,CAAA,CAAA;AAAA,QAAA,EAChB,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAMA,MAAM,eAAe,MAAM;AACnB,QAAA,EAAE,cAAc,IAAIJ,kBAAQ;AAClC,QAAM,eAAeoB,YAAAA,QAAQ,gBAAgB,CAAC,UAAU,MAAM,YAAY;AAC1E,QAAM,WAAWA,YAAAA,QAAQ,gBAAgB,CAAC,UAAU,MAAM,QAAQ;AAElE,wCACGhB,qBAAO,EAAA,MAAK,UAAS,WAAWD,2BAAA,IAACkB,eAAM,GAAI,UAAU,gBAAgB,CAAC,UACpE,wBAAc,EAAE,IAAI,eAAe,gBAAgB,OAAQ,CAAA,GAC9D;AAEJ;AAUA,MAAM,WAAW,CAAC,EAAE,OAAO,eAA8B;AACjD,QAAA,EAAE,cAAc,IAAIrB,kBAAQ;AAC5B,QAAA,EAAE,mBAAmB,IAAIS,4BAAgB;AAC/C,QAAM,EAAE,yBAAyB,eAAe,IAAIC,+BAAmB;AAEvE,QAAM,EAAE,MAAM,gBAAgB,MAAA,IAAUY,MAAAA,0BAA0B;AAElErB,mBAAM,UAAU,MAAM;AACpB,QAAI,OAAO;AACU,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,eAAe,KAAK;AAAA,MAAA,CAC9B;AAAA,IAAA;AAAA,EAEF,GAAA,CAAC,OAAO,gBAAgB,kBAAkB,CAAC;AAE9C,MAAI,CAAC,MAAM,QAAQ,cAAc,GAAG;AAC3B,WAAA;AAAA,EAAA;AAGT,QAAM,UAAU,eAAe,IAAI,CAAC,YAAY;AAAA,IAC9C,OAAO,OAAO;AAAA,IACd,OAAO,OAAO;AAAA,EAAA,EACd;AAEF,QAAM,iBAAiB;AAAA,IACrB;AAAA,MACE,UAAU,SAAS;AAAA,MACnB,OAAO;AAAA,QACL,IAAIK,qBAAe,0CAA0C;AAAA,QAC7D,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,aAAa;AAAA,QACX,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,MACA,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,MAAM;AAAA,QACJ,IAAIA,qBAAe,sDAAsD;AAAA,QACzE,gBAAgB;AAAA,MAClB;AAAA,MACA,OAAO;AAAA,QACL,IAAIA,qBAAe,0CAA0C;AAAA,QAC7D,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,IAAA;AAAA,EACR,EACA,IAAI,CAAC,WAAW;AAAA,IAChB,GAAG;AAAA,IACH,MAAM,MAAM,OAAO,cAAc,MAAM,IAAI,IAAI;AAAA,IAC/C,OAAO,cAAc,MAAM,KAAK;AAAA,IAChC,aAAa,MAAM,cAAc,cAAc,MAAM,WAAW,IAAI;AAAA,EAAA,EACpE;AAEF,SACGH,2BAAAA,IAAAoB,aAAAA,KAAK,MAAL,EAAU,KAAK,GACb,UAAA,eAAe,IAAI,CAAC,EAAE,MAAM,GAAG,MAAA,MAC7BpB,2BAAAA,IAAAoB,aAAAA,KAAK,MAAL,EAA2B,KAAK,MAAM,WAAU,UAAS,YAAW,WACnE,UAAApB,2BAAA,IAAC,cAAc,EAAA,GAAG,MAAO,CAAA,EAAA,GADX,MAAM,IAEtB,CACD,GACH;AAEJ;AAUA,MAAM,eAAe,CAAC,EAAE,sBAAyC;AACzD,QAAA,EAAE,cAAc,IAAIH,kBAAQ;AAElC,QAAM,OAAO;AAAA,IACX;AAAA,MACE,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,IAAIM,qBAAe,mDAAmD;AAAA,QACtE,gBAAgB;AAAA,MAClB;AAAA,MACA,OAAO;AAAA,QACL,IAAIA,qBAAe,8CAA8C;AAAA,QACjE,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IAAA;AAAA,EACR,EACA,IAAI,CAAC,WAAW;AAAA,IAChB,GAAG;AAAA,IACH,MAAM,MAAM,OAAO,cAAc,MAAM,IAAI,IAAI;AAAA,IAC/C,OAAO,cAAc,MAAM,KAAK;AAAA,EAAA,EAChC;AAEF,SACGH,2BAAAA,IAAAoB,aAAAA,KAAK,MAAL,EAAU,KAAK,GACb,UAAA,KAAK,IAAI,CAAC,EAAE,MAAM,GAAG,MAAA,MACnBpB,2BAAAA,IAAAoB,aAAAA,KAAK,MAAL,EAA2B,KAAK,MAAM,WAAU,UAAS,YAAW,WACnE,UAAApB,2BAAA,IAAC,cAAc,EAAA,GAAG,MAAO,CAAA,EAAA,GADX,MAAM,IAEtB,CACD,GACH;AAEJ;AAMA,MAAM,eAAe,CAAC,UAAsB;AAC1C,UAAQ,MAAM,MAAM;AAAA,IAKlB,KAAK;AACI,aAAAA,+BAAC,kBAAkB,EAAA,GAAG,MAAO,CAAA;AAAA,IACtC;AACS,aAAAA,+BAACqB,YAAAA,eAAe,EAAA,GAAG,MAAO,CAAA;AAAA,EAAA;AAEvC;AAEA,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAoD;AAClD,QAAM,EAAE,OAAO,OAAO,SAAS,IAAIC,YAAAA,SAAS,IAAI;AAChD,QAAM,EAAE,MAAM,iBAAiB,CAAC,EAAA,IAAMH,MAAAA,0BAA0B;AAE1D,QAAA,eAAe,CAACI,WAAkB;AAClC,QAAA,MAAM,QAAQ,cAAc,GAAG;AAEjC,YAAM,SAAS,eAAe,KAAK,CAACC,YAAWA,QAAO,SAASD,MAAK;AAEpE,eAAS,MAAMA,MAAK;AAEX,eAAA,QAAQ,OAAO,IAAI;AAAA,IAAA,OACvB;AACL,eAAS,MAAMA,MAAK;AAAA,IAAA;AAAA,EAExB;AAEA,yCACGE,aAAM,MAAA,MAAN,EAAW,OAAc,MAAY,MAAY,UAChD,UAAA;AAAA,IAACzB,2BAAAA,IAAAyB,aAAAA,MAAM,OAAN,EAAa,UAAM,MAAA,CAAA;AAAA,IACpBzB,2BAAA;AAAA,MAAC0B,aAAA;AAAA,MAAA;AAAA,QACC;AAAA,QAEA,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QAEC,UAAQ,QAAA,IAAI,CAAC,WACX1B,2BAAAA,IAAA2B,aAAAA,oBAAA,EAAmB,OAAO,OAAO,OAC/B,UAAA,OAAO,MADoC,GAAA,OAAO,KAErD,CACD;AAAA,MAAA;AAAA,IACH;AAAA,IACA3B,+BAACyB,aAAAA,MAAM,OAAN,EAAY;AAAA,IACbzB,+BAACyB,aAAAA,MAAM,MAAN,CAAW,CAAA;AAAA,EAAA,GACd;AAEJ;AChZA,MAAM,eAAe,CAAC,EAAE,IAAI,WAA8B;AAClD,QAAA,EAAE,cAAc,IAAI5B,kBAAQ;AAC5B,QAAA,EAAE,mBAAmB,IAAIS,4BAAgB;AAC/C,QAAM,EAAE,yBAAyB,eAAe,IAAIC,+BAAmB;AAEvE,QAAM,CAAC,SAAS,UAAU,IAAIT,iBAAM,SAAS,KAAK;AAE5C,QAAA,CAAC,YAAY,IAAI8B,8BAAwB;AAC/C,QAAM,gBAAgB,YAAY;AAC5B,QAAA;AACI,YAAA,MAAM,MAAM,aAAa,EAAE;AAEjC,UAAI,WAAW,KAAK;AACC,2BAAA,EAAE,MAAM,UAAU,SAAS,eAAe,IAAI,KAAK,GAAG;AAEzE;AAAA,MAAA;AAGiB,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAIzB,qBAAe,uCAAuC;AAAA,UAC1D,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AAED,iBAAW,KAAK;AAAA,aACT,KAAK;AACO,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AAAA,IAAA;AAAA,EAEL;AAEA,yCACG0B,aAAO,OAAA,MAAP,EAAY,MAAM,SAAS,cAAc,YACxC,UAAA;AAAA,IAAC7B,2BAAAA,IAAA6B,aAAA,OAAO,SAAP,EACC,UAAA7B,2BAAA;AAAA,MAAC8B,aAAA;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,WAAW,IAAI;AAAA,QAC9B,OAAO;AAAA,UACL;AAAA,YACE,IAAI3B,qBAAe,8BAA8B;AAAA,YACjD,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE;AAAA,UAAA;AAAA,QAEJ;AAAA,QACA,SAAQ;AAAA,QAER,yCAAC4B,MAAAA,OAAM,CAAA,CAAA;AAAA,MAAA;AAAA,IAAA,GAEX;AAAA,IACA/B,2BAAAA,IAACgC,YAAc,eAAA,EAAA,WAAW,cAAe,CAAA;AAAA,EAAA,GAC3C;AAEJ;AC1CA,MAAM,aAAa,CAAC,UAA2B;AACvC,QAAA,EAAE,cAAc,IAAInC,kBAAQ;AAClC,QAAM,CAAC,SAAS,UAAU,IAAIC,iBAAM,SAAS,KAAK;AAElD,SAEIY,2BAAA,KAAAuB,qBAAA,EAAA,UAAA;AAAA,IAAAjC,2BAAA;AAAA,MAAC8B,aAAA;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,WAAW,IAAI;AAAA,QAC9B,OAAO;AAAA,UACL;AAAA,YACE,IAAI3B,qBAAe,4BAA4B;AAAA,YAC/C,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,MAAM,MAAM;AAAA,UAAA;AAAA,QAEhB;AAAA,QACA,SAAQ;AAAA,QAER,yCAAC+B,MAAAA,QAAO,CAAA,CAAA;AAAA,MAAA;AAAA,IACV;AAAA,mCACC,WAAW,EAAA,GAAG,OAAO,MAAM,SAAS,cAAc,WAAY,CAAA;AAAA,EAAA,GACjE;AAEJ;AAiBA,MAAM,YAAY,CAAC,EAAE,IAAI,MAAM,WAAW,MAAM,MAAM,mBAAmC;AACjF,QAAA,EAAE,mBAAmB,IAAI5B,4BAAgB;AACzC,QAAA;AAAA,IACJ,yBAAyB;AAAA,IACzB,iCAAiC;AAAA,MAC/BC,+BAAmB;AACvB,QAAM,qBAAqBE,YAAAA,QAAQ,aAAa,CAAC,UAAU,MAAM,kBAAkB;AAC7E,QAAA,EAAE,cAAc,IAAIZ,kBAAQ;AAClC,QAAM,UAAUQ,aAAAA,MAAM;AAEhB,QAAA,CAAC,YAAY,IAAI8B,8BAAwB;AACzC,QAAA,eAAe,OACnB,EAAE,MAAM,OAAO,GAAG,QAClB,YACG;AACC,QAAA;AAKI,YAAA,MAAM,MAAM,aAAa;AAAA,QAC7B;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAED,UAAI,WAAW,KAAK;AAClB,YAAI,iBAAiB,IAAI,KAAK,KAAK,IAAI,MAAM,SAAS,mBAAmB;AACvE,kBAAQ,UAAU,uBAAuB,IAAI,KAAK,CAAC;AAAA,QAAA,OAC9C;AACc,6BAAA,EAAE,MAAM,UAAU,SAAS,eAAe,IAAI,KAAK,GAAG;AAAA,QAAA;AAG3E;AAAA,MAAA;AAGiB,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAIhC,qBAAe,qCAAqC;AAAA,UACxD,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AAEkB,yBAAA;AACnB,mBAAa,KAAK;AAAA,aACX,KAAK;AACO,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AAAA,IAAA;AAAA,EAEL;AAGE,SAAAH,+BAACD,aAAAA,MAAM,MAAN,EAAW,MAAY,cACtB,UAAAC,2BAAA,IAACD,aAAM,MAAA,SAAN,EACC,UAAAW,2BAAA;AAAA,IAACC,YAAA;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,UAAU;AAAA,MACV,eAAe;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,kBAAkB;AAAA,MAElB,UAAA;AAAA,QAAAX,+BAACD,aAAAA,MAAM,QAAN,EACC,UAACC,2BAAA,IAAAD,mBAAM,OAAN,EACE,UAAA;AAAA,UACC;AAAA,YACE,IAAII,qBAAe,4BAA4B;AAAA,YAC/C,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE;AAAA,UAAA;AAAA,WAGN,EACF,CAAA;AAAA,QACAH,2BAAAA,IAACD,aAAAA,MAAM,MAAN,EACC,UAAAW,2BAAAA,KAACE,aAAAA,KAAK,MAAL,EAAU,SAAQ,UAAS,cAAa,SACvC,UAAA;AAAA,UAACF,2BAAAA,KAAAG,aAAAA,MAAA,EAAK,gBAAe,iBACnB,UAAA;AAAA,YAAAb,2BAAAA,IAACc,2BAAW,KAAI,MAAK,SAAQ,QAAO,IAAI,SACrC,UAAc,cAAA;AAAA,cACb,IAAIX,qBAAe,8BAA8B;AAAA,cACjD,gBAAgB;AAAA,YACjB,CAAA,GACH;AAAA,YACCO,2BAAA,KAAAE,aAAA,KAAK,MAAL,EAAU,mBAAiB,SAC1B,UAAA;AAAA,cAAAZ,2BAAA,IAACY,aAAK,KAAA,SAAL,EAAa,OAAM,SACjB,UAAc,cAAA;AAAA,gBACb,IAAIT,qBAAe,6BAA6B;AAAA,gBAChD,gBAAgB;AAAA,cACjB,CAAA,GACH;AAAA,6CACCS,aAAK,KAAA,SAAL,EAAa,OAAM,YACjB,UAAc,cAAA;AAAA,gBACb,IAAIT,qBAAe,iCAAiC;AAAA,gBACpD,gBAAgB;AAAA,cAAA,CACjB,EACH,CAAA;AAAA,YAAA,EACF,CAAA;AAAA,UAAA,GACF;AAAA,yCACCY,aAAQ,SAAA,EAAA;AAAA,UACRL,2BAAA,KAAAM,aAAA,KAAA,EAAI,YAAY,GAAG,eAAe,GACjC,UAAA;AAAA,YAAChB,2BAAAA,IAAAY,aAAAA,KAAK,SAAL,EAAa,OAAM,SAClB,UAACZ,2BAAA,IAAA,UAAA,EAAS,MAAK,OAAA,CAAO,EACxB,CAAA;AAAA,YACAA,2BAAAA,IAACY,aAAK,KAAA,SAAL,EAAa,OAAM,YAClB,UAACZ,2BAAAA,IAAA,cAAA,EAAa,iBAAiB,UAAW,CAAA,EAC5C,CAAA;AAAA,UAAA,EACF,CAAA;AAAA,QAAA,EAAA,CACF,EACF,CAAA;AAAA,QACAU,2BAAAA,KAACX,aAAM,MAAA,QAAN,EACC,UAAA;AAAA,UAAAC,2BAAA,IAACD,aAAM,MAAA,OAAN,EACC,UAAAC,+BAACC,aAAAA,UAAO,SAAQ,YACb,UAAc,cAAA,EAAE,IAAI,gCAAgC,gBAAgB,SAAU,CAAA,EACjF,CAAA,GACF;AAAA,yCACC,cAAa,CAAA,CAAA;AAAA,QAAA,EAChB,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,KAEJ,EACF,CAAA;AAEJ;AC5KA,MAAM,cAAc,CAAC,EAAE,UAAU,CAAI,GAAA,WAAW,gBAAkC;AAChF,QAAM,CAAC,cAAc,eAAe,IAAIH,iBAAM,SAAuB;AAC/D,QAAA,EAAE,cAAc,IAAID,kBAAQ;AAE5B,QAAA,cAAc,CAAC,aAA2B,MAAM;AACpD,QAAI,WAAW;AACb,sBAAgB,QAAQ;AAAA,IAAA;AAAA,EAE5B;AAEA,yCACGuC,oBAAM,EAAA,UAAU,GAAG,UAAU,QAAQ,SAAS,GAC7C,UAAA;AAAA,IAACpC,2BAAA,IAAAqC,aAAA,OAAA,EACC,0CAACC,aAAAA,IACC,EAAA,UAAA;AAAA,MAAAtC,2BAAAA,IAACuC,mBACC,UAACvC,2BAAA,IAAAc,aAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,QACb,IAAIX,qBAAe,yBAAyB;AAAA,QAC5C,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,MACAH,2BAAAA,IAACuC,mBACC,UAACvC,2BAAA,IAAAc,aAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,QACb,IAAIX,qBAAe,kCAAkC;AAAA,QACrD,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,MACAH,2BAAAA,IAACuC,mBACC,UAACvC,2BAAA,IAAAc,aAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,QACb,IAAIX,qBAAe,qCAAqC;AAAA,QACxD,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,MACCH,+BAAAuC,aAAAA,IAAA,EACC,UAACvC,2BAAAA,IAAAwC,aAAAA,gBAAA,EAAe,qBAAO,EACzB,CAAA;AAAA,IAAA,EAAA,CACF,EACF,CAAA;AAAA,IACAxC,2BAAAA,IAACyC,sBACE,UAAQ,QAAA,IAAI,CAAC,WACZ/B,gCAACZ,iBAAM,UAAN,EACC,UAAA;AAAA,MAAAY,2BAAA;AAAA,QAAC4B,aAAA;AAAA,QAAA;AAAA,UACC,SAAS,YAAY,OAAO,EAAE;AAAA,UAC9B,OAAO,EAAE,QAAQ,YAAY,YAAY,UAAU;AAAA,UAEnD,UAAA;AAAA,YAAAtC,2BAAAA,IAAC0C,aAAAA,MACC,UAAC1C,2BAAAA,IAAAc,aAAAA,YAAA,EAAW,WAAU,cAAc,UAAA,OAAO,IAAG,EAChD,CAAA;AAAA,YACAd,2BAAAA,IAAC0C,aAAAA,MACC,UAAC1C,2BAAAA,IAAAc,aAAAA,YAAA,EAAW,WAAU,cAAc,UAAA,OAAO,MAAK,EAClD,CAAA;AAAA,YACAd,2BAAAA,IAAC0C,mBACC,UAAC1C,2BAAA,IAAAc,aAAA,YAAA,EAAW,WAAU,cACnB,UAAA,OAAO,YACJ,cAAc;AAAA,cACZ,IAAIX,qBAAe,0BAA0B;AAAA,cAC7C,gBAAgB;AAAA,YAAA,CACjB,IACD,KACN,CAAA,GACF;AAAA,YACCH,2BAAA,IAAA0C,aAAA,IAAA,EACC,UAAChC,2BAAAA,KAAAG,aAAAA,MAAA,EAAK,KAAK,GAAG,gBAAe,YAAW,SAAS,CAAC,MAAM,EAAE,gBACvD,GAAA,UAAA;AAAA,cAAa,aAAAb,2BAAAA,IAAC,YAAY,EAAA,GAAG,OAAQ,CAAA;AAAA,cACrC,aAAa,CAAC,OAAO,aAAcA,2BAAA,IAAA,cAAA,EAAc,GAAG,OAAQ,CAAA;AAAA,YAAA,EAAA,CAC/D,EACF,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,MACAA,2BAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ,cAAc,MAAM,gBAAgB,MAAS;AAAA,UAC7C,MAAM,iBAAiB,OAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IAChC,KAhCmB,OAAO,EAiC5B,CACD,EACH,CAAA;AAAA,EAAA,GACF;AAEJ;AClGA,MAAM,eAAe,MAAM;AACnB,QAAA,EAAE,cAAc,IAAIH,kBAAQ;AAC5B,QAAA,EAAE,mBAAmB,IAAIS,4BAAgB;AAC/C,QAAM,EAAE,yBAAyB,eAAe,IAAIC,+BAAmB;AACvE,QAAM,EAAE,MAAM,SAAS,WAAW,kBAAkB,UAAUoC,yBAAmB;AAC3E,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,WAAW,WAAW,UAAU;AAAA,EAAA,IAChDC,YAAAA,QAAQC,MAAAA,WAAW;AAEvB/C,mBAAM,UAAU,MAAM;AACpB,QAAI,OAAO;AACU,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,eAAe,KAAK;AAAA,MAAA,CAC9B;AAAA,IAAA;AAAA,EAEF,GAAA,CAAC,OAAO,gBAAgB,kBAAkB,CAAC;AAE9C,QAAM,YAAY,oBAAoB;AAEtC,MAAI,WAAW;AACN,WAAAE,+BAAC8C,YAAAA,KAAK,SAAL,EAAa;AAAA,EAAA;AAGvB,MAAI,SAAS,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC7B,WAAA9C,+BAAC8C,YAAAA,KAAK,OAAL,EAAW;AAAA,EAAA;AAGrB,SACGpC,2BAAAA,KAAAoC,YAAAA,KAAK,MAAL,EAAU,UAAU,IACnB,UAAA;AAAA,IAAA9C,2BAAA;AAAA,MAAC+C,YAAAA,QAAQ;AAAA,MAAR;AAAA,QACC,eAAe/C,2BAAA,IAAC,cAAa,EAAA,UAAU,CAAC,UAAW,CAAA;AAAA,QACnD,OAAO,cAAc;AAAA,UACnB,IAAIG,qBAAe,aAAa;AAAA,UAChC,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD,UAAU,cAAc;AAAA,UACtB,IAAIA,qBAAe,2BAA2B;AAAA,UAC9C,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA;AAAA,IACH;AAAA,IACCH,2BAAA,IAAA+C,YAAA,QAAQ,SAAR,EACE,UAAQ,QAAA,SAAS,IAChB/C,2BAAAA,IAAC,aAAY,EAAA,SAAkB,WAAsB,UAAA,CAAsB,IAE3EA,2BAAA;AAAA,MAACgD,aAAA;AAAA,MAAA;AAAA,QACC,MAAOhD,2BAAAA,IAAAiD,QAAAA,gBAAA,EAAe,OAAO,QAAW,QAAQ,QAAW;AAAA,QAC3D,SAAS,cAAc;AAAA,UACrB,IAAI9C,qBAAe,2BAA2B;AAAA,UAC9C,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD,QAASH,2BAAA,IAAA,cAAA,EAAa,UAAU,CAAC,WAAW,SAAQ,YAAY,CAAA;AAAA,MAAA;AAAA,IAAA,EAGtE,CAAA;AAAA,EAAA,GACF;AAEJ;AAEA,MAAM,wBAAwB,MAAM;AAEhC,SAAAA,+BAAC8C,YAAAA,KAAK,SAAL,EAAa,aAAaD,MAAAA,YAAY,MACrC,UAAC7C,2BAAA,IAAA,cAAA,CAAA,CAAa,EAChB,CAAA;AAEJ;;;"}
|
@@ -56,11 +56,10 @@ const de = {
|
|
56
56
|
"plugin.description.long": "Dieses Plugin ermöglicht es, Inhalte in verschiedenen Sprachen zu erstellen, zu lesen und zu aktualisieren, sowohl über das Admin-Panel als auch über die API",
|
57
57
|
"plugin.description.short": "Dieses Plugin ermöglicht es, Inhalte in verschiedenen Sprachen zu erstellen, zu lesen und zu aktualisieren, sowohl über das Admin-Panel als auch über die API",
|
58
58
|
"plugin.name": "Internationalisierung",
|
59
|
-
"plugin.schema.i18n.ensure-unique-localization": "Einzigartige Felder müssen lokalisiert sein",
|
60
59
|
"plugin.schema.i18n.localized.description-content-type": "Ermöglicht es Inhalte in verschiedenen Sprachen zu pflegen",
|
61
60
|
"plugin.schema.i18n.localized.description-field": "Das Feld kann verschiedene Werte in jeder Sprache haben",
|
62
61
|
"plugin.schema.i18n.localized.label-content-type": "Übersetzungen",
|
63
62
|
"plugin.schema.i18n.localized.label-field": "Übersetzungen für dieses Feld aktivieren"
|
64
63
|
};
|
65
64
|
exports.default = de;
|
66
|
-
//# sourceMappingURL=de-
|
65
|
+
//# sourceMappingURL=de-BOhNX_-5.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"de-BOhNX_-5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -54,7 +54,6 @@ const de = {
|
|
54
54
|
"plugin.description.long": "Dieses Plugin ermöglicht es, Inhalte in verschiedenen Sprachen zu erstellen, zu lesen und zu aktualisieren, sowohl über das Admin-Panel als auch über die API",
|
55
55
|
"plugin.description.short": "Dieses Plugin ermöglicht es, Inhalte in verschiedenen Sprachen zu erstellen, zu lesen und zu aktualisieren, sowohl über das Admin-Panel als auch über die API",
|
56
56
|
"plugin.name": "Internationalisierung",
|
57
|
-
"plugin.schema.i18n.ensure-unique-localization": "Einzigartige Felder müssen lokalisiert sein",
|
58
57
|
"plugin.schema.i18n.localized.description-content-type": "Ermöglicht es Inhalte in verschiedenen Sprachen zu pflegen",
|
59
58
|
"plugin.schema.i18n.localized.description-field": "Das Feld kann verschiedene Werte in jeder Sprache haben",
|
60
59
|
"plugin.schema.i18n.localized.label-content-type": "Übersetzungen",
|
@@ -63,4 +62,4 @@ const de = {
|
|
63
62
|
export {
|
64
63
|
de as default
|
65
64
|
};
|
66
|
-
//# sourceMappingURL=de-
|
65
|
+
//# sourceMappingURL=de-D80IRBP9.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"de-D80IRBP9.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -54,7 +54,6 @@ const dk = {
|
|
54
54
|
"plugin.description.long": "Dette plugin gør det muligt at oprette, læse og redigere indhold på forskellige sprog, både fra admin panelt og igennem API.",
|
55
55
|
"plugin.description.short": "Dette plugin gør det muligt at oprette, læse og redigere indhold på forskellige sprog, både fra admin panelt og igennem API.",
|
56
56
|
"plugin.name": "Internationalisering",
|
57
|
-
"plugin.schema.i18n.ensure-unique-localization": "Unikke felter skal udfyldes for alle sprogvarianter",
|
58
57
|
"plugin.schema.i18n.localized.description-content-type": "Muliggør indhold på forskellige sprog",
|
59
58
|
"plugin.schema.i18n.localized.description-field": "Feltet kan have forskellige værdier for hver sprogvariant",
|
60
59
|
"plugin.schema.i18n.localized.label-content-type": "Aktivér sprogvarianter for denne indholdstype",
|
@@ -63,4 +62,4 @@ const dk = {
|
|
63
62
|
export {
|
64
63
|
dk as default
|
65
64
|
};
|
66
|
-
//# sourceMappingURL=dk-
|
65
|
+
//# sourceMappingURL=dk-CJ6Zzz78.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dk-CJ6Zzz78.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -56,11 +56,10 @@ const dk = {
|
|
56
56
|
"plugin.description.long": "Dette plugin gør det muligt at oprette, læse og redigere indhold på forskellige sprog, både fra admin panelt og igennem API.",
|
57
57
|
"plugin.description.short": "Dette plugin gør det muligt at oprette, læse og redigere indhold på forskellige sprog, både fra admin panelt og igennem API.",
|
58
58
|
"plugin.name": "Internationalisering",
|
59
|
-
"plugin.schema.i18n.ensure-unique-localization": "Unikke felter skal udfyldes for alle sprogvarianter",
|
60
59
|
"plugin.schema.i18n.localized.description-content-type": "Muliggør indhold på forskellige sprog",
|
61
60
|
"plugin.schema.i18n.localized.description-field": "Feltet kan have forskellige værdier for hver sprogvariant",
|
62
61
|
"plugin.schema.i18n.localized.label-content-type": "Aktivér sprogvarianter for denne indholdstype",
|
63
62
|
"plugin.schema.i18n.localized.label-field": "Aktivér sprogvarianter for dette felt"
|
64
63
|
};
|
65
64
|
exports.default = dk;
|
66
|
-
//# sourceMappingURL=dk-
|
65
|
+
//# sourceMappingURL=dk-cjXm0p3m.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dk-cjXm0p3m.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|