@mattisvensson/strapi-plugin-webatlas 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/_chunks/{de-CL1TIZPg.js → de-BZc1BkzH.js} +4 -1
  2. package/dist/_chunks/{de-CL1TIZPg.js.map → de-BZc1BkzH.js.map} +1 -1
  3. package/dist/_chunks/{de-CzVD4dbZ.mjs → de-oxxH8hft.mjs} +4 -1
  4. package/dist/_chunks/{de-CzVD4dbZ.mjs.map → de-oxxH8hft.mjs.map} +1 -1
  5. package/dist/_chunks/{en-Du-Ap60j.js → en-Deg4n_IM.js} +4 -1
  6. package/dist/_chunks/{en-Du-Ap60j.js.map → en-Deg4n_IM.js.map} +1 -1
  7. package/dist/_chunks/{en-Nk6QcTdr.mjs → en-DqC5aDzA.mjs} +4 -1
  8. package/dist/_chunks/{en-Nk6QcTdr.mjs.map → en-DqC5aDzA.mjs.map} +1 -1
  9. package/dist/_chunks/{index-C4-VBSgi.mjs → index-B6MYtu3A.mjs} +11 -6
  10. package/dist/_chunks/index-B6MYtu3A.mjs.map +1 -0
  11. package/dist/_chunks/index-BEgpEtto.mjs +247 -0
  12. package/dist/_chunks/index-BEgpEtto.mjs.map +1 -0
  13. package/dist/_chunks/{index-Z3yKckP0.js → index-BOEv4jIJ.js} +6 -6
  14. package/dist/_chunks/{index-Z3yKckP0.js.map → index-BOEv4jIJ.js.map} +1 -1
  15. package/dist/_chunks/{index-CC1UR_w8.mjs → index-BPhRQoGD.mjs} +2 -2
  16. package/dist/_chunks/{index-CC1UR_w8.mjs.map → index-BPhRQoGD.mjs.map} +1 -1
  17. package/dist/_chunks/index-BdlPAWj6.mjs +246 -0
  18. package/dist/_chunks/index-Bg96TqDm.js +247 -0
  19. package/dist/_chunks/index-Bg96TqDm.js.map +1 -0
  20. package/dist/_chunks/{index-B9OfSpne.mjs → index-BgzZLDPv.mjs} +10 -5
  21. package/dist/_chunks/index-BoVX1KF8.js +246 -0
  22. package/dist/_chunks/{index-Ch8tSWp4.js → index-ByU38WNH.js} +5 -5
  23. package/dist/_chunks/{index-iF1y6Mhe.mjs → index-CZ5qsGXH.mjs} +6 -6
  24. package/dist/_chunks/{index-iF1y6Mhe.mjs.map → index-CZ5qsGXH.mjs.map} +1 -1
  25. package/dist/_chunks/{index-BPIdov2N.mjs → index-D3xDvB4d.mjs} +5 -5
  26. package/dist/_chunks/{index-13yB9fna.mjs → index-DKdAgBbF.mjs} +1 -1
  27. package/dist/_chunks/{index-BDoljrOj.js → index-D_QCV5Z5.js} +2 -2
  28. package/dist/_chunks/{index-BDoljrOj.js.map → index-D_QCV5Z5.js.map} +1 -1
  29. package/dist/_chunks/{index-CjA6bLGU.js → index-UJ0LQ3Y3.js} +1 -1
  30. package/dist/_chunks/{index-Bw2Yq-Hx.js → index-dSU20yZ4.js} +10 -5
  31. package/dist/_chunks/{index-D1zlwukG.js → index-mObQ5NXj.js} +11 -6
  32. package/dist/_chunks/index-mObQ5NXj.js.map +1 -0
  33. package/dist/admin/index.js +1 -1
  34. package/dist/admin/index.mjs +1 -1
  35. package/dist/admin/src/pages/Routes/TableHeader.d.ts +5 -1
  36. package/dist/admin/src/pages/Routes/compareBy.d.ts +2 -0
  37. package/dist/server/index.js +1 -1
  38. package/dist/server/index.mjs +1 -1
  39. package/package.json +1 -1
  40. package/dist/_chunks/EmptyBox-BM4IscSk.mjs +0 -13
  41. package/dist/_chunks/EmptyBox-BM4IscSk.mjs.map +0 -1
  42. package/dist/_chunks/EmptyBox-T8t29l25.js +0 -12
  43. package/dist/_chunks/EmptyBox-T8t29l25.js.map +0 -1
  44. package/dist/_chunks/index-AIXu4HZz.mjs +0 -127
  45. package/dist/_chunks/index-AIXu4HZz.mjs.map +0 -1
  46. package/dist/_chunks/index-BOF-1QDH.js +0 -127
  47. package/dist/_chunks/index-BOF-1QDH.js.map +0 -1
  48. package/dist/_chunks/index-BluRjThy.mjs +0 -126
  49. package/dist/_chunks/index-C4-VBSgi.mjs.map +0 -1
  50. package/dist/_chunks/index-D1zlwukG.js.map +0 -1
  51. package/dist/_chunks/index-DeNZkmpv.js +0 -126
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Bg96TqDm.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,15 +1,14 @@
1
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { useNavigate, useParams, Routes, Route } from "react-router-dom";
3
3
  import { Trash, Pencil, Check, Drag, More, Link, OneToMany, ExternalLink, Plus } from "@strapi/icons";
