@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.
Files changed (36) hide show
  1. package/README.md +7 -6
  2. package/dist/admin/{SettingTitle-B0quw3f8.js → SettingTitle-BdiDHFXF.js} +2 -2
  3. package/dist/admin/{SettingTitle-B0quw3f8.js.map → SettingTitle-BdiDHFXF.js.map} +1 -1
  4. package/dist/admin/{SettingTitle-HMfQOJnK.mjs → SettingTitle-CcNfx_4T.mjs} +2 -2
  5. package/dist/admin/{SettingTitle-HMfQOJnK.mjs.map → SettingTitle-CcNfx_4T.mjs.map} +1 -1
  6. package/dist/admin/{index-Bmg-ERct.mjs → index-BMTlUOrK.mjs} +3 -3
  7. package/dist/admin/{index-Bmg-ERct.mjs.map → index-BMTlUOrK.mjs.map} +1 -1
  8. package/dist/admin/{index-B79ELMEC.mjs → index-BX3hiURm.mjs} +10 -39
  9. package/dist/admin/index-BX3hiURm.mjs.map +1 -0
  10. package/dist/admin/{index-9_HhKDUC.mjs → index-BdyLsiR4.mjs} +2 -2
  11. package/dist/admin/{index-9_HhKDUC.mjs.map → index-BdyLsiR4.mjs.map} +1 -1
  12. package/dist/admin/{index-Cx_mktdk.js → index-BkPtrXJO.js} +10 -39
  13. package/dist/admin/index-BkPtrXJO.js.map +1 -0
  14. package/dist/admin/{index-YdWxpvOH.js → index-CEBh9c4X.js} +3 -3
  15. package/dist/admin/{index-YdWxpvOH.js.map → index-CEBh9c4X.js.map} +1 -1
  16. package/dist/admin/{index-BEVoxEAm.js → index-DBG6vBGU.js} +2 -2
  17. package/dist/admin/{index-BEVoxEAm.js.map → index-DBG6vBGU.js.map} +1 -1
  18. package/dist/admin/{index-Cz_k_jjp.mjs → index-DkEReTkt.mjs} +3 -3
  19. package/dist/admin/{index-Cz_k_jjp.mjs.map → index-DkEReTkt.mjs.map} +1 -1
  20. package/dist/admin/{index-oEJT_mvw.mjs → index-DkfE_arE.mjs} +27 -9
  21. package/dist/admin/index-DkfE_arE.mjs.map +1 -0
  22. package/dist/admin/{index-D2hB1vTw.js → index-Sj2FxwAu.js} +3 -3
  23. package/dist/admin/{index-D2hB1vTw.js.map → index-Sj2FxwAu.js.map} +1 -1
  24. package/dist/admin/{index-C8YjuuOx.js → index-uW7YJoRU.js} +27 -9
  25. package/dist/admin/index-uW7YJoRU.js.map +1 -0
  26. package/dist/admin/index.js +1 -1
  27. package/dist/admin/index.mjs +1 -1
  28. package/dist/server/index.js +636 -1502
  29. package/dist/server/index.js.map +1 -1
  30. package/dist/server/index.mjs +636 -1502
  31. package/dist/server/index.mjs.map +1 -1
  32. package/package.json +14 -13
  33. package/dist/admin/index-B79ELMEC.mjs.map +0 -1
  34. package/dist/admin/index-C8YjuuOx.js.map +0 -1
  35. package/dist/admin/index-Cx_mktdk.js.map +0 -1
  36. package/dist/admin/index-oEJT_mvw.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import { useState, useEffect, useMemo } from "react";
3
- import { g as getTranslation, u as useApi, d as debounce, p as pluginPermissions } from "./index-B79ELMEC.mjs";
3
+ import { g as getTranslation, u as useApi, d as debounce, p as pluginPermissions } from "./index-BX3hiURm.mjs";
4
4
  import { Page, Layouts, useNotification } from "@strapi/strapi/admin";
5
5
  import { Grid, Box, Field, Thead, Tr, Th, Typography, VisuallyHidden, Td, Flex, LinkButton, Table, Tbody, EmptyStateLayout } from "@strapi/design-system";
6
6
  import "@strapi/icons/symbols";
