@mattisvensson/strapi-plugin-webatlas 0.11.1 → 0.11.3
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/README.md +7 -6
- package/dist/admin/{SettingTitle-B0quw3f8.js → SettingTitle-BdiDHFXF.js} +2 -2
- package/dist/admin/{SettingTitle-B0quw3f8.js.map → SettingTitle-BdiDHFXF.js.map} +1 -1
- package/dist/admin/{SettingTitle-HMfQOJnK.mjs → SettingTitle-CcNfx_4T.mjs} +2 -2
- package/dist/admin/{SettingTitle-HMfQOJnK.mjs.map → SettingTitle-CcNfx_4T.mjs.map} +1 -1
- package/dist/admin/{index-Bmg-ERct.mjs → index-BMTlUOrK.mjs} +3 -3
- package/dist/admin/{index-Bmg-ERct.mjs.map → index-BMTlUOrK.mjs.map} +1 -1
- package/dist/admin/{index-B79ELMEC.mjs → index-BX3hiURm.mjs} +10 -39
- package/dist/admin/index-BX3hiURm.mjs.map +1 -0
- package/dist/admin/{index-9_HhKDUC.mjs → index-BdyLsiR4.mjs} +2 -2
- package/dist/admin/{index-9_HhKDUC.mjs.map → index-BdyLsiR4.mjs.map} +1 -1
- package/dist/admin/{index-Cx_mktdk.js → index-BkPtrXJO.js} +10 -39
- package/dist/admin/index-BkPtrXJO.js.map +1 -0
- package/dist/admin/{index-YdWxpvOH.js → index-CEBh9c4X.js} +3 -3
- package/dist/admin/{index-YdWxpvOH.js.map → index-CEBh9c4X.js.map} +1 -1
- package/dist/admin/{index-BEVoxEAm.js → index-DBG6vBGU.js} +2 -2
- package/dist/admin/{index-BEVoxEAm.js.map → index-DBG6vBGU.js.map} +1 -1
- package/dist/admin/{index-Cz_k_jjp.mjs → index-DkEReTkt.mjs} +3 -3
- package/dist/admin/{index-Cz_k_jjp.mjs.map → index-DkEReTkt.mjs.map} +1 -1
- package/dist/admin/{index-oEJT_mvw.mjs → index-DkfE_arE.mjs} +27 -9
- package/dist/admin/index-DkfE_arE.mjs.map +1 -0
- package/dist/admin/{index-D2hB1vTw.js → index-Sj2FxwAu.js} +3 -3
- package/dist/admin/{index-D2hB1vTw.js.map → index-Sj2FxwAu.js.map} +1 -1
- package/dist/admin/{index-C8YjuuOx.js → index-uW7YJoRU.js} +27 -9
- package/dist/admin/index-uW7YJoRU.js.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +636 -1502
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +636 -1502
- package/dist/server/index.mjs.map +1 -1
- package/package.json +14 -13
- package/dist/admin/index-B79ELMEC.mjs.map +0 -1
- package/dist/admin/index-C8YjuuOx.js.map +0 -1
- package/dist/admin/index-Cx_mktdk.js.map +0 -1
- package/dist/admin/index-oEJT_mvw.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ This plugin is still in the early stages of development. Many features are plann
|
|
|
15
15
|
|
|
16
16
|
### Table of Contents
|
|
17
17
|
|
|
18
|
-
1. [💎
|
|
18
|
+
1. [💎 Version](#-version)
|
|
19
19
|
2. [✨ Features](#-features)
|
|
20
20
|
3. [⏳ Installation](#-installation)
|
|
21
21
|
4. [🖐 Requirements](#-requirements)
|
|
@@ -23,10 +23,9 @@ This plugin is still in the early stages of development. Many features are plann
|
|
|
23
23
|
6. [📖 Usage](#-usage)
|
|
24
24
|
7. [🧩 Roadmap](#-roadmap)
|
|
25
25
|
|
|
26
|
-
## 💎
|
|
26
|
+
## 💎 Version
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
- **Strapi v4** - not supported
|
|
28
|
+
**Webatlas** is currently in beta. Check the [releases page](https://github.com/mattisvensson/strapi-plugin-webatlas/releases) for the latest updates.
|
|
30
29
|
|
|
31
30
|
## ✨ Features
|
|
32
31
|
|
|
@@ -57,9 +56,11 @@ As a next step you must configure your the plugin by the way you want to. See [
|
|
|
57
56
|
|
|
58
57
|
## 🖐 Requirements
|
|
59
58
|
|
|
59
|
+
To use **Webatlas**, you need to be running **Strapi v5.42.1** or higher. The plugin is currently in beta and only supports **Strapi v5.42.1**. Support for **Strapi v4** is not supported and there are no plans to backport it.
|
|
60
|
+
|
|
60
61
|
**Minimum environment requirements**
|
|
61
62
|
|
|
62
|
-
- Strapi `>=5.
|
|
63
|
+
- Strapi `>=5.42.1`
|
|
63
64
|
- Node.js `>=22.0.0`
|
|
64
65
|
|
|
65
66
|
## 🔧 Configuration
|
|
@@ -118,7 +119,7 @@ Query parameters:
|
|
|
118
119
|
- `fields` (string, optional): Comma-separated list of fields to include in the response.
|
|
119
120
|
- `status` (string, optional): `draft` or `published`. Default is `published`. Returns the draft or published version of the entity.
|
|
120
121
|
|
|
121
|
-
The response contains the entity's content type and a `webatlas` object with additional information about the path, including the canonical path, uidPath and slug.
|
|
122
|
+
The response contains the entity's content type and a `webatlas` object with additional information about the path, including the canonical path, uidPath and slug. The `webatlas` object is also available in the Content API responses of entities with webatlas enabled.
|
|
122
123
|
|
|
123
124
|
#### Fetch navigation
|
|
124
125
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
3
|
const designSystem = require("@strapi/design-system");
|
|
4
4
|
const admin = require("@strapi/strapi/admin");
|
|
5
|
-
const index = require("./index-
|
|
5
|
+
const index = require("./index-BkPtrXJO.js");
|
|
6
6
|
const reactIntl = require("react-intl");
|
|
7
7
|
const icons = require("@strapi/icons");
|
|
8
8
|
function PageWrapper({
|
|
@@ -68,4 +68,4 @@ function SettingTitle({ children }) {
|
|
|
68
68
|
exports.ContentBox = ContentBox;
|
|
69
69
|
exports.PageWrapper = PageWrapper;
|
|
70
70
|
exports.SettingTitle = SettingTitle;
|
|
71
|
-
//# sourceMappingURL=SettingTitle-
|
|
71
|
+
//# sourceMappingURL=SettingTitle-BdiDHFXF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingTitle-
|
|
1
|
+
{"version":3,"file":"SettingTitle-BdiDHFXF.js","sources":["../../admin/src/pages/Settings/PageWrapper.tsx","../../admin/src/pages/Settings/ContentBox.tsx","../../admin/src/pages/Settings/SettingTitle.tsx"],"sourcesContent":["import { Button, Flex } from '@strapi/design-system'\nimport { Page, Layouts } from '@strapi/strapi/admin'\nimport { PLUGIN_NAME } from '../../../../utils/pluginId'\nimport { getTranslation } from '../../utils'\nimport { useIntl } from 'react-intl'\nimport { Check } from '@strapi/icons'\n\nexport default function PageWrapper({\n\tsave,\n\tisSaving,\n\tdisabledCondition,\n\tsubtitle,\n\tchildren,\n}: {\n\tsave?: () => void\n\tisSaving: boolean\n\tdisabledCondition: boolean\n\tsubtitle: string\n\tchildren: React.ReactNode\n}) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Page.Main>\n\t\t\t<Layouts.Header\n\t\t\t\ttitle={PLUGIN_NAME}\n\t\t\t\tsubtitle={subtitle}\n\t\t\t\tprimaryAction={\n\t\t\t\t\tdisabledCondition !== undefined &&\n\t\t\t\t\tsave && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tonClick={() => save()}\n\t\t\t\t\t\t\tloading={isSaving}\n\t\t\t\t\t\t\tdisabled={disabledCondition || isSaving}\n\t\t\t\t\t\t\tstartIcon={<Check />}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* <Check /> */}\n\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('save'),\n\t\t\t\t\t\t\t\tdefaultMessage: 'Save',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Layouts.Content>\n\t\t\t\t<Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n\t\t\t\t\t{children}\n\t\t\t\t</Flex>\n\t\t\t</Layouts.Content>\n\t\t</Page.Main>\n\t)\n}\n","import { Typography, Flex, Box } from '@strapi/design-system'\n\nexport default function ContentBox({\n\ttitle,\n\tchildren,\n}: {\n\ttitle: string\n\tchildren: React.ReactNode\n}) {\n\treturn (\n\t\t<Flex\n\t\t\tbackground=\"neutral0\"\n\t\t\thasRadius\n\t\t\tpaddingTop={6}\n\t\t\tpaddingBottom={6}\n\t\t\tpaddingLeft={7}\n\t\t\tpaddingRight={7}\n\t\t\tshadow=\"tableShadow\"\n\t\t\tdirection=\"column\"\n\t\t\talignItems=\"stretch\"\n\t\t\tgap={4}\n\t\t>\n\t\t\t<Typography variant=\"delta\">{title}</Typography>\n\t\t\t<Box>{children}</Box>\n\t\t</Flex>\n\t)\n}\n","import { Typography } from '@strapi/design-system'\n\nexport default function SettingTitle({ children }: { children: React.ReactNode }) {\n\treturn (\n\t\t<Typography variant=\"sigma\" textColor=\"neutral600\">\n\t\t\t{children}\n\t\t</Typography>\n\t)\n}\n"],"names":["useIntl","jsxs","Page","jsx","Layouts","PLUGIN_NAME","Button","Check","getTranslation","Flex","Typography","Box"],"mappings":";;;;;;;AAOA,SAAwB,YAAY;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAMG;AACF,QAAM,EAAE,cAAA,IAAkBA,kBAAA;AAE1B,SACCC,gCAACC,MAAAA,KAAK,MAAL,EACA,UAAA;AAAA,IAAAC,2BAAAA;AAAAA,MAACC,MAAAA,QAAQ;AAAA,MAAR;AAAA,QACA,OAAOC,MAAAA;AAAAA,QACP;AAAA,QACA,eACC,sBAAsB,UACtB,QACCF,2BAAAA;AAAAA,UAACG,aAAAA;AAAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL,SAAS,MAAM,KAAA;AAAA,YACf,SAAS;AAAA,YACT,UAAU,qBAAqB;AAAA,YAC/B,0CAAYC,MAAAA,OAAA,EAAM;AAAA,YAGjB,UAAA,cAAc;AAAA,cACd,IAAIC,MAAAA,eAAe,MAAM;AAAA,cACzB,gBAAgB;AAAA,YAAA,CAChB;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAIHL,2BAAAA,IAACC,MAAAA,QAAQ,SAAR,EACA,UAAAD,2BAAAA,IAACM,aAAAA,MAAA,EAAK,WAAU,UAAS,YAAW,WAAU,KAAK,GACjD,UACF,EAAA,CACD;AAAA,EAAA,GACD;AAEF;ACnDA,SAAwB,WAAW;AAAA,EAClC;AAAA,EACA;AACD,GAGG;AACF,SACCR,2BAAAA;AAAAA,IAACQ,aAAAA;AAAAA,IAAA;AAAA,MACA,YAAW;AAAA,MACX,WAAS;AAAA,MACT,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MACd,QAAO;AAAA,MACP,WAAU;AAAA,MACV,YAAW;AAAA,MACX,KAAK;AAAA,MAEL,UAAA;AAAA,QAAAN,2BAAAA,IAACO,aAAAA,YAAA,EAAW,SAAQ,SAAS,UAAA,OAAM;AAAA,QACnCP,+BAACQ,aAAAA,OAAK,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlB;ACxBA,SAAwB,aAAa,EAAE,YAA2C;AACjF,wCACED,aAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACpC,UACF;AAEF;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Button, Flex, Typography, Box } from "@strapi/design-system";
|
|
3
3
|
import { Page, Layouts } from "@strapi/strapi/admin";
|
|
4
|
-
import { f as PLUGIN_NAME, g as getTranslation } from "./index-
|
|
4
|
+
import { f as PLUGIN_NAME, g as getTranslation } from "./index-BX3hiURm.mjs";
|
|
5
5
|
import { useIntl } from "react-intl";
|
|
6
6
|
import { Check } from "@strapi/icons";
|
|
7
7
|
function PageWrapper({
|
|
@@ -69,4 +69,4 @@ export {
|
|
|
69
69
|
PageWrapper as P,
|
|
70
70
|
SettingTitle as S
|
|
71
71
|
};
|
|
72
|
-
//# sourceMappingURL=SettingTitle-
|
|
72
|
+
//# sourceMappingURL=SettingTitle-CcNfx_4T.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingTitle-
|
|
1
|
+
{"version":3,"file":"SettingTitle-CcNfx_4T.mjs","sources":["../../admin/src/pages/Settings/PageWrapper.tsx","../../admin/src/pages/Settings/ContentBox.tsx","../../admin/src/pages/Settings/SettingTitle.tsx"],"sourcesContent":["import { Button, Flex } from '@strapi/design-system'\nimport { Page, Layouts } from '@strapi/strapi/admin'\nimport { PLUGIN_NAME } from '../../../../utils/pluginId'\nimport { getTranslation } from '../../utils'\nimport { useIntl } from 'react-intl'\nimport { Check } from '@strapi/icons'\n\nexport default function PageWrapper({\n\tsave,\n\tisSaving,\n\tdisabledCondition,\n\tsubtitle,\n\tchildren,\n}: {\n\tsave?: () => void\n\tisSaving: boolean\n\tdisabledCondition: boolean\n\tsubtitle: string\n\tchildren: React.ReactNode\n}) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Page.Main>\n\t\t\t<Layouts.Header\n\t\t\t\ttitle={PLUGIN_NAME}\n\t\t\t\tsubtitle={subtitle}\n\t\t\t\tprimaryAction={\n\t\t\t\t\tdisabledCondition !== undefined &&\n\t\t\t\t\tsave && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tonClick={() => save()}\n\t\t\t\t\t\t\tloading={isSaving}\n\t\t\t\t\t\t\tdisabled={disabledCondition || isSaving}\n\t\t\t\t\t\t\tstartIcon={<Check />}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* <Check /> */}\n\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('save'),\n\t\t\t\t\t\t\t\tdefaultMessage: 'Save',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Layouts.Content>\n\t\t\t\t<Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n\t\t\t\t\t{children}\n\t\t\t\t</Flex>\n\t\t\t</Layouts.Content>\n\t\t</Page.Main>\n\t)\n}\n","import { Typography, Flex, Box } from '@strapi/design-system'\n\nexport default function ContentBox({\n\ttitle,\n\tchildren,\n}: {\n\ttitle: string\n\tchildren: React.ReactNode\n}) {\n\treturn (\n\t\t<Flex\n\t\t\tbackground=\"neutral0\"\n\t\t\thasRadius\n\t\t\tpaddingTop={6}\n\t\t\tpaddingBottom={6}\n\t\t\tpaddingLeft={7}\n\t\t\tpaddingRight={7}\n\t\t\tshadow=\"tableShadow\"\n\t\t\tdirection=\"column\"\n\t\t\talignItems=\"stretch\"\n\t\t\tgap={4}\n\t\t>\n\t\t\t<Typography variant=\"delta\">{title}</Typography>\n\t\t\t<Box>{children}</Box>\n\t\t</Flex>\n\t)\n}\n","import { Typography } from '@strapi/design-system'\n\nexport default function SettingTitle({ children }: { children: React.ReactNode }) {\n\treturn (\n\t\t<Typography variant=\"sigma\" textColor=\"neutral600\">\n\t\t\t{children}\n\t\t</Typography>\n\t)\n}\n"],"names":[],"mappings":";;;;;;AAOA,SAAwB,YAAY;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAMG;AACF,QAAM,EAAE,cAAA,IAAkB,QAAA;AAE1B,SACC,qBAAC,KAAK,MAAL,EACA,UAAA;AAAA,IAAA;AAAA,MAAC,QAAQ;AAAA,MAAR;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA,eACC,sBAAsB,UACtB,QACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL,SAAS,MAAM,KAAA;AAAA,YACf,SAAS;AAAA,YACT,UAAU,qBAAqB;AAAA,YAC/B,+BAAY,OAAA,EAAM;AAAA,YAGjB,UAAA,cAAc;AAAA,cACd,IAAI,eAAe,MAAM;AAAA,cACzB,gBAAgB;AAAA,YAAA,CAChB;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAIH,oBAAC,QAAQ,SAAR,EACA,UAAA,oBAAC,MAAA,EAAK,WAAU,UAAS,YAAW,WAAU,KAAK,GACjD,UACF,EAAA,CACD;AAAA,EAAA,GACD;AAEF;ACnDA,SAAwB,WAAW;AAAA,EAClC;AAAA,EACA;AACD,GAGG;AACF,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,YAAW;AAAA,MACX,WAAS;AAAA,MACT,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MACd,QAAO;AAAA,MACP,WAAU;AAAA,MACV,YAAW;AAAA,MACX,KAAK;AAAA,MAEL,UAAA;AAAA,QAAA,oBAAC,YAAA,EAAW,SAAQ,SAAS,UAAA,OAAM;AAAA,QACnC,oBAAC,OAAK,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlB;ACxBA,SAAwB,aAAa,EAAE,YAA2C;AACjF,6BACE,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACpC,UACF;AAEF;"}
|
|
@@ -2,11 +2,11 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useReducer, useState, useRef, useEffect } from "react";
|
|
3
3
|
import { Box, Accordion, Field, SingleSelect, SingleSelectOption, Typography, Link } from "@strapi/design-system";
|
|
4
4
|
import { useNotification, Page } from "@strapi/strapi/admin";
|
|
5
|
-
import { g as getTranslation, c as usePluginConfig, e as useAllContentTypes, p as pluginPermissions, f as PLUGIN_NAME, h as PLUGIN_VERSION } from "./index-
|
|
5
|
+
import { g as getTranslation, c as usePluginConfig, e as useAllContentTypes, p as pluginPermissions, f as PLUGIN_NAME, h as PLUGIN_VERSION } from "./index-BX3hiURm.mjs";
|
|
6
6
|
import { useIntl } from "react-intl";
|
|
7
7
|
import "@strapi/icons/symbols";
|
|
8
8
|
import { F as FullLoader } from "./FullLoader-Btjb2W2p.mjs";
|
|
9
|
-
import { P as PageWrapper, C as ContentBox, S as SettingTitle } from "./SettingTitle-
|
|
9
|
+
import { P as PageWrapper, C as ContentBox, S as SettingTitle } from "./SettingTitle-CcNfx_4T.mjs";
|
|
10
10
|
import { ExternalLink } from "@strapi/icons";
|
|
11
11
|
function ContentTypeAccordion({
|
|
12
12
|
contentType,
|
|
@@ -241,4 +241,4 @@ const Settings = () => {
|
|
|
241
241
|
export {
|
|
242
242
|
Settings as default
|
|
243
243
|
};
|
|
244
|
-
//# sourceMappingURL=index-
|
|
244
|
+
//# sourceMappingURL=index-BMTlUOrK.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-Bmg-ERct.mjs","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\tcontentType,\n\tcontentTypeSettings,\n\tdispatch,\n}: {\n\tcontentType: ContentType | undefined\n\tcontentTypeSettings: ConfigContentType\n\tdispatch: React.Dispatch<any>\n}) {\n\tconst { formatMessage } = useIntl()\n\n\tif (!contentType) return null\n\n\treturn (\n\t\t<Box borderColor={!contentTypeSettings.default ? 'danger500' : undefined} key={contentType.uid}>\n\t\t\t<Accordion.Item key={contentType.uid} value={contentType.uid}>\n\t\t\t\t<Accordion.Header>\n\t\t\t\t\t<Accordion.Trigger>{contentType?.info.displayName}</Accordion.Trigger>\n\t\t\t\t</Accordion.Header>\n\t\t\t\t<Accordion.Content>\n\t\t\t\t\t<Box padding={3}>\n\t\t\t\t\t\t<Field.Root\n\t\t\t\t\t\t\tname=\"selectedContentTypes\"\n\t\t\t\t\t\t\thint={formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('settings.page.generate.hint'),\n\t\t\t\t\t\t\t\tdefaultMessage:\n\t\t\t\t\t\t\t\t\t'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\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t!contentTypeSettings.default &&\n\t\t\t\t\t\t\t\tformatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.generate.error'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'Please select a default field',\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Field.Label>\n\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.generate'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'Generate paths from',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Field.Label>\n\t\t\t\t\t\t\t<SingleSelect\n\t\t\t\t\t\t\t\tname={`defaultField-${contentType.uid}`}\n\t\t\t\t\t\t\t\tonClear={() =>\n\t\t\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\t\t\ttype: 'SET_DEFAULT_FIELD',\n\t\t\t\t\t\t\t\t\t\tpayload: { ctUid: contentType.uid, field: '' },\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvalue={contentTypeSettings?.default || ''}\n\t\t\t\t\t\t\t\tonChange={(value: string | number) =>\n\t\t\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\t\t\ttype: 'SET_DEFAULT_FIELD',\n\t\t\t\t\t\t\t\t\t\tpayload: { ctUid: contentType.uid, field: String(value) },\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{Object.entries(contentType.attributes).map(([key], index) => {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tkey === 'id' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'documentId' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'createdAt' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'updatedAt' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'createdBy' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'updatedBy' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas' ||\n\t\t\t\t\t\t\t\t\t\t// The following fields are not longer used in the new implementation, but we keep them hidden just in case\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas_path' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas_override' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas_parent'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<SingleSelectOption key={index} value={key}>\n\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t</SingleSelectOption>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</SingleSelect>\n\t\t\t\t\t\t\t<Field.Hint />\n\t\t\t\t\t\t</Field.Root>\n\t\t\t\t\t</Box>\n\t\t\t\t</Accordion.Content>\n\t\t\t</Accordion.Item>\n\t\t</Box>\n\t)\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\t| { type: 'SET_DEFAULT_FIELD'; payload: { ctUid: string; field: string } }\n\t| { type: 'SET_CONFIG'; payload: PluginConfig }\n\nfunction reducer(newConfig: PluginConfig | null, action: Action): PluginConfig | null {\n\tlet updatedContentTypes\n\n\tswitch (action.type) {\n\t\tcase 'SET_DEFAULT_FIELD':\n\t\t\tif (!newConfig) return null\n\t\t\tupdatedContentTypes = newConfig?.selectedContentTypes.map((ct) =>\n\t\t\t\tct.uid === action.payload.ctUid ? { ...ct, default: action.payload.field } : ct,\n\t\t\t)\n\t\t\treturn { ...newConfig, selectedContentTypes: updatedContentTypes || [] }\n\t\tcase 'SET_CONFIG':\n\t\t\treturn action.payload\n\t\tdefault:\n\t\t\tthrow new Error()\n\t}\n}\n\nconst Settings = () => {\n\tconst { config: fetchedConfig, setConfig, loading, fetchError } = usePluginConfig()\n\tconst [config, dispatch] = useReducer(reducer, fetchedConfig)\n\tconst { contentTypes: allContentTypesData } = useAllContentTypes()\n\tconst allContentTypes = allContentTypesData?.filter(\n\t\t(ct: ContentType) => ct.pluginOptions?.webatlas?.enabled === true,\n\t)\n\tconst { toggleNotification } = useNotification()\n\tconst { formatMessage } = useIntl()\n\tconst [isSaving, setIsSaving] = useState(false)\n\tconst initialConfig = useRef<PluginConfig | null>(fetchedConfig)\n\n\tuseEffect(() => {\n\t\tinitialConfig.current = fetchedConfig\n\n\t\tif (fetchedConfig) dispatch({ type: 'SET_CONFIG', payload: fetchedConfig })\n\t}, [fetchedConfig])\n\n\tuseEffect(() => {\n\t\tif (fetchError) {\n\t\t\ttoggleNotification({\n\t\t\t\ttype: 'danger',\n\t\t\t\tmessage:\n\t\t\t\t\tformatMessage({\n\t\t\t\t\t\tid: getTranslation('notification.error'),\n\t\t\t\t\t\tdefaultMessage: 'An error occurred',\n\t\t\t\t\t}) +\n\t\t\t\t\t': ' +\n\t\t\t\t\tfetchError,\n\t\t\t})\n\t\t}\n\t}, [fetchError, toggleNotification, formatMessage])\n\n\tasync function save() {\n\t\tif (\n\t\t\t!config ||\n\t\t\tconfig.selectedContentTypes.find((cta: ConfigContentType) => !cta.default) !== undefined\n\t\t)\n\t\t\treturn\n\n\t\tsetIsSaving(true)\n\t\ttry {\n\t\t\tawait setConfig({ selectedContentTypes: config.selectedContentTypes })\n\t\t\tinitialConfig.current = config\n\n\t\t\ttoggleNotification({\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: formatMessage({\n\t\t\t\t\tid: getTranslation('notification.settings.saved'),\n\t\t\t\t\tdefaultMessage: 'Settings saved successfully',\n\t\t\t\t}),\n\t\t\t})\n\t\t\tsetIsSaving(false)\n\t\t} catch (err) {\n\t\t\tsetIsSaving(false)\n\t\t\ttoggleNotification({\n\t\t\t\ttype: 'danger',\n\t\t\t\tmessage:\n\t\t\t\t\tformatMessage({\n\t\t\t\t\t\tid: getTranslation('notification.error'),\n\t\t\t\t\t\tdefaultMessage: 'An error occurred',\n\t\t\t\t\t}) +\n\t\t\t\t\t': ' +\n\t\t\t\t\terr,\n\t\t\t})\n\t\t\tstrapi.log.error(err)\n\t\t}\n\t}\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<PageWrapper\n\t\t\t\tisSaving={isSaving}\n\t\t\t\tsubtitle={formatMessage({\n\t\t\t\t\tid: getTranslation('loading'),\n\t\t\t\t\tdefaultMessage: 'Loading...',\n\t\t\t\t})}\n\t\t\t\tdisabledCondition={true}\n\t\t\t>\n\t\t\t\t<FullLoader height={200} />\n\t\t\t</PageWrapper>\n\t\t)\n\t}\n\n\treturn (\n\t\t<Page.Protect permissions={pluginPermissions['settings.general']}>\n\t\t\t<PageWrapper\n\t\t\t\tsave={save}\n\t\t\t\tisSaving={isSaving}\n\t\t\t\tsubtitle={formatMessage({\n\t\t\t\t\tid: getTranslation('settings.page.general.subtitle'),\n\t\t\t\t\tdefaultMessage: 'Configure general settings',\n\t\t\t\t})}\n\t\t\t\tdisabledCondition={JSON.stringify(config) === JSON.stringify(initialConfig.current)}\n\t\t\t>\n\t\t\t\t<ContentBox\n\t\t\t\t\ttitle={formatMessage({\n\t\t\t\t\t\tid: getTranslation('settings.page.general.contentTypes'),\n\t\t\t\t\t\tdefaultMessage: 'Content Types',\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{config?.selectedContentTypes && config.selectedContentTypes.length > 0 ? (\n\t\t\t\t\t\t<Field.Root name=\"selectedContentTypesAccordion\">\n\t\t\t\t\t\t\t<Field.Label>\n\t\t\t\t\t\t\t\t<SettingTitle>\n\t\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.contentTypeSettings'),\n\t\t\t\t\t\t\t\t\t\tdefaultMessage: 'Content Type settings',\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</SettingTitle>\n\t\t\t\t\t\t\t</Field.Label>\n\t\t\t\t\t\t\t<Accordion.Root>\n\t\t\t\t\t\t\t\t{config.selectedContentTypes?.map((contentTypeSettings: ConfigContentType) => {\n\t\t\t\t\t\t\t\t\tconst ct: ContentType | undefined = allContentTypes?.find(\n\t\t\t\t\t\t\t\t\t\t(item) => item.uid === contentTypeSettings.uid,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ContentTypeAccordion\n\t\t\t\t\t\t\t\t\t\t\tkey={contentTypeSettings.uid}\n\t\t\t\t\t\t\t\t\t\t\tcontentType={ct}\n\t\t\t\t\t\t\t\t\t\t\tcontentTypeSettings={contentTypeSettings}\n\t\t\t\t\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Accordion.Root>\n\t\t\t\t\t\t</Field.Root>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Typography>\n\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('settings.page.general.noContentTypesEnabled'),\n\t\t\t\t\t\t\t\tdefaultMessage:\n\t\t\t\t\t\t\t\t\t'No content types are enabled for Webatlas. Please enable at least one content type to use this plugin.',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\thref=\"https://github.com/mattisvensson/strapi-plugin-webatlas?tab=readme-ov-file#-configuration\"\n\t\t\t\t\t\t\t\tisExternal\n\t\t\t\t\t\t\t\tstyle={{ marginLeft: 4 }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.general.noContentTypesEnabled.moreInfo'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'More info',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</ContentBox>\n\t\t\t\t<ContentBox\n\t\t\t\t\ttitle={formatMessage({\n\t\t\t\t\t\tid: getTranslation('settings.page.general.details'),\n\t\t\t\t\t\tdefaultMessage: 'Details',\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<Field.Root name=\"selectedContentTypesAccordion\">\n\t\t\t\t\t\t<Field.Label>\n\t\t\t\t\t\t\t<SettingTitle>\n\t\t\t\t\t\t\t\t{PLUGIN_NAME}{' '}\n\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('version'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'Version',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</SettingTitle>\n\t\t\t\t\t\t</Field.Label>\n\t\t\t\t\t\t<Typography>\n\t\t\t\t\t\t\tv{PLUGIN_VERSION}\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\thref={`https://github.com/mattisvensson/strapi-plugin-webatlas/releases/tag/v${PLUGIN_VERSION}`}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\tstyle={{ marginLeft: 4 }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ExternalLink />\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Field.Root>\n\t\t\t\t</ContentBox>\n\t\t\t</PageWrapper>\n\t\t</Page.Protect>\n\t)\n}\n\nexport default Settings\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-BMTlUOrK.mjs","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\tcontentType,\n\tcontentTypeSettings,\n\tdispatch,\n}: {\n\tcontentType: ContentType | undefined\n\tcontentTypeSettings: ConfigContentType\n\tdispatch: React.Dispatch<any>\n}) {\n\tconst { formatMessage } = useIntl()\n\n\tif (!contentType) return null\n\n\treturn (\n\t\t<Box borderColor={!contentTypeSettings.default ? 'danger500' : undefined} key={contentType.uid}>\n\t\t\t<Accordion.Item key={contentType.uid} value={contentType.uid}>\n\t\t\t\t<Accordion.Header>\n\t\t\t\t\t<Accordion.Trigger>{contentType?.info.displayName}</Accordion.Trigger>\n\t\t\t\t</Accordion.Header>\n\t\t\t\t<Accordion.Content>\n\t\t\t\t\t<Box padding={3}>\n\t\t\t\t\t\t<Field.Root\n\t\t\t\t\t\t\tname=\"selectedContentTypes\"\n\t\t\t\t\t\t\thint={formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('settings.page.generate.hint'),\n\t\t\t\t\t\t\t\tdefaultMessage:\n\t\t\t\t\t\t\t\t\t'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\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t!contentTypeSettings.default &&\n\t\t\t\t\t\t\t\tformatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.generate.error'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'Please select a default field',\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Field.Label>\n\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.generate'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'Generate paths from',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Field.Label>\n\t\t\t\t\t\t\t<SingleSelect\n\t\t\t\t\t\t\t\tname={`defaultField-${contentType.uid}`}\n\t\t\t\t\t\t\t\tonClear={() =>\n\t\t\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\t\t\ttype: 'SET_DEFAULT_FIELD',\n\t\t\t\t\t\t\t\t\t\tpayload: { ctUid: contentType.uid, field: '' },\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvalue={contentTypeSettings?.default || ''}\n\t\t\t\t\t\t\t\tonChange={(value: string | number) =>\n\t\t\t\t\t\t\t\t\tdispatch({\n\t\t\t\t\t\t\t\t\t\ttype: 'SET_DEFAULT_FIELD',\n\t\t\t\t\t\t\t\t\t\tpayload: { ctUid: contentType.uid, field: String(value) },\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{Object.entries(contentType.attributes).map(([key], index) => {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tkey === 'id' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'documentId' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'createdAt' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'updatedAt' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'createdBy' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'updatedBy' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas' ||\n\t\t\t\t\t\t\t\t\t\t// The following fields are not longer used in the new implementation, but we keep them hidden just in case\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas_path' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas_override' ||\n\t\t\t\t\t\t\t\t\t\tkey === 'webatlas_parent'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<SingleSelectOption key={index} value={key}>\n\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t</SingleSelectOption>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</SingleSelect>\n\t\t\t\t\t\t\t<Field.Hint />\n\t\t\t\t\t\t</Field.Root>\n\t\t\t\t\t</Box>\n\t\t\t\t</Accordion.Content>\n\t\t\t</Accordion.Item>\n\t\t</Box>\n\t)\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\t| { type: 'SET_DEFAULT_FIELD'; payload: { ctUid: string; field: string } }\n\t| { type: 'SET_CONFIG'; payload: PluginConfig }\n\nfunction reducer(newConfig: PluginConfig | null, action: Action): PluginConfig | null {\n\tlet updatedContentTypes\n\n\tswitch (action.type) {\n\t\tcase 'SET_DEFAULT_FIELD':\n\t\t\tif (!newConfig) return null\n\t\t\tupdatedContentTypes = newConfig?.selectedContentTypes.map((ct) =>\n\t\t\t\tct.uid === action.payload.ctUid ? { ...ct, default: action.payload.field } : ct,\n\t\t\t)\n\t\t\treturn { ...newConfig, selectedContentTypes: updatedContentTypes || [] }\n\t\tcase 'SET_CONFIG':\n\t\t\treturn action.payload\n\t\tdefault:\n\t\t\tthrow new Error()\n\t}\n}\n\nconst Settings = () => {\n\tconst { config: fetchedConfig, setConfig, loading, fetchError } = usePluginConfig()\n\tconst [config, dispatch] = useReducer(reducer, fetchedConfig)\n\tconst { contentTypes: allContentTypesData } = useAllContentTypes()\n\tconst allContentTypes = allContentTypesData?.filter(\n\t\t(ct: ContentType) => ct.pluginOptions?.webatlas?.enabled === true,\n\t)\n\tconst { toggleNotification } = useNotification()\n\tconst { formatMessage } = useIntl()\n\tconst [isSaving, setIsSaving] = useState(false)\n\tconst initialConfig = useRef<PluginConfig | null>(fetchedConfig)\n\n\tuseEffect(() => {\n\t\tinitialConfig.current = fetchedConfig\n\n\t\tif (fetchedConfig) dispatch({ type: 'SET_CONFIG', payload: fetchedConfig })\n\t}, [fetchedConfig])\n\n\tuseEffect(() => {\n\t\tif (fetchError) {\n\t\t\ttoggleNotification({\n\t\t\t\ttype: 'danger',\n\t\t\t\tmessage:\n\t\t\t\t\tformatMessage({\n\t\t\t\t\t\tid: getTranslation('notification.error'),\n\t\t\t\t\t\tdefaultMessage: 'An error occurred',\n\t\t\t\t\t}) +\n\t\t\t\t\t': ' +\n\t\t\t\t\tfetchError,\n\t\t\t})\n\t\t}\n\t}, [fetchError, toggleNotification, formatMessage])\n\n\tasync function save() {\n\t\tif (\n\t\t\t!config ||\n\t\t\tconfig.selectedContentTypes.find((cta: ConfigContentType) => !cta.default) !== undefined\n\t\t)\n\t\t\treturn\n\n\t\tsetIsSaving(true)\n\t\ttry {\n\t\t\tawait setConfig({ selectedContentTypes: config.selectedContentTypes })\n\t\t\tinitialConfig.current = config\n\n\t\t\ttoggleNotification({\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: formatMessage({\n\t\t\t\t\tid: getTranslation('notification.settings.saved'),\n\t\t\t\t\tdefaultMessage: 'Settings saved successfully',\n\t\t\t\t}),\n\t\t\t})\n\t\t\tsetIsSaving(false)\n\t\t} catch (err) {\n\t\t\tsetIsSaving(false)\n\t\t\ttoggleNotification({\n\t\t\t\ttype: 'danger',\n\t\t\t\tmessage:\n\t\t\t\t\tformatMessage({\n\t\t\t\t\t\tid: getTranslation('notification.error'),\n\t\t\t\t\t\tdefaultMessage: 'An error occurred',\n\t\t\t\t\t}) +\n\t\t\t\t\t': ' +\n\t\t\t\t\terr,\n\t\t\t})\n\t\t\tstrapi.log.error(err)\n\t\t}\n\t}\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<PageWrapper\n\t\t\t\tisSaving={isSaving}\n\t\t\t\tsubtitle={formatMessage({\n\t\t\t\t\tid: getTranslation('loading'),\n\t\t\t\t\tdefaultMessage: 'Loading...',\n\t\t\t\t})}\n\t\t\t\tdisabledCondition={true}\n\t\t\t>\n\t\t\t\t<FullLoader height={200} />\n\t\t\t</PageWrapper>\n\t\t)\n\t}\n\n\treturn (\n\t\t<Page.Protect permissions={pluginPermissions['settings.general']}>\n\t\t\t<PageWrapper\n\t\t\t\tsave={save}\n\t\t\t\tisSaving={isSaving}\n\t\t\t\tsubtitle={formatMessage({\n\t\t\t\t\tid: getTranslation('settings.page.general.subtitle'),\n\t\t\t\t\tdefaultMessage: 'Configure general settings',\n\t\t\t\t})}\n\t\t\t\tdisabledCondition={JSON.stringify(config) === JSON.stringify(initialConfig.current)}\n\t\t\t>\n\t\t\t\t<ContentBox\n\t\t\t\t\ttitle={formatMessage({\n\t\t\t\t\t\tid: getTranslation('settings.page.general.contentTypes'),\n\t\t\t\t\t\tdefaultMessage: 'Content Types',\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{config?.selectedContentTypes && config.selectedContentTypes.length > 0 ? (\n\t\t\t\t\t\t<Field.Root name=\"selectedContentTypesAccordion\">\n\t\t\t\t\t\t\t<Field.Label>\n\t\t\t\t\t\t\t\t<SettingTitle>\n\t\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.contentTypeSettings'),\n\t\t\t\t\t\t\t\t\t\tdefaultMessage: 'Content Type settings',\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</SettingTitle>\n\t\t\t\t\t\t\t</Field.Label>\n\t\t\t\t\t\t\t<Accordion.Root>\n\t\t\t\t\t\t\t\t{config.selectedContentTypes?.map((contentTypeSettings: ConfigContentType) => {\n\t\t\t\t\t\t\t\t\tconst ct: ContentType | undefined = allContentTypes?.find(\n\t\t\t\t\t\t\t\t\t\t(item) => item.uid === contentTypeSettings.uid,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ContentTypeAccordion\n\t\t\t\t\t\t\t\t\t\t\tkey={contentTypeSettings.uid}\n\t\t\t\t\t\t\t\t\t\t\tcontentType={ct}\n\t\t\t\t\t\t\t\t\t\t\tcontentTypeSettings={contentTypeSettings}\n\t\t\t\t\t\t\t\t\t\t\tdispatch={dispatch}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Accordion.Root>\n\t\t\t\t\t\t</Field.Root>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Typography>\n\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('settings.page.general.noContentTypesEnabled'),\n\t\t\t\t\t\t\t\tdefaultMessage:\n\t\t\t\t\t\t\t\t\t'No content types are enabled for Webatlas. Please enable at least one content type to use this plugin.',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\thref=\"https://github.com/mattisvensson/strapi-plugin-webatlas?tab=readme-ov-file#-configuration\"\n\t\t\t\t\t\t\t\tisExternal\n\t\t\t\t\t\t\t\tstyle={{ marginLeft: 4 }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('settings.page.general.noContentTypesEnabled.moreInfo'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'More info',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</ContentBox>\n\t\t\t\t<ContentBox\n\t\t\t\t\ttitle={formatMessage({\n\t\t\t\t\t\tid: getTranslation('settings.page.general.details'),\n\t\t\t\t\t\tdefaultMessage: 'Details',\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<Field.Root name=\"selectedContentTypesAccordion\">\n\t\t\t\t\t\t<Field.Label>\n\t\t\t\t\t\t\t<SettingTitle>\n\t\t\t\t\t\t\t\t{PLUGIN_NAME}{' '}\n\t\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('version'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'Version',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</SettingTitle>\n\t\t\t\t\t\t</Field.Label>\n\t\t\t\t\t\t<Typography>\n\t\t\t\t\t\t\tv{PLUGIN_VERSION}\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\thref={`https://github.com/mattisvensson/strapi-plugin-webatlas/releases/tag/v${PLUGIN_VERSION}`}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\tstyle={{ marginLeft: 4 }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ExternalLink />\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Field.Root>\n\t\t\t\t</ContentBox>\n\t\t\t</PageWrapper>\n\t\t</Page.Protect>\n\t)\n}\n\nexport default Settings\n"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,7 @@ function transformToUrl(input, replaceSlash = true) {
|
|
|
52
52
|
input = input.replace(/-+/g, "-");
|
|
53
53
|
return input;
|
|
54
54
|
}
|
|
55
|
-
const version = "0.11.
|
|
55
|
+
const version = "0.11.3";
|
|
56
56
|
const strapi$1 = { "name": "webatlas", "displayName": "Webatlas" };
|
|
57
57
|
const pluginPkg = {
|
|
58
58
|
version,
|
|
@@ -3943,7 +3943,7 @@ const Panel = ({ config }) => {
|
|
|
3943
3943
|
try {
|
|
3944
3944
|
const route2 = await getRelatedRoute(initialValues.documentId);
|
|
3945
3945
|
if (!route2) return;
|
|
3946
|
-
initialPath.current =
|
|
3946
|
+
initialPath.current = route2.uidPath;
|
|
3947
3947
|
setRoute(route2);
|
|
3948
3948
|
setIsOverride(route2.isOverride || false);
|
|
3949
3949
|
dispatchPath({ type: "SET_OVERRIDEPATH", payload: route2.path || "" });
|
|
@@ -3964,8 +3964,9 @@ const Panel = ({ config }) => {
|
|
|
3964
3964
|
} catch (err) {
|
|
3965
3965
|
setRoute(null);
|
|
3966
3966
|
strapi.log.error(err);
|
|
3967
|
+
} finally {
|
|
3968
|
+
setInitialLoadComplete(true);
|
|
3967
3969
|
}
|
|
3968
|
-
setInitialLoadComplete(true);
|
|
3969
3970
|
}
|
|
3970
3971
|
fetchRelatedRute();
|
|
3971
3972
|
}, [config]);
|
|
@@ -4083,7 +4084,7 @@ const pluginPermissions = {
|
|
|
4083
4084
|
"settings.general": [{ action: `plugin::${PLUGIN_ID}.settings.general`, subject: null }],
|
|
4084
4085
|
"settings.navigation": [{ action: `plugin::${PLUGIN_ID}.settings.navigation`, subject: null }]
|
|
4085
4086
|
};
|
|
4086
|
-
const CMEditViewAside = ({
|
|
4087
|
+
const CMEditViewAside = ({ model }) => {
|
|
4087
4088
|
const { contentTypes } = useAllContentTypes();
|
|
4088
4089
|
const { config } = usePluginConfig();
|
|
4089
4090
|
const { formatMessage } = useIntl();
|
|
@@ -4096,36 +4097,6 @@ const CMEditViewAside = ({ documentId, model, activeTab }) => {
|
|
|
4096
4097
|
const contentType = contentTypes?.find((ct) => ct.uid === model);
|
|
4097
4098
|
setIsAllowedContentType(!!contentType?.pluginOptions?.webatlas?.enabled);
|
|
4098
4099
|
}, [contentTypes, model]);
|
|
4099
|
-
useEffect(() => {
|
|
4100
|
-
const isWebatlasLabel = (label) => label.textContent?.startsWith("webatlas");
|
|
4101
|
-
const cleanupLabels = () => {
|
|
4102
|
-
const labels = document.querySelectorAll("label");
|
|
4103
|
-
labels.forEach((label) => {
|
|
4104
|
-
if (!isWebatlasLabel(label)) return;
|
|
4105
|
-
const container = label.parentElement?.parentElement;
|
|
4106
|
-
const parent = container?.parentElement;
|
|
4107
|
-
const greatGrandParent = parent?.parentElement?.parentElement;
|
|
4108
|
-
if (!container || !parent) return;
|
|
4109
|
-
const parentWebatlasCount = Array.from(parent.querySelectorAll("label")).filter(
|
|
4110
|
-
isWebatlasLabel
|
|
4111
|
-
).length;
|
|
4112
|
-
const childrenCount = parent.children.length;
|
|
4113
|
-
if (greatGrandParent && greatGrandParent?.querySelectorAll("label").length === Array.from(greatGrandParent.querySelectorAll("label")).filter(isWebatlasLabel).length) {
|
|
4114
|
-
greatGrandParent.remove();
|
|
4115
|
-
} else if (childrenCount === 1 || childrenCount === 2 && parentWebatlasCount === 2) {
|
|
4116
|
-
parent.remove();
|
|
4117
|
-
} else {
|
|
4118
|
-
container.remove();
|
|
4119
|
-
}
|
|
4120
|
-
});
|
|
4121
|
-
};
|
|
4122
|
-
const timeoutId = setTimeout(() => {
|
|
4123
|
-
cleanupLabels();
|
|
4124
|
-
const secondTimeoutId = setTimeout(cleanupLabels, 1e3);
|
|
4125
|
-
return () => clearTimeout(secondTimeoutId);
|
|
4126
|
-
}, 100);
|
|
4127
|
-
return () => clearTimeout(timeoutId);
|
|
4128
|
-
}, [documentId, model, activeTab]);
|
|
4129
4100
|
useEffect(() => {
|
|
4130
4101
|
if (!config) return;
|
|
4131
4102
|
setIsActiveContentType(false);
|
|
@@ -4170,7 +4141,7 @@ const index = {
|
|
|
4170
4141
|
id: `${PLUGIN_ID}.link.paths`,
|
|
4171
4142
|
defaultMessage: "Paths"
|
|
4172
4143
|
},
|
|
4173
|
-
Component: () => import("./index-
|
|
4144
|
+
Component: () => import("./index-BdyLsiR4.mjs"),
|
|
4174
4145
|
permissions: [pluginPermissions["page.routes"][0]]
|
|
4175
4146
|
});
|
|
4176
4147
|
app.addMenuLink({
|
|
@@ -4180,7 +4151,7 @@ const index = {
|
|
|
4180
4151
|
id: `${PLUGIN_ID}.link.navigation`,
|
|
4181
4152
|
defaultMessage: "Navigation"
|
|
4182
4153
|
},
|
|
4183
|
-
Component: () => import("./index-
|
|
4154
|
+
Component: () => import("./index-DkfE_arE.mjs"),
|
|
4184
4155
|
permissions: [pluginPermissions["page.navigation"][0]]
|
|
4185
4156
|
});
|
|
4186
4157
|
app.addSettingsLink(
|
|
@@ -4198,7 +4169,7 @@ const index = {
|
|
|
4198
4169
|
},
|
|
4199
4170
|
id: `${PLUGIN_ID}-general`,
|
|
4200
4171
|
to: `${PLUGIN_ID}/general`,
|
|
4201
|
-
Component: () => import("./index-
|
|
4172
|
+
Component: () => import("./index-BMTlUOrK.mjs"),
|
|
4202
4173
|
permissions: [pluginPermissions["settings.general"][0]]
|
|
4203
4174
|
}
|
|
4204
4175
|
);
|
|
@@ -4209,7 +4180,7 @@ const index = {
|
|
|
4209
4180
|
},
|
|
4210
4181
|
id: `${PLUGIN_ID}-navigation`,
|
|
4211
4182
|
to: `${PLUGIN_ID}/navigation`,
|
|
4212
|
-
Component: () => import("./index-
|
|
4183
|
+
Component: () => import("./index-DkEReTkt.mjs"),
|
|
4213
4184
|
permissions: [pluginPermissions["settings.navigation"][0]]
|
|
4214
4185
|
});
|
|
4215
4186
|
app.registerPlugin({
|
|
@@ -4250,4 +4221,4 @@ export {
|
|
|
4250
4221
|
pluginPermissions as p,
|
|
4251
4222
|
useApi as u
|
|
4252
4223
|
};
|
|
4253
|
-
//# sourceMappingURL=index-
|
|
4224
|
+
//# sourceMappingURL=index-BX3hiURm.mjs.map
|