4
- import { Dialog, Typography, Button, Modal, Flex, SingleSelect, SingleSelectOption, Grid, Box, Field, Toggle, Divider, Status, SimpleMenu, IconButton, MenuItem } from "@strapi/design-system";
4
+ import { Box, Typography, Dialog, Button, Modal, Flex, SingleSelect, SingleSelectOption, Grid, Field, Toggle, Divider, Status, SimpleMenu, IconButton, MenuItem } from "@strapi/design-system";
5
5
  import { useState, useEffect, createContext, useRef, useContext, useReducer, useCallback, useMemo, forwardRef } from "react";
6
6
  import { createPortal } from "react-dom";
7
7
  import { useIntl } from "react-intl";
8
- import { u as useApi, g as getTranslation, d as debounce, a as duplicateCheck, t as transformToUrl, U as URLInfo } from "./index-BPIdov2N.mjs";
8
+ import { u as useApi, g as getTranslation, d as debounce, a as duplicateCheck, t as transformToUrl, U as URLInfo } from "./index-D3xDvB4d.mjs";
9
9
  import { useFetchClient, useNotification, Page, Layouts } from "@strapi/strapi/admin";
10
10
  import { C as Center, F as FullLoader } from "./FullLoader-CrPED_dY.mjs";
11
- import "@strapi/icons/symbols";
12
- import { E as EmptyBox } from "./EmptyBox-BM4IscSk.mjs";
11
+ import { EmptyDocuments } from "@strapi/icons/symbols";
13
12
  import { MeasuringStrategy, DndContext, closestCenter, DragOverlay } from "@dnd-kit/core";
14
13
  import { arrayMove, useSortable, SortableContext, verticalListSortingStrategy } from "@dnd-kit/sortable";
15
14
  import { CSS } from "@dnd-kit/utilities";
@@ -82,6 +81,12 @@ function createTempNavItemObject({
82
81
  };
83
82
  return tempNavItem;
84
83
  }
84
+ function EmptyBox({ msg }) {
85
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
86
+ /* @__PURE__ */ jsx(EmptyDocuments, { width: "10rem", height: "6rem" }),
87
+ /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsx(Typography, { variant: "beta", textColor: "neutral600", children: msg }) })
88
+ ] });
89
+ }
85
90
  const ModalContext = createContext({ modalType: "", setModalType: () => {
86
91
  } });
