@mattisvensson/strapi-plugin-webatlas 0.11.0 → 0.11.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 (52) hide show
  1. package/README.md +14 -8
  2. package/dist/admin/{FullLoader-CrPED_dY.mjs → FullLoader-Btjb2W2p.mjs} +5 -2
  3. package/dist/admin/FullLoader-Btjb2W2p.mjs.map +1 -0
  4. package/dist/admin/{FullLoader-Cmsf8xS6.js → FullLoader-Da2n70bJ.js} +5 -2
  5. package/dist/admin/FullLoader-Da2n70bJ.js.map +1 -0
  6. package/dist/admin/{SettingTitle-BjE_2u6R.js → SettingTitle-B0quw3f8.js} +6 -3
  7. package/dist/admin/SettingTitle-B0quw3f8.js.map +1 -0
  8. package/dist/admin/{SettingTitle-B1IaU3qs.mjs → SettingTitle-HMfQOJnK.mjs} +6 -3
  9. package/dist/admin/SettingTitle-HMfQOJnK.mjs.map +1 -0
  10. package/dist/admin/{index-Cf9j0bn2.mjs → index-9_HhKDUC.mjs} +32 -59
  11. package/dist/admin/index-9_HhKDUC.mjs.map +1 -0
  12. package/dist/admin/{index-DCYCtKrj.mjs → index-B79ELMEC.mjs} +221 -215
  13. package/dist/admin/index-B79ELMEC.mjs.map +1 -0
  14. package/dist/admin/{index-JLpXBQVL.js → index-BEVoxEAm.js} +32 -59
  15. package/dist/admin/index-BEVoxEAm.js.map +1 -0
  16. package/dist/admin/index-Bmg-ERct.mjs +244 -0
  17. package/dist/admin/index-Bmg-ERct.mjs.map +1 -0
  18. package/dist/admin/{index-AVI3QJ0R.js → index-C8YjuuOx.js} +497 -354
  19. package/dist/admin/index-C8YjuuOx.js.map +1 -0
  20. package/dist/admin/{index-Yq-QR8t0.js → index-Cx_mktdk.js} +221 -215
  21. package/dist/admin/index-Cx_mktdk.js.map +1 -0
  22. package/dist/admin/{index-BbnlyBrZ.mjs → index-Cz_k_jjp.mjs} +42 -31
  23. package/dist/admin/index-Cz_k_jjp.mjs.map +1 -0
  24. package/dist/admin/{index-D8bG0YFB.js → index-D2hB1vTw.js} +42 -31
  25. package/dist/admin/index-D2hB1vTw.js.map +1 -0
  26. package/dist/admin/index-YdWxpvOH.js +244 -0
  27. package/dist/admin/index-YdWxpvOH.js.map +1 -0
  28. package/dist/admin/{index-BIEUXWe7.mjs → index-oEJT_mvw.mjs} +497 -354
  29. package/dist/admin/index-oEJT_mvw.mjs.map +1 -0
  30. package/dist/admin/index.js +1 -1
  31. package/dist/admin/index.mjs +1 -1
  32. package/dist/server/index.js +273 -214
  33. package/dist/server/index.js.map +1 -1
  34. package/dist/server/index.mjs +273 -214
  35. package/dist/server/index.mjs.map +1 -1
  36. package/package.json +108 -108
  37. package/dist/admin/FullLoader-Cmsf8xS6.js.map +0 -1
  38. package/dist/admin/FullLoader-CrPED_dY.mjs.map +0 -1
  39. package/dist/admin/SettingTitle-B1IaU3qs.mjs.map +0 -1
  40. package/dist/admin/SettingTitle-BjE_2u6R.js.map +0 -1
  41. package/dist/admin/index-AVI3QJ0R.js.map +0 -1
  42. package/dist/admin/index-B90eSO4a.js +0 -219
  43. package/dist/admin/index-B90eSO4a.js.map +0 -1
  44. package/dist/admin/index-BIEUXWe7.mjs.map +0 -1
  45. package/dist/admin/index-BbnlyBrZ.mjs.map +0 -1
  46. package/dist/admin/index-Cf9j0bn2.mjs.map +0 -1
  47. package/dist/admin/index-D8bG0YFB.js.map +0 -1
  48. package/dist/admin/index-DCYCtKrj.mjs.map +0 -1
  49. package/dist/admin/index-JLpXBQVL.js.map +0 -1
  50. package/dist/admin/index-Y_PYIiRA.mjs +0 -219
  51. package/dist/admin/index-Y_PYIiRA.mjs.map +0 -1
  52. package/dist/admin/index-Yq-QR8t0.js.map +0 -1
