@strapi/content-manager 5.53.0 → 5.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/admin/components/ActionsDrawer.js +17 -6
  2. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  3. package/dist/admin/components/ActionsDrawer.mjs +19 -8
  4. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +131 -52
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +133 -54
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/history/components/VersionsList.js +37 -43
  10. package/dist/admin/history/components/VersionsList.js.map +1 -1
  11. package/dist/admin/history/components/VersionsList.mjs +37 -43
  12. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  13. package/dist/admin/hooks/useContentManagerInitData.js +3 -2
  14. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  15. package/dist/admin/hooks/useContentManagerInitData.mjs +3 -2
  16. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentActions.js +3 -1
  18. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  19. package/dist/admin/hooks/useDocumentActions.mjs +4 -2
  20. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  21. package/dist/admin/layout.js +2 -4
  22. package/dist/admin/layout.js.map +1 -1
  23. package/dist/admin/layout.mjs +2 -4
  24. package/dist/admin/layout.mjs.map +1 -1
  25. package/dist/admin/modules/app.js +3 -1
  26. package/dist/admin/modules/app.js.map +1 -1
  27. package/dist/admin/modules/app.mjs +3 -1
  28. package/dist/admin/modules/app.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/EditViewPage.js +15 -20
  30. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  31. package/dist/admin/pages/EditView/EditViewPage.mjs +15 -20
  32. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/DocumentActions.js +2 -0
  34. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/DocumentActions.mjs +2 -0
  36. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +74 -7
  38. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs +74 -7
  40. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +7 -2
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +7 -2
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +59 -2
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +60 -3
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +4 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs +4 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +4 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +4 -1
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -1
  58. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -1
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +58 -1
  62. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +58 -2
  64. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +25 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +5 -2
  68. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/InputRenderer.js +5 -1
  70. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/InputRenderer.mjs +6 -2
  72. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  73. package/dist/admin/pages/ListView/ListViewPage.js +1 -0
  74. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  75. package/dist/admin/pages/ListView/ListViewPage.mjs +1 -0
  76. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  77. package/dist/admin/preview/components/InputPopover.js +64 -46
  78. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  79. package/dist/admin/preview/components/InputPopover.mjs +66 -49
  80. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  81. package/dist/admin/preview/hooks/usePreviewInputManager.js +23 -7
  82. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  83. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +25 -9
  84. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  85. package/dist/admin/preview/pages/Preview.js +19 -0
  86. package/dist/admin/preview/pages/Preview.js.map +1 -1
  87. package/dist/admin/preview/pages/Preview.mjs +20 -1
  88. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  89. package/dist/admin/preview/utils/constants.js +9 -3
  90. package/dist/admin/preview/utils/constants.js.map +1 -1
  91. package/dist/admin/preview/utils/constants.mjs +9 -3
  92. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  93. package/dist/admin/src/components/ActionsDrawer.d.ts +1 -0
  94. package/dist/admin/src/modules/app.d.ts +2 -0
  95. package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +2 -1
  96. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.d.ts +5 -1
  97. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +5 -0
  98. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.d.ts +5 -0
  99. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -1
  100. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +14 -1
  101. package/dist/admin/src/preview/components/InputPopover.d.ts +2 -1
  102. package/dist/admin/src/preview/pages/Preview.d.ts +1 -0
  103. package/dist/admin/src/preview/utils/constants.d.ts +8 -1
  104. package/dist/admin/src/services/init.d.ts +1 -0
  105. package/dist/admin/src/utils/contentStructure.d.ts +59 -0
  106. package/dist/admin/utils/contentStructure.js +136 -0
  107. package/dist/admin/utils/contentStructure.js.map +1 -0
  108. package/dist/admin/utils/contentStructure.mjs +130 -0
  109. package/dist/admin/utils/contentStructure.mjs.map +1 -0
  110. package/dist/server/controllers/init.js +7 -2
  111. package/dist/server/controllers/init.js.map +1 -1
  112. package/dist/server/controllers/init.mjs +7 -2
  113. package/dist/server/controllers/init.mjs.map +1 -1
  114. package/dist/server/preview/controllers/previewScript.js +548 -22
  115. package/dist/server/services/content-structure.js +53 -0
  116. package/dist/server/services/content-structure.js.map +1 -0
  117. package/dist/server/services/content-structure.mjs +51 -0
  118. package/dist/server/services/content-structure.mjs.map +1 -0
  119. package/dist/server/services/index.js +2 -0
  120. package/dist/server/services/index.js.map +1 -1
  121. package/dist/server/services/index.mjs +2 -0
  122. package/dist/server/services/index.mjs.map +1 -1
  123. package/dist/server/src/controllers/index.d.ts +1 -1
  124. package/dist/server/src/controllers/init.d.ts +1 -1
  125. package/dist/server/src/controllers/init.d.ts.map +1 -1
  126. package/dist/server/src/index.d.ts +6 -1
  127. package/dist/server/src/index.d.ts.map +1 -1
  128. package/dist/server/src/services/content-structure.d.ts +8 -0
  129. package/dist/server/src/services/content-structure.d.ts.map +1 -0
  130. package/dist/server/src/services/index.d.ts +5 -0
  131. package/dist/server/src/services/index.d.ts.map +1 -1
  132. package/dist/server/src/utils/index.d.ts +2 -0
  133. package/dist/server/src/utils/index.d.ts.map +1 -1
  134. package/dist/server/utils/index.js.map +1 -1
  135. package/dist/server/utils/index.mjs.map +1 -1
  136. package/dist/shared/contracts/init.d.ts +2 -0
  137. package/dist/shared/contracts/init.d.ts.map +1 -1
  138. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"RelationModal.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n useForm,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { buildValidParams } from '../../../../../exports';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDoc, useDocument, type UseDocument } from '../../../../../hooks/useDocument';\nimport { type DocumentMeta } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\nimport { ComponentProvider } from '../ComponentContext';\n\nimport type { RelationOpenMode } from '../../../../../../../shared/contracts/content-types';\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\nimport type { AnyData } from '../../../utils/data';\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\nconst getFullPageUrl = (currentDocumentMeta: DocumentMeta): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModalRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n documentHistory: DocumentMeta[];\n confirmDialogIntent:\n | null // No dialog\n | 'close' // Close the modal\n | 'back' // Go back one document in the modal's history\n | 'navigate' // Open the document in the edit view instead of in the modal\n | DocumentMeta; // Open a specific document in the modal\n isModalOpen: boolean;\n hasUnsavedChanges: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n}\n\ntype Action =\n | {\n type: 'GO_TO_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n };\n }\n | {\n type: 'GO_BACK';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'GO_FULL_PAGE';\n }\n | {\n type: 'GO_TO_CREATED_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n };\n }\n | {\n type: 'CANCEL_CONFIRM_DIALOG';\n }\n | {\n type: 'CLOSE_MODAL';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'SET_HAS_UNSAVED_CHANGES';\n payload: { hasUnsavedChanges: boolean };\n };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'GO_TO_RELATION':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return {\n ...state,\n confirmDialogIntent: action.payload.document,\n fieldToConnect: action.payload.fieldToConnect,\n fieldToConnectUID: action.payload.fieldToConnectUID,\n getParentFormValues: action.payload.getParentFormValues,\n };\n }\n\n const lastItemDocumentHistory = state.documentHistory.at(-1);\n const hasToResetDocumentHistory =\n lastItemDocumentHistory && !lastItemDocumentHistory.documentId;\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: hasToResetDocumentHistory\n ? [action.payload.document]\n : [...state.documentHistory, action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,\n fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID,\n getParentFormValues: hasToResetDocumentHistory\n ? undefined\n : action.payload.getParentFormValues,\n };\n case 'GO_BACK':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'back' };\n }\n\n return {\n ...state,\n documentHistory: state.documentHistory.slice(0, -1),\n confirmDialogIntent: null,\n };\n case 'GO_FULL_PAGE':\n if (state.hasUnsavedChanges) {\n return { ...state, confirmDialogIntent: 'navigate' };\n }\n\n return {\n ...state,\n documentHistory: [],\n hasUnsavedChanges: false,\n isModalOpen: false,\n confirmDialogIntent: null,\n };\n case 'GO_TO_CREATED_RELATION':\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: state.documentHistory\n ? [...state.documentHistory.slice(0, -1), action.payload.document]\n : [action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n };\n case 'CANCEL_CONFIRM_DIALOG':\n return {\n ...state,\n confirmDialogIntent: null,\n };\n case 'CLOSE_MODAL':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'close' };\n }\n\n return {\n ...state,\n documentHistory: [],\n confirmDialogIntent: null,\n hasUnsavedChanges: false,\n isModalOpen: false,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n };\n case 'SET_HAS_UNSAVED_CHANGES':\n return {\n ...state,\n hasUnsavedChanges: action.payload.hasUnsavedChanges,\n };\n default:\n return state;\n }\n}\n\ninterface RelationModalContextValue {\n state: State;\n dispatch: React.Dispatch<Action>;\n rootDocumentMeta: DocumentMeta;\n currentDocumentMeta: DocumentMeta;\n currentDocument: ReturnType<UseDocument>;\n onPreview?: () => void;\n isCreating: boolean;\n relationOpenMode: RelationOpenMode;\n}\n\nconst [RelationModalProvider, useRelationModal] =\n createContext<RelationModalContextValue>('RelationModal');\n\nfunction isRenderProp(\n children: RelationModalRendererProps['children']\n): children is (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n}) => React.ReactNode {\n return typeof children === 'function';\n}\n\ntype RelationModalRendererProps =\n // Is editing\n | {\n relation: DocumentMeta;\n children: React.ReactNode;\n }\n // Is creating\n | {\n relation?: never;\n children: (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n }) => React.ReactNode;\n };\n\nconst RootRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n\n const [state, dispatch] = React.useReducer(reducer, {\n documentHistory: [],\n confirmDialogIntent: null,\n isModalOpen: false,\n hasUnsavedChanges: false,\n fieldToConnect: undefined,\n });\n\n const rootDocument = useDoc();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query ?? {}), [query]);\n\n const rootDocumentMeta: DocumentMeta = {\n documentId: rootDocument.document?.documentId || '',\n model: rootDocument.model,\n collectionType: rootDocument.collectionType,\n params,\n };\n\n // Get the relationOpenMode setting from the current document's layout configuration\n const documentLayoutResponse = useDocumentLayout(rootDocument.model);\n const relationOpenMode: RelationOpenMode =\n documentLayoutResponse.edit?.settings?.relationOpenMode ?? 'modal';\n\n const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;\n const currentDocument = useDocument(currentDocumentMeta);\n // TODO: check if we can remove the single type check\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const isCreating = !currentDocumentMeta.documentId && !isSingleType;\n /**\n * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the\n * pieces that will be used by potential child relations: the context, header, form, and footer.\n */\n return (\n <RelationModalProvider\n state={state}\n dispatch={dispatch}\n rootDocumentMeta={rootDocumentMeta}\n currentDocumentMeta={currentDocumentMeta}\n currentDocument={currentDocument}\n isCreating={isCreating}\n relationOpenMode={relationOpenMode}\n >\n <RelationModal>\n {isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n )}\n </RelationModal>\n </RelationModalProvider>\n );\n};\n\nconst NestedRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n const dispatch = useRelationModal('NestedRelation', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('NestedRelation', (state) => state.relationOpenMode);\n\n return isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n ); /* This is the trigger that will be rendered in the parent relation */\n};\n\n/**\n * Component responsible for rendering its children wrapped in a modal, form and context if needed\n */\nconst RelationModalRenderer = (props: RelationModalRendererProps) => {\n // We're in a nested relation if the relation modal context is not undefined\n const isNested = useRelationModal('RelationContextWrapper', (state) => state != undefined, false);\n\n return isNested ? <NestedRelationRenderer {...props} /> : <RootRelationRenderer {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModal\n * -----------------------------------------------------------------------------------------------*/\nconst generateCreateUrl = (currentDocumentMeta: DocumentMeta) => {\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${\n currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : ''\n }`;\n};\n\nconst RelationModal = ({ children }: { children: React.ReactNode }) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /*\n * We must wrap the modal window with Component Provider with reset values\n * to avoid inheriting id and uid from the root document and having weird\n * behaviors with simple relationships..\n */\n return (\n <ComponentProvider id={undefined} level={-1} uid={undefined} type={undefined}>\n <Modal.Root\n open={state.isModalOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({\n type: 'CLOSE_MODAL',\n payload: { shouldBypassConfirmation: false },\n });\n }\n }}\n >\n {children}\n <StyledModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label={formatMessage({ id: 'global.back', defaultMessage: 'Back' })}\n variant=\"ghost\"\n disabled={state.documentHistory.length < 2}\n onClick={() => {\n dispatch({\n type: 'GO_BACK',\n payload: { shouldBypassConfirmation: false },\n });\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {isCreating\n ? formatMessage({\n id: 'content-manager.relation.create',\n defaultMessage: 'Create a relation',\n })\n : formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n <IconButton\n onClick={() => {\n dispatch({\n type: 'GO_FULL_PAGE',\n });\n if (!state.hasUnsavedChanges) {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(getFullPageUrl(currentDocumentMeta));\n }\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <FormContext\n method={isCreating ? 'POST' : 'PUT'}\n initialValues={currentDocument.getInitialFormValues(isCreating)}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <RelationModalBody />\n </FormContext>\n </Modal.Body>\n </StyledModalContent>\n </Modal.Root>\n </ComponentProvider>\n );\n};\n/**\n * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.\n * Will be wrapped in a Modal.Body by the RelationModal component.\n * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.\n */\nconst RelationModalBody = () => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /**\n * One-way sync the modified state from the form to the modal state.\n * It is needed because we need to consume state from the form context in order to lift it up\n * into the modal context. It is not possible otherwise because the modal needs the form state,\n * but it must be a parent of the form.\n */\n const modified = useForm('FormWatcher', (state) => state.modified);\n const isSubmitting = useForm('FormWatcher', (state) => state.isSubmitting);\n const hasUnsavedChanges = modified && !isSubmitting;\n React.useEffect(() => {\n dispatch({ type: 'SET_HAS_UNSAVED_CHANGES', payload: { hasUnsavedChanges } });\n }, [hasUnsavedChanges, dispatch]);\n\n const handleCloseModal = (shouldBypassConfirmation: boolean) => {\n dispatch({ type: 'CLOSE_MODAL', payload: { shouldBypassConfirmation } });\n\n if (shouldBypassConfirmation || !state.hasUnsavedChanges) {\n // TODO: check if we can avoid this by relying on RTK invalidatesTags.\n // If so we can delete this function and dispatch the events directly\n triggerRefetchDocument(\n // TODO check if params should be removed (as they were before)\n rootDocumentMeta,\n // Favor the cache\n true\n );\n }\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const fullPageUrl = getFullPageUrl(currentDocumentMeta);\n const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);\n\n if (isRootDocumentUrl) {\n handleCloseModal(true);\n } else {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(fullPageUrl);\n }\n }\n };\n\n const handleConfirm = () => {\n if (state.confirmDialogIntent === null) {\n return;\n }\n if (state.confirmDialogIntent === 'navigate') {\n handleRedirection();\n } else if (state.confirmDialogIntent === 'back') {\n dispatch({ type: 'GO_BACK', payload: { shouldBypassConfirmation: true } });\n } else if (state.confirmDialogIntent === 'close') {\n handleCloseModal(true);\n } else if ('documentId' in state.confirmDialogIntent) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: {\n document: state.confirmDialogIntent,\n shouldBypassConfirmation: true,\n fieldToConnect: state.fieldToConnect,\n fieldToConnectUID: state.fieldToConnectUID,\n getParentFormValues: state.getParentFormValues,\n },\n });\n }\n };\n\n return (\n <>\n <RelationModalForm />\n <Dialog.Root open={state.confirmDialogIntent != null}>\n <ConfirmDialog\n onConfirm={() => handleConfirm()}\n onCancel={() => dispatch({ type: 'CANCEL_CONFIRM_DIALOG' })}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n\nconst RelationModalTrigger = ({\n children,\n relation,\n}: {\n children: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const dispatch = useRelationModal('ModalTrigger', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('ModalTrigger', (state) => state.relationOpenMode);\n\n const fullPageUrl = getFullPageUrl(relation);\n\n if (relationOpenMode === 'newTab') {\n return (\n <StyledRelationLink to={fullPageUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </StyledRelationLink>\n );\n }\n\n if (relationOpenMode === 'page') {\n return <StyledRelationLink to={fullPageUrl}>{children}</StyledRelationLink>;\n }\n\n return (\n <StyledTextButton\n onClick={() =>\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n })\n }\n >\n {children}\n </StyledTextButton>\n );\n};\n\nconst StyledTextButton = styled(TextButton)`\n max-width: 100%;\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\nconst StyledRelationLink = styled(RouterLink)`\n max-width: 100%;\n font-size: ${({ theme }) => theme.fontSizes[2]};\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n display: block;\n color: ${({ theme }) => theme.colors.primary600};\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: ${({ theme }) => theme.colors.primary700};\n text-decoration: underline;\n }\n`;\n\n/**\n * The mini edit view for a relation that is displayed inside a modal.\n * It's complete with its header, document actions and form layout.\n */\nconst RelationModalForm = () => {\n const { formatMessage } = useIntl();\n\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);\n const plugins = useStrapiApp('RelationModalForm', (state) => state.plugins);\n\n const initialValues = isCreating\n ? currentDocument.getInitialFormValues(isCreating)\n : currentDocument.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: currentDocumentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;\n\n if (isLoading && !currentDocument.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !currentDocumentMeta.model ||\n documentLayoutResponse.error ||\n (!isCreating && !currentDocument.document) ||\n (!isCreating && !currentDocument.meta) ||\n !currentDocument.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: currentDocumentMeta.collectionType,\n model: currentDocumentMeta.model,\n documentId: currentDocumentMeta.documentId,\n document: currentDocument.document,\n meta: currentDocument.meta,\n } satisfies DocumentActionProps;\n\n return (\n <DocumentRBAC permissions={permissions} model={currentDocumentMeta.model}>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={currentDocument.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={currentDocument}\n hasBackground={false}\n />\n </Box>\n </Flex>\n </DocumentRBAC>\n );\n};\n\nexport { reducer, RelationModalRenderer, useRelationModal, getFullPageUrl, generateCreateUrl };\nexport type { State, Action, RelationOpenMode };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","StyledModalContent","styled","Modal","Content","getFullPageUrl","currentDocumentMeta","isSingleType","collectionType","queryParams","params","locale","model","documentId","reducer","state","action","type","hasUnsavedChanges","payload","shouldBypassConfirmation","confirmDialogIntent","document","fieldToConnect","fieldToConnectUID","getParentFormValues","lastItemDocumentHistory","documentHistory","at","hasToResetDocumentHistory","isModalOpen","slice","RelationModalProvider","useRelationModal","createContext","isRenderProp","children","RootRelationRenderer","props","dispatch","React","useReducer","rootDocument","useDoc","query","useQueryParams","useMemo","buildValidParams","rootDocumentMeta","documentLayoutResponse","useDocumentLayout","relationOpenMode","edit","settings","currentDocument","useDocument","isCreating","_jsx","RelationModal","relation","RelationModalTrigger","NestedRelationRenderer","RelationModalRenderer","isNested","generateCreateUrl","formatMessage","useIntl","navigate","useNavigate","ComponentProvider","id","level","uid","_jsxs","Root","open","onOpenChange","Header","gap","Flex","justifyContent","alignItems","width","IconButton","withTooltip","label","defaultMessage","variant","disabled","length","onClick","marginRight","ArrowLeft","Typography","tag","fontWeight","ArrowsOut","Body","FormContext","method","initialValues","getInitialFormValues","validate","values","options","yupSchema","createYupSchema","schema","attributes","components","status","abortEarly","RelationModalBody","pathname","search","useLocation","triggerRefetchDocument","useLazyGetDocumentQuery","modified","useForm","isSubmitting","useEffect","handleCloseModal","handleRedirection","editViewUrl","fullPageUrl","isRootDocumentUrl","includes","handleConfirm","_Fragment","RelationModalForm","Dialog","ConfirmDialog","onConfirm","onCancel","StyledRelationLink","to","target","rel","StyledTextButton","TextButton","theme","fontSizes","RouterLink","colors","primary600","primary700","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","subject","Loader","small","meta","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","mainField","hasDraftAndPublished","draftAndPublish","activeTab","DocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","filter","position","flat","primaryAction","secondaryAction","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","layout","hasBackground"],"mappings":"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"}