87
92
  const SelectedNavigationContext = createContext({ selectedNavigation: void 0, setSelectedNavigation: () => {
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const designSystem = require("@strapi/design-system");
6
+ const icons = require("@strapi/icons");
7
+ const index = require("./index-ByU38WNH.js");
8
+ const admin = require("@strapi/strapi/admin");
9
+ require("@strapi/icons/symbols");
10
+ const FullLoader = require("./FullLoader-Cmsf8xS6.js");
11
+ const reactIntl = require("react-intl");
12
+ const reactRouterDom = require("react-router-dom");
13
+ function getRouteType(route) {
14
+ if (route.wrapper) {
15
+ return "wrapper";
16
+ } else if (!route.internal) {
17
+ return "external";
18
+ } else {
19
+ return "internal";
20
+ }
21
+ }
22
+ function TableHeader({
23
+ sortKey,
24
+ handleSort
25
+ }) {
26
+ const { formatMessage } = reactIntl.useIntl();
27
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
28
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Th, { onClick: () => handleSort("title"), cursor: "pointer", children: [
29
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: formatMessage({
30
+ id: index.getTranslation("title"),
31
+ defaultMessage: "Title"
32
+ }) }),
33
+ sortKey === "title" && /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDown, {})
34
+ ] }),
35
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Th, { onClick: () => handleSort("fullPath"), cursor: "pointer", children: [
36
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: formatMessage({
37
+ id: index.getTranslation("route"),
38
+ defaultMessage: "Route"
39
+ }) }),
40
+ sortKey === "fullPath" && /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDown, {})
41
+ ] }),
42
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Th, { onClick: () => handleSort("type"), cursor: "pointer", children: [
43
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: formatMessage({
44
+ id: index.getTranslation("routes.page.column.type"),
45
+ defaultMessage: "Type"
46
+ }) }),
47
+ sortKey === "type" && /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDown, {})
48
+ ] }),
49
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: formatMessage({
50
+ id: index.getTranslation("actions"),
51
+ defaultMessage: "Actions"
52
+ }) }) })
53
+ ] }) });
54
+ }
55
+ function TableRow({ route }) {
56
+ const { formatMessage } = reactIntl.useIntl();
57
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
58
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: route.title }) }),
59
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: route.fullPath }) }),
60
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: formatMessage({
61
+ id: index.getTranslation(`route.type.${getRouteType(route)}`),
62
+ defaultMessage: "-"
63
+ }) }) }),
64
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { gap: 2, justifyContent: "end", children: route.internal && /* @__PURE__ */ jsxRuntime.jsx(
65
+ designSystem.LinkButton,
66
+ {
67
+ variant: "secondary",
68
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {}),
69
+ href: `/admin/content-manager/collection-types/${route.relatedContentType}/${route.relatedDocumentId}`,
70
+ children: formatMessage({
71
+ id: index.getTranslation("edit"),
72
+ defaultMessage: "Edit"
73
+ })
74
+ }
75
+ ) }) })
76
+ ] });
77
+ }
78
+ function PageWrapper({ children }) {
79
+ const { formatMessage } = reactIntl.useIntl();
80
+ return /* @__PURE__ */ jsxRuntime.jsxs(admin.Page.Main, { children: [
81
+ /* @__PURE__ */ jsxRuntime.jsx(
82
+ admin.Layouts.Header,
83
+ {
84
+ title: formatMessage({
85
+ id: index.getTranslation("routes.page.title"),
86
+ defaultMessage: "Routes"
87
+ }),
88
+ subtitle: formatMessage({
89
+ id: index.getTranslation("routes.page.subtitle"),
90
+ defaultMessage: "Overview of all existing routes"
91
+ })
92
+ }
93
+ ),
94
+ /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) })
95
+ ] });
96
+ }
97
+ function compareBy(field, direction) {
98
+ if (!field) {
99
+ return () => 0;
100
+ }
101
+ if (field === "type") {
102
+ return (a, b) => {
103
+ const typeA = a.internal ? "internal" : "external";
104
+ const typeB = b.internal ? "internal" : "external";
105
+ return direction === "asc" ? typeA.localeCompare(typeB) : typeB.localeCompare(typeA);
106
+ };
107
+ }
108
+ return (a, b) => {
109
+ const aValue = a[field];
110
+ const bValue = b[field];
111
+ if (typeof aValue === "string" && typeof bValue === "string") {
112
+ return direction === "asc" ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue);
113
+ }
114
+ return 0;
115
+ };
116
+ }
117
+ function SearchInput({
118
+ searchQuery,
119
+ handleSearchChange
120
+ }) {
121
+ const { formatMessage } = reactIntl.useIntl();
122
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { style: { marginBottom: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { width: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(
123
+ designSystem.Field.Input,
124
+ {
125
+ name: "search",
126
+ placeholder: formatMessage({
127
+ id: index.getTranslation("routes.page.searchPlaceholder"),
128
+ defaultMessage: "Search routes"
129
+ }),
130
+ value: searchQuery,
131
+ onChange: handleSearchChange,
132
+ endAction: searchQuery ? /* @__PURE__ */ jsxRuntime.jsx(
133
+ "button",
134
+ {
135
+ type: "button",
136
+ onClick: () => handleSearchChange({ target: { value: "" } }),
137
+ style: { color: "inherit", background: "none", border: "none", cursor: "pointer" },
138
+ "aria-label": "Clear search",
139
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.Cross, {})
140
+ }
141
+ ) : null
142
+ }
143
+ ) }) }) }) });
144
+ }
145
+ function RouteTable({
146
+ routes,
147
+ sortKey,
148
+ handleSort
149
+ }) {
150
+ const { formatMessage } = reactIntl.useIntl();
151
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount: 4, rowCount: routes.length, children: [
152
+ /* @__PURE__ */ jsxRuntime.jsx(TableHeader, { sortKey, handleSort }),
153
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: routes.length > 0 ? routes.map((route) => /* @__PURE__ */ jsxRuntime.jsx(TableRow, { route }, route.id)) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tr, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { colSpan: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
154
+ designSystem.EmptyStateLayout,
155
+ {
156
+ content: formatMessage({
157
+ id: index.getTranslation("routes.page.emptyRoutes"),
158
+ defaultMessage: "No routes found"
159
+ }),
160
+ shadow: false
161
+ }
162
+ ) }) }) })
163
+ ] });
164
+ }
165
+ const Routes = () => {
166
+ const { getRoutes } = index.useApi();
167
+ const { formatMessage } = reactIntl.useIntl();
168
+ const { toggleNotification } = admin.useNotification();
169
+ const [allRoutes, setAllRoutes] = React.useState([]);
170
+ const [routes, setRoutes] = React.useState([]);
171
+ const [loading, setLoading] = React.useState(true);
172
+ const [searchParams, setSearchParams] = reactRouterDom.useSearchParams();
173
+ const initialQuery = searchParams.get("search") || "";
174
+ const [searchQuery, setSearchQuery] = React.useState(initialQuery);
175
+ const [sortKey, setSortKey] = React.useState(void 0);
176
+ const [sortDirection, setSortDirection] = React.useState("asc");
177
+ React.useEffect(() => {
178
+ const query = searchQuery.toLowerCase();
179
+ setRoutes(
180
+ allRoutes.filter(
181
+ (route) => JSON.stringify(route.id).toLowerCase().includes(query) || route.title.toLowerCase().includes(query) || route.fullPath.toLowerCase().includes(query) || route.relatedDocumentId.toLowerCase().includes(query) || route.relatedContentType.toLowerCase().includes(query)
182
+ )
183
+ );
184
+ }, [searchQuery, allRoutes]);
185
+ const debouncedSetSearchParams = React.useMemo(
186
+ () => index.debounce((value) => {
187
+ value ? setSearchParams({ search: value }) : setSearchParams({});
188
+ }, 300),
189
+ [setSearchParams]
190
+ );
191
+ const handleSearchChange = (e) => {
192
+ const value = e.target.value;
193
+ setSearchQuery(value);
194
+ debouncedSetSearchParams(value);
195
+ };
196
+ React.useEffect(() => {
197
+ async function fetchRoutes() {
198
+ try {
199
+ const data = await getRoutes();
200
+ setAllRoutes(data);
201
+ setRoutes(data);
202
+ } catch (err) {
203
+ console.error("Failed to fetch routes:", err);
204
+ toggleNotification({
205
+ type: "danger",
206
+ message: formatMessage({
207
+ id: index.getTranslation("notification.routes.fetchFailed"),
208
+ defaultMessage: "Failed to fetch routes"
209
+ })
210
+ });
211
+ } finally {
212
+ setLoading(false);
213
+ }
214
+ }
215
+ fetchRoutes();
216
+ }, []);
217
+ const handleSort = (key) => {
218
+ setSortDirection((prev) => prev === "asc" ? "desc" : "asc");
219
+ setSortKey(key);
220
+ };
221
+ React.useEffect(() => {
222
+ const sortedRoutes = sortKey ? [...routes].sort(compareBy(sortKey, sortDirection)) : routes;
223
+ setRoutes(sortedRoutes);
224
+ }, [sortKey, sortDirection]);
225
+ if (loading) {
226
+ return /* @__PURE__ */ jsxRuntime.jsx(PageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(FullLoader.FullLoader, {}) });
227
+ }
228
+ return /* @__PURE__ */ jsxRuntime.jsxs(PageWrapper, { children: [
229
+ /* @__PURE__ */ jsxRuntime.jsx(
230
+ SearchInput,
231
+ {
232
+ handleSearchChange,
233
+ searchQuery
234
+ }
235
+ ),
236
+ /* @__PURE__ */ jsxRuntime.jsx(
237
+ RouteTable,
238
+ {
239
+ routes,
240
+ sortKey,
241
+ handleSort
242
+ }
243
+ )
244
+ ] });
245
+ };
246
+ exports.default = Routes;
@@ -41,7 +41,7 @@ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
41
41
  );
