@strapi/content-manager 0.0.0-next.23a591758a1d192f794079bbe4821ef8d26e1555 → 0.0.0-next.24165c9d5cbc756c03fe23bc491569c77973f5ac
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/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js → ComponentConfigurationPage-Cgjg4CQj.js} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js.map → ComponentConfigurationPage-Cgjg4CQj.js.map} +1 -1
- package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs → ComponentConfigurationPage-D6mjS3eX.mjs} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs.map → ComponentConfigurationPage-D6mjS3eX.mjs.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js → EditConfigurationPage-C5E6D6NI.js} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js.map → EditConfigurationPage-C5E6D6NI.js.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs → EditConfigurationPage-DSSrKbwM.mjs} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs.map → EditConfigurationPage-DSSrKbwM.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-CYe7wAXF.mjs → EditViewPage-B9oaTSxh.mjs} +6 -9
- package/dist/admin/chunks/EditViewPage-B9oaTSxh.mjs.map +1 -0
- package/dist/admin/chunks/{EditViewPage-DFkloeMZ.js → EditViewPage-Cyt_AqcH.js} +6 -9
- package/dist/admin/chunks/EditViewPage-Cyt_AqcH.js.map +1 -0
- package/dist/admin/chunks/{Form-DGUP3zQO.js → Form-BynZsnG8.js} +2 -2
- package/dist/admin/chunks/{Form-DGUP3zQO.js.map → Form-BynZsnG8.js.map} +1 -1
- package/dist/admin/chunks/{Form-DTO0ZIaB.mjs → Form-CiDhWFF2.mjs} +2 -2
- package/dist/admin/chunks/{Form-DTO0ZIaB.mjs.map → Form-CiDhWFF2.mjs.map} +1 -1
- package/dist/admin/chunks/{History-C333pgXF.mjs → History-BIzCrHlU.mjs} +5 -5
- package/dist/admin/chunks/{History-C333pgXF.mjs.map → History-BIzCrHlU.mjs.map} +1 -1
- package/dist/admin/chunks/{History-CQznK1pG.js → History-D8x3KfXk.js} +5 -5
- package/dist/admin/chunks/{History-CQznK1pG.js.map → History-D8x3KfXk.js.map} +1 -1
- package/dist/admin/chunks/{Input-BexkC_pp.mjs → Input-BrTcf7W8.mjs} +4 -4
- package/dist/admin/chunks/{Input-BexkC_pp.mjs.map → Input-BrTcf7W8.mjs.map} +1 -1
- package/dist/admin/chunks/{Input-DLJZHw9Y.js → Input-Cx7glRRR.js} +4 -4
- package/dist/admin/chunks/{Input-DLJZHw9Y.js.map → Input-Cx7glRRR.js.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js → ListConfigurationPage-C1HEB6A1.js} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js.map → ListConfigurationPage-C1HEB6A1.js.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs → ListConfigurationPage-JWHsiJKb.mjs} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs.map → ListConfigurationPage-JWHsiJKb.mjs.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-DV3heO4F.js → ListViewPage-38RhQMrO.js} +3 -3
- package/dist/admin/chunks/{ListViewPage-DV3heO4F.js.map → ListViewPage-38RhQMrO.js.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs → ListViewPage-lpuA2rS8.mjs} +3 -3
- package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs.map → ListViewPage-lpuA2rS8.mjs.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs → NoContentTypePage-mxdu7QG9.mjs} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs.map → NoContentTypePage-mxdu7QG9.mjs.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js → NoContentTypePage-q48fU1h9.js} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js.map → NoContentTypePage-q48fU1h9.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js → NoPermissionsPage-B_p7s1uj.js} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js.map → NoPermissionsPage-B_p7s1uj.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs → NoPermissionsPage-CihsLbNC.mjs} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs.map → NoPermissionsPage-CihsLbNC.mjs.map} +1 -1
- package/dist/admin/chunks/{Preview-CXtc9yEV.js → Preview-CMoqDEKI.js} +176 -58
- package/dist/admin/chunks/Preview-CMoqDEKI.js.map +1 -0
- package/dist/admin/chunks/{Preview-BEq0FXda.mjs → Preview-DGQMt8XZ.mjs} +180 -62
- package/dist/admin/chunks/Preview-DGQMt8XZ.mjs.map +1 -0
- package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs → Relations-BemEu63h.mjs} +3 -3
- package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs.map → Relations-BemEu63h.mjs.map} +1 -1
- package/dist/admin/chunks/{Relations-o7_hVGyK.js → Relations-BtC_Gort.js} +3 -3
- package/dist/admin/chunks/{Relations-o7_hVGyK.js.map → Relations-BtC_Gort.js.map} +1 -1
- package/dist/admin/chunks/{en-LfhocNG2.mjs → en-CImiNxXE.mjs} +3 -1
- package/dist/admin/chunks/{en-LfhocNG2.mjs.map → en-CImiNxXE.mjs.map} +1 -1
- package/dist/admin/chunks/{en-C1CjdAtC.js → en-CLf4SuMQ.js} +3 -1
- package/dist/admin/chunks/{en-C1CjdAtC.js.map → en-CLf4SuMQ.js.map} +1 -1
- package/dist/admin/chunks/{index-BHimg6jW.js → index-D7EkCTnw.js} +66 -34
- package/dist/admin/chunks/index-D7EkCTnw.js.map +1 -0
- package/dist/admin/chunks/{index-Cs6qwFQu.mjs → index-njcS3gUl.mjs} +66 -35
- package/dist/admin/chunks/index-njcS3gUl.mjs.map +1 -0
- package/dist/admin/chunks/{layout-Dtahn4Ue.js → layout-Ccv9FwbI.js} +4 -4
- package/dist/admin/chunks/{layout-Dtahn4Ue.js.map → layout-Ccv9FwbI.js.map} +1 -1
- package/dist/admin/chunks/{layout-DStNia_P.mjs → layout-os6F94Aa.mjs} +4 -4
- package/dist/admin/chunks/{layout-DStNia_P.mjs.map → layout-os6F94Aa.mjs.map} +1 -1
- package/dist/admin/chunks/{relations-Cq8NRUto.mjs → relations-De8hSklO.mjs} +2 -2
- package/dist/admin/chunks/{relations-Cq8NRUto.mjs.map → relations-De8hSklO.mjs.map} +1 -1
- package/dist/admin/chunks/{relations-XOYEEqMz.js → relations-iguhDgFp.js} +2 -2
- package/dist/admin/chunks/{relations-XOYEEqMz.js.map → relations-iguhDgFp.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/InjectionZone.d.ts +7 -1
- package/dist/admin/src/content-manager.d.ts +3 -0
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/package.json +7 -7
- package/dist/admin/chunks/EditViewPage-CYe7wAXF.mjs.map +0 -1
- package/dist/admin/chunks/EditViewPage-DFkloeMZ.js.map +0 -1
- package/dist/admin/chunks/Preview-BEq0FXda.mjs.map +0 -1
- package/dist/admin/chunks/Preview-CXtc9yEV.js.map +0 -1
- package/dist/admin/chunks/index-BHimg6jW.js.map +0 -1
- package/dist/admin/chunks/index-Cs6qwFQu.mjs.map +0 -1
@@ -10,8 +10,8 @@ var reactDnd = require('react-dnd');
|
|
10
10
|
var CardDragPreview = require('./CardDragPreview-_dubYgXO.js');
|
11
11
|
var Icons = require('@strapi/icons');
|
12
12
|
var styledComponents = require('styled-components');
|
13
|
-
var index = require('./index-
|
14
|
-
var Relations = require('./Relations-
|
13
|
+
var index = require('./index-D7EkCTnw.js');
|
14
|
+
var Relations = require('./Relations-BtC_Gort.js');
|
15
15
|
var qs = require('qs');
|
16
16
|
var hooks = require('./hooks-D-sOYd1s.js');
|
17
17
|
var useDragAndDrop = require('./useDragAndDrop-gcqEJMnO.js');
|
@@ -24,7 +24,7 @@ require('@reduxjs/toolkit');
|
|
24
24
|
require('prismjs');
|
25
25
|
require('react-dnd-html5-backend');
|
26
26
|
require('react-window');
|
27
|
-
require('./relations-
|
27
|
+
require('./relations-iguhDgFp.js');
|
28
28
|
require('react-redux');
|
29
29
|
|
30
30
|
function _interopNamespaceDefault(e) {
|
@@ -616,4 +616,4 @@ const generateLinks = (links, type, configurations = [])=>{
|
|
616
616
|
}
|
617
617
|
|
618
618
|
exports.Layout = Layout;
|
619
|
-
//# sourceMappingURL=layout-
|
619
|
+
//# sourceMappingURL=layout-Ccv9FwbI.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"layout-Dtahn4Ue.js","sources":["../../../admin/src/components/DragLayer.tsx","../../../admin/src/components/DragPreviews/ComponentDragPreview.tsx","../../../admin/src/components/DragPreviews/RelationDragPreview.tsx","../../../admin/src/components/LeftMenu.tsx","../../../admin/src/hooks/useContentManagerInitData.ts","../../../admin/src/layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n /**\n * TODO: it'd be great if we could make this a union where the type infers the item.\n */\n item: any;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n","import { Flex, FlexComponent, IconButton, Typography } from '@strapi/design-system';\nimport { CaretDown, Drag, Trash } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\ninterface ComponentDragPreviewProps {\n displayedValue: string;\n}\n\nconst ComponentDragPreview = ({ displayedValue }: ComponentDragPreviewProps) => {\n return (\n <Flex\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={3}\n padding={3}\n width=\"30rem\"\n >\n <ToggleButton type=\"button\">\n <Flex gap={6}>\n <DropdownIconWrapper\n alignItems=\"center\"\n justifyContent=\"center\"\n background=\"neutral200\"\n height=\"3.2rem\"\n width=\"3.2rem\"\n >\n <CaretDown />\n </DropdownIconWrapper>\n\n <Flex maxWidth=\"15rem\">\n <Typography textColor=\"neutral700\" ellipsis>\n {displayedValue}\n </Typography>\n </Flex>\n </Flex>\n </ToggleButton>\n\n <Flex gap={2}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Trash />\n </IconButton>\n\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DropdownIconWrapper = styled<FlexComponent>(Flex)`\n border-radius: 50%;\n\n svg {\n height: 0.6rem;\n width: 1.1rem;\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\n// TODO: we shouldn't have to reset a whole button\nconst ToggleButton = styled.button`\n border: none;\n background: transparent;\n display: block;\n width: 100%;\n text-align: unset;\n padding: 0;\n`;\n\nexport { ComponentDragPreview };\nexport type { ComponentDragPreviewProps };\n","import { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Cross, Drag } from '@strapi/icons';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport {\n DisconnectButton,\n LinkEllipsis,\n FlexWrapper,\n} from '../../pages/EditView/components/FormInputs/Relations';\n\nimport type { Data } from '@strapi/types';\n\ninterface RelationDragPreviewProps {\n status?: string;\n displayedValue: string;\n id: Data.ID;\n index: number;\n width: number;\n}\n\nconst RelationDragPreview = ({ status, displayedValue, width }: RelationDragPreviewProps) => {\n return (\n <Box style={{ width }}>\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={2}\n paddingRight={4}\n hasRadius\n borderWidth={1}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={4}\n >\n <FlexWrapper gap={1}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <LinkEllipsis href=\"\">\n <Typography textColor=\"primary600\" ellipsis>\n {displayedValue}\n </Typography>\n </LinkEllipsis>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <DisconnectButton type=\"button\">\n <Cross width=\"12px\" />\n </DisconnectButton>\n </Flex>\n </Box>\n );\n};\n\nexport { RelationDragPreview };\nexport type { RelationDragPreviewProps };\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n useCollator,\n useFilter,\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst SubNavLinkCustom = styled(SubNavLink)`\n div {\n width: inherit;\n span:nth-child(2) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: inherit;\n }\n }\n`;\n\nconst LeftMenu = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => startsWith(link.title, search))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader\n label={label}\n searchable\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n searchLabel={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n />\n <SubNavSections>\n {menu.map((section) => {\n return (\n <SubNavSection\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNavLinkCustom\n tag={NavLink}\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n width=\"100%\"\n >\n {link.title}\n </SubNavLinkCustom>\n );\n })}\n </SubNavSection>\n );\n })}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { LeftMenu };\n","import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","transform","DragLayer","renderItem","itemType","isDragging","item","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type","ComponentDragPreview","displayedValue","_jsxs","Flex","background","borderColor","justifyContent","gap","padding","ToggleButton","DropdownIconWrapper","alignItems","CaretDown","maxWidth","Typography","textColor","ellipsis","IconButton","withTooltip","label","variant","Trash","Drag","styled","theme","colors","neutral600","button","RelationDragPreview","status","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderWidth","FlexWrapper","minWidth","LinkEllipsis","href","DocumentStatus","DisconnectButton","Cross","SubNavLinkCustom","SubNavLink","LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","SubNav","aria-label","SubNavHeader","onChange","onClear","searchLabel","SubNavSections","SubNavSection","badgeLabel","length","toString","tag","NavLink","to","pathname","stringify","parse","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","notifyStatus","useNotifyAT","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","checkUserHasPermissions","useAuth","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","error","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","singleType","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","permissions","authorizedCollectionTypeLinks","_","index","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","configurations","isDisplayed","collectionTypesPermissions","action","subject","singleTypesPermissions","currentContentTypeConfig","searchParams","page","pageSize","settings","defaultSortBy","defaultSortOrder","encode","info","displayName","COLLECTION_TYPES","SINGLE_TYPES","name","Layout","contentTypeMatch","useMatch","isLoading","authorisedModels","localeCompare","useLocation","startSection","useGuidedTour","startSectionRef","useRef","current","_Fragment","Page","Title","Loading","supportedModelsToDisplay","Navigate","replace","Layouts","Root","sideNav","renderDraglayerItem","Outlet","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","COMPONENT","DYNAMIC_ZONE","RELATION"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"layout-Ccv9FwbI.js","sources":["../../../admin/src/components/DragLayer.tsx","../../../admin/src/components/DragPreviews/ComponentDragPreview.tsx","../../../admin/src/components/DragPreviews/RelationDragPreview.tsx","../../../admin/src/components/LeftMenu.tsx","../../../admin/src/hooks/useContentManagerInitData.ts","../../../admin/src/layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n /**\n * TODO: it'd be great if we could make this a union where the type infers the item.\n */\n item: any;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n","import { Flex, FlexComponent, IconButton, Typography } from '@strapi/design-system';\nimport { CaretDown, Drag, Trash } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\ninterface ComponentDragPreviewProps {\n displayedValue: string;\n}\n\nconst ComponentDragPreview = ({ displayedValue }: ComponentDragPreviewProps) => {\n return (\n <Flex\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={3}\n padding={3}\n width=\"30rem\"\n >\n <ToggleButton type=\"button\">\n <Flex gap={6}>\n <DropdownIconWrapper\n alignItems=\"center\"\n justifyContent=\"center\"\n background=\"neutral200\"\n height=\"3.2rem\"\n width=\"3.2rem\"\n >\n <CaretDown />\n </DropdownIconWrapper>\n\n <Flex maxWidth=\"15rem\">\n <Typography textColor=\"neutral700\" ellipsis>\n {displayedValue}\n </Typography>\n </Flex>\n </Flex>\n </ToggleButton>\n\n <Flex gap={2}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Trash />\n </IconButton>\n\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DropdownIconWrapper = styled<FlexComponent>(Flex)`\n border-radius: 50%;\n\n svg {\n height: 0.6rem;\n width: 1.1rem;\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\n// TODO: we shouldn't have to reset a whole button\nconst ToggleButton = styled.button`\n border: none;\n background: transparent;\n display: block;\n width: 100%;\n text-align: unset;\n padding: 0;\n`;\n\nexport { ComponentDragPreview };\nexport type { ComponentDragPreviewProps };\n","import { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Cross, Drag } from '@strapi/icons';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport {\n DisconnectButton,\n LinkEllipsis,\n FlexWrapper,\n} from '../../pages/EditView/components/FormInputs/Relations';\n\nimport type { Data } from '@strapi/types';\n\ninterface RelationDragPreviewProps {\n status?: string;\n displayedValue: string;\n id: Data.ID;\n index: number;\n width: number;\n}\n\nconst RelationDragPreview = ({ status, displayedValue, width }: RelationDragPreviewProps) => {\n return (\n <Box style={{ width }}>\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={2}\n paddingRight={4}\n hasRadius\n borderWidth={1}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={4}\n >\n <FlexWrapper gap={1}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <LinkEllipsis href=\"\">\n <Typography textColor=\"primary600\" ellipsis>\n {displayedValue}\n </Typography>\n </LinkEllipsis>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <DisconnectButton type=\"button\">\n <Cross width=\"12px\" />\n </DisconnectButton>\n </Flex>\n </Box>\n );\n};\n\nexport { RelationDragPreview };\nexport type { RelationDragPreviewProps };\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n useCollator,\n useFilter,\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst SubNavLinkCustom = styled(SubNavLink)`\n div {\n width: inherit;\n span:nth-child(2) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: inherit;\n }\n }\n`;\n\nconst LeftMenu = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => startsWith(link.title, search))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader\n label={label}\n searchable\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n searchLabel={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n />\n <SubNavSections>\n {menu.map((section) => {\n return (\n <SubNavSection\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNavLinkCustom\n tag={NavLink}\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n width=\"100%\"\n >\n {link.title}\n </SubNavLinkCustom>\n );\n })}\n </SubNavSection>\n );\n })}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { LeftMenu };\n","import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","transform","DragLayer","renderItem","itemType","isDragging","item","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type","ComponentDragPreview","displayedValue","_jsxs","Flex","background","borderColor","justifyContent","gap","padding","ToggleButton","DropdownIconWrapper","alignItems","CaretDown","maxWidth","Typography","textColor","ellipsis","IconButton","withTooltip","label","variant","Trash","Drag","styled","theme","colors","neutral600","button","RelationDragPreview","status","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderWidth","FlexWrapper","minWidth","LinkEllipsis","href","DocumentStatus","DisconnectButton","Cross","SubNavLinkCustom","SubNavLink","LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","SubNav","aria-label","SubNavHeader","onChange","onClear","searchLabel","SubNavSections","SubNavSection","badgeLabel","length","toString","tag","NavLink","to","pathname","stringify","parse","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","notifyStatus","useNotifyAT","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","checkUserHasPermissions","useAuth","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","error","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","singleType","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","permissions","authorizedCollectionTypeLinks","_","index","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","configurations","isDisplayed","collectionTypesPermissions","action","subject","singleTypesPermissions","currentContentTypeConfig","searchParams","page","pageSize","settings","defaultSortBy","defaultSortOrder","encode","info","displayName","COLLECTION_TYPES","SINGLE_TYPES","name","Layout","contentTypeMatch","useMatch","isLoading","authorisedModels","localeCompare","useLocation","startSection","useGuidedTour","startSectionRef","useRef","current","_Fragment","Page","Title","Loading","supportedModelsToDisplay","Navigate","replace","Layouts","Root","sideNav","renderDraglayerItem","Outlet","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","COMPONENT","DYNAMIC_ZONE","RELATION"],"mappings":"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"}
|
@@ -9,8 +9,8 @@ import { useDragLayer } from 'react-dnd';
|
|
9
9
|
import { C as CardDragPreview } from './CardDragPreview-DwuraT0K.mjs';
|
10
10
|
import { CaretDown, Trash, Drag, Cross } from '@strapi/icons';
|
11
11
|
import { styled } from 'styled-components';
|
12
|
-
import { D as DocumentStatus, u as useContentTypeSchema, g as getTranslation, a as useGetInitialDataQuery, b as useGetAllContentTypeSettingsQuery, s as setInitialData, C as COLLECTION_TYPES, S as SINGLE_TYPES, H as HOOKS } from './index-
|
13
|
-
import { F as FlexWrapper, L as LinkEllipsis, D as DisconnectButton } from './Relations-
|
12
|
+
import { D as DocumentStatus, u as useContentTypeSchema, g as getTranslation, a as useGetInitialDataQuery, b as useGetAllContentTypeSettingsQuery, s as setInitialData, C as COLLECTION_TYPES, S as SINGLE_TYPES, H as HOOKS } from './index-njcS3gUl.mjs';
|
13
|
+
import { F as FlexWrapper, L as LinkEllipsis, D as DisconnectButton } from './Relations-BemEu63h.mjs';
|
14
14
|
import { stringify, parse } from 'qs';
|
15
15
|
import { u as useTypedSelector, a as useTypedDispatch } from './hooks-DMvik5y_.mjs';
|
16
16
|
import { I as ItemTypes } from './useDragAndDrop-HYwNDExe.mjs';
|
@@ -23,7 +23,7 @@ import '@reduxjs/toolkit';
|
|
23
23
|
import 'prismjs';
|
24
24
|
import 'react-dnd-html5-backend';
|
25
25
|
import 'react-window';
|
26
|
-
import './relations-
|
26
|
+
import './relations-De8hSklO.mjs';
|
27
27
|
import 'react-redux';
|
28
28
|
|
29
29
|
function getStyle(initialOffset, currentOffset, mouseOffset) {
|
@@ -596,4 +596,4 @@ const generateLinks = (links, type, configurations = [])=>{
|
|
596
596
|
}
|
597
597
|
|
598
598
|
export { Layout };
|
599
|
-
//# sourceMappingURL=layout-
|
599
|
+
//# sourceMappingURL=layout-os6F94Aa.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"layout-DStNia_P.mjs","sources":["../../../admin/src/components/DragLayer.tsx","../../../admin/src/components/DragPreviews/ComponentDragPreview.tsx","../../../admin/src/components/DragPreviews/RelationDragPreview.tsx","../../../admin/src/components/LeftMenu.tsx","../../../admin/src/hooks/useContentManagerInitData.ts","../../../admin/src/layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n /**\n * TODO: it'd be great if we could make this a union where the type infers the item.\n */\n item: any;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n","import { Flex, FlexComponent, IconButton, Typography } from '@strapi/design-system';\nimport { CaretDown, Drag, Trash } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\ninterface ComponentDragPreviewProps {\n displayedValue: string;\n}\n\nconst ComponentDragPreview = ({ displayedValue }: ComponentDragPreviewProps) => {\n return (\n <Flex\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={3}\n padding={3}\n width=\"30rem\"\n >\n <ToggleButton type=\"button\">\n <Flex gap={6}>\n <DropdownIconWrapper\n alignItems=\"center\"\n justifyContent=\"center\"\n background=\"neutral200\"\n height=\"3.2rem\"\n width=\"3.2rem\"\n >\n <CaretDown />\n </DropdownIconWrapper>\n\n <Flex maxWidth=\"15rem\">\n <Typography textColor=\"neutral700\" ellipsis>\n {displayedValue}\n </Typography>\n </Flex>\n </Flex>\n </ToggleButton>\n\n <Flex gap={2}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Trash />\n </IconButton>\n\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DropdownIconWrapper = styled<FlexComponent>(Flex)`\n border-radius: 50%;\n\n svg {\n height: 0.6rem;\n width: 1.1rem;\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\n// TODO: we shouldn't have to reset a whole button\nconst ToggleButton = styled.button`\n border: none;\n background: transparent;\n display: block;\n width: 100%;\n text-align: unset;\n padding: 0;\n`;\n\nexport { ComponentDragPreview };\nexport type { ComponentDragPreviewProps };\n","import { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Cross, Drag } from '@strapi/icons';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport {\n DisconnectButton,\n LinkEllipsis,\n FlexWrapper,\n} from '../../pages/EditView/components/FormInputs/Relations';\n\nimport type { Data } from '@strapi/types';\n\ninterface RelationDragPreviewProps {\n status?: string;\n displayedValue: string;\n id: Data.ID;\n index: number;\n width: number;\n}\n\nconst RelationDragPreview = ({ status, displayedValue, width }: RelationDragPreviewProps) => {\n return (\n <Box style={{ width }}>\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={2}\n paddingRight={4}\n hasRadius\n borderWidth={1}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={4}\n >\n <FlexWrapper gap={1}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <LinkEllipsis href=\"\">\n <Typography textColor=\"primary600\" ellipsis>\n {displayedValue}\n </Typography>\n </LinkEllipsis>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <DisconnectButton type=\"button\">\n <Cross width=\"12px\" />\n </DisconnectButton>\n </Flex>\n </Box>\n );\n};\n\nexport { RelationDragPreview };\nexport type { RelationDragPreviewProps };\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n useCollator,\n useFilter,\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst SubNavLinkCustom = styled(SubNavLink)`\n div {\n width: inherit;\n span:nth-child(2) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: inherit;\n }\n }\n`;\n\nconst LeftMenu = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => startsWith(link.title, search))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader\n label={label}\n searchable\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n searchLabel={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n />\n <SubNavSections>\n {menu.map((section) => {\n return (\n <SubNavSection\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNavLinkCustom\n tag={NavLink}\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n width=\"100%\"\n >\n {link.title}\n </SubNavLinkCustom>\n );\n })}\n </SubNavSection>\n );\n })}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { LeftMenu };\n","import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","transform","DragLayer","renderItem","itemType","isDragging","item","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type","ComponentDragPreview","displayedValue","_jsxs","Flex","background","borderColor","justifyContent","gap","padding","ToggleButton","DropdownIconWrapper","alignItems","CaretDown","maxWidth","Typography","textColor","ellipsis","IconButton","withTooltip","label","variant","Trash","Drag","styled","theme","colors","neutral600","button","RelationDragPreview","status","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderWidth","FlexWrapper","minWidth","LinkEllipsis","href","DocumentStatus","DisconnectButton","Cross","SubNavLinkCustom","SubNavLink","LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","SubNav","aria-label","SubNavHeader","onChange","onClear","searchLabel","SubNavSections","SubNavSection","badgeLabel","length","toString","tag","NavLink","to","pathname","stringify","parse","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","notifyStatus","useNotifyAT","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","checkUserHasPermissions","useAuth","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","error","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","singleType","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","permissions","authorizedCollectionTypeLinks","_","index","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","configurations","isDisplayed","collectionTypesPermissions","action","subject","singleTypesPermissions","currentContentTypeConfig","searchParams","page","pageSize","settings","defaultSortBy","defaultSortOrder","encode","info","displayName","COLLECTION_TYPES","SINGLE_TYPES","name","Layout","contentTypeMatch","useMatch","isLoading","authorisedModels","localeCompare","useLocation","startSection","useGuidedTour","startSectionRef","useRef","current","_Fragment","Page","Title","Loading","supportedModelsToDisplay","Navigate","replace","Layouts","Root","sideNav","renderDraglayerItem","Outlet","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","COMPONENT","DYNAMIC_ZONE","RELATION"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"layout-os6F94Aa.mjs","sources":["../../../admin/src/components/DragLayer.tsx","../../../admin/src/components/DragPreviews/ComponentDragPreview.tsx","../../../admin/src/components/DragPreviews/RelationDragPreview.tsx","../../../admin/src/components/LeftMenu.tsx","../../../admin/src/hooks/useContentManagerInitData.ts","../../../admin/src/layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n /**\n * TODO: it'd be great if we could make this a union where the type infers the item.\n */\n item: any;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n","import { Flex, FlexComponent, IconButton, Typography } from '@strapi/design-system';\nimport { CaretDown, Drag, Trash } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\ninterface ComponentDragPreviewProps {\n displayedValue: string;\n}\n\nconst ComponentDragPreview = ({ displayedValue }: ComponentDragPreviewProps) => {\n return (\n <Flex\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={3}\n padding={3}\n width=\"30rem\"\n >\n <ToggleButton type=\"button\">\n <Flex gap={6}>\n <DropdownIconWrapper\n alignItems=\"center\"\n justifyContent=\"center\"\n background=\"neutral200\"\n height=\"3.2rem\"\n width=\"3.2rem\"\n >\n <CaretDown />\n </DropdownIconWrapper>\n\n <Flex maxWidth=\"15rem\">\n <Typography textColor=\"neutral700\" ellipsis>\n {displayedValue}\n </Typography>\n </Flex>\n </Flex>\n </ToggleButton>\n\n <Flex gap={2}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Trash />\n </IconButton>\n\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DropdownIconWrapper = styled<FlexComponent>(Flex)`\n border-radius: 50%;\n\n svg {\n height: 0.6rem;\n width: 1.1rem;\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\n// TODO: we shouldn't have to reset a whole button\nconst ToggleButton = styled.button`\n border: none;\n background: transparent;\n display: block;\n width: 100%;\n text-align: unset;\n padding: 0;\n`;\n\nexport { ComponentDragPreview };\nexport type { ComponentDragPreviewProps };\n","import { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Cross, Drag } from '@strapi/icons';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport {\n DisconnectButton,\n LinkEllipsis,\n FlexWrapper,\n} from '../../pages/EditView/components/FormInputs/Relations';\n\nimport type { Data } from '@strapi/types';\n\ninterface RelationDragPreviewProps {\n status?: string;\n displayedValue: string;\n id: Data.ID;\n index: number;\n width: number;\n}\n\nconst RelationDragPreview = ({ status, displayedValue, width }: RelationDragPreviewProps) => {\n return (\n <Box style={{ width }}>\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={2}\n paddingRight={4}\n hasRadius\n borderWidth={1}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={4}\n >\n <FlexWrapper gap={1}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <LinkEllipsis href=\"\">\n <Typography textColor=\"primary600\" ellipsis>\n {displayedValue}\n </Typography>\n </LinkEllipsis>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <DisconnectButton type=\"button\">\n <Cross width=\"12px\" />\n </DisconnectButton>\n </Flex>\n </Box>\n );\n};\n\nexport { RelationDragPreview };\nexport type { RelationDragPreviewProps };\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n useCollator,\n useFilter,\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst SubNavLinkCustom = styled(SubNavLink)`\n div {\n width: inherit;\n span:nth-child(2) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: inherit;\n }\n }\n`;\n\nconst LeftMenu = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => startsWith(link.title, search))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader\n label={label}\n searchable\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n searchLabel={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n />\n <SubNavSections>\n {menu.map((section) => {\n return (\n <SubNavSection\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNavLinkCustom\n tag={NavLink}\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n width=\"100%\"\n >\n {link.title}\n </SubNavLinkCustom>\n );\n })}\n </SubNavSection>\n );\n })}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { LeftMenu };\n","import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","transform","DragLayer","renderItem","itemType","isDragging","item","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type","ComponentDragPreview","displayedValue","_jsxs","Flex","background","borderColor","justifyContent","gap","padding","ToggleButton","DropdownIconWrapper","alignItems","CaretDown","maxWidth","Typography","textColor","ellipsis","IconButton","withTooltip","label","variant","Trash","Drag","styled","theme","colors","neutral600","button","RelationDragPreview","status","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderWidth","FlexWrapper","minWidth","LinkEllipsis","href","DocumentStatus","DisconnectButton","Cross","SubNavLinkCustom","SubNavLink","LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","SubNav","aria-label","SubNavHeader","onChange","onClear","searchLabel","SubNavSections","SubNavSection","badgeLabel","length","toString","tag","NavLink","to","pathname","stringify","parse","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","notifyStatus","useNotifyAT","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","checkUserHasPermissions","useAuth","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","error","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","singleType","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","permissions","authorizedCollectionTypeLinks","_","index","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","configurations","isDisplayed","collectionTypesPermissions","action","subject","singleTypesPermissions","currentContentTypeConfig","searchParams","page","pageSize","settings","defaultSortBy","defaultSortOrder","encode","info","displayName","COLLECTION_TYPES","SINGLE_TYPES","name","Layout","contentTypeMatch","useMatch","isLoading","authorisedModels","localeCompare","useLocation","startSection","useGuidedTour","startSectionRef","useRef","current","_Fragment","Page","Title","Loading","supportedModelsToDisplay","Navigate","replace","Layouts","Root","sideNav","renderDraglayerItem","Outlet","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","COMPONENT","DYNAMIC_ZONE","RELATION"],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { useState, useEffect } from 'react';
|
2
2
|
import { generateNKeysBetween } from 'fractional-indexing';
|
3
|
-
import { e as contentManagerApi } from './index-
|
3
|
+
import { e as contentManagerApi } from './index-njcS3gUl.mjs';
|
4
4
|
|
5
5
|
function useDebounce(value, delay) {
|
6
6
|
const [debouncedValue, setDebouncedValue] = useState(value);
|
@@ -170,4 +170,4 @@ const { useGetRelationsQuery, useLazySearchRelationsQuery } = relationsApi;
|
|
170
170
|
};
|
171
171
|
|
172
172
|
export { useDebounce as a, useLazySearchRelationsQuery as b, getRelationLabel as g, useGetRelationsQuery as u };
|
173
|
-
//# sourceMappingURL=relations-
|
173
|
+
//# sourceMappingURL=relations-De8hSklO.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"relations-Cq8NRUto.mjs","sources":["../../../admin/src/hooks/useDebounce.ts","../../../admin/src/services/relations.ts","../../../admin/src/utils/relations.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { generateNKeysBetween } from 'fractional-indexing';\n\nimport {\n RelationResult as RelResult,\n FindAvailable,\n FindExisting,\n} from '../../../shared/contracts/relations';\n\nimport { contentManagerApi } from './api';\n\nimport type { Modules } from '@strapi/types';\nimport type { errors } from '@strapi/utils';\n\ninterface RelationResult extends RelResult {\n __temp_key__: string;\n}\n\ntype GetRelationsResponse =\n | {\n results: Array<RelationResult>;\n pagination: {\n page: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['page']>;\n pageSize: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['pageSize']>;\n pageCount: number;\n total: number;\n } | null;\n error?: never;\n }\n | {\n results?: never;\n pagination?: never;\n error: errors.ApplicationError | errors.YupValidationError;\n };\n\nconst relationsApi = contentManagerApi.injectEndpoints({\n endpoints: (build) => ({\n getRelations: build.query<\n GetRelationsResponse,\n FindExisting.Params & {\n params?: FindExisting.Request['query'];\n }\n >({\n query: ({ model, id, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${id}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n id: queryArgs.id,\n targetField: queryArgs.targetField,\n locale: queryArgs.params?.locale,\n status: queryArgs.params?.status,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n *\n * Push new items at the beginning as latest items are shown first\n */\n currentCache.results = [\n ...prepareTempKeys(newItems.results, currentCache.results),\n ...currentCache.results,\n ];\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = prepareTempKeys(newItems.results);\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindExisting.Response) => {\n if ('results' in response && response.results) {\n return {\n ...response,\n results: prepareTempKeys(response.results.toReversed()),\n };\n } else {\n return response;\n }\n },\n providesTags: ['Relations'],\n }),\n searchRelations: build.query<\n FindAvailable.Response,\n FindAvailable.Params & {\n params?: FindAvailable.Request['query'];\n }\n >({\n query: ({ model, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n targetField: queryArgs.targetField,\n _q: queryArgs.params?._q,\n idsToOmit: queryArgs.params?.idsToOmit,\n idsToInclude: queryArgs.params?.idsToInclude,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n */\n const existingIds = currentCache.results.map((item) => item.documentId);\n const uniqueNewItems = newItems.results.filter(\n (item) => !existingIds.includes(item.documentId)\n );\n currentCache.results.push(...uniqueNewItems);\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = newItems.results;\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindAvailable.Response) => {\n if (response.results) {\n return {\n ...response,\n results: response.results,\n };\n } else {\n return response;\n }\n },\n }),\n }),\n});\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each relation item. This gives us\n * a stable identifier regardless of it's ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = (relations: RelResult[], existingRelations: RelationResult[] = []) => {\n const [firstItem] = existingRelations.slice(0);\n const keys = generateNKeysBetween(null, firstItem?.__temp_key__ ?? null, relations.length);\n\n return relations.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n};\n\nconst { useGetRelationsQuery, useLazySearchRelationsQuery } = relationsApi;\n\nexport { useGetRelationsQuery, useLazySearchRelationsQuery };\nexport type { RelationResult };\n","import type { MainField } from './attributes';\nimport type { RelationResult } from '../../../shared/contracts/relations';\n\n/**\n * @internal\n * @description Get the label of a relation, the contract has [key: string]: unknown,\n * so we need to check if the mainFieldKey is defined and if the relation has a value\n * under that property. If it does, we then verify it's type of string and return it.\n *\n * We fallback to the documentId.\n */\nconst getRelationLabel = (relation: RelationResult, mainField?: MainField): string => {\n const label = mainField && relation[mainField.name] ? relation[mainField.name] : null;\n\n if (typeof label === 'string') {\n return label;\n }\n\n return relation.documentId;\n};\n\nexport { getRelationLabel };\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout","relationsApi","contentManagerApi","injectEndpoints","endpoints","build","getRelations","query","model","id","targetField","params","url","method","config","serializeQueryArgs","args","endpointName","queryArgs","locale","status","merge","currentCache","newItems","pagination","page","results","prepareTempKeys","forceRefetch","currentArg","previousArg","pageSize","transformResponse","response","toReversed","providesTags","searchRelations","_q","idsToOmit","idsToInclude","existingIds","map","item","documentId","uniqueNewItems","filter","includes","push","relations","existingRelations","firstItem","slice","keys","generateNKeysBetween","__temp_key__","length","datum","index","useGetRelationsQuery","useLazySearchRelationsQuery","getRelationLabel","relation","mainField","label","name"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"relations-De8hSklO.mjs","sources":["../../../admin/src/hooks/useDebounce.ts","../../../admin/src/services/relations.ts","../../../admin/src/utils/relations.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { generateNKeysBetween } from 'fractional-indexing';\n\nimport {\n RelationResult as RelResult,\n FindAvailable,\n FindExisting,\n} from '../../../shared/contracts/relations';\n\nimport { contentManagerApi } from './api';\n\nimport type { Modules } from '@strapi/types';\nimport type { errors } from '@strapi/utils';\n\ninterface RelationResult extends RelResult {\n __temp_key__: string;\n}\n\ntype GetRelationsResponse =\n | {\n results: Array<RelationResult>;\n pagination: {\n page: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['page']>;\n pageSize: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['pageSize']>;\n pageCount: number;\n total: number;\n } | null;\n error?: never;\n }\n | {\n results?: never;\n pagination?: never;\n error: errors.ApplicationError | errors.YupValidationError;\n };\n\nconst relationsApi = contentManagerApi.injectEndpoints({\n endpoints: (build) => ({\n getRelations: build.query<\n GetRelationsResponse,\n FindExisting.Params & {\n params?: FindExisting.Request['query'];\n }\n >({\n query: ({ model, id, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${id}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n id: queryArgs.id,\n targetField: queryArgs.targetField,\n locale: queryArgs.params?.locale,\n status: queryArgs.params?.status,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n *\n * Push new items at the beginning as latest items are shown first\n */\n currentCache.results = [\n ...prepareTempKeys(newItems.results, currentCache.results),\n ...currentCache.results,\n ];\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = prepareTempKeys(newItems.results);\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindExisting.Response) => {\n if ('results' in response && response.results) {\n return {\n ...response,\n results: prepareTempKeys(response.results.toReversed()),\n };\n } else {\n return response;\n }\n },\n providesTags: ['Relations'],\n }),\n searchRelations: build.query<\n FindAvailable.Response,\n FindAvailable.Params & {\n params?: FindAvailable.Request['query'];\n }\n >({\n query: ({ model, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n targetField: queryArgs.targetField,\n _q: queryArgs.params?._q,\n idsToOmit: queryArgs.params?.idsToOmit,\n idsToInclude: queryArgs.params?.idsToInclude,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n */\n const existingIds = currentCache.results.map((item) => item.documentId);\n const uniqueNewItems = newItems.results.filter(\n (item) => !existingIds.includes(item.documentId)\n );\n currentCache.results.push(...uniqueNewItems);\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = newItems.results;\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindAvailable.Response) => {\n if (response.results) {\n return {\n ...response,\n results: response.results,\n };\n } else {\n return response;\n }\n },\n }),\n }),\n});\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each relation item. This gives us\n * a stable identifier regardless of it's ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = (relations: RelResult[], existingRelations: RelationResult[] = []) => {\n const [firstItem] = existingRelations.slice(0);\n const keys = generateNKeysBetween(null, firstItem?.__temp_key__ ?? null, relations.length);\n\n return relations.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n};\n\nconst { useGetRelationsQuery, useLazySearchRelationsQuery } = relationsApi;\n\nexport { useGetRelationsQuery, useLazySearchRelationsQuery };\nexport type { RelationResult };\n","import type { MainField } from './attributes';\nimport type { RelationResult } from '../../../shared/contracts/relations';\n\n/**\n * @internal\n * @description Get the label of a relation, the contract has [key: string]: unknown,\n * so we need to check if the mainFieldKey is defined and if the relation has a value\n * under that property. If it does, we then verify it's type of string and return it.\n *\n * We fallback to the documentId.\n */\nconst getRelationLabel = (relation: RelationResult, mainField?: MainField): string => {\n const label = mainField && relation[mainField.name] ? relation[mainField.name] : null;\n\n if (typeof label === 'string') {\n return label;\n }\n\n return relation.documentId;\n};\n\nexport { getRelationLabel };\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout","relationsApi","contentManagerApi","injectEndpoints","endpoints","build","getRelations","query","model","id","targetField","params","url","method","config","serializeQueryArgs","args","endpointName","queryArgs","locale","status","merge","currentCache","newItems","pagination","page","results","prepareTempKeys","forceRefetch","currentArg","previousArg","pageSize","transformResponse","response","toReversed","providesTags","searchRelations","_q","idsToOmit","idsToInclude","existingIds","map","item","documentId","uniqueNewItems","filter","includes","push","relations","existingRelations","firstItem","slice","keys","generateNKeysBetween","__temp_key__","length","datum","index","useGetRelationsQuery","useLazySearchRelationsQuery","getRelationLabel","relation","mainField","label","name"],"mappings":"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"}
|