@mattisvensson/strapi-plugin-webatlas 0.8.1 → 0.8.2
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/dist/_chunks/SettingTitle-BaaQ_99D.mjs +69 -0
- package/dist/_chunks/SettingTitle-BaaQ_99D.mjs.map +1 -0
- package/dist/_chunks/SettingTitle-D5oNwpzC.js +67 -0
- package/dist/_chunks/SettingTitle-DDZxIqee.js +68 -0
- package/dist/_chunks/SettingTitle-DDZxIqee.js.map +1 -0
- package/dist/_chunks/SettingTitle-IwvX4Kb5.mjs +68 -0
- package/dist/_chunks/{de-Dt80IqMG.mjs → de-B9pq-AJZ.mjs} +10 -3
- package/dist/_chunks/{de-Dt80IqMG.mjs.map → de-B9pq-AJZ.mjs.map} +1 -1
- package/dist/_chunks/{de-CDBoUBzw.js → de-DlQxM8Tg.js} +10 -3
- package/dist/_chunks/{de-CDBoUBzw.js.map → de-DlQxM8Tg.js.map} +1 -1
- package/dist/_chunks/{en-BHxDiueo.mjs → en-Dmbcf7gp.mjs} +10 -3
- package/dist/_chunks/{en-BHxDiueo.mjs.map → en-Dmbcf7gp.mjs.map} +1 -1
- package/dist/_chunks/{en-DfvURaup.js → en-DrhxIwOr.js} +10 -3
- package/dist/_chunks/{en-DfvURaup.js.map → en-DrhxIwOr.js.map} +1 -1
- package/dist/_chunks/{index--oj1eNcM.js → index--XAogZgv.js} +2 -2
- package/dist/_chunks/{index--oj1eNcM.js.map → index--XAogZgv.js.map} +1 -1
- package/dist/_chunks/{index-BCPgfhBx.js → index-2lVgPz4a.js} +37 -33
- package/dist/_chunks/{index-BKdvSgDB.js → index-B1dEY-gs.js} +1 -1
- package/dist/_chunks/{index-DUgh4AJb.js → index-B1mbYb2_.js} +94 -53
- package/dist/_chunks/{index-CAged_xE.mjs → index-B2tjc_lG.mjs} +2 -2
- package/dist/_chunks/{index-CAged_xE.mjs.map → index-B2tjc_lG.mjs.map} +1 -1
- package/dist/_chunks/{index-YzPuPn68.js → index-BFuwbmZy.js} +22 -9
- package/dist/_chunks/{index-CTA8agp7.mjs → index-D2Meknib.mjs} +10 -8
- package/dist/_chunks/{index-D29zBs5w.mjs → index-D2SIGcj3.mjs} +23 -9
- package/dist/_chunks/{index-D29zBs5w.mjs.map → index-D2SIGcj3.mjs.map} +1 -1
- package/dist/_chunks/{index-D72CZ5b7.js → index-DH0mFrgH.js} +38 -32
- package/dist/_chunks/index-DH0mFrgH.js.map +1 -0
- package/dist/_chunks/{index-DTPDMxs_.js → index-DKtlnMlv.js} +23 -8
- package/dist/_chunks/{index-YzPuPn68.js.map → index-DKtlnMlv.js.map} +1 -1
- package/dist/_chunks/{index-Dxn0NT06.js → index-DOMrViWi.js} +11 -8
- package/dist/_chunks/index-DOMrViWi.js.map +1 -0
- package/dist/_chunks/{index-BBn1ZvsE.mjs → index-DXRtXlZW.mjs} +36 -30
- package/dist/_chunks/index-DXRtXlZW.mjs.map +1 -0
- package/dist/_chunks/{index-CtFERXkl.js → index-Df365kgY.js} +95 -54
- package/dist/_chunks/index-Df365kgY.js.map +1 -0
- package/dist/_chunks/{index-CHRBu9Xy.mjs → index-Dm_GIRd4.mjs} +35 -31
- package/dist/_chunks/{index-DMpiX4hP.mjs → index-Dt-mlR1F.mjs} +11 -9
- package/dist/_chunks/index-Dt-mlR1F.mjs.map +1 -0
- package/dist/_chunks/{index-DJBXRNlE.mjs → index-QFbHwlyj.mjs} +94 -53
- package/dist/_chunks/index-QFbHwlyj.mjs.map +1 -0
- package/dist/_chunks/{index-Nx4IRYIK.mjs → index-QU9SZ_H9.mjs} +93 -52
- package/dist/_chunks/{index-CUlRMqGG.mjs → index-_49Fvwqq.mjs} +22 -8
- package/dist/_chunks/{index-Rfm9O167.mjs → index-aAKsnALd.mjs} +1 -1
- package/dist/_chunks/{index-CbW6k4FH.js → index-g8wz2qoC.js} +9 -8
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/pages/Navigation/RouteItem.d.ts +1 -0
- package/dist/admin/src/pages/Settings/ContentBox.d.ts +5 -0
- package/dist/admin/src/pages/Settings/PageWrapper.d.ts +2 -1
- package/dist/admin/src/pages/Settings/SettingTitle.d.ts +4 -0
- package/dist/admin/src/pages/Settings/index.d.ts +4 -0
- package/dist/pluginId.d.ts +2 -1
- package/dist/server/index.js +61 -52
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +61 -52
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/utils/index.d.ts +6 -0
- package/dist/server/src/utils/navItemHandler.d.ts +1 -1
- package/dist/server/src/utils/reduceDepthOfOrphanedItems.d.ts +2 -0
- package/package.json +1 -1
- package/dist/_chunks/PageWrapper-Bp9vGwpG.js +0 -54
- package/dist/_chunks/PageWrapper-BvOY7VCN.mjs +0 -55
- package/dist/_chunks/PageWrapper-BzDrMm2d.js +0 -55
- package/dist/_chunks/PageWrapper-BzDrMm2d.js.map +0 -1
- package/dist/_chunks/PageWrapper-oLhcg9BA.mjs +0 -56
- package/dist/_chunks/PageWrapper-oLhcg9BA.mjs.map +0 -1
- package/dist/_chunks/index-BCPgfhBx.js.map +0 -1
- package/dist/_chunks/index-CHRBu9Xy.mjs.map +0 -1
- package/dist/_chunks/index-CbW6k4FH.js.map +0 -1
- package/dist/_chunks/index-CtFERXkl.js.map +0 -1
- package/dist/_chunks/index-DJBXRNlE.mjs.map +0 -1
- package/dist/_chunks/index-DMpiX4hP.mjs.map +0 -1
- package/dist/admin/src/components/modals/fields/Visibility.d.ts +0 -5
- package/dist/admin/src/components/modals/fields/index.d.ts +0 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Flex, Typography, Box } from "@strapi/design-system";
|
|
3
|
+
import { Page, Layouts } from "@strapi/strapi/admin";
|
|
4
|
+
import { P as PLUGIN_NAME, g as getTranslation } from "./index-Dt-mlR1F.mjs";
|
|
5
|
+
import { useIntl } from "react-intl";
|
|
6
|
+
import { Check } from "@strapi/icons";
|
|
7
|
+
function PageWrapper({
|
|
8
|
+
save,
|
|
9
|
+
isSaving,
|
|
10
|
+
disabledCondition,
|
|
11
|
+
subtitle,
|
|
12
|
+
children
|
|
13
|
+
}) {
|
|
14
|
+
const { formatMessage } = useIntl();
|
|
15
|
+
return /* @__PURE__ */ jsxs(Page.Main, { children: [
|
|
16
|
+
/* @__PURE__ */ jsx(
|
|
17
|
+
Layouts.Header,
|
|
18
|
+
{
|
|
19
|
+
title: PLUGIN_NAME,
|
|
20
|
+
subtitle,
|
|
21
|
+
primaryAction: disabledCondition !== void 0 && save && /* @__PURE__ */ jsx(
|
|
22
|
+
Button,
|
|
23
|
+
{
|
|
24
|
+
type: "submit",
|
|
25
|
+
onClick: () => save(),
|
|
26
|
+
loading: isSaving,
|
|
27
|
+
disabled: disabledCondition || isSaving,
|
|
28
|
+
startIcon: /* @__PURE__ */ jsx(Check, {}),
|
|
29
|
+
children: formatMessage({
|
|
30
|
+
id: getTranslation("save"),
|
|
31
|
+
defaultMessage: "Save"
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
),
|
|
37
|
+
/* @__PURE__ */ jsx(Layouts.Content, { children: /* @__PURE__ */ jsx(Flex, { direction: "column", alignItems: "stretch", gap: 6, children }) })
|
|
38
|
+
] });
|
|
39
|
+
}
|
|
40
|
+
function ContentBox({ title, children }) {
|
|
41
|
+
return /* @__PURE__ */ jsxs(
|
|
42
|
+
Flex,
|
|
43
|
+
{
|
|
44
|
+
background: "neutral0",
|
|
45
|
+
hasRadius: true,
|
|
46
|
+
paddingTop: 6,
|
|
47
|
+
paddingBottom: 6,
|
|
48
|
+
paddingLeft: 7,
|
|
49
|
+
paddingRight: 7,
|
|
50
|
+
shadow: "tableShadow",
|
|
51
|
+
direction: "column",
|
|
52
|
+
alignItems: "stretch",
|
|
53
|
+
gap: 4,
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ jsx(Typography, { variant: "delta", as: "h3", children: title }),
|
|
56
|
+
/* @__PURE__ */ jsx(Box, { children })
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
function SettingTitle({ children }) {
|
|
62
|
+
return /* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", children });
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
ContentBox as C,
|
|
66
|
+
PageWrapper as P,
|
|
67
|
+
SettingTitle as S
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=SettingTitle-BaaQ_99D.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingTitle-BaaQ_99D.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 '../../../../pluginId';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport { Check } from '@strapi/icons';\n\nexport default function PageWrapper({ \n save, \n isSaving,\n disabledCondition,\n subtitle,\n children\n}: {\n save?: () => void, \n isSaving: boolean,\n disabledCondition: boolean,\n subtitle: string,\n children: React.ReactNode \n}) {\n\n const { formatMessage } = useIntl();\n \n return (\n <Page.Main>\n <Layouts.Header\n title={PLUGIN_NAME}\n subtitle={subtitle}\n primaryAction={ disabledCondition !== undefined && save &&\n <Button\n type=\"submit\"\n onClick={() => save()}\n loading={isSaving}\n disabled={disabledCondition || isSaving}\n startIcon={<Check />}\n >\n {/* <Check /> */}\n {formatMessage({\n id: getTranslation('save'),\n defaultMessage: 'Save',\n })}\n </Button>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {children}\n </Flex>\n </Layouts.Content>\n </Page.Main>\n )\n}","import { Typography, Flex, Box } from '@strapi/design-system';\n\nexport default function ContentBox({ title, children }: { title: string, children: React.ReactNode }) {\n return <Flex\n background='neutral0'\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"tableShadow\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n >\n <Typography variant=\"delta\" as=\"h3\">\n {title}\n </Typography>\n <Box>\n {children}\n </Box>\n </Flex>\n}","import { Typography } from '@strapi/design-system'\n\nexport default function SettingTitle({ children }: { children: React.ReactNode }) {\n return (\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {children}\n </Typography>\n )\n}"],"names":[],"mappings":";;;;;;AAOA,SAAwB,YAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AAEK,QAAA,EAAE,cAAc,IAAI,QAAQ;AAGhC,SAAA,qBAAC,KAAK,MAAL,EACC,UAAA;AAAA,IAAA;AAAA,MAAC,QAAQ;AAAA,MAAR;AAAA,QACC,OAAO;AAAA,QACP;AAAA,QACA,eAAgB,sBAAsB,UAAa,QACjD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,KAAK;AAAA,YACpB,SAAS;AAAA,YACT,UAAU,qBAAqB;AAAA,YAC/B,+BAAY,OAAM,EAAA;AAAA,YAGjB,UAAc,cAAA;AAAA,cACb,IAAI,eAAe,MAAM;AAAA,cACzB,gBAAgB;AAAA,YACjB,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAEJ;AAAA,IACC,oBAAA,QAAQ,SAAR,EACC,UAAC,oBAAA,MAAA,EAAK,WAAU,UAAS,YAAW,WAAU,KAAK,GAChD,UACH,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;ACjDA,SAAwB,WAAW,EAAE,OAAO,YAA0D;AAC7F,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACN,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,YAAW,EAAA,SAAQ,SAAQ,IAAG,MAC5B,UACH,OAAA;AAAA,QACA,oBAAC,OACE,SACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AACF;ACpBwB,SAAA,aAAa,EAAE,YAA2C;AAChF,6BACG,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UACH;AAEJ;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
const designSystem = require("@strapi/design-system");
|
|
4
|
+
const admin = require("@strapi/strapi/admin");
|
|
5
|
+
const index = require("./index-g8wz2qoC.js");
|
|
6
|
+
const reactIntl = require("react-intl");
|
|
7
|
+
const icons = require("@strapi/icons");
|
|
8
|
+
function PageWrapper({
|
|
9
|
+
save,
|
|
10
|
+
isSaving,
|
|
11
|
+
disabledCondition,
|
|
12
|
+
subtitle,
|
|
13
|
+
children
|
|
14
|
+
}) {
|
|
15
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
16
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(admin.Page.Main, { children: [
|
|
17
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
+
admin.Layouts.Header,
|
|
19
|
+
{
|
|
20
|
+
title: index.PLUGIN_NAME,
|
|
21
|
+
subtitle,
|
|
22
|
+
primaryAction: disabledCondition !== void 0 && save && /* @__PURE__ */ jsxRuntime.jsx(
|
|
23
|
+
designSystem.Button,
|
|
24
|
+
{
|
|
25
|
+
type: "submit",
|
|
26
|
+
onClick: () => save(),
|
|
27
|
+
loading: isSaving,
|
|
28
|
+
disabled: disabledCondition || isSaving,
|
|
29
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
|
|
30
|
+
children: formatMessage({
|
|
31
|
+
id: index.getTranslation("save"),
|
|
32
|
+
defaultMessage: "Save"
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children }) })
|
|
39
|
+
] });
|
|
40
|
+
}
|
|
41
|
+
function ContentBox({ title, children }) {
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
43
|
+
designSystem.Flex,
|
|
44
|
+
{
|
|
45
|
+
background: "neutral0",
|
|
46
|
+
hasRadius: true,
|
|
47
|
+
paddingTop: 6,
|
|
48
|
+
paddingBottom: 6,
|
|
49
|
+
paddingLeft: 7,
|
|
50
|
+
paddingRight: 7,
|
|
51
|
+
shadow: "tableShadow",
|
|
52
|
+
direction: "column",
|
|
53
|
+
alignItems: "stretch",
|
|
54
|
+
gap: 4,
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h3", children: title }),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { children })
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
function SettingTitle({ children }) {
|
|
63
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children });
|
|
64
|
+
}
|
|
65
|
+
exports.ContentBox = ContentBox;
|
|
66
|
+
exports.PageWrapper = PageWrapper;
|
|
67
|
+
exports.SettingTitle = SettingTitle;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
const designSystem = require("@strapi/design-system");
|
|
4
|
+
const admin = require("@strapi/strapi/admin");
|
|
5
|
+
const index = require("./index-DOMrViWi.js");
|
|
6
|
+
const reactIntl = require("react-intl");
|
|
7
|
+
const icons = require("@strapi/icons");
|
|
8
|
+
function PageWrapper({
|
|
9
|
+
save,
|
|
10
|
+
isSaving,
|
|
11
|
+
disabledCondition,
|
|
12
|
+
subtitle,
|
|
13
|
+
children
|
|
14
|
+
}) {
|
|
15
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
16
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(admin.Page.Main, { children: [
|
|
17
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
+
admin.Layouts.Header,
|
|
19
|
+
{
|
|
20
|
+
title: index.PLUGIN_NAME,
|
|
21
|
+
subtitle,
|
|
22
|
+
primaryAction: disabledCondition !== void 0 && save && /* @__PURE__ */ jsxRuntime.jsx(
|
|
23
|
+
designSystem.Button,
|
|
24
|
+
{
|
|
25
|
+
type: "submit",
|
|
26
|
+
onClick: () => save(),
|
|
27
|
+
loading: isSaving,
|
|
28
|
+
disabled: disabledCondition || isSaving,
|
|
29
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
|
|
30
|
+
children: formatMessage({
|
|
31
|
+
id: index.getTranslation("save"),
|
|
32
|
+
defaultMessage: "Save"
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children }) })
|
|
39
|
+
] });
|
|
40
|
+
}
|
|
41
|
+
function ContentBox({ title, children }) {
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
43
|
+
designSystem.Flex,
|
|
44
|
+
{
|
|
45
|
+
background: "neutral0",
|
|
46
|
+
hasRadius: true,
|
|
47
|
+
paddingTop: 6,
|
|
48
|
+
paddingBottom: 6,
|
|
49
|
+
paddingLeft: 7,
|
|
50
|
+
paddingRight: 7,
|
|
51
|
+
shadow: "tableShadow",
|
|
52
|
+
direction: "column",
|
|
53
|
+
alignItems: "stretch",
|
|
54
|
+
gap: 4,
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h3", children: title }),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { children })
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
function SettingTitle({ children }) {
|
|
63
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children });
|
|
64
|
+
}
|
|
65
|
+
exports.ContentBox = ContentBox;
|
|
66
|
+
exports.PageWrapper = PageWrapper;
|
|
67
|
+
exports.SettingTitle = SettingTitle;
|
|
68
|
+
//# sourceMappingURL=SettingTitle-DDZxIqee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingTitle-DDZxIqee.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 '../../../../pluginId';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport { Check } from '@strapi/icons';\n\nexport default function PageWrapper({ \n save, \n isSaving,\n disabledCondition,\n subtitle,\n children\n}: {\n save?: () => void, \n isSaving: boolean,\n disabledCondition: boolean,\n subtitle: string,\n children: React.ReactNode \n}) {\n\n const { formatMessage } = useIntl();\n \n return (\n <Page.Main>\n <Layouts.Header\n title={PLUGIN_NAME}\n subtitle={subtitle}\n primaryAction={ disabledCondition !== undefined && save &&\n <Button\n type=\"submit\"\n onClick={() => save()}\n loading={isSaving}\n disabled={disabledCondition || isSaving}\n startIcon={<Check />}\n >\n {/* <Check /> */}\n {formatMessage({\n id: getTranslation('save'),\n defaultMessage: 'Save',\n })}\n </Button>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {children}\n </Flex>\n </Layouts.Content>\n </Page.Main>\n )\n}","import { Typography, Flex, Box } from '@strapi/design-system';\n\nexport default function ContentBox({ title, children }: { title: string, children: React.ReactNode }) {\n return <Flex\n background='neutral0'\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"tableShadow\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n >\n <Typography variant=\"delta\" as=\"h3\">\n {title}\n </Typography>\n <Box>\n {children}\n </Box>\n </Flex>\n}","import { Typography } from '@strapi/design-system'\n\nexport default function SettingTitle({ children }: { children: React.ReactNode }) {\n return (\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {children}\n </Typography>\n )\n}"],"names":["useIntl","jsxs","Page","jsx","Layouts","PLUGIN_NAME","Button","Check","getTranslation","Flex","Typography","Box"],"mappings":";;;;;;;AAOA,SAAwB,YAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AAEK,QAAA,EAAE,cAAc,IAAIA,kBAAQ;AAGhC,SAAAC,gCAACC,MAAAA,KAAK,MAAL,EACC,UAAA;AAAA,IAAAC,2BAAA;AAAA,MAACC,MAAAA,QAAQ;AAAA,MAAR;AAAA,QACC,OAAOC,MAAA;AAAA,QACP;AAAA,QACA,eAAgB,sBAAsB,UAAa,QACjDF,2BAAA;AAAA,UAACG,aAAA;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,KAAK;AAAA,YACpB,SAAS;AAAA,YACT,UAAU,qBAAqB;AAAA,YAC/B,0CAAYC,MAAM,OAAA,EAAA;AAAA,YAGjB,UAAc,cAAA;AAAA,cACb,IAAIC,qBAAe,MAAM;AAAA,cACzB,gBAAgB;AAAA,YACjB,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAEJ;AAAA,IACCL,2BAAA,IAAAC,MAAA,QAAQ,SAAR,EACC,UAACD,2BAAAA,IAAAM,aAAAA,MAAA,EAAK,WAAU,UAAS,YAAW,WAAU,KAAK,GAChD,UACH,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;ACjDA,SAAwB,WAAW,EAAE,OAAO,YAA0D;AAC7F,SAAAR,2BAAA;AAAA,IAACQ,aAAA;AAAA,IAAA;AAAA,MACN,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,+BAACO,aAAAA,YAAW,EAAA,SAAQ,SAAQ,IAAG,MAC5B,UACH,OAAA;AAAA,QACAP,+BAACQ,aAAAA,OACE,SACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AACF;ACpBwB,SAAA,aAAa,EAAE,YAA2C;AAChF,wCACGD,aAAW,YAAA,EAAA,SAAQ,SAAQ,WAAU,cACnC,UACH;AAEJ;;;;"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Flex, Typography, Box } from "@strapi/design-system";
|
|
3
|
+
import { Page, Layouts } from "@strapi/strapi/admin";
|
|
4
|
+
import { P as PLUGIN_NAME, g as getTranslation } from "./index-D2Meknib.mjs";
|
|
5
|
+
import { useIntl } from "react-intl";
|
|
6
|
+
import { Check } from "@strapi/icons";
|
|
7
|
+
function PageWrapper({
|
|
8
|
+
save,
|
|
9
|
+
isSaving,
|
|
10
|
+
disabledCondition,
|
|
11
|
+
subtitle,
|
|
12
|
+
children
|
|
13
|
+
}) {
|
|
14
|
+
const { formatMessage } = useIntl();
|
|
15
|
+
return /* @__PURE__ */ jsxs(Page.Main, { children: [
|
|
16
|
+
/* @__PURE__ */ jsx(
|
|
17
|
+
Layouts.Header,
|
|
18
|
+
{
|
|
19
|
+
title: PLUGIN_NAME,
|
|
20
|
+
subtitle,
|
|
21
|
+
primaryAction: disabledCondition !== void 0 && save && /* @__PURE__ */ jsx(
|
|
22
|
+
Button,
|
|
23
|
+
{
|
|
24
|
+
type: "submit",
|
|
25
|
+
onClick: () => save(),
|
|
26
|
+
loading: isSaving,
|
|
27
|
+
disabled: disabledCondition || isSaving,
|
|
28
|
+
startIcon: /* @__PURE__ */ jsx(Check, {}),
|
|
29
|
+
children: formatMessage({
|
|
30
|
+
id: getTranslation("save"),
|
|
31
|
+
defaultMessage: "Save"
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
),
|
|
37
|
+
/* @__PURE__ */ jsx(Layouts.Content, { children: /* @__PURE__ */ jsx(Flex, { direction: "column", alignItems: "stretch", gap: 6, children }) })
|
|
38
|
+
] });
|
|
39
|
+
}
|
|
40
|
+
function ContentBox({ title, children }) {
|
|
41
|
+
return /* @__PURE__ */ jsxs(
|
|
42
|
+
Flex,
|
|
43
|
+
{
|
|
44
|
+
background: "neutral0",
|
|
45
|
+
hasRadius: true,
|
|
46
|
+
paddingTop: 6,
|
|
47
|
+
paddingBottom: 6,
|
|
48
|
+
paddingLeft: 7,
|
|
49
|
+
paddingRight: 7,
|
|
50
|
+
shadow: "tableShadow",
|
|
51
|
+
direction: "column",
|
|
52
|
+
alignItems: "stretch",
|
|
53
|
+
gap: 4,
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ jsx(Typography, { variant: "delta", as: "h3", children: title }),
|
|
56
|
+
/* @__PURE__ */ jsx(Box, { children })
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
function SettingTitle({ children }) {
|
|
62
|
+
return /* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", children });
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
ContentBox as C,
|
|
66
|
+
PageWrapper as P,
|
|
67
|
+
SettingTitle as S
|
|
68
|
+
};
|
|
@@ -12,7 +12,10 @@ const de = {
|
|
|
12
12
|
"webatlas.routes.page.emptyRoutes": "Es wurden keine Routen gefunden",
|
|
13
13
|
"webatlas.routes.page.column.type": "Typ",
|
|
14
14
|
"webatlas.routes.page.searchPlaceholder": "Routen suchen",
|
|
15
|
-
"webatlas.settings.page.subtitle": "Konfigurieren Sie
|
|
15
|
+
"webatlas.settings.page.general.subtitle": "Konfigurieren Sie allgemeine Einstellungen",
|
|
16
|
+
"webatlas.settings.page.general.webatlasVersion": "Webatlas Version",
|
|
17
|
+
"webatlas.settings.page.general.contentTypes": "Inhaltstypen",
|
|
18
|
+
"webatlas.settings.page.general.details": "Details",
|
|
16
19
|
"webatlas.settings.page.enabledContentTypes": "Aktivierte Inhaltstypen",
|
|
17
20
|
"webatlas.settings.page.enabledContentTypes.hint": "Wählen Sie die Inhaltstypen aus, für die Sie URL-Aliase aktivieren möchten",
|
|
18
21
|
"webatlas.settings.page.enabledContentTypes.placeholder": "Inhaltstypen auswählen...",
|
|
@@ -24,6 +27,9 @@ const de = {
|
|
|
24
27
|
"webatlas.settings.page.urlAliasPattern.hint": 'Das Muster, das dem generierten URL-Alias vorangestellt wird. Wenn Sie z.B. "blog" eingeben und der Wert des Standardfelds "Mein erster Beitrag" ist, wird der generierte URL-Alias "blog/mein-erster-beitrag" sein. Lassen Sie es leer für kein Präfix.',
|
|
25
28
|
"webatlas.settings.page.urlAliasPattern.tooltip": "Führende und abschließende Schrägstriche werden entfernt. Leerzeichen werden durch Bindestriche ersetzt. Sonderzeichen werden kodiert.",
|
|
26
29
|
"webatlas.settings.page.urlAliasPattern.placeholder": "z.B. blog",
|
|
30
|
+
"webatlas.settings.page.navigation.subtitle": "Konfigurieren Sie Navigationseinstellungen",
|
|
31
|
+
"webatlas.settings.page.navigation.navigation": "Navigation",
|
|
32
|
+
"webatlas.settings.page.navigation.maxNavDepth.label": "Maximale Tiefe des Navigationsbaums",
|
|
27
33
|
"webatlas.modal.navOverview.confirmText": "Neue Navigation",
|
|
28
34
|
"webatlas.modal.navOverview.closeText": "Abbrechen",
|
|
29
35
|
"webatlas.modal.navOverview.titleText": "Navigationsübersicht",
|
|
@@ -70,7 +76,6 @@ const de = {
|
|
|
70
76
|
"webatlas.components.URLInfo.checking": "Überprüfe, ob die URL verfügbar ist...",
|
|
71
77
|
"webatlas.components.URLInfo.available": "URL ist verfügbar",
|
|
72
78
|
"webatlas.components.URLInfo.notAvailable": "URL ist nicht verfügbar. Ersetzt durch",
|
|
73
|
-
"webatlas.components.CMEditViewAside.loading": "Wird geladen...",
|
|
74
79
|
"webatlas.components.CMEditViewAside.notAllowed.start": "Dieser Inhaltstyp ist nicht erlaubt für",
|
|
75
80
|
"webatlas.components.CMEditViewAside.notAllowed.end": "Wenn Sie ihn verwenden möchten, wenden Sie sich bitte an Ihren Administrator",
|
|
76
81
|
"webatlas.components.CMEditViewAside.notConfigured.start": "Dieser Inhaltstyp ist nicht konfiguriert für",
|
|
@@ -106,6 +111,8 @@ const de = {
|
|
|
106
111
|
"webatlas.modified": "Geändert",
|
|
107
112
|
"webatlas.deleted": "Gelöscht",
|
|
108
113
|
"webatlas.restore": "Wiederherstellen",
|
|
114
|
+
"webatlas.loading": "Laden...",
|
|
115
|
+
"webatlas.version": "Version",
|
|
109
116
|
"webatlas.notification.error": "Ein Fehler ist aufgetreten",
|
|
110
117
|
"webatlas.notification.settings.saved": "Einstellungen erfolgreich gespeichert",
|
|
111
118
|
"webatlas.notification.routes.fetchFailed": "Routen konnten nicht abgerufen werden",
|
|
@@ -121,4 +128,4 @@ const de = {
|
|
|
121
128
|
export {
|
|
122
129
|
de as default
|
|
123
130
|
};
|
|
124
|
-
//# sourceMappingURL=de-
|
|
131
|
+
//# sourceMappingURL=de-B9pq-AJZ.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de-
|
|
1
|
+
{"version":3,"file":"de-B9pq-AJZ.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -14,7 +14,10 @@ const de = {
|
|
|
14
14
|
"webatlas.routes.page.emptyRoutes": "Es wurden keine Routen gefunden",
|
|
15
15
|
"webatlas.routes.page.column.type": "Typ",
|
|
16
16
|
"webatlas.routes.page.searchPlaceholder": "Routen suchen",
|
|
17
|
-
"webatlas.settings.page.subtitle": "Konfigurieren Sie
|
|
17
|
+
"webatlas.settings.page.general.subtitle": "Konfigurieren Sie allgemeine Einstellungen",
|
|
18
|
+
"webatlas.settings.page.general.webatlasVersion": "Webatlas Version",
|
|
19
|
+
"webatlas.settings.page.general.contentTypes": "Inhaltstypen",
|
|
20
|
+
"webatlas.settings.page.general.details": "Details",
|
|
18
21
|
"webatlas.settings.page.enabledContentTypes": "Aktivierte Inhaltstypen",
|
|
19
22
|
"webatlas.settings.page.enabledContentTypes.hint": "Wählen Sie die Inhaltstypen aus, für die Sie URL-Aliase aktivieren möchten",
|
|
20
23
|
"webatlas.settings.page.enabledContentTypes.placeholder": "Inhaltstypen auswählen...",
|
|
@@ -26,6 +29,9 @@ const de = {
|
|
|
26
29
|
"webatlas.settings.page.urlAliasPattern.hint": 'Das Muster, das dem generierten URL-Alias vorangestellt wird. Wenn Sie z.B. "blog" eingeben und der Wert des Standardfelds "Mein erster Beitrag" ist, wird der generierte URL-Alias "blog/mein-erster-beitrag" sein. Lassen Sie es leer für kein Präfix.',
|
|
27
30
|
"webatlas.settings.page.urlAliasPattern.tooltip": "Führende und abschließende Schrägstriche werden entfernt. Leerzeichen werden durch Bindestriche ersetzt. Sonderzeichen werden kodiert.",
|
|
28
31
|
"webatlas.settings.page.urlAliasPattern.placeholder": "z.B. blog",
|
|
32
|
+
"webatlas.settings.page.navigation.subtitle": "Konfigurieren Sie Navigationseinstellungen",
|
|
33
|
+
"webatlas.settings.page.navigation.navigation": "Navigation",
|
|
34
|
+
"webatlas.settings.page.navigation.maxNavDepth.label": "Maximale Tiefe des Navigationsbaums",
|
|
29
35
|
"webatlas.modal.navOverview.confirmText": "Neue Navigation",
|
|
30
36
|
"webatlas.modal.navOverview.closeText": "Abbrechen",
|
|
31
37
|
"webatlas.modal.navOverview.titleText": "Navigationsübersicht",
|
|
@@ -72,7 +78,6 @@ const de = {
|
|
|
72
78
|
"webatlas.components.URLInfo.checking": "Überprüfe, ob die URL verfügbar ist...",
|
|
73
79
|
"webatlas.components.URLInfo.available": "URL ist verfügbar",
|
|
74
80
|
"webatlas.components.URLInfo.notAvailable": "URL ist nicht verfügbar. Ersetzt durch",
|
|
75
|
-
"webatlas.components.CMEditViewAside.loading": "Wird geladen...",
|
|
76
81
|
"webatlas.components.CMEditViewAside.notAllowed.start": "Dieser Inhaltstyp ist nicht erlaubt für",
|
|
77
82
|
"webatlas.components.CMEditViewAside.notAllowed.end": "Wenn Sie ihn verwenden möchten, wenden Sie sich bitte an Ihren Administrator",
|
|
78
83
|
"webatlas.components.CMEditViewAside.notConfigured.start": "Dieser Inhaltstyp ist nicht konfiguriert für",
|
|
@@ -108,6 +113,8 @@ const de = {
|
|
|
108
113
|
"webatlas.modified": "Geändert",
|
|
109
114
|
"webatlas.deleted": "Gelöscht",
|
|
110
115
|
"webatlas.restore": "Wiederherstellen",
|
|
116
|
+
"webatlas.loading": "Laden...",
|
|
117
|
+
"webatlas.version": "Version",
|
|
111
118
|
"webatlas.notification.error": "Ein Fehler ist aufgetreten",
|
|
112
119
|
"webatlas.notification.settings.saved": "Einstellungen erfolgreich gespeichert",
|
|
113
120
|
"webatlas.notification.routes.fetchFailed": "Routen konnten nicht abgerufen werden",
|
|
@@ -121,4 +128,4 @@ const de = {
|
|
|
121
128
|
"webatlas.settings.section.navigation": "Navigation"
|
|
122
129
|
};
|
|
123
130
|
exports.default = de;
|
|
124
|
-
//# sourceMappingURL=de-
|
|
131
|
+
//# sourceMappingURL=de-DlQxM8Tg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de-
|
|
1
|
+
{"version":3,"file":"de-DlQxM8Tg.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -12,7 +12,10 @@ const en = {
|
|
|
12
12
|
"webatlas.routes.page.emptyRoutes": "No routes found",
|
|
13
13
|
"webatlas.routes.page.column.type": "Type",
|
|
14
14
|
"webatlas.routes.page.searchPlaceholder": "Search routes",
|
|
15
|
-
"webatlas.settings.page.subtitle": "Configure
|
|
15
|
+
"webatlas.settings.page.general.subtitle": "Configure general settings",
|
|
16
|
+
"webatlas.settings.page.general.webatlasVersion": "Webatlas Version",
|
|
17
|
+
"webatlas.settings.page.general.contentTypes": "Content Types",
|
|
18
|
+
"webatlas.settings.page.general.details": "Details",
|
|
16
19
|
"webatlas.settings.page.enabledContentTypes": "Enabled Content Types",
|
|
17
20
|
"webatlas.settings.page.enabledContentTypes.hint": "Select the content types for which you want to enable URL aliases",
|
|
18
21
|
"webatlas.settings.page.enabledContentTypes.placeholder": "Select content types...",
|
|
@@ -24,6 +27,9 @@ const en = {
|
|
|
24
27
|
"webatlas.settings.page.urlAliasPattern.hint": 'The pattern to prepend to the generated URL alias. For example, if you enter "blog" and the value of default field is "My First Post", the generated URL alias will be "blog/my-first-post". Leave empty for no prefix.',
|
|
25
28
|
"webatlas.settings.page.urlAliasPattern.tooltip": "Leading and trailing slashes will be removed. Spaces will be replaced with hyphens. Special characters will be encoded.",
|
|
26
29
|
"webatlas.settings.page.urlAliasPattern.placeholder": "e.g. blog",
|
|
30
|
+
"webatlas.settings.page.navigation.subtitle": "Configure navigation settings",
|
|
31
|
+
"webatlas.settings.page.navigation.navigation": "Navigation",
|
|
32
|
+
"webatlas.settings.page.navigation.maxNavDepth.label": "Max depth of navigation tree",
|
|
27
33
|
"webatlas.modal.navOverview.confirmText": "New navigation",
|
|
28
34
|
"webatlas.modal.navOverview.closeText": "Cancel",
|
|
29
35
|
"webatlas.modal.navOverview.titleText": "Navigation overview",
|
|
@@ -70,7 +76,6 @@ const en = {
|
|
|
70
76
|
"webatlas.components.URLInfo.checking": "Checking if URL is available...",
|
|
71
77
|
"webatlas.components.URLInfo.available": "URL is available",
|
|
72
78
|
"webatlas.components.URLInfo.notAvailable": "URL is not available. Replaced with",
|
|
73
|
-
"webatlas.components.CMEditViewAside.loading": "Loading...",
|
|
74
79
|
"webatlas.components.CMEditViewAside.notAllowed.start": "This content type is not allowed for",
|
|
75
80
|
"webatlas.components.CMEditViewAside.notAllowed.end": "If you wish to use it, please contact your administrator",
|
|
76
81
|
"webatlas.components.CMEditViewAside.notConfigured.start": "This content type is not configured for",
|
|
@@ -106,6 +111,8 @@ const en = {
|
|
|
106
111
|
"webatlas.modified": "Modified",
|
|
107
112
|
"webatlas.deleted": "Deleted",
|
|
108
113
|
"webatlas.restore": "Restore",
|
|
114
|
+
"webatlas.loading": "Loading...",
|
|
115
|
+
"webatlas.version": "Version",
|
|
109
116
|
"webatlas.notification.error": "An error occurred",
|
|
110
117
|
"webatlas.notification.settings.saved": "Settings saved successfully",
|
|
111
118
|
"webatlas.notification.routes.fetchFailed": "Failed to fetch routes",
|
|
@@ -121,4 +128,4 @@ const en = {
|
|
|
121
128
|
export {
|
|
122
129
|
en as default
|
|
123
130
|
};
|
|
124
|
-
//# sourceMappingURL=en-
|
|
131
|
+
//# sourceMappingURL=en-Dmbcf7gp.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-
|
|
1
|
+
{"version":3,"file":"en-Dmbcf7gp.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -14,7 +14,10 @@ const en = {
|
|
|
14
14
|
"webatlas.routes.page.emptyRoutes": "No routes found",
|
|
15
15
|
"webatlas.routes.page.column.type": "Type",
|
|
16
16
|
"webatlas.routes.page.searchPlaceholder": "Search routes",
|
|
17
|
-
"webatlas.settings.page.subtitle": "Configure
|
|
17
|
+
"webatlas.settings.page.general.subtitle": "Configure general settings",
|
|
18
|
+
"webatlas.settings.page.general.webatlasVersion": "Webatlas Version",
|
|
19
|
+
"webatlas.settings.page.general.contentTypes": "Content Types",
|
|
20
|
+
"webatlas.settings.page.general.details": "Details",
|
|
18
21
|
"webatlas.settings.page.enabledContentTypes": "Enabled Content Types",
|
|
19
22
|
"webatlas.settings.page.enabledContentTypes.hint": "Select the content types for which you want to enable URL aliases",
|
|
20
23
|
"webatlas.settings.page.enabledContentTypes.placeholder": "Select content types...",
|
|
@@ -26,6 +29,9 @@ const en = {
|
|
|
26
29
|
"webatlas.settings.page.urlAliasPattern.hint": 'The pattern to prepend to the generated URL alias. For example, if you enter "blog" and the value of default field is "My First Post", the generated URL alias will be "blog/my-first-post". Leave empty for no prefix.',
|
|
27
30
|
"webatlas.settings.page.urlAliasPattern.tooltip": "Leading and trailing slashes will be removed. Spaces will be replaced with hyphens. Special characters will be encoded.",
|
|
28
31
|
"webatlas.settings.page.urlAliasPattern.placeholder": "e.g. blog",
|
|
32
|
+
"webatlas.settings.page.navigation.subtitle": "Configure navigation settings",
|
|
33
|
+
"webatlas.settings.page.navigation.navigation": "Navigation",
|
|
34
|
+
"webatlas.settings.page.navigation.maxNavDepth.label": "Max depth of navigation tree",
|
|
29
35
|
"webatlas.modal.navOverview.confirmText": "New navigation",
|
|
30
36
|
"webatlas.modal.navOverview.closeText": "Cancel",
|
|
31
37
|
"webatlas.modal.navOverview.titleText": "Navigation overview",
|
|
@@ -72,7 +78,6 @@ const en = {
|
|
|
72
78
|
"webatlas.components.URLInfo.checking": "Checking if URL is available...",
|
|
73
79
|
"webatlas.components.URLInfo.available": "URL is available",
|
|
74
80
|
"webatlas.components.URLInfo.notAvailable": "URL is not available. Replaced with",
|
|
75
|
-
"webatlas.components.CMEditViewAside.loading": "Loading...",
|
|
76
81
|
"webatlas.components.CMEditViewAside.notAllowed.start": "This content type is not allowed for",
|
|
77
82
|
"webatlas.components.CMEditViewAside.notAllowed.end": "If you wish to use it, please contact your administrator",
|
|
78
83
|
"webatlas.components.CMEditViewAside.notConfigured.start": "This content type is not configured for",
|
|
@@ -108,6 +113,8 @@ const en = {
|
|
|
108
113
|
"webatlas.modified": "Modified",
|
|
109
114
|
"webatlas.deleted": "Deleted",
|
|
110
115
|
"webatlas.restore": "Restore",
|
|
116
|
+
"webatlas.loading": "Loading...",
|
|
117
|
+
"webatlas.version": "Version",
|
|
111
118
|
"webatlas.notification.error": "An error occurred",
|
|
112
119
|
"webatlas.notification.settings.saved": "Settings saved successfully",
|
|
113
120
|
"webatlas.notification.routes.fetchFailed": "Failed to fetch routes",
|
|
@@ -121,4 +128,4 @@ const en = {
|
|
|
121
128
|
"webatlas.settings.section.navigation": "Navigation"
|
|
122
129
|
};
|
|
123
130
|
exports.default = en;
|
|
124
|
-
//# sourceMappingURL=en-
|
|
131
|
+
//# sourceMappingURL=en-DrhxIwOr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-
|
|
1
|
+
{"version":3,"file":"en-DrhxIwOr.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const designSystem = require("@strapi/design-system");
|
|
6
6
|
const icons = require("@strapi/icons");
|
|
7
|
-
const index = require("./index-
|
|
7
|
+
const index = require("./index-DOMrViWi.js");
|
|
8
8
|
const admin = require("@strapi/strapi/admin");
|
|
9
9
|
require("@strapi/icons/symbols");
|
|
10
10
|
const FullLoader = require("./FullLoader-Cmsf8xS6.js");
|
|
@@ -244,4 +244,4 @@ const Routes = () => {
|
|
|
244
244
|
] });
|
|
245
245
|
};
|
|
246
246
|
exports.default = Routes;
|
|
247
|
-
//# sourceMappingURL=index--
|
|
247
|
+
//# sourceMappingURL=index--XAogZgv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index--oj1eNcM.js","sources":["../../admin/src/utils/getRouteType.ts","../../admin/src/pages/Routes/TableHeader.tsx","../../admin/src/pages/Routes/TableRow.tsx","../../admin/src/pages/Routes/PageWrapper.tsx","../../admin/src/pages/Routes/compareBy.ts","../../admin/src/pages/Routes/index.tsx"],"sourcesContent":["import type { Route } from \"../../../types\";\n\nexport default function getRouteType(route: Route): 'internal' | 'external' | 'wrapper' {\n if (route.wrapper) {\n return 'wrapper';\n } else if (!route.internal) {\n return 'external';\n } else {\n return 'internal';\n }\n}","import type { RouteSortKey } from '../../../../types';\nimport { Typography, Thead, Tr, Th, VisuallyHidden } from '@strapi/design-system';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport { ChevronDown } from '@strapi/icons';\n\nexport default function TableHeader({\n sortKey,\n handleSort\n}: {\n sortKey: RouteSortKey,\n handleSort: (key: RouteSortKey) => void\n}) {\n const { formatMessage } = useIntl();\n\n return (\n <Thead>\n <Tr>\n <Th onClick={() => handleSort('title')} cursor=\"pointer\">\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('title'),\n defaultMessage: 'Title',\n })}\n </Typography>\n {sortKey === 'title' && <ChevronDown />}\n </Th>\n <Th onClick={() => handleSort('fullPath')} cursor=\"pointer\">\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('route'),\n defaultMessage: 'Route',\n })}\n </Typography>\n {sortKey === 'fullPath' && <ChevronDown />}\n </Th>\n <Th onClick={() => handleSort('type')} cursor=\"pointer\">\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('routes.page.column.type'),\n defaultMessage: 'Type',\n })}\n </Typography>\n {sortKey === 'type' && <ChevronDown />}\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTranslation('actions'),\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n )\n}","import type { Route } from '../../../../types';\nimport { Typography, Tr, Td, Flex, LinkButton } from '@strapi/design-system';\nimport { getTranslation, getRouteType } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport { Pencil } from '@strapi/icons';\n\nexport default function TableRow({ route }: { route: Route }) {\n const { formatMessage } = useIntl();\n \n return (\n <Tr>\n <Td>\n <Typography textColor=\"neutral800\">{route.title}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{route.fullPath}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: getTranslation(`route.type.${getRouteType(route)}`),\n defaultMessage: '-',\n })}\n </Typography>\n </Td>\n <Td>\n <Flex gap={2} justifyContent=\"end\">\n {route.internal && \n <LinkButton\n variant=\"secondary\"\n startIcon={<Pencil />} \n href={`/admin/content-manager/collection-types/${route.relatedContentType}/${route.relatedDocumentId}`}\n >\n {formatMessage({\n id: getTranslation('edit'),\n defaultMessage: 'Edit',\n })}\n </LinkButton>\n }\n </Flex>\n </Td>\n </Tr>\n )\n}","import { Layouts, Page } from '@strapi/strapi/admin';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\n\nexport default function PageWrapper({ children }: { children: React.ReactNode }) {\n const { formatMessage } = useIntl();\n\n return (\n <Page.Main>\n <Layouts.Header\n title={formatMessage({\n id: getTranslation('routes.page.title'),\n defaultMessage: 'Routes',\n })}\n subtitle={formatMessage({\n id: getTranslation('routes.page.subtitle'),\n defaultMessage: 'Overview of all existing routes',\n })}\n />\n <Layouts.Content>\n <>\n {children}\n </>\n </Layouts.Content>\n </Page.Main>\n );\n}","import type { Route, RouteSortKey } from '../../../../types';\n\nexport default function compareBy(field: RouteSortKey, direction: 'asc' | 'desc') {\n if (!field) {\n return () => 0;\n }\n if (field === 'type') {\n return (a: Route, b: Route) => {\n const typeA = a.internal ? 'internal' : 'external';\n const typeB = b.internal ? 'internal' : 'external';\n return direction === 'asc'\n ? typeA.localeCompare(typeB)\n : typeB.localeCompare(typeA);\n };\n }\n return (a: Route, b: Route) => {\n const aValue = a[field];\n const bValue = b[field];\n if (typeof aValue === 'string' && typeof bValue === 'string') {\n return direction === 'asc'\n ? aValue.localeCompare(bValue)\n : bValue.localeCompare(aValue);\n }\n return 0;\n };\n}","/*\n *\n * Routes\n * This file contains the Routes page of the Webatlas plugin for Strapi.\n * It displays a table of all existing routes with their details and allows editing.\n *\n*/\n\nimport type { Route, RouteSortKey } from '../../../../types';\nimport { useState, useEffect } from 'react';\nimport { Table, Tbody, Box, Grid, Field, EmptyStateLayout, Tr, Td } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useApi } from '../../hooks';\nimport { FullLoader } from '../../components/UI';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport TableHeader from './TableHeader';\nimport TableRow from './TableRow';\nimport { useNotification } from '@strapi/strapi/admin'\nimport PageWrapper from './PageWrapper';\nimport { useSearchParams } from 'react-router-dom';\nimport debounce from '../../utils/debounce';\nimport { useMemo } from 'react';\nimport compareBy from './compareBy';\n\nfunction SearchInput({\n searchQuery,\n handleSearchChange\n}: {\n searchQuery: string;\n handleSearchChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root style={{ marginBottom: '16px' }}>\n <Grid.Item col={4} s={12}>\n <Box width=\"100%\">\n <Field.Root>\n <Field.Input\n name=\"search\"\n placeholder={formatMessage({\n id: getTranslation('routes.page.searchPlaceholder'),\n defaultMessage: 'Search routes',\n })}\n value={searchQuery}\n onChange={handleSearchChange}\n endAction={\n searchQuery ? (\n <button\n type=\"button\"\n onClick={() => handleSearchChange({ target: { value: '' } } as React.ChangeEvent<HTMLInputElement>)}\n style={{ color: 'inherit', background: 'none', border: 'none', cursor: 'pointer' }}\n aria-label=\"Clear search\"\n >\n <Cross />\n </button>\n ) : null\n }\n />\n </Field.Root>\n </Box>\n </Grid.Item>\n </Grid.Root>\n );\n}\n\nfunction RouteTable({\n routes, \n sortKey, \n handleSort\n}: { \n routes: Route[], \n sortKey: RouteSortKey, \n handleSort: (key: RouteSortKey) => void\n}) {\n \n const { formatMessage } = useIntl();\n\n return (\n <Table colCount={4} rowCount={routes.length}>\n <TableHeader sortKey={sortKey} handleSort={handleSort} />\n <Tbody>\n {routes.length > 0 ? routes.map((route: Route) => (\n <TableRow key={route.id} route={route} />\n )) : \n <Tr>\n <Td colSpan={4}>\n <EmptyStateLayout \n content={\n formatMessage({\n id: getTranslation('routes.page.emptyRoutes'),\n defaultMessage: 'No routes found',\n })\n } \n shadow={false}\n />\n </Td>\n </Tr>\n }\n </Tbody>\n </Table>\n )\n}\n\nconst Routes = () => {\n const { getRoutes } = useApi();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n \n const [allRoutes, setAllRoutes] = useState<Route[]>([]);\n const [routes, setRoutes] = useState<Route[]>([]);\n const [loading, setLoading] = useState(true);\n const [searchParams, setSearchParams] = useSearchParams();\n const initialQuery = searchParams.get('search') || '';\n const [searchQuery, setSearchQuery] = useState(initialQuery);\n const [sortKey, setSortKey] = useState<RouteSortKey>(undefined);\n const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\n\n useEffect(() => {\n const query = searchQuery.toLowerCase()\n setRoutes(\n allRoutes.filter((route) =>\n JSON.stringify(route.id).toLowerCase().includes(query) ||\n route.title.toLowerCase().includes(query) ||\n route.fullPath.toLowerCase().includes(query) ||\n route.relatedDocumentId.toLowerCase().includes(query) ||\n route.relatedContentType.toLowerCase().includes(query)\n )\n )\n }, [searchQuery, allRoutes]);\n\n const debouncedSetSearchParams = useMemo(() =>\n debounce((value: string) => {\n value\n ? setSearchParams({ search: value })\n : setSearchParams({});\n }, 300),\n [setSearchParams]);\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setSearchQuery(value);\n debouncedSetSearchParams(value);\n }\n\n useEffect(() => {\n async function fetchRoutes() {\n try {\n const data = await getRoutes();\n setAllRoutes(data);\n setRoutes(data);\n } catch (err) {\n console.error('Failed to fetch routes:', err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('notification.routes.fetchFailed'),\n defaultMessage: 'Failed to fetch routes',\n }),\n });\n } finally {\n setLoading(false);\n }\n }\n fetchRoutes();\n }, [])\n\n const handleSort = (key: RouteSortKey) => {\n setSortDirection(prev => (prev === 'asc' ? 'desc' : 'asc'));\n setSortKey(key);\n };\n\n useEffect(() => {\n const sortedRoutes = sortKey\n ? [...routes].sort(compareBy(sortKey, sortDirection))\n : routes; \n setRoutes(sortedRoutes);\n }, [sortKey, sortDirection]);\n\n if (loading) {\n return <PageWrapper>\n <FullLoader />\n </PageWrapper>\n }\n\n return (\n <PageWrapper>\n <SearchInput\n handleSearchChange={handleSearchChange}\n searchQuery={searchQuery}\n />\n <RouteTable\n routes={routes} \n sortKey={sortKey}\n handleSort={handleSort}\n />\n </PageWrapper>\n );\n};\n\nexport default Routes;"],"names":["useIntl","jsx","Thead","jsxs","Tr","Th","Typography","getTranslation","ChevronDown","VisuallyHidden","Td","Flex","LinkButton","Pencil","Page","Layouts","Fragment","Grid","Box","Field","Cross","Table","Tbody","EmptyStateLayout","useApi","useNotification","useState","useSearchParams","useEffect","useMemo","debounce","FullLoader"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index--XAogZgv.js","sources":["../../admin/src/utils/getRouteType.ts","../../admin/src/pages/Routes/TableHeader.tsx","../../admin/src/pages/Routes/TableRow.tsx","../../admin/src/pages/Routes/PageWrapper.tsx","../../admin/src/pages/Routes/compareBy.ts","../../admin/src/pages/Routes/index.tsx"],"sourcesContent":["import type { Route } from \"../../../types\";\n\nexport default function getRouteType(route: Route): 'internal' | 'external' | 'wrapper' {\n if (route.wrapper) {\n return 'wrapper';\n } else if (!route.internal) {\n return 'external';\n } else {\n return 'internal';\n }\n}","import type { RouteSortKey } from '../../../../types';\nimport { Typography, Thead, Tr, Th, VisuallyHidden } from '@strapi/design-system';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport { ChevronDown } from '@strapi/icons';\n\nexport default function TableHeader({\n sortKey,\n handleSort\n}: {\n sortKey: RouteSortKey,\n handleSort: (key: RouteSortKey) => void\n}) {\n const { formatMessage } = useIntl();\n\n return (\n <Thead>\n <Tr>\n <Th onClick={() => handleSort('title')} cursor=\"pointer\">\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('title'),\n defaultMessage: 'Title',\n })}\n </Typography>\n {sortKey === 'title' && <ChevronDown />}\n </Th>\n <Th onClick={() => handleSort('fullPath')} cursor=\"pointer\">\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('route'),\n defaultMessage: 'Route',\n })}\n </Typography>\n {sortKey === 'fullPath' && <ChevronDown />}\n </Th>\n <Th onClick={() => handleSort('type')} cursor=\"pointer\">\n <Typography variant=\"sigma\">\n {formatMessage({\n id: getTranslation('routes.page.column.type'),\n defaultMessage: 'Type',\n })}\n </Typography>\n {sortKey === 'type' && <ChevronDown />}\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTranslation('actions'),\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n )\n}","import type { Route } from '../../../../types';\nimport { Typography, Tr, Td, Flex, LinkButton } from '@strapi/design-system';\nimport { getTranslation, getRouteType } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport { Pencil } from '@strapi/icons';\n\nexport default function TableRow({ route }: { route: Route }) {\n const { formatMessage } = useIntl();\n \n return (\n <Tr>\n <Td>\n <Typography textColor=\"neutral800\">{route.title}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{route.fullPath}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: getTranslation(`route.type.${getRouteType(route)}`),\n defaultMessage: '-',\n })}\n </Typography>\n </Td>\n <Td>\n <Flex gap={2} justifyContent=\"end\">\n {route.internal && \n <LinkButton\n variant=\"secondary\"\n startIcon={<Pencil />} \n href={`/admin/content-manager/collection-types/${route.relatedContentType}/${route.relatedDocumentId}`}\n >\n {formatMessage({\n id: getTranslation('edit'),\n defaultMessage: 'Edit',\n })}\n </LinkButton>\n }\n </Flex>\n </Td>\n </Tr>\n )\n}","import { Layouts, Page } from '@strapi/strapi/admin';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\n\nexport default function PageWrapper({ children }: { children: React.ReactNode }) {\n const { formatMessage } = useIntl();\n\n return (\n <Page.Main>\n <Layouts.Header\n title={formatMessage({\n id: getTranslation('routes.page.title'),\n defaultMessage: 'Routes',\n })}\n subtitle={formatMessage({\n id: getTranslation('routes.page.subtitle'),\n defaultMessage: 'Overview of all existing routes',\n })}\n />\n <Layouts.Content>\n <>\n {children}\n </>\n </Layouts.Content>\n </Page.Main>\n );\n}","import type { Route, RouteSortKey } from '../../../../types';\n\nexport default function compareBy(field: RouteSortKey, direction: 'asc' | 'desc') {\n if (!field) {\n return () => 0;\n }\n if (field === 'type') {\n return (a: Route, b: Route) => {\n const typeA = a.internal ? 'internal' : 'external';\n const typeB = b.internal ? 'internal' : 'external';\n return direction === 'asc'\n ? typeA.localeCompare(typeB)\n : typeB.localeCompare(typeA);\n };\n }\n return (a: Route, b: Route) => {\n const aValue = a[field];\n const bValue = b[field];\n if (typeof aValue === 'string' && typeof bValue === 'string') {\n return direction === 'asc'\n ? aValue.localeCompare(bValue)\n : bValue.localeCompare(aValue);\n }\n return 0;\n };\n}","/*\n *\n * Routes\n * This file contains the Routes page of the Webatlas plugin for Strapi.\n * It displays a table of all existing routes with their details and allows editing.\n *\n*/\n\nimport type { Route, RouteSortKey } from '../../../../types';\nimport { useState, useEffect } from 'react';\nimport { Table, Tbody, Box, Grid, Field, EmptyStateLayout, Tr, Td } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useApi } from '../../hooks';\nimport { FullLoader } from '../../components/UI';\nimport { getTranslation } from '../../utils';\nimport { useIntl } from 'react-intl';\nimport TableHeader from './TableHeader';\nimport TableRow from './TableRow';\nimport { useNotification } from '@strapi/strapi/admin'\nimport PageWrapper from './PageWrapper';\nimport { useSearchParams } from 'react-router-dom';\nimport debounce from '../../utils/debounce';\nimport { useMemo } from 'react';\nimport compareBy from './compareBy';\n\nfunction SearchInput({\n searchQuery,\n handleSearchChange\n}: {\n searchQuery: string;\n handleSearchChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root style={{ marginBottom: '16px' }}>\n <Grid.Item col={4} s={12}>\n <Box width=\"100%\">\n <Field.Root>\n <Field.Input\n name=\"search\"\n placeholder={formatMessage({\n id: getTranslation('routes.page.searchPlaceholder'),\n defaultMessage: 'Search routes',\n })}\n value={searchQuery}\n onChange={handleSearchChange}\n endAction={\n searchQuery ? (\n <button\n type=\"button\"\n onClick={() => handleSearchChange({ target: { value: '' } } as React.ChangeEvent<HTMLInputElement>)}\n style={{ color: 'inherit', background: 'none', border: 'none', cursor: 'pointer' }}\n aria-label=\"Clear search\"\n >\n <Cross />\n </button>\n ) : null\n }\n />\n </Field.Root>\n </Box>\n </Grid.Item>\n </Grid.Root>\n );\n}\n\nfunction RouteTable({\n routes, \n sortKey, \n handleSort\n}: { \n routes: Route[], \n sortKey: RouteSortKey, \n handleSort: (key: RouteSortKey) => void\n}) {\n \n const { formatMessage } = useIntl();\n\n return (\n <Table colCount={4} rowCount={routes.length}>\n <TableHeader sortKey={sortKey} handleSort={handleSort} />\n <Tbody>\n {routes.length > 0 ? routes.map((route: Route) => (\n <TableRow key={route.id} route={route} />\n )) : \n <Tr>\n <Td colSpan={4}>\n <EmptyStateLayout \n content={\n formatMessage({\n id: getTranslation('routes.page.emptyRoutes'),\n defaultMessage: 'No routes found',\n })\n } \n shadow={false}\n />\n </Td>\n </Tr>\n }\n </Tbody>\n </Table>\n )\n}\n\nconst Routes = () => {\n const { getRoutes } = useApi();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n \n const [allRoutes, setAllRoutes] = useState<Route[]>([]);\n const [routes, setRoutes] = useState<Route[]>([]);\n const [loading, setLoading] = useState(true);\n const [searchParams, setSearchParams] = useSearchParams();\n const initialQuery = searchParams.get('search') || '';\n const [searchQuery, setSearchQuery] = useState(initialQuery);\n const [sortKey, setSortKey] = useState<RouteSortKey>(undefined);\n const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\n\n useEffect(() => {\n const query = searchQuery.toLowerCase()\n setRoutes(\n allRoutes.filter((route) =>\n JSON.stringify(route.id).toLowerCase().includes(query) ||\n route.title.toLowerCase().includes(query) ||\n route.fullPath.toLowerCase().includes(query) ||\n route.relatedDocumentId.toLowerCase().includes(query) ||\n route.relatedContentType.toLowerCase().includes(query)\n )\n )\n }, [searchQuery, allRoutes]);\n\n const debouncedSetSearchParams = useMemo(() =>\n debounce((value: string) => {\n value\n ? setSearchParams({ search: value })\n : setSearchParams({});\n }, 300),\n [setSearchParams]);\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setSearchQuery(value);\n debouncedSetSearchParams(value);\n }\n\n useEffect(() => {\n async function fetchRoutes() {\n try {\n const data = await getRoutes();\n setAllRoutes(data);\n setRoutes(data);\n } catch (err) {\n console.error('Failed to fetch routes:', err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('notification.routes.fetchFailed'),\n defaultMessage: 'Failed to fetch routes',\n }),\n });\n } finally {\n setLoading(false);\n }\n }\n fetchRoutes();\n }, [])\n\n const handleSort = (key: RouteSortKey) => {\n setSortDirection(prev => (prev === 'asc' ? 'desc' : 'asc'));\n setSortKey(key);\n };\n\n useEffect(() => {\n const sortedRoutes = sortKey\n ? [...routes].sort(compareBy(sortKey, sortDirection))\n : routes; \n setRoutes(sortedRoutes);\n }, [sortKey, sortDirection]);\n\n if (loading) {\n return <PageWrapper>\n <FullLoader />\n </PageWrapper>\n }\n\n return (\n <PageWrapper>\n <SearchInput\n handleSearchChange={handleSearchChange}\n searchQuery={searchQuery}\n />\n <RouteTable\n routes={routes} \n sortKey={sortKey}\n handleSort={handleSort}\n />\n </PageWrapper>\n );\n};\n\nexport default Routes;"],"names":["useIntl","jsx","Thead","jsxs","Tr","Th","Typography","getTranslation","ChevronDown","VisuallyHidden","Td","Flex","LinkButton","Pencil","Page","Layouts","Fragment","Grid","Box","Field","Cross","Table","Tbody","EmptyStateLayout","useApi","useNotification","useState","useSearchParams","useEffect","useMemo","debounce","FullLoader"],"mappings":"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"}
|