42
42
  });
43
43
  };
44
- const version = "0.6.1";
44
+ const version = "0.6.2";
45
45
  const keywords = [];
46
46
  const type = "commonjs";
47
47
  const exports$1 = {
@@ -4077,7 +4077,7 @@ const index = {
4077
4077
  defaultMessage: "Routes"
4078
4078
  },
4079
4079
  Component: async () => {
4080
- const component = await Promise.resolve().then(() => require("./index-DeNZkmpv.js"));
4080
+ const component = await Promise.resolve().then(() => require("./index-BoVX1KF8.js"));
4081
4081
  return { default: component.default };
4082
4082
  },
4083
4083
  permissions: [
@@ -4096,7 +4096,7 @@ const index = {
4096
4096
  defaultMessage: "Navigation"
4097
4097
  },
4098
4098
  Component: async () => {
4099
- const component = await Promise.resolve().then(() => require("./index-Bw2Yq-Hx.js"));
4099
+ const component = await Promise.resolve().then(() => require("./index-dSU20yZ4.js"));
4100
4100
  return { default: component.default };
4101
4101
  },
4102
4102
  permissions: [
@@ -4125,7 +4125,7 @@ const index = {
4125
4125
  Component: async () => {
4126
4126
  return await Promise.resolve().then(() => require(
4127
4127
  /* webpackChunkName: "webatlas-settings-page" */
4128
- "./index-CjA6bLGU.js"
4128
+ "./index-UJ0LQ3Y3.js"
4129
4129
  ));
4130
4130
  },
4131
4131
  permissions: [
@@ -4154,7 +4154,7 @@ const index = {
4154
4154
  return Promise.all(
4155
4155
  locales.map(async (locale) => {
4156
4156
  try {
4157
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => Promise.resolve().then(() => require("./de-CL1TIZPg.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-Du-Ap60j.js")) }), `./translations/${locale}.json`, 3);
4157
+ const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => Promise.resolve().then(() => require("./de-BZc1BkzH.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-Deg4n_IM.js")) }), `./translations/${locale}.json`, 3);
4158
4158
  return { data, locale };
4159
4159
  } catch {
4160
4160
  return { data: {}, locale };
@@ -23,7 +23,7 @@ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
23
23
  );
24
24
  });
25
25
  };