1
+ {"version":3,"file":"RelationModal.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n useForm,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { useIntl } from 'react-intl';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { buildValidParams } from '../../../../../exports';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDoc, useDocument, type UseDocument } from '../../../../../hooks/useDocument';\nimport { type DocumentMeta } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\nimport { ComponentProvider } from '../ComponentContext';\n\nimport type { RelationOpenMode } from '../../../../../../../shared/contracts/content-types';\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\nimport type { AnyData } from '../../../utils/data';\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\nconst getFullPageUrl = (currentDocumentMeta: DocumentMeta): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModalRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n documentHistory: DocumentMeta[];\n confirmDialogIntent:\n | null // No dialog\n | 'close' // Close the modal\n | 'back' // Go back one document in the modal's history\n | 'navigate' // Open the document in the edit view instead of in the modal\n | DocumentMeta; // Open a specific document in the modal\n isModalOpen: boolean;\n hasUnsavedChanges: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n}\n\ntype Action =\n | {\n type: 'GO_TO_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n };\n }\n | {\n type: 'GO_BACK';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'GO_FULL_PAGE';\n }\n | {\n type: 'GO_TO_CREATED_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n };\n }\n | {\n type: 'CANCEL_CONFIRM_DIALOG';\n }\n | {\n type: 'CLOSE_MODAL';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'SET_HAS_UNSAVED_CHANGES';\n payload: { hasUnsavedChanges: boolean };\n };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'GO_TO_RELATION':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return {\n ...state,\n confirmDialogIntent: action.payload.document,\n fieldToConnect: action.payload.fieldToConnect,\n fieldToConnectUID: action.payload.fieldToConnectUID,\n getParentFormValues: action.payload.getParentFormValues,\n };\n }\n\n const lastItemDocumentHistory = state.documentHistory.at(-1);\n const hasToResetDocumentHistory =\n lastItemDocumentHistory && !lastItemDocumentHistory.documentId;\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: hasToResetDocumentHistory\n ? [action.payload.document]\n : [...state.documentHistory, action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,\n fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID,\n getParentFormValues: hasToResetDocumentHistory\n ? undefined\n : action.payload.getParentFormValues,\n };\n case 'GO_BACK':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'back' };\n }\n\n return {\n ...state,\n documentHistory: state.documentHistory.slice(0, -1),\n confirmDialogIntent: null,\n };\n case 'GO_FULL_PAGE':\n if (state.hasUnsavedChanges) {\n return { ...state, confirmDialogIntent: 'navigate' };\n }\n\n return {\n ...state,\n documentHistory: [],\n hasUnsavedChanges: false,\n isModalOpen: false,\n confirmDialogIntent: null,\n };\n case 'GO_TO_CREATED_RELATION':\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: state.documentHistory\n ? [...state.documentHistory.slice(0, -1), action.payload.document]\n : [action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n };\n case 'CANCEL_CONFIRM_DIALOG':\n return {\n ...state,\n confirmDialogIntent: null,\n };\n case 'CLOSE_MODAL':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'close' };\n }\n\n return {\n ...state,\n documentHistory: [],\n confirmDialogIntent: null,\n hasUnsavedChanges: false,\n isModalOpen: false,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n };\n case 'SET_HAS_UNSAVED_CHANGES':\n return {\n ...state,\n hasUnsavedChanges: action.payload.hasUnsavedChanges,\n };\n default:\n return state;\n }\n}\n\ninterface RelationModalContextValue {\n state: State;\n dispatch: React.Dispatch<Action>;\n rootDocumentMeta: DocumentMeta;\n currentDocumentMeta: DocumentMeta;\n currentDocument: ReturnType<UseDocument>;\n onPreview?: () => void;\n isCreating: boolean;\n relationOpenMode: RelationOpenMode;\n}\n\nconst [RelationModalProvider, useRelationModal] =\n createContext<RelationModalContextValue>('RelationModal');\n\nfunction isRenderProp(\n children: RelationModalRendererProps['children']\n): children is (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n}) => React.ReactNode {\n return typeof children === 'function';\n}\n\ntype RelationModalRendererProps =\n // Is editing\n | {\n relation: DocumentMeta;\n children: React.ReactNode;\n }\n // Is creating\n | {\n relation?: never;\n children: (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n }) => React.ReactNode;\n };\n\nconst RootRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n\n const [state, dispatch] = React.useReducer(reducer, {\n documentHistory: [],\n confirmDialogIntent: null,\n isModalOpen: false,\n hasUnsavedChanges: false,\n fieldToConnect: undefined,\n });\n\n const rootDocument = useDoc();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query ?? {}), [query]);\n\n const rootDocumentMeta: DocumentMeta = {\n documentId: rootDocument.document?.documentId || '',\n model: rootDocument.model,\n collectionType: rootDocument.collectionType,\n params,\n };\n\n // Get the relationOpenMode setting from the current document's layout configuration\n const documentLayoutResponse = useDocumentLayout(rootDocument.model);\n const relationOpenMode: RelationOpenMode =\n documentLayoutResponse.edit?.settings?.relationOpenMode ?? 'modal';\n\n const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;\n const currentDocument = useDocument(currentDocumentMeta);\n // TODO: check if we can remove the single type check\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const isCreating = !currentDocumentMeta.documentId && !isSingleType;\n /**\n * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the\n * pieces that will be used by potential child relations: the context, header, form, and footer.\n */\n return (\n <RelationModalProvider\n state={state}\n dispatch={dispatch}\n rootDocumentMeta={rootDocumentMeta}\n currentDocumentMeta={currentDocumentMeta}\n currentDocument={currentDocument}\n isCreating={isCreating}\n relationOpenMode={relationOpenMode}\n >\n <RelationModal>\n {isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n )}\n </RelationModal>\n </RelationModalProvider>\n );\n};\n\nconst NestedRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n const dispatch = useRelationModal('NestedRelation', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('NestedRelation', (state) => state.relationOpenMode);\n\n return isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n ); /* This is the trigger that will be rendered in the parent relation */\n};\n\n/**\n * Component responsible for rendering its children wrapped in a modal, form and context if needed\n */\nconst RelationModalRenderer = (props: RelationModalRendererProps) => {\n // We're in a nested relation if the relation modal context is not undefined\n const isNested = useRelationModal('RelationContextWrapper', (state) => state != undefined, false);\n\n return isNested ? <NestedRelationRenderer {...props} /> : <RootRelationRenderer {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModal\n * -----------------------------------------------------------------------------------------------*/\nconst generateCreateUrl = (currentDocumentMeta: DocumentMeta) => {\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${\n currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : ''\n }`;\n};\n\n/**\n * Pre-fill the inverse relation with the parent that opened create-on-the-fly.\n * One-way relations have no inverse; unsaved parents have no documentId.\n */\nconst prefillParentRelation = ({\n initialValues,\n fieldToConnect,\n childSchema,\n parentDocument,\n parentModel,\n}: {\n initialValues?: AnyData;\n fieldToConnect?: string;\n childSchema?: { attributes?: Record<string, unknown> };\n parentDocument?: Record<string, unknown>;\n parentModel?: string;\n}): AnyData | undefined => {\n const documentId = parentDocument?.documentId;\n // mappedBy/inversedBy names a top-level attribute, not a component path.\n const parentFieldName = fieldToConnect;\n\n if (!initialValues || typeof documentId !== 'string' || !documentId || !parentFieldName) {\n return initialValues;\n }\n\n const inverseField = Object.entries(childSchema?.attributes ?? {}).find(([, attribute]) => {\n const relation = attribute as {\n type?: string;\n target?: string;\n inversedBy?: string;\n mappedBy?: string;\n };\n\n return (\n relation.type === 'relation' &&\n relation.target === parentModel &&\n (relation.inversedBy === parentFieldName || relation.mappedBy === parentFieldName)\n );\n })?.[0];\n\n if (!inverseField) {\n return initialValues;\n }\n\n const id = parentDocument.id ?? documentId;\n\n return {\n ...initialValues,\n [inverseField]: {\n connect: [\n {\n ...Object.fromEntries(\n Object.entries(parentDocument).filter(\n ([, value]) =>\n value === null || ['string', 'number', 'boolean'].includes(typeof value)\n )\n ),\n id,\n documentId,\n apiData: {\n id,\n documentId,\n locale: parentDocument.locale,\n isTemporary: true,\n },\n __temp_key__: generateNKeysBetween(null, null, 1)[0],\n },\n ],\n disconnect: [],\n },\n };\n};\n\nconst RelationModal = ({ children }: { children: React.ReactNode }) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const parentDocumentMeta = state.documentHistory.at(-2) ?? rootDocumentMeta;\n const parentDocument = useDocument(parentDocumentMeta, {\n skip: !isCreating || !state.fieldToConnect,\n });\n const initialValues = prefillParentRelation({\n initialValues: currentDocument.getInitialFormValues(isCreating),\n fieldToConnect: isCreating ? state.fieldToConnect : undefined,\n childSchema: currentDocument.schema,\n parentDocument: parentDocument.document,\n parentModel: parentDocumentMeta.model,\n });\n\n /*\n * We must wrap the modal window with Component Provider with reset values\n * to avoid inheriting id and uid from the root document and having weird\n * behaviors with simple relationships..\n */\n return (\n <ComponentProvider id={undefined} level={-1} uid={undefined} type={undefined}>\n <Modal.Root\n open={state.isModalOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({\n type: 'CLOSE_MODAL',\n payload: { shouldBypassConfirmation: false },\n });\n }\n }}\n >\n {children}\n <StyledModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label={formatMessage({ id: 'global.back', defaultMessage: 'Back' })}\n variant=\"ghost\"\n disabled={state.documentHistory.length < 2}\n onClick={() => {\n dispatch({\n type: 'GO_BACK',\n payload: { shouldBypassConfirmation: false },\n });\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {isCreating\n ? formatMessage({\n id: 'content-manager.relation.create',\n defaultMessage: 'Create a relation',\n })\n : formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n <IconButton\n onClick={() => {\n dispatch({\n type: 'GO_FULL_PAGE',\n });\n if (!state.hasUnsavedChanges) {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(getFullPageUrl(currentDocumentMeta));\n }\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <FormContext\n method={isCreating ? 'POST' : 'PUT'}\n initialValues={initialValues}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <RelationModalBody />\n </FormContext>\n </Modal.Body>\n </StyledModalContent>\n </Modal.Root>\n </ComponentProvider>\n );\n};\n/**\n * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.\n * Will be wrapped in a Modal.Body by the RelationModal component.\n * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.\n */\nconst RelationModalBody = () => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /**\n * One-way sync the modified state from the form to the modal state.\n * It is needed because we need to consume state from the form context in order to lift it up\n * into the modal context. It is not possible otherwise because the modal needs the form state,\n * but it must be a parent of the form.\n */\n const modified = useForm('FormWatcher', (state) => state.modified);\n const isSubmitting = useForm('FormWatcher', (state) => state.isSubmitting);\n const hasUnsavedChanges = modified && !isSubmitting;\n React.useEffect(() => {\n dispatch({ type: 'SET_HAS_UNSAVED_CHANGES', payload: { hasUnsavedChanges } });\n }, [hasUnsavedChanges, dispatch]);\n\n const handleCloseModal = (shouldBypassConfirmation: boolean) => {\n dispatch({ type: 'CLOSE_MODAL', payload: { shouldBypassConfirmation } });\n\n if (shouldBypassConfirmation || !state.hasUnsavedChanges) {\n // TODO: check if we can avoid this by relying on RTK invalidatesTags.\n // If so we can delete this function and dispatch the events directly\n triggerRefetchDocument(\n // TODO check if params should be removed (as they were before)\n rootDocumentMeta,\n // Favor the cache\n true\n );\n }\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const fullPageUrl = getFullPageUrl(currentDocumentMeta);\n const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);\n\n if (isRootDocumentUrl) {\n handleCloseModal(true);\n } else {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(fullPageUrl);\n }\n }\n };\n\n const handleConfirm = () => {\n if (state.confirmDialogIntent === null) {\n return;\n }\n if (state.confirmDialogIntent === 'navigate') {\n handleRedirection();\n } else if (state.confirmDialogIntent === 'back') {\n dispatch({ type: 'GO_BACK', payload: { shouldBypassConfirmation: true } });\n } else if (state.confirmDialogIntent === 'close') {\n handleCloseModal(true);\n } else if ('documentId' in state.confirmDialogIntent) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: {\n document: state.confirmDialogIntent,\n shouldBypassConfirmation: true,\n fieldToConnect: state.fieldToConnect,\n fieldToConnectUID: state.fieldToConnectUID,\n getParentFormValues: state.getParentFormValues,\n },\n });\n }\n };\n\n return (\n <>\n <RelationModalForm />\n <Dialog.Root open={state.confirmDialogIntent != null}>\n <ConfirmDialog\n onConfirm={() => handleConfirm()}\n onCancel={() => dispatch({ type: 'CANCEL_CONFIRM_DIALOG' })}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n\nconst RelationModalTrigger = ({\n children,\n relation,\n}: {\n children: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const dispatch = useRelationModal('ModalTrigger', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('ModalTrigger', (state) => state.relationOpenMode);\n\n const fullPageUrl = getFullPageUrl(relation);\n\n if (relationOpenMode === 'newTab') {\n return (\n <StyledRelationLink to={fullPageUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </StyledRelationLink>\n );\n }\n\n if (relationOpenMode === 'page') {\n return <StyledRelationLink to={fullPageUrl}>{children}</StyledRelationLink>;\n }\n\n return (\n <StyledTextButton\n onClick={() =>\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n })\n }\n >\n {children}\n </StyledTextButton>\n );\n};\n\nconst StyledTextButton = styled(TextButton)`\n max-width: 100%;\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\nconst StyledRelationLink = styled(RouterLink)`\n max-width: 100%;\n font-size: ${({ theme }) => theme.fontSizes[2]};\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n display: block;\n color: ${({ theme }) => theme.colors.primary600};\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: ${({ theme }) => theme.colors.primary700};\n text-decoration: underline;\n }\n`;\n\n/**\n * The mini edit view for a relation that is displayed inside a modal.\n * It's complete with its header, document actions and form layout.\n */\nconst RelationModalForm = () => {\n const { formatMessage } = useIntl();\n\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);\n const plugins = useStrapiApp('RelationModalForm', (state) => state.plugins);\n\n const initialValues = isCreating\n ? currentDocument.getInitialFormValues(isCreating)\n : currentDocument.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: currentDocumentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;\n\n if (isLoading && !currentDocument.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !currentDocumentMeta.model ||\n documentLayoutResponse.error ||\n (!isCreating && !currentDocument.document) ||\n (!isCreating && !currentDocument.meta) ||\n !currentDocument.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: currentDocumentMeta.collectionType,\n model: currentDocumentMeta.model,\n documentId: currentDocumentMeta.documentId,\n document: currentDocument.document,\n meta: currentDocument.meta,\n } satisfies DocumentActionProps;\n\n return (\n <DocumentRBAC permissions={permissions} model={currentDocumentMeta.model}>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={currentDocument.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={currentDocument}\n hasBackground={false}\n />\n </Box>\n </Flex>\n </DocumentRBAC>\n );\n};\n\nexport {\n reducer,\n RelationModalRenderer,\n useRelationModal,\n getFullPageUrl,\n generateCreateUrl,\n prefillParentRelation,\n};\nexport type { State, Action, RelationOpenMode };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","StyledModalContent","styled","Modal","Content","getFullPageUrl","currentDocumentMeta","isSingleType","collectionType","queryParams","params","locale","model","documentId","reducer","state","action","type","hasUnsavedChanges","payload","shouldBypassConfirmation","confirmDialogIntent","document","fieldToConnect","fieldToConnectUID","getParentFormValues","lastItemDocumentHistory","documentHistory","at","hasToResetDocumentHistory","isModalOpen","slice","RelationModalProvider","useRelationModal","createContext","isRenderProp","children","RootRelationRenderer","props","dispatch","React","useReducer","rootDocument","useDoc","query","useQueryParams","useMemo","buildValidParams","rootDocumentMeta","documentLayoutResponse","useDocumentLayout","relationOpenMode","edit","settings","currentDocument","useDocument","isCreating","_jsx","RelationModal","relation","RelationModalTrigger","NestedRelationRenderer","RelationModalRenderer","isNested","generateCreateUrl","prefillParentRelation","initialValues","childSchema","parentDocument","parentModel","parentFieldName","inverseField","Object","entries","attributes","find","attribute","target","inversedBy","mappedBy","id","connect","fromEntries","filter","value","includes","apiData","isTemporary","__temp_key__","generateNKeysBetween","disconnect","formatMessage","useIntl","navigate","useNavigate","parentDocumentMeta","skip","getInitialFormValues","schema","ComponentProvider","level","uid","_jsxs","Root","open","onOpenChange","Header","gap","Flex","justifyContent","alignItems","width","IconButton","withTooltip","label","defaultMessage","variant","disabled","length","onClick","marginRight","ArrowLeft","Typography","tag","fontWeight","ArrowsOut","Body","FormContext","method","validate","values","options","yupSchema","createYupSchema","components","status","abortEarly","RelationModalBody","pathname","search","useLocation","triggerRefetchDocument","useLazyGetDocumentQuery","modified","useForm","isSubmitting","useEffect","handleCloseModal","handleRedirection","editViewUrl","fullPageUrl","isRootDocumentUrl","handleConfirm","_Fragment","RelationModalForm","Dialog","ConfirmDialog","onConfirm","onCancel","StyledRelationLink","to","rel","StyledTextButton","TextButton","theme","fontSizes","RouterLink","colors","primary600","primary700","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","subject","Loader","small","meta","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","mainField","hasDraftAndPublished","draftAndPublish","activeTab","DocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","position","flat","primaryAction","secondaryAction","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","layout","hasBackground"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- require('react');
4
+ var React = require('react');
5
5
  var strapiAdmin = require('@strapi/admin/strapi-admin');
6
6
  var designSystem = require('@strapi/design-system');
7
7
  var Icons = require('@strapi/icons');
@@ -9,6 +9,26 @@ var reactIntl = require('react-intl');
9
9
  var EditorToolbarObserver = require('../../EditorToolbarObserver.js');
10
10
  var utils = require('./utils/utils.js');
11
11
 
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+
12
32
  const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
13
33
  const { formatMessage } = reactIntl.useIntl();
14
34
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
@@ -30,6 +50,7 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
30
50
  const { formatMessage } = reactIntl.useIntl();
31
51
  const isMobile = strapiAdmin.useIsMobile();
32
52
  const isDisabled = disabled || isPreviewMode;
53
+ const toolbarContainerRef = React__namespace.useRef(null);
33
54
  const handleActionClick = (value, currentEditorRef)=>{
34
55
  switch(value){
35
56
  case 'Link':
@@ -486,6 +507,7 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
486
507
  overflow: "hidden",
487
508
  children: [
488
509
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
510
+ ref: toolbarContainerRef,
489
511
  gap: {
490
512
  initial: 3,
491
513
  medium: 2
@@ -495,7 +517,8 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
495
517
  "data-hide-toolbar-separator": "true",
496
518
  children: /*#__PURE__*/ jsxRuntime.jsx(EditorToolbarObserver.EditorToolbarObserver, {
497
519
  menuTriggerVariant: "tertiary",
498
- observedComponents: observedComponents
520
+ observedComponents: observedComponents,
521
+ containerRef: toolbarContainerRef
499
522
  })
500
523
  }),
501
524
  onTogglePreviewMode && !isMobile && /*#__PURE__*/ jsxRuntime.jsx(WysiwygPreviewToggleButton, {
@@ -1 +1 @@
1
- {"version":3,"file":"WysiwygNav.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\ninterface WysiwygPreviewToggleButtonProps {\n isPreviewMode?: boolean;\n onTogglePreviewMode: () => void;\n}\n\nconst WysiwygPreviewToggleButton = ({\n isPreviewMode,\n onTogglePreviewMode,\n}: WysiwygPreviewToggleButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n );\n};\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const isDisabled = disabled || isPreviewMode;\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={{ initial: 3, medium: 4 }}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex\n gap={{ initial: 3, medium: 2 }}\n overflow=\"hidden\"\n width=\"100%\"\n data-hide-toolbar-separator=\"true\"\n >\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n />\n </Flex>\n\n {onTogglePreviewMode && !isMobile && (\n <WysiwygPreviewToggleButton\n isPreviewMode={isPreviewMode}\n onTogglePreviewMode={onTogglePreviewMode}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav, WysiwygPreviewToggleButton };\nexport type { WysiwygNavProps, WysiwygPreviewToggleButtonProps };\n"],"names":["WysiwygPreviewToggleButton","isPreviewMode","onTogglePreviewMode","formatMessage","useIntl","_jsx","Button","onClick","variant","minWidth","id","defaultMessage","WysiwygNav","disabled","editorRef","onToggleMediaLib","isMobile","useIsMobile","isDisabled","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","IconButton","label","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","initial","medium","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","data-hide-toolbar-separator","EditorToolbarObserver","menuTriggerVariant"],"mappings":";;;;;;;;;;;AAoDA,MAAMA,6BAA6B,CAAC,EAClCC,aAAa,EACbC,mBAAmB,EACa,GAAA;IAChC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAAA,CAACC,mBAAAA,EAAAA;QAAOC,OAAAA,EAASL,mBAAAA;QAAqBM,OAAAA,EAAQ,UAAA;QAAWC,QAAAA,EAAS,OAAA;AAC/DR,QAAAA,QAAAA,EAAAA,aAAAA,GACGE,aAAAA,CAAc;YACZO,EAAAA,EAAI,6CAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA,CAAA,GACAR,aAAAA,CAAc;YACZO,EAAAA,EAAI,4CAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;;AAGV;AAEA;;AAEC,IACD,MAAMC,UAAAA,GAAa,CAAC,EAClBC,QAAQ,EACRC,SAAS,EACTb,aAAa,EACbc,gBAAgB,EAChBb,mBAAmB,EACH,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMY,QAAAA,GAAWC,uBAAAA,EAAAA;AACjB,IAAA,MAAMC,aAAaL,QAAAA,IAAYZ,aAAAA;IAE/B,MAAMkB,iBAAAA,GAAoB,CACxBC,KAAAA,EACAC,gBAAAA,GAAAA;QAEA,OAAQD,KAAAA;YACN,KAAK,MAAA;AAAQ,gBAAA;AACXE,oBAAAA,qBAAAA,CAAgBD,gBAAAA,EAAkBD,KAAAA,CAAAA;AAClC,oBAAA;AACF,gBAAA;YACA,KAAK,MAAA;YACL,KAAK,OAAA;AAAS,gBAAA;AACZG,oBAAAA,yBAAAA,CAAoBF,gBAAAA,EAAkBD,KAAAA,CAAAA;AACtC,oBAAA;AACF,gBAAA;YACA,KAAK,MAAA;YACL,KAAK,QAAA;YACL,KAAK,WAAA;YACL,KAAK,eAAA;AAAiB,gBAAA;AACpBE,oBAAAA,qBAAAA,CAAgBD,gBAAAA,EAAkBD,KAAAA,CAAAA;AAClC,oBAAA;AACF,gBAAA;YACA,KAAK,YAAA;YACL,KAAK,YAAA;AAAc,gBAAA;AACjBI,oBAAAA,iBAAAA,CAAYH,gBAAAA,EAAkBD,KAAAA,CAAAA;AAC9B,oBAAA;AACF,gBAAA;YACA,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;AAAM,gBAAA;AACTK,oBAAAA,kBAAAA,CAAaJ,gBAAAA,EAAkBD,KAAAA,CAAAA;AAC/B,oBAAA;AACF,gBAAA;AAIF;AACF,IAAA,CAAA;AAEA,IAAA,MAAMM,kBAAAA,GAA0C;AAC9C,QAAA;AACEC,YAAAA,OAAAA,gBACEC,eAAA,CAACC,4BAAAA,EAAAA;;kCACCxB,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,MAAA,EAAQL,SAAAA,CAAAA;AACzCiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,kCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,kCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC4B,UAAAA,EAAAA,EAAAA;;kCAEH5B,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,QAAA,EAAUL,SAAAA,CAAAA;AAC3CiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,oCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,oCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC6B,YAAAA,EAAAA,EAAAA;;kCAEH7B,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,WAAA,EAAaL,SAAAA,CAAAA;AAC9CiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,uCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,uCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC8B,eAAAA,EAAAA,EAAAA;;kCAEH9B,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,eAAA,EAAiBL,SAAAA,CAAAA;AAClDiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,2CAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,2CAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC+B,mBAAAA,EAAAA,EAAAA;;;;YAIPC,IAAAA,gBACET,eAAA,CAAAU,mBAAA,EAAA;;AACE,kCAAAjC,cAAA,CAACkC,kBAAKC,SAAS,EAAA,EAAA,CAAA;AACf,kCAAAnC,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC4B,UAAAA,EAAAA;4BAAKU,IAAAA,EAAK;;wBACtBC,QAAAA,EAAU,IAAMzB,kBAAkB,MAAA,EAAQL,SAAAA,CAAAA;wBAC1CD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,kCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;AAGJ,kCAAAN,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC6B,YAAAA,EAAAA;4BAAOS,IAAAA,EAAK;;wBACxBC,QAAAA,EAAU,IAAMzB,kBAAkB,QAAA,EAAUL,SAAAA,CAAAA;wBAC5CD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,oCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;AAGJ,kCAAAN,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC8B,eAAAA,EAAAA;4BAAUQ,IAAAA,EAAK;;wBAC3BC,QAAAA,EAAU,IAAMzB,kBAAkB,WAAA,EAAaL,SAAAA,CAAAA;wBAC/CD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,uCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;AAGJ,kCAAAN,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC+B,mBAAAA,EAAAA;4BAAcO,IAAAA,EAAK;;wBAC/BC,QAAAA,EAAU,IAAMzB,kBAAkB,eAAA,EAAiBL,SAAAA,CAAAA;wBACnDD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,2CAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;;YAKRqC,GAAAA,EAAK;AACP,SAAA;AACA,QAAA;AACErB,YAAAA,OAAAA,gBACEC,eAAA,CAACC,4BAAAA,EAAAA;;kCACCxB,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,YAAA,EAAcL,SAAAA,CAAAA;AAC/CiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,qCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,qCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC4C,gBAAAA,EAAAA,EAAAA;;kCAEH5C,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,YAAA,EAAcL,SAAAA,CAAAA;AAC/CiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,qCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,qCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC6C,gBAAAA,EAAAA,EAAAA;;;;YAIPb,IAAAA,gBACET,eAAA,CAAAU,mBAAA,EAAA;;AACE,kCAAAjC,cAAA,CAACkC,kBAAKC,SAAS,EAAA,EAAA,CAAA;AACf,kCAAAnC,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC4C,gBAAAA,EAAAA;4BAAWN,IAAAA,EAAK;;wBAC5BC,QAAAA,EAAU,IAAMzB,kBAAkB,YAAA,EAAcL,SAAAA,CAAAA;wBAChDD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,wCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;AAGJ,kCAAAN,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC6C,gBAAAA,EAAAA;4BAAWP,IAAAA,EAAK;;wBAC5BC,QAAAA,EAAU,IAAMzB,kBAAkB,YAAA,EAAcL,SAAAA,CAAAA;wBAChDD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,sCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;;YAKRqC,GAAAA,EAAK;AACP,SAAA;AACA,QAAA;AACErB,YAAAA,OAAAA,gBACEC,eAAA,CAACC,4BAAAA,EAAAA;;kCACCxB,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,MAAA,EAAQL,SAAAA,CAAAA;AACzCiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC8C,UAAAA,EAAAA,EAAAA;;kCAEH9C,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAA;AACPQ,4BAAAA,gBAAAA,EAAAA;AACF,wBAAA,CAAA;AACAgB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAAC+C,WAAAA,EAAAA,EAAAA;;kCAEH/C,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,MAAA,EAAQL,SAAAA,CAAAA;AACzCiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAACgD,UAAAA,EAAAA,EAAAA;;kCAEHhD,cAAA,CAACyB,uBAAAA,EAAAA;wBACCjB,QAAAA,EAAUK,UAAAA;wBACVX,OAAAA,EAAS,IAAMY,kBAAkB,OAAA,EAASL,SAAAA,CAAAA;AAC1CiB,wBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;4BACnBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAqB,wBAAAA,IAAAA,EAAM7B,aAAAA,CAAc;4BAClBO,EAAAA,EAAI,gCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAN,cAAA,CAACiD,YAAAA,EAAAA,EAAAA;;;;YAIPjB,IAAAA,gBACET,eAAA,CAAAU,mBAAA,EAAA;;AACE,kCAAAjC,cAAA,CAACkC,kBAAKC,SAAS,EAAA,EAAA,CAAA;AACf,kCAAAnC,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC8C,UAAAA,EAAAA;4BAAKR,IAAAA,EAAK;;wBACtBC,QAAAA,EAAU,IAAMzB,kBAAkB,MAAA,EAAQL,SAAAA,CAAAA;wBAC1CD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,gCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;AAGJ,kCAAAN,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAAC+C,WAAAA,EAAAA;4BAAMT,IAAAA,EAAK;;wBACvBC,QAAAA,EAAU,IAAA;AACR7B,4BAAAA,gBAAAA,EAAAA;AACF,wBAAA,CAAA;wBACAF,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,gCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;AAGJ,kCAAAN,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAACgD,UAAAA,EAAAA;4BAAKV,IAAAA,EAAK;;wBACtBC,QAAAA,EAAU,IAAMzB,kBAAkB,MAAA,EAAQL,SAAAA,CAAAA;wBAC1CD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,gCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;AAGJ,kCAAAN,cAAA,CAACkC,kBAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWrC,cAAA,CAACiD,YAAAA,EAAAA;4BAAOX,IAAAA,EAAK;;wBACxBC,QAAAA,EAAU,IAAMzB,kBAAkB,OAAA,EAASL,SAAAA,CAAAA;wBAC3CD,QAAAA,EAAUK,UAAAA;AAEV,wBAAA,QAAA,gBAAAb,cAAA,CAACwC,iBAAAA,EAAAA;4BAAKC,GAAAA,EAAI,MAAA;4BAAOC,GAAAA,EAAK,CAAA;sCACnB5C,aAAAA,CAAc;gCACbO,EAAAA,EAAI,gCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;;YAKRqC,GAAAA,EAAK;AACP;AACD,KAAA;AAED,IAAA,qBACEpB,eAAA,CAACiB,iBAAAA,EAAAA;QACCU,OAAAA,EAAS,CAAA;QACTC,UAAAA,EAAW,YAAA;QACXC,cAAAA,EAAe,eAAA;QACfC,YAAAA,EAAa,mBAAA;QACbC,KAAAA,EAAM,MAAA;QACNZ,GAAAA,EAAK;YAAEa,OAAAA,EAAS,CAAA;YAAGC,MAAAA,EAAQ;AAAE,SAAA;;AAE7B,0BAAAxD,cAAA,CAACyD,mBAAMC,IAAI,EAAA;AACT,gBAAA,QAAA,gBAAAnC,eAAA,CAACoC,yBAAAA,EAAAA;oBACCnD,QAAAA,EAAUK,UAAAA;AACV+C,oBAAAA,WAAAA,EAAa9D,aAAAA,CAAc;wBACzBO,EAAAA,EAAI,wCAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;AACAuD,oBAAAA,YAAAA,EAAY/D,aAAAA,CAAc;wBACxBO,EAAAA,EAAI,wCAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;;oBAEAwD,QAAAA,EAAU,CAAC/C,KAAAA,GAAUD,iBAAAA,CAAkBC,KAAAA,EAAON,SAAAA,CAAAA;oBAC9CsD,IAAAA,EAAK,GAAA;;sCAEL/D,cAAA,CAACgE,+BAAAA,EAAAA;4BAAmBjD,KAAAA,EAAM,IAAA;AAAKsB,4BAAAA,SAAAA,gBAAWrC,cAAA,CAACiE,gBAAAA,EAAAA;gCAAW3B,IAAAA,EAAK;;sCACxDxC,aAAAA,CAAc;gCACbO,EAAAA,EAAI,qCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFN,cAAA,CAACgE,+BAAAA,EAAAA;4BAAmBjD,KAAAA,EAAM,IAAA;AAAKsB,4BAAAA,SAAAA,gBAAWrC,cAAA,CAACkE,gBAAAA,EAAAA;gCAAW5B,IAAAA,EAAK;;sCACxDxC,aAAAA,CAAc;gCACbO,EAAAA,EAAI,qCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFN,cAAA,CAACgE,+BAAAA,EAAAA;4BAAmBjD,KAAAA,EAAM,IAAA;AAAKsB,4BAAAA,SAAAA,gBAAWrC,cAAA,CAACmE,kBAAAA,EAAAA;gCAAa7B,IAAAA,EAAK;;sCAC1DxC,aAAAA,CAAc;gCACbO,EAAAA,EAAI,qCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFN,cAAA,CAACgE,+BAAAA,EAAAA;4BAAmBjD,KAAAA,EAAM,IAAA;AAAKsB,4BAAAA,SAAAA,gBAAWrC,cAAA,CAACoE,iBAAAA,EAAAA;gCAAY9B,IAAAA,EAAK;;sCACzDxC,aAAAA,CAAc;gCACbO,EAAAA,EAAI,qCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFN,cAAA,CAACgE,+BAAAA,EAAAA;4BAAmBjD,KAAAA,EAAM,IAAA;AAAKsB,4BAAAA,SAAAA,gBAAWrC,cAAA,CAACqE,iBAAAA,EAAAA;gCAAY/B,IAAAA,EAAK;;sCACzDxC,aAAAA,CAAc;gCACbO,EAAAA,EAAI,qCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFN,cAAA,CAACgE,+BAAAA,EAAAA;4BAAmBjD,KAAAA,EAAM,IAAA;AAAKsB,4BAAAA,SAAAA,gBAAWrC,cAAA,CAACsE,gBAAAA,EAAAA;gCAAWhC,IAAAA,EAAK;;sCACxDxC,aAAAA,CAAc;gCACbO,EAAAA,EAAI,qCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;;0BAINiB,eAAA,CAACiB,iBAAAA,EAAAA;gBAAKc,KAAAA,EAAM,MAAA;gBAAOF,cAAAA,EAAe,eAAA;gBAAgBmB,QAAAA,EAAS,QAAA;;kCACzDvE,cAAA,CAACwC,iBAAAA,EAAAA;wBACCE,GAAAA,EAAK;4BAAEa,OAAAA,EAAS,CAAA;4BAAGC,MAAAA,EAAQ;AAAE,yBAAA;wBAC7Be,QAAAA,EAAS,QAAA;wBACTjB,KAAAA,EAAM,MAAA;wBACNkB,6BAAAA,EAA4B,MAAA;AAE5B,wBAAA,QAAA,gBAAAxE,cAAA,CAACyE,2CAAAA,EAAAA;4BACCC,kBAAAA,EAAmB,UAAA;4BACnBrD,kBAAAA,EAAoBA;;;oBAIvBxB,mBAAAA,IAAuB,CAACc,0BACvBX,cAAA,CAACL,0BAAAA,EAAAA;wBACCC,aAAAA,EAAeA,aAAAA;wBACfC,mBAAAA,EAAqBA;;;;;;AAMjC;;;;;"}
1
+ {"version":3,"file":"WysiwygNav.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\ninterface WysiwygPreviewToggleButtonProps {\n isPreviewMode?: boolean;\n onTogglePreviewMode: () => void;\n}\n\nconst WysiwygPreviewToggleButton = ({\n isPreviewMode,\n onTogglePreviewMode,\n}: WysiwygPreviewToggleButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n );\n};\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const isDisabled = disabled || isPreviewMode;\n const toolbarContainerRef = React.useRef<HTMLElement>(null);\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={{ initial: 3, medium: 4 }}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex\n ref={toolbarContainerRef}\n gap={{ initial: 3, medium: 2 }}\n overflow=\"hidden\"\n width=\"100%\"\n data-hide-toolbar-separator=\"true\"\n >\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n containerRef={toolbarContainerRef}\n />\n </Flex>\n\n {onTogglePreviewMode && !isMobile && (\n <WysiwygPreviewToggleButton\n isPreviewMode={isPreviewMode}\n onTogglePreviewMode={onTogglePreviewMode}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav, WysiwygPreviewToggleButton };\nexport type { WysiwygNavProps, WysiwygPreviewToggleButtonProps };\n"],"names":["WysiwygPreviewToggleButton","isPreviewMode","onTogglePreviewMode","formatMessage","useIntl","_jsx","Button","onClick","variant","minWidth","id","defaultMessage","WysiwygNav","disabled","editorRef","onToggleMediaLib","isMobile","useIsMobile","isDisabled","toolbarContainerRef","React","useRef","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","IconButton","label","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","initial","medium","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","ref","data-hide-toolbar-separator","EditorToolbarObserver","menuTriggerVariant","containerRef"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import 'react';
2
+ import * as React from 'react';
3
3
  import { useIsMobile } from '@strapi/admin/strapi-admin';
4
4
  import { Menu, Flex, IconButtonGroup, IconButton, Field, SingleSelect, SingleSelectOption, Button } from '@strapi/design-system';
5
5
  import { Bold, Italic, Underline, StrikeThrough, BulletList, NumberList, Code, Image, Link, Quotes, HeadingOne, HeadingTwo, HeadingThree, HeadingFour, HeadingFive, HeadingSix } from '@strapi/icons';
@@ -28,6 +28,7 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
28
28
  const { formatMessage } = useIntl();
29
29
  const isMobile = useIsMobile();
30
30
  const isDisabled = disabled || isPreviewMode;
31
+ const toolbarContainerRef = React.useRef(null);
31
32
  const handleActionClick = (value, currentEditorRef)=>{
32
33
  switch(value){
33
34
  case 'Link':
@@ -484,6 +485,7 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
484
485
  overflow: "hidden",
485
486
  children: [
486
487
  /*#__PURE__*/ jsx(Flex, {
488
+ ref: toolbarContainerRef,
487
489
  gap: {
488
490
  initial: 3,
489
491
  medium: 2
@@ -493,7 +495,8 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
493
495
  "data-hide-toolbar-separator": "true",
494
496
  children: /*#__PURE__*/ jsx(EditorToolbarObserver, {
495
497
  menuTriggerVariant: "tertiary",
496
- observedComponents: observedComponents
498
+ observedComponents: observedComponents,
499
+ containerRef: toolbarContainerRef
497
500
  })
498
501
  }),
499
502
  onTogglePreviewMode && !isMobile && /*#__PURE__*/ jsx(WysiwygPreviewToggleButton, {