@@ -1,219 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- const designSystem = require("@strapi/design-system");
6
- const admin = require("@strapi/strapi/admin");
7
- const index = require("./index-Yq-QR8t0.js");
8
- const reactIntl = require("react-intl");
9
- require("@strapi/icons/symbols");
10
- const FullLoader = require("./FullLoader-Cmsf8xS6.js");
11
- const SettingTitle = require("./SettingTitle-BjE_2u6R.js");
12
- const icons = require("@strapi/icons");
13
- function ContentTypeAccordion({
14
- contentType,
15
- contentTypeSettings,
16
- dispatch
17
- }) {
18
- const { formatMessage } = reactIntl.useIntl();
19
- if (!contentType) return null;
20
- return /* @__PURE__ */ jsxRuntime.jsx(
21
- designSystem.Box,
22
- {
23
- borderColor: !contentTypeSettings.default ? "danger500" : void 0,
24
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: contentType.uid, children: [
25
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Trigger, { children: contentType?.info.displayName }) }),
26
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(
27
- designSystem.Field.Root,
28
- {
29
- name: "selectedContentTypes",
30
- hint: formatMessage({
31
- id: index.getTranslation("settings.page.generate.hint"),
32
- defaultMessage: 'The selected field from the content type will be used to generate the path. Use a field that is unique and descriptive, such as a "title" or "name".'
33
- }),
34
- error: !contentTypeSettings.default && formatMessage({
35
- id: index.getTranslation("settings.page.generate.error"),
36
- defaultMessage: "Please select a default field"
37
- }),
38
- required: true,
39
- children: [
40
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
41
- id: index.getTranslation("settings.page.generate"),
42
- defaultMessage: "Generate paths from"
43
- }) }),
44
- /* @__PURE__ */ jsxRuntime.jsx(
45
- designSystem.SingleSelect,
46
- {
47
- name: `defaultField-${contentType.uid}`,
48
- onClear: () => dispatch({ type: "SET_DEFAULT_FIELD", payload: { ctUid: contentType.uid, field: "" } }),
49
- value: contentTypeSettings?.default || "",
50
- onChange: (value) => dispatch({ type: "SET_DEFAULT_FIELD", payload: { ctUid: contentType.uid, field: String(value) } }),
51
- children: Object.entries(contentType.attributes).map(([key], index2) => {
52
- if (key === "id" || key === "documentId" || key === "createdAt" || key === "updatedAt" || key === "createdBy" || key === "updatedBy" || key === "webatlas_path" || key === "webatlas_override" || key === "webatlas_parent") return null;
53
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: key, children: key }, index2);
54
- })
55
- }
56
- ),
57
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
58
- ]
59
- }
60
- ) }) })
61
- ] }, contentType.uid)
62
- },
63
- contentType.uid
64
- );
65
- }
66
- function reducer(newConfig, action) {
67
- let updatedContentTypes;
68
- switch (action.type) {
69
- case "SET_DEFAULT_FIELD":
70
- if (!newConfig) return null;
71
- updatedContentTypes = newConfig?.selectedContentTypes.map(
72
- (ct) => ct.uid === action.payload.ctUid ? { ...ct, default: action.payload.field } : ct
73
- );
74
- return { ...newConfig, selectedContentTypes: updatedContentTypes || [] };
75
- case "SET_CONFIG":
76
- return action.payload;
77
- default:
78
- throw new Error();
79
- }
80
- }
81
- const Settings = () => {
82
- const { config: fetchedConfig, setConfig, loading, fetchError } = index.usePluginConfig();
83
- const [config, dispatch] = React.useReducer(reducer, fetchedConfig);
84
- const { contentTypes: allContentTypesData } = index.useAllContentTypes();
85
- const allContentTypes = allContentTypesData?.filter((ct) => ct.pluginOptions?.webatlas?.enabled === true);
86
- const { toggleNotification } = admin.useNotification();
87
- const { formatMessage } = reactIntl.useIntl();
88
- const [isSaving, setIsSaving] = React.useState(false);
89
- const initialConfig = React.useRef(fetchedConfig);
90
- React.useEffect(() => {
91
- initialConfig.current = fetchedConfig;
92
- if (fetchedConfig)
93
- dispatch({ type: "SET_CONFIG", payload: fetchedConfig });
94
- }, [fetchedConfig]);
95
- React.useEffect(() => {
96
- if (fetchError) {
97
- toggleNotification({
98
- type: "danger",
99
- message: formatMessage({
100
- id: index.getTranslation("notification.error"),
101
- defaultMessage: "An error occurred"
102
- }) + ": " + fetchError
103
- });
104
- }
105
- }, [fetchError, toggleNotification, formatMessage]);
106
- async function save() {
107
- if (!config || config.selectedContentTypes.find((cta) => !cta.default) !== void 0) return;
108
- setIsSaving(true);
109
- try {
110
- await setConfig({ selectedContentTypes: config.selectedContentTypes });
111
- initialConfig.current = config;
112
- toggleNotification({
113
- type: "success",
114
- message: formatMessage({
115
- id: index.getTranslation("notification.settings.saved"),
116
- defaultMessage: "Settings saved successfully"
117
- })
118
- });
119
- setIsSaving(false);
120
- } catch (err) {
121
- setIsSaving(false);
122
- toggleNotification({
123
- type: "danger",
124
- message: formatMessage({
125
- id: index.getTranslation("notification.error"),
126
- defaultMessage: "An error occurred"
127
- }) + ": " + err
128
- });
129
- strapi.log.error(err);
130
- }
131
- }
132
- if (loading) {
133
- return /* @__PURE__ */ jsxRuntime.jsx(
134
- SettingTitle.PageWrapper,
135
- {
136
- isSaving,
137
- subtitle: formatMessage({
138
- id: index.getTranslation("loading"),
139
- defaultMessage: "Loading..."
140
- }),
141
- disabledCondition: true,
142
- children: /* @__PURE__ */ jsxRuntime.jsx(FullLoader.FullLoader, { height: 200 })
143
- }
144
- );
145
- }
146
- return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.pluginPermissions["settings.general"], children: /* @__PURE__ */ jsxRuntime.jsxs(
147
- SettingTitle.PageWrapper,
148
- {
149
- save,
150
- isSaving,
151
- subtitle: formatMessage({
152
- id: index.getTranslation("settings.page.general.subtitle"),
153
- defaultMessage: "Configure general settings"
154
- }),
155
- disabledCondition: JSON.stringify(config) === JSON.stringify(initialConfig.current),
156
- children: [
157
- /* @__PURE__ */ jsxRuntime.jsx(SettingTitle.ContentBox, { title: formatMessage({
158
- id: index.getTranslation("settings.page.general.contentTypes"),
159
- defaultMessage: "Content Types"
160
- }), children: config?.selectedContentTypes && config.selectedContentTypes.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "selectedContentTypesAccordion", children: [
161
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: /* @__PURE__ */ jsxRuntime.jsx(SettingTitle.SettingTitle, { children: formatMessage({
162
- id: index.getTranslation("settings.page.contentTypeSettings"),
163
- defaultMessage: "Content Type settings"
164
- }) }) }),
165
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Root, { children: config.selectedContentTypes?.map((contentTypeSettings) => {
166
- const ct = allContentTypes?.find((item) => item.uid === contentTypeSettings.uid);
167
- return /* @__PURE__ */ jsxRuntime.jsx(ContentTypeAccordion, { contentType: ct, contentTypeSettings, dispatch }, contentTypeSettings.uid);
168
- }) })
169
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { children: [
170
- formatMessage({
171
- id: index.getTranslation("settings.page.general.noContentTypesEnabled"),
172
- defaultMessage: "No content types are enabled for Webatlas. Please enable at least one content type to use this plugin."
173
- }),
174
- /* @__PURE__ */ jsxRuntime.jsx(
175
- designSystem.Link,
176
- {
177
- href: "https://github.com/mattisvensson/strapi-plugin-webatlas?tab=readme-ov-file#-configuration",
178
- isExternal: true,
179
- style: { marginLeft: 4 },
180
- children: formatMessage({
181
- id: index.getTranslation("settings.page.general.noContentTypesEnabled.moreInfo"),
182
- defaultMessage: "More info"
183
- })
184
- }
185
- )
186
- ] }) }),
187
- /* @__PURE__ */ jsxRuntime.jsx(SettingTitle.ContentBox, { title: formatMessage({
188
- id: index.getTranslation("settings.page.general.details"),
189
- defaultMessage: "Details"
190
- }), children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "selectedContentTypesAccordion", children: [
191
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: /* @__PURE__ */ jsxRuntime.jsxs(SettingTitle.SettingTitle, { children: [
192
- index.PLUGIN_NAME,
193
- " ",
194
- formatMessage({
195
- id: index.getTranslation("version"),
196
- defaultMessage: "Version"
197
- })
198
- ] }) }),
199
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { children: [
200
- "v",
201
- index.PLUGIN_VERSION,
202
- /* @__PURE__ */ jsxRuntime.jsx(
203
- designSystem.Link,
204
- {
205
- href: `https://github.com/mattisvensson/strapi-plugin-webatlas/releases/tag/v${index.PLUGIN_VERSION}`,
206
- target: "_blank",
207
- rel: "noopener noreferrer",
208
- style: { marginLeft: 4 },
209
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.ExternalLink, {})
210
- }
211
- )
212
- ] })
213
- ] }) })
214
- ]
215
- }
216
- ) });
217
- };
218
- exports.default = Settings;
219
- //# sourceMappingURL=index-B90eSO4a.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-B90eSO4a.js","sources":["../../admin/src/pages/Settings/General/ContentTypeAccordion.tsx","../../admin/src/pages/Settings/General/index.tsx"],"sourcesContent":["import { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { Box, Accordion, Field } from '@strapi/design-system';\nimport { getTranslation } from '../../../utils';\nimport { useIntl } from 'react-intl';\nimport type { ContentType, ConfigContentType } from '../../../../../types';\n\nexport default function ContentTypeAccordion({\n contentType,\n contentTypeSettings,\n dispatch\n}: {\n contentType: ContentType | undefined,\n contentTypeSettings: ConfigContentType,\n dispatch: React.Dispatch<any>\n}) {\n\n const { formatMessage } = useIntl();\n\n if (!contentType) return null\n\n return (\n <Box\n borderColor={!contentTypeSettings.default ? 'danger500' : undefined}\n key={contentType.uid}\n >\n <Accordion.Item key={contentType.uid} value={contentType.uid}>\n <Accordion.Header>\n <Accordion.Trigger>\n {contentType?.info.displayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={3}>\n <Field.Root\n name=\"selectedContentTypes\"\n hint={formatMessage({\n id: getTranslation('settings.page.generate.hint'),\n defaultMessage: 'The selected field from the content type will be used to generate the path. Use a field that is unique and descriptive, such as a \"title\" or \"name\".',\n })}\n error={!contentTypeSettings.default && formatMessage({\n id: getTranslation('settings.page.generate.error'),\n defaultMessage: 'Please select a default field',\n })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: getTranslation('settings.page.generate'),\n defaultMessage: 'Generate paths from',\n })}\n </Field.Label>\n <SingleSelect\n name={`defaultField-${contentType.uid}`}\n onClear={() => dispatch({ type: 'SET_DEFAULT_FIELD', payload: { ctUid: contentType.uid, field: '' } })}\n value={contentTypeSettings?.default || ''}\n onChange={(value: string | number) => dispatch({ type: 'SET_DEFAULT_FIELD', payload: { ctUid: contentType.uid, field: String(value) } })}\n >\n {Object.entries(contentType.attributes).map(([key], index) => {\n if (\n key === 'id' ||\n key === 'documentId' ||\n key === 'createdAt' ||\n key === 'updatedAt' ||\n key === 'createdBy' ||\n key === 'updatedBy' ||\n key === 'webatlas_path' ||\n key === 'webatlas_override' ||\n key === 'webatlas_parent'\n ) return null\n return <SingleSelectOption key={index} value={key}>{key}</SingleSelectOption>\n })}\n </SingleSelect>\n <Field.Hint/>\n </Field.Root>\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n </Box>\n\n )\n}\n","/*\n *\n * Settings\n * This file contains the general settings page for the Webatlas plugin.\n * It allows users to configure which content types are enabled for URL aliases and navigations,\n * as well as setting default fields for each content type.\n *\n*/\n\nimport type { ContentType, ConfigContentType, PluginConfig } from '../../../../../types';\nimport { useEffect, useState, useReducer, useRef } from 'react';\nimport { Box, Accordion, Field } from '@strapi/design-system';\nimport { useNotification, Page } from '@strapi/strapi/admin'\nimport usePluginConfig from '../../../hooks/usePluginConfig';\nimport useAllContentTypes from '../../../hooks/useAllContentTypes';\nimport { getTranslation } from '../../../utils';\nimport { useIntl } from 'react-intl';\nimport { FullLoader } from '../../../components/UI';\nimport { PageWrapper, ContentBox, SettingTitle } from '..';\nimport ContentTypeAccordion from './ContentTypeAccordion';\nimport { PLUGIN_VERSION, PLUGIN_NAME } from '../../../../../utils/pluginId';\nimport { Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system';\nimport { ExternalLink } from '@strapi/icons';\nimport pluginPermissions from '../../../permissions';\n\ntype Action =\n | { type: 'SET_DEFAULT_FIELD'; payload: { ctUid: string; field: string } }\n | { type: 'SET_CONFIG'; payload: PluginConfig }\n\nfunction reducer(newConfig: PluginConfig | null, action: Action): PluginConfig | null {\n let updatedContentTypes\n\n switch (action.type) {\n case 'SET_DEFAULT_FIELD':\n if (!newConfig) return null;\n updatedContentTypes = newConfig?.selectedContentTypes.map(ct =>\n ct.uid === action.payload.ctUid ? { ...ct, default: action.payload.field } : ct\n );\n return { ...newConfig, selectedContentTypes: updatedContentTypes || [] };\n case 'SET_CONFIG':\n return action.payload;\n default:\n throw new Error();\n }\n}\n\nconst Settings = () => {\n const { config: fetchedConfig, setConfig, loading, fetchError } = usePluginConfig();\n const [config, dispatch] = useReducer(reducer, fetchedConfig);\n const { contentTypes: allContentTypesData } = useAllContentTypes();\n const allContentTypes = allContentTypesData?.filter((ct: ContentType) => ct.pluginOptions?.webatlas?.enabled === true);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const [isSaving, setIsSaving] = useState(false);\n const initialConfig = useRef<PluginConfig | null>(fetchedConfig);\n\n useEffect(() => {\n initialConfig.current = fetchedConfig;\n\n if (fetchedConfig)\n dispatch({ type: 'SET_CONFIG', payload: fetchedConfig });\n }, [fetchedConfig]);\n\n useEffect(() => {\n if (fetchError) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('notification.error'),\n defaultMessage: 'An error occurred',\n }) + ': ' + fetchError,\n });\n }\n }, [fetchError, toggleNotification, formatMessage]);\n\n async function save() {\n if (\n !config\n || config.selectedContentTypes.find((cta: ConfigContentType) => !cta.default) !== undefined\n ) return\n\n setIsSaving(true);\n try {\n await setConfig({selectedContentTypes: config.selectedContentTypes })\n initialConfig.current = config;\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('notification.settings.saved'),\n defaultMessage: 'Settings saved successfully',\n }),\n });\n setIsSaving(false);\n } catch (err) {\n setIsSaving(false);\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('notification.error'),\n defaultMessage: 'An error occurred',\n }) + ': ' + err,\n });\n strapi.log.error(err);\n }\n }\n\n if (loading) {\n return <PageWrapper\n isSaving={isSaving}\n subtitle={formatMessage({\n id: getTranslation('loading'),\n defaultMessage: 'Loading...',\n })}\n disabledCondition={true}\n >\n <FullLoader height={200} />\n </PageWrapper>\n }\n\n return (\n <Page.Protect permissions={pluginPermissions['settings.general']}>\n <PageWrapper\n save={save}\n isSaving={isSaving}\n subtitle={formatMessage({\n id: getTranslation('settings.page.general.subtitle'),\n defaultMessage: 'Configure general settings',\n })}\n disabledCondition={JSON.stringify(config) === JSON.stringify(initialConfig.current)}\n >\n <ContentBox title={formatMessage({\n id: getTranslation('settings.page.general.contentTypes'),\n defaultMessage: 'Content Types',\n })}>\n {config?.selectedContentTypes && config.selectedContentTypes.length > 0 ?\n <Field.Root name=\"selectedContentTypesAccordion\">\n <Field.Label>\n <SettingTitle>\n {formatMessage({\n id: getTranslation('settings.page.contentTypeSettings'),\n defaultMessage: 'Content Type settings',\n })}\n </SettingTitle>\n </Field.Label>\n <Accordion.Root>\n {config.selectedContentTypes?.map((contentTypeSettings: ConfigContentType) => {\n const ct: ContentType | undefined = allContentTypes?.find((item) => item.uid === contentTypeSettings.uid)\n return <ContentTypeAccordion key={contentTypeSettings.uid} contentType={ct} contentTypeSettings={contentTypeSettings} dispatch={dispatch} />\n })}\n </Accordion.Root>\n </Field.Root>\n : (\n <Typography>\n {formatMessage({\n id: getTranslation('settings.page.general.noContentTypesEnabled'),\n defaultMessage: 'No content types are enabled for Webatlas. Please enable at least one content type to use this plugin.',\n })}\n <Link\n href='https://github.com/mattisvensson/strapi-plugin-webatlas?tab=readme-ov-file#-configuration'\n isExternal\n style={{ marginLeft: 4 }}>\n {formatMessage({\n id: getTranslation('settings.page.general.noContentTypesEnabled.moreInfo'),\n defaultMessage: 'More info',\n })}\n </Link>\n </Typography>\n )}\n </ContentBox>\n <ContentBox title={formatMessage({\n id: getTranslation('settings.page.general.details'),\n defaultMessage: 'Details',\n })}>\n <Field.Root name=\"selectedContentTypesAccordion\">\n <Field.Label>\n <SettingTitle>\n { PLUGIN_NAME }{' '}\n {formatMessage({\n id: getTranslation('version'),\n defaultMessage: 'Version',\n })}\n </SettingTitle>\n </Field.Label>\n <Typography>\n v{PLUGIN_VERSION}\n <Link\n href={`https://github.com/mattisvensson/strapi-plugin-webatlas/releases/tag/v${PLUGIN_VERSION}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ marginLeft: 4 }}>\n <ExternalLink />\n </Link>\n </Typography>\n </Field.Root>\n </ContentBox>\n </PageWrapper>\n </Page.Protect>\n );\n};\n\nexport default Settings;\n"],"names":["useIntl","jsx","Box","Accordion","jsxs","Field","getTranslation","SingleSelect","index","SingleSelectOption","usePluginConfig","useReducer","useAllContentTypes","useNotification","useState","useRef","useEffect","PageWrapper","FullLoader","Page","pluginPermissions","ContentBox","SettingTitle","Typography","Link","PLUGIN_NAME","PLUGIN_VERSION","ExternalLink"],"mappings":"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"}