26
- const version = "0.6.2";
26
+ const version = "0.7.0";
27
27
  const keywords = [];
28
28
  const type = "commonjs";
29
29
  const exports = {
@@ -4059,7 +4059,7 @@ const index = {
4059
4059
  defaultMessage: "Routes"
4060
4060
  },
4061
4061
  Component: async () => {
4062
- const component = await import("./index-AIXu4HZz.mjs");
4062
+ const component = await import("./index-BEgpEtto.mjs");
4063
4063
  return { default: component.default };
4064
4064
  },
4065
4065
  permissions: [
@@ -4078,7 +4078,7 @@ const index = {
4078
4078
  defaultMessage: "Navigation"
4079
4079
  },
4080
4080
  Component: async () => {
4081
- const component = await import("./index-C4-VBSgi.mjs");
4081
+ const component = await import("./index-B6MYtu3A.mjs");
4082
4082
  return { default: component.default };
4083
4083
  },
4084
4084
  permissions: [
@@ -4107,7 +4107,7 @@ const index = {
4107
4107
  Component: async () => {
4108
4108
  return await import(
4109
4109
  /* webpackChunkName: "webatlas-settings-page" */
4110
- "./index-CC1UR_w8.mjs"
4110
+ "./index-BPhRQoGD.mjs"
4111
4111
  );
4112
4112
  },
4113
4113
  permissions: [
@@ -4136,7 +4136,7 @@ const index = {
4136
4136
  return Promise.all(
4137
4137
  locales.map(async (locale) => {
4138
4138
  try {
4139
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => import("./de-CzVD4dbZ.mjs"), "./translations/en.json": () => import("./en-Nk6QcTdr.mjs") }), `./translations/${locale}.json`, 3);
4139
+ const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => import("./de-oxxH8hft.mjs"), "./translations/en.json": () => import("./en-DqC5aDzA.mjs") }), `./translations/${locale}.json`, 3);
4140
4140
  return { data, locale };
4141
4141
  } catch {
4142
4142
  return { data: {}, locale };
@@ -4158,4 +4158,4 @@ export {
4158
4158
  transformToUrl as t,
4159
4159
  useApi as u
4160
4160
  };
4161
- //# sourceMappingURL=index-iF1y6Mhe.mjs.map
4161
+ //# sourceMappingURL=index-CZ5qsGXH.mjs.map