@@ -242,4 +242,4 @@ const Paths = () => {
242
242
  export {
243
243
  Paths as default
244
244
  };
245
- //# sourceMappingURL=index-9_HhKDUC.mjs.map
245
+ //# sourceMappingURL=index-BdyLsiR4.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-9_HhKDUC.mjs","sources":["../../admin/src/pages/Paths/PageWrapper.tsx","../../admin/src/pages/Paths/compareBy.ts","../../admin/src/pages/Paths/SearchInput.tsx","../../admin/src/pages/Paths/TableHeader.tsx","../../admin/src/pages/Paths/TableRow.tsx","../../admin/src/pages/Paths/PathTable.tsx","../../admin/src/pages/Paths/index.tsx"],"sourcesContent":["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\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Page.Main>\n\t\t\t<Layouts.Header\n\t\t\t\ttitle={formatMessage({\n\t\t\t\t\tid: getTranslation('paths.page.title'),\n\t\t\t\t\tdefaultMessage: 'Paths',\n\t\t\t\t})}\n\t\t\t\tsubtitle={formatMessage({\n\t\t\t\t\tid: getTranslation('paths.page.subtitle'),\n\t\t\t\t\tdefaultMessage: 'Overview of all existing paths',\n\t\t\t\t})}\n\t\t\t/>\n\t\t\t<Layouts.Content>\n\t\t\t\t<>{children}</>\n\t\t\t</Layouts.Content>\n\t\t</Page.Main>\n\t)\n}\n","import type { Route } from '../../../../types'\nimport type { RouteSortKey } from '../../types'\n\nexport default function compareBy(field: RouteSortKey, direction: 'asc' | 'desc') {\n\tif (!field) {\n\t\treturn () => 0\n\t}\n\tif (field === 'type') {\n\t\treturn (a: Route, b: Route) => {\n\t\t\treturn direction === 'asc' ? a.type.localeCompare(b.type) : b.type.localeCompare(a.type)\n\t\t}\n\t}\n\treturn (a: Route, b: Route) => {\n\t\tconst aValue = a[field]\n\t\tconst bValue = b[field]\n\n\t\tif (aValue == null && bValue == null) {\n\t\t\treturn 0\n\t\t}\n\t\tif (aValue == null) {\n\t\t\treturn direction === 'asc' ? 1 : -1\n\t\t}\n\t\tif (bValue == null) {\n\t\t\treturn direction === 'asc' ? -1 : 1\n\t\t}\n\n\t\tif (typeof aValue === 'string' && typeof bValue === 'string') {\n\t\t\treturn direction === 'asc' ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue)\n\t\t}\n\t\treturn 0\n\t}\n}\n","import { Box, Grid, Field } from '@strapi/design-system'\nimport { Cross } from '@strapi/icons'\nimport { useIntl } from 'react-intl'\nimport { getTranslation } from '../../utils'\n\nfunction SearchInput({\n\tsearchQuery,\n\thandleSearchChange,\n}: {\n\tsearchQuery: string\n\thandleSearchChange: (e: React.ChangeEvent<HTMLInputElement>) => void\n}) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Grid.Root style={{ marginBottom: '16px' }}>\n\t\t\t<Grid.Item col={4} s={12}>\n\t\t\t\t<Box width=\"100%\">\n\t\t\t\t\t<Field.Root>\n\t\t\t\t\t\t<Field.Input\n\t\t\t\t\t\t\tname=\"search\"\n\t\t\t\t\t\t\tplaceholder={formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('paths.page.searchPlaceholder'),\n\t\t\t\t\t\t\t\tdefaultMessage: 'Search paths',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\tonChange={handleSearchChange}\n\t\t\t\t\t\t\tendAction={\n\t\t\t\t\t\t\t\tsearchQuery ? (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\thandleSearchChange({\n\t\t\t\t\t\t\t\t\t\t\t\ttarget: { value: '' },\n\t\t\t\t\t\t\t\t\t\t\t} as React.ChangeEvent<HTMLInputElement>)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'inherit',\n\t\t\t\t\t\t\t\t\t\t\tbackground: 'none',\n\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Clear search\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Cross />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Field.Root>\n\t\t\t\t</Box>\n\t\t\t</Grid.Item>\n\t\t</Grid.Root>\n\t)\n}\n\nexport default SearchInput\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\tsortKey,\n\thandleSort,\n}: {\n\tsortKey: RouteSortKey\n\thandleSort: (key: RouteSortKey) => void\n}) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Thead>\n\t\t\t<Tr>\n\t\t\t\t<Th onClick={() => handleSort('title')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('title'),\n\t\t\t\t\t\t\tdefaultMessage: 'Title',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'title' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th onClick={() => handleSort('canonicalPath')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('canonicalPath'),\n\t\t\t\t\t\t\tdefaultMessage: 'Canonical Path',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'canonicalPath' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th onClick={() => handleSort('path')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('path'),\n\t\t\t\t\t\t\tdefaultMessage: 'Path',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'path' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th onClick={() => handleSort('type')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('paths.page.column.type'),\n\t\t\t\t\t\t\tdefaultMessage: 'Type',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'type' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th>\n\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('actions'),\n\t\t\t\t\t\t\tdefaultMessage: 'Actions',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</Th>\n\t\t\t</Tr>\n\t\t</Thead>\n\t)\n}\n","import type { Route } from '../../../../types'\nimport { Typography, Tr, Td, Flex, LinkButton } from '@strapi/design-system'\nimport { getTranslation } from '../../utils'\nimport { useIntl } from 'react-intl'\nimport { Pencil } from '@strapi/icons'\n\nexport default function TableRow({ route }: { route: Route }) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Tr>\n\t\t\t{[route.title, route.canonicalPath, route.path].map((field, index) => (\n\t\t\t\t<Td key={index}>\n\t\t\t\t\t<Typography title={field} textColor=\"neutral800\">\n\t\t\t\t\t\t{field || '-'}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Td>\n\t\t\t))}\n\t\t\t<Td>\n\t\t\t\t<Typography title={route.type} textColor=\"neutral800\">\n\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\tid: getTranslation(`path.type.${route.type}`),\n\t\t\t\t\t\tdefaultMessage: '-',\n\t\t\t\t\t})}\n\t\t\t\t</Typography>\n\t\t\t</Td>\n\t\t\t<Td>\n\t\t\t\t<Flex gap={2} justifyContent=\"end\">\n\t\t\t\t\t{route.type === 'internal' && (\n\t\t\t\t\t\t<LinkButton\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tstartIcon={<Pencil />}\n\t\t\t\t\t\t\thref={`/admin/content-manager/collection-types/${route.relatedContentType}/${route.relatedDocumentId}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('edit'),\n\t\t\t\t\t\t\t\tdefaultMessage: 'Edit',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</LinkButton>\n\t\t\t\t\t)}\n\t\t\t\t</Flex>\n\t\t\t</Td>\n\t\t</Tr>\n\t)\n}\n","import type { Route } from '../../../../types'\nimport type { RouteSortKey } from '../../types'\nimport { Table, Tbody, EmptyStateLayout, Tr, Td } from '@strapi/design-system'\nimport TableHeader from './TableHeader'\nimport TableRow from './TableRow'\nimport { useIntl } from 'react-intl'\nimport { getTranslation } from '../../utils'\n\nfunction PathTable({\n\troutes,\n\tsortKey,\n\thandleSort,\n}: {\n\troutes: Route[]\n\tsortKey: RouteSortKey\n\thandleSort: (key: RouteSortKey) => void\n}) {\n\tconst { formatMessage } = useIntl()\n\n\tconst TABLE_COL_COUNT = 5\n\n\treturn (\n\t\t<Table colCount={TABLE_COL_COUNT} rowCount={routes.length}>\n\t\t\t<TableHeader sortKey={sortKey} handleSort={handleSort} />\n\t\t\t<Tbody>\n\t\t\t\t{routes.length > 0 ? (\n\t\t\t\t\troutes.map((route: Route) => <TableRow key={route.id} route={route} />)\n\t\t\t\t) : (\n\t\t\t\t\t<Tr>\n\t\t\t\t\t\t<Td colSpan={TABLE_COL_COUNT}>\n\t\t\t\t\t\t\t<EmptyStateLayout\n\t\t\t\t\t\t\t\tshadow=\"none\"\n\t\t\t\t\t\t\t\tcontent={formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('paths.page.emptyPaths'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'No paths found',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Td>\n\t\t\t\t\t</Tr>\n\t\t\t\t)}\n\t\t\t</Tbody>\n\t\t</Table>\n\t)\n}\n\nexport default PathTable\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 } from '../../../../types'\nimport type { RouteSortKey } from '../../types'\nimport { useState, useEffect } from 'react'\nimport { useApi } from '../../hooks'\nimport { FullLoader } from '../../components/UI'\nimport { getTranslation } from '../../utils'\nimport { useIntl } from 'react-intl'\nimport { useNotification, Page } 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'\nimport pluginPermissions from '../../permissions'\nimport SearchInput from './SearchInput'\nimport PathTable from './PathTable'\n\nconst Paths = () => {\n\tconst { getAllRoutes } = useApi()\n\tconst { formatMessage } = useIntl()\n\tconst { toggleNotification } = useNotification()\n\n\tconst [allRoutes, setAllRoutes] = useState<Route[]>([])\n\tconst [routes, setRoutes] = useState<Route[]>([])\n\tconst [loading, setLoading] = useState(true)\n\tconst [searchParams, setSearchParams] = useSearchParams()\n\tconst initialQuery = searchParams.get('search') || ''\n\tconst [searchQuery, setSearchQuery] = useState(initialQuery)\n\tconst [sortKey, setSortKey] = useState<RouteSortKey>('canonicalPath')\n\tconst [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc')\n\n\tuseEffect(() => {\n\t\tconst query = searchQuery.toLowerCase()\n\t\tsetRoutes(\n\t\t\tallRoutes.filter(\n\t\t\t\t(route) =>\n\t\t\t\t\tJSON.stringify(route.id).toLowerCase().includes(query) ||\n\t\t\t\t\troute.title.toLowerCase().includes(query) ||\n\t\t\t\t\troute.path.toLowerCase().includes(query) ||\n\t\t\t\t\troute.relatedDocumentId.toLowerCase().includes(query) ||\n\t\t\t\t\troute.relatedContentType.toLowerCase().includes(query),\n\t\t\t),\n\t\t)\n\t}, [searchQuery, allRoutes])\n\n\tconst debouncedSetSearchParams = useMemo(\n\t\t() =>\n\t\t\tdebounce((value: string) => {\n\t\t\t\tvalue ? setSearchParams({ search: value }) : setSearchParams({})\n\t\t\t}, 300),\n\t\t[setSearchParams],\n\t)\n\n\tconst handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst value = e.target.value\n\t\tsetSearchQuery(value)\n\t\tdebouncedSetSearchParams(value)\n\t}\n\n\tuseEffect(() => {\n\t\tasync function fetchRoutes() {\n\t\t\ttry {\n\t\t\t\tconst data = await getAllRoutes()\n\t\t\t\tsetAllRoutes(data)\n\t\t\t\tsetRoutes(data)\n\t\t\t} catch (err) {\n\t\t\t\tstrapi.log.error('Failed to fetch paths:', err)\n\t\t\t\ttoggleNotification({\n\t\t\t\t\ttype: 'danger',\n\t\t\t\t\tmessage: formatMessage({\n\t\t\t\t\t\tid: getTranslation('notification.paths.fetchFailed'),\n\t\t\t\t\t\tdefaultMessage: 'Failed to fetch paths',\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t} finally {\n\t\t\t\tsetLoading(false)\n\t\t\t}\n\t\t}\n\t\tfetchRoutes()\n\t}, [])\n\n\tconst handleSort = (key: RouteSortKey) => {\n\t\tsetSortDirection((prev) => (prev === 'asc' ? 'desc' : 'asc'))\n\t\tsetSortKey(key)\n\t}\n\n\tconst sortedRoutes = useMemo(() => {\n\t\treturn sortKey ? [...routes].sort(compareBy(sortKey, sortDirection)) : routes\n\t}, [routes, sortKey, sortDirection])\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<PageWrapper>\n\t\t\t\t<FullLoader />\n\t\t\t</PageWrapper>\n\t\t)\n\t}\n\n\treturn (\n\t\t<Page.Protect permissions={pluginPermissions['page.routes']}>\n\t\t\t<PageWrapper>\n\t\t\t\t<SearchInput handleSearchChange={handleSearchChange} searchQuery={searchQuery} />\n\t\t\t\t<PathTable routes={sortedRoutes} sortKey={sortKey} handleSort={handleSort} />\n\t\t\t</PageWrapper>\n\t\t</Page.Protect>\n\t)\n}\n\nexport default Paths\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-BdyLsiR4.mjs","sources":["../../admin/src/pages/Paths/PageWrapper.tsx","../../admin/src/pages/Paths/compareBy.ts","../../admin/src/pages/Paths/SearchInput.tsx","../../admin/src/pages/Paths/TableHeader.tsx","../../admin/src/pages/Paths/TableRow.tsx","../../admin/src/pages/Paths/PathTable.tsx","../../admin/src/pages/Paths/index.tsx"],"sourcesContent":["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\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Page.Main>\n\t\t\t<Layouts.Header\n\t\t\t\ttitle={formatMessage({\n\t\t\t\t\tid: getTranslation('paths.page.title'),\n\t\t\t\t\tdefaultMessage: 'Paths',\n\t\t\t\t})}\n\t\t\t\tsubtitle={formatMessage({\n\t\t\t\t\tid: getTranslation('paths.page.subtitle'),\n\t\t\t\t\tdefaultMessage: 'Overview of all existing paths',\n\t\t\t\t})}\n\t\t\t/>\n\t\t\t<Layouts.Content>\n\t\t\t\t<>{children}</>\n\t\t\t</Layouts.Content>\n\t\t</Page.Main>\n\t)\n}\n","import type { Route } from '../../../../types'\nimport type { RouteSortKey } from '../../types'\n\nexport default function compareBy(field: RouteSortKey, direction: 'asc' | 'desc') {\n\tif (!field) {\n\t\treturn () => 0\n\t}\n\tif (field === 'type') {\n\t\treturn (a: Route, b: Route) => {\n\t\t\treturn direction === 'asc' ? a.type.localeCompare(b.type) : b.type.localeCompare(a.type)\n\t\t}\n\t}\n\treturn (a: Route, b: Route) => {\n\t\tconst aValue = a[field]\n\t\tconst bValue = b[field]\n\n\t\tif (aValue == null && bValue == null) {\n\t\t\treturn 0\n\t\t}\n\t\tif (aValue == null) {\n\t\t\treturn direction === 'asc' ? 1 : -1\n\t\t}\n\t\tif (bValue == null) {\n\t\t\treturn direction === 'asc' ? -1 : 1\n\t\t}\n\n\t\tif (typeof aValue === 'string' && typeof bValue === 'string') {\n\t\t\treturn direction === 'asc' ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue)\n\t\t}\n\t\treturn 0\n\t}\n}\n","import { Box, Grid, Field } from '@strapi/design-system'\nimport { Cross } from '@strapi/icons'\nimport { useIntl } from 'react-intl'\nimport { getTranslation } from '../../utils'\n\nfunction SearchInput({\n\tsearchQuery,\n\thandleSearchChange,\n}: {\n\tsearchQuery: string\n\thandleSearchChange: (e: React.ChangeEvent<HTMLInputElement>) => void\n}) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Grid.Root style={{ marginBottom: '16px' }}>\n\t\t\t<Grid.Item col={4} s={12}>\n\t\t\t\t<Box width=\"100%\">\n\t\t\t\t\t<Field.Root>\n\t\t\t\t\t\t<Field.Input\n\t\t\t\t\t\t\tname=\"search\"\n\t\t\t\t\t\t\tplaceholder={formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('paths.page.searchPlaceholder'),\n\t\t\t\t\t\t\t\tdefaultMessage: 'Search paths',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\tonChange={handleSearchChange}\n\t\t\t\t\t\t\tendAction={\n\t\t\t\t\t\t\t\tsearchQuery ? (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\thandleSearchChange({\n\t\t\t\t\t\t\t\t\t\t\t\ttarget: { value: '' },\n\t\t\t\t\t\t\t\t\t\t\t} as React.ChangeEvent<HTMLInputElement>)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'inherit',\n\t\t\t\t\t\t\t\t\t\t\tbackground: 'none',\n\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Clear search\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Cross />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Field.Root>\n\t\t\t\t</Box>\n\t\t\t</Grid.Item>\n\t\t</Grid.Root>\n\t)\n}\n\nexport default SearchInput\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\tsortKey,\n\thandleSort,\n}: {\n\tsortKey: RouteSortKey\n\thandleSort: (key: RouteSortKey) => void\n}) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Thead>\n\t\t\t<Tr>\n\t\t\t\t<Th onClick={() => handleSort('title')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('title'),\n\t\t\t\t\t\t\tdefaultMessage: 'Title',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'title' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th onClick={() => handleSort('canonicalPath')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('canonicalPath'),\n\t\t\t\t\t\t\tdefaultMessage: 'Canonical Path',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'canonicalPath' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th onClick={() => handleSort('path')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('path'),\n\t\t\t\t\t\t\tdefaultMessage: 'Path',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'path' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th onClick={() => handleSort('type')} cursor=\"pointer\">\n\t\t\t\t\t<Typography variant=\"sigma\">\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('paths.page.column.type'),\n\t\t\t\t\t\t\tdefaultMessage: 'Type',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t{sortKey === 'type' && <ChevronDown />}\n\t\t\t\t</Th>\n\t\t\t\t<Th>\n\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\tid: getTranslation('actions'),\n\t\t\t\t\t\t\tdefaultMessage: 'Actions',\n\t\t\t\t\t\t})}\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</Th>\n\t\t\t</Tr>\n\t\t</Thead>\n\t)\n}\n","import type { Route } from '../../../../types'\nimport { Typography, Tr, Td, Flex, LinkButton } from '@strapi/design-system'\nimport { getTranslation } from '../../utils'\nimport { useIntl } from 'react-intl'\nimport { Pencil } from '@strapi/icons'\n\nexport default function TableRow({ route }: { route: Route }) {\n\tconst { formatMessage } = useIntl()\n\n\treturn (\n\t\t<Tr>\n\t\t\t{[route.title, route.canonicalPath, route.path].map((field, index) => (\n\t\t\t\t<Td key={index}>\n\t\t\t\t\t<Typography title={field} textColor=\"neutral800\">\n\t\t\t\t\t\t{field || '-'}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Td>\n\t\t\t))}\n\t\t\t<Td>\n\t\t\t\t<Typography title={route.type} textColor=\"neutral800\">\n\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\tid: getTranslation(`path.type.${route.type}`),\n\t\t\t\t\t\tdefaultMessage: '-',\n\t\t\t\t\t})}\n\t\t\t\t</Typography>\n\t\t\t</Td>\n\t\t\t<Td>\n\t\t\t\t<Flex gap={2} justifyContent=\"end\">\n\t\t\t\t\t{route.type === 'internal' && (\n\t\t\t\t\t\t<LinkButton\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tstartIcon={<Pencil />}\n\t\t\t\t\t\t\thref={`/admin/content-manager/collection-types/${route.relatedContentType}/${route.relatedDocumentId}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{formatMessage({\n\t\t\t\t\t\t\t\tid: getTranslation('edit'),\n\t\t\t\t\t\t\t\tdefaultMessage: 'Edit',\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</LinkButton>\n\t\t\t\t\t)}\n\t\t\t\t</Flex>\n\t\t\t</Td>\n\t\t</Tr>\n\t)\n}\n","import type { Route } from '../../../../types'\nimport type { RouteSortKey } from '../../types'\nimport { Table, Tbody, EmptyStateLayout, Tr, Td } from '@strapi/design-system'\nimport TableHeader from './TableHeader'\nimport TableRow from './TableRow'\nimport { useIntl } from 'react-intl'\nimport { getTranslation } from '../../utils'\n\nfunction PathTable({\n\troutes,\n\tsortKey,\n\thandleSort,\n}: {\n\troutes: Route[]\n\tsortKey: RouteSortKey\n\thandleSort: (key: RouteSortKey) => void\n}) {\n\tconst { formatMessage } = useIntl()\n\n\tconst TABLE_COL_COUNT = 5\n\n\treturn (\n\t\t<Table colCount={TABLE_COL_COUNT} rowCount={routes.length}>\n\t\t\t<TableHeader sortKey={sortKey} handleSort={handleSort} />\n\t\t\t<Tbody>\n\t\t\t\t{routes.length > 0 ? (\n\t\t\t\t\troutes.map((route: Route) => <TableRow key={route.id} route={route} />)\n\t\t\t\t) : (\n\t\t\t\t\t<Tr>\n\t\t\t\t\t\t<Td colSpan={TABLE_COL_COUNT}>\n\t\t\t\t\t\t\t<EmptyStateLayout\n\t\t\t\t\t\t\t\tshadow=\"none\"\n\t\t\t\t\t\t\t\tcontent={formatMessage({\n\t\t\t\t\t\t\t\t\tid: getTranslation('paths.page.emptyPaths'),\n\t\t\t\t\t\t\t\t\tdefaultMessage: 'No paths found',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Td>\n\t\t\t\t\t</Tr>\n\t\t\t\t)}\n\t\t\t</Tbody>\n\t\t</Table>\n\t)\n}\n\nexport default PathTable\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 } from '../../../../types'\nimport type { RouteSortKey } from '../../types'\nimport { useState, useEffect } from 'react'\nimport { useApi } from '../../hooks'\nimport { FullLoader } from '../../components/UI'\nimport { getTranslation } from '../../utils'\nimport { useIntl } from 'react-intl'\nimport { useNotification, Page } 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'\nimport pluginPermissions from '../../permissions'\nimport SearchInput from './SearchInput'\nimport PathTable from './PathTable'\n\nconst Paths = () => {\n\tconst { getAllRoutes } = useApi()\n\tconst { formatMessage } = useIntl()\n\tconst { toggleNotification } = useNotification()\n\n\tconst [allRoutes, setAllRoutes] = useState<Route[]>([])\n\tconst [routes, setRoutes] = useState<Route[]>([])\n\tconst [loading, setLoading] = useState(true)\n\tconst [searchParams, setSearchParams] = useSearchParams()\n\tconst initialQuery = searchParams.get('search') || ''\n\tconst [searchQuery, setSearchQuery] = useState(initialQuery)\n\tconst [sortKey, setSortKey] = useState<RouteSortKey>('canonicalPath')\n\tconst [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc')\n\n\tuseEffect(() => {\n\t\tconst query = searchQuery.toLowerCase()\n\t\tsetRoutes(\n\t\t\tallRoutes.filter(\n\t\t\t\t(route) =>\n\t\t\t\t\tJSON.stringify(route.id).toLowerCase().includes(query) ||\n\t\t\t\t\troute.title.toLowerCase().includes(query) ||\n\t\t\t\t\troute.path.toLowerCase().includes(query) ||\n\t\t\t\t\troute.relatedDocumentId.toLowerCase().includes(query) ||\n\t\t\t\t\troute.relatedContentType.toLowerCase().includes(query),\n\t\t\t),\n\t\t)\n\t}, [searchQuery, allRoutes])\n\n\tconst debouncedSetSearchParams = useMemo(\n\t\t() =>\n\t\t\tdebounce((value: string) => {\n\t\t\t\tvalue ? setSearchParams({ search: value }) : setSearchParams({})\n\t\t\t}, 300),\n\t\t[setSearchParams],\n\t)\n\n\tconst handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst value = e.target.value\n\t\tsetSearchQuery(value)\n\t\tdebouncedSetSearchParams(value)\n\t}\n\n\tuseEffect(() => {\n\t\tasync function fetchRoutes() {\n\t\t\ttry {\n\t\t\t\tconst data = await getAllRoutes()\n\t\t\t\tsetAllRoutes(data)\n\t\t\t\tsetRoutes(data)\n\t\t\t} catch (err) {\n\t\t\t\tstrapi.log.error('Failed to fetch paths:', err)\n\t\t\t\ttoggleNotification({\n\t\t\t\t\ttype: 'danger',\n\t\t\t\t\tmessage: formatMessage({\n\t\t\t\t\t\tid: getTranslation('notification.paths.fetchFailed'),\n\t\t\t\t\t\tdefaultMessage: 'Failed to fetch paths',\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t} finally {\n\t\t\t\tsetLoading(false)\n\t\t\t}\n\t\t}\n\t\tfetchRoutes()\n\t}, [])\n\n\tconst handleSort = (key: RouteSortKey) => {\n\t\tsetSortDirection((prev) => (prev === 'asc' ? 'desc' : 'asc'))\n\t\tsetSortKey(key)\n\t}\n\n\tconst sortedRoutes = useMemo(() => {\n\t\treturn sortKey ? [...routes].sort(compareBy(sortKey, sortDirection)) : routes\n\t}, [routes, sortKey, sortDirection])\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<PageWrapper>\n\t\t\t\t<FullLoader />\n\t\t\t</PageWrapper>\n\t\t)\n\t}\n\n\treturn (\n\t\t<Page.Protect permissions={pluginPermissions['page.routes']}>\n\t\t\t<PageWrapper>\n\t\t\t\t<SearchInput handleSearchChange={handleSearchChange} searchQuery={searchQuery} />\n\t\t\t\t<PathTable routes={sortedRoutes} sortKey={sortKey} handleSort={handleSort} />\n\t\t\t</PageWrapper>\n\t\t</Page.Protect>\n\t)\n}\n\nexport default Paths\n"],"names":[],"mappings":"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"}
@@ -70,7 +70,7 @@ function transformToUrl(input, replaceSlash = true) {
70
70
  input = input.replace(/-+/g, "-");
71
71
  return input;
72
72
  }
73
- const version = "0.11.1";
73
+ const version = "0.11.3";
74
74
  const strapi$1 = { "name": "webatlas", "displayName": "Webatlas" };
75
75
  const pluginPkg = {
76
76
  version,
@@ -3961,7 +3961,7 @@ const Panel = ({ config }) => {
3961
3961
  try {
3962
3962
  const route2 = await getRelatedRoute(initialValues.documentId);
3963
3963
  if (!route2) return;
3964
- initialPath.current = initialValues.webatlas.path || route2.uidPath;
3964
+ initialPath.current = route2.uidPath;
3965
3965
  setRoute(route2);
3966
3966
  setIsOverride(route2.isOverride || false);
3967
3967
  dispatchPath({ type: "SET_OVERRIDEPATH", payload: route2.path || "" });
@@ -3982,8 +3982,9 @@ const Panel = ({ config }) => {
3982
3982
  } catch (err) {
3983
3983
  setRoute(null);
3984
3984
  strapi.log.error(err);
3985
+ } finally {
3986
+ setInitialLoadComplete(true);
3985
3987
  }
3986
- setInitialLoadComplete(true);
3987
3988
  }
3988
3989
  fetchRelatedRute();
3989
3990
  }, [config]);
@@ -4101,7 +4102,7 @@ const pluginPermissions = {
4101
4102
  "settings.general": [{ action: `plugin::${PLUGIN_ID}.settings.general`, subject: null }],
4102
4103
  "settings.navigation": [{ action: `plugin::${PLUGIN_ID}.settings.navigation`, subject: null }]
4103
4104
  };
4104
- const CMEditViewAside = ({ documentId, model, activeTab }) => {
4105
+ const CMEditViewAside = ({ model }) => {
4105
4106
  const { contentTypes } = useAllContentTypes();
4106
4107
  const { config } = usePluginConfig();
4107
4108
  const { formatMessage } = reactIntl.useIntl();
@@ -4114,36 +4115,6 @@ const CMEditViewAside = ({ documentId, model, activeTab }) => {
4114
4115
  const contentType = contentTypes?.find((ct) => ct.uid === model);
4115
4116
  setIsAllowedContentType(!!contentType?.pluginOptions?.webatlas?.enabled);
4116
4117
  }, [contentTypes, model]);
4117
- React.useEffect(() => {
4118
- const isWebatlasLabel = (label) => label.textContent?.startsWith("webatlas");
4119
- const cleanupLabels = () => {
4120
- const labels = document.querySelectorAll("label");
4121
- labels.forEach((label) => {
4122
- if (!isWebatlasLabel(label)) return;
4123
- const container = label.parentElement?.parentElement;
4124
- const parent = container?.parentElement;
4125
- const greatGrandParent = parent?.parentElement?.parentElement;
4126
- if (!container || !parent) return;
4127
- const parentWebatlasCount = Array.from(parent.querySelectorAll("label")).filter(
4128
- isWebatlasLabel
4129
- ).length;
4130
- const childrenCount = parent.children.length;
4131
- if (greatGrandParent && greatGrandParent?.querySelectorAll("label").length === Array.from(greatGrandParent.querySelectorAll("label")).filter(isWebatlasLabel).length) {
4132
- greatGrandParent.remove();
4133
- } else if (childrenCount === 1 || childrenCount === 2 && parentWebatlasCount === 2) {
4134
- parent.remove();
4135
- } else {
4136
- container.remove();
4137
- }
4138
- });
4139
- };
4140
- const timeoutId = setTimeout(() => {
4141
- cleanupLabels();
4142
- const secondTimeoutId = setTimeout(cleanupLabels, 1e3);
4143
- return () => clearTimeout(secondTimeoutId);
4144
- }, 100);
4145
- return () => clearTimeout(timeoutId);
4146
- }, [documentId, model, activeTab]);
4147
4118
  React.useEffect(() => {
4148
4119
  if (!config) return;
4149
4120
  setIsActiveContentType(false);
@@ -4188,7 +4159,7 @@ const index = {
4188
4159
  id: `${PLUGIN_ID}.link.paths`,
4189
4160
  defaultMessage: "Paths"
4190
4161
  },
4191
- Component: () => Promise.resolve().then(() => require("./index-BEVoxEAm.js")),
4162
+ Component: () => Promise.resolve().then(() => require("./index-DBG6vBGU.js")),
4192
4163
  permissions: [pluginPermissions["page.routes"][0]]
4193
4164
  });
4194
4165
  app.addMenuLink({
@@ -4198,7 +4169,7 @@ const index = {
4198
4169
  id: `${PLUGIN_ID}.link.navigation`,
4199
4170
  defaultMessage: "Navigation"
4200
4171
  },
4201
- Component: () => Promise.resolve().then(() => require("./index-C8YjuuOx.js")),
4172
+ Component: () => Promise.resolve().then(() => require("./index-uW7YJoRU.js")),
4202
4173
  permissions: [pluginPermissions["page.navigation"][0]]
4203
4174
  });
4204
4175
  app.addSettingsLink(
@@ -4216,7 +4187,7 @@ const index = {
4216
4187
  },
4217
4188
  id: `${PLUGIN_ID}-general`,
4218
4189
  to: `${PLUGIN_ID}/general`,
4219
- Component: () => Promise.resolve().then(() => require("./index-YdWxpvOH.js")),
4190
+ Component: () => Promise.resolve().then(() => require("./index-CEBh9c4X.js")),
4220
4191
  permissions: [pluginPermissions["settings.general"][0]]
4221
4192
  }
4222
4193
  );
@@ -4227,7 +4198,7 @@ const index = {
4227
4198
  },
4228
4199
  id: `${PLUGIN_ID}-navigation`,
4229
4200
  to: `${PLUGIN_ID}/navigation`,
4230
- Component: () => Promise.resolve().then(() => require("./index-D2hB1vTw.js")),
4201
+ Component: () => Promise.resolve().then(() => require("./index-Sj2FxwAu.js")),
4231
4202
  permissions: [pluginPermissions["settings.navigation"][0]]
4232
4203
  });
4233
4204
  app.registerPlugin({
@@ -4266,4 +4237,4 @@ exports.pluginPermissions = pluginPermissions;
4266
4237
  exports.useAllContentTypes = useAllContentTypes;
4267
4238
  exports.useApi = useApi;
4268
4239
  exports.usePluginConfig = usePluginConfig;
4269
- //# sourceMappingURL=index-Cx_mktdk.js.map
4240
+ //# sourceMappingURL=index-BkPtrXJO.js.map